Final SW Version 8

This commit is contained in:
Meydin87
2023-07-30 17:07:49 +02:00
parent ad72be85b1
commit c8ffe71fca
3 changed files with 52 additions and 25 deletions

View File

@@ -6,6 +6,9 @@
PinState *MeyPin = NULL; PinState *MeyPin = NULL;
CanInterface *CanBusses = NULL; CanInterface *CanBusses = NULL;
uint16_t myDeviceId; uint16_t myDeviceId;
byte _deviceTypeId = 0;
byte _majorHardwareVersion = 0;
byte _minorHardwareVersion = 0;
void SetupMeyPin(PinState *state) void SetupMeyPin(PinState *state)
{ {
@@ -27,8 +30,11 @@ void ForEachCanInterface(void (*handle)(MCP2515 *canInterace))
CanBusses->ForEachInterface(handle); CanBusses->ForEachInterface(handle);
} }
void SetupMeyCan() void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId)
{ {
_majorHardwareVersion = majorHardwareVersion;
_minorHardwareVersion = minorHardwareVersion;
_deviceTypeId = deviceTypeId;
CalculateMyDeviceId(); CalculateMyDeviceId();
if (MeyPin != NULL); if (MeyPin != NULL);
@@ -192,14 +198,13 @@ void SendVersionPackage(MCP2515 *interface)
{ {
can_frame toSend; can_frame toSend;
toSend.can_id = CreateCanId(HELP_PACKAGE_CAN_ID); toSend.can_id = CreateCanId(HELP_PACKAGE_CAN_ID);
toSend.can_dlc = 6; toSend.can_dlc = 5;
toSend.data[0] = SOFTWARE_VERSION_HIGH; toSend.data[0] = SOFTWARE_VERSION_HIGH;
toSend.data[1] = SOFTWARE_VERSION_LOW; toSend.data[1] = SOFTWARE_VERSION_LOW;
toSend.data[2] = HARDWARE_VERSION_HIGH; toSend.data[2] = _majorHardwareVersion;
toSend.data[3] = HARDWARE_VERSION_LOW; toSend.data[3] = _minorHardwareVersion;
toSend.data[4] = (myDeviceId >> 8) & 0xFF; toSend.data[4] = _deviceTypeId;
toSend.data[5] = myDeviceId & 0xFF;
DoSendCanPkg(interface, &toSend); DoSendCanPkg(interface, &toSend);
} }

View File

@@ -24,7 +24,7 @@ typedef struct CanInterface
handle(this->interface, frame); handle(this->interface, frame);
if (this->next != NULL) if (this->next != NULL)
this->next->ForEach(handle, frame); this->next->ForEach(handle, frame, exclude);
} }
void AddCanInterface(CanInterface *newCanInterface) void AddCanInterface(CanInterface *newCanInterface)
@@ -99,7 +99,7 @@ const uint16_t TRIGGER_SWITCH_CAN_ID = 0x0055;
void AddCanInterface(byte pinId); void AddCanInterface(byte pinId);
void SetMeyPin(byte index, byte meyPinId, byte pinId); void SetMeyPin(byte index, byte meyPinId, byte pinId);
void SetupMeyCan(); void SetupMeyCan(byte majorHardwareVersion, byte minorHardwareVersion, byte deviceTypeId);
void ForEachCanInterface(void (*handle)(MCP2515 *canInterace)); void ForEachCanInterface(void (*handle)(MCP2515 *canInterace));
bool ReadPin(PinState *state); bool ReadPin(PinState *state);

View File

