Files
@ 01ed20819369
Branch filter:
Location: HydroBot/hydrobot-sharedlibs/src/can_buffer.c - annotation
01ed20819369
966 B
text/plain
Added send bytes function to protocol
a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 d429d5902330 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 a72d393244e6 | #include "can_buffer.h"
void can_buffer_init(volatile CanBuffer *buffer)
{
memset((void*)buffer, 0, sizeof(CanBuffer));
}
CanBufferStatus can_buffer_add(volatile CanBuffer *buffer, CanRxMsgTypeDef *msg)
{
if ((uint16_t) buffer->count < ((uint16_t) CAN_BUFFER_SIZE)) {
buffer->data[buffer->head] = *msg;
buffer->head = (buffer->head + 1) % CAN_BUFFER_SIZE;
buffer->count++;
return CAN_BUFFER_OK;
}
else {
return CAN_BUFFER_FULL;
}
}
volatile CanRxMsgTypeDef* can_buffer_remove(volatile CanBuffer *buffer)
{
volatile CanRxMsgTypeDef* msg = NULL;
if (buffer->count > 0) {
msg = &buffer->data[buffer->tail];
buffer->tail = (buffer->tail + 1) % CAN_BUFFER_SIZE;
buffer->count--;
}
return msg;
}
bool can_buffer_is_empty(volatile CanBuffer *buffer)
{
return (buffer->count < 1);
}
uint8_t can_buffer_size(volatile CanBuffer *buffer)
{
return buffer->count;
}
|