找回密码
 立即注册

微信扫码登录

查看: 410|回复: 2

[BLE SDK] SDK包中的一些注册函数他们的参数来自哪里?

[复制链接]

4

主题

0

回帖

30

积分

新手上路

积分
30
发表于 2024-9-3 11:18:52 | 显示全部楼层 |阅读模式
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: TLSR8258
SDK及版本: B85m_BLE_Single_Connect_SDK_V3.4.2.4_patch0001
本人新入职一公司,并且蓝牙小白(以前一直没接触过),最近公司计划开发蓝牙产品,原本以为直接用模块,结果直接用贵司8258开发;在研究贵司SDK的过程中遇到很多问题,目前以下面的最为突出:


1、比如这个函数:blc_l2cap_register_handler (app_l2cap_handler);  注册的这个  int app_l2cap_handler (u16 conn_handle, u8 *raw_pkt)它的参数来自哪里呢?在工程里面也没有看见调用了这个函数,处于很懵逼状态;


2、这个函数,blc_hci_registerControllerEventHandler(controller_event_callback);注册了这个  int controller_event_callback (u32 h, u8 *p, int n)回调函数,其参数h 、 p、 n这些参数,p表示event 数据指针,n表示event 数据长度,他们不是固定 的吗?



3、我看SDK手册有提到数据先是存到软件的RX fifo中,vendor/b85m_module demo中有my_fifo_get(&spp_tx_fifo)是在RX fifo里面取来自master的数据吗?我通过log打印出来,打印出来的数据在最前面也有一些类似包头的数据,但是看不懂在哪有定义这些包头?正常的数据是在后面一些,请问这些数据结构在哪可以查询?

48

主题

74

回帖

368

积分

版主

积分
368
发表于 2024-9-5 10:00:15 | 显示全部楼层
1. 在 BLE SDK 架构中,Controller 的数据通过 HCI 与 Host 对接,从 HCI 到 Host 数据,⾸先会在 L2CAP 层处理,使⽤下⾯ API 注册该处理函数:void blc_l2cap_register_handler (void *p)参数来自于底层协议栈,调用也是来自于底层协议栈。
2. Controller HCI event 的 callback 函数原型和注册接⼝分别为:typedef int (*hci_event_handler_t) (u32 h, u8 *para, int n)、void blc_hci_registerControllerEventHandler(hci_event_handler_t handler),callback 函数原型中 para 和 n 表⽰ event 的数据和数据⻓度,该数据和 BLE spec 中定义的⼀致。
3. spp_tx_fifo/spp_rx_fifo属于SPP协议的存储fifo,与RF Rx fifo概念不同。

0

主题

5

回帖

26

积分

新手上路

积分
26
发表于 2024-10-11 17:13:07 | 显示全部楼层
没有理解参数来自哪里的根本原因是没有理解回调函数的作用和意义,sdk中的回调函数的机制是当源码库内部某些条件达成后触发的出现调用该回调函数的行为,注意该回调函数是库内部自己调用的,谁调用函数谁负责赋值给它的参数,因此,很明显参数来自内部调用这个回调函数的函数。回调函数的意义是告诉外部应用出现了调用回调函数的行为,因此外部应用可以对回调函数进行适当的改写以便和低层做必要的交互。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2024-10-30 11:29 , Processed in 0.095524 second(s), 20 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表