commaai / panda

code powering the comma.ai panda
MIT License
1.52k stars 757 forks source link

Enabling misra-c2012-1.2 #1896

Closed mpetkovic96 closed 4 months ago

mpetkovic96 commented 5 months ago

for #1794 The problem was with the typeof expression, which is not supported by MISRA-C2012-1.2 rule. Instead of this expression, shorts static inline functions were written. There was a problem when an unsigned value is compared with zero; it reported that the value is always greater than zero. Because of that, arguments of functions are unsigned int. For signed values, conversions would be made (for example, if you want the maximum between -2 and -3, first it would be converted to unsigned, which is 254 for -2 and 253 for -3, where 254 is greater than 253, which is correct). In safety_ford.h file, instead of the MAX macro, I use the ternary operator for float values because if I use the MAX macro, floats would be converted to unsigned, where 0.1 becomes 0, and I think that could be a problem.

mpetkovic96 commented 4 months ago

@adeebshihadeh Could you check if this approach is correct?