Device-SaleaeLogic
view release on metacpan or search on metacpan
SaleaeLogic.xs view on Meta::CPAN
SvSetSV((SV *)obj->on_writedata, cb);
}
void
saleaeinterface_register_on_error(obj, cb)
saleaeinterface_t *obj
SV* cb
CODE:
/* save a copy of the callback */
if (obj && !obj->on_error) {
obj->on_error = newSVsv(cb);
} else if (obj) {
SvSetSV((SV *)obj->on_error, cb);
}
saleaeinterface_t *
saleaeinterface_new(parent)
SV *parent
CODE:
RETVAL = (saleaeinterface_t *)malloc(sizeof(saleaeinterface_t));
if (RETVAL) {
memset(RETVAL, 0, sizeof(saleaeinterface_t));
RETVAL->begun = 0;
RETVAL->perl = Perl_get_context();
RETVAL->interface_count = 0;
RETVAL->interface_map = saleaeinterface_map_create();
RETVAL->id_map = saleaeinterface_id_map_create();
/* make a reference to the parent calling object */
RETVAL->parent = (void *)SvREFCNT_inc(parent);
} else {
Perl_croak(aTHX_ "No memory to allocate saleaeinterface_t object\n");
}
OUTPUT:
RETVAL
void
saleaeinterface_DESTROY(obj)
saleaeinterface_t *obj
CODE:
IAMHERE_ENTRY;
if (obj) {
SV* parent = obj->parent;
SvREFCNT_dec(parent);
saleaeinterface_map_delete(obj->interface_map);
saleaeinterface_id_map_delete(obj->id_map);
free(obj);
obj = NULL;
}
IAMHERE_EXIT;
unsigned int
saleaeinterface_is_usb2(obj, id)
saleaeinterface_t *obj
unsigned int id
CODE:
RETVAL = saleaeinterface_isusb2(obj, id);
OUTPUT:
RETVAL
unsigned int
saleaeinterface_is_streaming(obj, id)
saleaeinterface_t *obj
unsigned int id
CODE:
RETVAL = saleaeinterface_isstreaming(obj, id);
OUTPUT:
RETVAL
unsigned int
saleaeinterface_get_channel_count(obj, id)
saleaeinterface_t *obj
unsigned int id
CODE:
RETVAL = saleaeinterface_getchannelcount(obj, id);
OUTPUT:
RETVAL
unsigned int
saleaeinterface_get_sample_rate(obj, id)
saleaeinterface_t *obj
unsigned int id
CODE:
RETVAL = saleaeinterface_getsamplerate(obj, id);
OUTPUT:
RETVAL
void saleaeinterface_set_sample_rate(obj, id, hz)
saleaeinterface_t *obj
unsigned int id
unsigned int hz
CODE:
if (hz > 0) {
saleaeinterface_setsamplerate(obj, id, hz);
}
SV *
saleaeinterface_get_supported_sample_rates(obj, id)
saleaeinterface_t *obj
unsigned int id
PREINIT:
AV *results;
unsigned int *buf = NULL;
unsigned int blen = 32;
int outlen = 0;
int i = 0;
CODE:
buf = malloc(blen * sizeof(unsigned int));
if (!buf) {
Perl_croak(aTHX_ "No memory to allocate 32 array of integers\n");
XSRETURN_UNDEF;
} else {
memset(buf, 0, blen * sizeof(unsigned int));
}
results = newAV();
outlen = saleaeinterface_getsupportedsamplerates(obj, id, buf, blen);
if (outlen > 0) {
for (i = 0; i < outlen && i < blen; ++i) {
if (saleaeinterface_internal_verbosity)
fprintf(stderr, "[%s:%d] sample[%d]: %u\n", __func__, __LINE__, i, buf[i]);
av_push(results, newSVuv(buf[i]));
}
}
RETVAL = newRV_noinc((SV *)results);
if (buf) {
free(buf);
( run in 1.199 second using v1.01-cache-2.11-cpan-39bf76dae61 )