diff --git a/include/Huawei_can.h b/include/Huawei_can.h index 83482bb8..fd3ccbe7 100644 --- a/include/Huawei_can.h +++ b/include/Huawei_can.h @@ -89,6 +89,7 @@ private: MCP_CAN *CAN; uint8_t _huawei_irq; uint8_t _huawei_power; + bool initialized = false; }; extern HuaweiCanClass HuaweiCan; diff --git a/src/Huawei_can.cpp b/src/Huawei_can.cpp index ebe97df9..ce186378 100644 --- a/src/Huawei_can.cpp +++ b/src/Huawei_can.cpp @@ -14,6 +14,8 @@ 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) { + initialized = false; + const CONFIG_T& config = Configuration.get(); if (!config.Huawei_Enabled) { @@ -29,13 +31,14 @@ void HuaweiCanClass::init(uint8_t huawei_miso, uint8_t huawei_mosi, uint8_t huaw _huawei_irq = huawei_irq; CAN = new MCP_CAN(spi, huawei_cs); - if(CAN->begin(MCP_ANY, CAN_125KBPS, MCP_8MHZ) == CAN_OK) { - MessageOutput.println("MCP2515 Initialized Successfully!"); - } - else { + if (!CAN->begin(MCP_ANY, CAN_125KBPS, MCP_8MHZ) == CAN_OK) { MessageOutput.println("Error Initializing MCP2515..."); + return; } + MessageOutput.println("MCP2515 Initialized Successfully!"); + initialized = true; + // Change to normal mode to allow messages to be transmitted CAN->setMode(MCP_NORMAL); @@ -154,7 +157,7 @@ void HuaweiCanClass::loop() const CONFIG_T& config = Configuration.get(); - if (!config.Huawei_Enabled) { + if (!config.Huawei_Enabled || !initialized) { return; }