LCOV - code coverage report
Current view: top level - zephyr/bluetooth/services - bas.h Hit Total Coverage
Test: new.info Lines: 23 24 95.8 %
Date: 2024-12-22 00:14:23

          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 1.14