Skip to content

Commit f8c8132

Browse files
Merge branch 'develop' into performance-regen-v2
2 parents 96f5eaa + 87b4815 commit f8c8132

File tree

4 files changed

+80
-39
lines changed

4 files changed

+80
-39
lines changed

Core/Inc/cerberus_conf.h

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,20 @@
6767
#define WATCHDOG_Pin GPIO_PIN_15
6868
#define WATCHDOG_GPIO_Port GPIOB
6969

70-
#define CANID_TEMP_SENSOR 0x004
71-
#define CANID_TORQUE_MSG 0x005
72-
#define CANID_OUTBOUND_MSG 0xA55
73-
#define CANID_FUSE 0x111
74-
#define CANID_SHUTDOWN_LOOP 0x123
75-
#define CANID_IMU_ACCEL 0x506
76-
#define CANID_IMU_GYRO 0x507
77-
#define CANID_NERO_MSG 0x501
78-
#define CANID_FAULT_MSG 0x502
79-
#define CANID_LV_MONITOR 0x503
80-
#define CANID_PEDALS_MSG 0x504
81-
#define CANID_PDU_CURRENT 0x508
82-
#define CANID_PUMP_SENSORS 0x509
83-
#define CANID_EXPANDER_DEBUG 0x50A
70+
#define CANID_TEMP_SENSOR 0x004
71+
#define CANID_TORQUE_MSG 0x005
72+
#define CANID_OUTBOUND_MSG 0xA55
73+
#define CANID_FUSE 0x111
74+
#define CANID_SHUTDOWN_LOOP 0x123
75+
#define CANID_IMU_ACCEL 0x506
76+
#define CANID_IMU_GYRO 0x507
77+
#define CANID_NERO_MSG 0x501
78+
#define CANID_FAULT_MSG 0x502
79+
#define CANID_LV_MONITOR 0x503
80+
#define CANID_PEDALS_VOLTS_MSG 0x504
81+
#define CAN_ID_PEDALS_NORM_MSG 0x505
82+
#define CANID_PDU_CURRENT 0x508
83+
#define CANID_PUMP_SENSORS 0x509
84+
#define CANID_EXPANDER_DEBUG 0x50A
8485
// Reserved for MPU debug message, see yaml for format
8586
#define CANID_EXTRA_MSG 0x701

