mirror of
				https://github.com/alexandrebobkov/ESP-Nodes.git
				synced 2025-11-04 08:21:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			170 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			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
 |