Skip to content

fix(bhi, leds): fixed faulty error handling due to always-false unsigned comparisons

fuchsi* requested to merge fuchsi/firmware:faulty_unsigned_comparisons into master

-Wtype-limits revealed three errors in the firmware:

../pycardium/modules/sys_leds.c: In function 'mp_leds_get_rocket':
../pycardium/modules/sys_leds.c:207:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
  207 |  if (ret == -EINVAL) {
      |          ^~


../pycardium/mphalport.c: In function 'mp_hal_set_interrupt_char':
../pycardium/mphalport.c:115:8: warning: comparison is always true due to limited range of data type [-Wtype-limits]
  115 |  if (c != -1) {
      |        ^~

../epicardium/modules/bhi.c: In function 'epic_bhi160_enable_sensor':
../epicardium/modules/bhi.c:134:12: warning: comparison is always false due to limited range of data type [-Wtype-limits]
  134 |  if (vs_id < 0) {
      |            ^
../epicardium/modules/bhi.c: In function 'epic_bhi160_disable_sensor':
../epicardium/modules/bhi.c:191:12: warning: comparison is always false due to limited range of data type [-Wtype-limits]
  191 |  if (vs_id < 0) {
      |            ^

note, that on the target platform char and enums are unsigned. The compiler has probably removed all of these ifs so far because the conditions were determined to always be false.

Merge request reports