| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- /* SPDX-License-Identifier: Apache-2.0 */
- /*
- * Copyright (C) 2012 The Android Open Source Project
- *
- */
- #ifndef ANDROID_INCLUDE_BT_HF_H
- #define ANDROID_INCLUDE_BT_HF_H
- __BEGIN_DECLS
- /* AT response code - OK/Error */
- typedef enum {
- BTHF_AT_RESPONSE_ERROR = 0,
- BTHF_AT_RESPONSE_OK
- } bthf_at_response_t;
- typedef enum {
- BTHF_CONNECTION_STATE_DISCONNECTED = 0,
- BTHF_CONNECTION_STATE_CONNECTING,
- BTHF_CONNECTION_STATE_CONNECTED,
- BTHF_CONNECTION_STATE_SLC_CONNECTED,
- BTHF_CONNECTION_STATE_DISCONNECTING
- } bthf_connection_state_t;
- typedef enum {
- BTHF_AUDIO_STATE_DISCONNECTED = 0,
- BTHF_AUDIO_STATE_CONNECTING,
- BTHF_AUDIO_STATE_CONNECTED,
- BTHF_AUDIO_STATE_DISCONNECTING
- } bthf_audio_state_t;
- typedef enum {
- BTHF_VR_STATE_STOPPED = 0,
- BTHF_VR_STATE_STARTED
- } bthf_vr_state_t;
- typedef enum {
- BTHF_VOLUME_TYPE_SPK = 0,
- BTHF_VOLUME_TYPE_MIC
- } bthf_volume_type_t;
- /* Noise Reduction and Echo Cancellation */
- typedef enum
- {
- BTHF_NREC_STOP,
- BTHF_NREC_START
- } bthf_nrec_t;
- /* WBS codec setting */
- typedef enum
- {
- BTHF_WBS_NONE,
- BTHF_WBS_NO,
- BTHF_WBS_YES
- }bthf_wbs_config_t;
- /* CHLD - Call held handling */
- typedef enum
- {
- BTHF_CHLD_TYPE_RELEASEHELD, // Terminate all held or set UDUB("busy") to a waiting call
- BTHF_CHLD_TYPE_RELEASEACTIVE_ACCEPTHELD, // Terminate all active calls and accepts a waiting/held call
- BTHF_CHLD_TYPE_HOLDACTIVE_ACCEPTHELD, // Hold all active calls and accepts a waiting/held call
- BTHF_CHLD_TYPE_ADDHELDTOCONF, // Add all held calls to a conference
- } bthf_chld_type_t;
- /** Callback for connection state change.
- * state will have one of the values from BtHfConnectionState
- */
- typedef void (* bthf_connection_state_callback)(bthf_connection_state_t state, bt_bdaddr_t *bd_addr);
- /** Callback for audio connection state change.
- * state will have one of the values from BtHfAudioState
- */
- typedef void (* bthf_audio_state_callback)(bthf_audio_state_t state, bt_bdaddr_t *bd_addr);
- /** Callback for VR connection state change.
- * state will have one of the values from BtHfVRState
- */
- typedef void (* bthf_vr_cmd_callback)(bthf_vr_state_t state, bt_bdaddr_t *bd_addr);
- /** Callback for answer incoming call (ATA)
- */
- typedef void (* bthf_answer_call_cmd_callback)(bt_bdaddr_t *bd_addr);
- /** Callback for disconnect call (AT+CHUP)
- */
- typedef void (* bthf_hangup_call_cmd_callback)(bt_bdaddr_t *bd_addr);
- /** Callback for disconnect call (AT+CHUP)
- * type will denote Speaker/Mic gain (BtHfVolumeControl).
- */
- typedef void (* bthf_volume_cmd_callback)(bthf_volume_type_t type, int volume, bt_bdaddr_t *bd_addr);
- /** Callback for dialing an outgoing call
- * If number is NULL, redial
- */
- typedef void (* bthf_dial_call_cmd_callback)(char *number, bt_bdaddr_t *bd_addr);
- /** Callback for sending DTMF tones
- * tone contains the dtmf character to be sent
- */
- typedef void (* bthf_dtmf_cmd_callback)(char tone, bt_bdaddr_t *bd_addr);
- /** Callback for enabling/disabling noise reduction/echo cancellation
- * value will be 1 to enable, 0 to disable
- */
- typedef void (* bthf_nrec_cmd_callback)(bthf_nrec_t nrec, bt_bdaddr_t *bd_addr);
- /** Callback for AT+BCS and event from BAC
- * WBS enable, WBS disable
- */
- typedef void (* bthf_wbs_callback)(bthf_wbs_config_t wbs, bt_bdaddr_t *bd_addr);
- /** Callback for call hold handling (AT+CHLD)
- * value will contain the call hold command (0, 1, 2, 3)
- */
- typedef void (* bthf_chld_cmd_callback)(bthf_chld_type_t chld, bt_bdaddr_t *bd_addr);
- /** Callback for CNUM (subscriber number)
- */
- typedef void (* bthf_cnum_cmd_callback)(bt_bdaddr_t *bd_addr);
- /** Callback for indicators (CIND)
- */
- typedef void (* bthf_cind_cmd_callback)(bt_bdaddr_t *bd_addr);
- /** Callback for operator selection (COPS)
- */
- typedef void (* bthf_cops_cmd_callback)(bt_bdaddr_t *bd_addr);
- /** Callback for call list (AT+CLCC)
- */
- typedef void (* bthf_clcc_cmd_callback) (bt_bdaddr_t *bd_addr);
- /** Callback for unknown AT command recd from HF
- * at_string will contain the unparsed AT string
- */
- typedef void (* bthf_unknown_at_cmd_callback)(char *at_string, bt_bdaddr_t *bd_addr);
- /** Callback for keypressed (HSP) event.
- */
- typedef void (* bthf_key_pressed_cmd_callback)(bt_bdaddr_t *bd_addr);
- /** BT-HF callback structure. */
- typedef struct {
- /** set to sizeof(BtHfCallbacks) */
- size_t size;
- bthf_connection_state_callback connection_state_cb;
- bthf_audio_state_callback audio_state_cb;
- bthf_vr_cmd_callback vr_cmd_cb;
- bthf_answer_call_cmd_callback answer_call_cmd_cb;
- bthf_hangup_call_cmd_callback hangup_call_cmd_cb;
- bthf_volume_cmd_callback volume_cmd_cb;
- bthf_dial_call_cmd_callback dial_call_cmd_cb;
- bthf_dtmf_cmd_callback dtmf_cmd_cb;
- bthf_nrec_cmd_callback nrec_cmd_cb;
- bthf_wbs_callback wbs_cb;
- bthf_chld_cmd_callback chld_cmd_cb;
- bthf_cnum_cmd_callback cnum_cmd_cb;
- bthf_cind_cmd_callback cind_cmd_cb;
- bthf_cops_cmd_callback cops_cmd_cb;
- bthf_clcc_cmd_callback clcc_cmd_cb;
- bthf_unknown_at_cmd_callback unknown_at_cmd_cb;
- bthf_key_pressed_cmd_callback key_pressed_cmd_cb;
- } bthf_callbacks_t;
- /** Network Status */
- typedef enum
- {
- BTHF_NETWORK_STATE_NOT_AVAILABLE = 0,
- BTHF_NETWORK_STATE_AVAILABLE
- } bthf_network_state_t;
- /** Service type */
- typedef enum
- {
- BTHF_SERVICE_TYPE_HOME = 0,
- BTHF_SERVICE_TYPE_ROAMING
- } bthf_service_type_t;
- typedef enum {
- BTHF_CALL_STATE_ACTIVE = 0,
- BTHF_CALL_STATE_HELD,
- BTHF_CALL_STATE_DIALING,
- BTHF_CALL_STATE_ALERTING,
- BTHF_CALL_STATE_INCOMING,
- BTHF_CALL_STATE_WAITING,
- BTHF_CALL_STATE_IDLE
- } bthf_call_state_t;
- typedef enum {
- BTHF_CALL_DIRECTION_OUTGOING = 0,
- BTHF_CALL_DIRECTION_INCOMING
- } bthf_call_direction_t;
- typedef enum {
- BTHF_CALL_TYPE_VOICE = 0,
- BTHF_CALL_TYPE_DATA,
- BTHF_CALL_TYPE_FAX
- } bthf_call_mode_t;
- typedef enum {
- BTHF_CALL_MPTY_TYPE_SINGLE = 0,
- BTHF_CALL_MPTY_TYPE_MULTI
- } bthf_call_mpty_type_t;
- typedef enum {
- BTHF_CALL_ADDRTYPE_UNKNOWN = 0x81,
- BTHF_CALL_ADDRTYPE_INTERNATIONAL = 0x91
- } bthf_call_addrtype_t;
- /** Represents the standard BT-HF interface. */
- typedef struct {
- /** set to sizeof(BtHfInterface) */
- size_t size;
- /**
- * Register the BtHf callbacks
- */
- bt_status_t (*init)( bthf_callbacks_t* callbacks, int max_hf_clients);
- /** connect to headset */
- bt_status_t (*connect)( bt_bdaddr_t *bd_addr );
- /** dis-connect from headset */
- bt_status_t (*disconnect)( bt_bdaddr_t *bd_addr );
- /** create an audio connection */
- bt_status_t (*connect_audio)( bt_bdaddr_t *bd_addr );
- /** close the audio connection */
- bt_status_t (*disconnect_audio)( bt_bdaddr_t *bd_addr );
- /** start voice recognition */
- bt_status_t (*start_voice_recognition)( bt_bdaddr_t *bd_addr );
- /** stop voice recognition */
- bt_status_t (*stop_voice_recognition)( bt_bdaddr_t *bd_addr );
- /** volume control */
- bt_status_t (*volume_control) (bthf_volume_type_t type, int volume, bt_bdaddr_t *bd_addr );
- /** Combined device status change notification */
- bt_status_t (*device_status_notification)(bthf_network_state_t ntk_state, bthf_service_type_t svc_type, int signal,
- int batt_chg);
- /** Response for COPS command */
- bt_status_t (*cops_response)(const char *cops, bt_bdaddr_t *bd_addr );
- /** Response for CIND command */
- bt_status_t (*cind_response)(int svc, int num_active, int num_held, bthf_call_state_t call_setup_state,
- int signal, int roam, int batt_chg, bt_bdaddr_t *bd_addr );
- /** Pre-formatted AT response, typically in response to unknown AT cmd */
- bt_status_t (*formatted_at_response)(const char *rsp, bt_bdaddr_t *bd_addr );
- /** ok/error response
- * ERROR (0)
- * OK (1)
- */
- bt_status_t (*at_response) (bthf_at_response_t response_code, int error_code, bt_bdaddr_t *bd_addr );
- /** response for CLCC command
- * Can be iteratively called for each call index
- * Call index of 0 will be treated as NULL termination (Completes response)
- */
- bt_status_t (*clcc_response) (int index, bthf_call_direction_t dir,
- bthf_call_state_t state, bthf_call_mode_t mode,
- bthf_call_mpty_type_t mpty, const char *number,
- bthf_call_addrtype_t type, bt_bdaddr_t *bd_addr );
- /** notify of a call state change
- * Each update notifies
- * 1. Number of active/held/ringing calls
- * 2. call_state: This denotes the state change that triggered this msg
- * This will take one of the values from BtHfCallState
- * 3. number & type: valid only for incoming & waiting call
- */
- bt_status_t (*phone_state_change) (int num_active, int num_held, bthf_call_state_t call_setup_state,
- const char *number, bthf_call_addrtype_t type);
- /** Closes the interface. */
- void (*cleanup)( void );
- /** configureation for the SCO codec */
- bt_status_t (*configure_wbs)( bt_bdaddr_t *bd_addr ,bthf_wbs_config_t config );
- } bthf_interface_t;
- __END_DECLS
- #endif /* ANDROID_INCLUDE_BT_HF_H */
|