From 7de1ca7d1deef83aa1bccb77414d994ab6317990 Mon Sep 17 00:00:00 2001 From: johannes Date: Mon, 23 Jan 2023 11:32:15 +0100 Subject: [PATCH] Upgraded to later CAN module fixed type --- .gitignore | 6 ++++++ src/charger.cpp | 2 +- src/main.cpp | 3 ++- src/terminal_prj.cpp | 4 ++-- tesla.cbp | 1 + test/test.out | Bin 60840 -> 0 bytes 6 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 .gitignore delete mode 100755 test/test.out diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aef8952 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +obj +*.o +stm32_charger* +linker.map +*.layout +*.out diff --git a/src/charger.cpp b/src/charger.cpp index afa2300..db1c528 100644 --- a/src/charger.cpp +++ b/src/charger.cpp @@ -30,7 +30,7 @@ void DisableAll() DigIo::evseact_out.Clear(); DigIo::ch1act_out.Clear(); DigIo::ch2act_out.Clear(); - DigIo::ch2act_out.Clear(); + DigIo::ch3act_out.Clear(); DigIo::ch1ena_out.Clear(); DigIo::ch2ena_out.Clear(); DigIo::ch3ena_out.Clear(); diff --git a/src/main.cpp b/src/main.cpp index 3dcec61..1ee6361 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -79,11 +79,12 @@ static void MapChargerMessages() { uint32_t dummyId; uint8_t dummyOfs, dummyLen; + int8_t dummyAdd; float dummyGain; bool dummyrx; //check sample value, if it is mapped assume valid CAN map - if (can->FindMap(Param::hwaclim, dummyId, dummyOfs, dummyLen, dummyGain, dummyrx)) return; + if (can->FindMap(Param::hwaclim, dummyId, dummyOfs, dummyLen, dummyGain, dummyAdd, dummyrx)) return; can->Clear(); diff --git a/src/terminal_prj.cpp b/src/terminal_prj.cpp index be95ea0..8b0f533 100644 --- a/src/terminal_prj.cpp +++ b/src/terminal_prj.cpp @@ -60,7 +60,7 @@ extern "C" const TERM_CMD termCmds[] = { NULL, NULL } }; -static void PrintCanMap(Param::PARAM_NUM param, uint32_t canid, uint8_t offset, uint8_t length, float gain, bool rx) +void PrintCanMap(Param::PARAM_NUM param, uint32_t canid, uint8_t offsetBits, uint8_t length, float gain, int8_t offset, bool rx) { const char* name = Param::GetAttrib(param)->name; fprintf(curTerm, "can "); @@ -69,7 +69,7 @@ static void PrintCanMap(Param::PARAM_NUM param, uint32_t canid, uint8_t offset, fprintf(curTerm, "rx "); else fprintf(curTerm, "tx "); - fprintf(curTerm, "%s %d %d %d %f\r\n", name, canid, offset, length, FP_FROMFLT(gain)); + fprintf(curTerm, "%s %d %d %d %f %d\r\n", name, canid, offsetBits, length, FP_FROMFLT(gain), offset); } //cantx param id offset len gain diff --git a/tesla.cbp b/tesla.cbp index b61f75d..bad410e 100644 --- a/tesla.cbp +++ b/tesla.cbp @@ -80,6 +80,7 @@ + diff --git a/test/test.out b/test/test.out deleted file mode 100755 index 6594a494584e9898ba04c2d552eb516e2d85bd7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60840 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