找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

楼主: lulu7320198

[QCC3系列] QCC3020 earbud如何修改对耳连接失败后进手机配对?

[复制链接]
连续签到天数:1天
签到总天数:88天
签到总奖励:739金币
发表于 2020-2-24 12:18:49 | 显示全部楼层
怎么样解决
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

暂无签到数据

发表于 2020-3-5 16:24:17 | 显示全部楼层
分享个人对这问题的解法.
1. ruleConnectHandset()
对耳连接失败后不放弃这个rule
            /* Peer sync is not complete but not in progress */
#if 0
            if (reason == RULE_CONNECT_USER)
            {
                profiles |= DEVICE_PROFILE_HFP | DEVICE_PROFILE_A2DP;
                RULE_LOG("ruleConnectHandset, run as user connect, despite peer sync fail");
                return RULE_ACTION_RUN_PARAM(profiles);
            }
            else
            {
                RULE_LOG("ruleConnectHandset, ignore as peer sync has failed");
                return RULE_ACTION_IGNORE;
            }
#else
            profiles |= DEVICE_PROFILE_HFP | DEVICE_PROFILE_A2DP;
            RULE_LOG("ruleConnectHandset, run as user connect, despite peer sync fail");
            return RULE_ACTION_RUN_PARAM(profiles);
#endif

2. appA2dpHandleA2dpSignallingConnectConfirm()
手机连接失败时, 转入pair
                        /* Play error tone */
                        appUiAvError(theInst->a2dp.flags & A2DP_CONNECT_SILENT_ERROR);

                        if (!appDeviceIsPeer(&theInst->bd_addr))
                        {
                            appSmPairHandset();
                        }
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:981天
签到总奖励:16663金币
发表于 2020-3-5 18:06:58 | 显示全部楼层
按着下面两条规则来做就行,规则判定函数需要你自己慢慢去修改调试

RULE(RULE_EVENT_STARTUP,                    rulePeerPair,               CONN_RULES_PEER_PAIR),
        RULE(RULE_EVENT_STARTUP,                    rulePeerSync,               CONN_RULES_SEND_PEER_SYNC),
        RULE(RULE_EVENT_STARTUP,                                ruleAutoHandsetPair,        CONN_RULES_HANDSET_PAIR),
        RULE(RULE_EVENT_STARTUP,                    ruleOutOfCaseAllowHandsetConnect,   CONN_RULES_ALLOW_HANDSET_CONNECT),       
        RULE(RULE_EVENT_STARTUP,                          ruleOutOfCaseConnectPeer,           CONN_RULES_CONNECT_PEER),
        RULE_WITH_FLAGS(RULE_EVENT_STARTUP,                    ruleOutOfCaseConnectHandset,     CONN_RULES_CONNECT_HANDSET,     RULE_FLAG_PROGRESS_MATTERS),


RULE(RULE_EVENT_OUT_CASE,                   rulePeerPair,                               CONN_RULES_PEER_PAIR),       
    RULE(RULE_EVENT_OUT_CASE,                   rulePeerSync,                       CONN_RULES_SEND_PEER_SYNC),
        RULE(RULE_EVENT_OUT_CASE,                   ruleAutoHandsetPair,                CONN_RULES_HANDSET_PAIR),
    RULE(RULE_EVENT_OUT_CASE,                   ruleOutOfCaseAllowHandsetConnect,   CONN_RULES_ALLOW_HANDSET_CONNECT),   
    RULE(RULE_EVENT_OUT_CASE,                   ruleOutOfCaseConnectPeer,           CONN_RULES_CONNECT_PEER),
    RULE_WITH_FLAGS(RULE_EVENT_OUT_CASE,        ruleOutOfCaseConnectHandset,        CONN_RULES_CONNECT_HANDSET, RULE_FLAG_PROGRESS_MATTERS),
    RULE(RULE_EVENT_OUT_CASE,                   ruleOutOfCaseAncTuning,             CONN_RULES_ANC_TUNING_STOP),
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

暂无签到数据

发表于 2020-3-6 09:53:48 | 显示全部楼层
zhaopeng2511 发表于 2020-3-5 18:06
按着下面两条规则来做就行,规则判定函数需要你自己慢慢去修改调试

RULE(RULE_EVENT_STARTUP,           ...

试过了, 如果没配对手机纪录, 这样做确实可单耳进入pair, 如果有纪录, headset连线fail不会进到pair, 或许应该在加RULE_EVENT_PEER_SYNC_FAILED这个rule.
改rule的确是此架构的精神, 所以如果rule有办法解决能不改代码就不改
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:981天
签到总奖励:16663金币
发表于 2020-3-6 16:18:29 | 显示全部楼层
黃子衡 发表于 2020-3-6 09:53
试过了, 如果没配对手机纪录, 这样做确实可单耳进入pair, 如果有纪录, headset连线fail不会进到pair, 或 ...

rule不能执行说明被rule判定函数挡掉了,只能改rule判定函数。想做好做稳就得这么干,可以说rule规则判定函数里面其它还有很多不合理的地方,这个必须花时间慢慢去优化。你不遵循rule规则去改,而通过代码强制去实现,很容易和rule则里的操作想冲突,改动越多新bug可能就越多,要么就像你说的尽量不改。你自己看着弄吧
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

暂无签到数据

发表于 2020-3-7 10:45:56 | 显示全部楼层
zhaopeng2511 发表于 2020-3-6 16:18
rule不能执行说明被rule判定函数挡掉了,只能改rule判定函数。想做好做稳就得这么干,可以说rule规则判定 ...

是的, rule判定函数就会卡到单耳的问题, 但如果片面移除限制, 又会导致未进行配耳就超前运行其他action, 所以说, 这rule说穿了是一个比较有架构的state machine, 但似乎缺乏一些弹性.
以目前我的改法已能满足单耳的需要.
但目前还剩下一个问题.
当耳机无配对纪录时, 又是单耳状态, 不会尝试进行connect headset, 所以小弟还在想办法解决.
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:20天
签到总天数:2300天
签到总奖励:83636金币
发表于 2020-5-7 17:42:36 | 显示全部楼层
记录下
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:32天
签到总奖励:273金币
发表于 2020-5-11 10:46:25 | 显示全部楼层
看高手过招
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:56天
签到总奖励:351金币
发表于 2020-6-8 15:36:47 | 显示全部楼层
问一下老兄,appConfigAutoPeerPairingTimeout()是控制对等耳机配对的超时吗,与appConfigPeerPairingTimeout()有什么区别呢,为什么我添加了appSmPairHandset()或者SM_INTERNAL_PAIR_HANDSET的事件,但都不能超时进入手机配对。请问你如何添加的呢
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

连续签到天数:1天
签到总天数:127天
签到总奖励:869金币
 楼主| 发表于 2020-6-15 10:02:42 | 显示全部楼层
大哥救救我 发表于 2020-6-8 15:36
问一下老兄,appConfigAutoPeerPairingTimeout()是控制对等耳机配对的超时吗,与appConfigPeerPairingTimeo ...

这个配对不能乱加的,会出现一堆乱七八糟的问题,要按流程来
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-25 23:52 , Processed in 3.639712 second(s), 19 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表