Exemple #1
0
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;
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}