Skip to content

Commit

Permalink
Removed all ticking from interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
walkermburns committed Feb 9, 2024
1 parent c6985be commit d7b4728
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 38 deletions.
3 changes: 1 addition & 2 deletions lib/interfaces/include/AnalogSensorsInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

#include <tuple>
#include <algorithm>
#include <SysClock.h>

enum class AnalogSensorStatus_e
{
Expand Down Expand Up @@ -76,7 +75,7 @@ class AnalogMultiSensor
// Functions
/// @brief Called by the main loop. Allows AnalogMultiSensor devices not owned by a single system to self-actualize sampling & conversion.
/// @param tick
void tick(const SysTick_s &tick);
void tick(unsigned long curr_millis);

/// @brief Used by systems to get data out of this device when it's self-actualizing sampling & conversion.
/// @return Const ref to last data conversion.
Expand Down
4 changes: 1 addition & 3 deletions lib/interfaces/include/TelemetryInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#include "HyTech_CAN.h"
// #include "hytech.h"
#include "MessageQueueDefine.h"
#include "SysClock.h"
#include "AnalogSensorsInterface.h"
#include "SteeringEncoderInterface.h"

Expand Down Expand Up @@ -57,9 +56,8 @@ class TelemetryInterface
void enqueue_CAN_mcu_rear_potentiometers();
void enqueue_CAN_mcu_analog_readings();

/* Tick SysClock to send CAN */
/* Tick at 50Hz to send CAN */
void tick(
const SysTick_s &tick,
const AnalogConversionPacket_s<8> &adc1,
const AnalogConversionPacket_s<4> &adc2,
const AnalogConversionPacket_s<4> &adc3,
Expand Down
5 changes: 2 additions & 3 deletions lib/interfaces/include/WatchdogInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

#include "FlexCAN_T4.h"
#include "HyTech_CAN.h"
#include "SysClock.h"

const unsigned long WATCHDOG_KICK_INTERVAL = 7; // milliseconds

Expand All @@ -27,14 +26,14 @@ class WatchdogInterface
};

/* Initialize interface pin mode */
void init(const SysTick_s &tick);
void init(unsigned long curr_millis);

/* Write to Main ECU */
// Initialize output value
void set_start_state();

/* Kick watchdog */
void kick_watchdog(const SysTick_s &tick);
void kick_watchdog(unsigned long curr_millis);

};

Expand Down
31 changes: 14 additions & 17 deletions lib/interfaces/src/TelemetryInterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,26 +110,23 @@ void TelemetryInterface::update_analog_readings_CAN_msg(const SteeringEncoderCon
}

