I have recently started working on android native framework for some development work and after going through Android documents I am still not able to clearly understand concept of HIDL. I am sorry if questions sound stupid, but I have just started learning this.
In Hidl-c++ document on source.android, this image is present.
- What is the HIDL actually? Since its name is HAL Interface Definition Language, it is confusing me whether it is just a way to define a HAL or a new layer between framework and HAL ?
- If HIDL is just a way to define a HAL and was introduced from android 8.0, then how the HAL was defined in android versions before 8.0 ?
- As per documents, in binderized HAL two separate processes communicate through binder like client-server model. Does this mean, the process on framework side is client and the process on hardware side is server, and server process actually communicates with hardware and provides necessary result to client via via /dev/hwbinder ? Is this understanding correct ?
- In case of binderized HAL, does server process always keep running in background or does it spawn only when a client process requests for it ?
- Do vendors define HAL interfaces specific to their hardware to access it ? How separating the vendor partition makes the difference ?
I found this image somewhere. Is this a correct representation ?