diff --git a/include/hardware/ble_advertiser.h b/include/hardware/ble_advertiser.h
index f486ed8..a474ce1 100644
--- a/include/hardware/ble_advertiser.h
+++ b/include/hardware/ble_advertiser.h
@@ -23,43 +23,47 @@
 #include "bt_common_types.h"
 #include "bt_gatt_types.h"
 
-using std::vector;
-
-/** Callback invoked when multi-adv operation has completed */
-using BleAdvertiserCb = base::Callback<void(uint8_t /* status */)>;
+struct AdvertiseParameters {
+  uint16_t min_interval;
+  uint16_t max_interval;
+  uint8_t adv_type;
+  uint8_t channel_map;
+  uint8_t tx_power;
+};
 
 class BleAdvertiserInterface {
  public:
   virtual ~BleAdvertiserInterface() = default;
 
+  /** Callback invoked when multi-adv operation has completed */
+  using Callback = base::Callback<void(uint8_t /* status */)>;
+
   /** Registers an advertiser with the stack */
   virtual void RegisterAdvertiser(
-      base::Callback<void(uint8_t /* advertiser_id */, uint8_t /* status */)>) = 0;
-
-  /*  This function disable a Multi-ADV instance */
-  virtual void Unregister(uint8_t advertiser_id) = 0;
-
-  /** Set the advertising data or scan response data */
-  virtual void SetData(bool set_scan_rsp, vector<uint8_t> data) = 0;
-
-  /** Start or stop advertising */
-  virtual void Enable(bool start, BleAdvertiserCb cb) = 0;
+      base::Callback<void(uint8_t /* advertiser_id */,
+                          uint8_t /* status */)>) = 0;
 
   /* Set the parameters as per spec, user manual specified values */
-  virtual void MultiAdvSetParameters(int advertiser_id, int min_interval,
-                                     int max_interval, int adv_type,
-                                     int chnl_map, int tx_power,
-                                     BleAdvertiserCb cb) = 0;
+  virtual void SetParameters(int advertiser_id, int min_interval,
+                             int max_interval, int adv_type, int chnl_map,
+                             int tx_power, Callback cb) = 0;
 
-  /* Setup the data for the specified instance */
-  virtual void MultiAdvSetInstData(int advertiser_id, bool set_scan_rsp,
-                                   vector<uint8_t> data,
-                                   BleAdvertiserCb cb) = 0;
+  /* Setup the data */
+  virtual void SetData(int advertiser_id, bool set_scan_rsp,
+                       std::vector<uint8_t> data, Callback cb) = 0;
 
-  /* Enable the advertising instance as per spec */
-  virtual void MultiAdvEnable(uint8_t advertiser_id, bool enable,
-                              BleAdvertiserCb cb, int timeout_s,
-                              BleAdvertiserCb timeout_cb) = 0;
+  /* Enable the advertising instance */
+  virtual void Enable(uint8_t advertiser_id, bool enable, Callback cb,
+                      int timeout_s, Callback timeout_cb) = 0;
+
+  /*  Unregisters an advertiser */
+  virtual void Unregister(uint8_t advertiser_id) = 0;
+
+  virtual void StartAdvertising(uint8_t advertiser_id, Callback cb,
+                                AdvertiseParameters params,
+                                std::vector<uint8_t> advertise_data,
+                                std::vector<uint8_t> scan_response_data,
+                                int timeout_s, Callback timeout_cb) = 0;
 };
 
 #endif /* ANDROID_INCLUDE_BLE_ADVERTISER_H */
diff --git a/include/hardware/bluetooth.h b/include/hardware/bluetooth.h
index 1fe2596..125a95b 100644
--- a/include/hardware/bluetooth.h
+++ b/include/hardware/bluetooth.h
@@ -267,6 +267,7 @@
 /** Bluetooth Out Of Band data for bonding */
 typedef struct
 {
+   uint8_t le_bt_dev_addr[7]; /* LE Bluetooth Device Address */
    uint8_t c192[16]; /* Simple Pairing Hash C-192 */
    uint8_t r192[16]; /* Simple Pairing Randomizer R-192 */
    uint8_t c256[16]; /* Simple Pairing Hash C-256 */
diff --git a/include/hardware/hw_auth_token.h b/include/hardware/hw_auth_token.h
index f471d1a..d84ea48 100644
--- a/include/hardware/hw_auth_token.h
+++ b/include/hardware/hw_auth_token.h
@@ -23,7 +23,7 @@
 extern "C" {
 #endif  // __cplusplus
 
-const uint8_t HW_AUTH_TOKEN_VERSION = 0;
+static const uint8_t HW_AUTH_TOKEN_VERSION = 0;
 
 typedef enum {
     HW_AUTH_NONE = 0,
diff --git a/modules/thermal/thermal.c b/modules/thermal/thermal.c
index 6ba5845..7f4de3b 100644
--- a/modules/thermal/thermal.c
+++ b/modules/thermal/thermal.c
@@ -138,8 +138,9 @@
             fclose(file);
             fclose(cpu_file);
             return errno ? -errno : -EIO;
+        } else {
+            fclose(cpu_file);
         }
-        fclose(cpu_file);
 
         if (list != NULL) {
             list[size] = (cpu_usage_t) {
