From e8bcfa04973075b367c2c2d0e5a12bb0aff636f3 Mon Sep 17 00:00:00 2001
From: Chris Manton <cmanton@google.com>
Date: Thu, 4 Nov 2021 22:33:30 -0700
Subject: [PATCH] btm_history: Output only if state has changed

Bug: 188074901
Tag: #refactor
Test: gd/cert/run
Change-Id: If51f5603ad47c862d34d2eb0483b5328ee486e6e
---
 system/stack/btm/btm_sec.cc  | 10 ++++++----
 system/stack/smp/smp_main.cc | 12 ++++++++++++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/system/stack/btm/btm_sec.cc b/system/stack/btm/btm_sec.cc
index 3a1790f7e35..b93e9222b72 100644
--- a/system/stack/btm/btm_sec.cc
+++ b/system/stack/btm/btm_sec.cc
@@ -4554,10 +4554,12 @@ static void btm_sec_change_pairing_state(tBTM_PAIRING_STATE new_state) {
             btm_pair_state_descr(btm_cb.pairing_state),
             btm_pair_state_descr(new_state), btm_cb.pairing_flags);
 
-  BTM_LogHistory(
-      kBtmLogTag, btm_cb.pairing_bda, "Pairing state changed",
-      base::StringPrintf("%s => %s", btm_pair_state_descr(btm_cb.pairing_state),
-                         btm_pair_state_descr(new_state)));
+  if (btm_cb.pairing_state != new_state) {
+    BTM_LogHistory(kBtmLogTag, btm_cb.pairing_bda, "Pairing state changed",
+                   base::StringPrintf(
+                       "%s => %s", btm_pair_state_descr(btm_cb.pairing_state),
+                       btm_pair_state_descr(new_state)));
+  }
   btm_cb.pairing_state = new_state;
 
   if (new_state == BTM_PAIR_STATE_IDLE) {
diff --git a/system/stack/smp/smp_main.cc b/system/stack/smp/smp_main.cc
index ed5d94c8150..b7aaac9a59b 100644
--- a/system/stack/smp/smp_main.cc
+++ b/system/stack/smp/smp_main.cc
@@ -25,6 +25,12 @@
 
 #include "osi/include/log.h"
 
+namespace {
+
+constexpr char kBtmLogTag[] = "SMP";
+
+}
+
 const char* const smp_state_name[] = {
     "SMP_STATE_IDLE",
     "SMP_STATE_WAIT_APP_RSP",
@@ -937,6 +943,12 @@ void smp_set_state(tSMP_STATE state) {
     SMP_TRACE_DEBUG("State change: %s(%d) ==> %s(%d)",
                     smp_get_state_name(smp_cb.state), smp_cb.state,
                     smp_get_state_name(state), state);
+    if (smp_cb.state != state) {
+      BTM_LogHistory(
+          kBtmLogTag, smp_cb.pairing_ble_bd_addr, "Security state changed",
+          base::StringPrintf("%s => %s", smp_get_state_name(smp_cb.state),
+                             smp_get_state_name(state)));
+    }
     smp_cb.state = state;
   } else {
     SMP_TRACE_DEBUG("smp_set_state invalid state =%d", state);
-- 
GitLab