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 
38 #include "mikrosdk_version.h"
39 
40 #ifdef __GNUC__
41 #if mikroSDK_GET_VERSION < 20800ul
42 #include "rcu_delays.h"
43 #else
44 #include "delays.h"
45 #endif
46 #endif
47 
48 #include "drv_digital_out.h"
49 #include "drv_digital_in.h"
50 #include "drv_uart.h"
51 
52 // -------------------------------------------------------------- PUBLIC MACROS
62 #define BTAUDIO_MAP_MIKROBUS( cfg, mikrobus ) \
63  cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
64  cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
65  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
66  cfg.pwr = MIKROBUS( mikrobus, MIKROBUS_CS ); \
67  cfg.cmd = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
68  cfg.frs = MIKROBUS( mikrobus, MIKROBUS_INT ); \
69  cfg.baud = MIKROBUS( mikrobus, MIKROBUS_AN )
70 
76 #define BTAUDIO_RETVAL uint8_t
77 
78 #define BTAUDIO_OK 0x00
79 #define BTAUDIO_INIT_ERROR 0xFF
80 
86 #define DRV_RX_BUFFER_SIZE 600
87 #define DRV_TX_BUFFER_SIZE 100
88 
94 #define BTAUDIO_ERR 0x00
95 #define BTAUDIO_STATUS_FALSE 0x00
96 #define BTAUDIO_STATUS_TRUE 0x01
97  // End group macro
100 // --------------------------------------------------------------- PUBLIC TYPES
108 typedef struct
109 {
110  // Output pins
111 
112  digital_out_t rst;
113  digital_out_t pwr;
114  digital_out_t cmd;
115  digital_out_t baud;
116  digital_out_t frs;
117 
118  // Modules
119 
120  uart_t uart;
121 
122  char uart_rx_buffer[ DRV_RX_BUFFER_SIZE ];
123  char uart_tx_buffer[ DRV_TX_BUFFER_SIZE ];
124 } btaudio_t;
125 
129 typedef struct
130 {
131  // Communication gpio pins
132 
133  pin_name_t rx_pin;
134  pin_name_t tx_pin;
135 
136  // Additional gpio pins
137 
138  pin_name_t rst;
139  pin_name_t pwr;
140  pin_name_t cmd;
141  pin_name_t frs;
142  pin_name_t baud;
143 
144  // static variable
145 
146  uint32_t baud_rate; // Clock speed.
148  uart_data_bits_t data_bit; // Data bits.
149  uart_parity_t parity_bit; // Parity bit.
150  uart_stop_bits_t stop_bit; // Stop bits.
151 
152 } btaudio_cfg_t;
153 
154 typedef enum
155 {
159  INTERCOM_DAC = 3
160 
162 
163 typedef enum
164 {
165  RES_24 = 0,
166  RES_32 = 1
167 
169 
170 typedef enum
171 {
172  RATE_8K = 0,
173  RATE_32K = 1,
175  RATE_48K = 3
176 
178 
179 typedef enum
180 {
181  IAP_MODE = 0,
182  SPP_MODE = 1,
184  HFP_MODE = 3
185 
187 
188 typedef enum
189 {
190  AVRCP_EK = 0,
193  AAC_APTX = 3,
204  AUTO_ACCEPT = 14
205 
207 
211 typedef uint8_t btaudio_error_t;
212  // End types group
214 // ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
215 
221 #ifdef __cplusplus
222 extern "C"{
223 #endif
224 
234 
243 
250 void btaudio_generic_write ( btaudio_t *ctx, char *data_buf, uint16_t len );
251 
261 int32_t btaudio_generic_read ( btaudio_t *ctx, char *data_buf, uint16_t max_len );
262 
272 
282 
291 void btaudio_reset ( btaudio_t *ctx );
292 
301 void btaudio_write_byte ( btaudio_t *ctx, uint8_t input );
302 
311 void btaudio_write_command ( btaudio_t *ctx, char *data_buf );
312 
324 void btaudio_set_mode ( btaudio_t *ctx, uint8_t mode );
325 
336 void btaudio_set_cmd_mode ( btaudio_t *ctx, uint8_t mode );
337 
346 
356 
381  bit_res_t bit_res,
382  sample_rate_t sample_rate );
383 
400 uint8_t btaudio_set_device_name ( btaudio_t *ctx, uint8_t *name );
401 
416 uint8_t btaudio_set_automatic_shutdown ( btaudio_t *ctx, uint16_t seconds );
417 
443 
457 void btaudio_set_authentication ( btaudio_t *ctx, uint8_t authentication );
458 
472 uint8_t btaudio_set_service_class_device( btaudio_t *ctx, uint8_t *sc_device );
473 
483 void btaudio_set_discovery_mask ( btaudio_t *ctx, uint8_t discovery_mask );
484 
498 uint8_t btaudio_set_security_pin ( btaudio_t *ctx, uint8_t *security_pin );
499 
509 void btaudio_set_speaker_gain_lvl ( btaudio_t *ctx, uint8_t speaker_gain_lvl );
510 
520 void btaudio_set_toneain_lvl ( btaudio_t *ctx, uint8_t tone_gain_lvl );
521 
532 
543 void btaudio_get_reg_settings ( btaudio_t *ctx, char cmd );
544 
554 
564 
574 
584 
601 uint8_t btaudio_toggle_discoverable ( btaudio_t *ctx, uint8_t discoverable );
602 
618 uint8_t btaudio_answer_keyboard ( btaudio_t *ctx, uint8_t answer );
619 
630 
644 uint8_t btaudio_call_phone_number ( btaudio_t *ctx, char *p_number );
645 
658 
668 
678 
688 
698 
708 
718 
728 
738 
748 
763 
779 uint8_t btaudio_mute_hold_call ( btaudio_t *ctx, uint8_t mute );
780 
789 void btaudio_reboot ( btaudio_t *ctx );
790 
800 
810 
820 
830 
840 
850 
860 
870 
880 
890 
900 
910 
923 uint8_t btaudio_interrupt ( btaudio_t *ctx );
924 
925 #ifdef __cplusplus
926 }
927 #endif
928 #endif // _BTAUDIO_H_
929  // End public_function group
932 
933 // ------------------------------------------------------------------------- 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:86
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:116
btaudio_cfg_t::data_bit
uart_data_bits_t data_bit
Definition: btaudio.h:148
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:115
btaudio_userBusy
void btaudio_userBusy(btaudio_t *ctx)
User busy function.
btaudio_error_t
uint8_t btaudio_error_t
Error type.
Definition: btaudio.h:211
ENABLE_INDICATOR
@ ENABLE_INDICATOR
Definition: btaudio.h:201
sample_rate_t
sample_rate_t
Definition: btaudio.h:171
btaudio_cfg_t::pwr
pin_name_t pwr
Definition: btaudio.h:139
RESET_PWR_OFF
@ RESET_PWR_OFF
Definition: btaudio.h:199
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:140
btaudio_cfg_t::baud
pin_name_t baud
Definition: btaudio.h:142
btaudio_cfg_t::frs
pin_name_t frs
Definition: btaudio.h:141
btaudio_cnnct_two_calls
void btaudio_cnnct_two_calls(btaudio_t *ctx)
Connect two calls function.
ANALOG_OUTPUT
@ ANALOG_OUTPUT
Definition: btaudio.h:156
S_PDIF_OUPUT
@ S_PDIF_OUPUT
Definition: btaudio.h:158
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:165
btaudio_interrupt
uint8_t btaudio_interrupt(btaudio_t *ctx)
Get interrupt state function.
INTERCOM_DAC
@ INTERCOM_DAC
Definition: btaudio.h:159
RECONNECT_PWR_ON
@ RECONNECT_PWR_ON
Definition: btaudio.h:191
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:133
AAC_APTX
@ AAC_APTX
Definition: btaudio.h:193
ENABLE_PIO4
@ ENABLE_PIO4
Definition: btaudio.h:196
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:189
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:157
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:150
HFP_MODE
@ HFP_MODE
Definition: btaudio.h:184
ENABLE_TRACK_CHANGE
@ ENABLE_TRACK_CHANGE
Definition: btaudio.h:202
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:120
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:190
RATE_48K
@ RATE_48K
Definition: btaudio.h:175
DISCOVERABLE
@ DISCOVERABLE
Definition: btaudio.h:192
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:134
btaudio_cfg_t::uart_blocking
bool uart_blocking
Definition: btaudio.h:147
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:113
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:172
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:138
IAP_MODE
@ IAP_MODE
Definition: btaudio.h:181
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:149
btaudio_enable_voice_commands
void btaudio_enable_voice_commands(btaudio_t *ctx)
Enable voice commands function.
BTAUDIO_RETVAL
#define BTAUDIO_RETVAL
Definition: btaudio.h:76
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:195
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:112
REBOOT_DIS
@ REBOOT_DIS
Definition: btaudio.h:194
A2DP_MODE
@ A2DP_MODE
Definition: btaudio.h:183
btaudio_set_power_on
void btaudio_set_power_on(btaudio_t *ctx)
Power On function.
profile_bitmask_values
profile_bitmask_values
Definition: btaudio.h:180
DRV_TX_BUFFER_SIZE
#define DRV_TX_BUFFER_SIZE
Definition: btaudio.h:87
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:109
SPP_MODE
@ SPP_MODE
Definition: btaudio.h:182
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:114
bit_res_t
bit_res_t
Definition: btaudio.h:164
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:130
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:146
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:197
ENABLE_PLAYBACK_TONE
@ ENABLE_PLAYBACK_TONE
Definition: btaudio.h:203
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:155
btaudio_accept_call
void btaudio_accept_call(btaudio_t *ctx)
Accept call function.
RATE_32K
@ RATE_32K
Definition: btaudio.h:173
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:174
btaudio_set_power_off
void btaudio_set_power_off(btaudio_t *ctx)
Power Off function.
RES_32
@ RES_32
Definition: btaudio.h:166
PWR_OFF_P_TIMEOUT
@ PWR_OFF_P_TIMEOUT
Definition: btaudio.h:198
AUTO_ACCEPT
@ AUTO_ACCEPT
Definition: btaudio.h:204
RECONNECT_PANIC
@ RECONNECT_PANIC
Definition: btaudio.h:200
btaudio_toggle_discoverable
uint8_t btaudio_toggle_discoverable(btaudio_t *ctx, uint8_t discoverable)
Toggle discoverable function.