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>;
const byte SoftwareVersionHigh = 3;
const byte SoftwareVersionLow = 0;
const byte SoftwareVersionLow = 1;
const byte HardwareVersionHigh = 6;
const byte HardwareVersionLow = 0;
const uint32_t HELP_PACKAGE_CAN_ID = 0xFFFF;
@@ -148,7 +148,7 @@ void setup() {
Rules[0] = Rule();
Rules[0] = Rule();
Rules[0].InitToggleInverse(0x051F, 5, 0x3D2D, 4); // Lichtschalter Wohnzimmer Licht 1
Rules[1] = Rule();
Rules[1].InitToggleInverse(0x051F, 5, 0x3D2D, 3); // Lichtschalter Wohnzimmer Licht 2
@@ -164,34 +164,34 @@ Rules[0] = Rule();
Rules[5].InitToggle(0x0769, 1, 0x9829, 1); //Eingangstür Flur Licht 1
Rules[6] = Rule();
Rules[6].InitSimple(0x051F, 3,0x3D2D, 1); // Licht 1 Wochzimmer Eingangstür
Rules[6].InitSimple(0x051F, 3, 0x3D2D, 1); // Licht 1 Wochzimmer Eingangstür
Rules[7] = Rule();
Rules[7].InitSimple(0x051F, 4,0x3D2D, 2); // Licht 2 Wochzimmer Eingangstür
Rules[7].InitSimple(0x051F, 4, 0x3D2D, 2); // Licht 2 Wochzimmer Eingangstür
Rules[8] = Rule();
Rules[8].InitToggle(0x1177, 1, 0x3D2D, 7); // Licht Papa Büro
Rules[9] = Rule();
Rules[9].InitToggle(0x05A1, 1,0x3D2D, 6); // Flurlicht von Papas Büro
Rules[9].InitToggle(0x05A1, 1, 0x3D2D, 6); // Flurlicht von Papas Büro
Rules[10] = Rule();
Rules[10].InitToggle(0x05A1, 1,0x9829, 1); // Flurlicht von Papas Büro
Rules[10].InitToggle(0x05A1, 1, 0x9829, 1); // Flurlicht von Papas Büro
Rules[11] = Rule();
Rules[11].InitToggle(0x01EF, 1,0x3D2D, 6); // Flurlicht von Papas Büro
Rules[11].InitToggle(0x01EF, 1, 0x3D2D, 6); // Flurlicht von Papas Büro
Rules[12] = Rule();
Rules[12].InitToggle(0x01EF, 1,0x9829, 1); // Flurlicht von Papas Büro#
Rules[12].InitToggle(0x01EF, 1, 0x9829, 1); // Flurlicht von Papas Büro#
Rules[13] = Rule();
Rules[13].InitToggle(0x0196, 3,0x3D2D, 6); // Flurlicht von Papas Büro
Rules[13].InitToggle(0x0196, 3, 0x3D2D, 6); // Flurlicht von Papas Büro
Rules[14] = Rule();
Rules[14].InitToggle(0x0196, 3,0x9829, 1); // Flurlicht von Papas Büro
Rules[14].InitToggle(0x0196, 3, 0x9829, 1); // Flurlicht von Papas Büro
Rules[15] = Rule();
Rules[15].InitToggle(0x0632, 1, 0x9829, 5); // Flurlicht von Papas Büro
delay(10);
delay(10);
MeyPins[0] = PinState();
MeyPins[0].Init(PIN_PC7, (byte) 1);
@@ -254,51 +254,52 @@ delay(10);
}
bool debugState = false;
void ToggleDebug()
{
debugState = debugState^true;
if (debugState)
digitalWrite(PIN_PC1, HIGH);
else
digitalWrite(PIN_PC1, LOW);
}
void ToggleDebug()
{
debugState = debugState ^ true;
if (debugState)
digitalWrite(PIN_PC1, HIGH);
else
digitalWrite(PIN_PC1, LOW);
}
void loop()
{
if (mcp2515_0.readMessage(&_frame) == MCP2515::ERROR_OK)
{
mcp2515_1.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_2.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_3.sendMessage(MCP2515::TXB1, &_frame);
DoSendCanPkg(&mcp2515_1, &_frame);
DoSendCanPkg(&mcp2515_2, &_frame);
DoSendCanPkg(&mcp2515_3, &_frame);
HandleFrame(&_frame);
}
if (mcp2515_1.readMessage(&_frame) == MCP2515::ERROR_OK)
{
mcp2515_0.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_2.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_3.sendMessage(MCP2515::TXB1, &_frame);
DoSendCanPkg(&mcp2515_0, &_frame);
DoSendCanPkg(&mcp2515_2, &_frame);
DoSendCanPkg(&mcp2515_3, &_frame);
HandleFrame(&_frame);
}
if (mcp2515_2.readMessage(&_frame) == MCP2515::ERROR_OK)
{
mcp2515_0.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_1.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_3.sendMessage(MCP2515::TXB1, &_frame);
DoSendCanPkg(&mcp2515_0, &_frame);
DoSendCanPkg(&mcp2515_1, &_frame);
DoSendCanPkg(&mcp2515_3, &_frame);
HandleFrame(&_frame);
}
if (mcp2515_3.readMessage(&_frame) == MCP2515::ERROR_OK)
{
mcp2515_0.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_1.sendMessage(MCP2515::TXB1, &_frame);
mcp2515_2.sendMessage(MCP2515::TXB1, &_frame);
DoSendCanPkg(&mcp2515_0, &_frame);
DoSendCanPkg(&mcp2515_1, &_frame);
DoSendCanPkg(&mcp2515_2, &_frame);;
HandleFrame(&_frame);
}
}
void HandleFrame(can_frame *frame)
{
// ToggleDebug();
// ToggleDebug();
HandleMeyPinTriggeredCanPackage(frame);
HandleTriggerMeypinCanPackage(frame);
// Handle rules needs to be the last call
@@ -316,17 +317,17 @@ void HandleMeyPinTriggeredCanPackage(can_frame *frame)
if (currentPinState == NULL)
{
int16_t test2[3];
test2[0] = 'S';
test2[1] = 'O';
test2[2] = 'S';
// SendDebugCanPackage(&mcp2515_3, test2, sizeof(test2) / sizeof(int16_t));
int16_t test2[3];
test2[0] = 'S';
test2[1] = 'O';
test2[2] = 'S';
// SendDebugCanPackage(&mcp2515_3, test2, sizeof(test2) / sizeof(int16_t));
return;
}
int16_t test[1];
test[0] = remotePinInfos.Count();
// SendDebugCanPackage(&mcp2515_3, test, sizeof(test) / sizeof(int16_t));
// SendDebugCanPackage(&mcp2515_3, test, sizeof(test) / sizeof(int16_t));
currentPinState->setPinState(frame->data[0], frame->data[1]);
@@ -471,7 +472,7 @@ void SendSerialPackage(MCP2515 *interface)
_frame.data[1] = SoftwareVersionLow;
_frame.data[2] = HardwareVersionHigh;
_frame.data[3] = HardwareVersionLow;
interface->sendMessage(MCP2515::TXB1, &_frame);
DoSendCanPkg(interface, &_frame);
}
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.data[0] = pinId;
_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[2] = pinId;
_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)
{
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];
}
interface->sendMessage(MCP2515::TXB1, &frame);
DoSendCanPkg(interface, &frame);
}