int recmonitor_start() { mon = mapper_monitor_new(0, 0); if (mon) { db = mapper_monitor_get_db(mon); mapper_db_add_device_callback(db, device_callback, 0); mapper_db_add_signal_callback(db, signal_callback, 0); return 0; } return 1; }
int main(int argc, char **argv) { int i, j, result = 0; // process flags for -v verbose, -t terminate, -h help for (i = 1; i < argc; i++) { if (argv[i] && argv[i][0] == '-') { int len = strlen(argv[i]); for (j = 1; j < len; j++) { switch (argv[i][j]) { case 'h': printf("testmonitor.c: possible arguments " "-q quiet (suppress output), " "-t terminate automatically, " "-h help\n"); return 1; break; case 'q': verbose = 0; break; case 't': terminate = 1; break; default: break; } } } } signal(SIGINT, ctrlc); if (setup_monitor()) { printf("Error initializing monitor.\n"); result = 1; goto done; } mapper_db_add_device_callback(db, on_device, 0); mapper_db_add_signal_callback(db, on_signal, 0); mapper_db_add_connection_callback(db, on_connection, 0); mapper_db_add_link_callback(db, on_link, 0); loop(); done: mapper_db_remove_device_callback(db, on_device, 0); mapper_db_remove_signal_callback(db, on_signal, 0); mapper_db_remove_connection_callback(db, on_connection, 0); mapper_db_remove_link_callback(db, on_link, 0); cleanup_monitor(); return result; }
int mapper_monitor_batch_request_signals_by_name(mapper_monitor mon, const char* name, int batch_size) { // find the db record of device mapper_db_device dev = mapper_db_get_device_by_name(&mon->db, name); if (!dev) { return 1; } int signal_count = 0; lo_type type; const lo_arg *value; if (!mapper_db_device_property_lookup(dev, "n_inputs", &type, &value)) { if (type == LO_INT32) signal_count = value->i32; } if (!mapper_db_device_property_lookup(dev, "n_outputs", &type, &value)) if (type == LO_INT32) signal_count = signal_count > value->i32 ? signal_count : value->i32; if (!signal_count) return 1; if (signal_count <= batch_size) { mapper_monitor_request_signals_by_name(mon, name); return 1; } mapper_db_batch_request data = (mapper_db_batch_request) malloc(sizeof(struct _mapper_db_batch_request)); data->monitor = mon; data->device = dev; data->index = 0; data->total_count = signal_count; data->batch_size = batch_size; mapper_db_add_signal_callback(&mon->db, on_signal_continue_batch_request, data); mapper_monitor_request_signals_by_name_and_index(mon, name, 0, batch_size); return 0; }