Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
b7715e0
temp commit
acp02 Oct 4, 2025
8f5b1ac
FSM App setup
acp02 Oct 8, 2025
cfbd4d8
FSM Basic Test Cases Setup
acp02 Nov 10, 2025
cf5ec7e
Added more tests
acp02 Nov 16, 2025
041034c
Added More Apps Tests
acp02 Nov 19, 2025
1f55d77
Merge branch 'master' into james/fsm-appsetup
acp02 Nov 19, 2025
9810843
fixed formatting
acp02 Nov 19, 2025
16888c7
Revert one line in CMakeList
acp02 Nov 24, 2025
807954d
Tried fixing merge conflict
acp02 Nov 24, 2025
e05233e
Tried fixing merge conflict 2
acp02 Nov 24, 2025
1425392
tried fixing 3
acp02 Nov 24, 2025
50562b9
tried fixing
acp02 Nov 24, 2025
da8cfdd
tried fixing 4
acp02 Nov 24, 2025
9ec2a86
tried fixing 6
acp02 Nov 24, 2025
33b717f
Tried fixing 8
acp02 Nov 25, 2025
ede72d9
Tried fixing 9
acp02 Nov 25, 2025
9e59f50
tired fixing 10
acp02 Nov 25, 2025
b2c694b
tried fixing 11
acp02 Nov 25, 2025
217f217
tried fixing 12
acp02 Nov 25, 2025
2ceeef7
tried fixing 13
acp02 Nov 25, 2025
f2f006c
tried fixing 14 T_T
acp02 Nov 25, 2025
915e04c
tried fixing 16
acp02 Nov 25, 2025
ecbfdd1
Tried fixing 14
acp02 Nov 29, 2025
5b6b3d7
Tried fixing 15
acp02 Nov 29, 2025
1f3bf61
tried fixing 15
acp02 Nov 29, 2025
a1dc764
tried fixing 16
acp02 Nov 29, 2025
278883c
Tried fixing 17
acp02 Nov 29, 2025
38a7c71
tried fixing 18
acp02 Nov 29, 2025
2e97f5e
tried fixing 20
acp02 Nov 29, 2025
0b2bd40
Tried fixing 20
acp02 Nov 29, 2025
306df1d
tried fixing 21
acp02 Nov 29, 2025
a120468
Updated branch
acp02 Dec 6, 2025
4302acc
HW Adcs Setup
acp02 Dec 29, 2025
449f145
FDCAN HW setup and Fixed ADC bugs
acp02 Dec 31, 2025
a26707f
Gpio setup and format clang
acp02 Jan 3, 2026
c187bf0
Merge branch 'master' into james/fsm-hw-io-setup
acp02 Jan 3, 2026
069d0ad
Merge branch 'master' into james/fsm-hw-io-setup
acp02 Jan 10, 2026
e70e131
SPI Setup and fixed some issues
acp02 Jan 10, 2026
037bf6f
IO Layer roughtly done
acp02 Jan 14, 2026
11f4b7f
Merge branch 'master' into james/fsm-hw-io-setup
acp02 Jan 24, 2026
e2da9e0
IO imu setup
acp02 Jan 25, 2026
886e96b
fixed gpio const
acp02 Jan 25, 2026
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
66 changes: 65 additions & 1 deletion can_bus/hexray/FSM/FSM_alerts.json
Original file line number Diff line number Diff line change
@@ -1 +1,65 @@
{}
{
"warnings_id": 601,
"faults_id": 602,
"warnings_counts_id": 603,
"faults_counts_id": 604,
"info_id": 605,
"info_counts_id": 606,
"info": {
"WatchdogTimeout": {
"id": 600,
"description": "Watchdog timed out."
},
"TxOverflow": {
"id": 601,
"description": "CanTx queue overflowed."
},
"RxOverflow": {
"id": 602,
"description": "CanRx queue overflowed."
},
"SteeringAngleOCSC": {
"id": 603,
"description": "Steering sensor voltage out of acceptable range (OCSC)."
},
"SteeringAngleOutOfRange": {
"id": 604,
"description": "Steering angle out of range."
},
"FrontBrakePressureOCSC": {
"id": 605,
"description": "Front brake pressure sensor voltage out of acceptable range (OCSC)."
},
"LeftSuspensionOCSC": {
"id": 606,
"description": "Left suspension sensor voltage out of acceptable range (OCSC)."
},
"RightSuspensionOCSC": {
"id": 607,
"description": "Right suspension sensor voltage out of acceptable range (OCSC)."
},
"StackOverflow": {
"id": 650,
"description": "An RTOS task stack overflowed on the previous boot cycle."
},
"FrontBrakePressureOutOfRange": {
"id": 611,
"description": "Front brake pressure out of range."
}
},
"warnings": {
"AppsDisagreement": {
"id": 610,
"description": "Conflict between primary and secondary accelerator pedals."
},
"PappsOCSC": {
"id": 608,
"description": "Primary accelerator pedal voltage out of acceptable range (OCSC)."
},
"SappsOCSC": {
"id": 609,
"description": "Secondary accelerator pedal voltage out of acceptable range (OCSC)."
}
},
"faults": {}
}
159 changes: 150 additions & 9 deletions can_bus/hexray/FSM/FSM_tx.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,153 @@
{
"Vitals": {
"msg_id": 600,
"cycle_time": 100,
"description": "FSM vitals message.",
"signals": {
"Heartbeat": {
"bits": 1
}
}
"Vitals": {
"msg_id": 600,
"cycle_time": 100,
"description": "FSM vitals message.",
"signals": {
"Heartbeat": {
"bits": 1
}
}
},
"Steering": {
"msg_id": 610,
"cycle_time": 10,
"description": "Steering angle.",
"signals": {
"SteeringAngle": {
"resolution": 0.1,
"min": -110,
"max": 110,
"unit": "deg"
}
}
},
"Apps": {
"msg_id": 611,
"cycle_time": 10,
"description": "Primary (P) and secondary (S) accelerator percentages.",
"signals": {
"PappsMappedPedalPercentage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"SappsMappedPedalPercentage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"PappsRawPedalPercentage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
},
"SappsRawPedalPercentage": {
"resolution": 0.1,
"min": 0,
"max": 100,
"unit": "%"
}
}
},
"Brake": {
"msg_id": 612,
"cycle_time": 10,
"description": "Front and rear brake pressures",
"signals": {
"FrontBrakePressure": {
"resolution": 1,
"min": 0,
"max": 2500,
"unit": "psi"
},
"BrakeActuated": {
"bits": 1
}
}
},
"Suspension": {
"msg_id": 613,
"cycle_time": 100,
"description": "Suspension travel",
"signals": {
"LeftSuspensionTravel": {
"resolution": 0.1,
"min": 0,
"max": 50,
"unit": "cm"
},
"RightSuspensionTravel": {
"resolution": 0.1,
"min": 0,
"max": 50,
"unit": "cm"
}
}
},
"IMU": {
"msg_id": 614,
"cycle_time": 10,
"description": "IMU sensor data",
"signals": {
"LinearAccelerationX": {
"resolution": 0.1,
"min": -20,
"max": 20,
"unit": "m/s^2"
},
"LinearAccelerationY": {
"resolution": 0.1,
"min": -20,
"max": 20,
"unit": "m/s^2"
},
"LinearAccelerationZ": {
"resolution": 0.1,
"min": -20,
"max": 20,
"unit": "m/s^2"
},
"RollRate": {
"resolution": 0.1,
"min": -20,
"max": 20,
"unit": "deg/s"
},
"PitchRate": {
"resolution": 0.1,
"min": -20,
"max": 20,
"unit": "deg/s"
},
"YawRate": {
"resolution": 0.1,
"min": -20,
"max": 20,
"unit": "deg/s"
}
}
},
"ShdnNodeStatus": {
"msg_id": 615,
"cycle_time": 10,
"description": "FSM Shutdown Node Status",
"signals": {
"BOTSOKStatus": {
"bits": 1
},
"COCKPITOKStatus": {
"bits": 1
},
"FrontLeftILCKInertiaOKStatus": {
"bits": 1
},
"FrontRightILCKOKStatus": {
"bits": 1
}
}
}
}
65 changes: 39 additions & 26 deletions firmware/hexray/FSM/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,30 @@ set(TASKS_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/tasks.cpp")
set(SYSTEM_SRCS ${JOBS_SRC} ${TASKS_SRC})
set(SYSTEM_INCLUDE_DIRS
"${CMAKE_CURRENT_SOURCE_DIR}/src"
# "${CMAKE_CURRENT_SOURCE_DIR}/boot"
#"${CMAKE_CURRENT_SOURCE_DIR}/boot"
)

file(GLOB_RECURSE APP_SRCS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/app/*.c")
list(APPEND APP_SRCS)
file(GLOB_RECURSE APP_SRCS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/app/*.cpp")
list(APPEND APP_SRCS
"${SHARED_APP_INCLUDE_DIR}/app_signal.c"
"${SHARED_APP_INCLUDE_DIR}/app_shdnLoopNode.c"
"${SHARED_APP_INCLUDE_DIR}/app_timer.c"
"${SHARED_APP_INCLUDE_DIR}/app_rangeCheck.c"
)
set(APP_INCLUDE_DIRS
# "${CMAKE_CURRENT_SOURCE_DIR}/src/app"
"${SHARED_APP_INCLUDE_DIR}" "${SHARED_APP_INCLUDE_DIR_CPP}"
"${CMAKE_CURRENT_SOURCE_DIR}/src/app"
"${SHARED_APP_INCLUDE_DIR}"
"${SHARED_APP_INCLUDE_DIR_CPP}"
)

file(GLOB_RECURSE IO_SRCS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/io/*.c")
list(APPEND IO_SRCS)
file(GLOB_RECURSE IO_SRCS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/io/*.cpp")
# list(APPEND IO_SRCS
# "${SHARED_IO_INCLUDE_DIR}/io_apps.c"
# )
set(IO_INCLUDE_DIRS
# "${CMAKE_CURRENT_SOURCE_DIR}/src/io"
"${SHARED_IO_INCLUDE_DIR}" "${SHARED_IO_INCLUDE_DIR_CPP}"
"${CMAKE_CURRENT_SOURCE_DIR}/src/io"
"${SHARED_IO_INCLUDE_DIR}"
"${SHARED_IO_INCLUDE_DIR_CPP}"
)

file(GLOB_RECURSE IO_SRCS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/io/*.c")
Expand All @@ -32,14 +41,15 @@ list(APPEND IO_SRCS
)

file(GLOB_RECURSE HW_SRCS
"${CMAKE_CURRENT_SOURCE_DIR}/src/hw/*.c"
"${CMAKE_CURRENT_SOURCE_DIR}/src/hw/*.cpp"
)
list(APPEND HW_SRCS
"${SHARED_HW_INCLUDE_DIR_CPP}/hw_error.cpp"
)
set(HW_INCLUDE_DIRS
# "${CMAKE_CURRENT_SOURCE_DIR}/src/hw"
"${SHARED_HW_INCLUDE_DIR}" "${SHARED_HW_INCLUDE_DIR_CPP}"
"${CMAKE_CURRENT_SOURCE_DIR}/src/hw"
"${SHARED_HW_INCLUDE_DIR}"
"${SHARED_HW_INCLUDE_DIR_CPP}"
)

# chimera sources
Expand Down Expand Up @@ -67,8 +77,16 @@ if ("${TARGET}" STREQUAL "binary")
"stm32h5xx_hal_pwr_ex.c"
"stm32h5xx_hal_cortex.c"
"stm32h5xx_hal_exti.c"
"stm32h5xx_hal_adc.c"
"stm32h5xx_hal_adc_ex.c"
"stm32h5xx_hal_gpio.c"
"stm32h5xx_hal_tim.c"
"stm32h5xx_hal_tim_ex.c"
"stm32h5xx_hal_i2c.c"
"stm32h5xx_hal_i2c_ex.c"
"stm32h5xx_hal_spi.c"
"stm32h5xx_hal_spi_ex.c"
"stm32h5xx_hal_fdcan.c"
)
stm32h562xx_cube_library(
"hexray_FSM_stm32"
Expand Down Expand Up @@ -98,10 +116,16 @@ if ("${TARGET}" STREQUAL "binary")
target_link_libraries("hexray_FSM_chimera.elf" PRIVATE "hexray_FSM_stm32")
elseif ("${TARGET}" STREQUAL "test")
file(GLOB_RECURSE TEST_SRCS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/test/*.cpp")
set(SRCS ${APP_SRCS} ${JOBS_SRC} ${TEST_SRCS})
set(FAKE_SRCS
"${SHARED_FAKES_DIR}/io_imuQuintuna.cpp"
"${SHARED_FAKES_DIR}/io_time.cpp"
)
set(SRCS ${APP_SRCS} ${JOBS_SRC} ${TEST_SRCS} ${FAKE_SRCS})
set(INCLUDE_DIRS
# "${CMAKE_CURRENT_SOURCE_DIR}/test"
${APP_INCLUDE_DIRS} ${IO_INCLUDE_DIRS} ${TEST_INCLUDE_DIRS} ${SYSTEM_INCLUDE_DIRS} ${SHARED_UTIL_INCLUDE_DIR_CPP}
${APP_INCLUDE_DIRS} ${IO_INCLUDE_DIRS} ${TEST_INCLUDE_DIRS}
${SYSTEM_INCLUDE_DIRS} ${SHARED_UTIL_INCLUDE_DIR_CPP}
${SHARED_UTIL_INCLUDE_DIR} ${SHARED_FAKES_DIR}
)
compile_gtest_executable(
"hexray_FSM_test"
Expand All @@ -121,16 +145,5 @@ elseif ("${TARGET}" STREQUAL "test")
"${CMAKE_CURRENT_BINARY_DIR}/app"
)

# FakeIO
set(HEADERS_TO_FAKE
)

file(GLOB TEST_IO_HDRS "${CMAKE_CURRENT_SOURCE_DIR}/src/io/*.h")
list(APPEND HEADERS_TO_FAKE ${TEST_IO_HDRS})
create_fake_library(
"hexray_FSM_fakes"
"${HEADERS_TO_FAKE}"
)

target_link_libraries("hexray_FSM_test" PRIVATE "hexray_FSM_fakes" "hexray_FSM_commit_info" "hexray_FSM_jsoncan")
target_link_libraries("hexray_FSM_test" PRIVATE "hexray_FSM_commit_info" "hexray_FSM_jsoncan")
endif ()
Loading
Loading