CtsVerifier-Bluetooth-LE-SEcure-ClientServer-Test測試pass但是無法選擇PassButton

来源:https://www.cnblogs.com/houser0323/archive/2020/05/02/12819097.html
-Advertisement-
Play Games

【問題描述】 CtsVerifier Bluetooth LE SEcure ClientServer Test測試pass但是無法選擇Pass Button 工具版本:9.0 r11 其他信息: 上個版本正常,verifier版本相同 分析過程中結合代碼咨詢測試,印證只有Client無法選中,Se ...


【問題描述】

CtsVerifier-Bluetooth-LE-SEcure-ClientServer-Test測試pass但是無法選擇Pass-Button
工具版本:9.0-r11
其他信息:
上個版本正常,verifier版本相同
分析過程中結合代碼咨詢測試,印證只有Client無法選中,Server正常

【問題結論】

藍牙驅動修改引入,已定位回退,需要bsp進一步修改

verifier的該項測試流程:
Client測試pass後做出先關閉mAdapter.disable()後打開mAdapter.enable()的動作,
經梳理藍牙框流程發現,藍牙關閉後再次打開超時失敗,由此導致verifier的該項測試Activity無法收到廣播將按鈕設置為可選enable

AuthBlog:秋城https://www.cnblogs.com/houser0323

【分析詳細】

Bluetooth-LE-SEcure-ClientServer-Test

流程概述
1.啟動BleSecureClientStartActivity
該測試頁面只是一個activity-ui。主要的方法實現和流程動作都在父類Activity中,重點關註父類。
2.調用父類BleClientTestBaseActivity的onCreate()完成:
頁面顯示
設置底部pass-fail-button按鍵的監聽
設置pass-button為disable不可選
初始化頁面的測試項ListView
回到子類繼續onCreate():
顯示info提示信息的dialog
啟動BleClientService準備測試

3.調用父類BleClientTestBaseActivity的onResume():
註冊測試服務BleClientService的廣播監聽BroadcastReceiver mBroadcast

4.開始測試
這個測試是倆設備Server-Client配對測試,自動觸發,細節略,和Server端之間的藍牙通信有關
listview每一條測試結束都會有廣播發出,接收廣播後將mPassed做或運算,如果一切順利mPassed的運算結果是PASS_FLAG_ALL
這代表測試項全部通過

private static final int PASS_FLAG_ALL = 0x3FFFF;

然後Client端將藍牙關閉mAdapter.disable()再打開mAdapter.enable(),打開成功情況下Activity才會將Pass-Button設置為可選擇
由於驅動代碼出問題,遂enable()失敗,無法設置按鈕可選

測試代碼
1.測試Activity,提供ui無業務代碼
cts/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleSecureClientStartActivity.java
2.上面(1)的父類,測試結果處理
cts/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientTestBaseActivity.java
3.測試Service,真正的測試項執行
cts/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleClientService.java

關鍵日誌

測試All-PASS

04-21 16:52:05.901 D/BluetoothGatt( 6338): onClientConnectionState() - status=0 clientIf=6 device=7B:D0:42:AC:47:B6
04-21 16:52:05.901 D/BleClientService( 6338): onConnectionStateChange: status= 0, newState= 0
04-21 16:52:05.901 D/BluetoothGatt( 6338): close()
04-21 16:52:05.901 D/BluetoothGatt( 6338): unregisterApp() - mClientIf=6
04-21 16:52:05.915 D/BleClientTestBase( 6338): Processing com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_DISCONNECTED
04-21 16:52:05.921 D/BleClientTestBase( 6338): Passed Flags has changed from 0x0003FDFF to 0x0003FFFF. Delta=0x00000200
04-21 16:52:05.921 D/BleClientTestBase( 6338): All Tests Passed.

藍牙正常關閉

