文章出處:http://blog.csdn.net/shift_wwx/article/details/54971580
請轉載的朋友標明出處~~
上一文 hardware 詳解 中詳細講解了hardware 的部分以及HAL 中需要實現的部分,剩下來就是上層應用調用 HAL ,java 調用 HAL 必定經過JNI,對于詳細JNI 的操作這里不做過多的解釋,詳細看JNI 再分析
下面截取hdmi cec 中的code 講解
1、查找module
hw_module_t* module; err = hw_get_module(HDMI_CEC_HARDWARE_MODULE_ID, const_cast<const hw_module_t **>(&module));通過hw_get_module 獲取module,這里傳的是臨時變量的地址如果查找到module,返回值應該是0
2、通過module 的open 初始化device
hw_device_t* device; err = module->methods->open(module, HDMI_CEC_HARDWARE_INTERFACE, &device); if (err != 0) { ALOGE("Error opening hardware module: %d", err); return 0; }這里的open 就是HAL 中自身實現的,用于控制open 哪個設備,通過 hardware 詳解 中知道一個module 可能對應不同的device,第二個參數就是device name
3、device 初始化完整,可以通過device,調用結構中對應的函數指針了
新聞熱點
疑難解答