mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 16:51:12 -07:00
42 lines
1.4 KiB
C
42 lines
1.4 KiB
C
/*
|
|
* forgefixture: the ForgeFIRM bench actuator. An ESP32-S3 on the bench
|
|
* network drives three relays at the machine's connectors (the lid
|
|
* loop, the interlock loop, the button) so the acceptance tool can open
|
|
* a lid, pull an interlock or press the button without a hand in the
|
|
* room. The firmware's whole job is to do exactly that on request, and
|
|
* nothing at all otherwise: every line low at boot and after any reset,
|
|
* the button only ever pulsed, every request under a key.
|
|
*
|
|
* Copyright 2026 514 LLC d/b/a OpenGlow
|
|
* Written by Scott Wiederhold
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
#include "esp_log.h"
|
|
#include "nvs_flash.h"
|
|
|
|
#include "api.h"
|
|
#include "fixture_config.h"
|
|
#include "relays.h"
|
|
#include "version.h"
|
|
#include "wifi.h"
|
|
|
|
static const char *TAG = "forgefixture";
|
|
|
|
void app_main(void)
|
|
{
|
|
/* The relays first: whatever else happens at boot, the lines are low
|
|
* before the radio or the server exist. */
|
|
relays_init();
|
|
|
|
esp_err_t r = nvs_flash_init();
|
|
if (r == ESP_ERR_NVS_NO_FREE_PAGES || r == ESP_ERR_NVS_NEW_VERSION_FOUND) {
|
|
ESP_ERROR_CHECK(nvs_flash_erase());
|
|
r = nvs_flash_init();
|
|
}
|
|
ESP_ERROR_CHECK(r);
|
|
|
|
ESP_LOGI(TAG, "forgefixture %s, hostname %s", FIXTURE_VERSION, FIXTURE_HOSTNAME);
|
|
wifi_start(FIXTURE_HOSTNAME, FIXTURE_WIFI_SSID, FIXTURE_WIFI_PSK);
|
|
api_start(FIXTURE_API_KEY, FIXTURE_HOSTNAME);
|
|
}
|