From a071e2a168269361e138f48af33771e940607082 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sun, 28 Nov 2021 11:59:26 -0800 Subject: [PATCH] verbose CAN bits picker (#3628) * verbose bits picker * s --- firmware/controllers/can/can_verbose.cpp | 15 ++++++++------- firmware/hw_layer/drivers/can/can_msg_tx.h | 6 +++--- firmware/integration/rusefi_config.txt | 2 +- firmware/tunerstudio/rusefi.input | 1 + 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/firmware/controllers/can/can_verbose.cpp b/firmware/controllers/can/can_verbose.cpp index 8e1e944279..722b5fa770 100644 --- a/firmware/controllers/can/can_verbose.cpp +++ b/firmware/controllers/can/can_verbose.cpp @@ -146,14 +146,15 @@ static void populateFrame(Fueling2& msg) { void sendCanVerbose() { auto base = engineConfiguration->verboseCanBaseAddress; + auto isExt = engineConfiguration->rusefiVerbose29b; - transmitStruct (base + 0); - transmitStruct (base + 1); - transmitStruct (base + CAN_PEDAL_TPS_OFFSET); - transmitStruct (base + CAN_SENSOR_1_OFFSET); - transmitStruct (base + 4); - transmitStruct (base + 5); - transmitStruct (base + 6); + transmitStruct (base + 0, isExt); + transmitStruct (base + 1, isExt); + transmitStruct (base + CAN_PEDAL_TPS_OFFSET, isExt); + transmitStruct (base + CAN_SENSOR_1_OFFSET, isExt); + transmitStruct (base + 4, isExt); + transmitStruct (base + 5, isExt); + transmitStruct (base + 6, isExt); } #endif // EFI_CAN_SUPPORT diff --git a/firmware/hw_layer/drivers/can/can_msg_tx.h b/firmware/hw_layer/drivers/can/can_msg_tx.h index e075424dc3..3422d0b042 100644 --- a/firmware/hw_layer/drivers/can/can_msg_tx.h +++ b/firmware/hw_layer/drivers/can/can_msg_tx.h @@ -82,7 +82,7 @@ class CanTxTyped final : public CanTxMessage #endif // EFI_CAN_SUPPORT public: - explicit CanTxTyped(uint32_t eid) : CanTxMessage(eid, sizeof(TData)) { } + explicit CanTxTyped(uint32_t id, bool isExtended) : CanTxMessage(id, sizeof(TData), isExtended) { } #if EFI_CAN_SUPPORT /** @@ -103,9 +103,9 @@ public: }; template -void transmitStruct(uint32_t eid) +void transmitStruct(uint32_t id, bool isExtended) { - CanTxTyped frame(eid); + CanTxTyped frame(id, isExtended); // Destruction of an instance of CanTxMessage will transmit the message over the wire. // see CanTxMessage::~CanTxMessage() populateFrame(frame.get()); diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 293ca0061f..e139556b7b 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -733,7 +733,7 @@ bit is_enabled_spi_1 bit is_enabled_spi_2 bit is_enabled_spi_3 bit isSdCardEnabled;enable sd/disable sd - bit unused744b4 + bit rusefiVerbose29b,"29 bit","11 bit";+Use 11 bit (standard) or 29 bit (extended) IDs for rusEFI verbose CAN format. bit isEngineControlEnabled bit isHip9011Enabled bit isVerboseAlternator diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 4ef681feee..88d794fe16 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -3191,6 +3191,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" field = "inertia measurement unit", imuType field = "Enable rusEFI CAN broadcast", enableVerboseCanTx field = "rusEFI CAN data base address", verboseCanBaseAddress + field = "rusEFI CAN data address type", rusefiVerbose29b field = "rusEFI CAN data period", canSleepPeriodMs field = "RX pin", canRxPin @@if_ts_show_can_pins field = "TX pin", canTxPin @@if_ts_show_can_pins