Skip to content

Commit

Permalink
Added SNA values to yamcan discrete values. Verify conversion on BMSW
Browse files Browse the repository at this point in the history
  • Loading branch information
JoshLafleur committed Feb 11, 2025
1 parent 331179b commit e39bd4f
Show file tree
Hide file tree
Showing 13 changed files with 60 additions and 53 deletions.
2 changes: 1 addition & 1 deletion components/bms_boss/RTOS/include/FreeRTOSConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ extern uint32_t SystemCoreClock;
extern void HW_TIM_configureRunTimeStatsTimer(void);
extern uint64_t HW_TIM_getBaseTick(void);
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() HW_TIM_configureRunTimeStatsTimer()
#define portGET_RUN_TIME_COUNTER_VALUE() HW_TIM_getBaseTick()
#define portGET_RUN_TIME_COUNTER_VALUE() (uint32_t)HW_TIM_getBaseTick()

#define configSTACK_DEPTH_TYPE UBaseType_t
#define configMINIMAL_STACK_SIZE (256)
Expand Down
12 changes: 11 additions & 1 deletion components/bms_boss/SConscript
Original file line number Diff line number Diff line change
Expand Up @@ -98,13 +98,15 @@ c_flags = [
"-Wno-type-limits",
"-Wno-unused-local-typedefs",
"-Wundef",
"-Wconversion",
# FIXME: When in single quotes outputs to cmdline with ""
"-include", "BuildDefines.h", # Executed one after eachother
]

free_rtos_flags = [
"-Wno-missing-prototypes",
"-Wno-cast-align",
"-Wno-conversion",
]


Expand Down Expand Up @@ -320,6 +322,7 @@ for config_id, config in configs.items():
"-DBYTE_ORDER=_BYTE_ORDER",
"-DLITTLE_ENDIAN=_LITTLE_ENDIAN",
"-Wno-inline",
"-Wno-conversion",
"-Wno-undef",
]
)
Expand Down Expand Up @@ -366,12 +369,19 @@ for config_id, config in configs.items():
# compile UDS source files
objs.extend(compile_objects(uds_env, uds_srcs, variant_dir=variant_dir, target_dir="uds/"))

