slim down usb_shm to only the things used in libeismulitplexer

This commit is contained in:
Carl Philipp Klemm 2024-05-07 11:28:15 +02:00
parent ef73c41207
commit c55b600d9e
4 changed files with 97 additions and 201 deletions

View file

@ -34,14 +34,6 @@
#include <time.h>
#include <stdio.h>
static void usleep(uint64_t microseconds)
{
struct timespec ts;
ts.tv_sec = microseconds / 1000000;
ts.tv_nsec = (microseconds % 1000000) * 1000;
nanosleep(&ts, NULL);
}
int eismultiplexer_connect(struct eismultiplexer* muliplexer, uint16_t serial)
{
int ret;
@ -49,7 +41,7 @@ int eismultiplexer_connect(struct eismultiplexer* muliplexer, uint16_t serial)
if(!muliplexer->priv)
return -1;
ret = usbshm_init(muliplexer->priv, NULL, muliplexer);
ret = usbshm_init(muliplexer->priv);
if(ret)
return -2;
@ -69,10 +61,7 @@ int eismultiplexer_connect_channel_exclusive(struct eismultiplexer* muliplexer,
uint8_t* wValChar = (uint8_t*)&wValue;
wValChar[0] = channel;
wValChar[1] = 0;
int ret;
while((ret = usbshm_writeControlTransfer(muliplexer->priv, 2, NULL, 0, wValue, 0)) == USBSHM_ERROR_AGAIN)
usleep(1000000);
return ret;
return usbshm_write_control_transfer(muliplexer->priv, 2, NULL, 0, wValue, 0);
}
int eismultiplexer_connect_channel(struct eismultiplexer* muliplexer, channel_t channel)
@ -96,30 +85,28 @@ int eismultiplexer_disconnect_channel(struct eismultiplexer* muliplexer, channel
channel_t eismultiplexer_get_connected(struct eismultiplexer* muliplexer)
{
uint8_t buffer[2] = {};
usbshm_readControlTransferSync(muliplexer->priv, 3, 0, 0, buffer, 1);
usbshm_read_control_transfer(muliplexer->priv, 3, 0, 0, buffer, 1);
return buffer[0];
}
int eismultiplexer_set_led(struct eismultiplexer* muliplexer, bool on)
{
int ret;
while((ret = usbshm_writeControlTransfer(muliplexer->priv, on, NULL, 0, 0, 0)) == USBSHM_ERROR_AGAIN)
usleep(1000000);
ret = usbshm_write_control_transfer(muliplexer->priv, on, NULL, 0, 0, 0);
return ret;
}
int eismultiplexer_write_eeprom(struct eismultiplexer* muliplexer, uint16_t addr, uint16_t value)
{
int ret;
while((ret = usbshm_writeControlTransfer(muliplexer->priv, 5, NULL, 0, value, addr)) == USBSHM_ERROR_AGAIN)
usleep(1000000);
ret = usbshm_write_control_transfer(muliplexer->priv, 5, NULL, 0, value, addr);
return ret;
}
uint16_t eismultiplexer_read_eeprom(struct eismultiplexer* muliplexer, uint16_t addr)
{
uint8_t buffer[2] = {};
usbshm_readControlTransferSync(muliplexer->priv, 4, 0, addr, buffer, 2);
usbshm_read_control_transfer(muliplexer->priv, 4, 0, addr, buffer, 2);
return *((uint16_t*)buffer);
}