feat(sacn): Slotzahl je Board und vier Settings-Felder
This commit is contained in:
@@ -182,6 +182,60 @@ static void test_erase(void)
|
||||
TEST_ASSERT_FALSE(nl_settings_load(&out));
|
||||
}
|
||||
|
||||
static void test_sacn_defaults(void)
|
||||
{
|
||||
nl_settings_t s;
|
||||
TEST_ASSERT_FALSE(nl_settings_load(&s));
|
||||
TEST_ASSERT_EQUAL_UINT8(1, s.sacn_enabled);
|
||||
TEST_ASSERT_EQUAL_UINT16(1, s.sacn_universe);
|
||||
TEST_ASSERT_EQUAL_UINT16(1, s.sacn_start_slot);
|
||||
TEST_ASSERT_EQUAL_UINT8(0, s.sacn_hold);
|
||||
}
|
||||
|
||||
static void test_sacn_roundtrip(void)
|
||||
{
|
||||
nl_settings_t in = sample("dmx"), out;
|
||||
in.sacn_enabled = 0;
|
||||
in.sacn_universe = 4711;
|
||||
in.sacn_start_slot = 300;
|
||||
in.sacn_hold = 1;
|
||||
TEST_ASSERT_EQUAL_INT(0, nl_settings_save(&in));
|
||||
TEST_ASSERT_TRUE(nl_settings_load(&out));
|
||||
TEST_ASSERT_EQUAL_UINT8(0, out.sacn_enabled);
|
||||
TEST_ASSERT_EQUAL_UINT16(4711, out.sacn_universe);
|
||||
TEST_ASSERT_EQUAL_UINT16(300, out.sacn_start_slot);
|
||||
TEST_ASSERT_EQUAL_UINT8(1, out.sacn_hold);
|
||||
}
|
||||
|
||||
/* Ein Datensatz aus einer Firmware VOR sACN: die vier Felder muessen als echte Vorgaben
|
||||
* zurueckkommen, nicht als Null - sonst waere sACN auf jeder aktualisierten Lampe aus. */
|
||||
static void test_record_without_sacn_gets_defaults(void)
|
||||
{
|
||||
nl_settings_t in = sample("alt"), out;
|
||||
uint32_t crc;
|
||||
nl_settings_save(&in);
|
||||
{
|
||||
uint16_t shorter = (uint16_t)offsetof(nl_settings_t, sacn_enabled);
|
||||
memcpy(&fake_flash_mem[NL_FL_SETTINGS_A + 6], &shorter, 2);
|
||||
crc = nl_crc32(0, &fake_flash_mem[NL_FL_SETTINGS_A], 12 + shorter);
|
||||
memcpy(&fake_flash_mem[NL_FL_SETTINGS_A + 12 + shorter], &crc, 4);
|
||||
}
|
||||
TEST_ASSERT_TRUE(nl_settings_load(&out));
|
||||
TEST_ASSERT_EQUAL_STRING("alt", out.name);
|
||||
TEST_ASSERT_EQUAL_STRING("ninHome", out.wifi_ssid);
|
||||
TEST_ASSERT_EQUAL_UINT8(1, out.sacn_enabled);
|
||||
TEST_ASSERT_EQUAL_UINT16(1, out.sacn_universe);
|
||||
TEST_ASSERT_EQUAL_UINT16(1, out.sacn_start_slot);
|
||||
TEST_ASSERT_EQUAL_UINT8(0, out.sacn_hold);
|
||||
}
|
||||
|
||||
/* Die Satzlaenge muss durch 4 teilbar bleiben, sonst laufen Schreiber und Leser beim CRC
|
||||
* auseinander (siehe NL_SETTINGS_CRC_OFF in nl_settings.c). */
|
||||
static void test_record_size_stays_aligned(void)
|
||||
{
|
||||
TEST_ASSERT_EQUAL_UINT(0, sizeof(nl_settings_t) % 4u);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
UNITY_BEGIN();
|
||||
@@ -196,5 +250,9 @@ int main(void)
|
||||
RUN_TEST(test_ota_pending_default_and_roundtrip);
|
||||
RUN_TEST(test_crc_offset_matches_reader);
|
||||
RUN_TEST(test_erase);
|
||||
RUN_TEST(test_sacn_defaults);
|
||||
RUN_TEST(test_sacn_roundtrip);
|
||||
RUN_TEST(test_record_without_sacn_gets_defaults);
|
||||
RUN_TEST(test_record_size_stays_aligned);
|
||||
return UNITY_END();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user