蓝牙耳机添加区分左右耳代码段

  中科蓝讯的SDK里面貌似没有关于左右耳的标志位或者变量,但是又有客户希望在不改动硬件的时候区分左右耳,这个时候需要自己定义一个变量来完全这个区分。

1.在bsp_piano.h声明一个全局变量

extern u8 get_tws_chanl;

2.在bsp_warning_play定义为0

u8 get_tws_chanl=0;

3.在程序执行到播报提示音的时候,左右声道是不一样的,这个时候可以区分左右耳,
右耳:get_tws_chanl=1; 左耳: get_tws_chanl=2;

case T_WARNING_RIGHT_CH:
        sbcplay_cb.buf = (u8 *)RES_BUF_RIGHT_CH_SBC;
        sbcplay_cb.len = RES_LEN_RIGHT_CH_SBC;
        printf("T_WARNING_RIGHT_CH\n");
        get_tws_chanl=1;
        break;

    case T_WARNING_LEFT_CH:
        sbcplay_cb.buf = (u8 *)RES_BUF_LEFT_CH_SBC;
        sbcplay_cb.len = RES_LEN_LEFT_CH_SBC;
        printf("T_WARNING_LEFT_CH\n");
        get_tws_chanl=2;
        break;

4.以左/右耳长按加/减音量为例

 case KH_PLAY_PWR_USER_DEF:
        printf("get_tws_chanl=%d\n",get_tws_chanl);
        if(get_tws_chanl == 1)//右声道
            {                //case KH_VOL_DOWN:
             printf("tws_left_channel\n");
                    bsp_set_volume(bsp_volume_dec(sys_cb.vol));
                    if (func_cb.set_vol_callback) {
                        func_cb.set_vol_callback(0);
                    }
                    if ((BT_HID_VOL_CTRL_EN) && (!bt_is_testmode())&&(bt_is_ios_device())) {
                    bt_hid_consumer(HID_KEY_VOL_DOWN);
                    } else {
                    bsp_bt_vol_change();
                    }
                    //bsp_bt_vol_change();
#if WARNING_MIN_VOLUME
                    if (sys_cb.vol == 0) {
                        minvol_tone_play();
                        msg_queue_clear();
                    }
#endif // WARNING_MIN_VOLUME
            }

            if(get_tws_chanl == 2)  //左声道
            {
                printf("get_tws_chanl == 2\n");
                     bsp_set_volume(bsp_volume_inc(sys_cb.vol));
                     if (func_cb.set_vol_callback) {
                        func_cb.set_vol_callback(1);
                    }
    //                bsp_bt_vol_change();

                    if ((BT_HID_VOL_CTRL_EN) && (!bt_is_testmode())&&(bt_is_ios_device())) {
                    bt_hid_consumer(HID_KEY_VOL_UP);
                    } else {
                    bsp_bt_vol_change();
                    }
#if WARNING_MAX_VOLUME
                    if (sys_cb.vol == VOL_MAX) {
                        sys_warning_play(T_WARNING_MAX_VOL, PIANO_MAX_VOL);
                        msg_queue_clear();
                    }
#endif // WARNING_MAX_VOLUME
            }   

更新 20191226
76A有个标志位可以判断左右耳

static void func_bt_tws_set_channel(void)
{
    u8 left_channel = func_bt_tws_get_channel();
    if (left_channel != 2) {
        dac_mono_init(0, left_channel);
    } else {
        dac_mono_init(1, 0);
    }
}
发布了65 篇原创文章 · 获赞 36 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_40860986/article/details/100612813