From 43dc617db6351e318634678d34eabe6dd7450e9f Mon Sep 17 00:00:00 2001
From: Tobias Schneider <tobias.schneider@tado.com>
Date: Tue, 1 Oct 2019 14:24:35 +0200
Subject: [PATCH] hack(ble): Turn of encryption after closing a connection

---
 .../controller/sources/ble/lctr/lctr_sm_conn_slave.c     | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c b/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c
index 55cb9109..ce3334e7 100644
--- a/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c
+++ b/lib/sdk/Libraries/BTLE/link_layer/controller/sources/ble/lctr/lctr_sm_conn_slave.c
@@ -217,6 +217,15 @@ void lctrConnStatelessEventHandler(lctrConnCtx_t *pCtx, uint8_t event)
   {
     case LCTR_CONN_TERMINATED:
       LL_TRACE_INFO2("lctrConnStatelessEventHandler: handle=%u, state=%u, event=TERMINATED", LCTR_GET_CONN_HANDLE(pCtx), pCtx->state);
+
+	  /* card10 HACK:
+	   * After an encrypted connection is closed, the stack does not instruct the radio to turn off encryption again.
+	   * There is no direct interface to this either. lctrCalcSessionKey() does transfer the flag though. */
+      lctrDisableTxDataEnc(pCtx);
+      lctrDisableRxDataEnc(pCtx);
+      lctrCalcSessionKey(pCtx);
+	  /*END card10 HACK */
+
       lctrNotifyHostDisconnectInd(pCtx);
       lctrFreeConnCtx(pCtx);
       break;
-- 
GitLab