Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7952bb7 authored by William Escande's avatar William Escande Committed by Cherrypicker Worker
Browse files

Use lazy static initialization

global static initialization order is an issue in cpp.
We need to switch to lazy static to allow runtime config tweak

Test: atest bt_host_test_bta
Bug: 263323082
Change-Id: Ie14ee76a9577f6c957359deb80d8ec548a5b2067
(cherry picked from commit 91e97e17)
Merged-In: Ie14ee76a9577f6c957359deb80d8ec548a5b2067
parent d86c8b8c
Loading
Loading
Loading
Loading
+375 −317
Original line number Diff line number Diff line
@@ -44,14 +44,6 @@
#define BTA_DM_AVOID_SCATTER_A2DP TRUE
#endif

/* For Insight, PM cfg lookup tables are runtime configurable (to allow tweaking
 * of params for power consumption measurements) */
#ifndef BTE_SIM_APP
#define tBTA_DM_PM_TYPE_QUALIFIER const
#else
#define tBTA_DM_PM_TYPE_QUALIFIER
#endif

const tBTA_DM_CFG bta_dm_cfg = {
    /* page timeout in 625uS */
    BTA_DM_PAGE_TIMEOUT,
@@ -134,16 +126,21 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_CFG
        {BTA_ID_GATTS, BTA_ALL_APP_ID, 15}  /* gatts spec table */
};

tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC* get_bta_dm_pm_spec() {
  static tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC
      bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
          /* AG : 0 */
          {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
           (BTA_DM_PM_SSR2),                   /* the SSR entry */
           {
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff  */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_SNIFF_SCO_OPEN_IDX, 7000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000},
@@ -161,9 +158,12 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_PARK, 5000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  park */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open sniff */
               {{BTA_DM_PM_PARK, 5000},
@@ -180,11 +180,15 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_SNIFF, 5000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_SNIFF, 1000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* busy */
               {{BTA_DM_PM_NO_ACTION, 0},
@@ -197,11 +201,16 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 5000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
               {{BTA_DM_PM_SNIFF_HD_IDLE_IDX, 5000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
               {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 0},
@@ -216,11 +225,16 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  sniff */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000},
                {BTA_DM_PM_NO_ACTION, 0}},                        /* idle */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
@@ -234,10 +248,14 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_SNIFF6, BTA_DM_PM_HH_OPEN_DELAY},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  sniff */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close, used for HH suspend */
               {{BTA_DM_PM_SNIFF6, BTA_DM_PM_HH_IDLE_DELAY},
@@ -254,10 +272,14 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_SNIFF_HH_OPEN_IDX, BTA_DM_PM_HH_OPEN_DELAY},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  sniff */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close, used for HH suspend */
               {{BTA_DM_PM_SNIFF_HH_IDLE_IDX, BTA_DM_PM_HH_IDLE_DELAY},
@@ -274,11 +296,15 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_ACTIVE, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  active */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_SNIFF_A2DP_IDX, BTA_FTC_IDLE_TO_SNIFF_DELAY_MS},
                {BTA_DM_PM_NO_ACTION, 0}},                        /* idle */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
@@ -292,11 +318,15 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_ACTIVE, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  active */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_SNIFF_A2DP_IDX, BTA_FTS_OPS_IDLE_TO_SNIFF_DELAY_MS},
                {BTA_DM_PM_NO_ACTION, 0}},                        /* idle */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
@@ -310,9 +340,12 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff  */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
               {{BTA_DM_PM_NO_ACTION, 0},
@@ -329,11 +362,15 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_ACTIVE, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  active */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
                {BTA_DM_PM_NO_ACTION, 0}},                        /* idle */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
@@ -347,11 +384,15 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_ACTIVE, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  active */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
                {BTA_DM_PM_NO_ACTION, 0}},                        /* idle */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
