Dialog 1.08 SDK 实战 —— 添加新的Sevice

查看了一下官方的Service,发现一个Serial Port Service。非常适合做自定义的数据传输。

首先,包含头文件,定义一系列回调函数, 增加服务。

        ddc_cb.rx_data = ddc_rx_data_cb;
        ddc_cb.set_flow_control = ddc_ctrl_key_cb;
        ddc_cb.tx_done = ddc_tx_done_cb;


        ddc = sps_init(&ddc_cb);
        ble_service_add(ddc);

服务指针是全局变量,因为后面主动传输数据需要用到。不需要主动传输数据的服务一般不需要保存全局变量。

在回调函数中,如ddc_rx_data_cb,可以对数据进行处理,并进行相关操作。

在App处理连接等任务时,可以将Connect index保存用于后续数据传输时的参数。并启动定时发送数据的定时器。

               active_conn_idx = evt->conn_idx;
                OS_TIMER_START(sns_tim, OS_TIMER_FOREVER);

在手机上用BLE 测试工具就可以看到数据传输了。

然而,数据传输时发现一个问题。就是发现有延时。找了很多地方,后来发现主要是连接参数配置上可以优化。估计当时这个APP这么设计是为了功耗更好。

#if 0 //by zhw
#define defaultBLE_PPCP_INTERVAL_MIN            (BLE_CONN_INTERVAL_FROM_MS(500))    // 500 ms
#define defaultBLE_PPCP_INTERVAL_MAX            (BLE_CONN_INTERVAL_FROM_MS(750))    // 750 ms
#define defaultBLE_PPCP_SLAVE_LATENCY           (0)                                 // 0 events
#define defaultBLE_PPCP_SUP_TIMEOUT             (BLE_SUPERVISION_TMO_FROM_MS(6000)) // 6000 ms
#else
#define defaultBLE_PPCP_INTERVAL_MIN            (BLE_CONN_INTERVAL_FROM_MS(2.5))    // 2.5 ms
#define defaultBLE_PPCP_INTERVAL_MAX            (BLE_CONN_INTERVAL_FROM_MS(5))    // 7.5 ms
#define defaultBLE_PPCP_SLAVE_LATENCY           (0)                                 // 0 events
#define defaultBLE_PPCP_SUP_TIMEOUT             (BLE_SUPERVISION_TMO_FROM_MS(200)) // 100 ms
#endif

改完就正常了,数据可以即时响应。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值