210 lines
5.6 KiB
C
210 lines
5.6 KiB
C
#ifndef SIMPLEBLE_H
|
||
#define SIMPLEBLE_H
|
||
|
||
#ifdef __cplusplus
|
||
extern "C"
|
||
{
|
||
#endif
|
||
|
||
//------------------------------------------------------------------------------
|
||
//--------------------------------------------------------------------------------
|
||
|
||
//#define RELEASE_VER //定义版本发布用
|
||
|
||
//------------------------------------------------------------------------------
|
||
//--------------------------------------------------------------------------------
|
||
#define NPI_TIMEOUT_EVT 0x0008
|
||
|
||
|
||
#define VERSION "v1.3"
|
||
|
||
|
||
// How often to perform periodic event
|
||
#define SBP_PERIODIC_EVT_PERIOD 100//必须是100ms
|
||
|
||
#define MAX_PERIPHERAL_MAC_ADDR 5//最大记录的从机地址
|
||
|
||
#define MAC_ADDR_CHAR_LEN 12//mac地址的字符长度 (一个字节等于两个字符)
|
||
|
||
|
||
typedef enum
|
||
{
|
||
PARA_ALL_FACTORY = 0, //全部恢复出厂设置
|
||
PARA_PARI_FACTORY = 1, //配对信息恢复出厂设置-相当于清除配对信息
|
||
}PARA_SET_FACTORY;
|
||
|
||
typedef enum
|
||
{
|
||
BLE_ROLE_PERIPHERAL = 0, //从机角色
|
||
BLE_ROLE_CENTRAL = 1, //主机角色
|
||
}BLE_ROLE;
|
||
|
||
// Application states
|
||
enum
|
||
{
|
||
BLE_STATE_IDLE, //无连接-空闲状态
|
||
BLE_STATE_CONNECTING, //连接中...
|
||
BLE_STATE_CONNECTED, //已连接上
|
||
BLE_STATE_DISCONNECTING, //断开连接中
|
||
BLE_STATE_ADVERTISING //从机广播中
|
||
};
|
||
|
||
enum
|
||
{
|
||
BLE_MODE_SERIAL, // 串口透传模式 【默认】
|
||
BLE_MODE_DRIVER, // 直驱模式
|
||
BLE_MODE_iBeacon, // iBeacon 广播模式
|
||
BLE_MODE_MAX,
|
||
};
|
||
|
||
typedef struct
|
||
{
|
||
/*
|
||
0---------9600
|
||
1---------19200
|
||
2---------38400
|
||
3---------57600
|
||
4---------115200
|
||
*/
|
||
uint8 baudrate; // 波特率
|
||
uint8 parity; //校验位
|
||
uint8 stopbit; //停止位
|
||
uint8 mode; //工作模式 0:透传 , 1: 直驱 , 2: iBeacon
|
||
uint8 name[12]; //设备名称
|
||
|
||
BLE_ROLE role; //主从模式 0: 从机 1: 主机
|
||
|
||
uint8 pass[7]; //密码
|
||
|
||
/*
|
||
Para: 0 ~ 1
|
||
0: 连接不需要密码
|
||
1: 连接需要密码
|
||
*/
|
||
uint8 type; //鉴权模式
|
||
|
||
|
||
uint8 mac_addr[13]; //本机mac地址
|
||
|
||
uint8 connl_status; //连接最后一次的状态
|
||
uint8 connect_mac_status; //连接指定地址的返回状态
|
||
uint8 connect_mac_addr[13]; //指定去连接的mac地址
|
||
|
||
//曾经成功连接过的从机地址
|
||
uint8 ever_connect_mac_status[MAX_PERIPHERAL_MAC_ADDR][13];
|
||
|
||
uint8 verion[5]; //版本信息 v1.0 ~ v9.9
|
||
|
||
/*
|
||
Para: 000000~009999
|
||
000000 代表持续连接,其
|
||
余代表尝试的毫秒数
|
||
Default:001000
|
||
*/
|
||
uint16 try_connect_time_ms; // 尝试连接时间
|
||
int8 rssi; // RSSI 信号值
|
||
uint8 rxGain; // 接收增益强度
|
||
uint8 txPower; // 发射信号强度
|
||
uint16 ibeacon_adver_time_ms; // 广播间隔
|
||
uint8 workMode; // 模块工作类型 0: 立即工作, 1: 等待AT+CON 或 AT+CONNL 命令
|
||
}SYS_CONFIG;
|
||
extern SYS_CONFIG sys_config;
|
||
|
||
|
||
extern void Serial_Delay(int times);
|
||
|
||
//flag: PARA_ALL_FACTORY: 全部恢复出厂设置
|
||
//flag: PARA_PARI_FACTORY: 清除配对信息
|
||
extern void simpleBLE_SetAllParaDefault(PARA_SET_FACTORY flag);
|
||
extern void simpleBLE_SaveAllDataToFlash();
|
||
|
||
extern void PrintAllPara(void);
|
||
extern bool simpleBLE_AT_CMD_Handle(uint8 *pBuffer, uint16 length);
|
||
|
||
extern void simpleBLE_NPI_init(void);
|
||
|
||
extern void UpdateRxGain(void);
|
||
extern void UpdateTxPower(void);
|
||
|
||
extern void LedSetState(uint8 onoff);
|
||
extern void simpleBle_SetRssi(int8 rssi);
|
||
|
||
|
||
extern BLE_ROLE GetBleRole();
|
||
|
||
extern uint32 str2Num(uint8* numStr, uint8 iLength);
|
||
|
||
extern void simpleBle_PrintPassword();
|
||
|
||
extern uint8* GetAttDeviceName();
|
||
extern void performPeriodicTask( void );
|
||
|
||
extern char *bdAddr2Str ( uint8 *pAddr );
|
||
extern void CheckKeyForSetAllParaDefault(void);
|
||
|
||
extern bool CheckIfUse_iBeacon();
|
||
extern bool simpleBle_GetIfNeedPassword();
|
||
|
||
extern void simpleBLE_SetToConnectFlag(bool bToConnect);
|
||
extern bool simpleBLE_GetToConnectFlag(uint8 *Addr);
|
||
|
||
|
||
extern uint32 Get_iBeaconAdvertisingInterral();
|
||
extern void simpleBLE_SetPeripheralMacAddr(uint8 *pAddr);
|
||
extern bool simpleBLE_GetPeripheralMacAddr(uint8 *pAddr);
|
||
|
||
|
||
|
||
extern uint8 simpleBLEState;
|
||
extern uint16 simpleBLECharHdl;
|
||
extern uint16 simpleBLECharHd6;
|
||
extern bool simpleBLEChar6DoWrite;
|
||
extern bool simpleBLEChar6DoWrite2;
|
||
|
||
|
||
#if defined (RELEASE_VER)
|
||
#define LCD_WRITE_STRING(str, option)
|
||
#define LCD_WRITE_SCREEN(line1, line2)
|
||
#define LCD_WRITE_STRING_VALUE(title, value, format, line)
|
||
|
||
#if defined (HAL_LCD)
|
||
#undef HAL_LCD
|
||
#define HAL_LCD FALSE
|
||
#endif
|
||
|
||
#else
|
||
// LCD macros
|
||
#if HAL_LCD == TRUE
|
||
#define LCD_WRITE_STRING(str, option) HalLcdWriteString( (str), (option))
|
||
#define LCD_WRITE_SCREEN(line1, line2) HalLcdWriteScreen( (line1), (line2) )
|
||
#define LCD_WRITE_STRING_VALUE(title, value, format, line) HalLcdWriteStringValue( (title), (value), (format), (line) )
|
||
#else
|
||
#define LCD_WRITE_STRING(str, option)
|
||
#define LCD_WRITE_SCREEN(line1, line2)
|
||
#define LCD_WRITE_STRING_VALUE(title, value, format, line)
|
||
#endif
|
||
#endif
|
||
|
||
|
||
|
||
|
||
|
||
extern uint8 simpleBLETaskId; // 主机任务
|
||
extern uint8 simpleBLEState;
|
||
extern uint16 simpleBLECharHdl;
|
||
extern uint16 simpleBLECharHd6;
|
||
extern bool simpleBLECentralCanSend;
|
||
extern bool simpleBLEChar6DoWrite;
|
||
extern uint8 simpleBLEPeripheral_TaskID; // 从机任务
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif /* SIMPLEBLE_H */
|