btaudio  2.0.0.0
btaudio.h
Go to the documentation of this file.
1 /*
2  * MikroSDK - MikroE Software Development Kit
3  * Copyright© 2020 MikroElektronika d.o.o.
4  *
5  * Permission is hereby granted, free of charge, to any person
6  * obtaining a copy of this software and associated documentation
7  * files (the "Software"), to deal in the Software without restriction,
8  * including without limitation the rights to use, copy, modify, merge,
9  * publish, distribute, sublicense, and/or sell copies of the Software,
10  * and to permit persons to whom the Software is furnished to do so,
11  * subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22  * OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24 
33 // ----------------------------------------------------------------------------
34 
35 #ifndef BTAUDIO_H
36 #define BTAUDIO_H
37 
42 #ifdef PREINIT_SUPPORTED
43 #include "preinit.h"
44 #endif
45 
46 #ifdef MikroCCoreVersion
47  #if MikroCCoreVersion >= 1
48  #include "delays.h"
49  #endif
50 #endif
51 
52 #include "drv_digital_out.h"
53 #include "drv_digital_in.h"
54 #include "drv_uart.h"
55 
56 // -------------------------------------------------------------- PUBLIC MACROS
66 #define BTAUDIO_MAP_MIKROBUS( cfg, mikrobus ) \
67  cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
68  cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
69  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
70  cfg.pwr = MIKROBUS( mikrobus, MIKROBUS_CS ); \
71  cfg.cmd = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
72  cfg.frs = MIKROBUS( mikrobus, MIKROBUS_INT ); \
73  cfg.baud = MIKROBUS( mikrobus, MIKROBUS_AN )
74 
80 #define BTAUDIO_RETVAL uint8_t
81 
82 #define BTAUDIO_OK 0x00
83 #define BTAUDIO_INIT_ERROR 0xFF
84 
90 #define DRV_RX_BUFFER_SIZE 600
91 #define DRV_TX_BUFFER_SIZE 100
92 
98 #define BTAUDIO_ERR 0x00
99 #define BTAUDIO_STATUS_FALSE 0x00
100 #define BTAUDIO_STATUS_TRUE 0x01
101  // End group macro
104 // --------------------------------------------------------------- PUBLIC TYPES
112 typedef struct
113 {
114  // Output pins
115 
116  digital_out_t rst;
117  digital_out_t pwr;
118  digital_out_t cmd;
119  digital_out_t baud;
120  digital_out_t frs;
121 
122  // Modules
123 
124  uart_t uart;
125 
126  char uart_rx_buffer[ DRV_RX_BUFFER_SIZE ];
127  char uart_tx_buffer[ DRV_TX_BUFFER_SIZE ];
128 } btaudio_t;
129 
133 typedef struct
134 {
135  // Communication gpio pins
136 
137  pin_name_t rx_pin;
138  pin_name_t tx_pin;
139 
140  // Additional gpio pins
141 
142  pin_name_t rst;
143  pin_name_t pwr;
144  pin_name_t cmd;
145  pin_name_t frs;
146  pin_name_t baud;
147 
148  // static variable
149 
150  uint32_t baud_rate; // Clock speed.
152  uart_data_bits_t data_bit; // Data bits.
153  uart_parity_t parity_bit; // Parity bit.
154  uart_stop_bits_t stop_bit; // Stop bits.
155 
156 } btaudio_cfg_t;
157 
158 typedef enum
159 {
163  INTERCOM_DAC = 3
164 
166 
167 typedef enum
168 {
169  RES_24 = 0,
170  RES_32 = 1
171 
173 
174 typedef enum
175 {
176  RATE_8K = 0,
177  RATE_32K = 1,
179  RATE_48K = 3
180 
182 
183 typedef enum
184 {
185  IAP_MODE = 0,
186  SPP_MODE = 1,
188  HFP_MODE = 3
189 
191 
192 typedef enum
193 {
194  AVRCP_EK = 0,
197  AAC_APTX = 3,
208  AUTO_ACCEPT = 14
209 
211 
215 typedef uint8_t btaudio_error_t;
216  // End types group
218 // ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
219 
225 #ifdef __cplusplus
226 extern "C"{
227 #endif
228 
238 
247 
254 void btaudio_generic_write ( btaudio_t *ctx, char *data_buf, uint16_t len );
255 
265 int32_t btaudio_generic_read ( btaudio_t *ctx, char *data_buf, uint16_t max_len );
266 
276 
286 
295 void btaudio_reset ( btaudio_t *ctx );
296 
305 void btaudio_write_byte ( btaudio_t *ctx, uint8_t input );
306 
315 void btaudio_write_command ( btaudio_t *ctx, char *data_buf );
316 
328 void btaudio_set_mode ( btaudio_t *ctx, uint8_t mode );
329 
340 void btaudio_set_cmd_mode ( btaudio_t *ctx, uint8_t mode );
341 
350 
360 
385  bit_res_t bit_res,
386  sample_rate_t sample_rate );
387 
404 uint8_t btaudio_set_device_name ( btaudio_t *ctx, uint8_t *name );
405 
420 uint8_t btaudio_set_automatic_shutdown ( btaudio_t *ctx, uint16_t seconds );
421 
447 
461 void btaudio_set_authentication ( btaudio_t *ctx, uint8_t authentication );
462 
476 uint8_t btaudio_set_service_class_device( btaudio_t *ctx, uint8_t *sc_device );
477 
487 void btaudio_set_discovery_mask ( btaudio_t *ctx, uint8_t discovery_mask );
488 
502 uint8_t btaudio_set_security_pin ( btaudio_t *ctx, uint8_t *security_pin );
503 
513 void btaudio_set_speaker_gain_lvl ( btaudio_t *ctx, uint8_t speaker_gain_lvl );
514 
524 void btaudio_set_toneain_lvl ( btaudio_t *ctx, uint8_t tone_gain_lvl );
525 
536 
547 void btaudio_get_reg_settings ( btaudio_t *ctx, char cmd );
548 
558 
568 
578 
588 
605 uint8_t btaudio_toggle_discoverable ( btaudio_t *ctx, uint8_t discoverable );
606 
622 uint8_t btaudio_answer_keyboard ( btaudio_t *ctx, uint8_t answer );
623 
634 
648 uint8_t btaudio_call_phone_number ( btaudio_t *ctx, char *p_number );
649 
662 
672 
682 
692 
702 
712 
722 
732 
742 
752 
767 
783 uint8_t btaudio_mute_hold_call ( btaudio_t *ctx, uint8_t mute );
784 
793 void btaudio_reboot ( btaudio_t *ctx );
794 
804 
814 
824 
834 
844 
854 
864 
874 
884 
894 
904 
914 
927 uint8_t btaudio_interrupt ( btaudio_t *ctx );
928 
929 #ifdef __cplusplus
930 }
931 #endif
932 #endif // _BTAUDIO_H_
933  // End public_function group
936 
937 // ------------------------------------------------------------------------- END
btaudio_generic_write
void btaudio_generic_write(btaudio_t *ctx, char *data_buf, uint16_t len)
Generic write function.
btaudio_set_security_pin
uint8_t btaudio_set_security_pin(btaudio_t *ctx, uint8_t *security_pin)
Set the security pin code function.
DRV_RX_BUFFER_SIZE
#define DRV_RX_BUFFER_SIZE
Definition: btaudio.h:90
btaudio_query_connection_status
void btaudio_query_connection_status(btaudio_t *ctx)
Query connection status function.
btaudio_pause_play_track
void btaudio_pause_play_track(btaudio_t *ctx)
Pause track function.
btaudio_t::frs
digital_out_t frs
Definition: btaudio.h:120
btaudio_cfg_t::data_bit
uart_data_bits_t data_bit
Definition: btaudio.h:152
btaudio_get_firmware_version
void btaudio_get_firmware_version(btaudio_t *ctx)
Get firmware version function.
btaudio_t::baud
digital_out_t baud
Definition: btaudio.h:119
btaudio_userBusy
void btaudio_userBusy(btaudio_t *ctx)
User busy function.
btaudio_error_t
uint8_t btaudio_error_t
Error type.
Definition: btaudio.h:215
ENABLE_INDICATOR
@ ENABLE_INDICATOR
Definition: btaudio.h:205
sample_rate_t
sample_rate_t
Definition: btaudio.h:175
btaudio_cfg_t::pwr
pin_name_t pwr
Definition: btaudio.h:143
RESET_PWR_OFF
@ RESET_PWR_OFF
Definition: btaudio.h:203
btaudio_set_hold_accept_incoming
void btaudio_set_hold_accept_incoming(btaudio_t *ctx)
Set hold accept incoming function.
btaudio_cfg_t::cmd
pin_name_t cmd
Definition: btaudio.h:144
btaudio_cfg_t::baud
pin_name_t baud
Definition: btaudio.h:146
btaudio_cfg_t::frs
pin_name_t frs
Definition: btaudio.h:145
btaudio_cnnct_two_calls
void btaudio_cnnct_two_calls(btaudio_t *ctx)
Connect two calls function.
ANALOG_OUTPUT
@ ANALOG_OUTPUT
Definition: btaudio.h:160
S_PDIF_OUPUT
@ S_PDIF_OUPUT
Definition: btaudio.h:162
btaudio_decrease_volume
void btaudio_decrease_volume(btaudio_t *ctx)
Decrease volume function.
btaudio_add_held_call
void btaudio_add_held_call(btaudio_t *ctx)
Add held call function.
btaudio_reject_call
void btaudio_reject_call(btaudio_t *ctx)
Reject call function.
RES_24
@ RES_24
Definition: btaudio.h:169
btaudio_interrupt
uint8_t btaudio_interrupt(btaudio_t *ctx)
Get interrupt state function.
INTERCOM_DAC
@ INTERCOM_DAC
Definition: btaudio.h:163
RECONNECT_PWR_ON
@ RECONNECT_PWR_ON
Definition: btaudio.h:195
btaudio_reset_prev_paired_devices
void btaudio_reset_prev_paired_devices(btaudio_t *ctx)
Reset prev paired devices function.
btaudio_set_automatic_shutdown
uint8_t btaudio_set_automatic_shutdown(btaudio_t *ctx, uint16_t seconds)
Set automatic shutdown function.
btaudio_dfu_mode
void btaudio_dfu_mode(btaudio_t *ctx)
DFU mode function.
btaudio_cfg_t::rx_pin
pin_name_t rx_pin
Definition: btaudio.h:137
AAC_APTX
@ AAC_APTX
Definition: btaudio.h:197
ENABLE_PIO4
@ ENABLE_PIO4
Definition: btaudio.h:200
btaudio_get_reg_settings
void btaudio_get_reg_settings(btaudio_t *ctx, char cmd)
Get register settings function.
extended_features_bitmask_values
extended_features_bitmask_values
Definition: btaudio.h:193
btaudio_answer_keyboard
uint8_t btaudio_answer_keyboard(btaudio_t *ctx, uint8_t answer)
Answer the keyboard function.
I2S_OUPUT
@ I2S_OUPUT
Definition: btaudio.h:161
btaudio_previous_track
void btaudio_previous_track(btaudio_t *ctx)
Play previous track function.
btaudio_set_audio_output
void btaudio_set_audio_output(btaudio_t *ctx, a2dp_routing_values_t setting, bit_res_t bit_res, sample_rate_t sample_rate)
Set audio output function.
btaudio_increase_volume
void btaudio_increase_volume(btaudio_t *ctx)
Increase volume function.
btaudio_cfg_t::stop_bit
uart_stop_bits_t stop_bit
Definition: btaudio.h:154
HFP_MODE
@ HFP_MODE
Definition: btaudio.h:188
ENABLE_TRACK_CHANGE
@ ENABLE_TRACK_CHANGE
Definition: btaudio.h:206
btaudio_set_speaker_gain_lvl
void btaudio_set_speaker_gain_lvl(btaudio_t *ctx, uint8_t speaker_gain_lvl)
Set speaker gain levels function.
btaudio_init
BTAUDIO_RETVAL btaudio_init(btaudio_t *ctx, btaudio_cfg_t *cfg)
Initialization function.
btaudio_cfg_setup
void btaudio_cfg_setup(btaudio_cfg_t *cfg)
Config Object Initialization function.
btaudio_set_device_name
uint8_t btaudio_set_device_name(btaudio_t *ctx, uint8_t *name)
Set device name function.
btaudio_get_gpio_dirr
void btaudio_get_gpio_dirr(btaudio_t *ctx)
Get GPIO DIRR function.
btaudio_t::uart
uart_t uart
Definition: btaudio.h:124
btaudio_call_phone_number
uint8_t btaudio_call_phone_number(btaudio_t *ctx, char *p_number)
Call phone number function.
btaudio_transfer_active_calls
void btaudio_transfer_active_calls(btaudio_t *ctx)
Transfer active calls function.
AVRCP_EK
@ AVRCP_EK
Definition: btaudio.h:194
RATE_48K
@ RATE_48K
Definition: btaudio.h:179
DISCOVERABLE
@ DISCOVERABLE
Definition: btaudio.h:196
btaudio_write_byte
void btaudio_write_byte(btaudio_t *ctx, uint8_t input)
Write Single byte function.
btaudio_get_all_settings
void btaudio_get_all_settings(btaudio_t *ctx)
Get all settings function.
btaudio_cfg_t::tx_pin
pin_name_t tx_pin
Definition: btaudio.h:138
btaudio_cfg_t::uart_blocking
bool uart_blocking
Definition: btaudio.h:151
btaudio_reset
void btaudio_reset(btaudio_t *ctx)
Reset function.
btaudio_display_caller_id
void btaudio_display_caller_id(btaudio_t *ctx)
Display caller Id function.
btaudio_t::pwr
digital_out_t pwr
Definition: btaudio.h:117
btaudio_toggle_local_echo
void btaudio_toggle_local_echo(btaudio_t *ctx)
Toggle local echo function.
btaudio_set_extended_features
void btaudio_set_extended_features(btaudio_t *ctx, extended_features_bitmask_values ext_features)
Set extended features function.
RATE_8K
@ RATE_8K
Definition: btaudio.h:176
btaudio_reboot
void btaudio_reboot(btaudio_t *ctx)
Reboot function.
btaudio_dial_last_phone_number
void btaudio_dial_last_phone_number(btaudio_t *ctx)
Dial last phone number function.
btaudio_set_toneain_lvl
void btaudio_set_toneain_lvl(btaudio_t *ctx, uint8_t tone_gain_lvl)
Set tone gain levels function.
btaudio_cfg_t::rst
pin_name_t rst
Definition: btaudio.h:142
IAP_MODE
@ IAP_MODE
Definition: btaudio.h:185
btaudio_write_command
void btaudio_write_command(btaudio_t *ctx, char *data_buf)
Write command function.
btaudio_cfg_t::parity_bit
uart_parity_t parity_bit
Definition: btaudio.h:153
btaudio_enable_voice_commands
void btaudio_enable_voice_commands(btaudio_t *ctx)
Enable voice commands function.
BTAUDIO_RETVAL
#define BTAUDIO_RETVAL
Definition: btaudio.h:80
btaudio_set_mode
void btaudio_set_mode(btaudio_t *ctx, uint8_t mode)
Set mode function.
btaudio_get_gpio_level
void btaudio_get_gpio_level(btaudio_t *ctx)
Get GPIO level function.
MUTE_VOLUME
@ MUTE_VOLUME
Definition: btaudio.h:199
btaudio_get_basic_settings
void btaudio_get_basic_settings(btaudio_t *ctx)
Get basic settings function.
btaudio_t::rst
digital_out_t rst
Definition: btaudio.h:116
REBOOT_DIS
@ REBOOT_DIS
Definition: btaudio.h:198
A2DP_MODE
@ A2DP_MODE
Definition: btaudio.h:187
btaudio_set_power_on
void btaudio_set_power_on(btaudio_t *ctx)
Power On function.
profile_bitmask_values
profile_bitmask_values
Definition: btaudio.h:184
DRV_TX_BUFFER_SIZE
#define DRV_TX_BUFFER_SIZE
Definition: btaudio.h:91
btaudio_set_factory_defaults
void btaudio_set_factory_defaults(btaudio_t *ctx)
Set factory defaults settings function.
btaudio_set_service_class_device
uint8_t btaudio_set_service_class_device(btaudio_t *ctx, uint8_t *sc_device)
Set service class of device function.
btaudio_get_help
void btaudio_get_help(btaudio_t *ctx)
Get help status function.
btaudio_set_cmd_mode
void btaudio_set_cmd_mode(btaudio_t *ctx, uint8_t mode)
Set command mode function.
btaudio_t
Click ctx object definition.
Definition: btaudio.h:113
SPP_MODE
@ SPP_MODE
Definition: btaudio.h:186
btaudio_show_track_metadata
void btaudio_show_track_metadata(btaudio_t *ctx)
Show track metadata function.
btaudio_t::cmd
digital_out_t cmd
Definition: btaudio.h:118
bit_res_t
bit_res_t
Definition: btaudio.h:168
btaudio_disconnect_current_connection
void btaudio_disconnect_current_connection(btaudio_t *ctx, profile_bitmask_values profile)
Disconnect current connection function.
btaudio_cfg_t
Click configuration structure definition.
Definition: btaudio.h:134
btaudio_set_authentication
void btaudio_set_authentication(btaudio_t *ctx, uint8_t authentication)
Set authentication function.
btaudio_next_track
void btaudio_next_track(btaudio_t *ctx)
Play next track function.
btaudio_cfg_t::baud_rate
uint32_t baud_rate
Definition: btaudio.h:150
btaudio_reconnect_most_recent
void btaudio_reconnect_most_recent(btaudio_t *ctx)
Reconnect most recent function.
DISABLE_SYS_TONES
@ DISABLE_SYS_TONES
Definition: btaudio.h:201
ENABLE_PLAYBACK_TONE
@ ENABLE_PLAYBACK_TONE
Definition: btaudio.h:207
btaudio_accept_held_call
void btaudio_accept_held_call(btaudio_t *ctx)
Accept held call function.
btaudio_get_battery_status
void btaudio_get_battery_status(btaudio_t *ctx)
Get battery status function.
a2dp_routing_values_t
a2dp_routing_values_t
Definition: btaudio.h:159
btaudio_accept_call
void btaudio_accept_call(btaudio_t *ctx)
Accept call function.
RATE_32K
@ RATE_32K
Definition: btaudio.h:177
btaudio_set_discovery_mask
void btaudio_set_discovery_mask(btaudio_t *ctx, uint8_t discovery_mask)
Set discovery mask enabled for discovery function.
btaudio_generic_read
int32_t btaudio_generic_read(btaudio_t *ctx, char *data_buf, uint16_t max_len)
Generic read function.
btaudio_mute_hold_call
uint8_t btaudio_mute_hold_call(btaudio_t *ctx, uint8_t mute)
Mute hold call function.
RATE_44K1
@ RATE_44K1
Definition: btaudio.h:178
btaudio_set_power_off
void btaudio_set_power_off(btaudio_t *ctx)
Power Off function.
RES_32
@ RES_32
Definition: btaudio.h:170
PWR_OFF_P_TIMEOUT
@ PWR_OFF_P_TIMEOUT
Definition: btaudio.h:202
AUTO_ACCEPT
@ AUTO_ACCEPT
Definition: btaudio.h:208
RECONNECT_PANIC
@ RECONNECT_PANIC
Definition: btaudio.h:204
btaudio_toggle_discoverable
uint8_t btaudio_toggle_discoverable(btaudio_t *ctx, uint8_t discoverable)
Toggle discoverable function.