From 82f1fc0d5535eda3fc9eab799d81b3e220dbe4ef Mon Sep 17 00:00:00 2001 From: Your Name Date: Wed, 20 May 2026 02:10:01 +0530 Subject: feat: add tollgate_core component + market config wiring - Add tollgate_core ESP-IDF component (skeleton: cashu, dns, firewall, session) - Add tollgate_platform.c with SPIFFS config backend - Wire market_enabled, market_scan_interval_s, client_auto_switch in config.c - Add lwip_tollgate_hooks.h (updated from feature branch) - Add E2E fix plan, tollgate_core design doc, WPA autodetect plan - Add integration test network helpers - Add CONSOLIDATION.md plan Reverts the broken merge (be4788b) that gutted config.c/tollgate_main.c/tollgate_api.c and replaces it with a clean addition on top of intact master. --- main/CMakeLists.txt | 3 ++- main/config.c | 12 +++++++++ main/lwip_tollgate_hooks.h | 4 +-- main/tollgate_platform.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 main/tollgate_platform.c (limited to 'main') diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 90000b7..2107cf1 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -30,9 +30,10 @@ idf_component_register(SRCS "tollgate_main.c" "stratum_proxy.c" "sw_miner.c" "asic_miner.c" + "tollgate_platform.c" INCLUDE_DIRS "." REQUIRES esp_wifi esp_event esp_netif nvs_flash esp_http_server lwip json esp_http_client mbedtls esp-tls log spiffs nucula_lib secp256k1 axs15231b qrcode wisp_relay - negentropy_lib tcp_transport + negentropy_lib tcp_transport tollgate_core PRIV_REQUIRES esp-tls) diff --git a/main/config.c b/main/config.c index aa7da6d..43ab2a7 100644 --- a/main/config.c +++ b/main/config.c @@ -46,6 +46,9 @@ esp_err_t tollgate_config_init(void) g_config.stratum_port = 3333; g_config.mining_port = 3334; g_config.mining_sandbox_mint_access = true; + g_config.market_enabled = true; + g_config.market_scan_interval_s = 30; + g_config.client_auto_switch = false; esp_vfs_spiffs_conf_t conf = { .base_path = "/spiffs", @@ -361,6 +364,15 @@ esp_err_t tollgate_config_init(void) if (m_sandbox && cJSON_IsBool(m_sandbox)) g_config.mining_sandbox_mint_access = cJSON_IsTrue(m_sandbox); } + cJSON *market_enabled = cJSON_GetObjectItem(root, "market_enabled"); + if (market_enabled && cJSON_IsBool(market_enabled)) g_config.market_enabled = cJSON_IsTrue(market_enabled); + + cJSON *market_scan_interval = cJSON_GetObjectItem(root, "market_scan_interval_s"); + if (market_scan_interval) g_config.market_scan_interval_s = market_scan_interval->valueint; + + cJSON *client_auto_switch = cJSON_GetObjectItem(root, "client_auto_switch"); + if (client_auto_switch && cJSON_IsBool(client_auto_switch)) g_config.client_auto_switch = cJSON_IsTrue(client_auto_switch); + cJSON_Delete(root); if (g_config.payout.recipient_count == 0) { diff --git a/main/lwip_tollgate_hooks.h b/main/lwip_tollgate_hooks.h index 76017be..2953c48 100644 --- a/main/lwip_tollgate_hooks.h +++ b/main/lwip_tollgate_hooks.h @@ -3,8 +3,8 @@ #include "lwip/pbuf.h" -int tollgate_ip4_canforward_filter(struct pbuf *p, u32_t dest_addr_hostorder); +int tollgate_core_ip4_canforward_filter(struct pbuf *p, u32_t dest_addr_hostorder); -#define LWIP_HOOK_IP4_CANFORWARD(p, addr) tollgate_ip4_canforward_filter(p, addr) +#define LWIP_HOOK_IP4_CANFORWARD(p, addr) tollgate_core_ip4_canforward_filter(p, addr) #endif diff --git a/main/tollgate_platform.c b/main/tollgate_platform.c new file mode 100644 index 0000000..4083c4e --- /dev/null +++ b/main/tollgate_platform.c @@ -0,0 +1,63 @@ +#include "tollgate_platform.h" +#include "tollgate_core.h" +#include "config.h" +#include "esp_log.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +static const char *TAG = "tollgate_platform"; + +static uint16_t platform_get_price_sats(void) +{ + const tollgate_config_t *cfg = tollgate_config_get(); + return cfg ? (uint16_t)cfg->price_per_step : 21; +} + +static int32_t platform_get_step_ms(void) +{ + const tollgate_config_t *cfg = tollgate_config_get(); + return cfg ? (int32_t)cfg->step_size_ms : 60000; +} + +static const char *platform_get_mint_url(void) +{ + const tollgate_config_t *cfg = tollgate_config_get(); + return cfg ? cfg->mint_url : "https://testnut.cashu.space"; +} + +static const char *platform_get_metric(void) +{ + const tollgate_config_t *cfg = tollgate_config_get(); + return cfg ? cfg->metric : "milliseconds"; +} + +static int32_t platform_get_step_bytes(void) +{ + const tollgate_config_t *cfg = tollgate_config_get(); + return cfg ? (int32_t)cfg->step_size_bytes : 22020096; +} + +static int64_t platform_get_time_ms(void) +{ + return (int64_t)xTaskGetTickCount() * portTICK_PERIOD_MS; +} + +static bool platform_spend_proofs(const char *raw_token_json) +{ + (void)raw_token_json; + return true; +} + +const tollgate_platform_t *tollgate_get_platform(void) +{ + static const tollgate_platform_t platform = { + .get_price_sats = platform_get_price_sats, + .get_step_ms = platform_get_step_ms, + .get_mint_url = platform_get_mint_url, + .get_metric = platform_get_metric, + .get_step_bytes = platform_get_step_bytes, + .get_time_ms = platform_get_time_ms, + .spend_proofs = platform_spend_proofs, + }; + return &platform; +} -- cgit v1.2.3