返回官网官方微博

麦步社区-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: MAI 表盘
查看: 7888|回复: 8
打印 上一主题 下一主题

蓝牙状态判断的代码示例,请需要的同学参考或完善

[复制链接]

2

主题

4

帖子

20

麦力

精华
0
阅读权限
20
在线时间
3 小时

楼主
发表于 2016-1-23 00:02:34 | 显示全部楼层
根据楼上的特工局代码,我增加了debounce时间以及振动次数的控制
// ~constay --~disdebounce-- disstart --~distimes*disinter-- disend -- ~disandconbt -- conend--~contimes*coninter--constart--~condebounce--disstay

#define CONSTAYNUM 3  // 一般不用动
#define DISDEBOUNCE 5  // 断开的debounce次数
#define DISSTARTNUM (CONSTAYNUM + DISDEBOUNCE)
#define DISVIBTIMES 3  //断开的振动次数
#define DISVIBINTER 2 // 断开的振动间隔
#define DISENDNUM (DISSTARTNUM + DISVIBTIMES*DISVIBINTER)
#define DISVIB 1  //断开是否振动
#define CONVIB 0 //连通是否振动
#define DISANDCONBT 4
#define CONENDNUM (DISENDNUM + DISANDCONBT)
#define CONDEBOUNCE 5 //连通的debounce次数
#define CONSTARTNUM (CONENDNUM + CONVIBTIMES*CONVIBINTER)
#define CONVIBTIMES 1 //连通的振动次数
#define CONVIBINTER 2 //连通的振动间隔
#define DISSTAYNUM (CONSTARTNUM + CONDEBOUNCE)
在表盘初始化的时候判断蓝牙状态后对变量赋值
enum AppCommStatus  ble_sta;

ble_sta = maibu_get_ble_status();  //获取蓝牙状态

if (ble_sta != BLE_STATUS_CONNECTED && ble_sta != BLE_STATUS_USING)   //如果蓝牙断开
        {
        ble_staus_event = DISSTAYNUM;
        }else
        {
                ble_staus_event = CONSTAYNUM;
        }

然后在注册的timer函数里面修改判断条件。
enum AppCommStatus  ble_sta;

ble_sta = maibu_get_ble_status();  //获取蓝牙状态

if (ble_sta != BLE_STATUS_CONNECTED && ble_sta != BLE_STATUS_USING)   //如果蓝牙断开
        {
                if ((ble_staus_event >= CONENDNUM) && (ble_staus_event < DISSTAYNUM))
                                ble_staus_event = CONSTAYNUM;
                ble_staus_event ++;

                if(ble_staus_event > DISSTAYNUM)
                {
                        ble_staus_event = DISSTAYNUM;
                        return;
                }
                if(ble_staus_event == DISSTARTNUM)
                {
                        // show disconnected picture
                        P_Layer p_ble_layer = app_window_get_layer_by_id(p_window, g_app_mwd_layer_ble_id);
                        if (NULL == p_ble_layer)
                        {
                                return;
                        }
                        GBitmap bitmap_ble2;
                        res_get_user_bitmap(BLE_DISCONNECTED, &bitmap_ble2);
                        app_layer_set_bitmap_bitmap(p_ble_layer, &bitmap_ble2);
                        app_window_update(p_window);
                }
                if(( ble_staus_event >= DISSTARTNUM ) && ( ble_staus_event < DISENDNUM ) && (DISVIB == 1))
                {
                        if(((ble_staus_event - DISSTARTNUM) % DISVIBINTER) == 0 )
                                maibu_service_vibes_pulse(VibesPulseTypeShort,1); //调用短振动1次,
                }
                if( ble_staus_event >= DISENDNUM)
                        ble_staus_event = DISSTAYNUM;
        }
        else if (ble_sta = BLE_STATUS_CONNECTED) //如果系统事件是蓝牙連接
        {
                        if ((ble_staus_event < DISENDNUM) && (ble_staus_event > CONSTAYNUM))
                                ble_staus_event = DISSTAYNUM;
                        ble_staus_event --;

                        if(ble_staus_event < CONSTAYNUM)
                        {
                                ble_staus_event = CONSTAYNUM;
                                return;
                        }       
                        if( ble_staus_event == CONSTARTNUM )
                        {
                                // show connected picture
                                P_Layer p_ble_layer = app_window_get_layer_by_id(p_window, g_app_mwd_layer_ble_id);
                                if (NULL == p_ble_layer)
                                {
                                        return;
                                }
                                GBitmap bitmap_ble2;       
                                ble_staus_event = 0;
                                res_get_user_bitmap(BLE_CONNECTED, &bitmap_ble2);
                                app_layer_set_bitmap_bitmap(p_ble_layer, &bitmap_ble2);
                                app_window_update(p_window);
                        }
                        if(( ble_staus_event <= CONSTARTNUM ) && ( ble_staus_event > CONENDNUM ) && (CONVIB == 1))
                        {
                                if((( CONSTARTNUM - ble_staus_event) % CONVIBINTER) == 0 )
                                        maibu_service_vibes_pulse(VibesPulseTypeShort,1); //调用短振动1次,
                        }
                        if( ble_staus_event <= CONENDNUM)
                                ble_staus_event = CONSTAYNUM;
        }       
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|麦步官方论坛 ( 粤ICP备12052190号  

GMT+8, 2024-5-3 19:40 , Processed in 0.067167 second(s), 23 queries .

Powered by Discuz! X3.2

© 2012-2021 Comsenz Inc.

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