打印

赛普拉斯蓝牙BLE---Component API Reference

[复制链接]
1580|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阳光豆苗|  楼主 | 2016-3-30 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、GAP 函数

1.1、GAP Peripheral函数

函数原型:

CYBLE_API_RESULT_T CyBle_GappStartAdvertisement(uint8 advertisingIntervalType);

描述:

在PSOC Creator GUI中配置好BLE组件的参数之后,调用这个函数进行广播。设备就能够被GAP Central设备发现。只有设备处于GAP Peripheral 或者GAP Peripheral + Central角色的时候,才能调用这个函数。

在广播启动的时候,GAP Peripheral会收到CYBLE_EVT_GAPP_ADVERTISEMENT_START_STOP这个事件通知。另外,在调用这个函数期间,GAP Peripheral还可能收到以下通知:

CYBLE_EVT_GAP_DEVICE_CONNECTED(设备连接):如果设备连接到了GAP Central设备,就会收到这个消息。

CYBLE_EVT_TIMEOUT(超时):如果在指定的超时时间内,没有GAP Central设备与设备连接,就会收到这个消息。协议栈会在Slow advertising 开始之后自动停止广播,或者在Fast adverting超时后启动Slow adverting。

CYBLE_EVT_GAPP_ADVERTISEMENT_START_STOP(GAPP广播停止):如果设备启动或停止广播的时候都会收到这个通知。可以使用CyBle_GetState() 函数判断当前状态(是启动还是停止)。如果返回的状态是CYBLE_STATE_DISCONNECTED,那么设备会启动连续广播。

参数:

参数是快速扫描或者慢速扫描,扫描间隔为GUI中设置的时间间隔。(有待补充)

返回值:

CYBLE_ERROR_OK :成功

CYBLE_ERROR_INVALID_PARAMETER :参数无效

此函数位于:BLE.h中。

2、BLE Core 函数

函数原型:

CYBLE_API_RESULT_T CyBle_Start(CYBLE_CALLBACK_T CyBleApplCbFunc);

描述:

这个函数初始化BLE协议栈,BLE协议栈包括了BLE协议栈管理器、BLE控制器和BLE主机模块。函数负责初始化Profile 层、调度器、定时器和其他BLE组件需要的平台相关的资源。函数同时还在协议栈中注册响应BLE事件的回调函数。

注意!这个函数并没有复位协议栈。

调用这个函数之后,如果初始化BLE协议栈成功,则会产生CYBLE_EVT_STACK_ON通知。

函数参数:

函数的参数是接收来自协议栈的通知的函数。

函数返回值:

CYBLE_ERROR_OK:执行成功。

CYBLE_ERROR_INVALID_PARAMETER:函数参数为空指针。

CYBLE_ERROR_REPEATED_ATTEMPTS:多次调用这个函数,并且中间没有调用过CyBle_Shutdow()函数。

函数原型:

void CyBle_Stop(void);

函数描述:

这个函数会停止蓝牙协议栈中的所有操作,并且强制蓝牙协议栈关闭。调用CyBle_Start()函数之后,唯一可以调用的函数。

函数原型:

void CyBle_WdtRegisterIsrCallback(CYBLE_WDT_ISR_CALLBACK_T WdtIsrApplCallback);

函数描述:

这个函数为WDT中断事件注册回调函数。

参数:

一个接收WDT中断事件的应用层的回调函数。

函数原型:

#define CyBle_GetState (cyBle_State)

描述:

这个函数用于判断事件处理状态机的当前状态。

函数原型:

CYBLE_BLESS_STATE_T CyBle_GetBleSsState(void);

函数描述:

这个函数用于获取BLE子系统当前的运作模式。可以根据返回值管理系统级功耗模式。

返回值:

CYBLE_BLESS_STATE_T 类型的bleStateMode,可能值如下:

CYBLE_BLESS_STATE_ACTIVE: BLE子系统处于激活态,CPU可能处于激活模式或睡眠模式;

CYBLE_BLESS_STATE_SLEEP:BLE子系统处于睡眠态,CPU可能处于睡眠模式;

CYBLE_BLESS_STATE_ECO_ON:BLE子系统正在从深睡眠模式中唤醒,ECO启动,CPU可以转入深睡眠模式;

CYBLE_BLESS_STATE_STABLE:BLE子系统正在从深睡眠中唤醒,ECO已经稳定,CPU可以转入睡眠模式;

CYBLE_BLESS_STATE_DEEPSLEEP:BLE子系统处于深睡眠中,CPU可以转入深睡眠模式;

CYBLE_BLESS_STATE_HIBERNATE:BLE子系统正在冬眠,CPU可以进入深睡眠模式。

函数原型:

#define CyBle_SetState(state) (cyBle_state = (state))

函数描述:

用于设置事件程序状态机的状态。

函数原型:

CYBLE_API_RESULT_T CyBle_StoreAppData(uint8 * srcBuff, const uint8 destAddr[], uint32 buffLen, uint8 isForceWrite);

函数描述:

这个函数命令协议栈将应用程序特定数据备份到Flash里面。这个函数必须由应用程序调用,来备份应用程序指定的数据。如果函数没有被正确调用,那么重启之后数据将不可用。

函数参数:

uint8 isForceWrite :如果这个参数是0,那么协议栈会检查Flash是否允许写入。

返回值:

成功或者Flash不允许写入。

函数原型:

CYBLE_API_RESULT_T CyBle_StoreBondingData(uint8 isForceWrite);

函数描述:

这个函数将新绑定的数据从RAM写到指定的Flash中(Flash地址可设定)。在写之前,函数会比较RAM和Flash中的数据。如果数据相同,则无需再写。调用一次,写Flash的一行(?),应用程序应该一直调用这个函数直到函数返回CYBLE_ERROR_OK。

