Files
ESP-Nodes/ESP-Mongoose_UI/mongoose/mongoose_glue.h
2025-03-30 02:37:21 -04:00

170 lines
4.9 KiB
C

// SPDX-FileCopyrightText: 2024 Cesanta Software Limited
// SPDX-License-Identifier: GPL-2.0-only or commercial
// Generated by Mongoose Wizard, https://mongoose.ws/wizard/
#ifndef MONGOOSE_GLUE_H
#define MONGOOSE_GLUE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "mongoose.h"
#define WIZARD_ENABLE_HTTP 1
#define WIZARD_ENABLE_HTTPS 1
#define WIZARD_ENABLE_HTTP_UI 1
#define WIZARD_ENABLE_HTTP_UI_LOGIN 1
#define WIZARD_ENABLE_WEBSOCKET 1
#define WIZARD_ENABLE_MQTT 1
#define WIZARD_MQTT_URL "mqtt://techquadbit.ddns.net"
#define WIZARD_ENABLE_SNTP 1 // Enable time sync.
#define WIZARD_SNTP_TYPE 0 // 0: default Google, 1: DHCP, 2: custom
#define WIZARD_SNTP_URL "udp://time.google.com:123" // Custom SNTP server URL
#define WIZARD_SNTP_INTERVAL_SECONDS 3600 // Frequency of SNTP syncs
#define WIZARD_DNS_TYPE 0 // 0: default Google, 1: DHCP, 2: custom
#define WIZARD_DNS_URL "udp://8.8.8.8:53" // Custom DNS server URL
#define WIZARD_CAPTIVE_PORTAL 0
#define WIZARD_ENABLE_MODBUS 0
#define WIZARD_MODBUS_PORT 502
#ifndef WIZARD_REBOOT_TIMEOUT_MS
#define WIZARD_REBOOT_TIMEOUT_MS 500
#endif
void mongoose_init(void); // Initialise Mongoose
void mongoose_poll(void); // Poll Mongoose
extern struct mg_mgr g_mgr; // Mongoose event manager
void mongoose_set_http_handlers(const char *name, ...);
void mongoose_add_ws_handler(unsigned ms, void (*)(struct mg_connection *));
struct mongoose_mqtt_handlers {
struct mg_connection *(*connect_fn)(mg_event_handler_t);
void (*tls_init_fn)(struct mg_connection *);
void (*on_connect_fn)(struct mg_connection *, int);
void (*on_message_fn)(struct mg_connection *, struct mg_str, struct mg_str);
void (*on_cmd_fn)(struct mg_connection *, struct mg_mqtt_message *);
};
void mongoose_set_mqtt_handlers(struct mongoose_mqtt_handlers *);
struct mongoose_modbus_handlers {
bool (*read_reg_fn)(uint16_t address, uint16_t *value);
bool (*write_reg_fn)(uint16_t address, uint16_t value);
};
void mongoose_set_modbus_handlers(struct mongoose_modbus_handlers *);
#define run_mongoose() \
do { \
mongoose_init(); \
for (;;) { \
mongoose_poll(); \
} \
} while (0)
#if WIZARD_ENABLE_MQTT
void glue_lock_init(void); // Initialise global Mongoose mutex
void glue_lock(void); // Lock global Mongoose mutex
void glue_unlock(void); // Unlock global Mongoose mutex
#else
#define glue_lock_init()
#define glue_lock()
#define glue_unlock()
#endif
// Increment device change state counter - trigger UI refresh
void glue_update_state(void);
// Firmware Glue
extern struct mg_connection *g_mqtt_conn; // MQTT client connection
void glue_mqtt_tls_init(struct mg_connection *);
struct mg_connection *glue_mqtt_connect(mg_event_handler_t ev_hanler_fn);
void glue_mqtt_on_connect(struct mg_connection *c, int code);
void glue_mqtt_on_message(struct mg_connection *c, struct mg_str topic,
struct mg_str data);
void glue_mqtt_on_cmd(struct mg_connection *c, struct mg_mqtt_message *mm);
void glue_sntp_on_time(uint64_t utc_time_in_milliseconds);
int glue_authenticate(const char *user, const char *pass);
void glue_start_reboot(struct mg_str); // Start an action
bool glue_check_reboot(void); // Check if action is still in progress
void glue_start_reformat(struct mg_str); // Start an action
bool glue_check_reformat(void); // Check if action is still in progress
void *glue_ota_begin_firmware_update(char *file_name, size_t total_size);
bool glue_ota_end_firmware_update(void *context);
bool glue_ota_write_firmware_update(void *context, void *buf, size_t len);
void *glue_file_open_file_upload(char *file_name, size_t total_size);
bool glue_file_close_file_upload(void *context);
bool glue_file_write_file_upload(void *context, void *buf, size_t len);
void glue_reply_graph_data(struct mg_connection *, struct mg_http_message *);
struct state {
int speed;
int temperature;
int humidity;
int uptime;
char version[20];
bool online;
bool lights;
int level;
};
void glue_get_state(struct state *);
struct leds {
bool led1;
bool led2;
bool led3;
};
void glue_get_leds(struct leds *);
void glue_set_leds(struct leds *);
struct network_settings {
char ip_address[20];
char gw_address[20];
char netmask[20];
bool dhcp;
};
void glue_get_network_settings(struct network_settings *);
void glue_set_network_settings(struct network_settings *);
struct settings {
char string_val[40];
char log_level[10];
double double_val;
int int_val;
bool bool_val;
};
void glue_get_settings(struct settings *);
void glue_set_settings(struct settings *);
struct security {
char admin_password[40];
char user_password[40];
};
void glue_get_security(struct security *);
void glue_set_security(struct security *);
void glue_reply_loglevels(struct mg_connection *, struct mg_http_message *);
void glue_reply_events(struct mg_connection *, struct mg_http_message *);
#ifdef __cplusplus
}
#endif
#endif // MONGOOSE_GLUE_H