added testcases / a bit refactored
This commit is contained in:
@@ -15,9 +15,9 @@ Packages
|
|||||||
---------------------------------
|
---------------------------------
|
||||||
0xF00: HELLO->ADOPT
|
0xF00: HELLO->ADOPT
|
||||||
Payload:
|
Payload:
|
||||||
2 bytes | DeviceId -> DeviceId Explicit
|
|
||||||
2 bytes | Byte -> Software-Version (1.0)
|
2 bytes | Byte -> Software-Version (1.0)
|
||||||
2 bytes | Byte -> Hw Version (4.0
|
2 bytes | Byte -> Hw Version (4.0)
|
||||||
|
2 bytes | DeviceId -> DeviceId Explicit
|
||||||
|
|
||||||
0x050: Input Switch Triggered
|
0x050: Input Switch Triggered
|
||||||
-> Broadcast
|
-> Broadcast
|
||||||
@@ -29,7 +29,7 @@ Payload:
|
|||||||
0x055: Command Set Switch
|
0x055: Command Set Switch
|
||||||
-> Broadcast
|
-> Broadcast
|
||||||
---------------------------------
|
---------------------------------
|
||||||
2 bytes | TargetDeviceId -> The id of the board
|
2 bytes | TargetDeviceId -> The id of the device to set the pin of
|
||||||
1 byte | PinId -> Idof the pin of the board
|
1 byte | PinId -> Idof the pin of the board
|
||||||
1 byte | state -> 1 to swtich on, 0 to switch off
|
1 byte | state -> 1 to swtich on, 0 to switch off
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ void SendVersionPackage(MCP2515 *interface)
|
|||||||
DoSendCanPkg(interface, &toSend);
|
DoSendCanPkg(interface, &toSend);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SendDoTriggerSwitchCanPackage(uint16_t targetCanId, byte pinId, byte state)
|
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state)
|
||||||
{
|
{
|
||||||
can_frame toSend;
|
can_frame toSend;
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ uint32_t CreateCanId(uint16_t commandId);
|
|||||||
void SendVersionPackage(MCP2515 *interface);
|
void SendVersionPackage(MCP2515 *interface);
|
||||||
|
|
||||||
void SendSwitchedTriggeredCanPackage(byte pinId, int state);
|
void SendSwitchedTriggeredCanPackage(byte pinId, int state);
|
||||||
void SendDoTriggerSwitchCanPackage(uint16_t targetCanId, byte pinId, byte state);
|
void BroadcastTriggerMeyPinCanPackage(uint16_t targetCanId, byte pinId, byte state);
|
||||||
|
|
||||||
void DoSendCanPkg(can_frame *frame);
|
void DoSendCanPkg(can_frame *frame);
|
||||||
void DoSendCanPkg(MCP2515 *interface, can_frame *frame);
|
void DoSendCanPkg(MCP2515 *interface, can_frame *frame);
|
||||||
|
|||||||
@@ -71,20 +71,27 @@ void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule)
|
|||||||
if (rule->toggle)
|
if (rule->toggle)
|
||||||
pinState = (currentPinState->getPinState(rule->targetMeyPinId) ^ true);
|
pinState = (currentPinState->getPinState(rule->targetMeyPinId) ^ true);
|
||||||
|
|
||||||
|
BroadcastTriggerMeyPinCanPackage(rule->targetDevId, rule->targetMeyPinId, pinState);
|
||||||
SendDoTriggerSwitchCanPackage(rule->targetDevId, rule->targetMeyPinId, pinState);
|
|
||||||
// //digitalWrite(foundPinId->pin_id, pinState);
|
|
||||||
// //foundPinId->pin_state = pinState;
|
|
||||||
//
|
|
||||||
currentPinState->setPinState(rule->targetMeyPinId, pinState);
|
currentPinState->setPinState(rule->targetMeyPinId, pinState);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HandleTriggered(can_frame *frame)
|
||||||
|
{
|
||||||
|
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
||||||
|
{
|
||||||
|
RemotePinInfo *currentPinState = remotePinInfo.FindOrAdd(GetDeviceId(frame->can_id) );
|
||||||
|
|
||||||
|
if (currentPinState == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
currentPinState->setPinState(frame->data[0], frame->data[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void HandleRules(can_frame *frame)
|
void HandleRules(can_frame *frame)
|
||||||
{
|
{
|
||||||
|
HandleTriggered(frame);
|
||||||
|
|
||||||
if (rules == NULL) return;
|
if (rules == NULL) return;
|
||||||
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
if (GetPackageType(frame->can_id) == SWITCH_TRIGGERED_CAN_ID)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -107,4 +107,5 @@ void AddToggle(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId,
|
|||||||
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
void AddToggleInverse(uint16_t sourceDevId, byte sourceMeyPinId, uint16_t targetDevId, byte targetMeyPinId);
|
||||||
void HandleRules(can_frame *frame);
|
void HandleRules(can_frame *frame);
|
||||||
void PutRule(Rule *rule);
|
void PutRule(Rule *rule);
|
||||||
|
void CheckRule(uint16_t deviceId, uint8_t dt, uint8_t state, Rule *rule);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ void loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
HandleFrame(&incomingCanFrame);
|
HandleFrame(&incomingCanFrame);
|
||||||
HandleRules(&incomingCanFrame);
|
// HandleRules(&incomingCanFrame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
68
Software/Testfälle.txt
Normal file
68
Software/Testfälle.txt
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
Testfälle Meycan Switch
|
||||||
|
|
||||||
|
PreCons for each:
|
||||||
|
GIVEN XX XX is the deviceId of the target device
|
||||||
|
GIVEN YY YY is another device id, which is NOT XX XX
|
||||||
|
GIVEN 2nd CAN Debug Device on another CanBus of switch
|
||||||
|
|
||||||
|
1) A MeyPin can be triggered directly (repeat Test for all MeyPins and each CAN Bus Interface specified)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 01 01 -> (MeyPin1 Should switch to on)
|
||||||
|
THEN The MeyPin 1 should trigger
|
||||||
|
THEN you receive a message 00 50 XX XX | 01 01
|
||||||
|
THEN 2nd device should receive 2 messages
|
||||||
|
* 00 50 XX XX | 01 01
|
||||||
|
* 00 55 11 11 | XX XX 01 01
|
||||||
|
|
||||||
|
1a) A MeyPin trigger is effecltess, if only set
|
||||||
|
GIVEN the above testcast
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 01 01
|
||||||
|
THEN Nothing changed
|
||||||
|
THEN you dont receive a message
|
||||||
|
THEN 2nd device should receive 00 55 11 11 | XX XX 01 01
|
||||||
|
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 01 00 -> (MeyPin1 Should switch to off)
|
||||||
|
THEN The MeyPin 1 should switch to OFF
|
||||||
|
THEN you receive a message 00 50 XX XX | 01 00
|
||||||
|
THEN 2nd device should receive 2 messages
|
||||||
|
* 00 50 XX XX | 01 00
|
||||||
|
* 00 55 11 11 | XX XX 01 00
|
||||||
|
|
||||||
|
|
||||||
|
2) A MeyPin is not triggered, if the device id dont match
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | YY YY 01 01
|
||||||
|
THEN None of the pins of the device triggered
|
||||||
|
THEN you receive no message
|
||||||
|
THEN 2nd device should receive 1 messages
|
||||||
|
* 00 55 11 11 | XX XX 01 01
|
||||||
|
|
||||||
|
|
||||||
|
3) A MeyPin is not triggered, if the Package Type dont match
|
||||||
|
WHEN Send CAN Pkg 50 00 11 11 | YY YY 01 01
|
||||||
|
THEN None of the pins of the device triggered
|
||||||
|
THEN you receive no message
|
||||||
|
THEN 2nd device should receive 1 messages
|
||||||
|
* 50 00 11 11 | XX XX 01 01
|
||||||
|
|
||||||
|
3) A MeyPin is not triggered, if the MeyPin is above 8 (max pins)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 09 01
|
||||||
|
THEN None of the pins of the device triggered
|
||||||
|
THEN you receive no message
|
||||||
|
THEN 2nd device should receive 1 messages
|
||||||
|
* 00 55 11 11 | XX XX 09 01
|
||||||
|
THEN you can execute any other testcase, as the switch didnt crash
|
||||||
|
|
||||||
|
4) All MeyPins can be activated more than 15 minutes in parallel(Activate each port for at least 15 mins)
|
||||||
|
GIVE You have a relais connected to each of the ports
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 01 01 -> (MeyPin1 Should switch to on)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 02 01 -> (MeyPin2 Should switch to on)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 03 01 -> (MeyPin3 Should switch to on)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 04 01 -> (MeyPin4 Should switch to on)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 05 01 -> (MeyPin5 Should switch to on)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 06 01 -> (MeyPin6 Should switch to on)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 07 01 -> (MeyPin7 Should switch to on)
|
||||||
|
WHEN Send CAN Pkg 00 55 11 11 | XX XX 08 01 -> (MeyPin8 Should switch to on)
|
||||||
|
THEN you should only receive the packages from above.
|
||||||
|
THEN you should NOT receive a VersionPackage
|
||||||
|
WHEN you wait 15 Minutes
|
||||||
|
THEN nothing should be send
|
||||||
|
THEN the Pins should not trigger
|
||||||
Reference in New Issue
Block a user