// ble模块发送命令模块
// 杭州秒寻科技有限公司
// 周涛
// 2024-5-3

#include "includes.h"

// 定义ble模块全局变量
static uint8 gBle_abyBleName[AT_WIFIBLE_CMD_LEN] = {0}; // 蓝牙名称

// 导出全局变量
extern WIFI_BLE_PARAM_T gWifiBle_stParam; // 模块管理参数

// 模块初始化
uint8 ble_cmd_init(void)
{
    // 初始化参数
    memset((void *)&gWifiBle_stParam, 0, sizeof(WIFI_BLE_PARAM_T));
    gWifiBle_stParam.byInit = 1;
    memset(gBle_abyBleName, 0, sizeof(uint8) * AT_WIFIBLE_CMD_LEN);

    ble_cmd_disable_echo();

    return 1;
}

// 重新配置wifi模块
void ble_cmd_module_init_config()
{
    ble_cmd_disable_echo();
}

// 关闭回显功能
void ble_cmd_disable_echo()
{
    uint8 abyAtValue[AT_WIFIBLE_CMD_VALUE_LEN] = {0};
    sprintf(abyAtValue, "%s", "\r\n"); // 拼接字符串

    wifi_ble_send_at_cmd(AT_BLE_ATE0, abyAtValue, 1);

    return;
}

// 关闭蓝牙
void ble_cmd_mode_close_ble()
{
    uint8 abyAtValue[AT_WIFIBLE_CMD_VALUE_LEN] = {0};
    sprintf(abyAtValue, "%s", "\r\n"); // 拼接字符串

    wifi_ble_send_at_cmd(AT_BLEMODE_CLOSE, abyAtValue, 1);

    return;
}

// 查询蓝牙工作模式
void ble_cmd_mode_get()
{
    int8 abyAtValue[AT_WIFIBLE_CMD_VALUE_LEN] = {0};
    sprintf(abyAtValue, "%s", "\r\n"); // 拼接字符串
    wifi_ble_send_at_cmd(AT_BLEMODE_GET, abyAtValue, 1);
}

// 打开蓝牙，进入从机模式
void ble_cmd_mode_enable()
{
    int8 abyAtValue[AT_WIFIBLE_CMD_VALUE_LEN] = {0};
    sprintf(abyAtValue, "%s", "\r\n"); // 拼接字符串

    wifi_ble_send_at_cmd(AT_BLEMODE_EN, abyAtValue, 1);

    return;
}

// 设置蓝牙发射功率
// byData:功率，0-10，10功率最大，1功率最小
void ble_cmd_set_tx_pwr(int dwData)
{
    int8 abyAtValue[AT_WIFIBLE_CMD_VALUE_LEN] = {0};
    sprintf(abyAtValue, "=%d%s", dwData, "\r\n");     // 拼接字符串
    wifi_ble_send_at_cmd(AT_BLERFPWR, abyAtValue, 1); // 命令
    return;
}

// 设置蓝牙广播间隔，2秒广播一次
// wData:间隔，为0.625的倍数，1600为一秒
void ble_cmd_set_adv_intv(int dwData)
{
    int8 abyAtValue[AT_WIFIBLE_CMD_VALUE_LEN] = {0};
    sprintf(abyAtValue, "=%d%s", dwData, "\r\n");       // 拼接字符串
    wifi_ble_send_at_cmd(AT_BLEADVINTV, abyAtValue, 1); // 命令
    return;
}

// 查询蓝牙MAC
void ble_cmd_get_mac()
{
    int8 abyAtValue[AT_WIFIBLE_CMD_VALUE_LEN] = {0};
    sprintf(abyAtValue, "%s", "?\r\n"); // 拼接字符串

    wifi_ble_send_at_cmd(AT_BLEMAC, abyAtValue, 1);

    return;
}

// 设置蓝牙名称
void ble_cmd_set_name(char *pbyData)
{
    int8 abyAtValue[AT_WIFIBLE_CMD_VALUE_LEN] = {0};
    sprintf(abyAtValue, "=%s-%s", pbyData, "IPS8000BLE\r\n"); // 拼接字符串
    wifi_ble_send_at_cmd(AT_BLENAME, abyAtValue, 1);          // 命令
    return;
}

// 保存蓝牙名称
void ble_cmd_save_name(char *pbyData)
{
    sprintf(gBle_abyBleName, "%s-%s", pbyData, "IPS8000BLE"); // 拼接字符串

    // 保存蓝牙名称
    wmm_device_set_ble_bts_name(gBle_abyBleName);

    return;
}

// 查询蓝牙名称
uint8 *ble_cmd_query_ble_name()
{
    return (uint8 *)gBle_abyBleName;
}
