int main(int argc, char *argv[]) { FILE *infp, *outfp; int type, n, i; char *p; struct node_mcc *mcc; struct node_mnc *mnc; struct node_lac *lac; struct node_cell *cell; struct node_meas *meas; log_init(&log_info, NULL); stderr_target = log_target_create_stderr(); log_add_target(stderr_target); log_set_all_filter(stderr_target, 1); log_parse_category_mask(stderr_target, "Dxxx"); log_set_log_level(stderr_target, LOGL_INFO); if (argc <= 2) { usage: fprintf(stderr, "Usage: %s <file.log> <file.kml> " "[lines] [debug]\n", argv[0]); fprintf(stderr, "lines: Add lines between cell and " "Measurement point\n"); fprintf(stderr, "debug: Add debugging of location algorithm.\n" ); return 0; } for (i = 3; i < argc; i++) { if (!strcmp(argv[i], "lines")) log_lines = 1; else if (!strcmp(argv[i], "debug")) log_debug = 1; else goto usage; } infp = fopen(argv[1], "r"); if (!infp) { fprintf(stderr, "Failed to open '%s' for reading\n", argv[1]); return -EIO; } while ((type = read_log(infp))) { switch (type) { case LOG_TYPE_SYSINFO: add_sysinfo(); break; case LOG_TYPE_POWER: add_power(); break; } } fclose(infp); if (!strcmp(argv[2], "-")) outfp = stdout; else outfp = fopen(argv[2], "w"); if (!outfp) { fprintf(stderr, "Failed to open '%s' for writing\n", argv[2]); return -EIO; } /* document name */ p = argv[2]; while (strchr(p, '/')) p = strchr(p, '/') + 1; kml_header(outfp, p); mcc = node_mcc_first; while (mcc) { printf("MCC: %02x\n", mcc->mcc); /* folder open */ fprintf(outfp, "\t<Folder>\n"); fprintf(outfp, "\t\t<name>MCC %s (%s)</name>\n", gsm_print_mcc(mcc->mcc), gsm_get_mcc(mcc->mcc)); fprintf(outfp, "\t\t<open>0</open>\n"); mnc = mcc->mnc; while (mnc) { printf(" MNC: %02x\n", mnc->mnc); /* folder open */ fprintf(outfp, "\t\t<Folder>\n"); fprintf(outfp, "\t\t\t<name>MNC %s (%s)</name>\n", gsm_print_mnc(mnc->mnc), gsm_get_mnc(mcc->mcc, mnc->mnc)); fprintf(outfp, "\t\t\t<open>0</open>\n"); lac = mnc->lac; while (lac) { printf(" LAC: %04x\n", lac->lac); /* folder open */ fprintf(outfp, "\t\t\t<Folder>\n"); fprintf(outfp, "\t\t\t\t<name>LAC %04x</name>\n", lac->lac); fprintf(outfp, "\t\t\t\t<open>0</open>\n"); cell = lac->cell; while (cell) { printf(" CELL: %04x\n", cell->cellid); fprintf(outfp, "\t\t\t\t<Folder>\n"); fprintf(outfp, "\t\t\t\t\t<name>CELL-ID %04x</name>\n", cell->cellid); fprintf(outfp, "\t\t\t\t\t<open>0</open>\n"); meas = cell->meas; n = 0; while (meas) { if (meas->ta_valid) printf(" TA: %d\n", meas->ta); if (meas->gps_valid) kml_meas(outfp, meas, ++n, mcc->mcc, mnc->mnc, lac->lac, cell->cellid); meas = meas->next; } kml_cell(outfp, cell); /* folder close */ fprintf(outfp, "\t\t\t\t</Folder>\n"); cell = cell->next; } /* folder close */ fprintf(outfp, "\t\t\t</Folder>\n"); lac = lac->next; } /* folder close */ fprintf(outfp, "\t\t</Folder>\n"); mnc = mnc->next; } /* folder close */ fprintf(outfp, "\t</Folder>\n"); mcc = mcc->next; } #if 0 FIXME: power /* folder open */ fprintf(outfp, "\t<Folder>\n"); fprintf(outfp, "\t\t<name>Power</name>\n"); fprintf(outfp, "\t\t<open>0</open>\n"); power = node_power_first; n = 0; while (power) { /* folder open */ fprintf(outfp, "\t\t<Folder>\n"); fprintf(outfp, "\t\t\t<name>Power %d</name>\n", ++n); fprintf(outfp, "\t\t\t<open>0</open>\n"); /* folder close */ fprintf(outfp, "\t\t</Folder>\n"); power = power->next; } /* folder close */ fprintf(outfp, "\t</Folder>\n"); #endif kml_footer(outfp); fclose(outfp); return 0; }
Character& Character::operator += (const Power &power) { add_power(&power); return *this; }