mirror of
https://github.com/xoseperez/espurna.git
synced 2026-03-06 08:24:27 +01:00
sns: some more error types
This commit is contained in:
@@ -375,6 +375,9 @@
|
||||
|
||||
#define MAGNITUDE_MAX 39
|
||||
|
||||
// TODO: backwards compatible sensor integer values. should probably allow custom messsages
|
||||
// (even with the increased flash arequirements)
|
||||
|
||||
#define SENSOR_ERROR_OK 0 // No error
|
||||
#define SENSOR_ERROR_OUT_OF_RANGE 1 // Result out of sensor range
|
||||
#define SENSOR_ERROR_WARM_UP 2 // Sensor is warming-up
|
||||
@@ -384,9 +387,13 @@
|
||||
#define SENSOR_ERROR_I2C 6 // Wrong or locked I2C address
|
||||
#define SENSOR_ERROR_GPIO_USED 7 // The GPIO is already in use
|
||||
#define SENSOR_ERROR_CALIBRATION 8 // Calibration error or Not calibrated
|
||||
#define SENSOR_ERROR_OVERFLOW 9 // Value overflow
|
||||
#define SENSOR_ERROR_NOT_READY 10 // Device is not ready / available / disconnected
|
||||
#define SENSOR_ERROR_CONFIG 11 // Configuration values were invalid
|
||||
#define SENSOR_ERROR_SUPPORT 12 // Not supported
|
||||
#define SENSOR_ERROR_OTHER 99 // Any other error
|
||||
|
||||
#define SENSOR_ERROR_MAX 9
|
||||
#define SENSOR_ERROR_MAX 13
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Telnet server
|
||||
|
||||
@@ -1824,41 +1824,52 @@ bool _sensorWebSocketOnKeyCheck(const char* key, JsonVariant&) {
|
||||
}
|
||||
|
||||
String _sensorError(unsigned char error) {
|
||||
|
||||
const __FlashStringHelper* result = nullptr;
|
||||
const char* result { nullptr };
|
||||
|
||||
switch (error) {
|
||||
case SENSOR_ERROR_OK:
|
||||
result = F("OK");
|
||||
break;
|
||||
case SENSOR_ERROR_OUT_OF_RANGE:
|
||||
result = F("Out of Range");
|
||||
break;
|
||||
case SENSOR_ERROR_WARM_UP:
|
||||
result = F("Warming Up");
|
||||
break;
|
||||
case SENSOR_ERROR_TIMEOUT:
|
||||
result = F("Timeout");
|
||||
break;
|
||||
case SENSOR_ERROR_UNKNOWN_ID:
|
||||
result = F("Unknown ID");
|
||||
break;
|
||||
case SENSOR_ERROR_CRC:
|
||||
result = F("CRC / Data Error");
|
||||
break;
|
||||
case SENSOR_ERROR_I2C:
|
||||
result = F("I2C Error");
|
||||
break;
|
||||
case SENSOR_ERROR_GPIO_USED:
|
||||
result = F("GPIO Already Used");
|
||||
break;
|
||||
case SENSOR_ERROR_CALIBRATION:
|
||||
result = F("Calibration Error");
|
||||
break;
|
||||
default:
|
||||
case SENSOR_ERROR_OTHER:
|
||||
result = F("Other / Unknown Error");
|
||||
break;
|
||||
case SENSOR_ERROR_OK:
|
||||
result = PSTR("OK");
|
||||
break;
|
||||
case SENSOR_ERROR_OUT_OF_RANGE:
|
||||
result = PSTR("Out of Range");
|
||||
break;
|
||||
case SENSOR_ERROR_WARM_UP:
|
||||
result = PSTR("Warming Up");
|
||||
break;
|
||||
case SENSOR_ERROR_TIMEOUT:
|
||||
result = PSTR("Timeout");
|
||||
break;
|
||||
case SENSOR_ERROR_UNKNOWN_ID:
|
||||
result = PSTR("Unknown ID");
|
||||
break;
|
||||
case SENSOR_ERROR_CRC:
|
||||
result = PSTR("CRC / Data Error");
|
||||
break;
|
||||
case SENSOR_ERROR_I2C:
|
||||
result = PSTR("I2C Error");
|
||||
break;
|
||||
case SENSOR_ERROR_GPIO_USED:
|
||||
result = PSTR("GPIO Already Used");
|
||||
break;
|
||||
case SENSOR_ERROR_CALIBRATION:
|
||||
result = PSTR("Calibration Error");
|
||||
break;
|
||||
case SENSOR_ERROR_OVERFLOW:
|
||||
result = PSTR("Value Overflow");
|
||||
break;
|
||||
case SENSOR_ERROR_NOT_READY:
|
||||
result = PSTR("Not Ready");
|
||||
break;
|
||||
case SENSOR_ERROR_CONFIG:
|
||||
result = PSTR("Invalid Configuration");
|
||||
break;
|
||||
case SENSOR_ERROR_SUPPORT:
|
||||
result = PSTR("Not Supported");
|
||||
break;
|
||||
default:
|
||||
case SENSOR_ERROR_OTHER:
|
||||
result = PSTR("Other / Unknown Error");
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -2488,10 +2499,8 @@ void _sensorPre() {
|
||||
for (auto sensor : _sensors) {
|
||||
sensor->pre();
|
||||
if (!sensor->status()) {
|
||||
DEBUG_MSG_P(PSTR("[SENSOR] Error reading data from %s (error: %d)\n"),
|
||||
sensor->description().c_str(),
|
||||
sensor->error()
|
||||
);
|
||||
DEBUG_MSG_P(PSTR("[SENSOR] Could not read from %s (%s)\n"),
|
||||
sensor->description().c_str(), _sensorError(sensor->error()).c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3235,8 +3244,10 @@ void _sensorInit() {
|
||||
sensor->begin();
|
||||
|
||||
if (!sensor->ready()) {
|
||||
if (0 != sensor->error()) {
|
||||
DEBUG_MSG_P(PSTR("[SENSOR] -> ERROR %d\n"), sensor->error());
|
||||
const auto error = sensor->error();
|
||||
if (error != SENSOR_ERROR_OK) {
|
||||
DEBUG_MSG_P(PSTR("[SENSOR] -> ERROR %s (%hhu)\n"),
|
||||
_sensorError(error).c_str(), error);
|
||||
}
|
||||
_sensors_ready = false;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user