04-21 16:52:06.927 D/BluetoothManagerService( 3297): disable(): mBluetooth = android.bluetooth.IBluetooth$Stub$Proxy@3e1ba1b mBinding = false
04-21 16:52:06.927 D/BluetoothManagerService( 3297): Persisting Bluetooth Setting: 0
04-21 16:52:06.928 D/BluetoothManagerService( 3297): MESSAGE_DISABLE: mBluetooth = android.bluetooth.IBluetooth$Stub$Proxy@3e1ba1b
04-21 16:52:06.929 V/SettingsProvider( 3297): Notifying for 0: content://settings/global/bluetooth_on
04-21 16:52:06.930 D/BluetoothManagerService( 3297): Sending off request.
04-21 16:52:06.931 D/BluetoothAdapterService( 3406): disable() called with mRunningProfiles.size() = 7
04-21 16:52:06.931 I/AdapterState( 3406): TURNING_OFF : entered 
04-21 16:52:06.931 D/AdapterProperties( 3406): Setting state to TURNING_OFF
04-21 16:52:06.932 D/BluetoothAdapterService( 3406): updateAdapterState() - Broadcasting state TURNING_OFF to 1 receivers.
04-21 16:52:06.936 D/BluetoothManagerService( 3297): MESSAGE_BLUETOOTH_STATE_CHANGE: ON > TURNING_OFF
04-21 16:52:06.936 D/BluetoothManagerService( 3297): Sending BLE State Change: ON > TURNING_OFF
04-21 16:52:06.939 D/BluetoothMapService( 3406): onReceive
04-21 16:52:06.939 D/BluetoothActiveDeviceManager( 3406): handleMessage(MESSAGE_ADAPTER_ACTION_STATE_CHANGED): newState=13
04-21 16:52:06.939 D/BluetoothMapService( 3406): onReceive: android.bluetooth.adapter.action.STATE_CHANGED
04-21 16:52:06.939 D/BluetoothMapService( 3406): STATE_TURNING_OFF
......
04-21 16:52:07.038 I/AdapterState( 3406): BLE_TURNING_OFF : entered 
04-21 16:52:07.039 D/BluetoothManagerService( 3297): MESSAGE_BLUETOOTH_STATE_CHANGE: BLE_ON > BLE_TURNING_OFF
04-21 16:52:07.039 D/BluetoothManagerService( 3297): Sending BLE State Change: BLE_ON > BLE_TURNING_OFF
04-21 16:52:07.044 D/BluetoothActiveDeviceManager( 3406): handleMessage(MESSAGE_ADAPTER_ACTION_STATE_CHANGED): newState=10
04-21 16:52:07.054 I/bt_btif_core( 3406): btif_disable_bluetooth entered
04-21 16:52:07.054 I/AdapterState( 3406): OFF : entered 
04-21 16:52:07.054 D/AdapterProperties( 3406): Setting state to OFF
04-21 16:52:07.054 D/BluetoothAdapterService( 3406): updateAdapterState() - Broadcasting state OFF to 1 receivers.
04-21 16:52:07.055 E/bt_stack( 3406): [ERROR:bta_jv_act.cc(607)] bta_jv_disable
04-21 16:52:07.056 D/BluetoothManagerService( 3297): MESSAGE_BLUETOOTH_STATE_CHANGE: BLE_TURNING_OFF > OFF
04-21 16:52:07.056 D/BluetoothManagerService( 3297): Bluetooth is complete send Service Down
04-21 16:52:07.056 W/bt_osi_thread( 3406): run_thread: thread id 3907, thread name btif_sock exited
04-21 16:52:07.056 D/BluetoothManagerService( 3297): Broadcasting onBluetoothServiceDown() to 9 receivers.
04-21 16:52:07.057 W/bt_btif ( 3406): bta_dm_disable BTA_DISABLE_DELAY set to 200 ms
04-21 16:52:07.057 I/bt_btif_core( 3406): btif_disable_bluetooth finished

藍牙開啟超時

