From 93f50e78184631c11057e47cfbc95bd7af6d536f Mon Sep 17 00:00:00 2001
From: schneider <schneider@blinkenlichts.net>
Date: Thu, 18 Jun 2020 21:46:41 +0200
Subject: [PATCH] fix(ble): Update advertising data even when it is empty

---
 .../stack/ble-profiles/sources/apps/app/app_slave.c  | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

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 bc298c745..fa2a857c1 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);
   }
-- 
GitLab