Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ECU/Application/Inc/CANutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@
void ECU_CAN_Send(GRCAN_BUS_ID bus, GRCAN_NODE_ID destNode, GRCAN_MSG_ID messageID, void *data, uint32_t size);
void ECU_CAN_Send_DTI(GRCAN_CUSTOM_ID msgID, void *data, uint32_t size);
void SendECUStateDataOverCAN(ECU_StateData *stateData);
void SendECUAnalogDataOverCAN(ECU_StateData *stateData);

#endif
4 changes: 3 additions & 1 deletion ECU/Application/Inc/StateData.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include "GRCAN_MSG_DATA.h"
#include "StateMachine.h"
#include "ecu_can.h"
#include "can.h"

#ifndef _STATEDATA_H_
#define _STATEDATA_H_
Expand Down Expand Up @@ -87,7 +87,9 @@ typedef volatile struct ECU_StateData {
uint8_t glv_soc;
uint8_t acu_error_warning_bits;
uint8_t inverter_fault_map;
bool ts_active_button_press_interrupt;
bool ts_active_button_pressed;
bool rtd_button_press_interrupt;
bool rtd_button_pressed;
bool ir_plus;
bool ir_minus;
Expand Down
2 changes: 1 addition & 1 deletion ECU/Application/Inc/StateTicks.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "StateData.h"
#include "StateMachine.h"
#include "adc.h"
#include "ecu_can.h"
#include "can.h"

#ifndef _STATE_TICKS_H_
#define _STATE_TICKS_H_
Expand Down
10 changes: 6 additions & 4 deletions ECU/Application/Inc/StateUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ uint32_t MillisecondsSinceBoot(void);
#define BRAKE_F_MAX 4095 // TODO: need to be determined FIXME: Rename better
#define BRAKE_R_MIN 0 // TODO: need to be determined FIXME: Rename better
#define BRAKE_R_MAX 4095 // TODO: need to be determined FIXME: Rename better
#define THROTTLE_MIN_1 0 // TODO: need to be determined
#define THROTTLE_MAX_1 4095 // TODO: need to be determined
#define THROTTLE_MIN_2 0 // TODO: need to be determined
#define THROTTLE_MAX_2 4095 // TODO: need to be determined
#define THROTTLE_MIN_1 306 // TODO: need to be determined
#define THROTTLE_MAX_1 3704 // TODO: need to be determined
#define THROTTLE_MIN_2 336 // TODO: need to be determined
#define THROTTLE_MAX_2 3794 // TODO: need to be determined
#define BSE_MAX 4096.0f
#define BSE_DEADZONE 1.2f
#define MAX_BSE_FAILURE_TIME 100
Expand Down Expand Up @@ -54,5 +54,7 @@ float CalcAccPedalTravel(volatile const ECU_StateData *stateData);
bool APPS_Plausible(volatile const ECU_StateData *stateData);
bool BSE_Plausible(volatile const ECU_StateData *stateData);
bool vehicle_is_moving(volatile const ECU_StateData *stateData);
/* Disable inverter for both DTI and Custom */
void disable_inverter(void);

#endif
140 changes: 0 additions & 140 deletions ECU/Application/Inc/ecu_can.h

This file was deleted.

18 changes: 0 additions & 18 deletions ECU/Application/Inc/ecu_can_platform_deps.h

This file was deleted.

10 changes: 4 additions & 6 deletions ECU/Application/Src/CANdler.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,17 +110,15 @@ void ECU_CAN_MessageHandler(ECU_StateData *state_data, GRCAN_BUS_ID bus_id, GRCA

// LET IT BE KNOWN: these things are LSB FIRST, TODO: I'll get it right later
if (state_data->ecu_state == GR_GLV_ON) {
state_data->ts_active_button_pressed = dash_data->button_flags & 1;
state_data->ts_active_button_press_interrupt = dash_data->button_flags & 1;
} else {
state_data->ts_active_button_pressed = (dash_data->button_flags >> 2) & 1;
state_data->ts_active_button_press_interrupt = (dash_data->button_flags >> 2) & 1;
}

if (state_data->ecu_state == GR_PRECHARGE_COMPLETE) {
state_data->rtd_button_pressed = (dash_data->button_flags >> 1) & 1;
state_data->rtd_button_press_interrupt = (dash_data->button_flags >> 1) & 1;
} else if (state_data->ecu_state == GR_DRIVE_ACTIVE) {
state_data->rtd_button_pressed = (dash_data->button_flags >> 3) & 1;
} else {
state_data->rtd_button_pressed = false;
state_data->rtd_button_press_interrupt = (dash_data->button_flags >> 3) & 1;
}

break;
Expand Down
37 changes: 29 additions & 8 deletions ECU/Application/Src/CANutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include "StateData.h"
#include "StateTicks.h"
#include "StateUtils.h"
#include "ecu_can.h"
#include "can.h"
#include "main.h"
#include "stm32g4xx_hal_fdcan.h"
#include "string.h"
Expand All @@ -33,7 +33,7 @@ void ECU_CAN_Send(GRCAN_BUS_ID bus, GRCAN_NODE_ID destNode, GRCAN_MSG_ID message
.IdType = FDCAN_EXTENDED_ID,
.TxFrameType = FDCAN_DATA_FRAME,
.ErrorStateIndicator = FDCAN_ESI_ACTIVE,
.DataLength = size,
.DataLength = BytesToCANDLC(size),
.BitRateSwitch = FDCAN_BRS_OFF,
.TxEventFifoControl = FDCAN_NO_TX_EVENTS,
.MessageMarker = 0,
Expand Down Expand Up @@ -78,17 +78,20 @@ void ECU_CAN_Send_DTI(GRCAN_CUSTOM_ID msgID, void *data, uint32_t size)
TxHeader.Identifier = msgID;
TxHeader.DataLength = size;

TxHeader.IdType = FDCAN_EXTENDED_ID;

TxHeader.FDFormat = FDCAN_CLASSIC_CAN;

FDCANTxMessage msg = {0};
msg.tx_header = TxHeader;

for (uint32_t i = 0; i < size; i++) {
msg.data[size - i - 1] = ((uint8_t *)data)[i];
uint8_t temp;
for (uint16_t i = 0; i < size / 2; ++i) {
temp = ((uint8_t *)data)[i];
((uint8_t *)data)[i] = ((uint8_t *)data)[size - i - 1];
((uint8_t *)data)[size - i - 1] = temp;
}

memcpy(&(msg.data), data, size);

// can_send(primary_can, &msg);
can_enqueue(stateLump.primary_can, &msg);
}
Expand Down Expand Up @@ -116,9 +119,27 @@ void SendECUStateDataOverCAN(ECU_StateData *stateData)
.RRWheelRPM = (uint16_t)(stateData->rr_wheel_rpm * 10 + 32768),
.RLWheelRPM = (uint16_t)(stateData->rl_wheel_rpm * 10 + 32768)};

// LOGOMATIC("Sending ECU State Data over CAN\n");

ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_ALL, GRCAN_ECU_STATUS_1, (void *)&messages.ECUStatusMsgOne, sizeof(messages.ECUStatusMsgOne));
ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_ALL, GRCAN_ECU_STATUS_2, (void *)&messages.ECUStatusMsgTwo, sizeof(messages.ECUStatusMsgTwo));
ECU_CAN_Send(GRCAN_BUS_PRIMARY, GRCAN_ALL, GRCAN_ECU_STATUS_3, (void *)&messages.ECUStatusMsgThree, sizeof(messages.ECUStatusMsgThree));
}

