X1UWaterWmbusISK/hardinterface/BLE_driver/inc/ble14531_driver.h

473 lines
12 KiB
C
Raw Normal View History

2024-06-03 15:49:39 +08:00
/************************************************************************************
* @Copyright (c) :(C)2021, Qindao ieslab Co., Ltd
* @FileName :ble_driver.h
* @Author :QDIES PLATFORM TEAM
* @Version :V1.1
* @Date :2021-7
* @Description :
************************************************************************************/
#ifndef __BLE_DRIVER_H
#define __BLE_DRIVER_H
#include "type.h"
#include <string.h>
#ifdef __cplusplus
extern "C"
{
#endif
/*---------------- <20><><EFBFBD>ú꿪<C3BA>أ<EFBFBD><D8A3>ɸ<EFBFBD><C9B8><EFBFBD>MCU<43><55><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>ģʽʹ<CABD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> --------------------*/
//#define HDSC_HC32L13x 1 //<2F><><EFBFBD><EFBFBD>13xϵ<78><CFB5>
//#define HDSC_HC32L196 (!HDSC_HC32L13x)//<2F><><EFBFBD><EFBFBD>196ϵ<36><CFB5>
#define BLE_CENTRAL_SLAVE_MOD 0 //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>֧<EFBFBD>֣<EFBFBD>0<EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD>1<EFBFBD><31><EFBFBD>ӻ<EFBFBD>
/*------------------------------------*/
#define BLE_POW_PORT (GpioPortE) //<2F><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
#define BLE_POW_PIN (GpioPin4)
#define BLE_CON_PORT (GpioPortA) //<2F><><EFBFBD><EFBFBD>״ָ̬ʾ
#define BLE_CON_PIN (GpioPin4)
#define BLE_CON_IRQ PORTA_IRQn
#define BLE_CON_PRIORITY IrqLevel2 //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
#define BLE_LOWPOWER_PORT (GpioPortA) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLE_LOWPOWER_PIN (GpioPin2)
#define BLE_RXPORT_IRQ PORTA_IRQn
#define BLE_RXPORT_PRIORITY IrqLevel2 //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
#define BLE_CONorRX_IRQHandler PORTA_IRQHandler
//#define BLE_TX_IRQHandler PORTA_IRQHandler
#define BLE_CON_MSG 0xAA //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLE_DISCON_MSG 0xBB //<2F><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>
#define BLE_CON_NOMSG 0X00
#define CENTRAL_MODE 0xAA //<2F><><EFBFBD><EFBFBD>ģʽ
#define SLAVE_MODE 0xBB //<2F>ӻ<EFBFBD>ģʽ
#define MODE_ERROR 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ʧ<EFBFBD><CAA7>
#define SCAN_END 0x00 //ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ʼ
#define SCAN_ING 0xBB //ɨ<><C9A8><EFBFBD><EFBFBD>
#define SACN_START_ORDER 0xAA //<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>
#define SACN_STOP_ORDER 0xBB //ֹͣɨ<D6B9><C9A8>
#define SCAN_START 0xCC //<2F><>ʼɨ<CABC><C9A8>
#define CON_START_ORDER 0xAA //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CON_STOP_ORDER 0xBB //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
#define CON_END 0xAA //<2F><><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ʼ
#define CON_ING 0xBB //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CON_START 0xCC //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
#define CHK_KEY_WORD 0xAA //<2F><>ѯ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
#define SET_KEY_WORD 0xBB //<2F>޸Ĺؼ<C4B9><D8BC><EFBFBD>
#define CLR_KEY_WORD 0xCC //ȡ<><C8A1><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
#define CHK_WHITE_LIST 0xAA //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SET_WHITE_LIST 0xBB //<2F>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD>
#define CLR_WHITE_LIST 0xCC //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CHK_NAME_MAC 0xAA //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>MAC
#define SET_NAME_MAC 0xBB //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>MAC
#define CHK_BLE_SEC 0xAA //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SET_BLE_SEC 0xBB //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLR_BLE_SEC 0xCC //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CHK_BLE_PIN 0xAA //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SET_BLE_PIN 0xBB //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BLE_TASK_FAIL 0xA8
#define BLE_TASK_SUCCESS 0xA9
#define BLE_TASK_INIT 0xB0
#define BLE_NAME_MAX_LEN 12 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>󳤶<EFBFBD>
//<2F><>ʼ<EFBFBD><CABC>״̬<D7B4><CCAC>״̬<D7B4><CCAC>BLE
enum BLE_MAIN_STA
{
S_BLE_IDLE = 0 ,
S_BLE_MAIN_INIT ,
S_BLE_MAIN_CENTRAL_SWITCH ,
S_BLE_MAIN_SCAN ,
S_BLE_MAIN_CONNECT ,
S_BLE_MAIN_NAME_MAC ,
S_BLE_MAIN_ADV_DATA ,
S_BLE_MAIN_ADV_PARAM ,
S_BLE_MAIN_KEY_WORD ,
S_BLE_MAIN_WHITE_LIST ,
S_BLE_MAIN_CHK_STATUS ,
S_BLE_MAIN_SEC_PIN ,
};
enum BLEINIT_STA
{
S_BLEINIT_POWER_ON = 1 , //ģ<><C4A3><EFBFBD>͵<EFBFBD>
S_BLEINIT_POWER_WAIT ,
S_BLEINIT_POWER_DW , //<2F><>ʼ<EFBFBD>ϵ縴λ
S_BLEINIT_POWER_DW_R ,
S_BLEINIT_ATS , //<2F><><EFBFBD>ͳ<EFBFBD>ʼ<EFBFBD><CABC>ATָ<54><D6B8>
S_BLEINIT_ADV0_CTL , //<2F>رչ㲥
S_BLEINIT_VER , //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>
S_BLEINIT_NAME , //<2F><>ѯ<EFBFBD><EFBFBD><E3B2A5><EFBFBD><EFBFBD>
S_BLEINIT_NAME_SET , //<2F><><EFBFBD>ù㲥<C3B9><E3B2A5><EFBFBD><EFBFBD>
S_BLEINIT_MAC , //<2F><>ѯģ<D1AF><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
S_BLEINIT_MAC_SET , //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
S_BLEINIT_MAC_SAVE , //<2F><><EFBFBD><EFBFBD>MAC
S_BLEINIT_MAC_RESET , //<2F><><EFBFBD><EFBFBD>MAC<41><43><EFBFBD>踴λ
S_BLEINIT_TXPOW , //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><E4B9A6>
S_BLEINIT_TXPOW_SET , //<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><E4B9A6>
S_BLEINIT_ADVPERIOD , //<2F><>ѯ<EFBFBD><EFBFBD><E3B2A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
S_BLEINIT_ADVPERIOD_SET , //<2F><><EFBFBD>ù㲥<C3B9><E3B2A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
S_BLEINIT_CONPERIOD , //<2F><>ѯ<EFBFBD><EFBFBD><E3B2A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
S_BLEINIT_CONPERIOD_SET , //<2F><><EFBFBD>ù㲥<C3B9><E3B2A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
S_BLEINIT_ADVMFID_SET , //<2F><><EFBFBD>ù㲥<C3B9><E3B2A5><EFBFBD><EFBFBD>
S_BLEINIT_ADV_CTL , //<2F>򿪹㲥
S_BLEINIT_END
};
#if BLE_CENTRAL_SLAVE_MOD
//BLE<4C><45><EFBFBD><EFBFBD>ģʽ<C4A3>л<EFBFBD>״̬
enum BLEMODESWITCH_STA
{
// S_BLE_SWITCH_IDLE = 0 ,
S_BLE_SWITCH_CENTRAL = 1 , //<2F><><EFBFBD><EFBFBD>ģʽ
S_BLE_SWITCH_CENTRAL_CHK , //<2F>Ȳ<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>״̬
S_BLE_SWITCH_CENTRAL_DISCON , //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
S_BLE_SWITCH_ADV0 , //ֹͣ<CDA3>
S_BLE_SWITCH_STATUS , //<2F><>ѯ<EFBFBD><D1AF>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģʽ
S_BLE_SWITCH_SET_CENTRAL , //<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>ģʽ
S_BLE_SWITCH_SLAVE ,
S_BLE_SWITCH_SLAVE_CHK , //<2F>Ȳ<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>״̬
S_BLE_SWITCH_SLAVE_DISCON , //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
S_BLE_SWITCH_STATUS_SLAVE ,
S_BLE_SWITCH_SET_SLAVE , //<2F>л<EFBFBD><D0BB>ӻ<EFBFBD>ģʽ
S_BLE_SWITCH_ADV1 , //<2F><><EFBFBD><EFBFBD><EFBFBD>
};
//BLE<4C><45>ʼɨ<CABC><C9A8>״̬
enum BLESCAN_STA
{
// S_BLE_SCAN_IDLE = 0 ,
S_BLE_SCAN_START = 1 ,
S_BLE_SCAN_DISCON , //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
S_BLE_SCAN_ING , //<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>
S_BLE_SCAN_OVERTIME , //ɨ<>賬ʱ
S_BLE_SCAN_STOP ,
S_BLE_SCAN_END ,
S_BLE_SCAN_END_OVERTIME ,
};
//BLE<4C><45><EFBFBD><EFBFBD>MAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
enum BLEWHITELIST_STA
{
S_BLE_WHITE_LIST = 1 , //<2F>޸İ<DEB8><C4B0><EFBFBD><EFBFBD><EFBFBD>
S_BLE_WHITE_LIST_R ,
S_BLE_WHITE_LIST_CLR , //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
S_BLE_WHITE_LIST_CLR_R ,
S_BLE_WHITE_LIST_CHK , //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
S_BLE_WHITE_LIST_CHK_R ,
S_BLE_WHITE_LIST_SAVE , //<2F><><EFBFBD><EFBFBD>
};
#endif
//BLE<4C><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
enum BLECON_STA
{
S_BLE_CON_START = 1 ,
S_BLE_CON_STATE_CHEK ,
S_BLE_CON_DISCON , //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
S_BLE_CON_DISCON_WAIT , //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
S_BLE_CON_CLRBNDE ,
S_BLE_CON_RECON , //<2F><><EFBFBD>¸<EFBFBD><C2B8><EFBFBD>MAC<41><43><EFBFBD><EFBFBD>
S_BLE_CON_RECON_R ,
S_BLE_CON_RECON_XIAODOU ,
S_BLE_CON_STOP , //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
S_BLE_CON_END ,
};
//BLE<4C>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>MAC״̬
enum BLECHANGEMAC_STA
{
S_BLE_MAC_SET_START = 1 ,
S_BLE_MAC_DISCON , //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
S_BLE_MAC_ADV0 , //ֹͣ<CDA3>
S_BLE_MAC_NAME , //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
S_BLE_MAC_MAC , //<2F>޸<EFBFBD>MAC
S_BLE_MAC_SAVE , //<2F>޸<EFBFBD><DEB8><EFBFBD>MACҪ<43><D2AA><EFBFBD><EFBFBD>
S_BLE_MAC_RESET , //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA><EFBFBD>λ
S_BLE_MAC_ADV1 ,
S_BLE_MAC_CHK_START ,
S_BLE_MAC_NAME_CHK ,
S_BLE_MAC_MAC_CHK ,
};
//BLE<4C><45><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>״̬
enum BLEUPDATEADVDATA_STA
{
S_BLE_UPDATE_ADV_START = 1 ,
S_BLE_UPDATE_ADV , //<2F><><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>
S_BLE_UPDATE_ADV_RD_MAC ,
};
//BLE<4C><45><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>״̬
enum BLECHANGEADVPARA_STA
{
S_BLE_CHANGE_ADV_START = 1 ,
S_BLE_CHANGE_ADV0 , //ֹͣ<CDA3>
S_BLE_CHANGE_ADV_PARAM , //<2F>޸Ĺ㲥<C4B9><E3B2A5><EFBFBD><EFBFBD>
S_BLE_CHANGE_CON_PARAM , //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>
S_BLE_CHANGE_TX_POWER , //<2F>޸ķ<DEB8><C4B7><EFBFBD><E4B9A6>
S_BLE_CHANGE_SCAN_TIMES , //<2F>޸<EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
S_BLE_CHANGE_SAVE , //<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD>ɺ󱣴<C9BA>
S_BLE_CHANGE_ADV1 , //<2F><><EFBFBD><EFBFBD><EFBFBD>
};
//BLE<4C><45><EFBFBD>¹ؼ<C2B9><D8BC><EFBFBD>״̬
enum BLECHANGEKEYWORD_STA
{
S_BLE_SET_KEY_WORD = 1 , //<2F>޸Ĺؼ<C4B9><D8BC><EFBFBD>
S_BLE_SET_KEY_WORD_R ,
S_BLE_CHK_KEY_WORD , //<2F><>ѯ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
S_BLE_CHK_KEY_WORD_R ,
S_BLE_CLEAR_KEY_WORD , //ȡ<><C8A1><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
S_BLE_CLEAR_KEY_WORD_R ,
S_BLE_KEY_WORD_SAVE , //<2F><><EFBFBD><EFBFBD>
};
//BLE<4C><45>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
enum BLECHKSTATUS_STA
{
S_BLE_CHK_STATUS = 1 , //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
S_BLE_CHK_STATUS_R ,
};
//BLE<4C><45>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
enum BLESEC_STA
{
S_BLE_CHK_SEC = 1 , //<2F><>ѯSEC
S_BLE_CHK_SEC_R ,
S_BLE_CHK_PIN , //<2F><>ѯPIN
S_BLE_SET_SEC_ADV0 ,
S_BLE_SET_SEC_ADV0_R ,
S_BLE_SET_PIN , //<2F><><EFBFBD><EFBFBD>PIN
S_BLE_SET_PIN_R ,
S_BLE_SET_SEC , //<2F><><EFBFBD><EFBFBD>SEC
S_BLE_SET_SEC_R ,
S_BLE_SET_SEC_ADV1 ,
S_BLE_CLR_SEC , //ȡ<><C8A1>
S_BLE_CLR_SEC_R ,
S_BLE_SEC_RESET ,
S_BLE_SEC_SAVE , //<2F><><EFBFBD><EFBFBD>
};
//ATָ<54><D6B8>ͨ<EFBFBD><CDA8>״̬<D7B4><CCAC><EFBFBD><EFBFBD>״̬<D7B4><CCAC>״̬
typedef enum{
// AT_REQUEST_IDLE = 0 ,
BLE_AT_REQUEST_SEND = 1 ,
BLE_AT_REQUEST_CHECK ,
BLE_AT_REQUEST_WT ,
}BLE_TYP_STATE_AT_REQUEST;
//ģ<><C4A3>ATָ<54><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef enum {
AT_CODE_AT = 0 , //AT
AT_CODE_VER_CHK , //<2F><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
AT_CODE_NAME_CHK , //<2F><EFBFBD><E3B2A5><EFBFBD>Ʋ<EFBFBD>ѯ
AT_CODE_NAME , //<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_MAC_CHK , //<2F><>ѯMAC
AT_CODE_MAC , //<2F><><EFBFBD><EFBFBD>MAC
AT_CODE_TXPOWER_CHK , //<2F><><EFBFBD><EFBFBD>ʲ<EFBFBD>ѯ
AT_CODE_TXPOWER , //<2F><><EFBFBD><EFBFBD><E4B9A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_ADVPARAM_CHK , //<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ
AT_CODE_ADVPARAM , //<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_CONPARAM_CHK , //<2F><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD>ѯ
AT_CODE_CONPARAM , //<2F><><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_ADVMFID , //<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_ADV0 , //<2F>رչ㲥
AT_CODE_ADV1 , //<2F>򿪹㲥
AT_CODE_DISCON , //<2F>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_SLAVE , //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD>ӻ<EFBFBD>ģʽ
#if BLE_CENTRAL_SLAVE_MOD
AT_CODE_CENTRAL , //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ģʽ
AT_CODE_SCAN , //ɨ<><C9A8><EFBFBD><EFBFBD>Χ<EFBFBD>
AT_CODE_CONNECT , //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_STOP_SCAN , //ֹͣɨ<D6B9><C9A8>
AT_CODE_WHITE_LIST_SET , //<2F><><EFBFBD><EFBFBD>MAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_WHITE_LIST_CLR , //ȡ<><C8A1>MAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_WHITE_LIST_CHK , //<2F><>ѯMAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
AT_CODE_SCAN_TIMES , //ɨ<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_KEY_CHK , //<2F><>ѯ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
AT_CODE_KEY_SET , //<2F>޸Ĺؼ<C4B9><D8BC><EFBFBD>
AT_CODE_KEY_CLR , //ȡ<><C8A1><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
AT_CODE_RESET , //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
AT_CODE_SAVE , //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_STATUS , //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
AT_CODE_SEC_CHK , //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_SEC_SET , //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_SEC_CLR , //ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_PIN_CHK , //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_PIN , //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_CLRBNDE , //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><E8B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AT_CODE_ALL
} BLE_TYP_AT_CMDCODE;
//ATָ<54><D6B8><EFBFBD>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>ʱ<EFBFBD><CAB1>
typedef enum { //ʹ<><CAB9>100ms<6D><73>ʱ<EFBFBD><CAB1>
BLE_WT_0S = 0,
BLE_WT_halfS = 5,
BLE_WT_1S = 10,
BLE_WT_2S = 20,
BLE_WT_5S = 50,
} BLE_TYP_AT_WAIT_TIME;
//ATָ<54><D6B8><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
typedef enum {
BLE_RETRY_0 = 0,
BLE_RETRY_1,
BLE_RETRY_2,
BLE_RETRY_3,
BLE_RETRY_4,
BLE_RETRY_5,
BLE_RETRY_15 = 15,
} BLE_TYP_AT_RETRY_COUNT;
//ATָ<54><D6B8>״̬<D7B4><CCAC>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
typedef enum {
ResultBusy = 0,
ResultOk,
ResultError,
ResultFail
} BLE_TYP_RESULT_CODE;
//<2F><><EFBFBD><EFBFBD>״̬
typedef enum {
BleNoCon = 0,
BleSlaveCon,
BleMasterCon
} TYP_CON_STATUS;
//<2F><><EFBFBD><EFBFBD>״̬״̬
typedef enum {
BlePowerOk = 0,
BlePowerWrong, //<2F><><EFBFBD><EFBFBD>,ǿ<>ƶϵ<C6B6>״̬
BlePowerFactory //<2F><><EFBFBD><EFBFBD>ģʽ<C4A3>ڼ<EFBFBD><DABC>ϵ<EFBFBD>״̬
} TYP_POWER_STATUS;
//******************************* <20><EFBFBD><EFBFBD><E5B6A8>*************************************
typedef struct
{
unsigned char AtCode; //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned char CaseAtNum; //Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned char ErrorLimit; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Գ<EFBFBD><D4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// unsigned char ExpectLen; //<2F>ڴ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
char* pAtCmdStr; //ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
// char* pExpectData; //<2F>ڴ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
unsigned short int WaitTime;//<2F>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬ms
} BLE_STRUCT_AT_CMD, *P_BLE_STRUCT_AT_CMD;
typedef union
{
struct
{
u8 at_err:1 ; //<2F><>ѯAT<41>
u8 ver_err:1 ; //<2F><>ѯ<EFBFBD><EFBFBD>
u8 name_chk_err:1 ; //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 name_set_err:1 ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 mac_chk_err:1 ; //<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>MAC<41>
u8 mac_set_err:1 ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MAC<41>
};
mtype32_ err_byte;
} BLE_STATE_ERR; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ָʾ
typedef struct
{
u8 Ble_cur_mode; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģʽ
u8 Ble_scan_state; //<2F><>ǰɨ<C7B0><C9A8>״̬<D7B4><CCAC>ɨ<EFBFBD><C9A8>δ<EFBFBD><CEB4>ʼ<EFBFBD><CABC>ɨ<EFBFBD><C9A8><EFBFBD>С<EFBFBD>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 Ble_con_state; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
u8 Ble_power_flag; //<2F><>ǰ<EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD>״̬
u8 Ble_con_MAC[12]; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>MAC
u8 Ble_adv_data[13]; //<2F><EFBFBD><E3B2A5><EFBFBD><EFBFBD>
u8 Ble_key_word_len; //<2F>ؼ<EFBFBD><D8BC>ֳ<EFBFBD><D6B3><EFBFBD>
u8 Ble_key_word[12]; //<2F>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 Ble_white_list[15][6]; //MAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 Ble_softverson[2]; //<2F><><EFBFBD><EFBFBD><EFBFBD>
u8 Ble_name[12]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 Ble_mac[6]; //<2F><><EFBFBD><EFBFBD>MAC
u8 Ble_cur_sec; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
u8 Ble_cur_pin[3]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰʹ<C7B0>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EBB2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
} BLE_WORK_STATE;
//******************************* <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>***************************************
//******************************* <20>ⲿ<EFBFBD>ӿں<D3BF><DABA><EFBFBD>***********************************
void BleInit(void);
void BleMainMachine(void);
u8 BleIfIdle(void);
u8 BleIfSleep(void);
void BlePreSleep(void);
void BleWakeSleep(void);
void BlePowerOff(void);
void BlePowerOn(void) ;
u8 BleIfPowerOn(void);
void BleForcePowerOff(TYP_POWER_STATUS data);
u8 format_ascii2hex(u8 *dest, u8 *sour, u8 sourlen);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
void BleStartInitTask(void); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void BleCentralSwitchTask(u8 switch_type); //<2F><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
u8 BleGetCurMode(void); //<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ģʽ
u8 BleConMacTask(u8 con_oeder,u8 *con_mac); //<2F><><EFBFBD>ӻ<EFBFBD><D3BB>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
u8 BleGetCurConState(void); //<2F><>ѯ<EFBFBD><D1AF>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬
void BleNameMacTask(u8 opr_type,u8* name_src);//<2F><><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ<EFBFBD>MAC
u8 BleUpdataAdvDataTask(u8* snd_data); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¹㲥<C2B9><E3B2A5><EFBFBD><EFBFBD>
void BleChangeAdvParaTask(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void BleKeyWordTask(u8 type,u8* key_word,u8 key_len);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
u8 BleGetCurKeyWord(u8* key_addr); //<2F><>ѯ<EFBFBD><D1AF>ǰ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>
void BleChkStatusTask(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
u8 BleSecChkOrSetTask(u8 sec_type); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 BleChkCurSecState(u8 **cur_pin); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>PIN
#if BLE_CENTRAL_SLAVE_MOD
void BleMacWhiteListTask(u8 type,u8* list_addr);//<2F><><EFBFBD><EFBFBD>MAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 BleScanTask(u8 scan_order); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>ɨ<EFBFBD><C9A8>
u8 BleGetCurScanState(void); //<2F><>ȡ<EFBFBD><C8A1>ǰɨ<C7B0><C9A8>״̬
#endif
void BleGetFirmVerson(u8* verson_addr); //<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE>
void BleGetCurMacAddr(u8 *cur_mac); //<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MAC
void Ble_IODeInit(void);
void BleClearResetCount(void);
TYP_POWER_STATUS BleGetPowerState(void);
//u8 BleCheckConInitMsg(void);
//u8 BleClrConInitMsg(void);
//u8 BleCheckTxInitMsg(void);
//u8 BleClrTxInitMsg(void);
//#pragma pack()
#ifdef __cplusplus
}
#endif
#endif