60 lines
1.6 KiB
C
60 lines
1.6 KiB
C
|
|
|
|
#include "HStructConvByte.h"
|
|
#include "HDLog.h"
|
|
#include <stdint.h>
|
|
|
|
|
|
HSTRUCT_CONV_DEFINE(uint8_t)
|
|
{
|
|
HSTRUCT_CONV_BEGIN(uint8_t);
|
|
HSTRUCT_UPDATE(sizeof(uint8_t));
|
|
HSTRUCT_GET_DATA(uint8_t) = HSTRUCT_GET_TYPE();
|
|
HSTRUCT_END();
|
|
}
|
|
|
|
HSTRUCT_CONV_DEFINE(uint16_t)
|
|
{
|
|
HSTRUCT_CONV_BEGIN(uint16_t);
|
|
HSTRUCT_UPDATE(sizeof(uint16_t));
|
|
HSTRUCT_GET_DATA_RAW(uint8_t *)[0] = (HSTRUCT_GET_TYPE() >> 8) & 0xFF;
|
|
HSTRUCT_GET_DATA_RAW(uint8_t *)[1] = HSTRUCT_GET_TYPE() & 0xFF;
|
|
HSTRUCT_END();
|
|
}
|
|
|
|
HSTRUCT_CONV_DEFINE(uint32_t)
|
|
{
|
|
HSTRUCT_CONV_BEGIN(uint32_t);
|
|
HSTRUCT_UPDATE(sizeof(uint32_t));
|
|
HSTRUCT_GET_DATA_RAW(uint8_t *)[0] = (HSTRUCT_GET_TYPE() >> 24) & 0xFF;
|
|
HSTRUCT_GET_DATA_RAW(uint8_t *)[1] = (HSTRUCT_GET_TYPE() >> 16) & 0xFF;
|
|
HSTRUCT_GET_DATA_RAW(uint8_t *)[2] = (HSTRUCT_GET_TYPE() >> 8) & 0xFF;
|
|
HSTRUCT_GET_DATA_RAW(uint8_t *)[3] = HSTRUCT_GET_TYPE() & 0xFF;
|
|
HSTRUCT_END();
|
|
}
|
|
|
|
HSTRUCT_FROM_DEFINE(uint8_t)
|
|
{
|
|
HSTRUCT_FROM_BEGIN(uint8_t);
|
|
HSTRUCT_UPDATE(sizeof(uint8_t));
|
|
HSTRUCT_GET_TYPE() = HSTRUCT_GET_DATA(uint8_t);
|
|
HSTRUCT_END();
|
|
}
|
|
|
|
HSTRUCT_FROM_DEFINE(uint16_t)
|
|
{
|
|
HSTRUCT_FROM_BEGIN(uint16_t);
|
|
HSTRUCT_UPDATE(sizeof(uint16_t));
|
|
HSTRUCT_GET_TYPE() = (HSTRUCT_GET_DATA_RAW(uint8_t *)[0] << 8) | HSTRUCT_GET_DATA_RAW(uint8_t *)[1];
|
|
HSTRUCT_END();
|
|
}
|
|
|
|
HSTRUCT_FROM_DEFINE(uint32_t)
|
|
{
|
|
HSTRUCT_FROM_BEGIN(uint32_t);
|
|
HSTRUCT_UPDATE(sizeof(uint32_t));
|
|
HSTRUCT_GET_TYPE() = (HSTRUCT_GET_DATA_RAW(uint8_t *)[0] << 24) | (HSTRUCT_GET_DATA_RAW(uint8_t *)[1] << 16) |
|
|
(HSTRUCT_GET_DATA_RAW(uint8_t *)[2] << 8) | HSTRUCT_GET_DATA_RAW(uint8_t *)[3];
|
|
HSTRUCT_END();
|
|
}
|