LCOV - code coverage report
Current view: top level - zephyr/bluetooth/services - bas.h Coverage Total Hit
Test: new.info Lines: 95.8 % 24 23
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2024 Demant A/S
       3              :  * Copyright (c) 2018 Nordic Semiconductor ASA
       4              :  * Copyright (c) 2016 Intel Corporation
       5              :  *
       6              :  * SPDX-License-Identifier: Apache-2.0
       7              :  */
       8              : 
       9              : #ifndef ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_BAS_H_
      10              : #define ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_BAS_H_
      11              : 
      12              : /**
      13              :  * @brief Battery Service (BAS)
      14              :  * @defgroup bt_bas Battery Service (BAS)
      15              :  * @ingroup bluetooth
      16              :  * @{
      17              :  *
      18              :  * [Experimental] Users should note that the APIs can change
      19              :  * as a part of ongoing development.
      20              :  */
      21              : 
      22              : #include <stdint.h>
      23              : #include <zephyr/sys/util.h>
      24              : 
      25              : #ifdef __cplusplus
      26              : extern "C" {
      27              : #endif
      28              : 
      29              : /**
      30              :  * @brief Battery Critical Status Characteristic flags.
      31              :  *
      32              :  * Enumeration for the flags indicating the presence
      33              :  * of various fields in the Battery Critical Status characteristic.
      34              :  */
      35            1 : enum bt_bas_bcs_flags {
      36              :         /**  Battery Critical Status Bit 0: Critical Power State */
      37              :         BT_BAS_BCS_BATTERY_CRITICAL_STATE = BIT(0),
      38              : 
      39              :         /**  Battery Critical Status Bit 1: Immediate Service Required */
      40              :         BT_BAS_BCS_IMMEDIATE_SERVICE_REQUIRED = BIT(1),
      41              : };
      42              : 
      43              : /**
      44              :  * @brief Battery Level Status Characteristic flags.
      45              :  *
      46              :  * Enumeration for the flags indicating the presence
      47              :  * of various fields in the Battery Level Status characteristic.
      48              :  */
      49            1 : enum bt_bas_bls_flags {
      50              :         /** Bit indicating that the Battery Level Status identifier is present. */
      51              :         BT_BAS_BLS_FLAG_IDENTIFIER_PRESENT = BIT(0),
      52              : 
      53              :         /** Bit indicating that the Battery Level is present. */
      54              :         BT_BAS_BLS_FLAG_BATTERY_LEVEL_PRESENT = BIT(1),
      55              : 
      56              :         /** Bit indicating that additional status information is present. */
      57              :         BT_BAS_BLS_FLAG_ADDITIONAL_STATUS_PRESENT = BIT(2),
      58              : };
      59              : 
      60              : /** @brief Battery Present Status
      61              :  *
      62              :  * Enumeration for the presence of the battery.
      63              :  */
      64            1 : enum bt_bas_bls_battery_present {
      65              :         /** Battery is not present. */
      66              :         BT_BAS_BLS_BATTERY_NOT_PRESENT = 0,
      67              : 
      68              :         /** Battery is present. */
      69              :         BT_BAS_BLS_BATTERY_PRESENT = 1
      70              : };
      71              : 
      72              : /** @brief Wired External Power Source Status
      73              :  *
      74              :  * Enumeration for the status of the wired external power source.
      75              :  */
      76            1 : enum bt_bas_bls_wired_power_source {
      77              :         /** Wired external power source is not connected. */
      78              :         BT_BAS_BLS_WIRED_POWER_NOT_CONNECTED = 0,
      79              : 
      80              :         /** Wired external power source is connected. */
      81              :         BT_BAS_BLS_WIRED_POWER_CONNECTED = 1,
      82              : 
      83              :         /** Wired external power source status is unknown. */
      84              :         BT_BAS_BLS_WIRED_POWER_UNKNOWN = 2
      85              : };
      86              : 
      87              : /** @brief Wireless External Power Source Status
      88              :  *
      89              :  * Enumeration for the status of the wireless external power source.
      90              :  */
      91            1 : enum bt_bas_bls_wireless_power_source {
      92              :         /** Wireless external power source is not connected. */
      93              :         BT_BAS_BLS_WIRELESS_POWER_NOT_CONNECTED = 0,
      94              : 
      95              :         /** Wireless external power source is connected. */
      96              :         BT_BAS_BLS_WIRELESS_POWER_CONNECTED = 1,
      97              : 
      98              :         /** Wireless external power source status is unknown. */
      99              :         BT_BAS_BLS_WIRELESS_POWER_UNKNOWN = 2
     100              : };
     101              : 
     102              : /** @brief Battery Charge State
     103              :  *
     104              :  * Enumeration for the charge state of the battery.
     105              :  */
     106            1 : enum bt_bas_bls_battery_charge_state {
     107              :         /** Battery charge state is unknown. */
     108              :         BT_BAS_BLS_CHARGE_STATE_UNKNOWN = 0,
     109              : 
     110              :         /** Battery is currently charging. */
     111              :         BT_BAS_BLS_CHARGE_STATE_CHARGING = 1,
     112              : 
     113              :         /** Battery is discharging actively. */
     114              :         BT_BAS_BLS_CHARGE_STATE_DISCHARGING_ACTIVE = 2,
     115              : 
     116              :         /** Battery is discharging but inactive. */
     117              :         BT_BAS_BLS_CHARGE_STATE_DISCHARGING_INACTIVE = 3
     118              : };
     119              : 
     120              : /** @brief Battery Charge Level
     121              :  *
     122              :  * Enumeration for the level of charge in the battery.
     123              :  */
     124            1 : enum bt_bas_bls_battery_charge_level {
     125              :         /** Battery charge level is unknown. */
     126              :         BT_BAS_BLS_CHARGE_LEVEL_UNKNOWN = 0,
     127              : 
     128              :         /** Battery charge level is good. */
     129              :         BT_BAS_BLS_CHARGE_LEVEL_GOOD = 1,
     130              : 
     131              :         /** Battery charge level is low. */
     132              :         BT_BAS_BLS_CHARGE_LEVEL_LOW = 2,
     133              : 
     134              :         /** Battery charge level is critical. */
     135              :         BT_BAS_BLS_CHARGE_LEVEL_CRITICAL = 3
     136              : };
     137              : 
     138              : /** @brief Battery Charge Type
     139              :  *
     140              :  * Enumeration for the type of charging applied to the battery.
     141              :  */
     142            1 : enum bt_bas_bls_battery_charge_type {
     143              :         /** Battery charge type is unknown or not charging. */
     144              :         BT_BAS_BLS_CHARGE_TYPE_UNKNOWN = 0,
     145              : 
     146              :         /** Battery is charged using constant current. */
     147              :         BT_BAS_BLS_CHARGE_TYPE_CONSTANT_CURRENT = 1,
     148              : 
     149              :         /** Battery is charged using constant voltage. */
     150              :         BT_BAS_BLS_CHARGE_TYPE_CONSTANT_VOLTAGE = 2,
     151              : 
     152              :         /** Battery is charged using trickle charge. */
     153              :         BT_BAS_BLS_CHARGE_TYPE_TRICKLE = 3,
     154              : 
     155              :         /** Battery is charged using float charge. */
     156              :         BT_BAS_BLS_CHARGE_TYPE_FLOAT = 4
     157              : };
     158              : 
     159              : /** @brief Charging Fault Reason
     160              :  *
     161              :  * Enumeration for the reasons of charging faults.
     162              :  */
     163            1 : enum bt_bas_bls_charging_fault_reason {
     164              :         /** No charging fault. */
     165              :         BT_BAS_BLS_FAULT_REASON_NONE = 0,
     166              : 
     167              :         /** Charging fault due to battery issue. */
     168              :         BT_BAS_BLS_FAULT_REASON_BATTERY = BIT(0),
     169              : 
     170              :         /** Charging fault due to external power source issue. */
     171              :         BT_BAS_BLS_FAULT_REASON_EXTERNAL_POWER = BIT(1),
     172              : 
     173              :         /** Charging fault for other reasons. */
     174              :         BT_BAS_BLS_FAULT_REASON_OTHER = BIT(2)
     175              : };
     176              : 
     177              : /** @brief Service Required Status
     178              :  *
     179              :  * Enumeration for whether the service is required.
     180              :  */
     181            1 : enum bt_bas_bls_service_required {
     182              :         /** Service is not required. */
     183              :         BT_BAS_BLS_SERVICE_REQUIRED_FALSE = 0,
     184              : 
     185              :         /** Service is required. */
     186              :         BT_BAS_BLS_SERVICE_REQUIRED_TRUE = 1,
     187              : 
     188              :         /** Service requirement is unknown. */
     189              :         BT_BAS_BLS_SERVICE_REQUIRED_UNKNOWN = 2
     190              : };
     191              : 
     192              : /** @brief Battery Fault Status
     193              :  *
     194              :  * Enumeration for the fault status of the battery.
     195              :  */
     196            1 : enum bt_bas_bls_battery_fault {
     197              :         /** No battery fault. */
     198              :         BT_BAS_BLS_BATTERY_FAULT_NO = 0,
     199              : 
     200              :         /** Battery fault present. */
     201              :         BT_BAS_BLS_BATTERY_FAULT_YES = 1
     202              : };
     203              : 
     204              : /** @brief Read battery level value.
     205              :  *
     206              :  * Read the characteristic value of the battery level
     207              :  *
     208              :  *  @return The battery level in percent.
     209              :  */
     210            1 : uint8_t bt_bas_get_battery_level(void);
     211              : 
     212              : /** @brief Update battery level value.
     213              :  *
     214              :  * Update the characteristic value of the battery level
     215              :  * This will send a GATT notification to all current subscribers.
     216              :  *
     217              :  *  @param level The battery level in percent.
     218              :  *
     219              :  *  @return Zero in case of success and error code in case of error.
     220              :  */
     221            1 : int bt_bas_set_battery_level(uint8_t level);
     222              : 
     223              : /**
     224              :  * @brief Set the battery present status.
     225              :  *
     226              :  * @param present The battery present status to set.
     227              :  */
     228            1 : void bt_bas_bls_set_battery_present(enum bt_bas_bls_battery_present present);
     229              : 
     230              : /**
     231              :  * @brief Set the wired external power source status.
     232              :  *
     233              :  * @param source The wired external power source status to set.
     234              :  */
     235            1 : void bt_bas_bls_set_wired_external_power_source(enum bt_bas_bls_wired_power_source source);
     236              : 
     237              : /**
     238              :  * @brief Set the wireless external power source status.
     239              :  *
     240              :  * @param source The wireless external power source status to set.
     241              :  */
     242            1 : void bt_bas_bls_set_wireless_external_power_source(enum bt_bas_bls_wireless_power_source source);
     243              : 
     244              : /**
     245              :  * @brief Set the battery charge state.
     246              :  *
     247              :  * @param state The battery charge state to set.
     248              :  */
     249            1 : void bt_bas_bls_set_battery_charge_state(enum bt_bas_bls_battery_charge_state state);
     250              : 
     251              : /**
     252              :  * @brief Set the battery charge level.
     253              :  *
     254              :  * @param level The battery charge level to set.
     255              :  */
     256            1 : void bt_bas_bls_set_battery_charge_level(enum bt_bas_bls_battery_charge_level level);
     257              : 
     258              : /**
     259              :  * @brief Set the battery charge type.
     260              :  *
     261              :  * @param type The battery charge type to set.
     262              :  */
     263            1 : void bt_bas_bls_set_battery_charge_type(enum bt_bas_bls_battery_charge_type type);
     264              : 
     265              : /**
     266              :  * @brief Set the charging fault reason.
     267              :  *
     268              :  * @param reason The charging fault reason to set.
     269              :  */
     270            1 : void bt_bas_bls_set_charging_fault_reason(enum bt_bas_bls_charging_fault_reason reason);
     271              : 
     272              : /**
     273              :  * @brief Set the identifier of the battery.
     274              :  *
     275              :  * @kconfig_dep{CONFIG_BT_BAS_BLS_IDENTIFIER_PRESENT}
     276              :  *
     277              :  * @param identifier Identifier to set.
     278              :  */
     279            1 : void bt_bas_bls_set_identifier(uint16_t identifier);
     280              : 
     281              : /**
     282              :  * @brief Set the service required status.
     283              :  *
     284              :  * @kconfig_dep{CONFIG_BT_BAS_BLS_ADDITIONAL_STATUS_PRESENT}
     285              :  *
     286              :  * @param value Service required status to set.
     287              :  */
     288            1 : void bt_bas_bls_set_service_required(enum bt_bas_bls_service_required value);
     289              : 
     290              : /**
     291              :  * @brief Set the battery fault status.
     292              :  *
     293              :  * @kconfig_dep{CONFIG_BT_BAS_BLS_ADDITIONAL_STATUS_PRESENT}
     294              :  *
     295              :  * @param value Battery fault status to set.
     296              :  */
     297            1 : void bt_bas_bls_set_battery_fault(enum bt_bas_bls_battery_fault value);
     298              : 
     299              : #ifdef __cplusplus
     300              : }
     301              : #endif
     302              : 
     303              : /**
     304              :  * @}
     305              :  */
     306              : 
     307              : #endif /* ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_BAS_H_ */
        

Generated by: LCOV version 2.0-1