Core/Src/main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,7 @@ struct __attribute__((__packed__)) git_hash_data {
803803
*/
804804
void send_git_version_message()
805805
{
806+
/*
806807
const struct git_hash_data git_hash_data2 = { GIT_SHORTHASH,
807808
GIT_AUTHORHASH };
808809
const struct git_version_data git_version_data2 = {
@@ -816,6 +817,7 @@ void send_git_version_message()
816817
memcpy(&msg2.data, &git_hash_data2, sizeof(git_hash_data2));
817818
818819
queue_can_msg(msg1);
820+
*/
819821
//queue_can_msg(msg2);
820822
}
821823
/* USER CODE END 4 */

Core/Src/pedals.c

Lines changed: 62 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,15 @@ static bool brake_pressed = false;
5656
static osMutexId_t brake_state_mut;
5757
static osMutexAttr_t brake_mutex_attributes;
5858

59+
typedef struct {
60+
float accel1_volts;
61+
float accel2_volts;
62+
float brake1_volts;
63+
float brake2_volts;
64+
float accel_norm;
65+
float brake_norm;
66+
} pedal_data_t;
67+
5968
bool get_brake_state()
6069
{
6170
bool temp;
@@ -295,35 +304,55 @@ bool calc_brake_faults(float brake1, float brake2)
295304
*/
296305
void send_pedal_data(void *arg)
297306
{
298-
uint32_t *adc_data = (uint32_t *)arg;
307+
pedal_data_t *pedal_vals = (pedal_data_t *)arg;
308+
309+
can_msg_t pedals_volts_msg = { .id = CANID_PEDALS_VOLTS_MSG,
310+
.len = 8,
311+
.data = { 0 } };
299312

300-
can_msg_t pedals_msg = { .id = CANID_PEDALS_MSG,
301-
.len = 8,
302-
.data = { 0 } };
313+
can_msg_t pedals_norm_msg = { .id = CAN_ID_PEDALS_NORM_MSG,
314+
.len = 4,
315+
.data = { 0 } };
303316

304317
struct __attribute__((__packed__)) {
305318
uint16_t accel_1;
306319
uint16_t accel_2;
307320
uint16_t brake_1;
308321
uint16_t brake_2;
309-
} voltage_data;
310-
311-
voltage_data.accel_1 =
312-
(uint16_t)(adc_to_volts(adc_data[ACCELPIN_1]) * 100);
313-
voltage_data.accel_2 =
314-
(uint16_t)(adc_to_volts(adc_data[ACCELPIN_2]) * 100);
315-
voltage_data.brake_1 =
316-
(uint16_t)(adc_to_volts(adc_data[BRAKEPIN_1]) * 100);
317-
voltage_data.brake_2 =
318-
(uint16_t)(adc_to_volts(adc_data[BRAKEPIN_2]) * 100);
319-
320-
endian_swap(&voltage_data.accel_1, sizeof(voltage_data.accel_1));
321-
endian_swap(&voltage_data.accel_2, sizeof(voltage_data.accel_2));
322-
endian_swap(&voltage_data.brake_1, sizeof(voltage_data.brake_1));
323-
endian_swap(&voltage_data.brake_2, sizeof(voltage_data.brake_2));
324-
325-
memcpy(pedals_msg.data, &voltage_data, pedals_msg.len);
326-
queue_can_msg(pedals_msg);
322+
} pedal_volts_data;
323+
324+
struct __attribute((__packed__)) {
325+
uint16_t accel_norm;
326+
uint16_t brake_norm;
327+
} pedal_norm_data;
328+
329+
pedal_volts_data.accel_1 = (uint16_t)(pedal_vals->accel1_volts * 100);
330+
pedal_volts_data.accel_2 = (uint16_t)(pedal_vals->accel2_volts * 100);
331+
pedal_volts_data.brake_1 = (uint16_t)(pedal_vals->brake1_volts * 100);
332+
pedal_volts_data.brake_2 = (uint16_t)(pedal_vals->brake2_volts * 100);
333+
334+
endian_swap(&pedal_volts_data.accel_1,
335+
sizeof(pedal_volts_data.accel_1));
336+
endian_swap(&pedal_volts_data.accel_2,
337+
sizeof(pedal_volts_data.accel_2));
338+
endian_swap(&pedal_volts_data.brake_1,
339+
sizeof(pedal_volts_data.brake_1));
340+
endian_swap(&pedal_volts_data.brake_2,
341+
sizeof(pedal_volts_data.brake_2));
342+
343+
pedal_norm_data.accel_norm = (uint16_t)(pedal_vals->accel_norm * 100);
344+
pedal_norm_data.brake_norm = (uint16_t)(pedal_vals->brake_norm * 100);
345+
346+
endian_swap(&pedal_norm_data.accel_norm,
347+
sizeof(pedal_norm_data.accel_norm));
348+
endian_swap(&pedal_norm_data.brake_norm,
349+
sizeof(pedal_norm_data.brake_norm));
350+
351+
memcpy(pedals_volts_msg.data, &pedal_volts_data, pedals_volts_msg.len);
352+
queue_can_msg(pedals_volts_msg);
353+
354+
memcpy(pedals_norm_msg.data, &pedal_norm_data, pedals_norm_msg.len);
355+
queue_can_msg(pedals_norm_msg);
327356
}
328357

329358
/**
@@ -603,9 +632,11 @@ void vProcessPedals(void *pv_params)
603632

604633
free(args);
605634

635+
pedal_data_t pedal_data;
636+
606637
uint32_t adc_data[4];
607-
osTimerId_t send_pedal_data_timer =
608-
osTimerNew(&send_pedal_data, osTimerPeriodic, adc_data, NULL);
638+
osTimerId_t send_pedal_data_timer = osTimerNew(
639+
&send_pedal_data, osTimerPeriodic, &pedal_data, NULL);
609640

610641
/* Send CAN messages with raw pedal readings, we do not care if it fails*/
611642
osTimerStart(send_pedal_data_timer, 100);
@@ -656,6 +687,13 @@ void vProcessPedals(void *pv_params)
656687
adc_to_volts(brake_avg), 0, MAX_VOLTS_UNSCALED);
657688
float accel_value = (accel1_norm + accel2_norm) / 2;
658689

690+
pedal_data.accel1_volts = accel1_volts;
691+
pedal_data.accel2_volts = accel2_volts;
692+
pedal_data.brake1_volts = brake1_volts;
693+
pedal_data.brake2_volts = brake2_volts;
694+
pedal_data.accel_norm = accel_value;
695+
pedal_data.brake_norm = brake_value;
696+
659697
/* Turn brakelight on or off */
660698
osMutexAcquire(brake_state_mut, osWaitForever);
661699
if (brake_value > PEDAL_BRAKE_THRESH) {

0 commit comments

Comments
 (0)