MatrixMiniR4 1.1.9
Matrix Mini R4 Arduino Library API Documentation
Loading...
Searching...
No Matches
BitConverter.cpp
Go to the documentation of this file.
1
6#include "BitConverter.h"
7
8uint32_t BitConverter::ToUInt32(uint8_t* value, int startIdx)
9{
10 uint32_t data = value[startIdx++];
11 data |= value[startIdx++] << 8;
12 data |= value[startIdx++] << 16;
13 data |= value[startIdx] << 24;
14 return data;
15}
16
17uint16_t BitConverter::ToUInt16(uint8_t* value, int startIdx)
18{
19 uint16_t data = value[startIdx++];
20 data |= value[startIdx] << 8;
21 return data;
22}
23
24int32_t BitConverter::ToInt32(uint8_t* value, int startIdx)
25{
26 int32_t data = value[startIdx++];
27 data |= value[startIdx++] << 8;
28 data |= value[startIdx++] << 16;
29 data |= value[startIdx] << 24;
30 return data;
31}
32
33float BitConverter::Tofloat(uint8_t* value, int startIdx)
34{
35 union{
36 uint8_t b[4];
37 float fl;
38 }fl_X;
39 int inX;
40 inX = startIdx;
41
42 fl_X.b[0] = value[inX];
43 inX++;
44 fl_X.b[1] = value[inX];
45 inX++;
46 fl_X.b[2] = value[inX];
47 inX++;
48 fl_X.b[3] = value[inX];
49 return fl_X.fl;
50}
51
52int16_t BitConverter::ToInt16(uint8_t* value, int startIdx)
53{
54 int16_t data = value[startIdx++];
55 data |= value[startIdx] << 8;
56 return data;
57}
58
59void BitConverter::FloatGetBytes(uint8_t* buff, float value)
60{
61 union{
62 uint8_t b[4];
63 float fl;
64 }xfl_X;
65
66 xfl_X.fl = value;
67
68 buff[0] = xfl_X.b[0];
69 buff[1] = xfl_X.b[1];
70 buff[2] = xfl_X.b[2];
71 buff[3] = xfl_X.b[3];
72}
73
74void BitConverter::GetBytes(uint8_t* buff, uint32_t value)
75{
76 buff[0] = (uint8_t)(value & 0xFF);
77 buff[1] = (uint8_t)((value >> 8) & 0xFF);
78 buff[2] = (uint8_t)((value >> 16) & 0xFF);
79 buff[3] = (uint8_t)((value >> 24) & 0xFF);
80}
81
82void BitConverter::GetBytes(uint8_t* buff, int32_t value)
83{
84 GetBytes(buff, static_cast<uint32_t>(value));
85}
86
87void BitConverter::GetBytes(uint8_t* buff, uint16_t value)
88{
89 buff[0] = (uint8_t)(value & 0xFF);
90 buff[1] = (uint8_t)((value >> 8) & 0xFF);
91}
92
93void BitConverter::GetBytes(uint8_t* buff, int16_t value)
94{
95 GetBytes(buff, static_cast<uint16_t>(value));
96}
MiniR4 low level functions.
static uint32_t ToUInt32(uint8_t *value, int startIdx)
static int16_t ToInt16(uint8_t *value, int startIdx)
static void GetBytes(uint8_t *buff, uint32_t value)
static int32_t ToInt32(uint8_t *value, int startIdx)
static float Tofloat(uint8_t *value, int startIdx)
static uint16_t ToUInt16(uint8_t *value, int startIdx)
static void FloatGetBytes(uint8_t *buff, float value)