int main(int argc, char *argv[]) { unsigned long filter_mask = 0; sigset_t mask; mainloop_init(); for (;;) { int opt; opt = getopt_long(argc, argv, "b:vh", main_options, NULL); if (opt < 0) break; switch (opt) { case 'b': btsnoop_open(optarg); break; case 'v': printf("%s\n", VERSION); return EXIT_SUCCESS; case 'h': usage(); return EXIT_SUCCESS; default: return EXIT_FAILURE; } } sigemptyset(&mask); sigaddset(&mask, SIGINT); sigaddset(&mask, SIGTERM); mainloop_set_signal(&mask, signal_callback, NULL, NULL); filter_mask |= PACKET_FILTER_SHOW_INDEX; filter_mask |= PACKET_FILTER_SHOW_TIME; filter_mask |= PACKET_FILTER_SHOW_ACL_DATA; packet_set_filter(filter_mask); printf("Bluetooth monitor ver %s\n", VERSION); if (control_tracing() < 0) { if (hcidump_tracing() < 0) return EXIT_FAILURE; } return mainloop_run(); }
int main(int argc, char **argv) { GMainLoop *loop; loop = g_main_loop_new(NULL, FALSE); if(!loop) { fprintf(stderr, "Failed to create mainloop\n"); return -1; } if (control_tracing() < 0) return -1; data_dumped_init(NULL, MAX_EVENTS_STORAGE); UI_init(argc, argv, loop); printf("bluez-traffic %s\n", VERSION); g_main_loop_run(loop); return 0; }
int main(int argc, char *argv[]) { unsigned long filter_mask = 0; const char *reader_path = NULL; const char *writer_path = NULL; const char *analyze_path = NULL; const char *ellisys_server = NULL; unsigned short ellisys_port = 0; const char *str; int exit_status; sigset_t mask; mainloop_init(); filter_mask |= PACKET_FILTER_SHOW_TIME_OFFSET; for (;;) { int opt; opt = getopt_long(argc, argv, "d:r:w:a:s:p:i:tTSE:vh", main_options, NULL); if (opt < 0) break; switch (opt) { case 'd': control_tty(optarg); break; case 'r': reader_path = optarg; break; case 'w': writer_path = optarg; break; case 'a': analyze_path = optarg; break; case 's': control_server(optarg); break; case 'p': packet_set_priority(optarg); break; case 'i': if (strlen(optarg) > 3 && !strncmp(optarg, "hci", 3)) str = optarg + 3; else str = optarg; if (!isdigit(*str)) { usage(); return EXIT_FAILURE; } packet_select_index(atoi(str)); break; case 't': filter_mask &= ~PACKET_FILTER_SHOW_TIME_OFFSET; filter_mask |= PACKET_FILTER_SHOW_TIME; break; case 'T': filter_mask &= ~PACKET_FILTER_SHOW_TIME_OFFSET; filter_mask |= PACKET_FILTER_SHOW_TIME; filter_mask |= PACKET_FILTER_SHOW_DATE; break; case 'S': filter_mask |= PACKET_FILTER_SHOW_SCO_DATA; break; case 'E': ellisys_server = optarg; ellisys_port = 24352; break; case '#': packet_todo(); lmp_todo(); return EXIT_SUCCESS; case 'v': printf("%s\n", VERSION); return EXIT_SUCCESS; case 'h': usage(); return EXIT_SUCCESS; default: return EXIT_FAILURE; } } if (argc - optind > 0) { fprintf(stderr, "Invalid command line parameters\n"); return EXIT_FAILURE; } if (reader_path && analyze_path) { fprintf(stderr, "Display and analyze can't be combined\n"); return EXIT_FAILURE; } sigemptyset(&mask); sigaddset(&mask, SIGINT); sigaddset(&mask, SIGTERM); mainloop_set_signal(&mask, signal_callback, NULL, NULL); printf("Bluetooth monitor ver %s\n", VERSION); keys_setup(); packet_set_filter(filter_mask); if (analyze_path) { analyze_trace(analyze_path); return EXIT_SUCCESS; } if (reader_path) { if (ellisys_server) ellisys_enable(ellisys_server, ellisys_port); control_reader(reader_path); return EXIT_SUCCESS; } if (writer_path && !control_writer(writer_path)) { printf("Failed to open '%s'\n", writer_path); return EXIT_FAILURE; } if (ellisys_server) ellisys_enable(ellisys_server, ellisys_port); if (control_tracing() < 0) return EXIT_FAILURE; exit_status = mainloop_run(); keys_cleanup(); return exit_status; }