summaryrefslogtreecommitdiffstats
path: root/drivers/hfpmodem
diff options
context:
space:
mode:
authorFrédéric Danis <frederic.danis@linux.intel.com>2011-08-08 16:34:40 +0200
committerDenis Kenzior <denkenz@gmail.com>2011-08-08 10:16:21 -0500
commitb8730eb47d97e84ef578dc2f527f6dd51d52ff12 (patch)
treeadf0951263af9087c8eeb64b39d91c4a917b09c6 /drivers/hfpmodem
parent41c8b30ce6ad529ddeef464074aa127fab114299 (diff)
downloadofono-b8730eb47d97e84ef578dc2f527f6dd51d52ff12.tar.bz2
hfpmodem: fix hf features
check audio gateway version and only set right features
Diffstat (limited to 'drivers/hfpmodem')
-rw-r--r--drivers/hfpmodem/slc.c7
-rw-r--r--drivers/hfpmodem/slc.h5
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/hfpmodem/slc.c b/drivers/hfpmodem/slc.c
index f9eca22d..4028479d 100644
--- a/drivers/hfpmodem/slc.c
+++ b/drivers/hfpmodem/slc.c
@@ -52,7 +52,7 @@ struct slc_establish_data {
gpointer userdata;
};
-void hfp_slc_info_init(struct hfp_slc_info *info)
+void hfp_slc_info_init(struct hfp_slc_info *info, guint16 version)
{
info->ag_features = 0;
info->ag_mpty_features = 0;
@@ -60,9 +60,14 @@ void hfp_slc_info_init(struct hfp_slc_info *info)
info->hf_features = HFP_HF_FEATURE_3WAY;
info->hf_features |= HFP_HF_FEATURE_CLIP;
info->hf_features |= HFP_HF_FEATURE_REMOTE_VOLUME_CONTROL;
+
+ if (version < HFP_VERSION_1_5)
+ goto done;
+
info->hf_features |= HFP_HF_FEATURE_ENHANCED_CALL_STATUS;
info->hf_features |= HFP_HF_FEATURE_ENHANCED_CALL_CONTROL;
+done:
memset(info->cind_val, 0, sizeof(info->cind_val));
memset(info->cind_pos, 0, sizeof(info->cind_pos));
}
diff --git a/drivers/hfpmodem/slc.h b/drivers/hfpmodem/slc.h
index f37a59c2..6c2302cf 100644
--- a/drivers/hfpmodem/slc.h
+++ b/drivers/hfpmodem/slc.h
@@ -27,6 +27,9 @@
#define AG_CHLD_3 0x20
#define AG_CHLD_4 0x40
+#define HFP_VERSION_1_5 0x0105
+#define HFP_VERSION_LATEST 0xFFFF
+
enum hfp_indicator {
HFP_INDICATOR_SERVICE = 0,
HFP_INDICATOR_CALL,
@@ -49,7 +52,7 @@ struct hfp_slc_info {
unsigned int cind_val[HFP_INDICATOR_LAST];
};
-void hfp_slc_info_init(struct hfp_slc_info *info);
+void hfp_slc_info_init(struct hfp_slc_info *info, guint16 version);
void hfp_slc_info_free(struct hfp_slc_info *info);
void hfp_slc_establish(struct hfp_slc_info *info, hfp_slc_cb_t connect_cb,