Ejemplo n.º 1
0
void dev_db_callback(mapper_db_device record,
                     mapper_db_action_t action,
                     void *user)
{
    // if we see /influence.1 or /XAgora.1, send /link message
    struct _agentInfo *info = (struct _agentInfo*)user;

    if (action == MDB_NEW) {
        if (strcmp(record->name, info->influence_device_name)==0) {
            mapper_monitor_link(info->mon, mdev_name(info->dev),
                                record->name);
            mapper_monitor_link(info->mon, record->name,
                                mdev_name(info->dev));
        }
        else if (strcmp(record->name, info->xagora_device_name)==0)
            mapper_monitor_link(info->mon, mdev_name(info->dev),
                                record->name);
    }
    else if (action == MDB_REMOVE) {
        if (strcmp(record->name, info->influence_device_name)==0) {
            mapper_monitor_unlink(info->mon, mdev_name(info->dev),
                                  record->name);
            info->linked_influence = 0;
        }
    }
}
Ejemplo n.º 2
0
int setup_connection()
{
    mval src_min, src_max, dest_min, dest_max;
    src_min.f = 0.;
    src_max.f = 1.;
    dest_min.f = -10.;
    dest_max.f = 10.;

    mapper_monitor mon = mapper_monitor_new(source->admin, 0);

    char src_name[1024], dest_name[1024];
    mapper_monitor_link(mon, mdev_name(source),
                        mdev_name(destination), 0, 0);

    msig_full_name(sendsig, src_name, 1024);
    msig_full_name(recvsig, dest_name, 1024);

    mapper_connection_range_t range;
    range.src_min = &src_min;
    range.src_max = &src_max;
    range.dest_min = &dest_min;
    range.dest_max = &dest_max;
    range.known = CONNECTION_RANGE_KNOWN;

    mapper_db_connection_t props;
    props.range = range;
    props.src_length = 1;
    props.dest_length = 1;
    props.src_type = 'f';
    props.dest_type = 'f';
    props.mode = MO_LINEAR;

    mapper_monitor_connect(mon, src_name, dest_name, &props,
                           CONNECTION_RANGE_KNOWN | CONNECTION_MODE);

    // poll devices for a bit to allow time for connection
    int i = 0;
    while (i++ < 10) {
        mdev_poll(destination, 10);
        mdev_poll(source, 10);
    }

    mapper_monitor_free(mon);

    return 0;
}
Ejemplo n.º 3
0
int setup_connection()
{
    int count = 0;

    mapper_monitor mon = mapper_monitor_new(source->admin, 0);
    if (!mon)
        goto error;

    char src_name[1024], dest_name[1024];
    mapper_monitor_link(mon, mdev_name(source),
                        mdev_name(destination), 0, 0);

    while (!done && !source->routers) {
        if (count++ > 50)
            goto error;
        mdev_poll(source, 10);
        mdev_poll(destination, 10);
    }

    msig_full_name(sendsig, src_name, 1024);
    msig_full_name(recvsig, dest_name, 1024);
    mapper_monitor_connect(mon, src_name, dest_name, 0, 0);

    // wait until connection has been established
    while (!done && !source->routers->num_connections) {
        if (count++ > 50)
            goto error;
        mdev_poll(source, 10);
        mdev_poll(destination, 10);
    }
    eprintf("Connection established.\n");

    mapper_monitor_free(mon);

    return 0;

  error:
    return 1;
}
Ejemplo n.º 4
0
void record_signals_on_stack()
{
    if (!mdev_ready(recdev))
        return;

    const char *devname = mdev_name(recdev);
    char destname[256] = "";
    if (!devname) return;

    signal_list_t *n = pop_signal_stack();
    if (!n)
        return;

    while (n) {
        printf("Recording %s%s\n", n->device_name, n->signal_name);

        if (strncmp(n->device_name, destname, 256)) {
            mapper_monitor_link(mon, n->device_name, devname, 0, 0);
            snprintf(destname, 256, "%s", n->device_name);
        }

        recdevice_add_input(n->device_name, n->signal_name,
                            n->type, n->length);

        char signame[1024], recsigname[1024];
        snprintf(signame, 1024, "%s%s", n->device_name, n->signal_name);
        snprintf(recsigname, 1024, "%s%s%s", devname, n->device_name,
                 n->signal_name);

        mapper_monitor_connect(mon, signame, recsigname, 0, 0);

        free_signal(n);
        n = pop_signal_stack();
    }

    recdevice_reset_generic_handler();
}