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; }
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!"); }