gen_env = config_env.Clone()
gen_env.Append(
CCFLAGS=[
"-Wno-inline",
"-Wno-conversion",
]
)
gen_srcs = []
for generated_source in generated_sources:
gen_srcs += [generated_dir.File(generated_source)]
objs.extend(
compile_objects(
config_env,
gen_env,
gen_srcs,
variant_dir=variant_dir,
target_dir=variant_dir.Dir("generated/obj"),
Expand Down
2 changes: 1 addition & 1 deletion components/bms_boss/include/CANIO_componentSpecific.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,4 @@ CAN_prechargeContactorState_E CANIO_tx_getContactorState(void);
#define transmit_BMSB_currentLimit (SYS_SFT_checkMCTimeout() == false)
#define set_maxCharge(m,b,n,s) set(m,b,n,s, BMS.pack_charge_limit);
#define set_maxDischarge(m,b,n,s) set(m,b,n,s, BMS.pack_discharge_limit);
#include "TemporaryStubbing.h"
#include "TemporaryStubbing.h"
6 changes: 3 additions & 3 deletions components/bms_boss/include/Utility.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,13 @@ static inline uint16_t u32CountLeadingZeroes(uint32_t x)
// FLAGS
// This should get moved elsewhere at some point
#define FLAG_bits_each 16
#define WORDS_FROM_COUNT(count) (((uint16_t)count + (FLAG_bits_each - 1)) / FLAG_bits_each)
#define WORDS_FROM_COUNT(count) (uint16_t)((count + (FLAG_bits_each - 1)) / FLAG_bits_each)
#define FLAG_GET_WORD(name, flag) (name[(uint16_t)flag / FLAG_bits_each])
#define FLAG_GET_MASK(flag) (1U << ((uint16_t)flag % FLAG_bits_each))

#define FLAG_create(name, size) uint16_t(name)[WORDS_FROM_COUNT(size)]
#define FLAG_set(name, pos) FLAG_GET_WORD(name, pos) |= FLAG_GET_MASK(pos)
#define FLAG_clear(name, pos) FLAG_GET_WORD(name, pos) &= ~FLAG_GET_MASK(pos)
#define FLAG_set(name, pos) FLAG_GET_WORD(name, pos) |= (uint16_t)FLAG_GET_MASK(pos)
#define FLAG_clear(name, pos) FLAG_GET_WORD(name, pos) &= (uint16_t)~FLAG_GET_MASK(pos)
#define FLAG_get(name, pos) ((bool)((FLAG_GET_WORD(name, pos) & FLAG_GET_MASK(pos)) == FLAG_GET_MASK(pos)))
#define FLAG_assign(name, pos, value) \
do { \
Expand Down
12 changes: 6 additions & 6 deletions components/bms_boss/src/CANIO_componentSpecific.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,24 +75,24 @@ uint8_t CANIO_tx_getNLG513ControlByte(void)

CAN_prechargeContactorState_E CANIO_tx_getContactorState(void)
{
CAN_prechargeContactorState_E ret = CAN_PRECHARGECONTACTORSTATE_CONTACTORS_SNA;
CAN_prechargeContactorState_E ret = CAN_PRECHARGECONTACTORSTATE_SNA;

switch (SYS.contacts)
{
case SYS_CONTACTORS_OPEN:
ret = CAN_PRECHARGECONTACTORSTATE_CONTACTORS_OPEN;
ret = CAN_PRECHARGECONTACTORSTATE_OPEN;
break;

case SYS_CONTACTORS_PRECHARGE:
ret = CAN_PRECHARGECONTACTORSTATE_CONTACTORS_PRECHARGE_CLOSED;
ret = CAN_PRECHARGECONTACTORSTATE_PRECHARGE_CLOSED;
break;

case SYS_CONTACTORS_CLOSED:
ret = CAN_PRECHARGECONTACTORSTATE_CONTACTORS_PRECHARGE_HVP_CLOSED;
ret = CAN_PRECHARGECONTACTORSTATE_PRECHARGE_HVP_CLOSED;
break;

case SYS_CONTACTORS_HVP_CLOSED:
ret = CAN_PRECHARGECONTACTORSTATE_CONTACTORS_HVP_CLOSED;
ret = CAN_PRECHARGECONTACTORSTATE_HVP_CLOSED;
break;
}

Expand All @@ -108,4 +108,4 @@ uint8_t CANIO_tx_getElconControlByte(void)
}

return ret;
}
}
10 changes: 5 additions & 5 deletions components/bms_boss/src/Module.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ void Module_1kHz_TSK(void)
}
}

stats[MODULE_1kHz_TASK].total_percentage = ulTaskGetRunTimePercent(NULL);
stats[MODULE_1kHz_TASK].total_percentage = (uint8_t)ulTaskGetRunTimePercent(NULL);
}

/**
Expand All @@ -94,7 +94,7 @@ void Module_100Hz_TSK(void)
}
}

stats[MODULE_100Hz_TASK].total_percentage = ulTaskGetRunTimePercent(NULL);
stats[MODULE_100Hz_TASK].total_percentage = (uint8_t)ulTaskGetRunTimePercent(NULL);
}

/**
Expand All @@ -111,7 +111,7 @@ void Module_10Hz_TSK(void)
}
}

stats[MODULE_10Hz_TASK].total_percentage = ulTaskGetRunTimePercent(NULL);
stats[MODULE_10Hz_TASK].total_percentage = (uint8_t)ulTaskGetRunTimePercent(NULL);
}

/**
Expand All @@ -128,15 +128,15 @@ void Module_1Hz_TSK(void)
}
}

stats[MODULE_1Hz_TASK].total_percentage = ulTaskGetRunTimePercent(NULL);
stats[MODULE_1Hz_TASK].total_percentage = (uint8_t)ulTaskGetRunTimePercent(NULL);
}

/**
* @brief Idle task used by FreeRTOS
*/
void Module_ApplicationIdleHook()
{
stats[MODULE_IDLE_TASK].total_percentage = ulTaskGetRunTimePercent(NULL);
stats[MODULE_IDLE_TASK].total_percentage = (uint8_t)ulTaskGetRunTimePercent(NULL);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion components/bms_boss/src/Utility.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ float32_t ln(float32_t x)
// unsigned int s = (t < 0) ? (-t) : t;
bx = 1065353216 | (bx & 8388607);
x = *(float32_t*)(&bx);
return -1.49278 + (2.11263 + (-0.729104 + 0.10969 * x) * x) * x + 0.6931471806 * t;
return (float32_t)(-1.49278f + (2.11263f + (-0.729104f + 0.10969f * x) * x) * x + 0.6931471806f * (float32_t)t);
}