04-21 16:52:17.051 D/BluetoothManagerService( 3297): enable(com.android.cts.verifier):  mBluetooth =null mBinding = false mState = OFF
04-21 16:52:17.052 D/BluetoothManagerService( 3297): MESSAGE_ENABLE(0): mBluetooth = null
04-21 16:52:17.057 D/BluetoothManagerService( 3297): enable returning
04-21 16:52:17.253 D/BluetoothAdapterService( 7058): onCreate()
04-21 16:52:17.287 I/AdapterState( 7058): BLE_TURNING_ON : entered 
04-21 16:52:17.287 D/AdapterProperties( 7058): Setting state to BLE_TURNING_ON
04-21 16:52:17.287 D/BluetoothAdapterService( 7058): updateAdapterState() - Broadcasting state BLE_TURNING_ON to 1 receivers.
04-21 16:52:17.288 D/BluetoothAdapterService( 7058): bleOnProcessStart()
04-21 16:52:17.290 D/BluetoothManagerService( 3297): MESSAGE_BLUETOOTH_STATE_CHANGE: OFF > BLE_TURNING_ON
04-21 16:52:17.290 D/BluetoothManagerService( 3297): Sending BLE State Change: OFF > BLE_TURNING_ON
04-21 16:52:17.291 I/AdapterProperties( 7058): init(), maxConnectedAudioDevices, default=5, propertyOverlayed=5, finalValue=5
04-21 16:52:17.294 D/BluetoothAdapterService( 7058): bleOnProcessStart() - Make Bond State Machine
04-21 16:52:17.294 D/BluetoothBondStateMachine( 7058): make
04-21 16:52:17.300 I/BluetoothBondStateMachine( 7058): StableState(): Entering Off State
04-21 16:52:17.301 I/BtGatt.JNI( 7058): classInitNative(L875): classInitNative: Success!
04-21 16:52:17.303 D/BtGatt.DebugUtils( 7058): handleDebugAction() action=null
......
04-21 16:52:21.292 E/AdapterState( 7058): BLE_TURNING_ON : BLE_START_TIMEOUT
04-21 16:52:21.293 I/AdapterState( 7058): BLE_TURNING_OFF : entered 
04-21 16:52:24.712 E/BluetoothManagerService( 3297): MESSAGE_TIMEOUT_BIND

藍牙Crash信息

