Android NF C падает после наложения двух тегов NF C друг на друга и попытки их сканирования - PullRequest
2 голосов
/ 09 марта 2020

Я обнаружил, что когда я укладываю два тега NF C ISO15693 друг на друга, а затем пытаюсь сканировать теги, то стек Android NF C полностью падает. И не будет работать, пока NF C не будет перезапущен. К сожалению, приложение не генерирует никаких исключений.

Единственный связанный журнал, который я смог найти, был следующий (Logcat):

2020-03-09 14:36:25.196 3401-10183/? E/BrcmNfcJni: NfcTag::selectFirstTag:starting timer
2020-03-09 14:36:25.209 3401-3657/? E/BrcmNfcJni: nfaDeviceManagementCallback: chr_sub_error_no:7
2020-03-09 14:36:25.223 3401-10183/? E/BrcmNfcJni: nativeNfcTag_handleNonNciMultiCardDetection: check_tag_ntf = 0, check_cmd_sent = 1

и

2020-03-09 14:59:10.937 5551-16123/? E/libnfc_nci: [ERROR:nfa_dm_act.cc(888)] invalid protocol, mode or state

После этого NF C не будет реагировать вообще, в любом приложении на телефоне, пока NF C не будет перезапущен. Я также протестировал ISO 14443-4, так как они лежали без дела, и у них нет такой же проблемы.

Я не буду включать код приложения, потому что он не имеет ничего общего с кодом приложения. Cra sh происходит даже на главном экране телефона, поэтому должно быть основной ошибкой стека NF C, которую я не могу контролировать.

Похоже на ошибку коллизии.

Я проверил это на Honor 9 и на Samsung A51; оба раза происходит сбой стека NF C.

Есть предложения? Я действительно потерян.

Редактировать: Вот более полный, журнал. Надеюсь это вся необходимая информация.

В журнале сканирования:

2020-03-10 07:59:24.822 5551-26548/? E/libnfc_nci: [ERROR:nfa_dm_act.cc(888)] invalid protocol, mode or state

После выключения NF C:

2020-03-10 07:59:36.867 32008-32008/? E/NFC: isNFCStateChangeAllowed - Begin
2020-03-10 07:59:36.893 5551-26548/? E/libnfc_nci: [ERROR:NativeNfcManager.cpp(890)] nfaConnectionCallback: NFA_SELECT_RESULT_EVT error: status = 3
2020-03-10 07:59:36.893 5551-26557/? E/libnfc_nci: [ERROR:NativeLlcpServiceSocket.cpp(65)] nativeLlcpServiceSocket_doAccept: fail accept
2020-03-10 07:59:36.894 5551-26548/? E/libnfc_nci: [ERROR:nfa_dm_act.cc(888)] invalid protocol, mode or state
2020-03-10 07:59:36.895 5551-26557/? E/SnepServer: IO error
    java.io.IOException
        at com.android.nfc.dhimpl.NativeLlcpServiceSocket.accept(NativeLlcpServiceSocket.java:42)
        at com.android.nfc.snep.SnepServer$ServerThread.run(SnepServer.java:215)
2020-03-10 07:59:36.918 5551-26558/? E/libnfc_nci: [ERROR:NativeLlcpServiceSocket.cpp(65)] nativeLlcpServiceSocket_doAccept: fail accept
2020-03-10 07:59:36.935 5551-26559/? E/libnfc_nci: [ERROR:NativeLlcpServiceSocket.cpp(65)] nativeLlcpServiceSocket_doAccept: fail accept
2020-03-10 07:59:36.938 5551-5689/? E/NfcLogManager: insertLogInternal::feature=NF03
2020-03-10 07:59:37.090 5551-26548/? E/libnfc_nci: [ERROR:gki_ulinux.cc(693)] GKI TASK_DEAD received. exit thread 3...
2020-03-10 07:59:37.090 5551-26548/? E/libnfc_nci: [ERROR:gki_ulinux.cc(117)] gki_task task_id=3 terminating
2020-03-10 07:59:37.188 5551-26546/? E/libnfc_nci: [ERROR:gki_ulinux.cc(117)] gki_task task_id=4 terminating
2020-03-10 07:59:37.190 5551-5689/? E/NfcLogManager: insertLogInternal::feature=NF01
2020-03-10 07:59:37.192 5551-5689/? E/NfcLogManager: makeAndSendLog - start
2020-03-10 07:59:37.193 5551-5689/? E/NfcLogManager: insertLog::feature=USEF
...