uint8_t* reverse_bytes(uint8_t* in, uint8_t len)
Expand Down
12 changes: 6 additions & 6 deletions components/bms_worker/include/CANIO_componentSpecific.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@
#define CANIO_UDS_BUFFER_LENGTH 8U
#define CANIO_getTimeMs() (HW_TIM_getTimeMS())

#define set_envFaultFlag(m,b,n,s) set(m,b,n,s, ENV.state == ENV_FAULT)
#define set_envErrorFlag(m, b, n, s) set(m,b,n,s, ENV.state == ENV_ERROR)
#define set_faultFlag(m, b, n, s) set(m,b,n,s, BMS.fault)
#define set_errorFlag(m, b, n, s) set(m,b,n,s, BMS.state == BMS_ERROR)
#define set_envFaultFlag(m,b,n,s) set(m,b,n,s, (ENV.state == ENV_FAULT) ? CAN_FLAG_SET : CAN_FLAG_CLEARED)
#define set_envErrorFlag(m, b, n, s) set(m,b,n,s, (ENV.state == ENV_ERROR) ? CAN_FLAG_SET : CAN_FLAG_CLEARED)
#define set_faultFlag(m, b, n, s) set(m,b,n,s, (BMS.fault) ? CAN_FLAG_SET : CAN_FLAG_CLEARED)
#define set_errorFlag(m, b, n, s) set(m,b,n,s, (BMS.state == BMS_ERROR) ? CAN_FLAG_SET : CAN_FLAG_CLEARED)
#define set_dischargeLimit(m, b, n, s) set(m,b,n,s, BMS.discharge_limit)
#define set_chargeLimit(m, b, n, s) set(m,b,n,s, BMS.charge_limit)
#define set_tempMax(m, b, n, s) set(m,b,n,s, ENV.values.max_temp)
Expand Down Expand Up @@ -87,9 +87,9 @@
#define set_fan1RPM(m, b, n, s) set(m,b,n,s, COOL.rpm[1])
#define set_fan0RPM(m, b, n, s) set(m,b,n,s, COOL.rpm[0])
#define set_coolPct1(m, b, n, s) set(m,b,n,s, COOL.percentage[1])
#define set_coolState1(m, b, n, s) set(m,b,n,s, (COOL.state[1] != COOL_OFF) ? CAN_OUTPUTSTATE_ON : CAN_OUTPUTSTATE_OFF)
#define set_coolState1(m, b, n, s) set(m,b,n,s, (COOL.state[1] != COOL_OFF) ? CAN_DIGITALSTATUS_ON : CAN_DIGITALSTATUS_OFF)
#define set_coolPct0(m, b, n, s) set(m,b,n,s, COOL.percentage[0])
#define set_coolState0(m,b,n,s) set(m,b,n,s, (COOL.state[0] != COOL_OFF) ? CAN_OUTPUTSTATE_ON : CAN_OUTPUTSTATE_OFF)
#define set_coolState0(m,b,n,s) set(m,b,n,s, (COOL.state[0] != COOL_OFF) ? CAN_DIGITALSTATUS_ON : CAN_DIGITALSTATUS_OFF)
#define set_taskUsage1kHz(m,b,n,s) set(m,b,n,s, Module_getTotalRuntimePercentage(MODULE_1kHz_TASK));
#define set_taskUsage100Hz(m,b,n,s) set(m,b,n,s, Module_getTotalRuntimePercentage(MODULE_100Hz_TASK));
#define set_taskUsage10Hz(m,b,n,s) set(m,b,n,s, Module_getTotalRuntimePercentage(MODULE_10Hz_TASK));
Expand Down
2 changes: 1 addition & 1 deletion components/bms_worker/include/Utility.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ static inline uint16_t u32CountLeadingZeroes(uint32_t x)
// FLAGS
// This should get moved elsewhere at some point
#define FLAG_bits_each 16
#define WORDS_FROM_COUNT(count) (((uint16_t)count + (FLAG_bits_each - 1)) / FLAG_bits_each)
#define WORDS_FROM_COUNT(count) (uint16_t)((count + (FLAG_bits_each - 1)) / FLAG_bits_each)
#define FLAG_GET_WORD(name, flag) (name[(uint16_t)flag / FLAG_bits_each])
#define FLAG_GET_MASK(flag) (1U << ((uint16_t)flag % FLAG_bits_each))

