162 lines
5.3 KiB
C
162 lines
5.3 KiB
C
#ifndef __BSP_ML307R_H__
|
||
#define __BSP_ML307R_H__
|
||
|
||
|
||
#include "CH58x_common.h"
|
||
#include "lwrb.h"
|
||
#include "bsp_valve.h"
|
||
/*4G 模块控制引脚*/
|
||
#define ENABLE_3_8_V GPIO_Pin_3 //PB3
|
||
|
||
#define USIM_DECT_PIN GPIO_Pin_5 //PB5
|
||
#define ML307_PWR_PIN GPIO_Pin_7 //PB6
|
||
#define ML307_RST_PIN GPIO_Pin_6 //PB7
|
||
|
||
#define ML307_UART_TX_PIN GPIO_Pin_13 //PB13
|
||
#define ML307_UART_RX_PIN GPIO_Pin_12 //PB12
|
||
|
||
// MQTT服务器配置
|
||
// #define MQTT_HOST "120.25.151.173" // MQTT服务器地址
|
||
#define MQTT_HOST "8.135.10.183" // MQTT服务器地址
|
||
// #define MQTT_PORT 1883 // MQTT服务器端口
|
||
#define MQTT_PORT 20609 // MQTT服务器端口
|
||
#define MQTT_USER "guest" // MQTT用户名
|
||
#define MQTT_PASS "guest" // MQTT密码
|
||
#define CLIENT_ID "ZBF" // 客户端ID前缀
|
||
|
||
// MQTT主题定义
|
||
// #define MQTT_TOPIC_REV "/mkl/zw001/order/" // 订阅主题前缀,后面会拼接设备SN
|
||
#define MQTT_TOPIC_REV "testrecv"
|
||
// #define MQTT_TOPIC_UP "/mkl/zw001/push/data" // 发布主题
|
||
#define MQTT_TOPIC_UP "testup" // 发布主题
|
||
|
||
typedef struct __attribute__((packed))
|
||
{
|
||
uint8_t module_init_flag : 1; //模块初始化
|
||
uint8_t Date_Sending_flag : 1; //数据发送中
|
||
uint8_t Low_Voltage_flag : 1; //低电压
|
||
uint8_t Key_Finish_flag : 1; //按键完成
|
||
|
||
uint8_t PowerOn_success_flag : 1; //模块开机成功
|
||
uint8_t PowerOn_error_flag : 1; //模块开机失败
|
||
uint8_t PowerOff_success_flag : 1;//模块关机成功
|
||
uint8_t PowerOff_error_flag : 1; //模块关机失败
|
||
|
||
uint8_t restart_success_flag : 1; //重启模块成功
|
||
uint8_t restart_error_flag : 1; //重启模块失败
|
||
uint8_t sim_success_flag : 1; //sim成功
|
||
uint8_t sim_error_flag : 1; //sim失败
|
||
|
||
uint8_t Get_ModInfo_flag : 1; //获取模组信息
|
||
uint8_t ModInfo_update_flag : 1; //信息更新
|
||
uint8_t ModInfo_success_flag : 1; //获取模组信息成功
|
||
uint8_t ModInfo_error_flag : 1; //获取模组信息失败
|
||
|
||
uint8_t Connect_success_flag : 1; //连接平台成功
|
||
uint8_t Connect_error_flag : 1; //连接平台失败
|
||
uint8_t Valve_Open_flag : 1; //阀门打开
|
||
uint8_t Valve_Close_flag : 1; //阀门关闭
|
||
|
||
uint8_t send_complete_flag : 1; //发送数据完成标志
|
||
uint8_t send_error_flag : 1; //发送数据错误标志
|
||
uint8_t update_time_flag : 1; //更新网络时间标志位
|
||
uint8_t login_status_flag : 1; //登录到服务器标志位;
|
||
|
||
uint8_t Loop_count_flag : 3; //循环次数标志位
|
||
uint8_t Iot_Retry_flag : 1; //重试标志位;
|
||
|
||
}IotFlagStruct;
|
||
|
||
|
||
// Module parameters
|
||
typedef struct __attribute__((packed))
|
||
{
|
||
char cmdtype[3];
|
||
char servic_id[5];
|
||
char payload_len[5];
|
||
char imei_len[5];
|
||
char imei[60];
|
||
char imsi_len[5];
|
||
char imsi[60];
|
||
char iccid_len[5];
|
||
char iccid[60];
|
||
char heartbeat_time_len[5];
|
||
char heartbeat_time[9];//心跳周期 0~100
|
||
char manufacturer_name_len[5];
|
||
char manufacturer_name[40];//厂家 名称
|
||
char terminal_type_len[5];
|
||
char terminal_type[25];//终端类型
|
||
char hardware_version_len[5];
|
||
char hardware_version[11];//硬件版本
|
||
char software_version_len[5];
|
||
char software_version[11];//软件版本
|
||
char battery_value[9];//电池电压,浮点型0~5
|
||
char battery_voltage[9];//电池电量 整形 1-100
|
||
|
||
} TsModule_Info_t;
|
||
|
||
// Network service information
|
||
typedef struct
|
||
{
|
||
char cmdtype[3];
|
||
char servic_id[5];
|
||
char payload_length[5];
|
||
char rat[16];//整型。无线接入模式
|
||
char rsrp[16];//整型,参考信号接收功率,-1400~-440,无效值位-32768
|
||
char rssi[16];//整形,接收的信号强度指示 -1330~-250,无效值-32768
|
||
char tx_power[32];//整形,最近一次的发送功率,-400~230,无效值-32768
|
||
char tx_time[16];//整型,上行累计的发送时长,单位ms,无效值为0
|
||
char rx_time[16];//整型,下行累计的接收时长,单位ms,无效值0
|
||
char last_cellid[16];//十六进制字符串,上一次SIB1小区信息,十六进制28BIT的cellid,有效值为0~0xFFFFFFE,无效值为0xFFFFFFFF
|
||
char last_ecl[16];//整型。上一次的ECL值,普通覆盖还是增强覆盖,有效值取0,1,2,
|
||
char last_sinr[16];//整形。上一次的SINR值,有效值为-180~-300,无效值为-32768
|
||
char last_earfcn[16];//整形,上一次的EARFCN值,对应当前服务小区的下行频点号,有效值为0~68535,无效值为-1
|
||
char last_pci[16];//整形,上一次的PIC值,对应当前小区的物理ID,有效值为0-503,无效值为65535
|
||
char rsrq[16];//整型,参考信号接收质量,-195~-30,无效值-32768
|
||
|
||
}Ts_Network_Service_Info_t;
|
||
|
||
// IoT模块状态机状态枚举
|
||
typedef enum {
|
||
IOT_STATE_POWER_ON = 0, // 开机
|
||
IOT_STATE_RESTART, // 重启
|
||
IOT_STATE_SIM_CHECK, // SIM状态
|
||
IOT_STATE_GET_MODULE_INFO, // 获取模块信息
|
||
IOT_STATE_CONNECT, // 连接
|
||
IOT_STATE_SEND_DATA, // 发送数据
|
||
IOT_STATE_PROCESS // 处理
|
||
} IoT_State_t;
|
||
|
||
extern IotFlagStruct IotFlag_t;
|
||
extern struct tm Network_Time_t;
|
||
|
||
|
||
static void BSP_Ml307_Power_Off(void);
|
||
|
||
|
||
void BSP_Ml307r_Init(void);
|
||
void Iot_Send_Data(TeFrameCmd cmd);
|
||
void Ml307r_Loop(void);
|
||
void BSP_Module_Emergency_Send(uint8_t* data, uint8_t len);
|
||
void BSP_ML307_StartTimeoutTimer(void);
|
||
void BSP_ML307_SetActive(void);
|
||
void BSP_ML307_SendMessage(void);
|
||
static void BSP_Read_Module(void);
|
||
static void BSP_simcom_init(void);
|
||
static void BSP_Get_Module_Info(void);
|
||
static void BSP_Module_Connect_CtWing(void);
|
||
|
||
// 状态上报请求结构体
|
||
typedef struct {
|
||
TeFrameCmd cmd; // 命令类型
|
||
} TsIotSendRequest;
|
||
|
||
// 声明状态上报队列
|
||
extern lwrb_t iot_send_queue;
|
||
extern uint8_t iot_send_queue_buffer[sizeof(TsIotSendRequest) * 5]; // 可以存储5个请求
|
||
#endif //!@__BSP_ML307R_H__
|
||
|
||
|
||
|
||
|