Skip to content

Commit 7b81480

Browse files
committed
removed ioexpander interfac
1 parent 52b69f2 commit 7b81480

File tree

6 files changed

+62
-91
lines changed

6 files changed

+62
-91
lines changed

include/VCR_Globals.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
#ifndef VCR_GLOBALS
22
#define VCR_GLOBALS
33

4+
#include <etl/singleton.h>
5+
46
/* C++ library includes */
57
#include <array>
68

9+
/* IO Expander MCP23017 Library */
10+
#include "MCP23017.h"
11+
712
/* From shared-firmware-types */
813
#include "SharedFirmwareTypes.h"
9-
/* Local includes */
14+
1015

1116
/* Interface and system data structs */
1217
extern VCRData_s vcr_data; // NOLINT
1318

19+
/* IO Expander Setup */
20+
using IOExpanderInstance = etl::singleton<MCP23017>;
21+
1422
/* ADC setup */
1523
constexpr unsigned int channels_within_mcp_adc = 8;
1624

include/VCR_InterfaceTasks.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#include "VehicleStateMachine.h"
1111
#include "VCR_Globals.h"
1212
#include <ht_task.hpp>
13-
#include "IOExpander.h"
13+
1414

1515

1616
/**

lib/interfaces/include/IOExpander.h

Lines changed: 0 additions & 26 deletions
This file was deleted.

lib/interfaces/src/IOExpander.cpp

Lines changed: 0 additions & 27 deletions
This file was deleted.

src/VCR_InterfaceTasks.cpp

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
#include "controls.h"
1818

1919
#include "DrivebrainInterface.h"
20-
#include "IOExpander.h"
2120
#include "IOExpanderUtils.h"
2221

2322
float apply_iir_filter(float alpha, float old_value, float new_value)
@@ -189,32 +188,49 @@ HT_TASK::TaskResponse handle_send_VCR_ethernet_data(const unsigned long& sysMicr
189188

190189
HT_TASK::TaskResponse init_ioexpander(const unsigned long& sysMicros, const HT_TASK::TaskInfo& taskInfo)
191190
{
192-
IOExpanderInstance::create(0x20);
191+
Wire2.begin(); // copied from VCF but why Wire 2?
192+
IOExpanderInstance::create(0x20, Wire2);
193+
IOExpanderInstance::instance().init();
194+
195+
// 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);
198+
199+
// configure internal pull-ups (required by datasheet)
200+
IOExpanderInstance::instance().writeRegister(MCP23017Register::GPPU_A, 0xFF);
201+
IOExpanderInstance::instance().writeRegister(MCP23017Register::GPPU_B, 0xFF);
202+
203+
IOExpanderInstance::instance().writeRegister(MCP23017Register::IPOL_B, 0xFF);
204+
193205
return HT_TASK::TaskResponse::YIELD;
194206
}
195207

208+
209+
// need to double check pin assigments
196210
HT_TASK::TaskResponse read_ioexpander(const unsigned long& sysMicros, const HT_TASK::TaskInfo& taskInfo)
197211
{
198212
// NOLINTBEGIN
199213

200-
// TODO: Make this consistent with VCF implementation (make sure internal pullups are configured)
201-
202-
uint16_t data = 0;
203-
data = IOExpanderInstance::instance().read();
204-
vcr_data.interface_data.shutdown_sensing_data.bspd_is_ok = IOExpanderUtils::getBit(data, 0, 0);
205-
vcr_data.interface_data.shutdown_sensing_data.k_watchdog_relay = IOExpanderUtils::getBit(data, 0, 1);
206-
vcr_data.interface_data.shutdown_sensing_data.watchdog_is_ok = IOExpanderUtils::getBit(data, 0, 2);
207-
vcr_data.interface_data.shutdown_sensing_data.l_bms_relay = IOExpanderUtils::getBit(data, 0, 3);
208-
vcr_data.interface_data.shutdown_sensing_data.bms_is_ok = IOExpanderUtils::getBit(data, 0, 4);
209-
vcr_data.interface_data.shutdown_sensing_data.m_imd_relay = IOExpanderUtils::getBit(data, 0, 5);
210-
vcr_data.interface_data.shutdown_sensing_data.imd_is_ok = IOExpanderUtils::getBit(data, 0, 6);
211-
212-
vcr_data.interface_data.ethernet_is_linked.acu_link = IOExpanderUtils::getBit(data, 1, 0);
213-
vcr_data.interface_data.ethernet_is_linked.drivebrain_link = IOExpanderUtils::getBit(data, 1, 1);
214-
vcr_data.interface_data.ethernet_is_linked.vcf_link = IOExpanderUtils::getBit(data, 1, 2);
215-
vcr_data.interface_data.ethernet_is_linked.teensy_link = IOExpanderUtils::getBit(data, 1, 3);
216-
vcr_data.interface_data.ethernet_is_linked.debug_link = IOExpanderUtils::getBit(data, 1, 4);
217-
vcr_data.interface_data.ethernet_is_linked.ubiquiti_link = IOExpanderUtils::getBit(data, 1, 5);
214+
uint16_t data = IOExpanderInstance::instance().read();
215+
216+
Serial.print(IOExpanderUtils::getBit(data, 0, 1));
217+
218+
// inputs on port a (0)
219+
vcr_data.interface_data.shutdown_sensing_data.bspd_is_ok = IOExpanderUtils::getBit(data, 0, 1);
220+
//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
221+
//vcr_data.interface_data.ethernet_is_linked.vn_link = IOExpanderUtils::getBit(data, 0, 3); //need to add vn_link to ethernet is linked in shared firmware types
222+
vcr_data.interface_data.ethernet_is_linked.drivebrain_link = IOExpanderUtils::getBit(data, 0, 4);
223+
vcr_data.interface_data.ethernet_is_linked.ubiquiti_link = IOExpanderUtils::getBit(data, 0, 5);
224+
//vcr_data.interface_data.shutdown_sensing_data.bspd_missing = IOExpanderUtils::getBit(data, 0, 6); //need to add to shared firmware types
225+
226+
// inputs on port b (1)
227+
//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.imd_is_ok = IOExpanderUtils::getBit(data, 1, 2);
230+
//vcr_data.interface_data.shutdown_sensing_data.vcr_is_ok = IOExpanderUtils::getBit(data, 1, 3); //need to add
231+
vcr_data.interface_data.ethernet_is_linked.acu_link = IOExpanderUtils::getBit(data, 1, 4);
232+
vcr_data.interface_data.ethernet_is_linked.teensy_link = IOExpanderUtils::getBit(data, 1, 5);
233+
vcr_data.interface_data.ethernet_is_linked.vcf_link = IOExpanderUtils::getBit(data, 1, 6);
218234

219235
return HT_TASK::TaskResponse::YIELD;
220236
// NOLINTEND

src/main.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -172,22 +172,22 @@ HT_TASK::TaskResponse debug_print(const unsigned long& sysMicros, const HT_TASK:
172172
// Serial.print("torque mode cycle button pressed: ");
173173
// Serial.println(vcr_data.interface_data.dash_input_state.mode_btn_is_pressed);
174174

175-
Serial.println("IOExpander testing");
176-
Serial.println("Shutdown Data");
177-
Serial.println(vcr_data.interface_data.shutdown_sensing_data.bspd_is_ok);
178-
Serial.println(vcr_data.interface_data.shutdown_sensing_data.k_watchdog_relay);
179-
Serial.println(vcr_data.interface_data.shutdown_sensing_data.watchdog_is_ok);
180-
Serial.println(vcr_data.interface_data.shutdown_sensing_data.l_bms_relay);
181-
Serial.println(vcr_data.interface_data.shutdown_sensing_data.bms_is_ok);
182-
Serial.println(vcr_data.interface_data.shutdown_sensing_data.m_imd_relay);
183-
Serial.println(vcr_data.interface_data.shutdown_sensing_data.imd_is_ok);
184-
Serial.println("Linked Data");
185-
Serial.println(vcr_data.interface_data.ethernet_is_linked.acu_link);
186-
Serial.println(vcr_data.interface_data.ethernet_is_linked.drivebrain_link);
187-
Serial.println(vcr_data.interface_data.ethernet_is_linked.vcf_link);
188-
Serial.println(vcr_data.interface_data.ethernet_is_linked.teensy_link);
189-
Serial.println(vcr_data.interface_data.ethernet_is_linked.debug_link);
190-
Serial.println(vcr_data.interface_data.ethernet_is_linked.ubiquiti_link);
175+
// Serial.println("IOExpander testing");
176+
// Serial.println("Shutdown Data");
177+
// Serial.println(vcr_data.interface_data.shutdown_sensing_data.bspd_is_ok);
178+
//Serial.println(vcr_data.interface_data.shutdown_sensing_data.k_watchdog_relay);
179+
// Serial.println(vcr_data.interface_data.shutdown_sensing_data.watchdog_is_ok);
180+
// Serial.println(vcr_data.interface_data.shutdown_sensing_data.l_bms_relay);
181+
// Serial.println(vcr_data.interface_data.shutdown_sensing_data.bms_is_ok);
182+
// Serial.println(vcr_data.interface_data.shutdown_sensing_data.m_imd_relay);
183+
// Serial.println(vcr_data.interface_data.shutdown_sensing_data.imd_is_ok);
184+
// Serial.println("Linked Data");
185+
// Serial.println(vcr_data.interface_data.ethernet_is_linked.acu_link);
186+
Serial.println(vcr_data.interface_data.ethernet_is_linked.drivebrain_link);
187+
// Serial.println(vcr_data.interface_data.ethernet_is_linked.vcf_link);
188+
// Serial.println(vcr_data.interface_data.ethernet_is_linked.teensy_link);
189+
// Serial.println(vcr_data.interface_data.ethernet_is_linked.debug_link);
190+
// Serial.println(vcr_data.interface_data.ethernet_is_linked.ubiquiti_link);
191191

192192

193193
// Serial.print("Load Cell RR: ");

0 commit comments

Comments
 (0)