MXC-A36_2024.04.17/MXC-Screen_display/components/btdm/include/hf_api.h

4121 lines
150 KiB
C

#ifndef __HF_API_H_
#define __HF_API_H_
#include "btconfig.h"
#include "bt_types.h"
#include "rfcomm_api.h"
#include "sec_api.h"
/*---------------------------------------------------------------------------
* Hands-free SDK API layer
*
* The Hands-free SDK is designed to create a hands-free application
* for Bluetooth. It includes a complete implementation of the
* Hands-Free Profiles v1.5. It also includes some features beyond the
* basic profiles that take advantage of features exported by many
* shipping phones.
*
* The Hands-free SDK provides service discovery, connection management,
* call management, and basic phone book management. It also allows for
* the transmission and reception of AT commands not specifically
* supported by Bluetooth profiles.
*
* This SDK also includes an optional Call Manager component that tracks
* the state of calls in the audio gateway. Many different events are
* generated to provide information about calls on the audio gateway.
* The Call Manager interprets these various events and translates them
* into a simplified event form. The states of all calls are maintained
* within the Call Manager and can be queried by the application. The
* Hands-Free code informs the Call Manager when events occur that could
* affect the call state. The Call Manager makes intelligent decisions
* on which AT commands to send based on this information. The Call
* Manager will also use a polling method to keep the call state
* information up to date.
*/
/****************************************************************************
*
* Constants
*
****************************************************************************/
#ifndef HF_WIDE_BAND_SPEECH
#define HF_WIDE_BAND_SPEECH XA_DISABLED
#endif
#define HF_CODEC_NEG HF_WIDE_BAND_SPEECH
/*---------------------------------------------------------------------------
* HF_VREC constant
* This define indicates whether the voice recognition features are
* supported or not. Normally, voice recognition is enabled. If your
* application does not support voice recognition, then you can define
* HF_VREC as XA_DISABLED in the overide.h file.
*/
#ifndef HF_VREC
#define HF_VREC XA_ENABLED
#endif /* HF_VREC */
/*---------------------------------------------------------------------------
* HF_FEATURE_ECHO_NOISE constant
* This define indicates whether this device supports the echo canceling
* and/or noise reduction feature. This value is used when defining the
* capabilities of the Hands-Free application. See HF_SDK_FEATURES.
*/
#define HF_FEATURE_ECHO_NOISE 0x00000001
/*---------------------------------------------------------------------------
* HF_FEATURE_CALL_WAITING constant
* This define indicates whether this device supports the call-waiting
* and 3-way calling feature. This value can be used when defining the
* capabilities of the Hands-Free application. See HF_SDK_FEATURES.
*/
#define HF_FEATURE_CALL_WAITING 0x00000002
/*---------------------------------------------------------------------------
* HF_FEATURE_CLI_PRESENTATION constant
* This define indicates whether this device supports the Calling Line
* Identification (CLI) presentation capability feature. This value can
* be used when defining the capabilities of the Hands-Free
* application. See HF_SDK_FEATURES.
*/
#define HF_FEATURE_CLI_PRESENTATION 0x00000004
/*---------------------------------------------------------------------------
* HF_FEATURE_VOICE_RECOGNITION constant
* This define indicates whether this device supports the voice
* recognition function. This value can be used when defining the
* capabilities of the Hands-Free application. See HF_SDK_FEATURES.
*/
#define HF_FEATURE_VOICE_RECOGNITION 0x00000008
/*---------------------------------------------------------------------------
* HF_FEATURE_VOLUME_CONTROL constant
* This define indicates whether this device supports the remote volume
* control feature. This value can be used when defining the
* capabilities of the Hands-Free application. See HF_SDK_FEATURES.
*/
#define HF_FEATURE_VOLUME_CONTROL 0x00000010
/*---------------------------------------------------------------------------
* HF_FEATURE_ENHANCED_CALL_STATUS constant
* This define indicates whether this device supports enhanced call
* status features like call listing and call held indications. See
* HF_SDK_FEATURES.
*/
#define HF_FEATURE_ENHANCED_CALL_STATUS 0x00000020
/*---------------------------------------------------------------------------
* HF_FEATURE_ENHANCED_CALL_CTRL constant
* This define indicates whether this device supports enhanced call
* control features like call specifying specific lines to put on hold.
* See HF_SDK_FEATURES.
*/
#define HF_FEATURE_ENHANCED_CALL_CTRL 0x00000040
/*---------------------------------------------------------------------------
* HF_FEATURE_CODEC_NEGOTIATION constant
* This define indicates whether this device supports codec negotiation
* features used for Wide Band Speech.
* See HF_SDK_FEATURES.
*/
#define HF_FEATURE_CODEC_NEGOTIATION 0x00000080
/*---------------------------------------------------------------------------
* HF_SDK_FEATURES constant
* This define indicates which Hands Free Unit features are supported by
* the application and device. Features that are supported by the
* application must be advertised to the Audio Gateway, so that it knows
* the capabilities of the Hands-Free Unit. If this value needs to be
* changed, a modified definition can be placed in overide.h with the
* features supported by the Hands-Free application.
*/
#ifndef HF_SDK_FEATURES
#define HF_FEATURE_VOICE_RECOGNITION_CFG HF_FEATURE_VOICE_RECOGNITION
#define HF_FEATURE_CODEC_NEGOTIATION_CFG HF_FEATURE_CODEC_NEGOTIATION
#define HF_SDK_FEATURES (HF_FEATURE_ECHO_NOISE | \
HF_FEATURE_CALL_WAITING | \
HF_FEATURE_CLI_PRESENTATION | \
HF_FEATURE_VOICE_RECOGNITION_CFG| \
HF_FEATURE_CODEC_NEGOTIATION_CFG| \
HF_FEATURE_VOLUME_CONTROL | \
HF_FEATURE_ENHANCED_CALL_STATUS | \
HF_FEATURE_ENHANCED_CALL_CTRL)
#endif /* HF_SDK_FEATURES */
/*---------------------------------------------------------------------------
* HF_TX_BUFFER_SIZE constant
* HF_TX_BUFFER_SIZE defines the maximum size of AT command data that
* can be transmitted. The default is large enough to handle all AT
* commands supported by the Hands-free SDK. If raw AT commands are
* sent that are larger than the default value, then this number must be
* increased.
*/
#ifndef HF_TX_BUFFER_SIZE
#define HF_TX_BUFFER_SIZE 32
#endif /* HF_TX_BUFFER_SIZE */
/*---------------------------------------------------------------------------
* HF_RECV_BUFFER_SIZE constant
* HF_RECV_BUFFER_SIZE defines the maximum size of AT response data that
* can be received. The default is large enough to handle all AT
* responses supported by the Hands-Free profile.
*/
#ifndef HF_RECV_BUFFER_SIZE
#define HF_RECV_BUFFER_SIZE 512
#endif /* HF_RECV_BUFFER_SIZE */
/****************************************************************************
*
* Types
*
****************************************************************************/
/*--------------------------------------------------------------------------
* HfChannelStates type
*
* This type enumerates the possible Hands-Free channel connection
* states.
*/
typedef uint8_t HfChannelStates;
/** The channel is currently closed.
*/
#define HF_STATE_CLOSED 0
/** An outgoing ACL data link is currently being setup.
*/
#define HF_STATE_CONN_PENDING 1
/** An incoming ACL data link is currently being setup.
*/
#define HF_STATE_CONN_INCOMING 2
/** An ACL data link has been established, and the Hands-Free Service Level
* Link parameters are currently being negotiated.
*/
#define HF_STATE_NEGOTIATE 3
/** A Hands-Free channel is currently open.
*/
#define HF_STATE_OPEN 4
/** Closing the link but waiting for the audio link to go down first.
*/
#define HF_STATE_DISC 5
/* End of HfChannelStates */
/*---------------------------------------------------------------------------
* HfEvent type
*
* All indications and confirmations are sent through a callback
* function. Depending on the event, different elements of
* the HfCallbackParms "HfCallbackParms.p" union will be valid.
*/
typedef uint16_t HfEvent;
/** An incoming service level connection is being established. This happens
* when the audio gateway establishes the service connection.
* The data connection is not available yet for issuing commands to the
* audio gateway. When the HF_EVENT_SERVICE_CONNECTED event is received,
* the channel is available for issuing commands.
*
* When this callback is received, the "HfCallbackParms.p.remDev" field
* contains a pointer to the remote device context.
*/
#define HF_EVENT_SERVICE_CONNECT_REQ 0
/** A service level connection has been established. This can happen as the
* result of a call to HF_CreateServiceLink, or if the audio gateway
* establishes the service connection. When this event has been received,
* a data connection is available for issuing commands to the audio
* gateway.
*
* When this callback is received, the "HfCallbackParms.p.remDev" field
* contains a pointer to the remote device context.
*/
#define HF_EVENT_SERVICE_CONNECTED 1
/** The service level connection has been released. This can happen as the
* result of a call to HF_DisconnectServiceLink, or if the audio gateway
* releases the service connection. Communication with the audio gateways
* is no longer possible. In order to communicate with the audio gateway,
* a new service level connection must be established.
*
* This event can also occur when an attempt to create a service level
* connection (HF_CreateServiceLink) fails.
*
* When this callback is received, the "HfCallbackParms.p.remDev"
* field contains a pointer to the remote device context. If the
* "HfCallbackParms.p.remDev" field contains a NULL, then the ACL
* connection attempt failed and a remote device was never established.
* In addition, the "HfCallbackParms.errCode" fields contains the reason
* for disconnect.
*/
#define HF_EVENT_SERVICE_DISCONNECTED 2
/** An audio connection has been established. This event occurs whenever
* the audio channel (SCO) comes up, whether it is initiated by the audio
* gateway or the hands-free unit.
*
* When this callback is received, the "HfCallbackParms.p.remDev" field
* contains a pointer to the remote device context.
*/
#define HF_EVENT_AUDIO_CONNECTED 3
/** An audio connection has been released. This event occurs whenever the
* audio channel (SCO) goes down, whether it is terminated by the audio
* gateway or the hands-free unit.
*
* When this callback is received, the "HfCallbackParms.p.remDev" field
* contains a pointer to the remote device context. In addition, the
* "HfCallbackParms.errCode" fields contains the reason for disconnect.
*/
#define HF_EVENT_AUDIO_DISCONNECTED 4
/** Only valid if BT_SCO_HCI_DATA is set to XA_ENABLED. Audio data has been
* received from the remote device. The data is only valid during the
* callback.
*
* When this callback is received, the "HfCallbackParms.p.audioData" field
* contains the audio data.
*/
#define HF_EVENT_AUDIO_DATA 5
/** Only valid if BT_SCO_HCI_DATA is set to XA_ENABLED. Audio data has been
* sent to the remote device. This event is received by the application
* when the data sent by HF_SendAudioData has been successfully sent.
*
* When this callback is received, the "HfCallbackParms.p.audioPacket"
* field contains the result.
*/
#define HF_EVENT_AUDIO_DATA_SENT 6
/** After the service level connection has been established, this event will
* indicate the features supported on the audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.features" field
* contains the features (see HfFeatures).
*/
#define HF_EVENT_GATEWAY_FEATURES 7
/** After the service level connection has been established, this event will
* indicate the hold features (3-Way calling) supported on the audio
* gateway.
*
* When this callback is received, the "HfCallbackParms.p.holdFeatures"
* field contains the features (see HfGwHoldFeatures).
*/
#define HF_EVENT_GW_HOLD_FEATURES 8
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_ENABLED. After the service level connection has been established,
* this event will indicate the call state of the current connection.
* Whenever the call state changes or the multiparty status changes, this
* event is generated.
*
* When this callback is received, the "HfCallbackParms.p.callStateParms"
* field contains the current call state (see HfCallStateParms).
*/
#define HF_EVENT_CALL_STATE 9
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_ENABLED. The identification of the call has been received from the
* audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.callerId"
* field contains a pointer to the ASCII string representation of the
* number (NULL terminated).
*/
#define HF_EVENT_CALLER_ID 10
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_ENABLED. The Call Manager has determined the CLCC command is
* supported by the device. If this event is received, all call state
* information can be considered reliable.
*/
#define HF_EVENT_CALL_LISTING_ENABLED 11
/** This event is generated only if both HF_USE_CALL_MANAGER and
* HF_USE_RESP_HOLD are defined as XA_ENABLED. The Call Manager has
* determined that a response and hold feature has changed its
* applicability.
*
* When this callback is received, the "HfCallbackParms.p.respHoldAppl"
* field contains the current response-hold relevancies. (See
* HfRespHoldAppl).
*/
#define HF_EVENT_RESPONSE_HOLD_APPL 12
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. After the service level connection has been established,
* this event will indicate whether at least one call is active on the
* gateway device. Whenever all calls are terminated, or when there were
* no calls and a new call is created, this event is generated.
*
* When this callback is received, the "HfCallbackParms.p.call" field
* contains the current call state (see HfCallActiveState).
*/
#define HF_EVENT_CALL_IND 13
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. After the service level connection has been established,
* this event will indicate the current call setup state. Whenever the
* call setup state changes, this event is generated.
*
* When this callback is received, the "HfCallbackParms.p.callSetup" field
* contains the current call setup state (see HfCallSetupState).
*/
#define HF_EVENT_CALLSETUP_IND 14
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. After the service level connection has been established,
* this event will indicate the current call held state. Whenever the held
* state changes, this event is generated.
*
* When this callback is received, the "HfCallbackParms.p.callHeld" field
* contains the current call held state (see HfCallHeldState).
*/
#define HF_EVENT_CALLHELD_IND 15
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. When an incoming call is received on the audio gateway,
* this event is generated to indicate the incoming ring.
*/
#define HF_EVENT_RING_IND 16
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. When call waiting is supported on the audio gateway and an
* incoming call is received while another call is active, this event is
* received.
*
* When this callback is received, the "HfCallbackParms.p.callWaitParms"
* field contains information about the waiting call (see
* HfCallWaitParms).
*/
#define HF_EVENT_WAIT_NOTIFY 17
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. If caller ID notification is active, this event is
* received when an incoming call is detected on the audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.callerIdParms"
* field contains the current caller ID information (see HfCallerIdParms).
*/
#define HF_EVENT_CALLER_ID_NOTIFY 18
/** This event is generated only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. This event is received once for each call which exists on
* the audio gateway. This event is received after calling
* HF_ListCurrentCalls().
*
* When this callback is received, the "HfCallbackParms.p.callListParms"
* field contains the current caller ID information (see HfCallListParms).
*/
#define HF_EVENT_CURRENT_CALL_STATE 19
/** This event is only available when HF_USE_RESP_HOLD is set to XA_ENABLED
* and HF_USE_CALL_MANAGER is set to XA_DISABLED. The Response and Hold
* state has been received from the audio gateway. This event is generated
* in response to a call to HF_QueryResponseHold() or HF_ResponseHold().
*
* When this callback is received, the "HfCallbackParms.p.respHold" field
* contains the result.
*/
#define HF_EVENT_RESPONSE_HOLD 20
/** The service indicator has been received from the audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.service"
* field contains a pointer to the service state.
*/
#define HF_EVENT_SERVICE_IND 21
/** The battery indicator has been received from the audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.battery"
* field contains a pointer to the battery level.
*/
#define HF_EVENT_BATTERY_IND 22
/** The signal strength indicator has been received from the audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.signal"
* field contains a pointer to the signal strength.
*/
#define HF_EVENT_SIGNAL_IND 23
/** The roam indicator has been received from the audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.roam"
* field contains a pointer to the roam state.
*/
#define HF_EVENT_ROAM_IND 24
/** The voice recognition state has changed. This event occurs if the
* audio gateway changes the state of voice recognition.
*
* When this callback is received, the "HfCallbackParms.p.voiceRecognition"
* field contains state of voice recognition.
*/
#define HF_EVENT_VOICE_REC_STATE 26
/** A number was returned in response to the HF_GetLastVoiceTag function.
*
* When this callback is received, the "HfCallbackParms.p.voiceTag" field
* contains a pointer to the ASCII string representation of the number
* (NULL terminated).
*/
#define HF_EVENT_VOICE_TAG_NUMBER 27
/** The speaker volume has been received from the audio gateway.
*/
#define HF_EVENT_SPEAKER_VOLUME 28
/** The microphone volume has been received from the audio gateway.
*/
#define HF_EVENT_MIC_VOLUME 29
/** The in-band ring tone setting has been received from the audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.inBandRing"
* field contains a pointer to the In-Band ring state.
*/
#define HF_EVENT_IN_BAND_RING 30
/** The network operator string has been received from the remote device.
*
* When this callback is received, the "HfCallbackParms.p.networkOper"
* field contains a pointer to the operator string state.
*/
#define HF_EVENT_NETWORK_OPERATOR 31
/** The subscriber number has been received from the audio gateway.
*
* When this callback is received, the "HfCallbackParms.p.subscriberNum"
* field contains a pointer to the subscriber number.
*/
#define HF_EVENT_SUBSCRIBER_NUMBER 32
/** The NO CARRIER event has been received from the audio gateway. If
* HF_USE_CALL_MANAGER is defined as XA_ENABLED, then the call manager will
* have already modified the call states accordingly, so this event is for
* informational purposes only and the application need take no further
* action. If HF_USE_CALL_MANAGER is defined as XA_DISABLED, then the
* application will need to make the appropriate call state changes
* itself.
*/
#define HF_EVENT_NO_CARRIER 33
/** The BUSY event has been received from the audio gateway. If
* HF_USE_CALL_MANAGER is defined as XA_ENABLED, then the call manager will
* have already modified the call states accordingly, so this event is for
* informational purposes only and the application need take no further
* action. If HF_USE_CALL_MANAGER is defined as XA_DISABLED, then the
* application will need to make the appropriate call state changes
* itself.
*/
#define HF_EVENT_BUSY 34
/** The NO ANSWER event has been received from the audio gateway. If
* HF_USE_CALL_MANAGER is defined as XA_ENABLED, then the call manager will
* have already modified the call states accordingly, so this event is for
* informational purposes only and the application need take no further
* action. If HF_USE_CALL_MANAGER is defined as XA_DISABLED, then the
* application will need to make the appropriate call state changes
* itself.
*/
#define HF_EVENT_NO_ANSWER 35
/** The DELAYED event has been received from the audio gateway.
*/
#define HF_EVENT_DELAYED 36
/** The BLACKLISTED event has been received from the audio gateway.
*/
#define HF_EVENT_BLACKLISTED 37
/** The supported phonebook storage types have been received from the audio
* gateway. This event occurs in response to a call to
* HF_QueryPhonebooks.
*
* When this callback is received, the "HfCallbackParms.p.phonebooks"
* field contains a bitmask of phonebook type supported on the gateway
* (see HfPhonebooks).
*/
#define HF_EVENT_PHONEBOOK_STORAGE 38
/** The phonebook storage information has been received from the audio
* gateway. This event occurs in response to a call to
* HF_GetCurrentPhonebooksInfo.
*
* When this callback is received, the "HfCallbackParms.p.phonebookInfo"
* field contains a pointer to a structure containing the phonebook
* information.
*/
#define HF_EVENT_PHONEBOOK_INFO 39
/** The number of phonebook entries has been received from the audio
* gateway. This event occurs in response to a call to
* HF_GetPhonebookSize.
*
* When this callback is received, the "HfCallbackParms.p.phonebookSize"
* field contains a pointer to a structure containing the phonebook
* information.
*/
#define HF_EVENT_PHONEBOOK_SIZE 40
/** A phonebook entry has been received from the audio gateway. This event
* occurs in response to a call to HF_ReadPhonebookEntries or
* HF_FindPhonebookEntries.
*
* When this callback is received, the "HfCallbackParms.p.phonebookEntry"
* field contains a pointer to a structure containing the phonebook
* information.
*/
#define HF_EVENT_PHONEBOOK_ENTRY 41
/** A result code has been received from the audio gateway. This event is
* received for unsolicited result codes not handled by the internal
* Hands-free AT parser.
*
* When this callback is received, the "HfCallbackParms.p.data" field
* contains the AT result code.
*/
#define HF_EVENT_AT_RESULT_DATA 42
/** A command to the audio gateway has completed. This event is received
* when the processing a command is complete.
*
* When this callback is received, the "HfCallbackParms.p.command" field
* contains the command that was sent. If "HfCallbackParms.status is set
* to BT_STATUS_FAILED, then "HfCallbackParms.p.command->cmeError" contains
* the command error (if known).
*/
#define HF_EVENT_COMMAND_COMPLETE 43
/** The codec negotiation has been received from the audio gateway.
*/
#define HF_EVENT_CODEC_NEGOTIATION 44
/* End of HfEvent */
/*--------------------------------------------------------------------------
* HfCommandType type
*
* HfCommandType corresponds to a logical command. This value is
* returned in the "HfCallbackParms.p.command" structure with the
* HF_EVENT_COMMAND_COMPLETE event. It indicates the API call
* associated with this command structure. Any API call that takes an
* HfCommand parameter receives the HF_EVENT_COMMAND_COMPLETE event when
* the command has completed. The "HfCallbackParms.p.command->type"
* field identifies the API call that was made.
*/
typedef uint8_t HfCommandType;
/* HF_AnswerCall */
#define HF_COMMAND_ANSWER_CALL 0
/* HF_DialNumber */
#define HF_COMMAND_DIAL_NUMBER 1
/* HF_MemoryDial */
#define HF_COMMAND_DIAL_MEMORY 2
/* HF_Redial */
#define HF_COMMAND_REDIAL 3
/* HF_CallHold */
#define HF_COMMAND_CALL_HOLD 4
/* HF_QueryResponseHold */
#define HF_COMMAND_QUERY_RESPONSE_HOLD 5
/* HF_ResponseHold */
#define HF_COMMAND_RESPONSE_HOLD 6
/* HF_Hangup */
#define HF_COMMAND_HANGUP_CALL 7
/* HF_ListCurrentCalls */
#define HF_COMMAND_LIST_CURRENT_CALLS 8
/* HF_EnableCallerIdNotify */
#define HF_COMMAND_ENABLE_CID_NOTIFY 9
/* HF_EnableCallWaitNotify */
#define HF_COMMAND_ENABLE_WAIT_NOTIFY 10
/* HF_GenerateDtmf() */
#define HF_COMMAND_GENERATE_DTMF 11
/* HF_GetLastVoiceTag */
#define HF_COMMAND_GET_LAST_VOICE_TAG 12
/* HF_EnableVoiceRecognition */
#define HF_COMMAND_VOICE_RECOGNITION 13
/* HF_DisableNREC */
#define HF_COMMAND_DISABLE_NREC 14
/* HF_ReportMicVolume */
#define HF_COMMAND_REPORT_MIC_VOLUME 15
/* HF_ReportSpeakerVolume */
#define HF_COMMAND_REPORT_SPEAKER_VOLUME 16
/* HF_QueryNetworkOperator */
#define HF_COMMAND_QUERY_NETWORK_OPER 17
/* HF_QuerySubscriberNumber */
#define HF_COMMAND_QUERY_SUBSCRIBER_NUM 18
/* HF_EnableExtendedErrors */
#define HF_COMMAND_ENABLE_EXTENDED_ERR 19
/* HF_SendAtCommand */
#define HF_COMMAND_SEND_AT_COMMAND 20
/* HF_QueryPhonebooks */
#define HF_COMMAND_QUERY_PB 21
/* HF_SelectPhonebook */
#define HF_COMMAND_SELECT_PB 22
/* HF_GetCurrentPhonebookInfo */
#define HF_COMMAND_GET_CURRENT_PB_INFO 23
/* HF_GetPhonebookSize */
#define HF_COMMAND_GET_PB_SIZE 24
/* HF_ReadPhonebookEntries */
#define HF_COMMAND_READ_PB_ENTRIES 25
/* HF_FindPhonebookEntries */
#define HF_COMMAND_FIND_PB_ENTRIES 26
/* HF_WritePhonebookEntry */
#define HF_COMMAND_WRITE_PB_ENTRY 27
#define HF_COMMAND_IIA 28
/* HF_CodecConnectionSetup */
#define HF_COMMAND_BCS 29
/* End of HfCommandType */
/*--------------------------------------------------------------------------
* HfCmeError type
*
* HfCmeError corresponds to an AT error indication.
*/
typedef uint8_t HfCmeError;
#define AT_CME_NO_CONNECTION ATCME_NO_CONNECTION
#define AT_CME_OP_NOT_ALLOWED ATCME_OP_NOT_ALLOWED
#define AT_CME_OP_NOT_SUPPORTED ATCME_OP_NOT_SUPPORTED
#define AT_CME_PH_SIM_PIN_REQUIRED ATCME_PH_SIM_PIN_REQUIRED
#define AT_CME_SIM_NOT_INSERTED ATCME_SIM_NOT_INSERTED
#define AT_CME_SIM_PIN_REQUIRED ATCME_SIM_PIN_REQUIRED
#define AT_CME_SIM_PUK_REQUIRED ATCME_SIM_PUK_REQUIRED
#define AT_CME_SIM_FAILURE ATCME_SIM_FAILURE
#define AT_CME_SIM_BUSY ATCME_SIM_BUSY
#define AT_CME_INCORRECT_PASSWORD ATCME_INCORRECT_PASSWORD
#define AT_CME_SIM_PIN2_REQUIRED ATCME_SIM_PIN2_REQUIRED
#define AT_CME_SIM_PUK2_REQUIRED ATCME_SIM_PUK2_REQUIRED
#define AT_CME_MEMORY_FULL ATCME_MEMORY_FULL
#define AT_CME_INVALID_INDEX ATCME_INVALID_INDEX
#define AT_CME_MEMORY_FAILURE ATCME_MEMORY_FAILURE
#define AT_CME_TEXT_STRING_TOO_LONG ATCME_TEXT_STRING_TOO_LONG
#define AT_CME_INVALID_CHARS_IN_TEXT_STRING ATCME_INVALID_CHARS_IN_TEXT_STRING
#define AT_CME_DIAL_STRING_TOO_LONG ATCME_DIAL_STRING_TOO_LONG
#define AT_CME_INVALID_CHARS_IN_DIAL_STRING ATCME_INVALID_CHARS_IN_DIAL_STRING
#define AT_CME_NO_NETWORK_SERVICE ATCME_NO_NETWORK_SERVICE
#define AT_CME_NETWORK_NOT_ALLOWED ATCME_NETWORK_NOT_ALLOWED
#define AT_CME_UNKNOWN ATCME_UNKNOWN
/* End of HfCmeError */
/*--------------------------------------------------------------------------
* HfGatewayVersion type
*
* HfGatewayVersion corresponds to the Audio Gateway Profile version
* discovered during the SDP query. The service connection features
* will be limited to the capabilities of this profile version.
*/
typedef uint16_t HfGatewayVersion;
/* Unable to determine the Hands Free Profile version that is supported */
#define HF_GW_VERSION_UNKNOWN 0x0000
/* Supports Version 0.96 of the Hands Free Profile */
#define HF_GW_VERSION_0_96 0x0100
/* Supports Version 1.0 of the Hands Free Profile */
#define HF_GW_VERSION_1_0 0x0101
/* Supports Version 1.5 of the Hands Free Profile */
#define HF_GW_VERSION_1_5 0x0105
/* Supports Version 1.5 of the Hands Free Profile */
#define HF_GW_VERSION_1_6 0x0106
/* Supports Version 1.5 of the Hands Free Profile */
#define HF_GW_VERSION_1_8 0x0108
/* End of HfGatewayVersion */
/*---------------------------------------------------------------------------
* HfGatewayFeatures type
*
* HfGatewayFeatures is a bit mask specifying the gateway feature set. The
* service connection capabilities will be limited to the features
* advertised by the profile.
*/
typedef uint32_t HfGatewayFeatures;
/** 3-way calling
*/
#define HF_GW_FEATURE_3_WAY 0x00000001
/** Echo canceling and/or noise reduction function
*/
#define HF_GW_FEATURE_ECHO_NOISE 0x00000002
/** Voice recognition function
*/
#define HF_GW_FEATURE_VOICE_RECOGNITION 0x00000004
/** In-band ring tone
*/
#define HF_GW_FEATURE_IN_BAND_RING 0x00000008
/** Voice tag
*/
#define HF_GW_FEATURE_VOICE_TAG 0x00000010
/** Reject a call
*/
#define HF_GW_FEATURE_CALL_REJECT 0x00000020
/** Enhanced Call Status
*/
#define HF_GW_FEATURE_ENH_CALL_STATUS 0x00000040
/** Enhanced Call Control
*/
#define HF_GW_FEATURE_ENH_CALL_CTRL 0x00000080
/* End of HfGatewayFeatures */
/*---------------------------------------------------------------------------
* HfGwHoldFeatures type
*
* This type is used as a bit mask specifying the gateway's 3-Way calling
* (hold) feature set. The service connection capabilities will be limited
* to the features advertised by the profile.
*/
typedef uint8_t HfGwHoldFeatures;
/** Releases all held calls or sets User Determined User Busy
* (UDUB) for a waiting call.
*/
#define HF_GW_HOLD_RELEASE_HELD_CALLS 0x01
/** Releases all active calls (if any exist) and accepts the other
* (held or waiting) call.
*/
#define HF_GW_HOLD_RELEASE_ACTIVE_CALLS 0x02
/** Releases a specific call. */
#define HF_GW_HOLD_RELEASE_SPECIFIC_CALL 0x04
/** Places all active calls (if any exist) on hold and accepts the
* other (held or waiting) call.
*/
#define HF_GW_HOLD_HOLD_ACTIVE_CALLS 0x08
/** Places a specific call on hold. */
#define HF_GW_HOLD_HOLD_SPECIFIC_CALL 0x10
/** Adds a held call to the conversation.
*/
#define HF_GW_HOLD_ADD_HELD_CALL 0x20
/** Connects the two calls and disconnects the AG from
* both calls (Explicit Call Transfer).
*/
#define HF_GW_HOLD_CALL_TRANSFER 0x40
/* End of HfGwHoldFeatures */
/*---------------------------------------------------------------------------
* HfSignalStrength type
*
* HfSignalStrength contains the last signal strength reading from the
* Audio Gateway.
*/
typedef uint8_t HfSignalStrength;
/* End of HfSignalStrength */
/* Forward references */
typedef struct _HfCallbackParms HfCallbackParms;
typedef struct _HfChannel HfChannel;
typedef struct _HfCommand HfCommand;
/*---------------------------------------------------------------------------
* HfCallback type
*
* A function of this type is called to indicate events to the application.
*/
typedef void (*HfCallback)(HfChannel *Chan, HfCallbackParms *Info);
/* End of HfCallback */
/*---------------------------------------------------------------------------
* HfCmdOverride type
*
* A function of this type is called when a function override is
* registered.
*/
typedef BtStatus (*HfCmdOverride)(HfChannel *Chan, HfCommand *Command);
/* End of HfCmdOverride */
/*---------------------------------------------------------------------------
* HfCallStatus type
*
* HfCallStatus defines the current state of a call. Not all states are
* supported by all Audio Gateways. At the very minimum,
* HF_CALL_STATUS_NONE, HF_CALL_STATUS_DIALING, HF_CALL_STATUS_INCOMING, and
* HF_CALL_STATUS_ACTIVE will be supported.
*/
typedef uint8_t HfCallStatus;
/** An active call exists.
*/
#define HF_CALL_STATUS_ACTIVE 0
/** The call is held.
*/
#define HF_CALL_STATUS_HELD 1
/** A call is outgoing. This state occurs when attempting a call using any
* of the dialing functions.
*/
#define HF_CALL_STATUS_DIALING 2
/** The remote party is being alerted.
*/
#define HF_CALL_STATUS_ALERTING 3
/** A call is incoming. It can be answered by invoking HFG_AnswerCall() or
* rejected by invoking HFG_Hangup(). This state occurs when a call is
* being set up by a remote party, and there is currently no
* established call.
*/
#define HF_CALL_STATUS_INCOMING 4
/** A call is waiting. It can be answered by invoking HFG_AnswerCall() or
* rejected by invoking HFG_Hangup(). This state occurs when a call is
* being set up by a remote party, and there is currently an
* established call.
*/
#define HF_CALL_STATUS_WAITING 5
/** A call is in the response and hold state. It can be accepted or
* rejected by invoking HF_ResponseHold(). This can be thought of as a
* special muted "active call" state. This state is not used by most
* networks, but it can occur in Japanese networks. See the Hands Free
* Specification Errata 2716, which adds this new call state to the CLCC
* messages.
*/
#define HF_CALL_STATUS_RESPHOLD 6
/** No active call
*/
#define HF_CALL_STATUS_NONE 0xFF
/** Unknown call state
*/
#define HF_CALL_STATUS_UNKNOWN 0xFE
/* End of HfCallStatus */
/*---------------------------------------------------------------------------
* HfCallMode type
*
* HfCallMode defines the current mode of a call. It is only meaningful if
* HF_USE_CALL_MANAGER is defined as XA_DISABLED.
*/
typedef uint8_t HfCallMode;
/** Voice Call
*/
#define HF_CALL_MODE_VOICE 0
/** Data Call
*/
#define HF_CALL_MODE_DATA 1
/** FAX Call
*/
#define HF_CALL_MODE_FAX 2
/* End of HfCallMode */
/*---------------------------------------------------------------------------
* HfCallActiveState type
*
* HfCallActiveState enumerates the possible current call states that can be
* indicated by the Audio Gateway.
*/
typedef uint8_t HfCallActiveState;
/** No call exists on the Audio Gateway
*/
#define HF_CALL_NONE 0
/** A call is active on the Audio Gateway
*/
#define HF_CALL_ACTIVE 1
/* End of HfCallActiveState */
/*---------------------------------------------------------------------------
* HfCallHeldState type
*
* HfCallHeldState enumerates the possible current held state that can be
* indicated by the audio gateway.
*/
typedef uint8_t HfCallHeldState;
/** No calls are held on the audio gateway
*/
#define HF_CALL_HELD_NONE 0
/** A call is held and another call is active on the audio gateway. This
* indication can be sent for several reasons, including when an active and
* held call are swapped.
*/
#define HF_CALL_HELD_ACTIVE 1
/** A call is held and no active call exists on the audio gateway
*/
#define HF_CALL_HELD_NO_ACTIVE 2
/* End of HfCallHeldState */
/*---------------------------------------------------------------------------
* HfCallSetupState type
*
* HfCallSetupState enumerates the possible current call setup state that
* can be indicated by the Audio Gateway.
*/
typedef uint8_t HfCallSetupState;
/** No outgoing or incoming call is present on the Audio Gateway
*/
#define HF_CALL_SETUP_NONE 0
/** An incoming call is present on the Audio Gateway
*/
#define HF_CALL_SETUP_IN 1
/** An outgoing call is present on the Audio Gateway
*/
#define HF_CALL_SETUP_OUT 2
/** An outgoing call is being alerted on the Audio Gateway
*/
#define HF_CALL_SETUP_ALERT 3
/* End of HfCallSetupState */
/*---------------------------------------------------------------------------
* HfHoldAction type
*
* HfHoldAction enumerates the possible actions that can be taken when
* calling the HF_CallHold() function.
*/
typedef uint8_t HfHoldAction;
/** Indicates that the code should release all held calls, or set the User
* Determined User Busy (UDUB) indication for a waiting call.
*/
#define HF_HOLD_RELEASE_HELD_CALLS 0
/** Indicates that the code should release all active calls (if any exist)
* and accepts the other (held or waiting) call.
*
* If a call index is specified, the code should release the specific call.
*/
#define HF_HOLD_RELEASE_ACTIVE_CALLS 1
/** Indicates that the code should place all active calls (if any exist) on
* hold and accepts the other (held or waiting) call.
*
* If a call index is specified, the code should put all calls on hold
* except the specified call.
*/
#define HF_HOLD_HOLD_ACTIVE_CALLS 2
/** Indicates that the code should add a held call to the conversation.
*/
#define HF_HOLD_ADD_HELD_CALL 3
/** Indicates that the code should connects the two calls and disconnect the
* Audio Gateway from both calls. In other words, the code should perform
* an Explicit Call Transfer.
*/
#define HF_HOLD_CALL_TRANSFER 4
/* End of HfHoldAction */
/*---------------------------------------------------------------------------
* HfRespHoldAction type
*
* HfRespHoldAction enumerates the possible actions that can be taken when
* calling the HF_ResponseHold() function.
*/
typedef uint8_t HfRespHoldAction;
/** This action is used to request that an incoming call be put on hold.
*/
#define HF_RH_HOLD 0
/** This action is used to request that a call that was previously put on
* hold by a response and hold command now be activated.
*/
#define HF_RH_ACCEPT 1
/** This action is used to request that a call that was previously put on
* hold by a response and hold command now be dropped.
*/
#define HF_RH_REJECT 2
/* End of HfRespHoldAction */
/*---------------------------------------------------------------------------
* HfPhonebooks type
*
* This type is only available when HF_USE_PHONEBOOK_COMMANDS is set to
* XA_ENABLED. It enumerates the possible types of phone books supported in
* an Audio Gateway.
*/
typedef uint16_t HfPhonebooks;
/** GW dialed calls list */
#define HF_PB_DIALED_CALLS AT_PBS_DIALED_CALLS
/** SIM fixed-dialing-phonebook list */
#define HF_PB_FIXED_DIAL AT_PBS_FIXED_DIAL
/** SIM last-dialing-phonebook list */
#define HF_PB_LAST_DIAL AT_PBS_LAST_DIAL
/** GW missed calls list */
#define HF_PB_MISSED_CALLS AT_PBS_MISSED_CALLS
/** GW phonebook list */
#define HF_PB_PHONE AT_PBS_ME_PHONEBOOK
/** Combined GW and SIM phonebook list */
#define HF_PB_COMBINED AT_PBS_ME_SIM_COMBINED
/** GW received calls list */
#define HF_PB_RECEIVED_CALLS AT_PBS_RECEIVED_CALLS
/** SIM phonebook list */
#define HF_PB_SIM AT_PBS_SIM_PHONEBOOK
/* End of HfPhonebooks */
/*---------------------------------------------------------------------------
* Poll Interval type
*
* Indicates the interval between CLCC polls.
*/
typedef uint8_t PollInterval;
/** The polling interval has not been defined.
*/
#define PL_UNKNOWN 0x00
/** Used to indicate that low rate polling is sufficient because there are
* no calls on either line.
*/
#define PL_SLOW 0x0F
/** Used to indicate that high rate polling is wanted because there is a
* call on at least one of the lines.
*/
#define PL_FAST 0xF0
/* End of PollInterval */
#if 0
#if BT_SCO_HCI_DATA == XA_ENABLED
/*---------------------------------------------------------------------------
* HfAudioData type
*
* This type is only available when BT_SCO_HCI_DATA is set to XA_ENABLED.
* It can be used to store audio data received from the remote device.
*/
typedef CmgrAudioData HfAudioData;
/* End of HfAudioData */
#endif /* BT_SCO_HCI_DATA == XA_ENABLED */
#endif
/*---------------------------------------------------------------------------
* HfCallListState type
*
* HfCallListState is used to indicate whether received call list messages
* have been formatted correctly or have been mangled.
*/
typedef uint8_t HfCallListState;
/** No mangled call list messages have been received.
*/
#define HF_CALL_LIST_OK 0x00
/** At least one mangled call list message has been received.
*/
#define HF_CALL_LIST_MANGLED 0x01
/* End of HfCallListState */
#if HF_USE_IIA == XA_ENABLED
/*---------------------------------------------------------------------------
* HfIIReportingState type
*
* This type indicates the reporting state for an individual indicator.
*/
typedef U8 HfIIReportingState;
/** Actively reporting the individual indicator. */
#define HF_IIA_ACTIVE 0
/** Reporting for the individual indicator has been deactivated. */
#define HF_IIA_INACTIVE 1
/** Used for indices that are not applicable because they exceed
* the number of indicators reported by the CIND message.
*/
#define HF_IIA_NA 2
/* End of HfIIReportingState */
/*---------------------------------------------------------------------------
* HfIIRepStatCmd type
*
* This type indicates whether the state of an individual indicator should be
* actively reported, left unreported, or whether the current reporting state
* should not be modified.
*/
typedef U8 HfIIRepStatCmd;
/** This define is used to request that reporting for the individual
* indicator be activated.
*/
#define HF_IIA_CMD_ACTIVATE 0
/** This define is used to request that reporting for the individual
* indicator be deactivated.
*/
#define HF_IIA_CMD_DEACTIVE 1
/** This define is used to request that reporting for the individual
* indicator be left unchanged. It is also used for individual activators
* not defined in the CIND message.
*/
#define HF_IIA_CMD_DONT_CHANGE 2
/* End of HfIIRepStatCmd */
#endif /* HF_USE_IIA == XA_ENABLED */
/****************************************************************************
*
* Data Structures
*
****************************************************************************/
#if HF_USE_IIA == XA_ENABLED
/*---------------------------------------------------------------------------
* HfIIARepElem structure
*
* Structures of type HfIIARepElem can be used to store the reporting state
* for an individual indicator.
*/
typedef struct _HfIIARepElem {
char *desc;
HfIIReportingState state;
} HfIIARepElem;
/*---------------------------------------------------------------------------
* HfIIAReporting structure
*
* Structures of type HfIIAReporting can be used to store the reporting
* state for the various individual indicators.
*/
typedef struct _HfIIAReporting {
HfIIARepElem ii[AT_MAX_INDICATORS];
/* The number of indicators that were defined in the CIND message. */
U8 numInd;
} HfIIAReporting;
/*---------------------------------------------------------------------------
* HfIIACmd structure
*
* Structures of type HfIIACmd can be used to store commands for changing
* the reporting state of the various individual indicators.
*/
typedef struct _HfIIACmd {
HfIIRepStatCmd state[AT_MAX_INDICATORS];
} HfIIACmd;
#endif /* HF_USE_IIA == XA_ENABLED */
/*---------------------------------------------------------------------------
* HfCommand structure
*
* Structures of type HfCommand can be used to store the command type and
* parameters for sending Hands-Free SDK commands.
*/
struct _HfCommand {
/* Used Internally by the Hands-free SDK */
ListEntry node;
/* The type of command */
uint8_t type;
/* The command parameters */
uint32_t parms[6];
/* The command status */
BtStatus status;
/* CME Error when command fails */
HfCmeError cmeError;
/* Application context */
void *context;
/* === Internal use only === */
uint8_t state;
#if HF_USE_CALL_MANAGER == XA_ENABLED
U16 callMgrFlags;
#endif /* HF_USE_CALL_MANAGER == XA_ENABLED */
};
/*---------------------------------------------------------------------------
* HfAtData structure
*
* Structures of type HfAtData can be used to store raw AT data.
*/
typedef struct _HfAtData {
uint8_t *data;
uint16_t dataLen;
} HfAtData;
/*---------------------------------------------------------------------------
* HfCallWaitParms structure
*
* This type is defined only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. It is used to identify the waiting call.
*/
typedef struct _HfCallWaitParms {
/* Phone number of the waiting call */
const char *number;
/* Voice parameters */
uint8_t classmap;
/* Type of address */
uint8_t type;
} HfCallWaitParms;
/*---------------------------------------------------------------------------
* HfCallerIdParms structure
*
* This type is defined only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. It is used to identify the calling number.
*/
typedef struct _HfCallerIdParms {
/* Phone number of the caller */
const char *number;
/* Type of address */
uint8_t type;
} HfCallerIdParms;
/*---------------------------------------------------------------------------
* HfCallListParms structure
*
* This type is defined only if HF_USE_CALL_MANAGER is defined as
* XA_DISABLED. It is used to identify the listed calls on the Audio
* Gateway.
*/
typedef struct _HfCallListParms {
/* Index of the call on the audio gateway (1 based). */
uint8_t index;
/* 0 - Mobile Originated, 1 = Mobile Terminated */
uint8_t dir;
/* Call state (see HfCallState). */
HfCallStatus state;
/* Call mode (see HfCallMode). */
HfCallMode mode;
/* 0 - Not Multiparty, 1 - Multiparty */
uint8_t multiParty;
/* Phone number of the call */
const char *number;
/* Type of address */
uint8_t type;
} HfCallListParms;
/*---------------------------------------------------------------------------
* HfSubscriberNum structure
*
* Structures of type HfSubscriberNum can be used to identify the
* subscriber number.
*/
typedef struct _HfSubscriberNum {
/* String phone number of format specified by "type". */
const char *number;
/* Phone number format */
uint8_t type;
/* Service related to the phone number. */
uint8_t service;
} HfSubscriberNum;
/*---------------------------------------------------------------------------
* AtRaw structure
*
* Defines the structure containing raw AT data.
*/
typedef struct _AtRaw {
uint8_t *str;
uint8_t len;
} AtRaw;
#if AT_HEADSET == XA_ENABLED
/*---------------------------------------------------------------------------
* AtHeadsetCmd
*
* This structure is used to specify the parameters associated with
* Headset commands. Headset commands are sent from the Headset device
* to the Audio Gateway. As such, this structure is used by the Headset
* device encoder, and the Audio Gateway decoder functions.
*/
typedef union _AtHeadsetCmd {
/* AT_MICROPHONE_GAIN */
struct {
uint8_t gain;
} mic;
/* AT_SPEAKER_GAIN */
struct {
uint8_t gain;
} speaker;
/* AT_KEYPAD_CONTROL */
struct {
uint8_t button;
} keypad;
} AtHeadsetCmd;
#else /* AT_HEADSET == XA_ENABLED */
/* Stub structures to keep #defines out
* of AtResults/AtCommands structures.
*/
typedef uint8_t AtHeadsetCmd;
#endif /* AT_HEADSET == XA_ENABLED */
#if AT_HANDSFREE == XA_ENABLED
/*---------------------------------------------------------------------------
* AtHandsfreeCmd
*
* This structure is used to specify the parameters associated with
* Hands-Free commands. Hands-Free commands are sent from the
* Hands-Free unit to the Audio Gateway. As such, this structure is
* used by the Hands-Free unit encoder, and the Audio Gateway decoder
* functions.
*/
typedef union _AtHandsfreeCmd {
/* AT_DIAL_NUMBER, AT_DIAL_MEMORY */
struct {
const char *number;
} dial;
/* AT_CALL_WAIT_NOTIFY */
struct {
/* Enable/Disable the presentation of the AT_CALL_WAIT_NOTIFY
* unsolicited result code.
*/
uint8_t notify;
} wait;
/* AT_CALL_HOLD */
struct {
/* Call hold procedure to perform. */
uint8_t action;
/* If "action" is AT_HOLD_RELEASE_ACTIVE_CALLS or
* AT_HOLD_HOLD_ACTIVE_CALLS, this value can be used to specify
* the index (1 - 9) of a specific call to address.
*/
uint8_t call;
} hold;
/* AT_CALL_ID */
struct {
int32_t enabled;
} callId;
/* AT_EVENT_REPORTING */
struct {
uint8_t mode;
uint8_t ind;
} report;
/* AT_GENERATE_DTMF_TONE */
struct {
uint8_t tone;
} dtmf;
/* AT_VOICE_RECOGNITION */
struct {
int enabled;
} vrec;
struct {
uint32_t bitmap;
} features;
/* AT_RESPONSE_AND_HOLD */
struct {
uint8_t setting;
} btrh;
/* AT_NETWORK_OPERATOR */
struct {
/* 0 = automatic, 1 = manual, 2 = deregister, 3 = set format only,
* 4 = manual/automatic.
*/
uint8_t mode;
/* Format of "oper" parameter (0-3) */
uint8_t format;
} networkOper;
/* AT_IIA */
struct {
/* A string of up to 20 zeroes and ones separated by commas. One
* means activate, and zero means deactivate. The zeroes and ones
* can be left out for individual indicators whose reporting state
* should not change.
*/
const char *activationStr;
} iia;
/* AT_BCS */
struct {
/* A string of supported codec.
*/
const char *supportedCodec;
} bcs;
/* AT_BAC */
struct {
/* A string of supported codec.
*/
const char *supportedCodec;
} bac;
} AtHandsfreeCmd;
#else /* AT_HANDSFREE == XA_ENABLED */
/* Stub structures to keep #defines out
* of AtResults/AtCommands structures.
*/
typedef uint8_t AtHandsfreeCmd;
#endif /* AT_HANDSFREE == XA_ENABLED */
#if AT_PHONEBOOK == XA_ENABLED
/*---------------------------------------------------------------------------
* AtPhonebookCmd
*
*/
typedef union _AtPhonebookCmd {
/* AT_SELECT_PHONEBOOK_STORAGE */
struct {
/* Phonebook storage type to select. */
uint16_t select;
} storage;
/* AT_READ_PHONEBOOK_ENTRY */
struct {
/* First entry to return. */
uint16_t first;
/* Last entry to return. To return only one entry,
* set last = first.
*/
uint16_t last;
} read;
/* AT_FIND_PHONEBOOK_ENTRY */
struct {
/* Start text to search for. */
const char *text;
} find;
/* AT_WRITE_PHONEBOOK_ENTRY */
struct {
/* Index of this entry. */
uint16_t index;
/* Phone number format. */
uint8_t type;
/* Phone number. */
const char *number;
/* Text associated with phone number. The character set used with
* this parameter is specified by AT_SELECT_CHARACTER_SET command.
*/
const char *text;
} write;
} AtPhonebookCmd;
#else /* AT_PHONEBOOK == XA_ENABLED */
/* Stub structures to keep #defines out
* of AtResults/AtCommands structures.
*/
typedef uint8_t AtPhonebookCmd;
#endif /* AT_PHONEBOOK == XA_ENABLED */
#if AT_SMS == XA_ENABLED
/*---------------------------------------------------------------------------
*
*
*/
typedef union _AtSmsCmd {
struct {
/* Service type: 0=GSM 7.05 Phase 2, 1=GSM 7.05 Phase 2+ */
uint8_t type;
} service;
struct {
/* Memory from which messages are read and deleted. */
uint8_t read;
/* Memory to which writing and sending operations are made. */
uint8_t write;
/* Memory to which received SMs are preferred to be stored. */
uint8_t recv;
} preferred;
struct {
/* Message format 0=PDU mode, 1=text mode. */
uint8_t mode;
} format;
} AtSmsCmd;
#else /* AT_SMS != XA_ENABLED */
/* Stub structures to keep #defines out
* of AtResults/AtCommands structures.
*/
typedef uint8_t AtSmsCmd;
#endif /* AT_SMS != XA_ENABLED */
#if AT_DUN == XA_ENABLED
/*---------------------------------------------------------------------------
*
*
*/
typedef union _AtDunCmd {
uint8_t junk;
} AtDunCmd;
#else /* AT_DUN == XA_ENABLED */
/* Stub structures to keep #defines out of AtResults/AtCommands structures. */
typedef uint8_t AtDunCmd;
#endif /* AT_DUN == XA_ENABLED */
/*---------------------------------------------------------------------------
* AtCommands structure
*
* This structure is used to specify the parameters associated with
* all supported AT commands. Commands are sent by the Terminal Entity
* (e.g. Hands-Free unit) and received on the Mobile Entity (e.g.
* Gateway).
*/
typedef struct _AtCommands {
/* This field is intended for use by the structure owner. */
ListEntry node;
/* AT_??? type from any specified command group. The type may include
* the AT_READ or AT_TEST flags. No parameters are specified when
* reading or testing a command.
*/
uint16_t type;
union {
/* Headset AT command group parameters. */
AtHeadsetCmd hs;
/* Hands-Free AT command group parameters. */
AtHandsfreeCmd hf;
/* Phonebook AT command group parameters. */
AtPhonebookCmd pb;
/* Short Message Service AT command group parameters. */
AtSmsCmd sms;
/* Dial Up Networking AT command group parameters. */
AtDunCmd dun;
/* AT_SET_ERROR_MODE */
struct {
/* Error mode: 0=disable, 1=enable, 2=verbose */
uint8_t mode;
} error;
#if (AT_HANDSFREE == XA_ENABLED) || (AT_PHONEBOOK == XA_ENABLED)
/* AT_SELECT_CHARACTER_SET */
struct {
/* Character set type (e.g. "GSM", "HEX", "UCS2"). */
const char *type;
} charSet;
#endif /* (AT_HANDSFREE == XA_ENABLED) || (AT_PHONEBOOK == XA_ENABLED) */
AtRaw raw;
} p;
} AtCommands;
/*---------------------------------------------------------------------------
* HfChannel structure
*
* Structures of type HfChannel can be used to store information about a
* Hands-Free channel.
*/
struct _HfChannel {
/* === Internal use only === */
/* Registration variables */
ListEntry node;
HfCallback callback; /* Application callback
* function */
RfChannel rfChannel; /* RFCOMM channel used for
* hands-freeclient or server
* connection.
*/
/* Transmit Queue */
int processingCmdQ; /* Used to prevent recursive calls
* to HfExecuteNextCommand().
*/
ListEntry cmdQueue; /* List of logical commands */
ListEntry txQueue; /* List of AT commands */
HfCommand *nextCommand; /* The next command to execute */
/* Connection State Variables */
HfChannelStates state; /* Current connection state */
uint16_t flags; /* Current connection flags */
uint8_t linkFlags; /* Levels of service connected */
/* Gateway State Information */
HfGatewayVersion version; /* Profile version parsed from
* SDP
*/
HfGatewayFeatures gwFeatures; /* Profile features parsed from
* SDP
*/
HfGwHoldFeatures gwHoldFeatures; /* 3-Way calling hold features */
int nrec; /* State of noise reduction and
* echo cancellation
*/
int ibRing; /* State of in-band ringing */
#if HF_VREC == XA_ENABLED
int voiceRec; /* State of voice recognition */
#endif /* HF_VREC == XA_ENABLED */
#if HF_CODEC_NEG == XA_ENABLED
uint8_t codecID; /* current selected codec ID */
#endif /* HF_CODEC_NEG == XA_ENABLED */
int callId; /* State of caller id
* nofitication
*/
int callWaiting; /* State of call waiting */
uint8_t micGain; /* Current microphone gain */
uint8_t speakerGain; /* Current speaker gain */
/* SDP variables for client */
SdpQueryToken sdpQueryToken; /* Used to query the service */
uint8_t queryFlags; /* Defines which SDP entries were
* parsed from the gateway.
*/
uint8_t rfServerChannel; /* When connecting hf client */
/* Channel Resources */
CmgrHandler cmgrHandler;
AtCommands atCommand;
AtCommands *currentAtCommand;
AtCommands *lastAtCommand;
XaBufferDesc atBuffer;
BtPacket atTxPacket;
uint8_t atTxData[HF_TX_BUFFER_SIZE];
uint16_t bytesToSend;
EvmTimer atTimer;
EvmTimer ringTimer;
uint8_t atRxBuffer[HF_RECV_BUFFER_SIZE];
uint16_t atRxLen;
#if HF_USE_CALL_MANAGER == XA_ENABLED
/* Polling resources */
EvmTimer pollTimer;
AtCommands pollCommand;
BtPacket pollPacket;
U8 pollData[RF_MAX_FRAME_SIZE];
U8 pollFlags;
PollInterval pollInterval;
BOOL pollQuickPending;
HfCallListState pollCallListState;
/* Call State */
HfCallStatus oldState[2]; /* Old Call States */
HfCallStatus recentState[2]; /* Recent Call States */
HfCallStatus callState[2]; /* Current Call States */
BOOL multiParty;
BOOL multiRecent;
BOOL multiOld;
U8 context; /* Context for the current op */
HfOptCallIDStruct cidOld; /* The caller ID for old calls */
HfOptCallIDStruct cidRecent; /* The caller ID for recent
* calls.
*/
HfOptCallIDStruct cid; /* The caller ID for current
* calls.
*/
BOOL heldActiveSwap; /* If a held-active event is
* received, and there is a held
* and an active call, then they
* should be swapped.
*/
#if HF_USE_RESP_HOLD == XA_ENABLED
HfRespHoldAppl respHoldAppl;
HfRespHoldAppl respHoldRecent;
HfRespHoldAppl respHoldOld;
HfRespHoldStatus respHoldStatus[2];
HfRespHoldQState respHoldQState;
BOOL rhPending; /* TRUE when a response and hold
* command or query is pending.
* Additional response and hold
* commands or queries must not be
* issued until this is FALSE
* again. Otherwise, the call
* manager will be confused by the
* interleaved OK responses.
*/
#endif /* HF_USE_RESP_HOLD == XA_ENABLED */
#endif /* HF_USE_CALL_MANAGER == XA_ENABLED */
uint8_t indMap[20];
#if HF_USE_IIA == XA_ENABLED
#if HF_USE_CALL_MANAGER == XA_ENABLED
/* This contains the current individual
* indicator active or inactive reporting state.
*/
HfIIAReporting cur;
/* This contains the individual indicator active or inactive reporting
* state that the audio gateway has been commanded to adopt. The
* individual indicator order in this array is the same the CIND
* message.
*/
HfIIReportingState iiaCmd[AT_MAX_INDICATORS];
char cindBuf[0x400];
#endif /* HF_USE_CALL_MANAGER == XA_ENABLED */
char biaBuff[HF_MAX_BIA_STRING];
#else /* HF_USE_IIA != XA_ENABLED */
uint8_t numInd;
#endif
};
/*---------------------------------------------------------------------------
* HfPhonebookInfo structure
*
* This type is only available when HF_USE_PHONEBOOK_COMMANDS is set to
* XA_ENABLED. A pointer to this structure is sent to the application's
* callback function notifying the application when phonebook storage
* information is received (see HF_GetPhonebookInfo).
*/
typedef struct _HfPhonebookInfo {
HfPhonebooks selected; /* Selected phonebook type */
uint16_t used; /* Number of entries used */
uint16_t total; /* Total number of entries */
} HfPhonebookInfo;
/*---------------------------------------------------------------------------
* HfPhonebookSize structure
*
* This type is only available when HF_USE_PHONEBOOK_COMMANDS is set to
* XA_ENABLED. A pointer to this structure is sent to the application's
* callback function notifying the application when phonebook size
* information is received (see HF_GetPhonebookSize).
*/
typedef struct _HfPhonebookSize {
uint16_t index1; /* First Entry */
uint16_t index2; /* Last Entry */
uint16_t numberLen; /* Maximum number length */
uint16_t textLen; /* Maximum text length */
} HfPhonebookSize;
/*---------------------------------------------------------------------------
* HfPhonebookEntry structure
*
* This type is only available when HF_USE_PHONEBOOK_COMMANDS is set to
* XA_ENABLED. A pointer to this structure is sent to the application's
* callback function notifying the application when a phonebook entry is
* received (see HF_ReadPhonebookEntries and HF_FindPhonebookEntries).
*/
typedef struct _HfPhonebookEntry {
uint16_t index; /* Location in the phone book */
uint8_t type;
const char *number; /* The phone number */
const char *text; /* The text part */
} HfPhonebookEntry;
/*---------------------------------------------------------------------------
* HfCallbackParms structure
*
* A pointer to this structure is sent to the application's callback
* function notifying the application of any state changes or important
* events.
*/
struct _HfCallbackParms {
HfEvent event; /* Event associated with the callback */
BtStatus status; /* Status of the callback event */
BtErrorCode errCode; /* Error code (reason) on disconnect events */
/* For certain events, a single member of this union will be valid.
* See HfEvent documentation for more information.
*/
union {
void *ptr;
BtRemoteDevice *remDev;
HfGatewayFeatures features;
HfGwHoldFeatures holdFeatures;
int service;
int roam;
int inBandRing;
int voiceRecognition;
uint8_t battery;
uint8_t signal;
uint8_t gain;
#if HF_CODEC_NEG == XA_ENABLED
uint8_t codecID;
#endif
HfCommand *command;
uint8_t *networkOper;
uint8_t *voiceTag;
HfSubscriberNum *subscriberNum;
#if HF_USE_MESSAGING_COMMANDS == XA_ENABLED
BOOL sms; /* Only valid if
* HF_USE_MESSAGING_COMMANDS
* is set to XA_ENABLED.
*/
#endif /* HF_USE_MESSAGING_COMMANDS == XA_ENABLED */
#if HF_USE_RESP_HOLD == XA_ENABLED
#if HF_USE_CALL_MANAGER == XA_ENABLED
HfRespHoldAppl respHoldAppl; /* Indicates which response and
* hold features are currently
* applicable.
*/
#else /* HF_USE_CALL_MANAGER != XA_ENABLED */
HfRespHoldAction respHold; /* Only valid if HF_USE_RESP_HOLD
* is set to XA_ENABLED.
*/
#endif /* else HF_USE_CALL_MANAGER != XA_ENABLED */
#endif /* HF_USE_RESP_HOLD == XA_ENABLED */
#if HF_USE_CALL_MANAGER == XA_ENABLED
HfCallStateParms *callStateParms;/* Only valid if
* HF_USE_CALL_MANAGER is set to
* XA_ENABLED.
*/
HfCallIdParms *callIdParms; /* Only valid if HF_
* USE_CALL_MANAGER is set to
* XA_ENABLED.
*/
#else /* HF_USE_CALL_MANAGER != XA_ENABLED */
HfCallActiveState call; /* Only valid if
* HF_USE_CALL_MANAGER is set to
* XA_DISABLED.
*/
HfCallSetupState callSetup; /* Only valid if
* HF_USE_CALL_MANAGER is set to
* XA_DISABLED.
*/
HfCallHeldState callHeld; /* Only valid if
* HF_USE_CALL_MANAGER is set to
* XA_DISABLED.
*/
HfCallWaitParms *callWaitParms; /* Only valid if
* HF_USE_CALL_MANAGER is set to
* XA_DISABLED.
*/
HfCallerIdParms *callerIdParms; /* Only valid if
* HF_USE_CALL_MANAGER is set to
* XA_DISABLED.
*/
HfCallListParms *callListParms; /* Only valid if
* HF_USE_CALL_MANAGER is set to
* XA_DISABLED.
*/
#endif /* else HF_USE_CALL_MANAGER != XA_ENABLED */
#if HF_USE_PHONEBOOK_COMMANDS == XA_ENABLED
HfPhonebooks phonebooks; /* Only valid if
* HF_USE_PHONEBOOK_COMMANDS
* is set to XA_ENABLED.
*/
HfPhonebookInfo *phonebookInfo; /* Only valid if
* HF_USE_PHONEBOOK_COMMANDS
* is set to XA_ENABLED.
*/
HfPhonebookSize *phonebookSize; /* Only valid if
* HF_USE_PHONEBOOK_COMMANDS
* is set to XA_ENABLED.
*/
HfPhonebookEntry *phonebookEntry;/* Only valid if
* HF_USE_PHONEBOOK_COMMANDS
* is set to XA_ENABLED.
*/
#endif /* HF_USE_PHONEBOOK_COMMANDS == XA_ENABLED */
#if BT_SCO_HCI_DATA == XA_ENABLED
HfAudioData *audioData; /* Only valid if BT_SCO_HCI_DATA is
* set to XA_ENABLED.
*/
BtPacket *audioPacket; /* Only valid if BT_SCO_HCI_DATA is
* set to XA_ENABLED.
*/
#endif /* BT_SCO_HCI_DATA == XA_ENABLED */
HfAtData *data;
} p;
};
/****************************************************************************
*
* Function Reference
*
****************************************************************************/
/*---------------------------------------------------------------------------
* HF_Init()
*
* This function initializes the Hands-free SDK. This function should
* only be called once, normally at system initialization time. The
* calling of this function can be specified in overide.h using the
* XA_LOAD_LIST macro.
*
* Returns:
* TRUE - Initialization was successful
*
* FALSE - Initialization failed.
*/
int HF_Init(void);
/*---------------------------------------------------------------------------
* HF_Register()
*
* HF_Register() has been deprecated. The HF_RegisterSec() function
* should be used instead. For the time being, if HF_Register() is
* used, it is remapped as a macro to the HF_RegisterSec(). However,
* the HF_Register() macro will be deleted from future releases of the
* Hands Free profile. This macro registers and initializes a channel
* for use in creating or receiving service level connections. It
* registers the Hands-Free profile with the connection manager, RFCOMM,
* and SDP. The application callback function is also bound to the
* channel. This API will register a security record with default
* values using HF_SECURITY_SETTINGS. To set the values in the security
* settings for the security record, it is better to use
* HF_RegisterSec() instead of HF_Register().
*
* Parameters:
* Chan - Contains a pointer to the channel structure that will be
* initialized and registered.
*
* Callback - The application callback function that will receive
* events.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_IN_USE - The operation failed because the channel has
* already been initialized.
*
* BT_STATUS_FAILED - The operation failed because either the RFCOMM
* channel or the SDP record could not be registered.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_Register(HfChannel *Chan, HfCallback Callback);
#define HF_Register(ch, cb) HF_RegisterSec(ch, cb, 0)
/*---------------------------------------------------------------------------
* HF_RegisterSec()
*
* This function registers and initializes a channel for use in creating
* or receiving service level connections. Registers the Hands-Free
* profile with the connection manager, RFCOMM, and SDP. The
* application callback function is also bound to the channel.
* Registers a security record based on the values passed to the secParm
* parameter. If null, a record with default values set with
* HF_SECURITY_SETTINGS is used.
*
* Parameters:
* Chan - Contains a pointer to the channel structure that will be
* initialized and registered.
*
* Callback - The application callback function that will receive
* events.
*
* secParms - The BtSecurityParms values passed in for registering
* a BtSecurityRecord.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_IN_USE - The operation failed because the channel has
* already been initialized.
*
* BT_STATUS_FAILED - The operation failed because either the RFCOMM
* channel or the SDP record could not be registered.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_RegisterSec(HfChannel *Chan,
HfCallback Callback,
BtSecurityParms *secParms);
/*---------------------------------------------------------------------------
* HF_Deregister()
*
* This function deregisters the channel. The channel becomes unbound
* from RFCOMM and SDP, and can no longer be used for creating service
* level connections.
*
* Parameters:
* Chan - Contains a pointer to the channel structure that will be
* deregistered.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_BUSY - The operation failed because a service level
* connection is still open to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_Deregister(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_CreateServiceLink()
*
* This function creates a service level connection with the Audio
* Gateway. This includes performing SDP Queries to find the
* appropriate service and opening an RFCOMM channel. The success of
* the operation is indicated by the HF_EVENT_SERVICE_CONNECTED event.
* If the connection fails, the application is notified by the
* HF_EVENT_SERVICE_DISCONNECTED event.
*
* If an ACL link does not exist to the audio gateway, one will be
* created first. If desired, however, the ACL link can be established
* prior to calling this function.
*
* Parameters:
*
* Chan - Pointer to a registered channel structure.
*
* Addr - The Bluetooth address of the remote device.
*
* Returns:
* BT_STATUS_PENDING - The operation has started; the application will
* be notified when the connection has been created (via the
* callback function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_BUSY - The operation failed because a connection is already
* open to the remote device, or a new connection is being created.
*
* BT_STATUS_FAILED - The channel has not been registered.
*
* BT_STATUS_CONNECTION_FAILED - The connection failed.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_CreateServiceLink(HfChannel *Chan, BD_ADDR *Addr);
/*---------------------------------------------------------------------------
* HF_DisconnectServiceLink()
*
* This function releases the service level connection with the Audio
* Gateway. This will close the RFCOMM channel and will also close the
* SCO and ACL links if no other services are active, and no other link
* handlers are in use (ME_CreateLink). When the operation is complete
* the application will be notified by the HF_EVENT_SERVICE_DISCONNECTED
* event.
*
* Parameters:
* Channel - Pointer to a registered channel structure.
*
* Returns:
* BT_STATUS_PENDING - The operation has started; the application will
* be notified when the service level connection is down (via the
* callback function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_DisconnectServiceLink(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_CreateAudioLink()
*
* This function creates an audio (SCO) link to the Audio Gateway. The
* success of the operation is indicated by the HF_EVENT_AUDIO_CONNECTED
* event. If the connection fails, the application is notified by the
* HF_EVENT_AUDIO_DISCONNECTED event.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* BT_STATUS_PENDING - The operation has started; the application will
* be notified when the audio link has been established (via the
* callback function registered by HF_Register).
*
* BT_STATUS_SUCCESS - The audio (SCO) link already exists.
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service level
* connection does not exist to the audio gateway.
*
* BT_STATUS_FAILED - An audio connection already exists.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_CreateAudioLink(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_DisconnectAudioLink()
*
* This function releases the audio connection with the Audio Gateway.
* When the operation is complete the application will be notified by
* the HF_EVENT_AUDIO_DISCONNECTED event.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* BT_STATUS_PENDING - The operation has started; the application will
* be notified when the audio connection is down (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_DisconnectAudioLink(HfChannel *Chan);
#if BT_SCO_HCI_DATA == XA_ENABLED
/*---------------------------------------------------------------------------
* Sends the given data on the SCO link
*/
BtStatus SCO_SendData(BtScoConnect *scocon, BtPacket *packet);
/*---------------------------------------------------------------------------
* CMGR_SendAudioData()
*
* Sends the specified audio data on the SCO link.
*
* Requires:
* BT_SCO_HCI_DATA enabled
*
* Parameters:
* Handler - Handler structure to use.
*
* Packet - The packet of data to send. After this call, the SCO
* manager owns the packet. When the packet has been transmitted
* to the host controller, CMEVENT_AUDIO_DATA_SENT is sent to the
* handler(s).
*
* Returns:
* BT_STATUS_PENDING - The packet was queued successfully.
*
* BT_STATUS_NO_CONNECTION - No SCO connection exists.
*
* BT_STATUS_INVALID_PARM - Invalid parameter (XA_ERROR_CHECK only).
*/
BtStatus CMGR_SendAudioData(CmgrHandler *Handler, BtPacket *Packet);
#define CMGR_SendAudioData(h, p) (SCO_SendData((h)->scoConnect, p))
/*---------------------------------------------------------------------------
* HF_SendAudioData()
*
* This macro sends the specified audio data on the audio link.
*
* Requires:
* BT_SCO_HCI_DATA enabled.
*
* Parameters:
* Chan - The Channel over which to send the audio data.
*
* Packet - The packet of data to send. After this call, the Hands-free
* SDK owns the packet. When the packet has been transmitted
* to the host controller, HF_EVENT_AUDIO_DATA_SENT is sent to the
* application.
*
* Returns:
* BT_STATUS_PENDING - The packet was queued successfully.
*
* BT_STATUS_NO_CONNECTION - No audio connection exists.
*
* BT_STATUS_INVALID_PARM - Invalid parameter (XA_ERROR_CHECK only).
*/
BtStatus HF_SendAudioData(HfChannel *Chan, BtPacket *Packet);
#define HF_SendAudioData(c, p) (CMGR_SendAudioData((&(c)->cmgrHandler), p))
#endif /* BT_SCO_HCI_DATA == XA_ENABLED */
/*---------------------------------------------------------------------------
* HF_AnswerCall()
*
* This function answers an incoming call. This function is called
* after receiving a HF_EVENT_CALL_STATE event that indicates an
* incoming call. To reject the incoming call, use the HF_Hangup
* function. When the call is accepted or rejected by the gateway, the
* application will be notified of the call state change by the
* HF_EVENT_CALL_STATE event.
*
* In addition, the HF_EVENT_COMMAND_COMPLETE event will be received.
*
* When an active call exists and a second incoming call is indicated,
* the HF_AnswerCall function will perform the equivalent of HF_CallHold
* with an "HfHoldAction" of HF_HOLD_HOLD_ACTIVE_CALLS. If call waiting
* is disabled, notification of a second incoming call will not occur
* (see HF_EnableCallWaitNotify).
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*
* BT_STATUS_FAILED - No incoming call exists.
*/
BtStatus HF_AnswerCall(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_DialNumber()
*
* This function initiates an outgoing call using a phone number.
*
* During the process of calling, the HF_EVENT_CALL_STATE event will be
* generated to show the progress of the call. Not all states are
* applicable to all services. At a minimum, the application will be
* notified of the following states: HF_CALL_STATUS_DIALING and
* HF_CALL_STATUS_ACTIVE.
*
* In addition, the HF_EVENT_COMMAND_COMPLETE event will be received.
*
* If a call is already active, it must be put on hold before calling
* this function.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Number - An ASCII string containing the number to be dialed. Until
* the Bluetooth stack sends the HF_EVENT_COMMAND_COMPLETE event for
* this command back to the application, the application must not
* reuse the memory space in this string, but instead must use
* different strings for sending additional commands.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_FAILED - A call cannot be made.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_DialNumber(HfChannel *Chan,
uint8_t *Number,
uint16_t Len,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_MemoryDial()
*
* This function initiates an outgoing call using a memory location on
* the phone.
*
* During the process of calling, the HF_EVENT_CALL_STATE event will be
* generated to show the progress of the call. Not all states are
* applicable to all services. At a minimum, the application will be
* notified of the following states: HF_CALL_STATUS_DIALING and
* HF_CALL_STATUS_ACTIVE.
*
* In addition, the HF_EVENT_COMMAND_COMPLETE event will be received.
*
* If a call is already active, it must be put on hold before calling
* this function.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Location - An ASCII string containing the memory location
* to be dialed. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this string, but instead must use different strings for sending
* additional commands.
*
* Len - This parameter must contain the number of characters in the
* Location parameter string, not counting any NULL termination
* characters.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_FAILED - A call cannot be made.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_MemoryDial(HfChannel *Chan,
uint8_t *Location,
uint16_t Len,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_Redial()
*
* This function initiates an outgoing call based on the last number
* dialed in the audio gateway.
*
* During the process of calling, the HF_EVENT_CALL_STATE event will be
* generated to show the progress of the call. Not all states are
* applicable to all services. At a minimum, the application will be
* notified of the following states: HF_CALL_STATUS_DIALING and
* HF_CALL_STATUS_ACTIVE.
*
* In addition, the HF_EVENT_COMMAND_COMPLETE event will be received.
*
* If a call is already active, it must be put on hold before calling
* this function.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_FAILED - A call cannot be made.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_Redial(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_CallHold()
*
* This function issues a command to the Audio Gateway to manage
* multi-party calling. This function allows the application to perform
* explicit handling of 3-Way calls (see HfHoldAction). During the
* process of this command, the HF_EVENT_CALL_STATE event will be
* generated to show the state change of the call.
*
* In addition, the HF_EVENT_COMMAND_COMPLETE event will be received.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* HoldAction - Describes the type of hold function.
*
* Index - Call to which the action applies. Ignored if HoldAction is
* not 1 or 2.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_CallHold(HfChannel *Chan,
HfHoldAction HoldAction,
uint8_t Index,
HfCommand *Command);
#if HF_USE_RESP_HOLD == XA_ENABLED
/*---------------------------------------------------------------------------
* HF_QueryResponseHold()
*
* This function is only available if HF_USE_RESP_HOLD is set to
* XA_ENABLED. It issues a Query for the state of Response and Hold on
* the Audio Gateway. This feature is typically supported in Japanese
* markets (see HfResponseHoldState). If the audio gateway is in a
* response and hold state, then it will send back a +BTRH message. If
* HF_USE_CALL_MANAGER is set to XA_ENABLED, if polling is not reliable,
* and if the previous call state does not correspond to the reported
* response and hold condition, then an HF_EVENT_CALL_STATE event is
* received; but if HF_USE_CALL_MANAGER is not set to XA_ENABLED, and if
* the audio gateway is in a response and hold state, then a
* HF_EVENT_RESPONSE_HOLD will be received.
*
* In addition, the HF_EVENT_COMMAND_COMPLETE event will be received.
*
* Requires:
* HF_USE_RESP_HOLD enabled.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*
* BT_STATUS_BUSY - A response and hold message is already in progress,
* so a new one cannot be started until the other completes.
*/
BtStatus HF_QueryResponseHold(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_ResponseHold()
*
* This function is only available if HF_USE_RESP_HOLD is set to
* XA_ENABLED. It issues a Response and Hold command to the Audio
* Gateway to manage incoming calls. This feature is typically
* supported in Japanese markets. (See HfResponseHoldState). When the
* specified action is taken, the HF_EVENT_RESPONSE_HOLD event will be
* received, which should indicate the action that was taken.
*
* In addition, the HF_EVENT_COMMAND_COMPLETE event will be received.
*
* Requires:
* HF_USE_RESP_HOLD enabled.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* RespHoldAction - Describes the type of action to take.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*
* BT_STATUS_BUSY - A response and hold message is already in progress,
* so a new one cannot be started until the other completes.
*/
BtStatus HF_ResponseHold(HfChannel *Chan,
HfRespHoldAction RespHoldAction,
HfCommand *Command);
#endif /* HF_USE_RESP_HOLD == XA_ENABLED */
/*---------------------------------------------------------------------------
* HF_Hangup()
*
* This function terminates an existing (active) call, rejects an
* incoming call, or cancels an outgoing call. This function can be
* called whenever an active call exists or after receiving a
* HF_EVENT_CALL_STATE event that indicates an incoming or outgoing
* call. When the call is terminated, the application will be notified
* of the call state change by the HF_EVENT_CALL_STATE event.
*
* In addition, the HF_EVENT_COMMAND_COMPLETE event will be received.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*
* BT_STATUS_FAILED - No call exists.
*/
BtStatus HF_Hangup(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_ListCurrentCalls()
*
* This function queries the Audio Gateway for call state information.
*
* After making this call, the HF_EVENT_CURRENT_CALL_STATE event will be
* generated for each call on the audio gateway.
*
* If HF_USE_CALL_MANAGER is set to XA_ENABLED, an HF_EVENT_CALL_STATE
* event is received instead of the HF_EVENT_CURRENT_CALL_STATE event.
*
* The HF_EVENT_COMMAND_COMPLETE event will be received when the
* gateway signals that all calls have been listed.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_ListCurrentCalls(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_EnableCallerIdNotify()
*
* This function enables notification of the calling line
* identification. When this command is complete, the
* HF_EVENT_COMMAND_COMPLETE event will be received.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Enabled - TRUE or FALSE.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_EnableCallerIdNotify(HfChannel *Chan,
int Enabled,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_EnableCallWaitNotify()
*
* This function enables notification of call waiting. When this
* command is complete, the HF_EVENT_COMMAND_COMPLETE event will be
* received.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Enabled - TRUE or FALSE.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*
* BT_STATUS_NOT_SUPPORTED - Call waiting was not included in the list
* of supported features (HF_SDK_FEATURES).
*/
BtStatus HF_EnableCallWaitNotify(HfChannel *Chan,
int Enabled,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_GenerateDtmf()
*
* This function commands the Audio Gateway to send a DTMF code to the
* network. A call MUST be ongoing in order for the Audio Gateway to
* generate a DTMF code. The HF_EVENT_COMMAND_COMPLETE event will be
* received when the DTMF code is sent.
*
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* dtmfTone - A single ASCII character in the set 0-9, #, *, A-D.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_BUSY - No available RFCOMM packets.
*
* BT_STATUS_FAILED - A service link is not active.
*
* BT_STATUS_INVALID_PARM - Invalid ASCII character.
*/
BtStatus HF_GenerateDtmf(HfChannel *Chan, uint8_t dtmfTone, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_GetLastVoiceTag()
*
* This function retrieves the number associated with the last voice tag
* recorded in the Hands-Free Unit. When the number is received, the
* application's callback function will receive the
* HF_EVENT_COMMAND_COMPLETE event.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_GetLastVoiceTag(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_EnableVoiceRecognition()
*
* This function enables or disables voice recognition on the Audio
* Gateway. When this command is complete, the
* HF_EVENT_COMMAND_COMPLETE event will be received.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Enabled - Set to TRUE if voice recognition is enabled, and FALSE
* if it is disabled.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_SUCCESS - The specified mode is already set.
*
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_FAILED - Could not initiate voice recognition.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_EnableVoiceRecognition(HfChannel *Chan,
int Enabled,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_DisableNREC()
*
* This function disables noise reduction and echo canceling. When this
* command is complete, the HF_EVENT_COMMAND_COMPLETE event will be
* received.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_DisableNREC(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_ReportMicVolume()
*
* This function reports the current microphone gain of the Hands-Free
* device.
*
* When the command issued as a result of this call is completed,
* the HF_EVENT_COMMAND_COMPLETE event will be received by the
* application's callback function.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Gain - The current gain level (0-15).
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_ReportMicVolume(HfChannel *Chan, uint8_t Gain, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_ReportSpeakerVolume()
*
* This function reports the current speaker volume of the Hands-Free
* Unit.
*
* When the command issued as a result of this call is completed,
* the HF_EVENT_COMMAND_COMPLETE event will be received by the
* application's callback function.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Gain - The current gain level (0-15).
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_ReportSpeakerVolume(HfChannel *Chan,
uint8_t Gain,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_QueryNetworkOperator()
*
* This function queries the Audio Gateway for the Network Operator.
* The HF_EVENT_NETWORK_OPERATOR event will be received from the audio
* gateway.
*
* When the command issued as a result of this call is completed,
* the HF_EVENT_COMMAND_COMPLETE event will be received by the
* application's callback function.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_QueryNetworkOperator(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_QuerySubscriberNumber()
*
* This function queries the Audio Gateway for the Subscriber Number.
* The HF_EVENT_SUBSCRIBER_NUMBER event will be received from the audio
* gateway.
*
* When the command issued as a result of this call is completed,
* the HF_EVENT_COMMAND_COMPLETE event will be received by the
* application's callback function.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_QuerySubscriberNumber(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_EnableExtendedErrors()
*
* This function enables extended error codes on the Audio Gateway.
* (See HfCmeError.)
*
* When the command issued as a result of this call is completed,
* the HF_EVENT_COMMAND_COMPLETE event will be received by the
* application's callback function.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_EnableExtendedErrors(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_SendAtCommand()
*
* This function sends any AT command. The 'AtString' parameter must be
* initialized and the AT command must be a properly formatted AT
* Command. The "AT" characters must be included in the string when
* needed. A carriage return character will be appended to the end of
* the string.
*
* When the AT command is completed, the HF_EVENT_COMMAND_COMPLETE
* event will be received by the application's callback function. In
* addition, any unsolicited result code not recognized by the
* Hands-free SDK will generate an HF_EVENT_AT_RESULT_DATA event.
*
* When HF_USE_CALL_MANAGER, sending AT commands that affect the call
* state should be avoided, because they may compromise the internal
* call states of the Call Manager. Use the API calls provided for
* initiating, answering, or changing the state of ongoing calls.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* AtString - A pointer to an initialized AT Command string. Until the
* Bluetooth stack sends the HF_EVENT_COMMAND_COMPLETE event for
* this command back to the application, the application must not
* reuse the memory space in this string, but instead must use
* different strings for sending additional commands.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_SendAtCommand(HfChannel *Chan,
const char *AtString,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_QueryPhonebooks()
*
* This function is only available when HF_USE_PHONEBOOK_COMMANDS is set
* to XA_ENABLED. It queries the Audio Gateway for its supported
* phonebooks. When this command is issued successfully, the
* HF_EVENT_PHONEBOOK_STORAGE event will be received, followed by the
* HF_EVENT_COMMAND_COMPLETE event.
*
* Requires:
* HF_USE_PHONEBOOK_COMMANDS must be enabled.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_QueryPhonebooks(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_SelectPhonebook()
*
* This function is only available when HF_USE_PHONEBOOK_COMMANDS is set
* to XA_ENABLED. It makes the specific phonebook the active one for
* subsequent calls. When this occurs, the HF_EVENT_COMMAND_COMPLETE
* event will be received.
*
* Requires:
* HF_USE_PHONEBOOK_COMMANDS must be enabled.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Phonebook - This parameter must contain an enumeration value
* corresponding to the phonebook that is to be activated.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_SelectPhonebook(HfChannel *Chan,
HfPhonebooks Phonebook,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_GetCurrentPhonebookInfo()
*
* This function is only available when HF_USE_PHONEBOOK_COMMANDS is set
* to XA_ENABLED. It queries for the active phonebook. When this
* command is issued successfully, the HF_EVENT_PHONEBOOK_INFO event
* will be received, followed by the HF_EVENT_COMMAND_COMPLETE event.
*
* Requires:
* HF_USE_PHONEBOOK_COMMANDS must be enabled.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_GetCurrentPhonebookInfo(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_GetPhonebookSize()
*
* This function is only available when HF_USE_PHONEBOOK_COMMANDS is set
* to XA_ENABLED. It gets the number of entries and the size of the
* elements of the active phonebook. When this command is issued
* successfully, the HF_EVENT_PHONEBOOK_INFO event will be received,
* followed by the HF_EVENT_COMMAND_COMPLETE event.
*
* Requires:
* HF_USE_PHONEBOOK_COMMANDS must be enabled.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_GetPhonebookSize(HfChannel *Chan, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_ReadPhonebookEntries()
*
* This function is only available when HF_USE_PHONEBOOK_COMMANDS is set
* to XA_ENABLED. It reads entries from the specified phonebook in the
* specified range. When this command is issued successfully, the
* HF_EVENT_PHONEBOOK_ENTRY event will be received, followed by the
* HF_EVENT_COMMAND_COMPLETE event.
*
* Requires:
* HF_USE_PHONEBOOK_COMMANDS must be enabled.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* From - Starting index
*
* To - Ending index
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_ReadPhonebookEntries(HfChannel *Chan,
uint16_t From,
uint16_t To,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_FindPhonebookEntries()
*
* This function is only available when HF_USE_PHONEBOOK_COMMANDS is set
* to XA_ENABLED. It finds all entries beginning with the specified
* string. Queries the Audio Gateway for its supported phonebooks.
* When this command is issued successfully, the
* HF_EVENT_PHONEBOOK_ENTRY event will be received, followed by the
* HF_EVENT_COMMAND_COMPLETE event.
*
* Requires:
* HF_USE_PHONEBOOK_COMMANDS must be enabled.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Text - The search string. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this string, but instead must use different strings for sending
* additional commands.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_FindPhonebookEntries(HfChannel *Chan,
const char *Text,
HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_WritePhonebookEntry()
*
* This function is only available when HF_USE_PHONEBOOK_COMMANDS is set
* to XA_ENABLED. It writes the phonebook entry. When the request is
* done HF_EVENT_COMMAND_COMPLETE event will be received.
*
* Requires:
* HF_USE_PHONEBOOK_COMMANDS must be enabled.
*
* Parameters:
* Channel - Pointer to a registered channel structure.
*
* Index - The phone book index
*
* Number - The telephone number string. Until the Bluetooth stack
* sends the HF_EVENT_COMMAND_COMPLETE event for this command back
* to the application, the application must not reuse the memory
* space in this string, but instead must use different strings for
* sending additional commands.
*
* Text - The phone book text string. Until the Bluetooth stack sends
* the HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this string, but instead must use different strings for sending
* additional commands.
*
* Type - The phone book type
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_WritePhonebookEntry(HfChannel *Chan,
uint16_t Index,
const char *Number,
const char *Text,
uint8_t Type,
HfCommand *Command);
#if HF_USE_IIA == XA_ENABLED
/*---------------------------------------------------------------------------
* HF_IIAlwaysActive()
*
* This function is only available when HF_USE_IIA is set to
* XA_ENABLED. This function indicates whether the reporting for an
* individual indicator corresponding to the given index can be
* deactivated or not. The call, call setup, and call hold individual
* indicators cannot be deactivated.
*
* Requires:
* HF_USE_IIA must be enabled.
*
* Parameters:
* hfChanP - This parameter must contain the address of a registered
* hands free channel structure.
*
* iiNdx - An index corresponding to an individual indicator as defined
* by the CIND message.
*
* Returns:
* TRUE if the reporting for an individual indicator corresponding
* to the given index must always be activated, or FALSE
* otherwise.
*/
BOOL HF_IIAlwaysActive(HfChannel *hfChanP, U8 iiNdx);
/*---------------------------------------------------------------------------
* HF_SetIIAReportingState()
*
* This function is only available when HF_USE_IIA is set to
* XA_ENABLED. This function defines which Individual Indicators should
* be reported by the Audio Gateway, and which should not. This allows
* the reporting of certain individual activators such as signal
* strength to be disabled to extend battery life. When the request is
* done HF_EVENT_COMMAND_COMPLETE event will be received.
*
* Requires:
* HF_USE_IIA must be enabled.
*
* Parameters:
* hfChanP - This parameter must contain the address of a registered
* hands free channel structure.
*
* iiaCmdP - This parameter must contain the address of a individual
* indicators activation command structure. The elements in this
* structure correspond to the desired reporting state for the
* various individual indicators.
*
* hfCommandP - This parameter must contain the address of a hands free
* command structure to be used for transmitting the command. Until
* the HF_EVENT_COMMAND_COMPLETE event for this command is sent back
* to the application, the application must not reuse the memory
* space in this structure, but instead must use different command
* structure instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_CANCELLED - The reporting state is already as requested, so
* no BIA command message was sent.
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_SetIIAReportingState(HfChannel *hfChanP,
HfIIACmd *iiaCmdP,
HfCommand *hfCommandP);
#if HF_USE_CALL_MANAGER == XA_ENABLED
/*---------------------------------------------------------------------------
* HF_GetIIAReportingState()
*
* This function is only available when HF_USE_IIA and
* HF_USE_CALL_MANAGER are both set to XA_ENABLED. This function
* indicates which Individual Indicators are being reported by the Audio
* Gateway, and which are not. The application can invoke
* HF_SetIIAReportingState() to disable the reporting of certain
* individual activators such as signal strength to extend battery
* life.
*
* Requires:
* HF_USE_IIA and HF_USE_CALL_MANAGER both must be enabled.
*
* Parameters:
* hfChanP - This parameter must contain the address of a registered
* hands free channel structure.
*
* rsP - This parameter must contain the address of an individual
* indicators activation report structure. The elements in this
* structure will be updated to correspond to the current reporting
* state for the various individual indicators.
*
* Returns:
* BT_STATUS_SUCCESS - The given individual indication report structure
* has been updated with the latest activation state information.
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*
* BT_STATUS_FAILED - The call manager data has become corrupted.
*/
BtStatus HF_GetIIAReportingState(HfChannel *hfChanP,
HfIIAReporting *rsP);
#endif /* HF_USE_CALL_MANAGER == XA_ENABLED */
#endif /* HF_USE_IIA == XA_ENABLED */
#if HF_CODEC_NEG == XA_ENABLED
/*---------------------------------------------------------------------------
* HF_CodecConnectionSetup()
*---------------------------------------------------------------------------
*
* Synopsis: Send available codec to AG when doing connection codec setup.
*
* Return: (See header file)
*
*/
BtStatus HF_CodecConnectionSetup(HfChannel *Chan, const char *codecID, HfCommand *Command);
/*---------------------------------------------------------------------------
* HF_CodecConnectionReq()
*
* HF requesting the AG to start the codec connection procedure.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Command - A command structure to be used for transmitting the
* command. Until the Bluetooth stack sends the
* HF_EVENT_COMMAND_COMPLETE event for this command back to the
* application, the application must not reuse the memory space in
* this structure, but instead must use different command structure
* instances for sending additional commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has started, the application will
* be notified when the command has completed (via the callback
* function registered by HF_Register).
*
* BT_STATUS_NOT_FOUND - The specified channel has not been registered.
*
* BT_STATUS_NO_CONNECTION - The operation failed because a service link
* does not exist to the audio gateway.
*
* BT_STATUS_INVALID_PARM - A parameter invalid or not properly
* initialized (XA_ERROR_CHECK only).
*/
BtStatus HF_CodecConnectionReq(HfChannel *Chan, HfCommand *Command);
#endif /* HF_CODEC_NEG == XA_ENABLED */
/*---------------------------------------------------------------------------
* HF_IsChannelOpen()
*
* This function indicates whether a channel is open.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
*
* TRUE - The specified channel is open.
*
* FALSE - The channel is closed.
*/
int HF_IsChannelOpen(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_IsACLConnected()
*
* This function indicates whether the ACL link is up.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* TRUE - The ACL link is connected.
*
* FALSE - The ACL link is disconnected.
*/
int HF_IsACLConnected(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_IsHandsfreeConnected()
*
* This function indicates whether the Hands-Free profile is connected.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* TRUE - The Hands-Free profile is connected.
*
* FALSE - The Hands-Free profile is not connected.
*/
int HF_IsHandsfreeConnected(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_IsAudioConnected()
*
* This function indicates whether an audio connection is up.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* TRUE - An audio link is up.
*
* FALSE - No audio link is up.
*/
int HF_IsAudioConnected(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_GetRemoteBDAddr()
*
* This function provides the Bluetooth Device Address associated with
* the given channel.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* bdAddrP - Must contain the address of a structure of type BD_ADDR
* where the Bluetooth Device Address can be written.
*
* Returns:
* TRUE if the address was obtained, or FALSE otherwise.
*/
int HF_GetRemoteBDAddr(HfChannel *Chan, BD_ADDR *bdAddrP);
/*---------------------------------------------------------------------------
* HF_ProfileVersion()
*
* This function provides the profile version retrieved from the SDP
* database of the remote device for this service connection.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* HfGatewayVersion
*
*/
HfGatewayVersion HF_ProfileVersion(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_GatewayFeatures()
*
* This function provides the features of the Audio Gateway.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* HfGatewayFeatures
*
*/
HfGatewayFeatures HF_GatewayFeatures(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_GatewayHoldFeatures()
*
* This function provides the hold features of the audio gateway.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* HfGwHoldFeatures
*
*/
HfGwHoldFeatures HF_GatewayHoldFeatures(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_SpeakerGain()
*
* This function provides the current value of speaker volume.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* The current Speaker Gain setting.
*
*/
uint8_t HF_SpeakerGain(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_MicGain()
*
* This function the current value of microphone gain.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* The current Microphone Gain setting.
*/
uint8_t HF_MicGain(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_IsNRECEnabled()
*
* This function indicates whether Noise Reduction and Echo Cancelling
* is enabled in the Audio Gateway.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* TRUE - NREC is enabled in the AG.
*
* FALSE - NREC is disabled in the AG.
*/
int HF_IsNRECEnabled(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_IsInbandRingEnabled()
*
* This function indicates whether In-band Ringing is enabled in the
* Audio Gateway.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* TRUE - In-band ringing is enabled in the AG.
*
* FALSE - In-band ringing is disabled in the AG.
*/
int HF_IsInbandRingEnabled(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_IsCallIdNotifyEnabled()
*
* This function indicates whether Caller ID notification is enabled in
* the Audio Gateway.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* TRUE - Caller ID notification is enabled in the AG.
*
* FALSE - Caller ID notification is disabled in the AG.
*/
int HF_IsCallIdNotifyEnabled(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_IsVoiceRecActive()
*
* This function indicates whether Voice Recognition is active in the
* Audio Gateway.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* TRUE - Voice Recognition is active in the AG.
*
* FALSE - Voice Recognition is inactive in the AG.
*/
int HF_IsVoiceRecActive(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_IsCallWaitingActive()
*
* This function indicates whether Call Waiting is active in the Audio
* Gateway.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Returns:
* TRUE - Call Waiting is active in the AG.
*
* FALSE - Call Waiting is inactive in the AG.
*/
int HF_IsCallWaitingActive(HfChannel *Chan);
/*---------------------------------------------------------------------------
* HF_RegisterCmdOverride()
*
* This function registers a callback function to be called any time the
* command state machine is called.
*
* When an API function is called in the Hands-free SDK, the request is
* queued up to be executed when the channel becomes available. When
* the channel is available for the next command on the queue, the
* command state machine is called repeatedly to allow the work of the
* logical command to be performed. Each call the command state machine
* results in either an AT command being sent, or completion of a
* command. Each time an AT command is sent and a response is received
* (OK, ERROR, CME ERROR, or a command timeout), the state machine is
* called again. When the work of the logical command is completed, the
* command state machine completes the command and notifies the
* application.
*
* This function allows the registration of a callback function that
* will be called each time the command state machine is called. This
* allows an application to override the default behavior of an API
* call. The callback function can determine which function call is
* being executed and set up its own AT commands for transmission.
*
* When the override function sets up an AT command for transmission, it
* must return BT_STATUS_PENDING. This indicates to the command state
* machine that it must send the AT command. When the override function
* has completed its work, it must return BT_STATUS_SUCCESS. This
* indicates to the command state machine that it must complete the
* command and notify the application (no AT command will be sent). If
* the override function does not perform any work, it must return
* BT_STATUS_FAILED to indicate to the command state machine that it
* must take the default action.
*
* In order to use this feature properly, AT commands must be set up
* using the internal HfChannel structure field "atCommand." This field
* is not normally a public field, but it can be accessed directly and
* is of the type AtCommandValues (see HF_SendAtCommand). The override
* function must not send the AT command itself, but must rely on the
* command state machine to transmit the command.
*
* In addition, the override function can look at the "state" field of
* the HfCommand structure to determine how many times the command state
* machine has been called for this particular command. Each time the
* state machine is called, the "state" field is incremented. Initially
* it will have the value of 0. If multiple AT commands must be sent
* for a particular logical command, the "state" field will help to
* identify the command to send, or if the command is complete.
*
* This feature adds a lot of power, but must be used properly as
* defined above in order for the internal states of the SDK to be
* maintained properly.
*
* To unregister the callback, this function should be called with a
* NULL parameter.
*
* Parameters:
* Callback - A pointer to the function that will be called.
*
* Returns:
* void
*/
void HF_RegisterCmdOverride(HfCmdOverride Callback);
/*---------------------------------------------------------------------------
* HF_SetMasterRole()
*
* This macro attempts to keep the local device in the Master role.
*
* Parameters:
* Chan - Pointer to a registered channel structure.
*
* Flag - TRUE if this device wants to be the master, otherwise FALSE.
*
* Returns:
*
* BtStatus
*/
BtStatus HF_SetMasterRole(HfChannel *Chan, int Flag);
//#define HF_SetMasterRole(c, f) CMGR_SetMasterRole(&((c)->cmgrHandler), f)
/*---------------------------------------------------------------------------
* HF_SetSupportedFeature()
*
* This function set local hf supported features.
*
* Parameters:
*
* feature - bit mask of hf feature.
*
* Returns:
*
* NULL
*/
void HF_SetSupportedFeature(uint16_t feature);
/*---------------------------------------------------------------------------
* HF_GetSupportedFeature()
*
* This function get local hf supported features.
*
* Parameters:
*
* NULL.
*
* Returns:
*
* hf supported feature
*/
uint16_t HF_GetSupportedFeature(void);
#endif /* __HF_H_ */