native takepicture -> camera -> ICamera: class bpbinder: transact -> BpBinder: transact -> IPCThread: transact->IPCThread:writeTransactionData 写到mout中,之后会waitForResponse()
IPCThread : joinThreadPool 为一个无限循环线程,循环中不断调用 getandExecuteCommand(),
getandExecuteCommand() ->talkWithDriver():会从mIn中读取数据,并将mOut中的数据通过ioctl写入共享内存。
getandExecuteCommand() -> executeCommand():从mIn中读取命令及数据,若为transact:reinterpret_cast<BBinder*>(tr.cookie)->transact(tr.code, buffer, &reply, tr.flags);
调用BBinder的transact()->BnCamera:BnInterface -> onTransact()
再调用到hal层的实现