Skip to content
Open
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
47 changes: 47 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Tests

on:
push:
branches: [main]
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
test:
name: Pytest (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.12",]

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
cache-dependency-path: |
scripts/requirements.txt
scripts/tests/requirements.txt

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r scripts/requirements.txt
pip install -r scripts/tests/requirements.txt

- name: Build mock testing libraries
run: |
chmod +x scripts/tests/build_testing_libs.sh
./scripts/tests/build_testing_libs.sh

- name: Run test suite
run: |
PYTHONPATH=scripts/tests python -m pytest -v scripts/tests/
7 changes: 7 additions & 0 deletions firmware/RAMNV1/Core/Inc/ramn_canfd.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,14 @@ RAMN_Bool_t RAMN_FDCAN_IsTXBufferSpaceAvailable(uint8_t payloadSize);
*/
RAMN_Result_t RAMN_FDCAN_SendMessage(const FDCAN_TxHeaderTypeDef* header, const uint8_t* data);

// Origin identifiers for CAN frames (used in MessageMarker / IsFilterMatchingFrame)
#define RAMN_CAN_ORIGIN_BUS 0x00U
#define RAMN_CAN_ORIGIN_HOST 0xA1U
#define RAMN_CAN_ORIGIN_INTERNAL 0x02U

#if defined(TARGET_ECUA)
// Injects a host-originated CAN frame into local RX stream buffer so ECU A internal stacks process it.
RAMN_Result_t RAMN_FDCAN_InjectHostRxMessage(const FDCAN_TxHeaderTypeDef* txHeader, const uint8_t* data);
// Setups the peripheral for communication with ROM FDCAN Bootloader. Cf AN5405.
void RAMN_FDCAN_SetupForSTBootloader(void);
#endif
Expand Down
7 changes: 4 additions & 3 deletions firmware/RAMNV1/Core/Inc/ramn_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,10 @@
// If used with HARDENING, make sure you make the "#" slcan command available again.
//#define START_IN_CLI_MODE

// Define this flag to let ECU A process slcan message that it receives as regular RX messages (and update their value on screen, for example).
// This is useful to demonstrate the impact of CAN fuzzing on ECU A's screen when using ECU A's slcan interface, even though ECU A did not actually receive the fuzzed CAN message (since it was the transmitter).
#define PROCESS_SLCAN_BY_DBC
// Enable PC interaction with ECU A over slcan and gs_usb.
// Injects host-transmitted frames into ECU A's local RX stream buffer (for UDS, J1939, DBC)
// and forwards ECU A's internal transmissions to the host PC over USB.
#define ENABLE_ECUA_HOST_INTERACTION

// Define this flag to enable the USB debugging module.
// Note that it also needs to be activated by a slcan command, or by setting RAMN_DEBUG_ENABLE in ramn_debug.c to True.
Expand Down
37 changes: 35 additions & 2 deletions firmware/RAMNV1/Core/Inc/ramn_j1939.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,23 +89,56 @@
#define J1939_MANUFACTURER_NEBRASKA_TEST 522
#define J1939_MANUFACTURER_DLG_TEST 251

/* Per-ECU primary source address for J1939 Address Claim */
#define J1939_ECUA_IDENTITY 0xEC0A /* Identity number: EC0A */
#define J1939_ECUB_IDENTITY 0xEC0B /* Identity number: EC0B */
#define J1939_ECUC_IDENTITY 0xEC0C /* Identity number: EC0C */
#define J1939_ECUD_IDENTITY 0xEC0D /* Identity number: EC0D */

/* Per-ECU primary source address for J1939 Address Claim and diagnostic routing */
#if defined(TARGET_ECUA)
#define J1939_ECU_SA J1939_SA_HEADWAY_CTRL /* 42 */
#define J1939_ECU_FUNCTION J1939_FUNCTION_HEADWAY_CTRL /* 32 */
#define J1939_ECU_IDENTITY J1939_ECUA_IDENTITY
#define J1939_ECU_MANUFACTURER J1939_MANUFACTURER_NEVADA_TEST
#define J1939_ECU_KWP_SA J1939_ECU_SA
#define J1939_ECU_XCP_SA J1939_ECU_SA
#define J1939_ECU_KWP_XCP_SA J1939_ECU_SA
#elif defined(TARGET_ECUB)
#define J1939_ECU_SA J1939_SA_STEERING_CTRL /* 19 */
#define J1939_ECU_FUNCTION J1939_FUNCTION_STEERING_CTRL /* 16 */
#define J1939_ECU_FUNCTION J1939_FUNCTION_CHASSIS_CTRL /* 52: Chassis Controller */
#define J1939_ECU_IDENTITY J1939_ECUB_IDENTITY
#define J1939_ECU_MANUFACTURER J1939_MANUFACTURER_ISOBUS_TEST
#define J1939_ECU_KWP_SA J1939_ECU_SA
#define J1939_ECU_XCP_SA J1939_ECU_SA
#define J1939_ECU_KWP_XCP_SA J1939_ECU_SA
#elif defined(TARGET_ECUC)
#define J1939_ECU_SA J1939_SA_POWERTRAIN_CTRL /* 90 */
#define J1939_ECU_FUNCTION J1939_FUNCTION_ELECTRIC_POWERTRAIN /* 80 */
#define J1939_ECU_IDENTITY J1939_ECUC_IDENTITY
#define J1939_ECU_MANUFACTURER J1939_MANUFACTURER_NEBRASKA_TEST
#define J1939_ECU_KWP_SA J1939_ECU_SA
#define J1939_ECU_XCP_SA J1939_ECU_SA
#define J1939_ECU_KWP_XCP_SA J1939_ECU_SA
#elif defined(TARGET_ECUD)
#define J1939_ECU_SA J1939_SA_BODY_CTRL /* 33 */
#define J1939_ECU_FUNCTION J1939_FUNCTION_BODY_CTRL /* 26 */
#define J1939_ECU_IDENTITY J1939_ECUD_IDENTITY
#define J1939_ECU_MANUFACTURER J1939_MANUFACTURER_DLG_TEST
#define J1939_ECU_KWP_SA J1939_ECU_SA
#define J1939_ECU_XCP_SA J1939_ECU_SA
#define J1939_ECU_KWP_XCP_SA J1939_ECU_SA
#else
/* Fallback definitions when no TARGET_ECUx macro is defined.
* This branch exists specifically for IDE code assistance / indexers,
* static analysis tools, and standalone / mock compilation units.
* Defaults safely to the primary ECU D (Body Controller) configuration. */
#define J1939_ECU_SA J1939_SA_BODY_CTRL
#define J1939_ECU_FUNCTION J1939_FUNCTION_BODY_CTRL
#define J1939_ECU_IDENTITY J1939_ECUD_IDENTITY
#define J1939_ECU_MANUFACTURER J1939_MANUFACTURER_DLG_TEST
#define J1939_ECU_KWP_SA J1939_ECU_SA
#define J1939_ECU_XCP_SA J1939_ECU_SA
#define J1939_ECU_KWP_XCP_SA J1939_ECU_SA
#endif

/* Proprietary A Payload Definitions */
Expand Down
Loading
Loading