devices working
This commit is contained in:
32
src/device.c
32
src/device.c
@@ -2,11 +2,37 @@
|
||||
|
||||
Device* createDevice(
|
||||
const char* name,
|
||||
void (*sendToDevice)(uint16_t number),
|
||||
uint16_t (*receiveFromDevice)(),
|
||||
void (*update)()
|
||||
void (*update)(Device* self)
|
||||
) {
|
||||
Device* new = malloc(sizeof(Device));
|
||||
if (!new)
|
||||
return NULL;
|
||||
|
||||
size_t nameLen = strlen(name) + 1;
|
||||
nameLen = nameLen < 32 ? nameLen : 32;
|
||||
|
||||
memcpy(new->name, name, nameLen);
|
||||
new->name[nameLen] = 0;
|
||||
|
||||
new->update = update;
|
||||
|
||||
return new;
|
||||
}
|
||||
|
||||
uint16_t deviceRead(Device* self) {
|
||||
if (self->inPos == 0)
|
||||
return 0;
|
||||
|
||||
return self->in[--self->inPos];
|
||||
}
|
||||
|
||||
void deviceSend(Device* self, uint16_t value) {
|
||||
if (self->outPos == DEVICE_BUFFER_LENGTH)
|
||||
return;
|
||||
|
||||
self->out[self->outPos++] = value;
|
||||
}
|
||||
|
||||
bool deviceCanRead(Device* self) {
|
||||
return self->inPos > 0;
|
||||
}
|
||||
Reference in New Issue
Block a user