Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/development' into battery_webi…
Browse files Browse the repository at this point in the history
…nterface
  • Loading branch information
MalteSchm committed Apr 2, 2023
2 parents a4053dc + 4de043f commit 6b85b8d
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 47 deletions.
2 changes: 1 addition & 1 deletion include/Huawei_can.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class HuaweiCanClass {
MCP_CAN *CAN;
uint8_t _huawei_irq;
uint8_t _huawei_power;

bool initialized = false;
};

extern HuaweiCanClass HuaweiCan;
4 changes: 2 additions & 2 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ build_flags = ${env.build_flags}
-DHOYMILES_PIN_CE=4
-DHOYMILES_PIN_CS=5
-DVICTRON_PIN_TX=21
-DVICTRON_PIN_RX=22
-DVICTRON_PIN_RX=22
-DPYLONTECH_PIN_RX=27
-DPYLONTECH_PIN_TX=14
-DHUAWEI_PIN_MISO=12
Expand Down Expand Up @@ -180,4 +180,4 @@ build_flags = ${env.build_flags}
-DHOYMILES_PIN_SCLK=12
-DHOYMILES_PIN_CS=10
-DHOYMILES_PIN_IRQ=4
-DHOYMILES_PIN_CE=5
-DHOYMILES_PIN_CE=5
72 changes: 36 additions & 36 deletions src/Huawei_can.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,37 @@ 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();
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);
digitalWrite(huawei_cs, HIGH);
if (!config.Huawei_Enabled) {
return;
}

pinMode(huawei_irq, INPUT_PULLUP);
_huawei_irq = huawei_irq;
spi = new SPIClass(VSPI);
spi->begin(huawei_clk, huawei_miso, huawei_mosi, huawei_cs);
pinMode(huawei_cs, OUTPUT);
digitalWrite(huawei_cs, HIGH);

CAN = new MCP_CAN(spi, huawei_cs);
if(CAN->begin(MCP_ANY, CAN_125KBPS, MCP_8MHZ) == CAN_OK) {
MessageOutput.println("MCP2515 Initialized Successfully!");
}
else {
MessageOutput.println("Error Initializing MCP2515...");
}
pinMode(huawei_irq, INPUT_PULLUP);
_huawei_irq = huawei_irq;

CAN->setMode(MCP_NORMAL); // Change to normal mode to allow messages to be transmitted
CAN = new MCP_CAN(spi, huawei_cs);
if (!CAN->begin(MCP_ANY, CAN_125KBPS, MCP_8MHZ) == CAN_OK) {
MessageOutput.println("Error Initializing MCP2515...");
return;
}

MessageOutput.println("MCP2515 Initialized Successfully!");
initialized = true;

pinMode(huawei_power, OUTPUT);
digitalWrite(huawei_power,HIGH);
_huawei_power = huawei_power;
// Change to normal mode to allow messages to be transmitted
CAN->setMode(MCP_NORMAL);

pinMode(huawei_power, OUTPUT);
digitalWrite(huawei_power, HIGH);
_huawei_power = huawei_power;
}

RectifierParameters_t * HuaweiCanClass::get()
Expand All @@ -60,13 +62,12 @@ uint8_t data[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void HuaweiCanClass::sendRequest()
{
if (previousMillis < millis()) {

// Send extended message
byte sndStat = CAN->sendMsgBuf(0x108040FE, 1, 8, data);
if(sndStat == CAN_OK){
MessageOutput.println("Message Sent Successfully!");
if(sndStat == CAN_OK) {
MessageOutput.println("Message Sent Successfully!");
} else {
MessageOutput.println("Error Sending Message...");
MessageOutput.println("Error Sending Message...");
}

previousMillis += 5000;
Expand Down Expand Up @@ -96,7 +97,8 @@ void HuaweiCanClass::onReceive(uint8_t* frame, uint8_t len)

case R48xx_DATA_OUTPUT_POWER:
_rp.output_power = value / 1024.0;
lastUpdate = millis(); // We'll only update last update on the important params
// We'll only update last update on the important params
lastUpdate = millis();
break;

case R48xx_DATA_EFFICIENCY:
Expand Down Expand Up @@ -155,12 +157,12 @@ void HuaweiCanClass::loop()

const CONFIG_T& config = Configuration.get();

if (!config.Huawei_Enabled) {
if (!config.Huawei_Enabled || !initialized) {
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)

if((rxId & 0x80000000) == 0x80000000) { // Determine if ID is standard (11 bits) or extended (29 bits)
Expand Down Expand Up @@ -191,15 +193,13 @@ void HuaweiCanClass::setValue(float in, uint8_t parameterType)

// Send extended message
byte sndStat = CAN->sendMsgBuf(0x108180FE, 1, 8, data);
if(sndStat == CAN_OK){
MessageOutput.println("Message Sent Successfully!");
if (sndStat == CAN_OK) {
MessageOutput.println("Message Sent Successfully!");
} else {
MessageOutput.println("Error Sending Message...");
MessageOutput.println("Error Sending Message...");
}
}

void HuaweiCanClass::setPower(bool power) {
digitalWrite(_huawei_power, !power);
digitalWrite(_huawei_power, !power);
}


16 changes: 8 additions & 8 deletions src/WebApi_Huawei.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -255,14 +255,14 @@ void WebApiHuaweiClass::onAdminPost(AsyncWebServerRequest* request)

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"));
}
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);
Expand Down

0 comments on commit 6b85b8d

Please sign in to comment.