/*
|
* BlueALSA - hfp.h
|
* Copyright (c) 2016-2018 Arkadiusz Bokowy
|
* 2017 Juha Kuikka
|
*
|
* This file is a part of bluez-alsa.
|
*
|
* This project is licensed under the terms of the MIT license.
|
*
|
*/
|
|
#ifndef BLUEALSA_HFP_H_
|
#define BLUEALSA_HFP_H_
|
|
/* HFP codec IDs */
|
#define HFP_CODEC_UNDEFINED 0x00
|
#define HFP_CODEC_CVSD 0x01
|
#define HFP_CODEC_MSBC 0x02
|
|
/* SDP AG feature flags */
|
#define SDP_HFP_AG_FEAT_TWC (1 << 0)
|
#define SDP_HFP_AG_FEAT_ECNR (1 << 1)
|
#define SDP_HFP_AG_FEAT_VREC (1 << 2)
|
#define SDP_HFP_AG_FEAT_RING (1 << 3)
|
#define SDP_HFP_AG_FEAT_VTAG (1 << 4)
|
#define SDP_HFP_AG_FEAT_WBAND (1 << 5)
|
|
/* SDP HF feature flags */
|
#define SDP_HFP_HF_FEAT_ECNR (1 << 0)
|
#define SDP_HFP_HF_FEAT_TWC (1 << 1)
|
#define SDP_HFP_HF_FEAT_CLI (1 << 2)
|
#define SDP_HFP_HF_FEAT_VREC (1 << 3)
|
#define SDP_HFP_HF_FEAT_VOLUME (1 << 4)
|
#define SDP_HFP_HF_FEAT_WBAND (1 << 5)
|
|
/* AG feature flags */
|
#define HFP_AG_FEAT_TWC (1 << 0)
|
#define HFP_AG_FEAT_ECNR (1 << 1)
|
#define HFP_AG_FEAT_VREC (1 << 2)
|
#define HFP_AG_FEAT_RING (1 << 3)
|
#define HFP_AG_FEAT_VTAG (1 << 4)
|
#define HFP_AG_FEAT_REJECT (1 << 5)
|
#define HFP_AG_FEAT_ECS (1 << 6)
|
#define HFP_AG_FEAT_ECC (1 << 7)
|
#define HFP_AG_FEAT_EERC (1 << 8)
|
#define HFP_AG_FEAT_CODEC (1 << 9)
|
#define HFP_AG_FEAT_HFIND (1 << 10)
|
#define HFP_AG_FEAT_ESOC (1 << 11)
|
|
/* HF feature flags */
|
#define HFP_HF_FEAT_ECNR (1 << 0)
|
#define HFP_HF_FEAT_TWC (1 << 1)
|
#define HFP_HF_FEAT_CLI (1 << 2)
|
#define HFP_HF_FEAT_VREC (1 << 3)
|
#define HFP_HF_FEAT_VOLUME (1 << 4)
|
#define HFP_HF_FEAT_ECS (1 << 5)
|
#define HFP_HF_FEAT_ECC (1 << 6)
|
#define HFP_HF_FEAT_CODEC (1 << 7)
|
#define HFP_HF_FEAT_HFIND (1 << 8)
|
#define HFP_HF_FEAT_ESOC (1 << 9)
|
|
/* Apple's extension feature flags */
|
#define XAPL_FEATURE_BATTERY (1 << 1)
|
#define XAPL_FEATURE_DOCKING (1 << 2)
|
#define XAPL_FEATURE_SIRI (1 << 3)
|
#define XAPL_FEATURE_DENOISE (1 << 4)
|
|
/**
|
* HFP Connection States */
|
enum __attribute__ ((packed)) hfp_state {
|
HFP_DISCONNECTED,
|
HFP_SLC_BRSF_SET,
|
HFP_SLC_BRSF_SET_OK,
|
HFP_SLC_BAC_SET_OK,
|
HFP_SLC_CIND_TEST,
|
HFP_SLC_CIND_TEST_OK,
|
HFP_SLC_CIND_GET,
|
HFP_SLC_CIND_GET_OK,
|
HFP_SLC_CMER_SET_OK,
|
/* Established Service Level Connection */
|
HFP_SLC_CONNECTED,
|
HFP_CC_BCS_SET,
|
HFP_CC_BCS_SET_OK,
|
/* Established Codec Connection */
|
HFP_CC_CONNECTED,
|
HFP_CONNECTED,
|
};
|
|
/**
|
* HFP Indicators */
|
enum __attribute__ ((packed)) hfp_ind {
|
HFP_IND_NULL = 0,
|
HFP_IND_SERVICE,
|
HFP_IND_CALL,
|
HFP_IND_CALLSETUP,
|
HFP_IND_CALLHELD,
|
HFP_IND_SIGNAL,
|
HFP_IND_ROAM,
|
HFP_IND_BATTCHG,
|
__HFP_IND_MAX
|
};
|
|
/* no Home/Roam network available */
|
#define HFP_IND_SERVICE_NONE 0
|
/* Home/Roam network available */
|
#define HFP_IND_SERVICE_ACTIVE 1
|
/* no calls in progress */
|
#define HFP_IND_CALL_NONE 0
|
/* at least one call is in progress */
|
#define HFP_IND_CALL_ACTIVE 1
|
/* currently not in call set up */
|
#define HFP_IND_CALLSETUP_NONE 0
|
/* an incoming call process ongoing */
|
#define HFP_IND_CALLSETUP_IN 1
|
/* an outgoing call set up is ongoing */
|
#define HFP_IND_CALLSETUP_OUT 2
|
/* remote party being alerted in an outgoing call */
|
#define HFP_IND_CALLSETUP_OUT_ALERT 3
|
/* no calls held */
|
#define HFP_IND_CALLHELD_NONE 0
|
/* call on hold with other active call */
|
#define HFP_IND_CALLHELD_SWAP 1
|
/* call on hold, no active call */
|
#define HFP_IND_CALLHELD_HOLD 2
|
/* roaming is not active */
|
#define HFP_IND_ROAM_NONE 0
|
/* a roaming is active */
|
#define HFP_IND_ROAM_ACTIVE 1
|
|
#endif
|