add channel count and device listing functions

This commit is contained in:
Carl Philipp Klemm 2025-06-30 15:28:48 +02:00
parent db4981628f
commit f69011d589
5 changed files with 121 additions and 0 deletions

View file

@ -34,6 +34,22 @@
#include <time.h>
#include <stdio.h>
uint16_t* eismultiplexer_list_available_devices(size_t* count)
{
struct usbshm shm = {};
*count = 0;
unsigned char** serials;
int ret = usbshm_find(&shm, 0xfe17, 0x07dc, &serials, count);
usbshm_close(&shm);
if(ret < 0 || *count == 0)
return NULL;
uint16_t* numeric_serials = malloc(sizeof(*numeric_serials)*(*count));
for(size_t i = 0; i < *count; ++i) {
numeric_serials[i] = atoi((char*)serials[i]);
}
return numeric_serials;
}
int eismultiplexer_connect(struct eismultiplexer* muliplexer, uint16_t serial)
{
int ret;
@ -85,6 +101,14 @@ channel_t eismultiplexer_get_connected(struct eismultiplexer* muliplexer)
return buffer[0];
}
int eismultiplexer_get_channel_count(struct eismultiplexer* muliplexer, uint16_t *count)
{
uint8_t buffer[2] = {};
int ret = usbshm_read_control_transfer(muliplexer->priv, 7, 0, 0, buffer, 1);
*count = buffer[0];
return ret;
}
int eismultiplexer_set_led(struct eismultiplexer* muliplexer, bool on)
{
int ret;