Run Huawei code only when enabled

This commit is contained in:
MalteSchm 2023-04-01 14:43:24 +02:00
parent 1f6301c2c0
commit d1e43c11b9
2 changed files with 29 additions and 2 deletions

View File

@ -4,6 +4,7 @@
*/ */
#include "Huawei_can.h" #include "Huawei_can.h"
#include "MessageOutput.h" #include "MessageOutput.h"
#include "Configuration.h"
#include <SPI.h> #include <SPI.h>
#include <mcp_can.h> #include <mcp_can.h>
@ -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) 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 = new SPIClass(VSPI);
spi->begin(huawei_clk, huawei_miso, huawei_mosi, huawei_cs); spi->begin(huawei_clk, huawei_miso, huawei_mosi, huawei_cs);
pinMode(huawei_cs, OUTPUT); pinMode(huawei_cs, OUTPUT);
@ -145,7 +152,13 @@ void HuaweiCanClass::loop()
INT32U rxId; INT32U rxId;
unsigned char len = 0; unsigned char len = 0;
unsigned char rxBuf[8]; 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 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) CAN->readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)

View File

@ -5,6 +5,8 @@
#include "WebApi_Huawei.h" #include "WebApi_Huawei.h"
#include "Huawei_can.h" #include "Huawei_can.h"
#include "Configuration.h" #include "Configuration.h"
#include "MessageOutput.h"
#include "PinMapping.h"
#include "WebApi.h" #include "WebApi.h"
#include "WebApi_errors.h" #include "WebApi_errors.h"
#include <AsyncJson.h> #include <AsyncJson.h>
@ -198,7 +200,7 @@ void WebApiHuaweiClass::onAdminPost(AsyncWebServerRequest* request)
if (!WebApi.checkCredentials(request)) { if (!WebApi.checkCredentials(request)) {
return; return;
} }
AsyncJsonResponse* response = new AsyncJsonResponse(); AsyncJsonResponse* response = new AsyncJsonResponse();
JsonObject retMsg = response->getRoot(); JsonObject retMsg = response->getRoot();
retMsg[F("type")] = F("warning"); retMsg[F("type")] = F("warning");
@ -251,5 +253,17 @@ void WebApiHuaweiClass::onAdminPost(AsyncWebServerRequest* request)
response->setLength(); response->setLength();
request->send(response); 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); HuaweiCan.setPower(config.Huawei_Enabled);
} }