Exemple #1
0
DAQ_LINKAGE int daq_get_module_list(DAQ_Module_Info_t *list[])
{
    DAQ_Module_Info_t *info;
    DAQ_ListNode_t *node;
    int idx;

    if (!list)
        return DAQ_ERROR_INVAL;

    info = calloc(num_modules, sizeof(DAQ_Module_Info_t));
    if (!info)
        return DAQ_ERROR_NOMEM;

    idx = 0;
    for (node = module_list; node; node = node->next)
    {
        info[idx].name = strdup(node->module->name);
        if (info[idx].name == NULL)
        {
            daq_free_module_list(info, idx);
            return DAQ_ERROR_NOMEM;
        }
        info[idx].version = node->module->module_version;
        info[idx].type = node->module->type;
        idx++;
    }

    *list = info;

    return num_modules;
}
Exemple #2
0
int DAQ_PrintTypes (FILE* f)
{
    DAQ_Module_Info_t* list = NULL;
    int i, nMods = daq_get_module_list(&list);

    if ( nMods )
        fprintf(f, "Available DAQ modules:\n");
    else
        fprintf(f, "No available DAQ modules "
            "(try adding directories with --daq-dir).\n");

    for ( i = 0; i < nMods; i++ )
    {
        fprintf(f, "%s(v%u):", list[i].name, list[i].version);

        if ( list[i].type & DAQ_TYPE_FILE_CAPABLE )
            fprintf(f, " %s", "readback");

        if ( list[i].type & DAQ_TYPE_INTF_CAPABLE )
            fprintf(f, " %s", "live");

        if ( list[i].type & DAQ_TYPE_INLINE_CAPABLE )
            fprintf(f, " %s", "inline");

        if ( list[i].type & DAQ_TYPE_MULTI_INSTANCE )
            fprintf(f, " %s", "multi");

        if ( !(list[i].type & DAQ_TYPE_NO_UNPRIV) )
            fprintf(f, " %s", "unpriv");

        fprintf(f, "\n");
    }
    daq_free_module_list(list, nMods);
    return 0;
}