QCC51xx系列开发之inband ring功能关闭处理

客户问如何禁止来电时耳机端播放的手机铃声,只播放耳机端默认铃声?
1、答案适用范围
     a、以下解释支持芯片CSR8670/5、QCC300X、QCC302X、QCC512X

     b、支持ADK4.x、ADK6.2+、ADK1.0 Sink Project

2、什么是in-band铃声
     简单说就是同苹果铃声一样的,来电时手机端设置铃声将会发送到耳机端播放。Android8版本以后也已经支持。较新版本的手机都支持该功能。

3、耳机端如何识别确认是否支持该功能
      默认配置耳机端是支持该功能的。在HFP init时ag_supported_features直接赋值AG_IN_BAND_RING

4、关闭功能实现代码
代码只是强制关闭了该功能。可在此基础上按照各自需求调整效果.依此为基础同理可以去推导如何强制去开启inband ring.

--- sink_audio_routing.c    2017-11-08 12:40:04.000000000 +0800
+++ sink_audio_routing.c    2019-07-15 14:39:28.000000000 +0800
@@ -1836,13 +1836,13 @@
                 AUD_DEBUG(("AUD: route - sec > pri = [%d] [%d] :\n" , primary_priority, secondary_priority)) ;
                 priority_sink = sco_sink_secondary;
             }
         }
     }
     /* primary AG call + sco only? or pri sco and voice dial is active? */
-    else if( sco_sink_primary &&
+    else if( sco_sink_primary && (call_state_primary != hfp_call_state_incoming) &&
             ((call_state_primary > hfp_call_state_idle)||(sinkHfpDataGetVoiceRecognitionIsActive())))
     {
         AUD_DEBUG(("AUD: AG1 sco\n"));
         /* AG1 (primary) call with sco only */
         priority_sink = sco_sink_primary;
     }
@@ -2363,12 +2363,15 @@
 
 RETURNS
     true if sco routed, false if no sco routable
 */
 bool audioRouteScoOutsideOfCallIfAvailable(void)
 {
+    Sink sco_sink_to_route = audioGetActiveScoSink();
+   if(sco_sink_to_route)
+   {
     if(!sinkAudioIsVoiceRouted() && !sinkAudioIsAudioRouted())
     {
         Sink sink_to_route = sinkCallManagerGetHfpSink(hfp_primary_link);
         if(!sink_to_route)
         {
             sink_to_route = sinkCallManagerGetHfpSink(hfp_secondary_link);
@@ -2377,11 +2380,13 @@
                    sinkCallManagerGetHfpCallState(hfp_primary_link),
                    sinkCallManagerGetHfpCallState(hfp_secondary_link),
                    (void *) sinkCallManagerGetHfpSink(hfp_primary_link),
                    (void *) sinkCallManagerGetHfpSink(hfp_secondary_link))) ;
         return audioRouteScoSink(sink_to_route);
+       }
     }
     return FALSE;
 }
 
 static hfp_link_priority getHfpLinkIndexFromA2dpPriority(a2dp_link_priority priority)
 {
--- sink_callmanager.c  2017-11-08 12:40:06.000000000 +0800
+++ sink_callmanager.c  2019-07-15 15:05:52.000000000 +0800
@@ -56,13 +57,13 @@
     {
         /*  Determine which AG has the outband ring (if applicable) and play
            appropriate tone. */
 #ifdef ENABLE_SPEECH_RECOGNITION
         if((!pInd->in_band)&&(!speechRecognitionIsEnabled()))
 #else
-        if(!pInd->in_band)
+        if(!pInd->in_band || TRUE)
 #endif
         {
              /* determine whether this is AG1 or AG2 and play appropriate tone */
              if(pInd->priority == hfp_primary_link)
              {
                    CM_DEBUG(("CM: OutBandRing - AG1 play ring 1\n")) ;

 


★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论