105 lines
3.3 KiB
C
105 lines
3.3 KiB
C
#include "fake_api_ctx.h"
|
|
|
|
#include <string.h>
|
|
|
|
#include "light/nl_boot_state.h"
|
|
|
|
nl_light_state_t fake_state;
|
|
nl_settings_t fake_settings;
|
|
nl_sys_info_t fake_info;
|
|
nl_light_change_t fake_last_change;
|
|
nl_ctrl_err_t fake_apply_result;
|
|
int fake_apply_calls, fake_save_calls, fake_save_result;
|
|
int fake_wifi_calls, fake_wifi_result;
|
|
char fake_wifi_ssid[NL_SSID_LEN], fake_wifi_pass[NL_PASS_LEN];
|
|
int fake_factory_calls, fake_ping_calls, fake_fw_result;
|
|
char fake_fw_url[256];
|
|
bool fake_open;
|
|
|
|
static void get_state(nl_light_state_t *out) { *out = fake_state; }
|
|
|
|
static nl_ctrl_err_t apply(const nl_light_change_t *c)
|
|
{
|
|
fake_apply_calls++;
|
|
fake_last_change = *c;
|
|
if (fake_apply_result != NL_CTRL_OK)
|
|
return fake_apply_result;
|
|
if (c->has_on) fake_state.on = c->on;
|
|
if (c->has_brightness) fake_state.brightness = c->brightness;
|
|
if (c->has_color) { fake_state.r = c->r; fake_state.g = c->g; fake_state.b = c->b; fake_state.mode = NL_MODE_COLOR; }
|
|
if (c->has_ct) { fake_state.ct = c->ct; fake_state.mode = NL_MODE_WHITE; }
|
|
return NL_CTRL_OK;
|
|
}
|
|
|
|
static void get_settings(nl_settings_t *out) { *out = fake_settings; }
|
|
|
|
static int save_settings(const nl_settings_t *s)
|
|
{
|
|
fake_save_calls++;
|
|
if (fake_save_result == 0)
|
|
fake_settings = *s;
|
|
return fake_save_result;
|
|
}
|
|
|
|
static int wifi_configure(const char *ssid, const char *pass)
|
|
{
|
|
fake_wifi_calls++;
|
|
strncpy(fake_wifi_ssid, ssid, sizeof fake_wifi_ssid - 1);
|
|
strncpy(fake_wifi_pass, pass, sizeof fake_wifi_pass - 1);
|
|
return fake_wifi_result;
|
|
}
|
|
|
|
static bool open_access(void) { return fake_open; }
|
|
static void get_info(nl_sys_info_t *out) { *out = fake_info; }
|
|
static void factory_reset(void) { fake_factory_calls++; }
|
|
static void ping(void) { fake_ping_calls++; }
|
|
|
|
static int fw_update(const char *url)
|
|
{
|
|
strncpy(fake_fw_url, url, sizeof fake_fw_url - 1);
|
|
return fake_fw_result;
|
|
}
|
|
|
|
nl_api_ctx_t fake_ctx;
|
|
|
|
void fake_api_reset(const char *board_id)
|
|
{
|
|
const nl_board_t *b = nl_board_find(board_id);
|
|
fake_state = nl_boot_default_state(b);
|
|
nl_settings_defaults(&fake_settings);
|
|
strcpy(fake_settings.name, "Wohnzimmer");
|
|
strcpy(fake_settings.wifi_ssid, "ninHome");
|
|
memset(&fake_info, 0, sizeof fake_info);
|
|
strcpy(fake_info.mac, "28:6d:cd:5c:68:1f");
|
|
strcpy(fake_info.name, "Wohnzimmer");
|
|
fake_info.wifi_mode = "sta";
|
|
strcpy(fake_info.ssid, "ninHome");
|
|
fake_info.rssi = -58;
|
|
strcpy(fake_info.ip, "192.168.1.50");
|
|
fake_info.uptime_s = 123;
|
|
fake_info.free_heap = 40000;
|
|
memset(&fake_last_change, 0, sizeof fake_last_change);
|
|
fake_apply_result = NL_CTRL_OK;
|
|
fake_apply_calls = fake_save_calls = fake_save_result = 0;
|
|
fake_wifi_calls = fake_wifi_result = 0;
|
|
fake_wifi_ssid[0] = fake_wifi_pass[0] = '\0';
|
|
fake_factory_calls = fake_ping_calls = 0;
|
|
fake_fw_result = -1;
|
|
fake_fw_url[0] = '\0';
|
|
fake_open = false;
|
|
|
|
fake_ctx.board = b;
|
|
fake_ctx.fw_version = "1.2.3";
|
|
fake_ctx.build_date = "2026-09-11";
|
|
fake_ctx.get_state = get_state;
|
|
fake_ctx.apply = apply;
|
|
fake_ctx.get_settings = get_settings;
|
|
fake_ctx.save_settings = save_settings;
|
|
fake_ctx.wifi_configure = wifi_configure;
|
|
fake_ctx.open_access = open_access;
|
|
fake_ctx.get_info = get_info;
|
|
fake_ctx.factory_reset = factory_reset;
|
|
fake_ctx.ping = ping;
|
|
fake_ctx.fw_update = fw_update;
|
|
}
|