/* Tick SysClock */
void TelemetryInterface::tick(const SysTick_s &tick,
const AnalogConversionPacket_s<8> &adc1,
void TelemetryInterface::tick(const AnalogConversionPacket_s<8> &adc1,
const AnalogConversionPacket_s<4> &adc2,
const AnalogConversionPacket_s<4> &adc3,
const SteeringEncoderConversion_s &encoder) {

if (tick.triggers.trigger50) {
// Pedals
update_pedal_readings_CAN_msg(adc1.conversions[2], adc1.conversions[1], adc1.conversions[5], adc1.conversions[3]);
enqueue_CAN_mcu_pedal_readings();
// Analog readings
update_analog_readings_CAN_msg(encoder, adc1.conversions[7], adc1.conversions[6], adc1.conversions[0], adc1.conversions[4]);
enqueue_CAN_mcu_analog_readings();
// Load cells
update_load_cells_CAN_msg(adc2.conversions[2], adc3.conversions[2]);
enqueue_CAN_mcu_load_cells();
// Pots
update_potentiometers_CAN_msg(adc2.conversions[3], adc3.conversions[3]);
enqueue_CAN_mcu_front_potentiometers();
// enqueue_CAN_mcu_rear_potentiometers();
}
// Pedals
update_pedal_readings_CAN_msg(adc1.conversions[2], adc1.conversions[1], adc1.conversions[5], adc1.conversions[3]);
enqueue_CAN_mcu_pedal_readings();
// Analog readings
update_analog_readings_CAN_msg(encoder, adc1.conversions[7], adc1.conversions[6], adc1.conversions[0], adc1.conversions[4]);
enqueue_CAN_mcu_analog_readings();
// Load cells
update_load_cells_CAN_msg(adc2.conversions[2], adc3.conversions[2]);
enqueue_CAN_mcu_load_cells();
// Pots
update_potentiometers_CAN_msg(adc2.conversions[3], adc3.conversions[3]);
enqueue_CAN_mcu_front_potentiometers();
// enqueue_CAN_mcu_rear_potentiometers();

}
10 changes: 5 additions & 5 deletions lib/interfaces/src/WatchdogInterface.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#include "WatchdogInterface.h"

/* Pin mode output to watchdog WD */
void WatchdogInterface::init(const SysTick_s &tick) {
void WatchdogInterface::init(unsigned long curr_millis) {

watchdog_time = tick.millis;
watchdog_time = curr_millis;

}

Expand All @@ -15,11 +15,11 @@ void WatchdogInterface::set_start_state() {
}

/* Toggle watchdog WD to kick dog */
void WatchdogInterface::kick_watchdog(const SysTick_s &tick) {
if ((tick.millis - watchdog_time) > WATCHDOG_KICK_INTERVAL) {
void WatchdogInterface::kick_watchdog(unsigned long curr_millis) {
if ((curr_millis - watchdog_time) > WATCHDOG_KICK_INTERVAL) {
watchdog_state = !watchdog_state;
digitalWrite(pin_watchdog_input_, watchdog_state);
watchdog_time = tick.millis;
watchdog_time = curr_millis;
}
}

Expand Down
2 changes: 1 addition & 1 deletion lib/mock_interfaces/WatchdogInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class WatchdogInterface
void set_start_state();

/* Kick watchdog */
void kick_watchdog(const SysTick_s &tick);
void kick_watchdog(unsigned long curr_millis);

};

Expand Down
2 changes: 1 addition & 1 deletion lib/systems/src/SafetySystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ void SafetySystem::software_shutdown(const SysTick_s &tick) {
ams_->set_state_ok_high(false);

// Kick watchdog every software cycle
wd_->kick_watchdog(tick);
wd_->kick_watchdog(tick.millis);
}

/* Return software ok */
Expand Down
5 changes: 2 additions & 3 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ void setup() {

/* Initialize interface */
main_ecu.init(); // initial shutdown circuit readings,
wd_interface.init(curr_tick); // initialize wd kick time
wd_interface.init(curr_tick.millis); // initialize wd kick time
ams_interface.init(curr_tick.millis); // initialize last heartbeat time

/* Initialize system */
Expand Down Expand Up @@ -159,8 +159,7 @@ void tick_all_interfaces(const SysTick_s& current_system_tick) {

} else if (t.trigger50) {

telem_interface.tick(current_system_tick,
ADC1.get(),
telem_interface.tick(ADC1.get(),
ADC2.get(), // Add MCP3204 functionality for corner board
ADC3.get(), // Add implementation to get()
steering1.convert());
Expand Down
6 changes: 3 additions & 3 deletions test/test_interfaces/AMS_interface_test.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ void test_AMS_heartbeat()
{
//setting arbitrary pin 20
AMSInterface ams_interface(20);
ams_interface.init();
ams_interface.init(millis());
ams_interface.set_start_state();
TEST_ASSERT_EQUAL(true, ams_interface.heartbeat_received());
TEST_ASSERT_EQUAL(true, ams_interface.heartbeat_received(millis()));
delay(20);
TEST_ASSERT_EQUAL(false, ams_interface.heartbeat_received());
TEST_ASSERT_EQUAL(false, ams_interface.heartbeat_received(millis()));
}

0 comments on commit d7b4728

Please sign in to comment.