先问两个问题。先谢谢ti的工程师们,再感谢下论坛的广大网友
注册一个服务的相关需要什么东西。
static gattAttribute_t irTempAttrTbl[] = { // Sensor Profile Services { { ATT_BT_UUID_SIZE, primaryServiceUUID }, /* type */ GATT_PERMIT_READ, /* permissions */ 0, /* handle */ (uint8 *)&irTempService /* pValue */ }, // Characteristic Declaration { { ATT_BT_UUID_SIZE, characterUUID }, GATT_PERMIT_READ, 0, &irTempDataProps }, // Characteristic Value "Data" { { TI_UUID_SIZE, irTempDataUUID }, GATT_PERMIT_READ, 0, sendData// irTempData }, // Characteristic configuration { { ATT_BT_UUID_SIZE, clientCharCfgUUID }, GATT_PERMIT_READ | GATT_PERMIT_WRITE, 0, (uint8 *)irTempDataConfig }, // Characteristic User Description { { ATT_BT_UUID_SIZE, charUserDescUUID }, GATT_PERMIT_READ, 0, irTempDataUserDesp }, // Characteristic Declaration { { ATT_BT_UUID_SIZE, characterUUID }, GATT_PERMIT_READ, 0, &irTempCfgProps }, // Characteristic Value "Configuration" { { TI_UUID_SIZE, irTempConfUUID }, GATT_PERMIT_READ | GATT_PERMIT_WRITE, 0, &irTempCfg }, // Characteristic User Description { { ATT_BT_UUID_SIZE, charUserDescUUID }, GATT_PERMIT_READ, 0, irTempCfgUserDesp }, };
开发板 sensortag
问题1 gattAttribute_t xxxxxxTbl[] 这个character数组(表的)写法,每一个service都是注册了一个xxxxxxTbl[]。但是几乎每一个都是不同的,有些相类似的也没有看出类似点。
这个问题其实想问的是
问题2 GATTServApp_RegisterService( irTempAttrTbl,GATT_NUM_ATTRS( irTempAttrTbl ),&irTempCBs );
因为这个函数是没法看到定义的。想知道这个函数的实现方式,或者说这个函数调用了什么。以后操作这个服务如何操作。那个api函数可以操作这些函数。
关于GATTServApp_RegisterService ,您可以打开工程,通过使用搜索功能Edit--> Find and replace-->Find in files...来查看哪些函数调用了该函数
第一次发贴,不太会用功能,问得问题也是很乱七八糟。这个功能我已经造就会使用了,我想问的是GATTServApp_RegisterService 这个函数中调用了那些API函数。这样我就可以了解注册服务之后的过程。也就是想问问注册服务之后osal会做什么。
这次的第二个问题,也就是上贴的第一个问题,就是想知道。 gattAttribute_t XXXXAttrTbl[]。这个服务注册的列表是怎么来写的。和注册的服务是啥关系。看了很多XXXXAttrTbl。感觉每一个都不太相同,这是怎么规定的。
用的开发板是sensortag 平板电脑是 nexus 7(2012)
shaoxuan,
这个是根据BLE 的spec 来定义的。
你可以看到表的第一个成员:
{
{ ATT_BT_UUID_SIZE, primaryServiceUUID },
/* type */
GATT_PERMIT_READ,
/* permissions */
0,
/* handle */
(uint8 *)&irTempService
/* pValue */
},
看到我标黄标红的地方没? 这个就是spec的要求。你就照抄把 :)
有兴趣的话可以去看一下蓝牙spec 的 ATT 层的解释:)
static gattAttribute_t irTempAttrTbl[] =
{
// Sensor Profile Services
{
{ ATT_BT_UUID_SIZE, primaryServiceUUID }, /* type */
GATT_PERMIT_READ, /* permissions */
0, /* handle */
(uint8 *)&irTempService /* pValue */
},
// Characteristic Declaration
{
{ ATT_BT_UUID_SIZE, characterUUID },
GATT_PERMIT_READ,
0,
&irTempDataProps
},
// Characteristic Value "Data"
{
{ TI_UUID_SIZE, irTempDataUUID },
GATT_PERMIT_READ,
0,
irTempData
},
// Characteristic configuration
{
{ ATT_BT_UUID_SIZE, clientCharCfgUUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8 *)irTempDataConfig
},
// Characteristic User Description
{
{ ATT_BT_UUID_SIZE, charUserDescUUID },
GATT_PERMIT_READ,
0,
irTempDataUserDesp
},
// Characteristic Declaration
{
{ ATT_BT_UUID_SIZE, characterUUID },
GATT_PERMIT_READ,
0,
&irTempCfgProps
},
// Characteristic Value "Configuration"
{
{ TI_UUID_SIZE, irTempConfUUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
&irTempCfg
},
// Characteristic User Description
{
{ ATT_BT_UUID_SIZE, charUserDescUUID },
GATT_PERMIT_READ,
0,
irTempCfgUserDesp
},
};
在这个数组的每一个元素中,我用红色添加背景的东西该有顺序应该就是写这个表的核心问题。我想问的是,这个顺序和对应关系应该怎么理解。
应该怎么看spec呢,是那些章节,这个实在有点多,希望指点下看的章节。
shaoxuan,
要理解你标记的内容,最好看一下蓝牙spec 里面的ATT和 GATT 的相关内容。
你从bluetooth org下载到spec的话,可以 从第 2113页开始看。
这是要看完整个Volume5么,感觉有好多。
shaoxuan,
建议你看一下论坛置顶的教学视频吧,里面应该有介绍。
这个看过了,是一个很笼统的介绍,除了看spec,还有别的办法么。多谢你要是没有办法我就老实去看spec吧。
shaoxuan,
最好的办法还是老实去看spec :)
既然已经觉得视频的内容已经不够,那么spec是最好的选择,其实关于ATT和GATT的内容也不多,就那么一些,看过你就会了解。
好了,谢谢你的帮助,祝你工作顺利,心情愉快。嘿嘿。我也去干活了。
这是讲ATT和GATT的章节么。怎么感觉看了半天不太对啊。如果确实是的话,原谅我的英文太差。
shaoxuan,
你的英语肯定足够好了 :)
我说的是最新的4.1 版本的spec, 你有可能在看4.0的。
不管哪个版本,你可以这样找,vol 3: core system package [Host Volume] -> Part F: Attribute Protocol(ATT) , 接下来一章就是 Part G: Generic Attribute Profile(GATT)
祝你好运!