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 "drv_digital_out.h"
39 #include "drv_digital_in.h"
40 #include "drv_uart.h"
41 
42 // -------------------------------------------------------------- PUBLIC MACROS
52 #define BTAUDIO_MAP_MIKROBUS( cfg, mikrobus ) \
53  cfg.tx_pin = MIKROBUS( mikrobus, MIKROBUS_TX ); \
54  cfg.rx_pin = MIKROBUS( mikrobus, MIKROBUS_RX ); \
55  cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
56  cfg.pwr = MIKROBUS( mikrobus, MIKROBUS_CS ); \
57  cfg.cmd = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
58  cfg.frs = MIKROBUS( mikrobus, MIKROBUS_INT ); \
59  cfg.baud = MIKROBUS( mikrobus, MIKROBUS_AN )
60 
66 #define BTAUDIO_RETVAL uint8_t
67 
68 #define BTAUDIO_OK 0x00
69 #define BTAUDIO_INIT_ERROR 0xFF
70 
76 #define DRV_RX_BUFFER_SIZE 600
77 #define DRV_TX_BUFFER_SIZE 100
78 
84 #define BTAUDIO_ERR 0x00
85 #define BTAUDIO_STATUS_FALSE 0x00
86 #define BTAUDIO_STATUS_TRUE 0x01
87  // End group macro
90 // --------------------------------------------------------------- PUBLIC TYPES
98 typedef struct
99 {
100  // Output pins
101 
102  digital_out_t rst;
103  digital_out_t pwr;
104  digital_out_t cmd;
105  digital_out_t baud;
106  digital_out_t frs;
107 
108  // Modules
109 
110  uart_t uart;
111 
112  char uart_rx_buffer[ DRV_RX_BUFFER_SIZE ];
113  char uart_tx_buffer[ DRV_TX_BUFFER_SIZE ];
114 } btaudio_t;
115 
119 typedef struct
120 {
121  // Communication gpio pins
122 
123  pin_name_t rx_pin;
124  pin_name_t tx_pin;
125 
126  // Additional gpio pins
127 
128  pin_name_t rst;
129  pin_name_t pwr;
130  pin_name_t cmd;
131  pin_name_t frs;
132  pin_name_t baud;
133 
134  // static variable
135 
136  uint32_t baud_rate; // Clock speed.
138  uart_data_bits_t data_bit; // Data bits.
139  uart_parity_t parity_bit; // Parity bit.
140  uart_stop_bits_t stop_bit; // Stop bits.
141 
142 } btaudio_cfg_t;
143 
144 typedef enum
145 {
149  INTERCOM_DAC = 3
150 
152 
153 typedef enum
154 {
155  RES_24 = 0,
156  RES_32 = 1
157 
159 
160 typedef enum
161 {
162  RATE_8K = 0,
163  RATE_32K = 1,
165  RATE_48K = 3
166 
168 
169 typedef enum
170 {
171  IAP_MODE = 0,
172  SPP_MODE = 1,
174  HFP_MODE = 3
175 
177 
178 typedef enum
179 {
180  AVRCP_EK = 0,
183  AAC_APTX = 3,
194  AUTO_ACCEPT = 14
195 
197 
201 typedef uint8_t btaudio_error_t;
202  // End types group
204 // ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
205 
211 #ifdef __cplusplus
212 extern "C"{
213 #endif
214 
224 
233 
240 void btaudio_generic_write ( btaudio_t *ctx, char *data_buf, uint16_t len );
241 
251 int32_t btaudio_generic_read ( btaudio_t *ctx, char *data_buf, uint16_t max_len );
252 
262 
272 
281 void btaudio_reset ( btaudio_t *ctx );
282 
291 void btaudio_write_byte ( btaudio_t *ctx, uint8_t input );
292 
301 void btaudio_write_command ( btaudio_t *ctx, char *data_buf );
302 
314 void btaudio_set_mode ( btaudio_t *ctx, uint8_t mode );
315 
326 void btaudio_set_cmd_mode ( btaudio_t *ctx, uint8_t mode );
327 
336 
345 void btaudio_get_all_settings ( btaudio_t *ctx, uint8_t *response );
346 
371  bit_res_t bit_res,
372  sample_rate_t sample_rate );
373 
390 uint8_t btaudio_set_device_name ( btaudio_t *ctx, uint8_t *name );
391 
406 uint8_t btaudio_set_automatic_shutdown ( btaudio_t *ctx, uint16_t seconds );
407 
433 
447 void btaudio_set_authentication ( btaudio_t *ctx, uint8_t authentication );
448 
462 uint8_t btaudio_set_service_class_device( btaudio_t *ctx, uint8_t *sc_device );
463 
473 void btaudio_set_discovery_mask ( btaudio_t *ctx, uint8_t discovery_mask );
474 
488 uint8_t btaudio_set_security_pin ( btaudio_t *ctx, uint8_t *security_pin );
489 
499 void btaudio_set_speaker_gain_lvl ( btaudio_t *ctx, uint8_t speaker_gain_lvl );
500 
510 void btaudio_set_toneain_lvl ( btaudio_t *ctx, uint8_t tone_gain_lvl );
511 
522 
533 void btaudio_get_reg_settings ( btaudio_t *ctx, char cmd );
534 
544 
554 
564 
574 
591 uint8_t btaudio_toggle_discoverable ( btaudio_t *ctx, uint8_t discoverable );
592 
608 uint8_t btaudio_answer_keyboard ( btaudio_t *ctx, uint8_t answer );
609 
620 
634 uint8_t btaudio_call_phone_number ( btaudio_t *ctx, char *p_number );
635 
648 
658 
668 
678 
688 
698 
708 
718 
728 
738 
753 
769 uint8_t btaudio_mute_hold_call ( btaudio_t *ctx, uint8_t mute );
770 
779 void btaudio_reboot ( btaudio_t *ctx );
780 
790 
800 
810 
820 
830 
840 
850 
860 
870 
880 
890 
900 
913 uint8_t btaudio_interrupt ( btaudio_t *ctx );
914 
915 #ifdef __cplusplus
916 }
917 #endif
918 #endif // _BTAUDIO_H_
919  // End public_function group
922 
923 // ------------------------------------------------------------------------- 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:76
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:106
btaudio_cfg_t::data_bit
uart_data_bits_t data_bit
Definition: btaudio.h:138
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:105
btaudio_userBusy
void btaudio_userBusy(btaudio_t *ctx)
User busy function.
btaudio_error_t
uint8_t btaudio_error_t
Error type.
Definition: btaudio.h:201
ENABLE_INDICATOR
@ ENABLE_INDICATOR
Definition: btaudio.h:191
sample_rate_t
sample_rate_t
Definition: btaudio.h:161
btaudio_cfg_t::pwr
pin_name_t pwr
Definition: btaudio.h:129
RESET_PWR_OFF
@ RESET_PWR_OFF
Definition: btaudio.h:189
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:130
btaudio_cfg_t::baud
pin_name_t baud
Definition: btaudio.h:132
btaudio_cfg_t::frs
pin_name_t frs
Definition: btaudio.h:131
btaudio_cnnct_two_calls
void btaudio_cnnct_two_calls(btaudio_t *ctx)
Connect two calls function.
ANALOG_OUTPUT
@ ANALOG_OUTPUT
Definition: btaudio.h:146
S_PDIF_OUPUT
@ S_PDIF_OUPUT
Definition: btaudio.h:148
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:155
btaudio_interrupt
uint8_t btaudio_interrupt(btaudio_t *ctx)
Get interrupt state function.
INTERCOM_DAC
@ INTERCOM_DAC
Definition: btaudio.h:149
RECONNECT_PWR_ON
@ RECONNECT_PWR_ON
Definition: btaudio.h:181
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:123
AAC_APTX
@ AAC_APTX
Definition: btaudio.h:183
ENABLE_PIO4
@ ENABLE_PIO4
Definition: btaudio.h:186
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:179
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:147
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:140
HFP_MODE
@ HFP_MODE
Definition: btaudio.h:174
ENABLE_TRACK_CHANGE
@ ENABLE_TRACK_CHANGE
Definition: btaudio.h:192
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:110
btaudio_get_all_settings
void btaudio_get_all_settings(btaudio_t *ctx, uint8_t *response)
Get all settings function.
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:180
RATE_48K
@ RATE_48K
Definition: btaudio.h:165
DISCOVERABLE
@ DISCOVERABLE
Definition: btaudio.h:182
btaudio_write_byte
void btaudio_write_byte(btaudio_t *ctx, uint8_t input)
Write Single byte function.
btaudio_cfg_t::tx_pin
pin_name_t tx_pin
Definition: btaudio.h:124
btaudio_cfg_t::uart_blocking
bool uart_blocking
Definition: btaudio.h:137
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:103
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:162
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:128
IAP_MODE
@ IAP_MODE
Definition: btaudio.h:171
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:139
btaudio_enable_voice_commands
void btaudio_enable_voice_commands(btaudio_t *ctx)
Enable voice commands function.
BTAUDIO_RETVAL
#define BTAUDIO_RETVAL
Definition: btaudio.h:66
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:185
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:102
REBOOT_DIS
@ REBOOT_DIS
Definition: btaudio.h:184
A2DP_MODE
@ A2DP_MODE
Definition: btaudio.h:173
btaudio_set_power_on
void btaudio_set_power_on(btaudio_t *ctx)
Power On function.
profile_bitmask_values
profile_bitmask_values
Definition: btaudio.h:170
DRV_TX_BUFFER_SIZE
#define DRV_TX_BUFFER_SIZE
Definition: btaudio.h:77
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:99
SPP_MODE
@ SPP_MODE
Definition: btaudio.h:172
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:104
bit_res_t
bit_res_t
Definition: btaudio.h:154
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:120
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:136
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:187
ENABLE_PLAYBACK_TONE
@ ENABLE_PLAYBACK_TONE
Definition: btaudio.h:193
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:145
btaudio_accept_call
void btaudio_accept_call(btaudio_t *ctx)
Accept call function.
RATE_32K
@ RATE_32K
Definition: btaudio.h:163
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:164
btaudio_set_power_off
void btaudio_set_power_off(btaudio_t *ctx)
Power Off function.
RES_32
@ RES_32
Definition: btaudio.h:156
PWR_OFF_P_TIMEOUT
@ PWR_OFF_P_TIMEOUT
Definition: btaudio.h:188
AUTO_ACCEPT
@ AUTO_ACCEPT
Definition: btaudio.h:194
RECONNECT_PANIC
@ RECONNECT_PANIC
Definition: btaudio.h:190
btaudio_toggle_discoverable
uint8_t btaudio_toggle_discoverable(btaudio_t *ctx, uint8_t discoverable)
Toggle discoverable function.