pinebuds/services/ble_profiles/bas/bass/api/bass_task.h

131 lines
3.3 KiB
C

#ifndef _BASS_TASK_H_
#define _BASS_TASK_H_
/**
****************************************************************************************
* @addtogroup BAPSTASK Task
* @ingroup BAPS
* @brief Battery 'Profile' Task.
*
* The BAPS_TASK is responsible for handling the messages coming in and out of the
* @ref BAPS block of the BLE Host.
*
* @{
****************************************************************************************
*/
/*
* INCLUDE FILES
****************************************************************************************
*/
#include "prf_types.h"
#include "rwip_task.h" // Task definitions
/*
* DEFINES
****************************************************************************************
*/
#define BAS_BATTERY_LVL_MAX (100)
///Maximal number of BAS that can be added in the DB
#define BASS_NB_BAS_INSTANCES_MAX (2)
/*
* TYPE DEFINITIONS
****************************************************************************************
*/
/// Messages for Battery Server
enum bass_msg_id
{
/// Start the Battery Server - at connection used to restore bond data
BASS_ENABLE_REQ = TASK_FIRST_MSG(TASK_ID_BASS),
/// Confirmation of the Battery Server start
BASS_ENABLE_RSP,
/// Battery Level Value Update Request
BASS_BATT_LEVEL_UPD_REQ,
/// Inform APP if Battery Level value has been notified or not
BASS_BATT_LEVEL_UPD_RSP,
/// Inform APP that Battery Level Notification Configuration has been changed - use to update bond data
BASS_BATT_LEVEL_NTF_CFG_IND,
};
/// Features Flag Masks
enum bass_features
{
/// Battery Level Characteristic doesn't support notifications
BAS_BATT_LVL_NTF_NOT_SUP,
/// Battery Level Characteristic support notifications
BAS_BATT_LVL_NTF_SUP,
};
/*
* APIs Structures
****************************************************************************************
*/
/// Parameters for the database creation
struct bass_db_cfg
{
/// Number of BAS to add
uint8_t bas_nb;
/// Features of each BAS instance
uint8_t features[BASS_NB_BAS_INSTANCES_MAX];
/// Battery Level Characteristic Presentation Format - Should not change during connection
struct prf_char_pres_fmt batt_level_pres_format[BASS_NB_BAS_INSTANCES_MAX];
};
/// Parameters of the @ref BASS_ENABLE_REQ message
struct bass_enable_req
{
/// connection index
uint8_t conidx;
/// Notification Configuration
uint8_t ntf_cfg;
/// Old Battery Level used to decide if notification should be triggered
uint8_t old_batt_lvl[BASS_NB_BAS_INSTANCES_MAX];
};
/// Parameters of the @ref BASS_ENABLE_RSP message
struct bass_enable_rsp
{
/// connection index
uint8_t conidx;
///status
uint8_t status;
};
///Parameters of the @ref BASS_BATT_LEVEL_UPD_REQ message
struct bass_batt_level_upd_req
{
/// BAS instance
uint8_t bas_instance;
/// Battery Level
uint8_t batt_level;
};
///Parameters of the @ref BAPS_BATT_LEVEL_UPD_RSP message
struct bass_batt_level_upd_rsp
{
///status
uint8_t status;
};
///Parameters of the @ref BASS_BATT_LEVEL_NTF_CFG_IND message
struct bass_batt_level_ntf_cfg_ind
{
/// connection index
uint8_t conidx;
///Notification Configuration
uint8_t ntf_cfg;
};
/// @} BASSTASK
#endif /* _BASS_TASK_H_ */