Beispiel #1
0
int main(int argc, char **argv)
{
	int sock;
	int ret;
	char buf[256];
	struct state state;
        char *program_name;

        if ( (program_name=strrchr(argv[0], '/'))!=NULL) {  /* Get root program name */
                program_name++;
        } else {
                program_name = argv[0];
        }

	memset(&state, 0, sizeof(state));
        fap_init();

        if (parse_opts(argc, argv, &state)) {
                printf("Invalid option(s)\n");
                exit(1);
        }

        if (parse_ini(state.conf.config ? state.conf.config : "aprs.ini", &state)) {
                printf("Invalid config\n");
                exit(1);
        }

	sock = aprsis_connect(state.conf.aprsis_server_host_addr,
			      state.conf.aprsis_server_port,
                              state.basecall,
                              state.conf.aprsis_filter);

	if (sock < 0) {
		printf("Sock %i: %m\n", sock);
                printf("Failed to connect with host: %s, port: %d, call: %s, filter: %s\n",
                       state.conf.aprsis_server_host_addr,
                       state.conf.aprsis_server_port,
                       state.basecall,
                       state.conf.aprsis_filter);
		return 1;
	}

	while ((ret = read(sock, buf, sizeof(buf)))) {
		int i;
		for (i = 0; i < ret; i++) {
			if (buf[i] != '*')
				write(1, &buf[i], 1);
		}
		write(1, "\r", 1);

		//buf[ret] = 0;
		//printf("Got: %s\n", buf);
	}
	return 0;
}
Beispiel #2
0
static void start_aprsis_thread(void *ptr) {
    GError *error = NULL;
	aprsis_ctx *ctx = ptr;
	
	g_message("connecting to %s", ctx->host);
	if (aprsis_connect(ctx)) {
		g_error("failed to connect");
	}

	g_message("logging in...");
	aprsis_login(ctx);

	aprsis_set_filter(ctx, DEF_HOME_LAT, DEF_HOME_LON, DEF_RAD);
	//aprsis_set_filter_string(ctx, "p/M/G/2"); // callsigns beginning with G, M or 2 - UK callsigns, normally
	//aprsis_set_filter_string(ctx, "p/HB9"); // Swiss callsigns

	aprsis_io = g_io_channel_unix_new (ctx->sockfd);
    g_io_channel_set_encoding(aprsis_io, NULL, &error);
    if (!g_io_add_watch (aprsis_io, G_IO_IN | G_IO_ERR | G_IO_HUP, aprsis_got_packet, ctx))
        g_error ("Cannot add watch on GIOChannel!");
}