在BLE應用過程中,一般都會自定義服務或特征的UUID,如果使用預設的16位方式定義,那麼UUID的一部分将由TI的協定棧自動添加,為了完全控制UUID長度和内容,我們 可以把他定義為128位的,方式如下:
定義一個宏:
#define TI_UUID(uuid) 0x0,0xb0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x51,0x04,LO_UINT16(uuid),HI_UINT16(uuid),0x00,0xF0
定義服務UUID時可以引用上述宏:
// Simple GATT Profile Service UUID: 0xFFF0
CONST uint8 simpleProfileServUUID[ATT_UUID_SIZE] =
{
TI_UUID(SIMPLEPROFILE_SERV_UUID)
};
其中SIMPLEPROFILE_SERV_UUID是我們指定的服務UUID的一部分:
// Simple Profile Service UUID
#define SIMPLEPROFILE_SERV_UUID 0xEFE0
這樣便可以合成了共16位元組,128位的UUID,每一個位元組我們都可以自定義。
接下來,該服務包含的特征也用同樣的方式定義出來,然後添加在simpleProfileAttrTbl[]數組中,注意修改該數組裡相應内容的UUID大小,16位的UUID要用ATT_BT_UUID_SIZE來定義,128位的要用ATT_UUID_SIZE來定義,否則會産生錯誤。同時也要注意READ,WRITE回調函數中的uuid大小。