基于W801开发板 蓝牙 ble HID实现(借鉴于@带着蜗牛去散步)

蓝牙hid协议:

蓝牙ble通过软件实现 HID,需要实现两个方面,广播和服务及特性

广播,HID广播数据要求如下

int wm_ble_server_api_demo_adv(bool enable)
{
    int rc;
    
    if(enable)
    {
        struct ble_hs_adv_fields fields;
        const char *name;
        
        /**
         *  	Set the advertisement data included in our advertisements:
         *     o Flags (indicates advertisement type and other general info).
         *     o Device name.
         *     o user specific field (winner micro).
         */
        
        memset(&fields, 0, sizeof fields);
        
        /* Advertise two flags:
         *     o Discoverability in forthcoming advertisement (general)
         *     o BLE-only (BR/EDR unsupported).
         */
        fields.flags = BLE_HS_ADV_F_DISC_GEN |
                       BLE_HS_ADV_F_BREDR_UNSUP;
        
        
        name = "mykeybord8"; // = ble_svc_gap_device_name();
        fields.name = (uint8_t *)name;
        fields.name_len = strlen(name);
        fields.name_is_complete = 1;
        
        fields.uuids16 = (ble_uuid16_t[]){
            BLE_UUID16_INIT(WM_GATT_HID_UUID)
        };
		fields.num_uuids16 = 1;
        fields.uuids16_is_complete = 1;
		fields.appearance = WM_KEYBOARD_ASPECT; //键盘外观
        fields.appearance_is_present = 1;
        rc = ble_gap_adv_set_fields(&fields);
		
        if (rc != 0) {
            TLS_BT_APPL_TRACE_ERROR("error setting advertisement data; rc=%d\r\n", rc);
            return rc;
        }
        
        /* As own address type we use hard-coded value, because we generate
              NRPA and by definition it's random */
        rc = tls_nimble_gap_adv(WM_BLE_ADV_IND, 0);
		if(rc!=0){
			TLS_BT_APPL_TRACE_ERROR("tls_nimble_gap_adv; rc=%d\r\n",rc);
			return rc;
		}
        assert(rc == 0);

    }else
    {
   
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值