From d1e43c11b9cb4b6b815258f57ece70862ce4f7aa Mon Sep 17 00:00:00 2001 From: MalteSchm Date: Sat, 1 Apr 2023 14:43:24 +0200 Subject: [PATCH] Run Huawei code only when enabled --- src/Huawei_can.cpp | 15 ++++++++++++++- src/WebApi_Huawei.cpp | 16 +++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Huawei_can.cpp b/src/Huawei_can.cpp index 1f4c495fb..30b190641 100644 --- a/src/Huawei_can.cpp +++ b/src/Huawei_can.cpp @@ -4,6 +4,7 @@ */ #include "Huawei_can.h" #include "MessageOutput.h" +#include "Configuration.h" #include #include @@ -14,6 +15,12 @@ HuaweiCanClass HuaweiCan; void HuaweiCanClass::init(uint8_t huawei_miso, uint8_t huawei_mosi, uint8_t huawei_clk, uint8_t huawei_irq, uint8_t huawei_cs, uint8_t huawei_power) { + const CONFIG_T& config = Configuration.get(); + + if (!config.Huawei_Enabled) { + return; + } + spi = new SPIClass(VSPI); spi->begin(huawei_clk, huawei_miso, huawei_mosi, huawei_cs); pinMode(huawei_cs, OUTPUT); @@ -145,7 +152,13 @@ void HuaweiCanClass::loop() INT32U rxId; unsigned char len = 0; unsigned char rxBuf[8]; - + + const CONFIG_T& config = Configuration.get(); + + if (!config.Huawei_Enabled) { + return; + } + if(!digitalRead(_huawei_irq)) // If CAN_INT pin is low, read receive buffer { CAN->readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s) diff --git a/src/WebApi_Huawei.cpp b/src/WebApi_Huawei.cpp index 1b2cd5b42..981324cc2 100644 --- a/src/WebApi_Huawei.cpp +++ b/src/WebApi_Huawei.cpp @@ -5,6 +5,8 @@ #include "WebApi_Huawei.h" #include "Huawei_can.h" #include "Configuration.h" +#include "MessageOutput.h" +#include "PinMapping.h" #include "WebApi.h" #include "WebApi_errors.h" #include @@ -198,7 +200,7 @@ void WebApiHuaweiClass::onAdminPost(AsyncWebServerRequest* request) if (!WebApi.checkCredentials(request)) { return; } - + AsyncJsonResponse* response = new AsyncJsonResponse(); JsonObject retMsg = response->getRoot(); retMsg[F("type")] = F("warning"); @@ -251,5 +253,17 @@ void WebApiHuaweiClass::onAdminPost(AsyncWebServerRequest* request) response->setLength(); request->send(response); + const PinMapping_t& pin = PinMapping.get(); + if (config.Huawei_Enabled) { + MessageOutput.println(F("Initialize Huawei AC charger interface... ")); + if (PinMapping.isValidHuaweiConfig()) { + MessageOutput.printf("Huawei AC-charger miso = %d, mosi = %d, clk = %d, irq = %d, cs = %d, power_pin = %d\r\n", pin.huawei_miso, pin.huawei_mosi, pin.huawei_clk, pin.huawei_irq, pin.huawei_cs, pin.huawei_power); + HuaweiCan.init(pin.huawei_miso, pin.huawei_mosi, pin.huawei_clk, pin.huawei_irq, pin.huawei_cs, pin.huawei_power); + MessageOutput.println(F("done")); + } else { + MessageOutput.println(F("Invalid pin config")); + } + } + HuaweiCan.setPower(config.Huawei_Enabled); }