228 lines
6.3 KiB
C
228 lines
6.3 KiB
C
/**
|
|
*****************************************************************************************
|
|
* Copyright(c) 2015, Realtek Semiconductor Corporation. All rights reserved.
|
|
*****************************************************************************************
|
|
* @file atvv_service.h
|
|
* @brief Head file for using ATV voice service.
|
|
* @details ATVV data structs and external functions declaration.
|
|
* @author Chenjie Jin
|
|
* @date 2017-12-8
|
|
* @version v0.1
|
|
* *************************************************************************************
|
|
*/
|
|
|
|
/* Define to prevent recursive inclusion */
|
|
#ifndef _ATVV_H_
|
|
#define _ATVV_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
/* Add Includes here */
|
|
#include "profile_server.h"
|
|
|
|
/** @defgroup ATVV ATV Voice Service
|
|
* @brief ATV voice service
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup ATVV_Exported_Constants ATVV Exported Constants
|
|
* @brief macros that other .c files may use all defined here
|
|
* @{
|
|
*/
|
|
|
|
///@cond
|
|
#define ATVV_VERSION_1_0 0x0100
|
|
#define ATVV_VERSION_0_4 0x0004
|
|
|
|
#define ATTV_CODEC_MASK_8K_ADPCM 0x0001
|
|
#define ATTV_CODEC_MASK_16K_ADPCM 0x0002
|
|
#define ATTV_CODEC_MASK_OPUS 0x0004
|
|
|
|
#define ATVV_CHAR_RX_DATA_LEN 20
|
|
#define ATVV_CHAR_CTL_DATA_LEN 20
|
|
#define ATVV_CHAR_WRITE_DATA_LEN 20
|
|
|
|
/** @brief ATVV related services UUIDs */
|
|
#define GATT_UUID_ATV_CHAR_TX 0x64, 0xB6, 0x17, 0xF6, 0x01, 0xAF, 0x7D, 0xBC, 0x05, 0x4F, 0x21, 0x5A, 0x02, 0x00, 0x5E, 0xAB
|
|
#define GATT_UUID_ATV_CHAR_RX 0x64, 0xB6, 0x17, 0xF6, 0x01, 0xAF, 0x7D, 0xBC, 0x05, 0x4F, 0x21, 0x5A, 0x03, 0x00, 0x5E, 0xAB
|
|
#define GATT_UUID_ATV_CHAR_CTL 0x64, 0xB6, 0x17, 0xF6, 0x01, 0xAF, 0x7D, 0xBC, 0x05, 0x4F, 0x21, 0x5A, 0x04, 0x00, 0x5E, 0xAB
|
|
|
|
/** @brief Index defines for Characteristic's value */
|
|
#define GATT_SVC_ATVV_CHAR_TX_VALUE_INDEX 2
|
|
#define GATT_SVC_ATVV_CHAR_RX_VALUE_INDEX 4
|
|
#define GATT_SVC_ATVV_CHAR_RX_CCCD_INDEX 5
|
|
#define GATT_SVC_ATVV_CHAR_CTL_VALUE_INDEX 7
|
|
#define GATT_SVC_ATVV_CHAR_CTL_CCCD_INDEX 8
|
|
///@endcond
|
|
|
|
/** @} End of ATVV_Exported_Constants */
|
|
|
|
/** @defgroup ATVV_Exported_Types IAS Exported Types
|
|
* @brief types that other .c files may use all defined here
|
|
* @{
|
|
*/
|
|
/* Add all public types here */
|
|
/** @defgroup ATVV_Callback_Data ATTB Callback Data
|
|
* @brief ATVV data struct for notification data to application.
|
|
* @{
|
|
*/
|
|
|
|
/** @defgroup ATVV_Read_Info ATVV Read Info
|
|
* @brief Parameter for read characteristic value.
|
|
* @{
|
|
*/
|
|
#define ATVV_READ_CHAR_RX_INDEX 1
|
|
#define ATVV_READ_CHAR_CTL_INDEX 2
|
|
/** @} */
|
|
|
|
/** @defgroup ATVV_Write_Info ATVV Write Info
|
|
* @brief Parameter for write characteristic value.
|
|
* @{
|
|
*/
|
|
#define ATVV_WRITE_CHAR_TX_INDEX 1
|
|
/** @} */
|
|
|
|
/** @defgroup ATVV_Notify_Indicate_Info ATVV Notify Indicate Info
|
|
* @brief Parameter for enable or disable notification or indication.
|
|
* @{
|
|
*/
|
|
#define ATVV_CHAR_RX_NOTIFY_ENABLE 1
|
|
#define ATVV_CHAR_RX_NOTIFY_DISABLE 2
|
|
#define ATVV_CHAR_CTL_NOTIFY_ENABLE 3
|
|
#define ATVV_CHAR_CTL_NOTIFY_DISABLE 4
|
|
|
|
/** @defgroup ATT MTU zie and Date length extantion
|
|
* @brief GATT client negotiate ATT MTU and send DLE
|
|
* @{
|
|
*/
|
|
#define ATVV_DLE_AND_MTU_UPDATE_DISABLE 0
|
|
#define ATVV_DLE_ENABLE_MTU_SIZE_UPDATE 1
|
|
|
|
/** Message content */
|
|
typedef union
|
|
{
|
|
struct
|
|
{
|
|
uint8_t len;
|
|
uint8_t *report;
|
|
} report_data;
|
|
} T_ATVV_WRITE_PARAMETER;
|
|
|
|
/** @struct _TATVV_WRITE_MSG
|
|
* @brief write message
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint8_t write_type; /**< ref: @ref ATVV_RmC_Write_Info */
|
|
T_ATVV_WRITE_PARAMETER write_parameter;
|
|
} T_ATVV_WRITE_MSG;
|
|
|
|
typedef union _TATVV_UPSTREAM_MSG_DATA
|
|
{
|
|
uint8_t notification_indification_index; /**< ref: @ref ATVV_RmC_Notify_Indicate_Info */
|
|
uint8_t read_value_index; /**< ref: @ref ATVV_RmC_Read_Info */
|
|
T_ATVV_WRITE_MSG write;
|
|
} T_ATVV_UPSTREAM_MSG_DATA;
|
|
|
|
/** ATVV service data to inform application */
|
|
typedef struct
|
|
{
|
|
uint8_t conn_id;
|
|
T_SERVICE_CALLBACK_TYPE msg_type;
|
|
T_ATVV_UPSTREAM_MSG_DATA msg_data;
|
|
} T_ATVV_CALLBACK_DATA;
|
|
/** @} */
|
|
|
|
typedef enum
|
|
{
|
|
ATV_TX_OPCODE_GET_CAPS = 0x0A,
|
|
ATV_TX_OPCODE_MIC_OPEN = 0x0C,
|
|
ATV_TX_OPCODE_MIC_CLOSE = 0x0D,
|
|
ATV_TX_OPCODE_EXTEND = 0x0E,
|
|
} ATV_CHAR_TX_OPCODE;
|
|
|
|
#define ATV_TX_OPCODE_GET_CAPS_LEN 5
|
|
#define ATV_TX_OPCODE_MIC_OPEN_LEN 5
|
|
|
|
typedef enum
|
|
{
|
|
ATV_CTL_OPCODE_AUDIO_STOP = 0x00,
|
|
ATV_CTL_OPCODE_AUDIO_START = 0x04,
|
|
ATV_CTL_OPCODE_DPAD_SELECT = 0x07,
|
|
ATV_CTL_OPCODE_START_SEARCH = 0x08,
|
|
ATV_CTL_OPCODE_AUDIO_SYNC = 0x0A,
|
|
ATV_CTL_OPCODE_GET_CAPS_RESP = 0x0B,
|
|
ATV_CTL_OPCODE_MIC_OPEN_ERROR = 0x0C,
|
|
} ATV_CHAR_CTL_CMD_OPCODE;
|
|
|
|
typedef enum
|
|
{
|
|
ATV_START_REASON_MIC_OPEN_REQUEST = 0x00,
|
|
ATV_START_REASON_PTT = 0x01,
|
|
ATV_START_REASON_HTT = 0x03,
|
|
ATV_START_REASON_INVALID = 0xFF
|
|
} ATV_AUDIO_START_REASON;
|
|
|
|
typedef enum
|
|
{
|
|
ATV_STOP_REASON_MIC_CLOSE_MESSAGE = 0x00,
|
|
ATV_STOP_REASON_HTT = 0x02,
|
|
ATV_STOP_REASON_AUDIO_START_COMMAND = 0x04,
|
|
ATV_STOP_REASON_AUDIO_TRANSFER_TIMEOUT = 0x08,
|
|
ATV_STOP_REASON_ATVV_CHAR_AUDIO_DISABLE = 0x10,
|
|
ATV_STOP_REASON_OTHERS = 0x80,
|
|
} ATV_AUDIO_STOP_REASON;
|
|
|
|
typedef enum
|
|
{
|
|
ATV_MIC_OPEN_ERROR_RESERVED = 0x0f01,
|
|
ATV_MIC_OPEN_ERROR_REMOTE_IS_NOT_ACTIVE = 0x0f02,
|
|
ATV_MIC_OPEN_ERROR_ATVV_CHAR_AUDIO_IS_DISABLE = 0x0f03,
|
|
ATV_MIC_OPEN_ERROR_PTT_HTT_IS_IN_PROGRESS = 0x0f80,
|
|
ATV_MIC_OPEN_ERROR_INTERNAL_ERROR = 0x0fff,
|
|
} ATV_MIC_OPEN_ERROR;
|
|
|
|
typedef enum
|
|
{
|
|
ATV_ASSISTANT_INTERACTION_MODEL_ON_REQUEST = 0x00,
|
|
ATV_ASSISTANT_INTERACTION_MODEL_PRESS_TO_TALK = 0x01,
|
|
ATV_ASSISTANT_INTERACTION_MODEL_HOLD_TO_TALK = 0x03,
|
|
} ATV_ASSISTANT_INTERACTION_MODEL;
|
|
|
|
/** @} End of IAS_Exported_Types */
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t app_support_version;
|
|
uint16_t codec_support;
|
|
uint16_t codec_used;
|
|
uint8_t atv_start_reason;
|
|
uint8_t assistant_interaction_model;
|
|
uint8_t audio_consumption_mode;
|
|
uint8_t stream_id;
|
|
uint8_t char_rx_data_buff[ATVV_CHAR_RX_DATA_LEN];
|
|
uint8_t char_ctl_data_buff[ATVV_CHAR_RX_DATA_LEN];
|
|
uint8_t char_write_dat_buff[ATVV_CHAR_WRITE_DATA_LEN];
|
|
} T_ATVV_GLOBAL_DATA;
|
|
|
|
extern T_ATVV_GLOBAL_DATA atvv_global_data;
|
|
|
|
/** @defgroup ATVV_Exported_Functions IAS Exported Functions
|
|
* @brief functions that other .c files may use all defined here.
|
|
* @{
|
|
*/
|
|
uint8_t atvv_add_service(void *p_func);
|
|
/** @} End of ATVV_Exported_Functions */
|
|
|
|
/** @} End of ATVV */
|
|
|
|
#endif /* (VOICE_FLOW_SEL == ATV_GOOGLE_VOICE_FLOW) */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
|