delay_ms 50 test

This commit is contained in:
Tester23 2025-10-18 17:13:37 +02:00
parent 689a97c3c9
commit 3a6d7bcecc
3 changed files with 56 additions and 3 deletions

View File

@ -361,20 +361,22 @@ void EventHandlers_AddEventHandler_String(byte eventCode, int type, const char *
ev->requiredArgument = 0;
ev->requiredArgument2 = 0;
}
void EventHandlers_FireEvent3(byte eventCode, int argument, int argument2, int argument3) {
int EventHandlers_FireEvent3(byte eventCode, int argument, int argument2, int argument3) {
struct eventHandler_s *ev;
ev = g_eventHandlers;
int ran = 0;
while (ev) {
if (eventCode == ev->eventCode) {
if (argument == ev->requiredArgument && argument2 == ev->requiredArgument2 && argument3 == ev->requiredArgument3) {
ADDLOG_INFO(LOG_FEATURE_EVENT, "EventHandlers_FireEvent3: executing command %s", ev->command);
CMD_ExecuteCommand(ev->command, COMMAND_FLAG_SOURCE_SCRIPT);
ran++;
}
}
ev = ev->next;
}
return ran;
}
int EventHandlers_FireEvent2(byte eventCode, int argument, int argument2) {
struct eventHandler_s *ev;

View File

@ -235,7 +235,7 @@ void EventHandlers_FireEvent_String(byte eventCode, const char* argument);
void EventHandlers_FireEvent(byte eventCode, int argument);
int EventHandlers_FireEvent2(byte eventCode, int argument, int argument2);
const char *EventHandlers_GetHandlerCommand2(byte eventCode, int argument, int argument2);
void EventHandlers_FireEvent3(byte eventCode, int argument, int argument2, int argument3);
int EventHandlers_FireEvent3(byte eventCode, int argument, int argument2, int argument3);
// This is more advanced event handler. It will only fire handlers when a variable state changes from one to another.
// For example, you can watch for Voltage from BL0942 to change below 230, and it will fire event only when it becomes below 230.
void EventHandlers_ProcessVariableChange_Integer(byte eventCode, int oldValue, int newValue);

View File

@ -65,6 +65,9 @@ void Test_Commands_Startup() {
SELFTEST_ASSERT(1 == EventHandlers_FireEvent2(CMD_EVENT_IR_NEC, 0xC7EA, 0xF));
SELFTEST_ASSERT(1 == EventHandlers_FireEvent2(CMD_EVENT_IR_NEC, 0xC7EA, 0x10));
SELFTEST_ASSERT(1 == EventHandlers_FireEvent3(CMD_EVENT_IR_NEC, 0xC7EA, 0x17, 0));
SELFTEST_ASSERT(1 == EventHandlers_FireEvent3(CMD_EVENT_IR_NEC, 0xC7EA, 0xF, 0));
SELFTEST_ASSERT(1 == EventHandlers_FireEvent3(CMD_EVENT_IR_NEC, 0xC7EA, 0x10, 0));
}
{
SIM_ShutdownOBK();
@ -95,6 +98,54 @@ void Test_Commands_Startup() {
}
{
SIM_ShutdownOBK();
const char *t = "startDriver IR\n"
"setFlag 1 1\n"
"addEventHandler2 IR_NEC 0xC7EA 0x17 backlog IRSend NEC 0x0 0xA8; delay_ms 50; IRSend NEC 0x0 0xA8; IRSend NEC 0x0 0xA8; addChannel 1 1\n"
"addEventHandler2 IR_NEC 0xC7EA 0xF backlog IRSend NEC 0x0 0x8C; delay_ms 50; IRSend NEC 0x0 0x8C; IRSend NEC 0x0 0x8C; IRSend NEC 0x0 0x8C; IRSend NEC 0x0 0x8C; addChannel 2 1\n"
"addEventHandler2 IR_NEC 0xC7EA 0x10 backlog IRSend NEC 0x0 0x9C; delay_ms 50; IRSend NEC 0x0 0x9C; IRSend NEC 0x0 0x9C; IRSend NEC 0x0 0x9C; addChannel 3 1\n"
"addEventHandler2 IR_NEC 0xC7EA 0x11 backlog IRSend NEC 0x0 0x9D; delay_ms 50; IRSend NEC 0x0 0x9D; IRSend NEC 0x0 0x9D; IRSend NEC 0x0 0x9D; addChannel 4 1\n";
CFG_SetShortStartupCommand(t);
CFG_Save_IfThereArePendingChanges();
// NOTE: THIS WILL RUN STARTUP COMMAND!!!!
SIM_StartOBK(0);
CMD_ExecuteCommand("setChannel 1 0", 0);
SELFTEST_ASSERT_CHANNEL(1, 0);
CMD_ExecuteCommand("setChannel 2 0", 0);
SELFTEST_ASSERT_CHANNEL(2, 0);
CMD_ExecuteCommand("setChannel 3 0", 0);
SELFTEST_ASSERT_CHANNEL(3, 0);
CMD_ExecuteCommand("setChannel 4 0", 0);
SELFTEST_ASSERT_CHANNEL(4, 0);
printf("TEST 0x17: %s\n",
EventHandlers_GetHandlerCommand2(CMD_EVENT_IR_NEC, 0xC7EA, 0x17));
printf("TEST 0xF %s\n",
EventHandlers_GetHandlerCommand2(CMD_EVENT_IR_NEC, 0xC7EA, 0xF));
printf("TEST 0x10 %s\n",
EventHandlers_GetHandlerCommand2(CMD_EVENT_IR_NEC, 0xC7EA, 0x10));
printf("TEST 0x11 %s\n",
EventHandlers_GetHandlerCommand2(CMD_EVENT_IR_NEC, 0xC7EA, 0x11));
SELFTEST_ASSERT(1 == EventHandlers_FireEvent2(CMD_EVENT_IR_NEC, 0xC7EA, 0x17));
SELFTEST_ASSERT(1 == EventHandlers_FireEvent2(CMD_EVENT_IR_NEC, 0xC7EA, 0xF));
SELFTEST_ASSERT(1 == EventHandlers_FireEvent2(CMD_EVENT_IR_NEC, 0xC7EA, 0x10));
SELFTEST_ASSERT(1 == EventHandlers_FireEvent2(CMD_EVENT_IR_NEC, 0xC7EA, 0x11));
// didn't get past delay_ms 50 yet
SELFTEST_ASSERT_CHANNEL(1, 0);
SELFTEST_ASSERT_CHANNEL(2, 0);
SELFTEST_ASSERT_CHANNEL(3, 0);
SELFTEST_ASSERT_CHANNEL(4, 0);
// get past delay_ms 50
Sim_RunMiliseconds(100, false);
SELFTEST_ASSERT_CHANNEL(1, 1);
SELFTEST_ASSERT_CHANNEL(2, 1);
SELFTEST_ASSERT_CHANNEL(3, 1);
SELFTEST_ASSERT_CHANNEL(4, 1);
}
}