refactor: merge protocol cores as SETProtocol
This commit is contained in:
22
c/set-protocol/src/pcan_id.c
Normal file
22
c/set-protocol/src/pcan_id.c
Normal file
@@ -0,0 +1,22 @@
|
||||
#include "pcan_id.h"
|
||||
|
||||
uint32_t pcan_id_pack(const pcan_id_t *id)
|
||||
{
|
||||
return ((uint32_t)(id->priority & 0x1U) << 28)
|
||||
| ((uint32_t)(id->route & 0x1U) << 27)
|
||||
| ((uint32_t)(id->device_type & 0x7U) << 24)
|
||||
| ((uint32_t)(id->device_id & 0xFU) << 20)
|
||||
| ((uint32_t)(id->msg_type & 0xFU) << 16)
|
||||
| ((uint32_t)id->msg_body);
|
||||
}
|
||||
|
||||
void pcan_id_unpack(uint32_t raw, pcan_id_t *id)
|
||||
{
|
||||
raw &= PCAN_ID_MASK;
|
||||
id->msg_body = (uint16_t)(raw & 0xFFFFU);
|
||||
id->msg_type = (uint8_t)((raw >> 16) & 0xFU);
|
||||
id->device_id = (uint8_t)((raw >> 20) & 0xFU);
|
||||
id->device_type = (uint8_t)((raw >> 24) & 0x7U);
|
||||
id->route = (uint8_t)((raw >> 27) & 0x1U);
|
||||
id->priority = (uint8_t)((raw >> 28) & 0x1U);
|
||||
}
|
||||
Reference in New Issue
Block a user