shuichan_old/V1.4/STM32F103_App1/HardWare/NETWORK/network.h

50 lines
2.3 KiB
C
Raw Normal View History

#ifndef NETWORK_H
#define NETWORK_H
#include "main.h"
#include <stdint.h>
/*===== 网络后端(通道)=====*/
/* 4G 与 WiFi 互斥运行:任一时刻只有一个后端激活,
* Rx_Buf/U2_CopyBuff stm32f1xx_it.c IDLE */
typedef enum {
NET_BACKEND_4G = 0, /* Air780E, USART3, 模组内置MQTT(AT+MPUB) */
NET_BACKEND_WIFI /* ESP-01S, UART4, TCP透传+软件MQTT */
} net_backend_t;
/*===== 网络状态 =====*/
extern volatile uint8_t g_net_mqtt_ready;
extern volatile uint8_t g_net_first_publish_ok;
extern volatile uint8_t g_no_sim_detected;
extern volatile uint8_t g_no_signal_detected; /* 4G 无信号标志air780e.c 在 AT+CSQ 检测失败时设置 */
/*===== 上次成功联网方式EEPROM 持久化,仅方式变化时写一次)=====*/
#define NET_MODE_4G 0 /* 4G */
#define NET_MODE_WIFI_FIXED 1 /* WiFi - 代码里固定的热点 */
#define NET_MODE_WIFI_SMART 2 /* WiFi - SmartConfig 配网的热点 */
uint8_t NET_GetLastMode(void); /* 读当前记忆的方式 */
void NET_SaveMode(uint8_t mode); /* 方式变化时写 EEPROM未变化则空操作 */
/* 网络发送互斥:置位期间 NET_publish_* 直接丢弃OTA 下载等 AT 交互期间使用,
* AT USART3 */
extern volatile uint8_t g_net_tx_busy;
/*===== API =====*/
void NET_init(void);
void NET_process(void);
void NET_LockInit(void); /* 网络 AT 会话互斥锁初始化(调度器启动前调用一次) */
net_backend_t NET_GetActiveBackend(void);
void NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4,
float weight_kg, float once_wt_kg, float zero_kg);
void NET_publish_response(const char *cmd_id, int ok, const char *msg);
void NET_publish_power(int on);
void NET_mqtt_report(const char *header, const char *ota_id, int val);
void NET_ota_confirm(void);
/* 下行消息统一分发与模组无关id去重 → iot.prop.set继电器控制 → iot.ota升级。
* 4G +MSUB WiFi MQTT PUBLISH payload
* msg +MSUB URC JSON */
void net_dispatch_message(const char *msg);
#endif /* NETWORK_H */