// sattool - visual satellite tracking and prediction tool.
// Copyright 2000 Tom Rothamel <tom-idbg@onegeek.org>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  

#include "sattool.h"
#include <stdlib.h>
#include <unistd.h>

// Implements the marker command. Writes out a xearth-style marker file
// every specified number of seconds.
int marker(int argc, char **argv) {
	Options *o;
	List *l;
	int warned = 0;
	int optoff;
	int sleeptime = 30;
	Sat *s;
	double now;
	Thing *t;
	Position *p;
	LLA *lla;
	
	
	FILE *f;
	
	o = ParseGlobalOptions(argc, argv, &optoff);
	l = ReadInput(o);

	if (!o->outfile) {
		error("An output file must be supplied using the -o option.\n");
		return -1;
	}

	if (optoff < argc)
		sleeptime = atoi(argv[optoff]);

	while (1) {
		now = sgp_now();

		f = OutputFile(o);

		if (!f) {
			error("Couldn't open output file '%s'.\n", o->outfile);
			return -1;
		}

		l->reset();
		while (t = l->next()) {
			s = getSat(t);

			if (!s) {
				if (!warned)
					warning("At least one of the entries on the input list isn't a Sat.\n");
				warned = 1;
				continue;
			}

			p = s->calc1(now);

			lla = new LLA(p);

			fprintf(f, "%f %f \"%s\"\n", lla->lat, lla->lon,
				s->name);

			delete p;
			delete lla;
		}

		fclose(f);

		sleep(sleeptime);
	}
}
