try resend on errors

This commit is contained in:
Meydin87
2023-06-04 12:00:19 +02:00
parent 25865027f7
commit 8141386359

View File

@@ -2,7 +2,7 @@
#include <mcp2515.h>; #include <mcp2515.h>;
const byte SoftwareVersionHigh = 3; const byte SoftwareVersionHigh = 3;
const byte SoftwareVersionLow = 0; const byte SoftwareVersionLow = 1;
const byte HardwareVersionHigh = 6; const byte HardwareVersionHigh = 6;
const byte HardwareVersionLow = 0; const byte HardwareVersionLow = 0;
const uint32_t HELP_PACKAGE_CAN_ID = 0xFFFF; const uint32_t HELP_PACKAGE_CAN_ID = 0xFFFF;
@@ -268,30 +268,31 @@ void loop()
{ {
if (mcp2515_0.readMessage(&_frame) == MCP2515::ERROR_OK) if (mcp2515_0.readMessage(&_frame) == MCP2515::ERROR_OK)
{ {
mcp2515_1.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_2.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_1, &_frame);
mcp2515_3.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_2, &_frame);
DoSendCanPkg(&mcp2515_3, &_frame);
HandleFrame(&_frame); HandleFrame(&_frame);
} }
if (mcp2515_1.readMessage(&_frame) == MCP2515::ERROR_OK) if (mcp2515_1.readMessage(&_frame) == MCP2515::ERROR_OK)
{ {
mcp2515_0.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_0, &_frame);
mcp2515_2.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_2, &_frame);
mcp2515_3.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_3, &_frame);
HandleFrame(&_frame); HandleFrame(&_frame);
} }
if (mcp2515_2.readMessage(&_frame) == MCP2515::ERROR_OK) if (mcp2515_2.readMessage(&_frame) == MCP2515::ERROR_OK)
{ {
mcp2515_0.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_0, &_frame);
mcp2515_1.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_1, &_frame);
mcp2515_3.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_3, &_frame);
HandleFrame(&_frame); HandleFrame(&_frame);
} }
if (mcp2515_3.readMessage(&_frame) == MCP2515::ERROR_OK) if (mcp2515_3.readMessage(&_frame) == MCP2515::ERROR_OK)
{ {
mcp2515_0.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_0, &_frame);
mcp2515_1.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_1, &_frame);
mcp2515_2.sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(&mcp2515_2, &_frame);;
HandleFrame(&_frame); HandleFrame(&_frame);
} }
} }
@@ -471,7 +472,7 @@ void SendSerialPackage(MCP2515 *interface)
_frame.data[1] = SoftwareVersionLow; _frame.data[1] = SoftwareVersionLow;
_frame.data[2] = HardwareVersionHigh; _frame.data[2] = HardwareVersionHigh;
_frame.data[3] = HardwareVersionLow; _frame.data[3] = HardwareVersionLow;
interface->sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(interface, &_frame);
} }
void SendSwitchedTriggeredCanPackage(MCP2515 *interface, byte pinId, int state) void SendSwitchedTriggeredCanPackage(MCP2515 *interface, byte pinId, int state)
@@ -480,7 +481,7 @@ void SendSwitchedTriggeredCanPackage(MCP2515 *interface, byte pinId, int state)
_frame.can_dlc = 2; _frame.can_dlc = 2;
_frame.data[0] = pinId; _frame.data[0] = pinId;
_frame.data[1] = state; _frame.data[1] = state;
interface->sendMessage(MCP2515::TXB1, &_frame); DoSendCanPkg(interface, &_frame);
} }
@@ -492,9 +493,21 @@ void SendDoTriggerSwitchCanPackage(MCP2515 *interface, uint16_t targetCanId, byt
_frame.data[1] = targetCanId & 0xFF; _frame.data[1] = targetCanId & 0xFF;
_frame.data[2] = pinId; _frame.data[2] = pinId;
_frame.data[3] = state; _frame.data[3] = state;
interface->sendMessage(MCP2515::TXB1, &_frame);
DoSendCanPkg(interface, &_frame);
} }
void DoSendCanPkg(MCP2515 *interface, can_frame *frame)
{
// ToggleDebug();
byte cnt = 0;
while (interface->sendMessage(&_frame)) {
cnt++;
if (cnt > 10) return;
}
}
void SendDebugCanPackage(MCP2515 *interface, int16_t *data, int len) void SendDebugCanPackage(MCP2515 *interface, int16_t *data, int len)
{ {
can_frame frame = can_frame(); can_frame frame = can_frame();
@@ -510,5 +523,5 @@ void SendDebugCanPackage(MCP2515 *interface, int16_t *data, int len)
frame.data[2 * i + 1] = ((byte[])data)[2 * i]; frame.data[2 * i + 1] = ((byte[])data)[2 * i];
} }
interface->sendMessage(MCP2515::TXB1, &frame); DoSendCanPkg(interface, &frame);
} }