diff --git a/lib/sdk/Libraries/BTLE/stack/ble-profiles/sources/apps/app/app_slave.c b/lib/sdk/Libraries/BTLE/stack/ble-profiles/sources/apps/app/app_slave.c index bc298c74595898cbbbd05fa3dc9333e41c66505b..fa2a857c1357310749330ef63f36e00a25dfecac 100644 --- a/lib/sdk/Libraries/BTLE/stack/ble-profiles/sources/apps/app/app_slave.c +++ b/lib/sdk/Libraries/BTLE/stack/ble-profiles/sources/apps/app/app_slave.c @@ -206,6 +206,12 @@ static void appSetAdvScanDataFrag(uint8_t advHandle, uint8_t location) remainLen = appSlaveCb.maxAdvDataLen[advHandle]; } + if(remainLen == 0) + { + op = HCI_ADV_DATA_OP_COMP_FRAG; + DmAdvSetData(advHandle, op, APP_LOC_2_DM_LOC(location), 0, NULL); + } + /* while there remains data to be sent */ while (remainLen > 0) { @@ -257,13 +263,15 @@ static void appSetAdvScanData(uint8_t advHandle, uint8_t mode) scanLoc = APP_MODE_2_SCAN_LOC(mode); /* set advertising data */ - if (appSlaveCb.advDataOffset[advHandle][advLoc] < appSlaveCb.advDataLen[advHandle][advLoc]) + if (appSlaveCb.advDataOffset[advHandle][advLoc] < appSlaveCb.advDataLen[advHandle][advLoc] || + appSlaveCb.advDataLen[advHandle][advLoc] == 0) { appSetAdvScanDataFrag(advHandle, advLoc); } /* set scan data */ - if (appSlaveCb.advDataOffset[advHandle][scanLoc] < appSlaveCb.advDataLen[advHandle][scanLoc]) + if (appSlaveCb.advDataOffset[advHandle][scanLoc] < appSlaveCb.advDataLen[advHandle][scanLoc] || + appSlaveCb.advDataLen[advHandle][scanLoc] == 0) { appSetAdvScanDataFrag(advHandle, scanLoc); }