errorcode_t gecko_stack_init(const gecko_configuration_t*config)
此函数需要单一参数,即指向 gecko_configuration_t 结构体的指针。它的目的在于使用结构体中提供的参数配置和初始化
Bluetooth 协议栈。一旦调用函
数 gecko_stack_init(),就必须单独初始化使用的各个协议栈组件。这种单独初始化不包含那些不必要的协议栈组件,从而可实现内存优化。
可以使用以下 API 来单独初始化协议栈组件:
• gecko_bgapi_class_dfu_init();
• gecko_bgapi_class_system_init();
• gecko_bgapi_class_le_gap_init();
• gecko_bgapi_class_le_connection_init();
• gecko_bgapi_class_gatt_init();
• gecko_bgapi_class_gatt_server_init();
• gecko_bgapi_class_endpoint_init();
• gecko_bgapi_class_hardware_init();
• gecko_bgapi_class_flash_init();
• gecko_bgapi_class_test_init();
• gecko_bgapi_class_sm_init();
struct gecko_cmd_packet*gecko_wait_event(void)
这是一个阻塞函数,等待 Bluetooth 协议栈发出事件并进行阻塞,直至收到事件。一旦收到事件,将返回指向 gecko_cmd_packet 结构体的指针。
如果已在 Bluetooth 协议栈配置中启用 EM 睡眠模式,当未收到 Bluetooth 协议栈发出的任何事件时,设备将自动进入 EM1 或 EM2 模式。要确保设备只
要有可能就进入功耗最低的睡眠模式,最简单的方法就是使用 gecko_wait_event()。
章节 5. Bluetooth 协议栈事件处理 详细讨论了 Bluetooth 协议栈的事件处理。
struct gecko_cmd_packet* gecko_peek_event(void)
这是一个非阻塞函数,用于请求 Bluetooth 协议栈发出 Bluetooth 事件。当请求了事件且事件队列不为空时,将返回指向 gecko_cmd_packet 结构体的指针。
如果事件队列中没有任何事件,则返回 NULL。
当使用此非阻塞事件侦听器时,必须由应用代码管理 EM 睡眠模式,因为 Bluetooth 协议栈不会自动管理它们。睡眠模式管理是使用 gecko_can_sleep_ms()
和 gecko_sleep_for_ms() 函数实现的,稍后会有对这两个函数的讨论。
章节 5. Bluetooth 协议栈事件处理 详细讨论了协议栈的事件处理。
int gecko_event_pending(void)
此函数可检查事件队列中是否有任何待处理
Bluetooth 协议栈事件。如果发现待处理 Bluetooth 事件,此函数会返回一个非零值,表明事件应由
gecko_peek_event() 或 gecko_wait_event() 处理。如果未发现任何事件,则返回零。
uint32 gecko_can_sleep_ms(void)
此函数用于确定
Bluetooth 协议栈可以进入睡眠模式的时长。返回值是协议栈可在下一次 Bluetooth 操作必须出现之前进入睡眠模式的毫秒数。如果无法
进入睡眠模式,则返回零。此函数只能与非阻塞 gecko_peek_event() 事件处理一起使用。
uint32 gecko_sleep_for_ms(uint32 max)
此函数用于使协议栈进入 EM 睡眠模式,持续时间为此函数的单一参数中设置的最大毫秒数。返回值为实际处于睡眠模式的毫秒数。协议栈可能会因为外
部事件而被唤醒。此函数只能与非阻塞 gecko_peek_event() 事件处理一起使用。
native_gecko.h
该文件用于不具有 RTOS 的应用中。它使用直接函数调用向 Bluetooth 协议栈提供 IPC(进程间通信)。
ncp_gecko.h
此文件在为主机提供 NCP 功能的应用中使用。 它使用 NCP 头作为函数调用来向 Bluetooth 协议栈提供 IPC。
host_gecko.h 和 gecko_bglib.h
这些文件可用于开发适用于外部主机的应用程序。host_gecko.h 拥有 API 定义,而 gecko_bglib.h 包含主机应用程序和 BGAPI 串行协议之间的适配层。
rtos_gecko.h
当为
Micrium OS 构建应用时,使用 rtos_gecko.h。Bluetooth 协议栈是 Micrium OS 的独立任务,并使用其电源、睡眠和内存管理。rtos_gecko.h 通过
Micrium OS 中任何任务的 Bluetooth 协议栈为 IPC 提供封装程序。该文件包含 Bluetooth 协议栈 API 及该协议栈的命令和事件,以及一个 Bluetooth 协议
栈配置 API。
UG136: Silicon Labs Bluetooth
®
C Application Developer's Guide
项目结构
silabs.com | Building a more connected world. Rev. 1.7 | 8