2017-09-28 8 views
2

Google Pixel AOSPビルド(android-8.0.0_r3)のNFCコードを勉強しています。HOSからApplication FrameworkレイヤーへのAOSP NFCデバイスコールフロー

struct nfc_nci_module_t HAL_MODULE_INFO_SYM = { 
    .common = 
     { 
      .tag = HARDWARE_MODULE_TAG, 
      .module_api_version = 0x0100, /* [15:8] major, [7:0] minor (1.0) */ 
      .hal_api_version = 0x00,  /* 0 is only valid value */ 
      .id = NFC_NCI_HARDWARE_MODULE_ID, 
      .name = "NXP PN54X NFC NCI HW HAL", 
      .author = "NXP Semiconductors", 
      .methods = &nfc_module_methods, 
     }, 
}; 

hw_get_module(NFC_NCI_HARDWARE_MODULE_ID)hardware/interface/nfc/1.0/default/nfc.cpp : HIDL_FETCH_INfc(...)でそれを見つけ介して、このハードウェアモジュールがロードされている:私は次のようにすべての方法Androidのハードウェアモジュールsystem\nfc\halimpl\pn54x\nfc_nci.cにカーネルからのコールフローを理解することができます。今私はAOSPがHIDL_FETCH_INfc(...)を呼び出した場所を見つけることができず、次のレイヤーにどのようにリンクしていますか?

答えて

0

ハードウェアとやり取りするアンドロイドサービスの場合、次のように接続します。 nfc.cppで は同様な機能があるはず:

JNINativeMethod method_table[]= { 
    {"external_name","(I)Z)",(void*)internal_name}, 
}; 

int register_android_server_FlexcanService(JNIEnv* env) 
{ 
    return jniRegisterNativeMethods(env,"com/android/server/MyService",method_table,NELEM(method_table)); 
} 

このjniRegisterNativeMethodsはonload.cppで呼び出され、nfc.cppが同じフォルダにAndroid.mkに追加さ

.aidlバインダーファイルが存在します。そこから

public static native boolean external_name(int someVar); 

:次に、Javaパッケージcom.android.server.MyService(コア/ javaの/ COM /アンドロイド/サーバー)でネイティブ関数の呼び出しがあるだろうサービスメソッドをSDKに公開し、最終的にトップレベルのAndroidアプリ。

+0

dir 'hardware/interface/nfc'に' jniRegisterNativeMethods(...) 'がありません – Consy

+0

端末で' jniRegisterNativeMethods'を見つけることができないことを意味しますか? 'grep -r jniRegisterNativeMethods' inハードウェア/インタフェース/ nfcディレクトリ? –

+0

はい、それはハードウェア/インターフェイス/ nfcのディレクトリでそれを見つけることができませんでした – Consy

0

Android 7.xでは、NFC JNIはpackages/apps/Nfc/nci/jni /にあります。私はAndroid 8.xのソースをチェックしていないが、まだそこにあると思う。

+0

はい、あなたはパスについて正しいですしかし、 'HIDL_FETCH_INfc(...)'がそこにあるどのようなファイルにリンクしているのか、まだ答えはありませんか? – Consy

+0

パッケージ/ apps/Nfc/nci/jni /に 'hw_get_module(NFC_HARDWARE_MODULE_ID、&hw_module); が見つかりますが、なぜHIDL_FETCH_INfcが必要ですか? – ZhouZhuo

関連する問題