参数:

是否强制写入。

返回值:

成功或者无权限写入。

副作用:

这个函数会自动修改设备的时钟设置。。。。这会影响设备中的大部分硬件。

函数原型

CYBLE_API_RESULT_T CyBle_StoreStackData(uint8 isForceWrite);

函数描述:

这个函数命令协议栈将内部RAM数据存储入Flash中。

参数:

isForceWrite 是否强制写入。

函数原型:

CYBLE_API_RESULT_T CyBle_SoftReset(void);

函数描述:

调用这个函数复位BLE协议栈,包括BLE子系统的硬件寄存器。BLE协议栈转入idle模式。如果蓝牙设备在传输数据过程中出现异常,可以使用这个函数复位协议栈。这是一个阻塞函数,不会产生任何事件。

函数返回值:

返回值表明函数执行成功或者失败。

函数原型:

CYBLE_LP_MODE_T CyBle_EnterLPM(CYBLE_LP_MODE_T pwrMode);

函数描述:

这个函数要求底层BLE模块,如BLE控制器、BLE主机协议栈和BLE协议栈管理器,进入低功耗模式。应用程序应该使用这个函数使BLE低功耗子系统进入低功耗模式。

BLE协议栈进入和退出低功耗模式基于它当前的状态,因此应用程序在让CPU或者外围设备进入低功耗模式的时候应该考虑BLE协议栈的低功耗状态。

这个函数尝试设置指定的低功耗模式,如果失败,则它会尝试高一级的低功耗模式。这是因为应用程序在没事做的时候总是尝试使用最低的功耗工作。

注意,在BLE子系统处于深度睡眠状态的时候,CPU无法获取BLE子系统的寄存器值。

BLE协议栈有4种低功耗模式:

1、激活;2、睡眠;3、深度睡眠(EOF关闭);4、冬眠;

注意,某些特定条件可能会阻止BLE子系统进入指定的低功耗状态。

激活模式:

BLE子系统有三种子模式:

1、Idle;2、传输模式;3、接收模式;

这些模式能使用最大的功耗并且CPU能获取所有寄存器值。

睡眠模式:

链路层引擎和数字调制器的时钟是带开关的(???),外部晶体振荡器持续运行维护链路层的时序。如果设备正在接收或者发送数据,那么应用无法进入睡眠模式。

深度睡眠模式:

ECO停止工作,WCO用于维护链路层时序。为了减小泄露电流射频发送器中所有的调节器都关闭。这部分不太了解详细原理,有待补充。

函数原型:

CYBLE_LP_MODE_T CyBle_ExitLPM(void);

函数描述:

应用程序可以异步将BLE协议栈从低功耗模式中唤醒。唤醒操作并不是将整个芯片唤醒。这个函数阻塞式调用,当BLE协议栈从低功耗模式退出时,函数返回。调用此函数不会产生事件。如果BLE协议栈已经处于激活模式,调用这个函数不会有任何作用。

返回值:

函数返回值为BLE协议栈当前处于的功耗模式,期望值为激活模式。

函数原型:

void CyBle_ProcessEvents(void);

函数描述:

这个函数检查在BLE协议栈中排队的内部任务,如果有任务在等待的话,挂起BLE协议栈的操作。这个函数在每个‘t'间隔期间至少被调用一次,t为:

1、连接间隔或扫描间隔中较小的。。。待补充

函数原型:

CYBLE_API_RESULT_T CyBle_GetDeviceAddress(CYBLE_GAP_BD_ADDR_T* bdAddr);

函数描述:

这个API从BLE控制器的内存中读取BD设备的地址。除非BLE主机明令指出,否则这个地址应该用于BLE程序??这是一个阻塞函数,读到需要的值后它才立即返回。

函数原型:

CYBLE_API_RESULT_T CyBle_SetDeviceAddress(CYBLE_GAP_BD_ADDR_T* bdAddr);

函数描述:

这个函数将蓝牙设备地址写入BLE控制器的内存中。(此处有一句不太理解)。应用程序应该在每次改变蓝牙地址的时候调用这个函数。在蓝牙4.1核心规范中指出,蓝牙设备可以周期性的改变它私有的地址,而这个周期可以软件设定。并且对这个周期没有任何限制,应用层应该维护它的定时器已实现这个功能。

这是一个阻塞函数,且调用的时候不会产生任何事件。

函数原型:

int8 CyBle_GetRssi(void);

函数描述:

这个函数从BLE射频子系统中读取最后一次成功接收数据包的RSSI值。阻塞函数,无事件产生。

RSSI为: 接收信号强度指示值 ,范围在-85到5之间,单位dBm

函数原型:

CYBLE_API_RESULT_T CyBle_GetTxPowerLevel(CYBLE_BLESS_PWR_IN_DB_T * bleSsPwrLvl);

函数描述:

这个函数读取BLE射频的传输功耗。


沙发
zzzhui| | 2016-3-30 14:50 | 只看该作者
呵呵,这个是API的翻译吗

使用特权

评论回复
板凳
zzzhui| | 2016-3-30 14:57 | 只看该作者
RSSI为: 接收信号强度指示值 ,范围在-85到5之间,单位dBm
这个有些可以用来评估大概的距离

使用特权

评论回复
地板
okyouwin| | 2016-3-30 15:04 | 只看该作者
多谢分享。赛普拉斯蓝牙API

使用特权

评论回复
5
ji7411| | 2016-3-30 15:11 | 只看该作者
应该是BLE的API翻译,多谢楼主的分享。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

94

主题

469

帖子

8

粉丝