prepare for I2C LED channels skip

This commit is contained in:
Tester23 2025-09-05 18:58:18 +02:00
parent e85b9a67be
commit 78ce33f01f
5 changed files with 64 additions and 5 deletions

View File

@ -120,11 +120,11 @@ commandResult_t CMD_LEDDriver_Map(const void *context, const char *cmd, const ch
return CMD_RES_NOT_ENOUGH_ARGUMENTS;
}
r = Tokenizer_GetArgIntegerRange(0, 0, 4);
g = Tokenizer_GetArgIntegerRange(1, 0, 4);
b = Tokenizer_GetArgIntegerRange(2, 0, 4);
c = Tokenizer_GetArgIntegerRange(3, 0, 4);
w = Tokenizer_GetArgIntegerRange(4, 0, 4);
r = Tokenizer_GetArgIntegerRange(0, -1, 4);
g = Tokenizer_GetArgIntegerRange(1, -1, 4);
b = Tokenizer_GetArgIntegerRange(2, -1, 4);
c = Tokenizer_GetArgIntegerRange(3, -1, 4);
w = Tokenizer_GetArgIntegerRange(4, -1, 4);
CFG_SetLEDRemap(r, g, b, c, w);

View File

@ -216,6 +216,16 @@ void CFG_SetDefaultLEDRemap(int r, int g, int b, int c, int w) {
CFG_SetLEDRemap(r, g, b, c, w);
}
}
int CFG_CountLEDRemapChannels() {
int r = 0;
for (int i = 0; i < 5; i++) {
int ch = g_cfg.ledRemap.ar[i];
if (ch != 0xff) {
r++;
}
}
return r;
}
const char *CFG_GetWebappRoot(){
return g_cfg.webappRoot;
}

View File

@ -39,6 +39,7 @@ void CFG_SetMQTTPass(const char *s);
const char *CFG_GetWebappRoot();
void CFG_SetLEDRemap(int r, int g, int b, int c, int w);
void CFG_SetDefaultLEDRemap(int r, int g, int b, int c, int w);
int CFG_CountLEDRemapChannels();
int CFG_SetWebappRoot(const char *s);
void CFG_InitAndLoad();
//void CFG_ApplyStartChannelValues();

View File

@ -546,6 +546,52 @@ void Test_LEDDriver_RGBCW() {
SELFTEST_ASSERT_CHANNEL(4, 0);
SELFTEST_ASSERT_CHANNEL(5, 0);
}
void Test_LEDDriver_BP5758_RGBCW() {
// reset whole device
SIM_ClearOBK(0);
Test_FakeHTTPClientPacket_GET("index");
SELFTEST_ASSERT_HTML_REPLY_NOT_CONTAINS("LED RGB Color");
SELFTEST_ASSERT_HTML_REPLY_NOT_CONTAINS("LED Temperature Slider");
CMD_ExecuteCommand("StartDriver BP5758D", 0);
CMD_ExecuteCommand("led_dimmer 100", 0);
CMD_ExecuteCommand("led_temperature 500", 0);
Test_FakeHTTPClientPacket_GET("index");
SELFTEST_ASSERT_HTML_REPLY_CONTAINS("LED RGB Color");
SELFTEST_ASSERT_HTML_REPLY_CONTAINS("LED Temperature Slider");
// Try force flag
CFG_SetFlag(OBK_FLAG_LED_FORCE_MODE_RGB, 1);
Test_FakeHTTPClientPacket_GET("index");
SELFTEST_ASSERT_HTML_REPLY_CONTAINS("LED RGB Color");
SELFTEST_ASSERT_HTML_REPLY_NOT_CONTAINS("LED Temperature Slider");
// Clear force flag
CFG_SetFlag(OBK_FLAG_LED_FORCE_MODE_RGB, 0);
Test_FakeHTTPClientPacket_GET("index");
SELFTEST_ASSERT_HTML_REPLY_CONTAINS("LED RGB Color");
SELFTEST_ASSERT_HTML_REPLY_CONTAINS("LED Temperature Slider");
CMD_ExecuteCommand("LED_Map 0 3 4 1 2", 0);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[0] == 0);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[1] == 3);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[2] == 4);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[3] == 1);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[4] == 2);
CMD_ExecuteCommand("LED_Map -1 -1 -1 1 2", 0);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[0] == 0xff);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[1] == 0xff);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[2] == 0xff);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[3] == 1);
SELFTEST_ASSERT(g_cfg.ledRemap.ar[4] == 2);
Test_FakeHTTPClientPacket_GET("index");
//SELFTEST_ASSERT_HTML_REPLY_NOT_CONTAINS("LED RGB Color");
SELFTEST_ASSERT_HTML_REPLY_CONTAINS("LED Temperature Slider");
}
void Test_LEDDriver_RGB(int firstChannel) {
// reset whole device
SIM_ClearOBK(0);
@ -690,6 +736,7 @@ void Test_LEDDriver() {
Test_LEDDriver_RGB(1);
Test_LEDDriver_RGBCW();
Test_LEDDriver_Palette();
Test_LEDDriver_BP5758_RGBCW();
}
#endif

View File

@ -49,6 +49,7 @@ void SelfTest_Failed(const char *file, const char *function, int line, const cha
#define SELFTEST_ASSERT_INTEGER(current,expected) SELFTEST_ASSERT((expected==current));
#define SELFTEST_ASSERT_HTML_REPLY(expected) SELFTEST_ASSERT((strcmp(Test_GetLastHTMLReply(),expected) == 0));
#define SELFTEST_ASSERT_HTML_REPLY_CONTAINS(expected) SELFTEST_ASSERT((strstr(Test_GetLastHTMLReply(),expected)));
#define SELFTEST_ASSERT_HTML_REPLY_NOT_CONTAINS(expected) SELFTEST_ASSERT(!(strstr(Test_GetLastHTMLReply(),expected)));
#define SELFTEST_ASSERT_HAD_MQTT_PUBLISH_STR(topic, value, bRetain) SELFTEST_ASSERT(SIM_CheckMQTTHistoryForString(topic,value,bRetain));
#define SELFTEST_ASSERT_HAD_MQTT_PUBLISH_FLOAT(topic, value, bRetain) SELFTEST_ASSERT(SIM_CheckMQTTHistoryForFloat(topic,value,bRetain));
#define SELFTEST_ASSERT_FLAG(flag, value) SELFTEST_ASSERT(CFG_HasFlag(flag)==value);