关于如何获得cc2541 MAC地址的问题
请问TI的工程师:
HCI_ReadBDADDRCmd()是可以读mac addr,但是这个函数的返回值为空,并且参数也为空,请问他怎么得到mac地址的?
central role中在 simpleBLECentralEventCB回调的GAP_DEVICE_DISCOVERY_EVENT事件中,你扫描一下就会在这边得到扫描到的所有设备的地址
你会收到一个 HCI_COMMAND_COMPLETE_EVENT_CODE 事件.
举例, 假如你用的是simpleBLEPeripheral工程, 到peripheral.c 中, 找到 static void gapRole_ProcessOSALMsg( osal_event_hdr_t *pMsg )
其中
case HCI_GAP_EVENT_EVENT:
if ( pMsg->status == HCI_COMMAND_COMPLETE_EVENT_CODE )
加个判断:
if ( pPkt->cmdOpcode == HCI_READ_BDADDR )
然后 pPkt 里面应该就有地址了.
参考链接 http://www.deyisupport.com/question_answer/wireless_connectivity/f/45/t/22874.aspx?keyMatch=HCI_COMMAND_COMPLETE_EVENT_CODE&tisearch=Search-CN
For CC2540 and CC2541, this is a 48-bit IEEE address stored with least-significant byte first at XDATA address 0x780E.
可以这样读取:mac1=XREG(0x780E);
mac2=XREG(0x780f);
mac3=XREG(0x7810);等
测试结果正确!