当前位置: 首页 > news >正文

昌吉做58网站的宁波男科医院

昌吉做58网站的,宁波男科医院,成都app开发解决方案,wordpress自动广告位设备管理的接口实现了蓝牙的开/关、属性设置、发现设备、获取profile的接口等等。 接口声明 接口声明如下#xff1a; // include/hardware/bluetooth.h typedef struct {// 打开接口并注册回调函数int (*init)(bt_callbacks_t* callbacks, bool is_atv);// 关闭接口void (…设备管理的接口实现了蓝牙的开/关、属性设置、发现设备、获取profile的接口等等。 接口声明 接口声明如下 // include/hardware/bluetooth.h typedef struct {// 打开接口并注册回调函数int (*init)(bt_callbacks_t* callbacks, bool is_atv);// 关闭接口void (*cleanup)(void);// 打开蓝牙int (*enable)(bool guest_mode);// 关闭蓝牙int (*disable)(void);// 获取所有属性int (*get_adapter_properties)(void);// 获取指定type的属性int (*get_adapter_property)(bt_property_type_t type);// 设置属性int (*set_adapter_property)(const bt_property_t* property);// 获取指定对端设备的所有属性int (*get_remote_device_properties)(RawAddress* remote_addr);// 获取指定对端设备的指定属性int (*get_remote_device_property)(RawAddress* remote_addr, bt_property_type_t type);// 设置指定对端设备的属性int (*set_remote_device_property)(RawAddress* remote_addr, const bt_property_t* property);// 获取对端设备指定UUID的服务int (*get_remote_service_record)(const RawAddress remote_addr,const bluetooth::Uuid uuid);// 获取对端设备所有服务int (*get_remote_services)(RawAddress* remote_addr);// 开始扫描周围的设备int (*start_discovery)(void);// 取消扫描int (*cancel_discovery)(void);// 发起配对int (*create_bond)(const RawAddress* bd_addr, int transport);int (*create_bond_out_of_band)(const RawAddress* bd_addr, int transport, const bt_out_of_band_data_t* oob_data);// 删除已配对设备int (*remove_bond)(const RawAddress* bd_addr);// 取消配对int (*cancel_bond)(const RawAddress* bd_addr);// 获取制定设备的连接状态int (*get_connection_state)(const RawAddress* bd_addr);// 传统配对的pincode 输入int (*pin_reply)(const RawAddress* bd_addr, uint8_t accept, uint8_t pin_len, bt_pin_code_t* pin_code);// 简单安全配对的 pass key输入包括Just Works, Numeric Comparison, Passkeyint (*ssp_reply)(const RawAddress* bd_addr, bt_ssp_variant_t variant, uint8_t accept, uint32_t passkey);// 获取profile的interfaceconst void* (*get_profile_interface)(const char* profile_id);bluetooth::avrcp::ServiceInterface* (*get_avrcp_service)(void);... } bt_interface_t;typedef struct {// 蓝牙打开/关闭时状态变化BT_STATE_OFF、BT_STATE_ONadapter_state_changed_callback adapter_state_changed_cb;// 获取/设置属性时回调adapter_properties_callback adapter_properties_cb;// 获取/设置对端设备属性时回调remote_device_properties_callback remote_device_properties_cb;// 发现设备时回调device_found_callback device_found_cb;// 发现状态变化时回调BT_DISCOVERY_STOPPED、BT_DISCOVERY_STARTEDdiscovery_state_changed_callback discovery_state_changed_cb;// 传统配对 请求pincode时回调通过bt_interface_t中的pin_reply向协议栈设置pincodepin_request_callback pin_request_cb;// 简单安全配对 请求passkey时回调通过bt_interface_t中的ssp_reply向协议栈设置passkeyssp_request_callback ssp_request_cb;// 绑定状态变化时回调主要是create_bond, cancel_bond, remove_bond几个函数调用时bond_state_changed_callback bond_state_changed_cb;// ACL连接状态变化acl_state_changed_callback acl_state_changed_cb;... } bt_callbacks_t;bt_callbacks_t在framwork中实现调用init函数时注册到协议栈。bt_interface_t在btif/src/bluetooth.cc中实现对外提供的名称时bluetoothInterface。 #define BLUETOOTH_INTERFACE_STRING bluetoothInterfaceEXPORT_SYMBOL bt_interface_t bluetoothInterface {sizeof(bluetoothInterface),init,enable,disable,cleanup,get_adapter_properties,get_adapter_property,set_adapter_property,get_remote_device_properties,get_remote_device_property,set_remote_device_property,get_remote_service_record,get_remote_services,start_discovery,cancel_discovery,create_bond,create_bond_out_of_band,remove_bond,cancel_bond,get_connection_state,pin_reply,ssp_reply,get_profile_interface,dut_mode_configure,dut_mode_send,le_test_mode,set_os_callouts,read_energy_info,dump,dumpMetrics,config_clear,interop_database_clear,interop_database_add,get_avrcp_service, };接下来将重点梳理几个接口其他接口也是类似的。 init() init()- stack_manager_get_interface()-init_stack()- event_init_stack()- btif_init_bluetooth()- bte_main_boot_entry()- hci_layer_get_interface()-set_data_cb(post_to_hci_message_loop)- run_message_loop()init 接口通过set_data_cb向hci层注册了收到HCI数据包的回调后续协议栈接收hci的数据都是通过这个回调然后启动一个message loop。此外init函数中还加载了一些动态库在此处不具体列出。 enable() // 上层调用 enable()- stack_manager_get_interface()-start_up_stack_async()- bte_main_enable()- event_signal_stack_up()- callback-adapter_state_changed_cb(BT_STATE_ON)// bte_main_enable中初始化协议栈完成后调用 - btif_init_ok()- BTA_EnableBluetooth(bte_dm_evt)打开蓝牙分两个部分 协议栈的各个模块和profile初始化入口为bte_main_enable蓝牙服务启动同时注册dm 事件的回调 get_adapter_properties、get_adapter_property、set_adapter_property // 获取所有属性 get_adapter_properties()- btif_get_adapter_properties()- execute_storage_request(BTIF_CORE_STORAGE_ADAPTER_READ_ALL)- btif_in_get_adapter_properties()- btif_storage_get_adapter_property()- btif_storage_get_adapter_property()- bt_callbacks_t::adapter_properties_cb()// 获取指定属性 get_adapter_property(type)- btif_get_adapter_property(type)- execute_storage_request(BTIF_CORE_STORAGE_ADAPTER_READ)- btif_storage_get_adapter_property()- bt_callbacks_t::adapter_properties_cb()// 设置指定属性 set_adapter_property()- btif_set_adapter_property()- case BT_PROPERTY_BDNAME:- BTA_DmSetDeviceName()- case BT_PROPERTY_ADAPTER_SCAN_MODE:- BTA_DmSetVisibility()- case BT_PROPERTY_xxx:- execute_storage_request(BTIF_CORE_STORAGE_ADAPTER_WRITE)- btif_storage_set_adapter_property()- bt_callbacks_t::adapter_properties_cb()属性获取主要是从本次存储的配置文件中获取设置时会先设置到蓝牙协议栈然后保存到配置文件中对端设备属性的设置与获取也是类似的此处不具体列出。 支持的属性类型如下 typedef enum {/*******************************以上类型是本地设备和对端设备共用*********************************/// 设备名称本地设备的可以获取/设置对端设备的只能获取BT_PROPERTY_BDNAME 0x1,// 设备地址 只能获取BT_PROPERTY_BDADDR,// 服务的UUID, 只能获取BT_PROPERTY_UUIDS,// BR/EDR设备类别只能获取BT_PROPERTY_CLASS_OF_DEVICE,// 蓝牙类型BREDR, BLE, DUAL Mode, 只能获取BT_PROPERTY_TYPE_OF_DEVICE,// 服务记录 只能获取BT_PROPERTY_SERVICE_RECORD,/******************************************************************************************//***********************************以下类型是仅本地设备使用***********************************/// 扫描模式可获取/设置BT_PROPERTY_ADAPTER_SCAN_MODE,// 已绑定/配对的设备列表只能获取BT_PROPERTY_ADAPTER_BONDED_DEVICES,// 扫描超时时间可以获取/设置BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT,/***********************************以下类型是仅对端设备使用***********************************/// 可读性高的设备名称可获取/设置BT_PROPERTY_REMOTE_FRIENDLY_NAME,// 信号强度只能获取BT_PROPERTY_REMOTE_RSSI,// 版本信息可获取/设置BT_PROPERTY_REMOTE_VERSION_INFO,/******************************************************************************************/ } bt_property_type_t;start_discovery、cancel_discovery start_discovery()- btif_dm_start_discovery()- BTA_DmSearch(inq_params, services, bte_search_devices_evt)cancel_discovery()- btif_dm_cancel_discovery()- BTA_DmSearchCancel()bte_search_devices_evt()- btif_dm_search_devices_evt()- case BTA_DM_DISC_RES_EVT- btif_storage_set_remote_device_property()- bt_callbacks_t::remote_device_properties_cb()- case BTA_DM_INQ_RES_EVT- btif_storage_add_remote_device()- bt_callbacks_t::device_found_cb()- case BTA_DM_DISC_CMPL_EVT- bt_callbacks_t::discovery_state_changed_cb(BT_DISCOVERY_STOPPED)- case BTA_DM_SEARCH_CANCEL_CMPL_EVT- bt_callbacks_t::discovery_state_changed_cb(BT_DISCOVERY_STOPPED)发现周围设备和取消发现过程都是调用dm模块提供的api结果通过bte_search_devices_evt上报其中BTA_DM_DISC_RES_EVT事件表示是已发现设备的属性有更新BTA_DM_INQ_RES_EVT事件表示发现的是新的设备。 create_bond 发起配对请求。 create_bond()- btif_dm_create_bond()- btif_dm_generic_evt(BTIF_DM_CB_CREATE_BOND)- case BTIF_DM_CB_CREATE_BOND- btif_dm_cb_create_bond()- bond_state_changed()- bt_callbacks_t::bond_state_changed_cb(BT_BOND_STATE_BONDING)- BTA_DmBondByTransport()ssp_reply 简单安全配对时的reply包括Just Works, Numeric Comparison, Passkey Entry。 ssp_reply()- btif_dm_ssp_reply()- BTA_DmConfirm()bte_dm_evt 在调用enable打开蓝牙时注册了设备管理的事件处理回调bte_dm_evt其回调后处理流程如下 bte_dm_evt()- btif_dm_upstreams_evt()- case BTA_DM_ENABLE_EVT //打开蓝牙的事件- BTA_DmSetDeviceName()- btif_in_execute_service_request() //enable各个profile- btif_enable_bluetooth_evt()- bt_callbacks_t::adapter_properties_cb(BT_PROPERTY_BDADDR)- btif_sock_init()- btsock_rfc_init()- btsock_l2cap_init()- btsock_sco_init()- case BTA_DM_DISABLE_EVT //关闭蓝牙事件- btif_in_execute_service_request() //disable各个profile- btif_disable_bluetooth_evt()- bte_main_disable()- case BTA_DM_PIN_REQ_EVT //请求pincode获取- btif_dm_pin_req_evt()- bt_callbacks_t::pin_request_cb()- case BTA_DM_AUTH_CMPL_EVT // 身份认证完成事件- btif_dm_auth_cmpl_evt()- btif_storage_add_bonded_device()- bt_callbacks_t::bond_state_changed_cb(BT_BOND_STATE_BONDED)- case BTA_DM_SP_CFM_REQ_EVT //请求用户确认简单安全配对的事件- btif_dm_ssp_cfm_req_evt()- bt_callbacks_t::bond_state_changed_cb(BT_BOND_STATE_BONDING)- bt_callbacks_t::ssp_request_cb(BT_SSP_VARIANT_PASSKEY_CONFIRMATION)- case BTA_DM_SP_KEY_NOTIF_EVT // 简单安全配对的passkey通知事件- btif_dm_ssp_key_notif_evt()- bt_callbacks_t::bond_state_changed_cb(BT_BOND_STATE_BONDING)- ssp_request_cb(BT_SSP_VARIANT_PASSKEY_NOTIFICATION)- case BTA_DM_DEV_UNPAIRED_EVT // 解除配对事件- btif_storage_remove_bonded_device()- bt_callbacks_t::bond_state_changed_cb(BT_BOND_STATE_NONE)- case BTA_DM_LINK_UP_EVT //ACL连接事件- bt_callbacks_t::bond_state_changed_cb(BT_ACL_STATE_CONNECTED)- case BTA_DM_LINK_DOWN_EVT //ACL断开事件- bt_callbacks_t::bond_state_changed_cb(BT_ACL_STATE_DISCONNECTED)
http://www.pierceye.com/news/174702/