04-21 16:52:31.900 I/crash_dump32( 7118): performing dump of process 7058 (target tid = 7077)
04-21 16:52:31.922 F/DEBUG   ( 7118): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
04-21 16:52:31.922 F/DEBUG   ( 7118): Build fingerprint: 'x:user/release-keys'
04-21 16:52:31.923 F/DEBUG   ( 7118): Revision: '0'
04-21 16:52:31.923 F/DEBUG   ( 7118): ABI: 'arm'
04-21 16:52:31.923 F/DEBUG   ( 7118): pid: 7058, tid: 7077, name: alarm_default_c  >>> com.android.bluetooth <<<
04-21 16:52:31.923 F/DEBUG   ( 7118): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
04-21 16:52:31.923 F/DEBUG   ( 7118):     r0  00000000  r1  00001ba5  r2  00000006  r3  a65df918
04-21 16:52:31.923 F/DEBUG   ( 7118):     r4  00001b92  r5  00001ba5  r6  8fd0621c  r7  0000010c
04-21 16:52:31.923 F/DEBUG   ( 7118):     r8  9024b4fd  r9  00000000  r10 9c7f4838  r11 00000000
04-21 16:52:31.923 F/DEBUG   ( 7118):     ip  00000041  sp  8fd06208  lr  a656e0e5  pc  a6565e72
04-21 16:52:31.973 F/DEBUG   ( 7118): 
04-21 16:52:31.973 F/DEBUG   ( 7118): backtrace:
04-21 16:52:31.973 F/DEBUG   ( 7118):     #00 pc 0001ce72  /system/lib/libc.so (abort+62)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #01 pc 0010e549  /system/lib/libbluetooth.so (hci_timeout_abort(void*)+76)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #02 pc 001abe0d  /system/lib/libbluetooth.so (alarm_ready_generic(alarm_t*, std::__1::unique_lock<std::__1::mutex>&)+164)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #03 pc 001abd2b  /system/lib/libbluetooth.so (alarm_queue_ready(fixed_queue_t*, void*)+66)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #04 pc 001ae881  /system/lib/libbluetooth.so (internal_dequeue_ready(void*)+48)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #05 pc 001b09bf  /system/lib/libbluetooth.so (run_reactor(reactor_t*, int)+218)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #06 pc 001b08b9  /system/lib/libbluetooth.so (reactor_start(reactor_t*)+44)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #07 pc 001b1a53  /system/lib/libbluetooth.so (run_thread(void*)+142)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #08 pc 00063c15  /system/lib/libc.so (__pthread_start(void*)+22)
04-21 16:52:31.973 F/DEBUG   ( 7118):     #09 pc 0001e065  /system/lib/libc.so (__start_thread+22)
04-21 16:52:32.702 E//system/bin/tombstoned( 3160): Tombstone written to: /data/tombstones/tombstone_07

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關於i.MXRT系列的eFuse/OTP,痞子衡之前在介紹Boot時寫過兩篇,分別是針對RT1050的《eFuse及其燒寫方法》和針對RT600的《OTP及其燒寫方法》,今天要介紹的i.MXRT1170 eFuse其實是這兩者的融合,在空間組織上(尤其是Shadow Register)更像RT105... ...
  • Ubuntu 團隊通過郵件列表宣佈推出 Ubuntu 20.04 LTS 最終 Beta 版本,並預告穩定版將於2020年4月23日發佈。雖然是最終的 Beta 版本,但畢竟尚處於測試階段,因此不建議在生產環境或主力電腦上使用。 20.04 LTS 代號為"Focal Fossa",將會獲得 5 ...
  • 精通Oracle Database 12c SQL & PL/SQL編程(第3版) 內容簡介 學習通過編寫SQL語句並構建PL/SQL程式來訪問Oracle資料庫。《精通OracleDatabase12cSQL&PL/SQL編程(第3版)》完全涵蓋了*新版本Oracle資料庫的功能和技術,指導讀者編 ...
  • 今天安裝MySQL,結果安裝一半提示3306埠已被占用,於是網上搜索解決辦法,成功解決了占用問題,於是將方法記錄一下,以備後續再用。 1、Windows+R鍵,打開【運行】視窗,輸入cmd打開“命令行視窗”。 2、查找埠對應的PID,輸入如下命令: netstat -ano|findstr "3 ...
  • 上一篇:Oracle入門學習三 學習視頻:https://www.bilibili.com/video/BV1tJ411r7EC?p=35 Oracle表連接:內連接、外連接。外連接分左連接、右連接。 多表查詢時,如果表之間沒有條件關聯,則會把所有匹配的結果查找出來,例如A表6條數據,B表7條數據, ...
  • 一、內連接(INNER JOIN) 獲取兩個表中欄位匹配關係的記錄,需要兩個表都滿足條件的數據才會返回。如下圖陰影部分所示區域。 實例:有一張表table_a,數據如下: 表table_b,數據如下: 內連接SQL(也可以省略INNER,直接用JOIN): SELECT a.aid, a.aname ...
  • 上一篇:Oracle入門學習二 學習視頻:https://www.bilibili.com/video/BV1tJ411r7EC?p=26 字元串函數:length、upper、lower、initcap、 concat、instr、replace。 -- dual 常量表,沒什麼意義,就語法規則 ...
  • 表結構 student(StuId,StuName,StuAge,StuSex) 學生表 teacher(TId,Tname) 教師表 course(CId,Cname,C_TId) 課程表 sc(SId,S_CId,Score) 成績表 問題二:查詢平均成績大於60分的同學的學號和平均成績 SEL ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...