Skip to content

Commit 7c74d1b

Browse files
authored
Merge pull request #7 from Sensirion/fix-low-level-error
Fix low level error
2 parents 36c288d + 2a7aaf3 commit 7c74d1b

5 files changed

+23
-3
lines changed

CHANGELOG.rst

+6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ and this project adheres to `Semantic Versioning <https://semver.org/spec/v2.0.0
99
`Unreleased`_
1010
-------------
1111

12+
`0.7.1`_ 2024-04-30
13+
-------------------
14+
15+
- Add undefined low level error to avoid fallback to "Frame already contains data" error.
16+
- Fix missing low level error when not enough data available for I2C.
17+
1218

1319
`0.7.0`_ 2024-04-09
1420
-------------------

library.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Sensirion Core
2-
version=0.7.0
2+
version=0.7.1
33
author=Sensirion
44
maintainer=Sensirion
55
sentence=Library containing code base for Sensirion Sensor Libraries.

src/SensirionErrors.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ void errorToString(uint16_t error, char errorMessage[],
5555
break;
5656
case HighLevelError::WriteError:
5757
switch (lowLevelError) {
58+
case LowLevelError::Undefined:
59+
strncpy(errorMessage, "Write error",
60+
errorMessageSize);
61+
return;
5862
case LowLevelError::SerialWriteError:
5963
strncpy(errorMessage, "Error writing to serial",
6064
errorMessageSize);
@@ -81,6 +85,9 @@ void errorToString(uint16_t error, char errorMessage[],
8185
break;
8286
case HighLevelError::ReadError:
8387
switch (lowLevelError) {
88+
case LowLevelError::Undefined:
89+
strncpy(errorMessage, "Read error", errorMessageSize);
90+
return;
8491
case LowLevelError::NonemptyFrameError:
8592
strncpy(errorMessage, "Frame already contains data",
8693
errorMessageSize);
@@ -117,6 +124,9 @@ void errorToString(uint16_t error, char errorMessage[],
117124
}
118125
case HighLevelError::TxFrameError:
119126
switch (lowLevelError) {
127+
case LowLevelError::Undefined:
128+
strncpy(errorMessage, "Tx frame error", errorMessageSize);
129+
return;
120130
case LowLevelError::BufferSizeError:
121131
strncpy(errorMessage, "Not enough space in buffer",
122132
errorMessageSize);
@@ -125,6 +135,9 @@ void errorToString(uint16_t error, char errorMessage[],
125135
break;
126136
case HighLevelError::RxFrameError:
127137
switch (lowLevelError) {
138+
case LowLevelError::Undefined:
139+
strncpy(errorMessage, "Rx frame error", errorMessageSize);
140+
return;
128141
case LowLevelError::BufferSizeError:
129142
strncpy(errorMessage, "Not enough space in buffer",
130143
errorMessageSize);

src/SensirionErrors.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ enum HighLevelError : uint16_t {
5050
SensorSpecificError = 0x8000,
5151
};
5252

53-
enum LowLevelError : uint16_t {
53+
enum LowLevelError : uint8_t {
5454
// general errors
55+
Undefined = 0,
5556
NonemptyFrameError,
5657
NoDataError,
5758
BufferSizeError,

src/SensirionI2CCommunication.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ uint16_t SensirionI2CCommunication::receiveFrame(uint8_t address,
104104
uint8_t available = i2cBus.requestFrom(address, bytesToRead,
105105
static_cast<uint8_t>(stop));
106106
if (bytesToRead != available) {
107-
return ReadError;
107+
return ReadError | NotEnoughDataError;
108108
}
109109
while (available > 0) {
110110
frame._buffer[i++] = i2cBus.read();

0 commit comments

Comments
 (0)