#include "includes.h"

// 初始化wifi模块
void driver_wifi_init()
{
    GPIO_InitTypeDef stGpio = {0};

    // 初始化与wifi模块通信用到GPIO端口（UART）
    driver_uart_init_wifi();

    // 初始化wifi模块复位脚
    RCC_AHB1PeriphClockCmd(DRIVER_WIFI_RESET_CLK, ENABLE); // 使能GPIO时钟
    stGpio.GPIO_Mode = GPIO_Mode_OUT;
    stGpio.GPIO_Speed = GPIO_High_Speed;
    stGpio.GPIO_PuPd = GPIO_PuPd_UP;
    stGpio.GPIO_OType = GPIO_OType_PP; // 推挽
    stGpio.GPIO_Pin = DRIVER_WIFI_RESET_PIN;
    GPIO_Init(DRIVER_WIFI_RESET_PORT, &stGpio);

    return;
}

// wifi模块复位
void driver_wifi_reset()
{
    // 拉低实施复位
    GPIO_WriteBit(DRIVER_WIFI_RESET_PORT, DRIVER_WIFI_RESET_PIN, Bit_RESET);
    driver_delay_nxms(100);

    // 拉高释放复位
    GPIO_WriteBit(DRIVER_WIFI_RESET_PORT, DRIVER_WIFI_RESET_PIN, Bit_SET);

    return;
}

// GUI模块发送数据
// pbyData:待发送数据地址
// wLen:数据长度
// 返回值，0：失败，1：成功
uint8 driver_wifi_send_data(uint8 *pbyData, uint16 wLen)
{
    return driver_uart_send_data(UART_WIFI, pbyData, wLen);
}

// GUI模块接收数据
// pbyData:保存数据的地址(返回参数)
// wLen:能接收的数据的最大长度
// 返回值，0失败，其他值表示本次接收到的数据长度
uint16 driver_wifi_receive_data(uint8 *pbyData, uint16 wLen)
{
    return driver_uart_receive_data(UART_WIFI, pbyData, wLen);
}