void SendECUAnalogDataOverCAN(ECU_StateData *stateData)
{
uint32_t millis_since_boot = MillisecondsSinceBoot();

static uint32_t last_can_tcm_request_millis = 0;

if (millis_since_boot - last_can_tcm_request_millis > 100) {
GRCAN_ECU_ANALOG_DATA_MSG message = {.bspd_signal = stateData->bspd_signal,
.bse_signal = stateData->bse_signal,
.apps_1_signal = stateData->APPS1_Signal,
.apps_2_signal = stateData->APPS2_Signal,
.brakeline_f_signal = stateData->Brake_F_Signal,
.brakeline_r_signal = stateData->Brake_R_Signal,
.steering_angle_signal = stateData->steering_angle_signal,
.aux_signal = stateData->aux_signal};
ECU_CAN_Send(GRCAN_BUS_DATA, GRCAN_TCM, GRCAN_ECU_ANALOG_DATA, &message, sizeof(message));
last_can_tcm_request_millis = millis_since_boot;
}
}
2 changes: 1 addition & 1 deletion ECU/Application/Src/Lights.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#include "StateUtils.h"
#include "adc.h"
#include "bitManipulations.h"
#include "ecu_can.h"
#include "can.h"
#include "main.h"
#include "stm32g4xx_ll_gpio.h"

Expand Down
Loading
Loading