// wifi&ble模块发送命令模块
// 杭州秒寻科技有限公司
// 周涛
// 2024-9-22

#ifndef __WIFIBLE_H__
#define __WIFIBLE_H__

#include "sysdef.h"

#define AT_WIFIBLE_CMD_LEN 64        // 命令内容长度
#define AT_WIFIBLE_CMD_VALUE_LEN 128 // 命令内容长度
#define AT_WIFIBLE_MAC_LEN 12        // 蓝牙mac

// AT命令响应
#define AT_WIFIBLE_RESP_OK "\r\nOK\r\n"     // 命令响应成功
#define AT_WIFIBLE_RESP_ERR "\r\nERROR\r\n" // 命令响应失败
#define AT_WIFIBLE_EXIT_TRANS_MODE "+++"    // 退出透传模式

// 消息重发次数
#define AT_WIFI_BLE_SEND_MAX_TIMES 3

// 模块管理结构
typedef struct
{
    uint8 byTimerID;                     // 定时器编号
    uint8 byInit;                        // 模块初始化标识，1：初始化中, 2:正常工作
    uint8 byMutex;                       // 发送互斥锁，0：空闲，1：忙碌
    uint8 byTimes;                       // 命令重发次数
    uint8 abyAtCmd[AT_WIFIBLE_CMD_LEN];  // AT命令标识符
    uint8 abyBleMac[AT_WIFIBLE_MAC_LEN]; // 蓝牙mac
    uint8 byWifiConnected;               // wifi连接状态，0：无连接，1：已连接
    uint8 bySocketConnected;             // socket连接状态，0：无连接，1：已连接
    uint8 byTransparentFlag;             // 透传标识符，0：未进入透传模式，1：已进入透传模式
} WIFI_BLE_PARAM_T;

// 外部接口
uint8 wifi_ble_init();
uint8 wifi_ble_send_at_cmd(uint8 *pbyAtCmd, uint8 *pbyCmdValue, uint8 byWorkStatus);
void wifi_ble_update_module_status(int8 *pbyAtCmd, uint8 byLen, uint8 byWorkStatus);
void wifi_ble_reset_module_status();
void wifi_ble_reset();

#endif