相关文章:

  • 共享ip服务器做网站如何把网站推广出
  • 网站开发标书范本免费模板下载网站推荐
  • 郑州品牌网站建设宿松县住房和城乡建设局网站
  • 电商网站开发与运营赣州爆炸事故
  • 牡丹区建设局网站黄骅贴吧最近发生的事
  • 手机一键建站北京公司网站建站
  • 做个简单网站大概多少钱广州联亨科技网站建设
  • 恺策网优 营销型网站建设品牌服务商在线html网站开发
  • 做seo要明白网站桂林生活网新闻
  • 网站建设供需武昌做网站哪家专业
  • 好看的电商网站模板网易对象存储wordpress
  • 上海工商网查询企业信息查询系统安卓优化大师app下载
  • 深圳网站快速备案亳州做网站
  • 个人网站如何建jsp做的网站源码
  • 竹子建站公司怎么在百度上创建自己的网页
  • 专门做恐怖电影网站电子商务网站建设 实验
  • 旅游网站案例遂宁网站建设公司哪家好
  • WordPress站群更新wordpress 图片命名吗
  • 网站建设最好的公司哪家好网站模板下载软件
  • 运输公司网站模板网站建设及使用
  • 哈尔滨cms模板建站网站建设天地心
  • 廊坊代运营公司广东网站se0优化公司
  • 西双版纳建设厅网站宁夏建网站报价
  • 网站优化分析软件手机端网站源码
  • 我想克隆个网站 怎么做网站 运营工作如何做
  • 承德网站制作公司哪家好如何选择邯郸网站建设
  • 网络分析的应用案例广东网络seo推广平台
  • 网站开发设计合同北京网站排名优化公司
  • 免费建立个人网站凡科怎么下载app
  • 网站题头是什么做线上网站需要钱吗