/******************************************************************************
 * @file      drv_qfc41d.h
 * @brief     drv_qfc41d.h
 * @version   V1.0
 * @author    Gary
 * @copyright
 ******************************************************************************/
#ifndef DRV_QFC41D_H_
#define DRV_QFC41D_H_

#include <stdio.h>
#include <stdint.h>
#include <stm32f4xx.h>
#include <string.h>
#include "drv_uart.h"
#include "kit_macro.h"
#include "ucos_ii.h"
#include "gpio_manager.h"
#include "kit_time.h"
#include "kit_debug.h"

#define QFC41D_UART_PORT     	kUartDev_2
#define QFC41D_MAX_SEND_SIZE    2048
#define QFC41D_MAX_RECV_SIZE    200
#define WIFI_TIMEOUT 1000
#define WIFI_CONNECT_TIMEOUT 10000

#define QFC41D_RESTART_CMD "AT+QRST"
#define QFC41D_PING_CMD "AT+QPING=<IP>"
#define QFC41D_LOW_POWER_MODE "AT+QLOWPOWER"
#define QFC41D_GET_MACK_ADDR "AT+QWLMAC"
#define QFC41D_GET_WIFISTA_STATUS "AT+QSTAST"
#define QFC41D_SET_DHCP_ENABLE "AT+QSTADHCPDEF=1"

//该命令用于设置串口波特率:AT+QSETBAND=<baud_rate>[,<save>]   <baud_rate> 整型,串口波特率。<save>省略该参数则保存波特率。0:不保存波特率 1:保存波特率
#define QFC41D_SET_BATE "AT+QSETBAND=115200,1"



/* 下面命令用于模块作为外围设备时发送 GATT 数据
 * AT+QBLEGATTSNTFY=<UUID>[,<hex_lngth>],<data>
 * <UUID>	字符串类型（无双引号）。特征值的 UUID 。长度：2 字节或者 16 字节。
 * <hex_length>	整型。十六进制数据长度。使用该参数时，模块会将<data>转换为十六进制再进行 发送。例如，若<data>为 123456，模块会将该数据转换为 0x123456 进行发送。
 * <data>	字符串类型（无双引号）。GATT 数据。
 */
 
 
#define QFC41D_BLE_INIT "AT+QBLEINIT=2"

typedef void (*FC41DSendCall)(UartDev dev, uint8_t *buf, uint16_t len);

typedef struct
{
    uint8_t       dev;
    uint16_t      buf_pos;
	uint16_t      buf_size;
	uint8_t       *buf;
	FC41DSendCall sendCall;	
}WifiBleItem;

uint8_t drv_qfc41d_init(void);

// MQTT 初始化
uint8_t drv_mqtt_init();

// 发布 MQTT 消息 
uint8_t drv_mqtt_publish(char* str,uint16_t length);

uint8_t drv_mqtt_publish_no_respose(char* str,uint16_t length);

uint8_t drv_mqtt_publish_control_no_respose(char* str,uint16_t length);

uint8_t drv_mqtt_publish_read_no_respose(char* str,uint16_t length);

uint8_t drv_ble_init();

#endif //DRV_QFC41D_H_