@@ -3,27 +3,48 @@
#include "MeyCan.h"; #include "MeyCan.h";
#include "MeyRule.h"; #include "MeyRule.h";
const int16_t SW_FLUR = 0XD238;
const int16_t SW_ANBAU = 0x87A9;
const int16_t SW_WOHNZIMMER = 0x87CA;
const int16_t UP_WOHNZIMMER_TUER = 0x051F;
const int16_t UP_WOHNZIMMER_TERASSE = 0x05df;
const int16_t UP_FLUR_EINGANG = 0x0769;
const int16_t UP_BUERO = 0x1177;
const int16_t UP_FLUR_BUERO = 0x05A1;
const int16_t UP_FLUR_KUECHE = 0x01EF;
const int16_t UP_KINDERZIMMER = 0x0196;
const int16_t UP_FLUR_ELTERN = 0x0632;
const int16_t UP_KUECHE_FLUR = 0x07F5;
const int16_t UP_KUECHE_BAD = 0x0585;
struct can_frame incomingCanFrame; struct can_frame incomingCanFrame;
void setup() { void setup() {
SPI.begin(); SPI.begin();
AddToggleInverse(UP_WOHNZIMMER_TUER, 5, SW_WOHNZIMMER, 4); // Lichtschalter Wohnzimmer Licht 1
AddToggleInverse(UP_WOHNZIMMER_TUER, 5, SW_WOHNZIMMER, 3); // Lichtschalter Wohnzimmer Licht 2
AddToggle(UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 4); // Licht 1 von Terassenschalter
AddToggle(UP_WOHNZIMMER_TERASSE, 1, SW_WOHNZIMMER, 3); // Licht 2 von Terassenschalter
AddToggle(UP_FLUR_EINGANG, 1, SW_WOHNZIMMER, 6); // Eingangstür Flur Licht 2
AddToggle(UP_FLUR_EINGANG, 1, SW_FLUR, 1); //Eingangstür Flur Licht 1
AddSimple(UP_WOHNZIMMER_TUER, 3, SW_WOHNZIMMER, 1); // Licht 1 Wochzimmer Eingangstür
AddSimple(UP_WOHNZIMMER_TUER, 4, SW_WOHNZIMMER, 2); // Licht 2 Wochzimmer Eingangstür
AddToggle(UP_BUERO, 1, SW_WOHNZIMMER, 7); // Licht Papa Büro
AddToggle(UP_FLUR_BUERO, 1, SW_WOHNZIMMER, 6); // Flurlicht von Papas Büro
AddToggle(UP_FLUR_BUERO, 1, SW_FLUR, 1); // Flurlicht von Papas Büro
AddToggle(UP_FLUR_KUECHE, 1, SW_WOHNZIMMER, 6); // Flurlicht von Papas Büro
AddToggle(UP_FLUR_KUECHE, 1, SW_FLUR, 1); // Flurlicht von Papas Büro
AddToggle(UP_KINDERZIMMER, 3, SW_WOHNZIMMER, 6); // Flurlicht von Papas Büro
AddToggle(UP_KINDERZIMMER, 3, SW_FLUR, 1); // Flurlicht von Papas Büro
AddToggle(UP_FLUR_ELTERN, 1, SW_FLUR, 5); // Flurlicht von Papas Büro
AddToggleInverse(0x051F, 5, 0x3D2D, 4); // Lichtschalter Wohnzimmer Licht 1 AddToggle(UP_KUECHE_FLUR, 1, SW_ANBAU, 2);
AddToggleInverse(0x051F, 5, 0x3D2D, 3); // Lichtschalter Wohnzimmer Licht 2 AddToggle(UP_KUECHE_FLUR, 2, SW_ANBAU, 3);
AddToggle(0x05df, 1, 0x3D2D, 4); // Licht 1 von Terassenschalter AddToggle(UP_KUECHE_BAD, 1, SW_ANBAU, 2);
AddToggle(0x05df, 1, 0x3D2D, 3); // Licht 2 von Terassenschalter AddSimple(UP_KUECHE_BAD, 3, SW_ANBAU, 1);
AddToggle(0x0769, 1, 0x3D2D, 6); // Eingangstür Flur Licht 2
AddToggle(0x0769, 1, 0x9829, 1); //Eingangstür Flur Licht 1
AddSimple(0x051F, 3, 0x3D2D, 1); // Licht 1 Wochzimmer Eingangstür
AddSimple(0x051F, 4, 0x3D2D, 2); // Licht 2 Wochzimmer Eingangstür
AddToggle(0x1177, 1, 0x3D2D, 7); // Licht Papa Büro
AddToggle(0x05A1, 1, 0x3D2D, 6); // Flurlicht von Papas Büro
AddToggle(0x05A1, 1, 0x9829, 1); // Flurlicht von Papas Büro
AddToggle(0x01EF, 1, 0x3D2D, 6); // Flurlicht von Papas Büro
AddToggle(0x01EF, 1, 0x9829, 1); // Flurlicht von Papas Büro
AddToggle(0x0196, 3, 0x3D2D, 6); // Flurlicht von Papas Büro
AddToggle(0x0196, 3, 0x9829, 1); // Flurlicht von Papas Büro
AddToggle(0x0632, 1, 0x9829, 5); // Flurlicht von Papas Büro
_PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7); _PROTECTED_WRITE(CLKCTRL.MCLKCTRLA, CLKCTRL.MCLKCTRLA | 1 << 7);
@@ -44,7 +65,7 @@ void setup() {
AddCanInterface(PIN_PB1); AddCanInterface(PIN_PB1);
SetupMeyCan(); SetupMeyCan(7, 0, 1);
} }
@@ -58,5 +79,6 @@ void CheckCanInterface(MCP2515 *interface)
if (interface->readMessage(&incomingCanFrame) == MCP2515::ERROR_OK) if (interface->readMessage(&incomingCanFrame) == MCP2515::ERROR_OK)
{ {
HandleFrame(&incomingCanFrame, interface); HandleFrame(&incomingCanFrame, interface);
HandleRules(&incomingCanFrame);
} }
} }