aboutsummaryrefslogtreecommitdiff
path: root/inc/bluetooth/profile/server/bas.h
diff options
context:
space:
mode:
Diffstat (limited to 'inc/bluetooth/profile/server/bas.h')
-rw-r--r--inc/bluetooth/profile/server/bas.h230
1 files changed, 230 insertions, 0 deletions
diff --git a/inc/bluetooth/profile/server/bas.h b/inc/bluetooth/profile/server/bas.h
new file mode 100644
index 0000000..7eee3d4
--- /dev/null
+++ b/inc/bluetooth/profile/server/bas.h
@@ -0,0 +1,230 @@
+/**
+*****************************************************************************************
+* Copyright(c) 2017, Realtek Semiconductor Corporation. All rights reserved.
+*****************************************************************************************
+ * @file bas.h
+ * @brief Head file for using battery service.
+ * @details BAS data structs and external functions declaration.
+ * @author
+ * @date
+ * @version v1.0
+ * *************************************************************************************
+ */
+
+/* Define to prevent recursive inclusion */
+#ifndef _BAS_H_
+#define _BAS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/* Add Includes here */
+#include "profile_server.h"
+
+
+/** @defgroup BAS Battery Service
+ * @brief Battery service
+ * @details
+
+ The Battery Service exposes the state of a battery within a device.
+
+ Battery Service generally makes up a profile with some other services, and it can provide the state of a battery within a device.
+
+ The default supported feature provided by BAS is the notify property of battery level characteristic,
+ and the application developers can modify the feature supported by BAS according to their own requirements.
+ The specific configuration process can be achieved by modifying file @ref bas_config.h.
+
+ * <b>Example usage</b>
+ * \code{.c}
+
+ #define BAS_BATTERY_LEVEL_NOTIFY_SUPPORT 1
+
+ * \endcode
+
+ Application shall register battery service when initialization through @ref bas_add_service function.
+
+ Application can set the battery level of BAS through @ref bas_set_parameter function.
+
+ Application can send the battery level value of BAS to the client with a notification through @ref bas_battery_level_value_notify function.
+
+ * @{
+ */
+
+/*============================================================================*
+ * Macros
+ *============================================================================*/
+/** @defgroup BAS_Exported_Macros BAS Exported Macros
+ * @brief
+ * @{
+ */
+
+#define BAS_READ_BATTERY_LEVEL 1
+#define BAS_NOTIFY_BATTERY_LEVEL_ENABLE 1
+#define BAS_NOTIFY_BATTERY_LEVEL_DISABLE 2
+
+/** End of BAS_Exported_Macros
+* @}
+*/
+
+/*============================================================================*
+ * Types
+ *============================================================================*/
+/** @defgroup BAS_Exported_Types BAS Exported Types
+ * @brief
+ * @{
+ */
+
+/**
+* @brief Battery service parameter type
+*/
+typedef enum
+{
+ BAS_PARAM_BATTERY_LEVEL = 0x01,
+} T_BAS_PARAM_TYPE;
+
+/**
+* @brief set battery service parameter upstream message data
+*/
+typedef union
+{
+ uint8_t notification_indification_index;
+ uint8_t read_value_index;
+} T_BAS_UPSTREAM_MSG_DATA;
+
+/**
+* @brief set battery service parameter upstream callback data
+*/
+typedef struct
+{
+ uint8_t conn_id;
+ T_SERVICE_CALLBACK_TYPE msg_type;
+ T_BAS_UPSTREAM_MSG_DATA msg_data;
+} T_BAS_CALLBACK_DATA;
+
+/** End of BAS_Exported_Types
+* @}
+*/
+
+
+/*============================================================================*
+ * Functions
+ *============================================================================*/
+/** @defgroup BAS_Exported_Functions BAS Exported Functions
+ * @brief
+ * @{
+ */
+
+/**
+ * @brief Add battery service to the BLE stack database.
+ *
+ *
+ * @param[in] p_func Callback when service attribute was read, write or cccd update.
+ * @return Service id generated by the BLE stack: @ref T_SERVER_ID.
+ * @retval 0xFF Operation failure.
+ * @retval Others Service id assigned by stack.
+ *
+ * <b>Example usage</b>
+ * \code{.c}
+ void profile_init()
+ {
+ server_init(1);
+ bas_id = bas_add_service(app_handle_profile_message);
+ }
+ * \endcode
+ */
+T_SERVER_ID bas_add_service(void *p_func);
+
+/**
+ * @brief Set a battery service parameter.
+ *
+ * NOTE: You can call this function with a battery service parameter type and it will set the
+ * battery service parameter. Battery service parameters are defined in @ref T_BAS_PARAM_TYPE.
+ * If the "len" field sets to the size of a "uint16_t" ,the
+ * "p_value" field must point to a data with type of "uint16_t".
+ *
+ * @param[in] param_type Battery service parameter type: @ref T_BAS_PARAM_TYPE
+ * @param[in] length Length of data to write
+ * @param[in] p_value Pointer to data to write. This is dependent on
+ the parameter type and will be cast to the appropriate data type.
+ If param_type is set to @ref BAS_PARAM_BATTERY_LEVEL, p_value pointer to the current
+ charge level of a battery. Unit is org.bluetooth.unit.percentage. Minimum value is 0,
+ and maximum value is 100. 100% represents fully charged while 0% represents fully discharged.
+ *
+ * @return Operation result.
+ * @retval true Operation success.
+ * @retval false Operation failure.
+ *
+ * <b>Example usage</b>
+ * \code{.c}
+ void test(void)
+ {
+ uint8_t battery_level = 80;
+ bas_set_parameter(BAS_PARAM_BATTERY_LEVEL, 1, &battery_level);
+ }
+ * \endcode
+ */
+bool bas_set_parameter(T_BAS_PARAM_TYPE param_type, uint8_t length, uint8_t *p_value);
+
+
+/**
+ * @brief Send notify battery level notification data .
+ *
+ *
+ * @param[in] conn_id Connection id.
+ * @param[in] service_id Service id.
+ * @param[in] battery_level The current charge level of a battery.
+ Unit is org.bluetooth.unit.percentage. Minimum value is 0, and maximum value is 100.
+ 100% represents fully charged while 0% represents fully discharged.
+ * @return Operation result.
+ * @retval true Operation success.
+ * @retval false Operation failure.
+ *
+ * <b>Example usage</b>
+ * \code{.c}
+ void test(void)
+ {
+ uint8_t battery_level = 90;
+ bas_battery_level_value_notify(conn_id, bas_id, battery_level);
+ }
+ * \endcode
+ */
+bool bas_battery_level_value_notify(uint8_t conn_id, T_SERVER_ID service_id, uint8_t battery_level);
+
+
+/**
+ * @brief Confirm for read battery level value request.
+ *
+ *
+ * @param[in] conn_id Connection id.
+ * @param[in] service_id Service id.
+ * @param[in] battery_level The current charge level of a battery.
+ Unit is org.bluetooth.unit.percentage. Minimum value is 0, and maximum value is 100.
+ 100% represents fully charged while 0% represents fully discharged.
+
+ * @return Operation result.
+ * @retval true Operation success.
+ * @retval false Operation failure.
+ *
+ * <b>Example usage</b>
+ * \code{.c}
+ void test(void)
+ {
+ uint8_t battery_level = 90;
+ bas_battery_level_value_read_confirm(conn_id, bas_id, battery_level);
+ }
+ * \endcode
+ */
+bool bas_battery_level_value_read_confirm(uint8_t conn_id, T_SERVER_ID service_id,
+ uint8_t battery_level);
+
+/** @} End of BAS_Exported_Functions */
+
+/** @} End of BAS */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _BAS_H_ */