@@ -366,9 +407,12 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_SNIFF, 7000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff  */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_SNIFF3, 7000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
               {{BTA_DM_PM_SNIFF, 7000},
@@ -385,47 +429,60 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
           {
               {{BTA_DM_PM_SNIFF, 3000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  sniff */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_SNIFF4, 3000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}},    /* busy */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
     }}
           }},

          /* GATTC : 14 */
    ,
          {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
           (BTA_DM_PM_SSR2),                   /* the SSR entry */
           {
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  active */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}},   /* conn close  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_ACTION, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close   */
               {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000},
                {BTA_DM_PM_NO_ACTION, 0}},                        /* idle */
               {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
               {{BTA_DM_PM_RETRY, 5000},
                {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
     }}
           }},

          /* GATTS : 15 */
    ,
          {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
           (BTA_DM_PM_SSR2),                   /* the SSR entry */
           {
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn open  active */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
         {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* conn close  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco open  */
               {{BTA_DM_PM_NO_PREF, 0},
                {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
               {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
               {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
               {{BTA_DM_PM_RETRY, 5000},
@@ -445,6 +502,8 @@ tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
          {BTA_DM_PM_NO_PREF}  /* pm_spec USER_DEFINED_1 */
#endif                   /* BTE_SIM_APP */
      };
  return bta_dm_pm_spec;
}

/* Please refer to the SNIFF table definitions in bta_api.h.
 *
@@ -541,7 +600,6 @@ tBTA_DM_SSR_SPEC bta_dm_ssr_spec[] = {
tBTA_DM_SSR_SPEC* p_bta_dm_ssr_spec = &bta_dm_ssr_spec[0];

const tBTA_DM_PM_CFG* p_bta_dm_pm_cfg = &bta_dm_pm_cfg[0];
const tBTA_DM_PM_SPEC* p_bta_dm_pm_spec = &bta_dm_pm_spec[0];
const tBTM_PM_PWR_MD* p_bta_dm_pm_md = &bta_dm_pm_md[0];

/* The performance impact of EIR packet size
+9 −1
Original line number Diff line number Diff line
@@ -470,8 +470,16 @@ typedef struct {

extern const uint16_t bta_service_id_to_uuid_lkup_tbl[];

/* For Insight, PM cfg lookup tables are runtime configurable (to allow tweaking
 * of params for power consumption measurements) */
#ifndef BTE_SIM_APP
#define tBTA_DM_PM_TYPE_QUALIFIER const
#else
#define tBTA_DM_PM_TYPE_QUALIFIER
#endif

extern const tBTA_DM_PM_CFG* p_bta_dm_pm_cfg;
extern const tBTA_DM_PM_SPEC* p_bta_dm_pm_spec;
tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC* get_bta_dm_pm_spec();
extern const tBTM_PM_PWR_MD* p_bta_dm_pm_md;
extern tBTA_DM_SSR_SPEC* p_bta_dm_ssr_spec;

+8 −7
Original line number Diff line number Diff line
@@ -344,7 +344,8 @@ static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
      break;
  }

  /* if no entries are there for the app_id and subsystem in p_bta_dm_pm_spec*/
  /* if no entries are there for the app_id and subsystem in
   * get_bta_dm_pm_spec()*/
  if (i > p_bta_dm_pm_cfg[0].app_id) {
    LOG_DEBUG("Ignoring power management callback as no service entries exist");
    return;
@@ -365,18 +366,18 @@ static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
  int index = BTA_DM_PM_SSR0;
  if ((BTA_SYS_CONN_OPEN == status) && p_dev &&
      (p_dev->Info() & BTA_DM_DI_USE_SSR)) {
    index = p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].ssr;
    index = get_bta_dm_pm_spec()[p_bta_dm_pm_cfg[i].spec_idx].ssr;
  } else if (BTA_ID_AV == id) {
    if (BTA_SYS_CONN_BUSY == status) {
      /* set SSR4 for A2DP on SYS CONN BUSY */
      index = BTA_DM_PM_SSR4;
    } else if (BTA_SYS_CONN_IDLE == status) {
      index = p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].ssr;
      index = get_bta_dm_pm_spec()[p_bta_dm_pm_cfg[i].spec_idx].ssr;
    }
  }

  /* if no action for the event */
  if (p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx]
  if (get_bta_dm_pm_spec()[p_bta_dm_pm_cfg[i].spec_idx]
          .actn_tbl[status][0]
          .power_mode == BTA_DM_PM_NO_ACTION) {
    if (BTA_DM_PM_SSR0 == index) /* and do not need to set SSR, return. */
@@ -395,7 +396,7 @@ static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,

  /* if subsystem has no more preference on the power mode remove
 the cb */
  if (p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx]
  if (get_bta_dm_pm_spec()[p_bta_dm_pm_cfg[i].spec_idx]
          .actn_tbl[status][0]
          .power_mode == BTA_DM_PM_NO_PREF) {
    if (j != bta_dm_conn_srvcs.count) {
@@ -532,7 +533,7 @@ static void bta_dm_pm_set_mode(const RawAddress& peer_addr,
      }

      p_pm_cfg = &p_bta_dm_pm_cfg[j];
      p_pm_spec = &p_bta_dm_pm_spec[p_pm_cfg->spec_idx];
      p_pm_spec = &get_bta_dm_pm_spec()[p_pm_cfg->spec_idx];
      p_act0 = &p_pm_spec->actn_tbl[p_srvcs->state][0];
      p_act1 = &p_pm_spec->actn_tbl[p_srvcs->state][1];

@@ -781,7 +782,7 @@ static void bta_dm_pm_ssr(const RawAddress& peer_addr, const int ssr) {
    for (int j = 1; j <= p_bta_dm_pm_cfg[0].app_id; j++) {
      /* find the associated p_bta_dm_pm_cfg */
      const tBTA_DM_PM_CFG& config = p_bta_dm_pm_cfg[j];
      current_ssr_index = p_bta_dm_pm_spec[config.spec_idx].ssr;
      current_ssr_index = get_bta_dm_pm_spec()[config.spec_idx].ssr;
      if ((config.id == service.id) && ((config.app_id == BTA_ALL_APP_ID) ||
                                        (config.app_id == service.app_id))) {
        LOG_INFO("Found connected service:%s app_id:%d peer:%s spec_name:%s",