Expand Down
4 changes: 2 additions & 2 deletions network/definition/data/components/bmsw/bmsw-signals.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -546,7 +546,7 @@ signals:

coolState1:
description: Fan 1 cooling state
discreteValues: outputState
discreteValues: digitalStatus

coolPct0:
description: Fan 0 Duty Cycle
Expand All @@ -561,7 +561,7 @@ signals:

coolState0:
description: Fan 0 cooling state
discreteValues: outputState
discreteValues: digitalStatus

cellTemp1:
description: Temperature of cell 1
Expand Down
1 change: 0 additions & 1 deletion network/definition/data/components/stw/stw-message.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ messages:
description: "Status of the Steering Wheel switches"
cycleTimeMs: 10
id: 0x500
lengthBytes: 1
sourceBuses: veh
signals:
switch0Status:
Expand Down
12 changes: 6 additions & 6 deletions network/definition/data/components/stw/stw-signals.yaml
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
signals:
switch0Status:
description: "Status of leftmost Steering Wheel switch"
discreteValues: "switchStatus"
discreteValues: "digitalStatus"

switch1Status:
description: "Status of second from leftmost Steering Wheel switch"
discreteValues: "switchStatus"
discreteValues: "digitalStatus"

switch3Status:
description: "Status of second from rightmost Steering Wheel switch"
discreteValues: "switchStatus"
discreteValues: "digitalStatus"

switch4Status:
description: "Status of rightmost Steering Wheel switch"
discreteValues: "switchStatus"
discreteValues: "digitalStatus"

button0Status:
description: "Status of the leftmost Steering Wheel button"
discreteValues: "switchStatus"
discreteValues: "digitalStatus"

button1Status:
description: "Status of the rightmost Steering Wheel button"
discreteValues: "switchStatus"
discreteValues: "digitalStatus"

udsPayload:
unit: ''
Expand Down
36 changes: 17 additions & 19 deletions network/definition/discrete_values.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
outputState:
"OFF": 0
"ON": 1
digitalStatus:
"SNA": 0
"OFF": 1
"ON": 2

pm100dxOutputState:
"OFF": 0
"ON": 1
flag:
"SNA": 0
"CLEARED": 1
"SET": 2

switchStatus:
"OFF": 0
"ON": 1
prechargeContactorState:
"SNA": 0
"OPEN": 1
"PRECHARGE_CLOSED": 2
"PRECHARGE_HVP_CLOSED": 3
"HVP_CLOSED": 4

pm100dxSwitchStatus:
"OFF": 0
Expand All @@ -18,16 +23,9 @@ pm100dxInputStatus:
"FALSE": 0
"TRUE": 1

flag:
"CLEARED": 0
"SET": 1

prechargeContactorState:
"CONTACTORS_SNA": 0
"CONTACTORS_OPEN": 1
"CONTACTORS_PRECHARGE_CLOSED": 2
"CONTACTORS_PRECHARGE_HVP_CLOSED": 3
"CONTACTORS_HVP_CLOSED": 4
pm100dxOutputState:
"OFF": 0
"ON": 1

pm100dxVsmState:
"VSM_START": 0
Expand Down

0 comments on commit e39bd4f

Please sign in to comment.