SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
SensorErrUtils.hpp
Go to the documentation of this file.
1
37#pragma once
38
39#include "SensorErr.hpp"
40
42{
43// 0 = OK, negative = error
44static inline bool isOk(SENSOR_ERROR_CODE code)
45{
46 return code == SENSOR_OK;
47}
48
49static inline bool isErr(SENSOR_ERROR_CODE code)
50{
51 return code < 0;
52}
53
54// Category checks (ranges)
55static inline bool isGenericErr(SENSOR_ERROR_CODE code)
56{
57 return code <= -100 && code > -200;
58}
59static inline bool isCommErr(SENSOR_ERROR_CODE code)
60{
61 return code <= -200 && code > -300;
62}
63static inline bool isDeviceErr(SENSOR_ERROR_CODE code)
64{
65 return code <= -300 && code > -400;
66}
67static inline bool isRegErr(SENSOR_ERROR_CODE code)
68{
69 return code <= -400 && code > -500;
70}
71static inline bool isDataErr(SENSOR_ERROR_CODE code)
72{
73 return code <= -500 && code > -600;
74}
75static inline bool isFwErr(SENSOR_ERROR_CODE code)
76{
77 return code <= -600 && code > -700;
78}
79static inline bool isTouchErr(SENSOR_ERROR_CODE code)
80{
81 return code <= -700 && code > -800;
82}
83static inline bool isGpioErr(SENSOR_ERROR_CODE code)
84{
85 return code <= -800 && code > -900;
86}
87static inline bool isResourceErr(SENSOR_ERROR_CODE code)
88{
89 return code <= -900 && code > -1000;
90}
91
92// Convert to ALL-CAPS token for logging/telemetry/UI
93static inline const char *toString(SENSOR_ERROR_CODE code)
94{
95 switch (code) {
96 case SENSOR_OK: return "SENSOR_OK";
97
98 case SENSOR_ERR: return "SENSOR_ERR";
99 case SENSOR_ERR_NOT_INITIALIZED: return "SENSOR_ERR_NOT_INITIALIZED";
100 case SENSOR_ERR_ALREADY_INITIALIZED: return "SENSOR_ERR_ALREADY_INITIALIZED";
101 case SENSOR_ERR_INVALID_ARG: return "SENSOR_ERR_INVALID_ARG";
102 case SENSOR_ERR_OUT_OF_RANGE: return "SENSOR_ERR_OUT_OF_RANGE";
103 case SENSOR_ERR_NOT_SUPPORTED: return "SENSOR_ERR_NOT_SUPPORTED";
104 case SENSOR_ERR_BUSY: return "SENSOR_ERR_BUSY";
105 case SENSOR_ERR_TIMEOUT: return "SENSOR_ERR_TIMEOUT";
106 case SENSOR_ERR_INTERNAL: return "SENSOR_ERR_INTERNAL";
107 case SENSOR_ERR_UNKNOWN: return "SENSOR_ERR_UNKNOWN";
108
109 case SENSOR_ERR_COMM: return "SENSOR_ERR_COMM";
110 case SENSOR_ERR_COMM_INIT: return "SENSOR_ERR_COMM_INIT";
111 case SENSOR_ERR_COMM_TIMEOUT: return "SENSOR_ERR_COMM_TIMEOUT";
112 case SENSOR_ERR_COMM_NACK: return "SENSOR_ERR_COMM_NACK";
113 case SENSOR_ERR_COMM_ARBITRATION: return "SENSOR_ERR_COMM_ARBITRATION";
114 case SENSOR_ERR_COMM_BUS: return "SENSOR_ERR_COMM_BUS";
115 case SENSOR_ERR_COMM_CRC: return "SENSOR_ERR_COMM_CRC";
116 case SENSOR_ERR_COMM_FRAME: return "SENSOR_ERR_COMM_FRAME";
117 case SENSOR_ERR_COMM_UNAVAILABLE: return "SENSOR_ERR_COMM_UNAVAILABLE";
118
119 case SENSOR_ERR_DEVICE_NOT_FOUND: return "SENSOR_ERR_DEVICE_NOT_FOUND";
120 case SENSOR_ERR_DEVICE_ID_MISMATCH: return "SENSOR_ERR_DEVICE_ID_MISMATCH";
121 case SENSOR_ERR_DEVICE_RESET_FAIL: return "SENSOR_ERR_DEVICE_RESET_FAIL";
122 case SENSOR_ERR_DEVICE_CONFIG_FAIL: return "SENSOR_ERR_DEVICE_CONFIG_FAIL";
123 case SENSOR_ERR_DEVICE_SELF_TEST_FAIL: return "SENSOR_ERR_DEVICE_SELF_TEST_FAIL";
124
125 case SENSOR_ERR_REG_READ: return "SENSOR_ERR_REG_READ";
126 case SENSOR_ERR_REG_WRITE: return "SENSOR_ERR_REG_WRITE";
127 case SENSOR_ERR_REG_VERIFY: return "SENSOR_ERR_REG_VERIFY";
128
129 case SENSOR_ERR_NO_DATA: return "SENSOR_ERR_NO_DATA";
130 case SENSOR_ERR_DATA_INVALID: return "SENSOR_ERR_DATA_INVALID";
131 case SENSOR_ERR_DATA_OVERFLOW: return "SENSOR_ERR_DATA_OVERFLOW";
132 case SENSOR_ERR_DATA_UNDERFLOW: return "SENSOR_ERR_DATA_UNDERFLOW";
133 case SENSOR_ERR_FIFO: return "SENSOR_ERR_FIFO";
134 case SENSOR_ERR_CALIBRATION_REQUIRED: return "SENSOR_ERR_CALIBRATION_REQUIRED";
135 case SENSOR_ERR_CALIBRATION_FAIL: return "SENSOR_ERR_CALIBRATION_FAIL";
136
137 case SENSOR_ERR_FW_MISSING: return "SENSOR_ERR_FW_MISSING";
138 case SENSOR_ERR_FW_INVALID: return "SENSOR_ERR_FW_INVALID";
139 case SENSOR_ERR_FW_UPLOAD_FAIL: return "SENSOR_ERR_FW_UPLOAD_FAIL";
140 case SENSOR_ERR_FW_BOOT_FAIL: return "SENSOR_ERR_FW_BOOT_FAIL";
141 case SENSOR_ERR_FW_VERSION_UNSUPPORTED: return "SENSOR_ERR_FW_VERSION_UNSUPPORTED";
142 case SENSOR_ERR_FEATURE_NOT_FOUND: return "SENSOR_ERR_FEATURE_NOT_FOUND";
143 case SENSOR_ERR_FEATURE_ENABLE_FAIL: return "SENSOR_ERR_FEATURE_ENABLE_FAIL";
144 case SENSOR_ERR_META_EVENT: return "SENSOR_ERR_META_EVENT";
145
146 case SENSOR_ERR_TOUCH_NO_POINT: return "SENSOR_ERR_TOUCH_NO_POINT";
147 case SENSOR_ERR_TOUCH_COORD_INVALID: return "SENSOR_ERR_TOUCH_COORD_INVALID";
148 case SENSOR_ERR_TOUCH_RESOLUTION_NOT_SET: return "SENSOR_ERR_TOUCH_RESOLUTION_NOT_SET";
149 case SENSOR_ERR_TOUCH_CHIPID_MISMATCH: return "SENSOR_ERR_TOUCH_CHIPID_MISMATCH";
150 case SENSOR_ERR_TOUCH_MODE_INVALID: return "SENSOR_ERR_TOUCH_MODE_INVALID";
151 case SENSOR_ERR_TOUCH_INT_CONFIG: return "SENSOR_ERR_TOUCH_INT_CONFIG";
152
153 case SENSOR_ERR_GPIO_INVALID_PIN: return "SENSOR_ERR_GPIO_INVALID_PIN";
154 case SENSOR_ERR_GPIO_INVALID_MODE: return "SENSOR_ERR_GPIO_INVALID_MODE";
155 case SENSOR_ERR_GPIO_WRITE_FAIL: return "SENSOR_ERR_GPIO_WRITE_FAIL";
156 case SENSOR_ERR_GPIO_READ_FAIL: return "SENSOR_ERR_GPIO_READ_FAIL";
157
158 case SENSOR_ERR_NO_MEMORY: return "SENSOR_ERR_NO_MEMORY";
159 case SENSOR_ERR_BUFFER_TOO_SMALL: return "SENSOR_ERR_BUFFER_TOO_SMALL";
160 case SENSOR_ERR_RESOURCE_EXHAUSTED: return "SENSOR_ERR_RESOURCE_EXHAUSTED";
161
162 default: return "SENSOR_ERR_UNKNOWN";
163 }
164}
165
166// Optional: map error code to a stable numeric category (for compact logs)
167static inline int16_t category(SENSOR_ERROR_CODE code)
168{
169 if (!isErr(code)) return 0;
170 // e.g. -203 -> 200, -701 -> 700 (absolute hundred group)
171 int16_t v = (code < 0) ? (int16_t)(-code) : (int16_t)code;
172 return (int16_t)((v / 100) * 100);
173}
174
175// Compatibility helper: turn a bool result + default error into code
176static inline SENSOR_ERROR_CODE fromBool(bool ok, SENSOR_ERROR_CODE errIfFalse = SENSOR_ERR)
177{
178 return ok ? SENSOR_OK : errIfFalse;
179}
180} // namespace SensorErrUtils
@license MIT License
SENSOR_ERROR_CODE
Definition SensorErr.hpp:35
@ SENSOR_ERR_GPIO_READ_FAIL
@ SENSOR_ERR_INTERNAL
Definition SensorErr.hpp:48
@ SENSOR_ERR_FEATURE_NOT_FOUND
Definition SensorErr.hpp:90
@ SENSOR_ERR_TIMEOUT
Definition SensorErr.hpp:47
@ SENSOR_ERR_DEVICE_SELF_TEST_FAIL
Definition SensorErr.hpp:68
@ SENSOR_ERR_ALREADY_INITIALIZED
Definition SensorErr.hpp:42
@ SENSOR_ERR_DEVICE_CONFIG_FAIL
Definition SensorErr.hpp:67
@ SENSOR_ERR_CALIBRATION_REQUIRED
Definition SensorErr.hpp:81
@ SENSOR_ERR_GPIO_WRITE_FAIL
@ SENSOR_ERR_REG_READ
Definition SensorErr.hpp:71
@ SENSOR_ERR_FIFO
Definition SensorErr.hpp:80
@ SENSOR_ERR_FW_INVALID
Definition SensorErr.hpp:86
@ SENSOR_ERR_FW_BOOT_FAIL
Definition SensorErr.hpp:88
@ SENSOR_ERR_REG_WRITE
Definition SensorErr.hpp:72
@ SENSOR_ERR_DEVICE_RESET_FAIL
Definition SensorErr.hpp:66
@ SENSOR_ERR_COMM_ARBITRATION
Definition SensorErr.hpp:56
@ SENSOR_ERR_COMM_CRC
Definition SensorErr.hpp:58
@ SENSOR_ERR_UNKNOWN
Definition SensorErr.hpp:49
@ SENSOR_ERR_COMM_BUS
Definition SensorErr.hpp:57
@ SENSOR_ERR_TOUCH_CHIPID_MISMATCH
Definition SensorErr.hpp:98
@ SENSOR_ERR_GPIO_INVALID_PIN
@ SENSOR_ERR_COMM_FRAME
Definition SensorErr.hpp:59
@ SENSOR_ERR_CALIBRATION_FAIL
Definition SensorErr.hpp:82
@ SENSOR_ERR_TOUCH_NO_POINT
Definition SensorErr.hpp:95
@ SENSOR_ERR_BUFFER_TOO_SMALL
@ SENSOR_ERR_COMM_TIMEOUT
Definition SensorErr.hpp:54
@ SENSOR_ERR_TOUCH_COORD_INVALID
Definition SensorErr.hpp:96
@ SENSOR_ERR_DATA_INVALID
Definition SensorErr.hpp:77
@ SENSOR_ERR_NO_DATA
Definition SensorErr.hpp:76
@ SENSOR_ERR_RESOURCE_EXHAUSTED
@ SENSOR_ERR_BUSY
Definition SensorErr.hpp:46
@ SENSOR_ERR_DEVICE_ID_MISMATCH
Definition SensorErr.hpp:65
@ SENSOR_ERR_GPIO_INVALID_MODE
@ SENSOR_ERR_NOT_INITIALIZED
Definition SensorErr.hpp:41
@ SENSOR_ERR_FW_MISSING
Definition SensorErr.hpp:85
@ SENSOR_ERR_DATA_UNDERFLOW
Definition SensorErr.hpp:79
@ SENSOR_ERR_FW_UPLOAD_FAIL
Definition SensorErr.hpp:87
@ SENSOR_ERR_COMM_UNAVAILABLE
Definition SensorErr.hpp:60
@ SENSOR_ERR_NO_MEMORY
@ SENSOR_ERR_TOUCH_RESOLUTION_NOT_SET
Definition SensorErr.hpp:97
@ SENSOR_OK
Definition SensorErr.hpp:37
@ SENSOR_ERR_COMM_NACK
Definition SensorErr.hpp:55
@ SENSOR_ERR_DEVICE_NOT_FOUND
Definition SensorErr.hpp:64
@ SENSOR_ERR_REG_VERIFY
Definition SensorErr.hpp:73
@ SENSOR_ERR_NOT_SUPPORTED
Definition SensorErr.hpp:45
@ SENSOR_ERR_INVALID_ARG
Definition SensorErr.hpp:43
@ SENSOR_ERR_DATA_OVERFLOW
Definition SensorErr.hpp:78
@ SENSOR_ERR_COMM_INIT
Definition SensorErr.hpp:53
@ SENSOR_ERR_COMM
Definition SensorErr.hpp:52
@ SENSOR_ERR_TOUCH_MODE_INVALID
Definition SensorErr.hpp:99
@ SENSOR_ERR_META_EVENT
Definition SensorErr.hpp:92
@ SENSOR_ERR_TOUCH_INT_CONFIG
@ SENSOR_ERR_FEATURE_ENABLE_FAIL
Definition SensorErr.hpp:91
@ SENSOR_ERR_FW_VERSION_UNSUPPORTED
Definition SensorErr.hpp:89
@ SENSOR_ERR
Definition SensorErr.hpp:40
@ SENSOR_ERR_OUT_OF_RANGE
Definition SensorErr.hpp:44