@@ -25,9 +25,10 @@ struct __attribute__((packed)) SensorDataPacket {
25
25
float result = 0 ;
26
26
uint8_t length = sizeof (result );
27
27
if (index + length > SENSOR_DATA_FIXED_LENGTH ) {
28
- length = SENSOR_DATA_FIXED_LENGTH - index ;
28
+ length = SENSOR_DATA_FIXED_LENGTH > index ? SENSOR_DATA_FIXED_LENGTH - index : 0 ;
29
29
}
30
- memcpy (& result , & data [index ], sizeof (result ));
30
+ if (length > 0 )
31
+ memcpy (& result , & data [index ], length ) ;
31
32
return result ;
32
33
}
33
34
@@ -42,29 +43,32 @@ struct __attribute__((packed)) SensorDataPacket {
42
43
uint16_t result = 0 ;
43
44
uint8_t length = sizeof (result );
44
45
if (index + length > SENSOR_DATA_FIXED_LENGTH ) {
45
- length = SENSOR_DATA_FIXED_LENGTH - index ;
46
+ length = SENSOR_DATA_FIXED_LENGTH > index ? SENSOR_DATA_FIXED_LENGTH - index : 0 ;
46
47
}
47
- memcpy (& result , & data [index ], length );
48
+ if (length > 0 )
49
+ memcpy (& result , & data [index ], length );
48
50
return result ;
49
51
}
50
52
51
53
uint32_t getUint24 (uint8_t index ) {
52
54
uint32_t result = 0 ;
53
55
uint8_t length = 3 ;
54
56
if (index + length > SENSOR_DATA_FIXED_LENGTH ) {
55
- length = SENSOR_DATA_FIXED_LENGTH - index ;
57
+ length = SENSOR_DATA_FIXED_LENGTH > index ? SENSOR_DATA_FIXED_LENGTH - index : 0 ;
56
58
}
57
- memcpy (& result , & data [index ], length );
59
+ if (length > 0 )
60
+ memcpy (& result , & data [index ], length );
58
61
return result ;
59
62
}
60
63
61
64
uint32_t getUint32 (uint8_t index ) {
62
65
uint32_t result = 0 ;
63
66
uint8_t length = sizeof (result );
64
67
if (index + length > SENSOR_DATA_FIXED_LENGTH ) {
65
- length = SENSOR_DATA_FIXED_LENGTH - index ;
68
+ length = SENSOR_DATA_FIXED_LENGTH > index ? SENSOR_DATA_FIXED_LENGTH - index : 0 ;
66
69
}
67
- memcpy (& result , & data [index ], length );
70
+ if (length > 0 )
71
+ memcpy (& result , & data [index ], length );
68
72
return result ;
69
73
}
70
74
@@ -79,19 +83,21 @@ struct __attribute__((packed)) SensorDataPacket {
79
83
int16_t result = 0 ;
80
84
uint8_t length = sizeof (result );
81
85
if (index + length > SENSOR_DATA_FIXED_LENGTH ) {
82
- length = SENSOR_DATA_FIXED_LENGTH - index ;
86
+ length = SENSOR_DATA_FIXED_LENGTH > index ? SENSOR_DATA_FIXED_LENGTH - index : 0 ;
83
87
}
84
- memcpy (& result , & data [index ], length );
88
+ if (length > 0 )
89
+ memcpy (& result , & data [index ], length );
85
90
return result ;
86
91
}
87
92
88
93
int32_t getInt32 (uint8_t index ) {
89
94
int32_t result = 0 ;
90
95
uint8_t length = sizeof (result );
91
96
if (index + length > SENSOR_DATA_FIXED_LENGTH ) {
92
- length = SENSOR_DATA_FIXED_LENGTH - index ;
97
+ length = SENSOR_DATA_FIXED_LENGTH > index ? SENSOR_DATA_FIXED_LENGTH - index : 0 ;
93
98
}
94
- memcpy (& result , & data [index ], length );
99
+ if (length > 0 )
100
+ memcpy (& result , & data [index ], length );
95
101
return result ;
96
102
}
97
103
};
0 commit comments