Device-SaleaeLogic

 view release on metacpan or  search on metacpan

saleaeinterface.cpp  view on Meta::CPAN

            l16->RegisterOnReadData(cb_onreaddata, udata);
            l16->RegisterOnWriteData(cb_onwritedata, udata);
            l16->RegisterOnError(cb_onerror, udata);
        } else if (type == SALEAEINTERFACE_LOGIC) {
            LogicInterface *l8 = dynamic_cast<LogicInterface *>(iface);
            l8->RegisterOnReadData(cb_onreaddata, udata);
            l8->RegisterOnWriteData(cb_onwritedata, udata);
            l8->RegisterOnError(cb_onerror, udata);
        } else {
            if (saleaeinterface_internal_verbosity)
                fprintf(stderr, "[%s:%d] This is an unsupported device\n",
                    __func__, __LINE__);
            IAMHERE_EXIT;
            return;
        }
        unsigned int val = saleaeinterface_id_map_get(obj->id_map, id);
        if (saleaeinterface_internal_verbosity)
            fprintf(stderr, "[%s:%d] Device id from SDK: %X from XS: %u\n",
                __func__, __LINE__, id, val);
        saleaeinterface_internal_on_connect(obj, val);
    }
    IAMHERE_EXIT;
}
static void cb_ondisconnect(U64 id, void *udata)
{
    saleaeinterface_t *obj = (saleaeinterface_t *)udata;
    IAMHERE_ENTRY;
    saleaeinterface_map_erase(obj->interface_map, id);
    saleaeinterface_id_map_erase(obj->interface_map, id);
    obj->interface_count = saleaeinterface_map_size(obj->interface_map);
    unsigned int val = saleaeinterface_id_map_get(obj->id_map, id);
    saleaeinterface_internal_on_disconnect(obj, val);
    IAMHERE_EXIT;
}

void saleaeinterface_begin_connect(saleaeinterface_t *obj)
{
    IAMHERE_ENTRY;
    if (obj && !obj->begun) {
        obj->begun = 1;
        DevicesManagerInterface::RegisterOnConnect(cb_onconnect, (void *)obj);
        DevicesManagerInterface::RegisterOnDisconnect(cb_ondisconnect, (void *)obj);
        DevicesManagerInterface::BeginConnect();
    }
    IAMHERE_EXIT;
}

unsigned int saleaeinterface_isusb2(saleaeinterface_t *obj, unsigned int id)
{
    if (obj) {
        U64 did = saleaeinterface_id_map_get_id(obj->id_map, id);
        GenericInterface *gi = saleaeinterface_map_get(obj->interface_map, did);
        if (gi) {
            LogicAnalyzerInterface *lai = dynamic_cast<LogicAnalyzerInterface *>(gi);
            return lai->IsUsb2pt0() ? 1 : 0;
        }
    }
    return 0;
}

unsigned int saleaeinterface_isstreaming(saleaeinterface_t *obj, unsigned int id)
{
    if (obj) {
        U64 did = saleaeinterface_id_map_get_id(obj->id_map, id);
        GenericInterface *gi = saleaeinterface_map_get(obj->interface_map, did);
        if (gi) {
            LogicAnalyzerInterface *lai = dynamic_cast<LogicAnalyzerInterface *>(gi);
            return lai->IsStreaming() ? 1 : 0;
        }
    }
    return 0;
}

unsigned int saleaeinterface_getchannelcount(saleaeinterface_t *obj, unsigned int id)
{
    if (obj) {
        U64 did = saleaeinterface_id_map_get_id(obj->id_map, id);
        GenericInterface *gi = saleaeinterface_map_get(obj->interface_map, did);
        if (gi) {
            LogicAnalyzerInterface *lai = dynamic_cast<LogicAnalyzerInterface *>(gi);
            return lai->GetChannelCount();
        }
    }
    return 0;
}

unsigned int saleaeinterface_getsamplerate(saleaeinterface_t *obj, unsigned int id)
{
    if (obj) {
        U64 did = saleaeinterface_id_map_get_id(obj->id_map, id);
        GenericInterface *gi = saleaeinterface_map_get(obj->interface_map, did);
        if (gi) {
            LogicAnalyzerInterface *lai = dynamic_cast<LogicAnalyzerInterface *>(gi);
            return lai->GetSampleRateHz();
        }
    }
    return 0;
}

void saleaeinterface_setsamplerate(saleaeinterface_t *obj, unsigned int id, unsigned int rate)
{
    if (obj) {
        U64 did = saleaeinterface_id_map_get_id(obj->id_map, id);
        GenericInterface *gi = saleaeinterface_map_get(obj->interface_map, did);
        if (gi) {
            LogicAnalyzerInterface *lai = dynamic_cast<LogicAnalyzerInterface *>(gi);
            lai->SetSampleRateHz(rate);
        }
    }
}

int saleaeinterface_getsupportedsamplerates(saleaeinterface_t *obj, unsigned int id,
                            unsigned int *ptr, unsigned int len)
{
    if (obj && ptr) {
        U64 did = saleaeinterface_id_map_get_id(obj->id_map, id);
        GenericInterface *gi = saleaeinterface_map_get(obj->interface_map, did);
        if (gi) {
            LogicAnalyzerInterface *lai = dynamic_cast<LogicAnalyzerInterface *>(gi);
            S32 rc = lai->GetSupportedSampleRates(ptr, (U32)len);
            return (int)rc;



( run in 1.359 second using v1.01-cache-2.11-cpan-39bf76dae61 )