123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #include <gfambrtucom.h>
- #include "driverlib/sw_crc.h"
- /////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////
- void GfaBufCpyUnaligned_uint16_LE(void *pTo, const void *pFrom, size_t nCntWords)
- {
- size_t i, j;
- uint8_t *p1 = (uint8_t*)pTo;
- const uint8_t *p2 = (const uint8_t*)pFrom;
- for(i = 0; i < nCntWords; i++)
- {
- p2 += sizeof(uint16_t);
- for(j = 0; j < sizeof(uint16_t); j++)
- {
- *p1++ = *--p2;
- }
- p2 += sizeof(uint16_t);
- }
- }
- void GfaBufCpyUnaligned_uint16_BE(void *pTo, const void *pFrom, size_t nCntWords)
- {
- size_t i, j;
- uint8_t *p1 = (uint8_t*)pTo;
- const uint8_t *p2 = (const uint8_t*)pFrom;
- for(i = 0; i < nCntWords; i++)
- {
- for(j = 0; j < sizeof(uint16_t); j++)
- {
- *p1++ = *p2++;
- }
- }
- }
- /////////////////////////////////////////////////////////////////////////////
- void GfaBufCpyUnaligned_uint32_LE(void *pTo, const void *pFrom, size_t nCntDWords)
- {
- size_t i, j;
- uint8_t *p1 = (uint8_t*)pTo;
- const uint8_t *p2 = (const uint8_t*)pFrom;
- for(i = 0; i < nCntDWords; i++)
- {
- p2 += sizeof(uint32_t);
- for(j = 0; j < sizeof(uint32_t); j++)
- {
- *p1++ = *--p2;
- }
- p2 += sizeof(uint32_t);
- }
- }
- void GfaBufCpyUnaligned_uint32_BE(void *pTo, const void *pFrom, size_t nCntDWords)
- {
- size_t i, j;
- uint8_t *p1 = (uint8_t*)pTo;
- const uint8_t *p2 = (const uint8_t*)pFrom;
- for(i = 0; i < nCntDWords; i++)
- {
- for(j = 0; j < sizeof(uint32_t); j++)
- {
- *p1++ = *p2++;
- }
- }
- }
- /////////////////////////////////////////////////////////////////////////////
- uint16_t GfaBufGetUnaligned_uint16_LE(const void *pData)
- {
- uint16_t nRet;
- GfaBufCpyUnaligned_uint16_LE(&nRet, pData, 1);
- return nRet;
- }
- uint16_t GfaBufGetUnaligned_uint16_BE(const void *pData)
- {
- uint16_t nRet;
- GfaBufCpyUnaligned_uint16_BE(&nRet, pData, 1);
- return nRet;
- }
- /////////////////////////////////////////////////////////////////////////////
- void GfaBufSetUnaligned_uint16_LE(void *pData, uint16_t nVal)
- {
- GfaBufCpyUnaligned_uint16_LE(pData, &nVal, 1);
- }
- void GfaBufSetUnaligned_uint16_BE(void *pData, uint16_t nVal)
- {
- GfaBufCpyUnaligned_uint16_BE(pData, &nVal, 1);
- }
- /////////////////////////////////////////////////////////////////////////////
- uint32_t GfaBufGetUnaligned_uint32_LE(const void *pData)
- {
- uint32_t nRet;
- GfaBufCpyUnaligned_uint32_LE(&nRet, pData, 1);
- return nRet;
- }
- uint32_t GfaBufGetUnaligned_uint32_BE(const void *pData)
- {
- uint32_t nRet;
- GfaBufCpyUnaligned_uint32_BE(&nRet, pData, 1);
- return nRet;
- }
- /////////////////////////////////////////////////////////////////////////////
- void GfaBufSetUnaligned_uint32_LE(void *pData, uint16_t nVal)
- {
- GfaBufCpyUnaligned_uint32_LE(pData, &nVal, 1);
- }
- void GfaBufSetUnaligned_uint32_BE(void *pData, uint16_t nVal)
- {
- GfaBufCpyUnaligned_uint32_BE(pData, &nVal, 1);
- }
- /////////////////////////////////////////////////////////////////////////////
- float GfaBufGetUnaligned_float(const void *pData)
- {
- float fVal;
- uint8_t *p1 = (uint8_t*)pData;
- uint8_t *p2 = (uint8_t*)&fVal;
- memcpy(p2, p1, sizeof(float));
- return fVal;
- }
- /////////////////////////////////////////////////////////////////////////////
- void GfaBufSetUnaligned_float(void *pData, float fVal)
- {
- uint8_t *p1 = (uint8_t*)pData;
- uint8_t *p2 = (uint8_t*)&fVal;
- memcpy(p1, p2, sizeof(float));
- }
- /////////////////////////////////////////////////////////////////////////////
- double GfaBufGetUnaligned_double(const void *pData)
- {
- double fVal;
- uint8_t *p1 = (uint8_t*)pData;
- uint8_t *p2 = (uint8_t*)&fVal;
- memcpy(p2, p1, sizeof(double));
- return fVal;
- }
- /////////////////////////////////////////////////////////////////////////////
- void GfaBufSetUnaligned_double(void *pData, double fVal)
- {
- uint8_t *p1 = (uint8_t*)pData;
- uint8_t *p2 = (uint8_t*)&fVal;
- memcpy(p1, p2, sizeof(double));
- }
- /////////////////////////////////////////////////////////////////////////////
- bool GfaBufVerifyCRC(const void *pData, size_t nCbData, const void *pCRC)
- {
- uint16_t nCrc = Crc16(0xFFFF, (const uint8_t*)pData, nCbData);
- const uint8_t *pCrc = (const uint8_t*)pCRC;
- return ((pCrc[0] == (uint8_t)(nCrc & 0xff)) &&
- (pCrc[1] == (uint8_t)(nCrc >> 8)));
- }
- /////////////////////////////////////////////////////////////////////////////
- void GfaBufSetCRC(const void *pData, size_t nCbData, void *pCRC)
- {
- uint16_t nCrc = Crc16(0xFFFF, (const uint8_t*)pData, nCbData);
- uint8_t *pCrc = (uint8_t*)pCRC;
- pCrc[0] = (uint8_t)(nCrc & 0xff);
- pCrc[1] = (uint8_t)(nCrc >> 8);
- }
|