| 108 | |
| 109 | |
| 110 | static void process_throttle_command( |
| 111 | const uint8_t * const data ) |
| 112 | { |
| 113 | if ( data != NULL ) |
| 114 | { |
| 115 | const oscc_throttle_command_s * const throttle_command = |
| 116 | (oscc_throttle_command_s *) data; |
| 117 | |
| 118 | const float clamped_position = CONSTRAIN( |
| 119 | throttle_command->torque_request, |
| 120 | MINIMUM_THROTTLE_COMMAND, |
| 121 | MAXIMUM_THROTTLE_COMMAND); |
| 122 | |
| 123 | float spoof_voltage_low = THROTTLE_POSITION_TO_VOLTS_LOW( clamped_position ); |
| 124 | |
| 125 | spoof_voltage_low = CONSTRAIN( |
| 126 | spoof_voltage_low, |
| 127 | THROTTLE_SPOOF_LOW_SIGNAL_VOLTAGE_MIN, |
| 128 | THROTTLE_SPOOF_LOW_SIGNAL_VOLTAGE_MAX); |
| 129 | |
| 130 | float spoof_voltage_high = THROTTLE_POSITION_TO_VOLTS_HIGH( clamped_position ); |
| 131 | |
| 132 | spoof_voltage_high = CONSTRAIN( |
| 133 | spoof_voltage_high, |
| 134 | THROTTLE_SPOOF_HIGH_SIGNAL_VOLTAGE_MIN, |
| 135 | THROTTLE_SPOOF_HIGH_SIGNAL_VOLTAGE_MAX); |
| 136 | |
| 137 | const uint16_t spoof_value_low = STEPS_PER_VOLT * spoof_voltage_low; |
| 138 | const uint16_t spoof_value_high = STEPS_PER_VOLT * spoof_voltage_high; |
| 139 | |
| 140 | update_throttle( spoof_value_high, spoof_value_low ); |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | |
| 145 | static void process_fault_report( |
no test coverage detected