@@ -193,14 +193,17 @@ HT_TASK::TaskResponse init_ioexpander(const unsigned long& sysMicros, const HT_T
193193 IOExpanderInstance::instance ().init ();
194194
195195 // setting GPB7 as an output (required by datasheet) and the rest as inputs for both ports
196- IOExpanderInstance::instance ().portMode (MCP23017Port::A, 0b01111111 );
197- IOExpanderInstance::instance ().portMode (MCP23017Port::B, 0b01111111 );
196+ IOExpanderInstance::instance ().portMode (MCP23017Port::A, 0b11111111 );
197+ IOExpanderInstance::instance ().portMode (MCP23017Port::B, 0b11111111 );
198198
199- // configure internal pull-ups (required by datasheet)
200- IOExpanderInstance::instance ().writeRegister (MCP23017Register::GPPU_A, 0xFF );
199+ // internal pullups
201200 IOExpanderInstance::instance ().writeRegister (MCP23017Register::GPPU_B, 0xFF );
201+ IOExpanderInstance::instance ().writeRegister (MCP23017Register::GPPU_A, 0xFF );
202+
203+
204+ // invert
205+ IOExpanderInstance::instance ().writeRegister (MCP23017Register::IPOL_A, 0xFF );
202206
203- IOExpanderInstance::instance ().writeRegister (MCP23017Register::IPOL_B, 0xFF );
204207
205208 return HT_TASK::TaskResponse::YIELD;
206209}
@@ -213,8 +216,6 @@ HT_TASK::TaskResponse read_ioexpander(const unsigned long& sysMicros, const HT_T
213216
214217 uint16_t data = IOExpanderInstance::instance ().read ();
215218
216- Serial.print (IOExpanderUtils::getBit (data, 0 , 1 ));
217-
218219 // inputs on port a (0)
219220 vcr_data.interface_data .shutdown_sensing_data .bspd_is_ok = IOExpanderUtils::getBit (data, 0 , 1 );
220221 // vcr_data.interface_data.shutdown_sensing_data.bspd_fault = IOExpanderUtils::getBit(data, 0, 2); //need to add bspd fault to shdn sensing data in shared firmware types
@@ -225,13 +226,17 @@ HT_TASK::TaskResponse read_ioexpander(const unsigned long& sysMicros, const HT_T
225226
226227 // inputs on port b (1)
227228 // vcr_data.interface_data.shutdown_sensing_data.lv_present = IOExpanderUtils::getBit(data, 1, 0); //need to add
228- vcr_data.interface_data .shutdown_sensing_data .bms_is_ok = IOExpanderUtils::getBit (data, 1 , 1 ); // i also need to update the shutdown sensing struct
229+ vcr_data.interface_data .shutdown_sensing_data .bms_is_ok = IOExpanderUtils::getBit (data, 0 , 1 ); // i also need to update the shutdown sensing struct
229230 vcr_data.interface_data .shutdown_sensing_data .imd_is_ok = IOExpanderUtils::getBit (data, 1 , 2 );
230231 // vcr_data.interface_data.shutdown_sensing_data.vcr_is_ok = IOExpanderUtils::getBit(data, 1, 3); //need to add
231232 vcr_data.interface_data .ethernet_is_linked .acu_link = IOExpanderUtils::getBit (data, 1 , 4 );
232233 vcr_data.interface_data .ethernet_is_linked .teensy_link = IOExpanderUtils::getBit (data, 1 , 5 );
233234 vcr_data.interface_data .ethernet_is_linked .vcf_link = IOExpanderUtils::getBit (data, 1 , 6 );
234235
236+ // Serial.println( vcr_data.interface_data.shutdown_sensing_data.bms_is_ok);
237+
238+ Wire2.requestFrom (0x20 , 1 );
239+ Serial.println (Wire2.available ());
235240 return HT_TASK::TaskResponse::YIELD;
236241 // NOLINTEND
237242}
@@ -247,3 +252,15 @@ HT_TASK::TaskResponse run_update_brakelight_task(const unsigned long& sysMicros,
247252 digitalWrite (BRAKELIGHT_CONTROL_PIN, vcr_data.interface_data .recvd_pedals_data .pedals_data .brake_is_pressed );
248253 return HT_TASK::TaskResponse::YIELD;
249254}
255+
256+
257+ HT_TASK::TaskResponse enable_fans (const unsigned long & sysMicros, const HT_TASK::TaskInfo& taskInfo)
258+ {
259+ digitalWrite (MOTOR_FAN_CNTRL, VehicleStateMachineInstance::instance ().get_state () == VehicleState_e::READY_TO_DRIVE ? 1 : 0 );
260+ digitalWrite (INV_FAN_CNTRL, VehicleStateMachineInstance::instance ().get_state () == VehicleState_e::READY_TO_DRIVE ? 1 : 0 );
261+ }
262+
263+ HT_TASK::TaskResponse enable_pumps (const unsigned long & sysMicros, const HT_TASK::TaskInfo& taskInfo)
264+ {
265+ digitalWrite (PUMP_CNTRL, VehicleStateMachineInstance::instance ().get_state () == VehicleState_e::READY_TO_DRIVE ? 1 : 0 );
266+ }
0 commit comments