26 #include "sdk_config.h"
28 #include "ble_srv_common.h"
29 #include "nrf_sdh_ble.h"
30 #include "resources.h"
36 #define ATVV_BLE_OBSERVER_PRIO BLE_OBSERVER_PRIORITY_LOW
43 #define BLE_ATVV_DEF(_name) \
44 static ble_atvv_t _name; \
45 NRF_SDH_BLE_OBSERVER(_name ## _obs, \
46 ATVV_BLE_OBSERVER_PRIO, \
47 ble_atvv_on_ble_evt, &_name)
49 #if PM_BLE_OBSERVER_PRIO >= ATVV_BLE_OBSERVER_PRIO
50 #error Peer Manager should have higher observer priority than ATVV
54 #define BLE_UUID_ATV_BASE {{0x64, 0xB6, 0x17, 0xF6, \
55 0x01, 0xAF, 0x7D, 0xBC, \
56 0x05, 0x4F, 0x21, 0x5A, \
57 0x00, 0x00, 0x5E, 0xAB}}
58 #define BLE_UUID_ATV_SERVICE 0x0001
59 #define BLE_UUID_ATV_TX_CHARACTERISTIC 0x0002
60 #define BLE_UUID_ATV_RX_CHARACTERISTIC 0x0003
61 #define BLE_UUID_ATV_CTL_CHARACTERISTIC 0x0004
63 #define BLE_ATVV_CHAR_TX_LEN 20
64 #define BLE_ATVV_CHAR_CTL_LEN 20
66 #define OPCODE_LENGTH 1
67 #define HANDLE_LENGTH 2
70 #if defined(NRF_SDH_BLE_GATT_MAX_MTU_SIZE) && (NRF_SDH_BLE_GATT_MAX_MTU_SIZE != 0)
71 #define BLE_ATVV_MAX_DATA_LEN (NRF_SDH_BLE_GATT_MAX_MTU_SIZE - OPCODE_LENGTH - HANDLE_LENGTH)
73 #define BLE_ATVV_MAX_DATA_LEN (BLE_GATT_MTU_SIZE_DEFAULT - OPCODE_LENGTH - HANDLE_LENGTH)
74 #warning NRF_SDH_BLE_GATT_MAX_MTU_SIZE is not defined.
79 #define ATVV_VERSION_MAJOR 0x00
80 #define ATVV_VERSION_MINOR 0x05
85 #define ATVV_CMD_GET_CAPS (0x0A)
86 #define ATVV_CMD_MIC_OPEN (0x0C)
87 #define ATVV_CMD_MIC_CLOSE (0x0D)
92 #define ATVV_CTL_AUDIO_STOP (0x00)
93 #define ATVV_CTL_AUDIO_START (0x04)
94 #define ATVV_CTL_START_SEARCH (0x08)
95 #define ATVV_CTL_AUDIO_SYNC (0x0A)
96 #define ATVV_CTL_GET_CAPS_RESP (0x0B)
97 #define ATVV_CTL_MIC_OPEN_ERROR (0x0C)
102 #define ATVV_ERROR_INVALID_CODEC (0x0F01)
103 #define ATVV_ERROR_MIC_OPEN_TIMEOUT (0x0F02)
104 #define ATVV_ERROR_INVALID_STATE (0x0F03)
109 #define ATVV_CAPS_SUPP_CODEC_ADPCM_8KHZ (0x0001)
110 #define ATVV_CAPS_SUPP_CODEC_ADPCM_8_KHZ_16KHZ (0x0003)
111 #define ATVV_CAPS_SUPP_CODEC_ADPCM_OPUS_8KHZ (0x0005)
112 #define ATVV_CAPS_SUPP_CODEC_ADPCM_OPUS_8KHZ_16KHZ (0x0007)
117 #define ATVV_CAPS_USED_CODEC_ADPCM_8KHZ (0x0001)
118 #define ATVV_CAPS_USED_CODEC_ADPCM_16KHZ (0x0002)
119 #define ATVV_CAPS_USED_CODEC_OPUS (0x0004)
124 #define ATVV_CAPS_FRAME_SIZE_DEFAULT_134 (0x0086)
129 #define ATVV_CAPS_CHAR_SIZE_DEFAULT_20 (0x0014)
130 #define ATVV_CAPS_CHAR_SIZE_MAX (ATVV_CAPS_CHAR_SIZE_DEFAULT_20)
135 #define ATVV_TIMEOUT_1_MIC_OPEN (1000)
136 #define ATVV_TIMEOUT_2_STREAMING_DURATION (7000)
164 BLE_ATVV_SUPPORTED_CODECS_ADPCM_8KHZ = ATVV_CAPS_SUPP_CODEC_ADPCM_8KHZ,
165 BLE_ATVV_SUPPORTED_CODECS_ADPCM_8KHZ_16KHZ = ATVV_CAPS_SUPP_CODEC_ADPCM_8_KHZ_16KHZ,
166 BLE_ATVV_SUPPORTED_CODECS_ADPCM_OPUS_8KHZ = ATVV_CAPS_SUPP_CODEC_ADPCM_OPUS_8KHZ,
167 BLE_ATVV_SUPPORTED_CODECS_ADPCM_OPUS_8KHZ_16KHZ = ATVV_CAPS_SUPP_CODEC_ADPCM_OPUS_8KHZ_16KHZ,
173 BLE_ATVV_USED_CODEC_ADPCM_8KHZ = ATVV_CAPS_USED_CODEC_ADPCM_8KHZ,
174 BLE_ATVV_USED_CODEC_ADPCM_16KHZ = ATVV_CAPS_USED_CODEC_ADPCM_16KHZ,
175 BLE_ATVV_USED_CODEC_OPUS = ATVV_CAPS_USED_CODEC_OPUS,
181 BLE_ATVV_FRAME_SIZE_DEFAULT_134 = ATVV_CAPS_FRAME_SIZE_DEFAULT_134,
187 BLE_ATVV_CHAR_SIZE_DEFAULT_20 = ATVV_CAPS_CHAR_SIZE_DEFAULT_20,
193 BLE_ATVV_ERROR_INVALID_CODEC = ATVV_ERROR_INVALID_CODEC,
194 BLE_ATVV_ERROR_MIC_OPEN_TIMEOUT = ATVV_ERROR_MIC_OPEN_TIMEOUT,
195 BLE_ATVV_ERROR_INVALID_STATE = ATVV_ERROR_INVALID_STATE,
311 #endif // BLE_ATVV_H__