FM一條線下來(lái)的流程霞玄,以turnOn FM為例:
上層
fm.js,
var mozFMRadio = navigator.mozFM || navigator.mozFMRadio;
enableFMRadio(){
mozFMRadio.enable(frequency);
}
上層通過(guò)webidl的方式調(diào)用FMRadio的東西, 通過(guò)navigator的指針:
Navigator.webidl
readonly attribut FMRadio mozFMRadio;
FMRadio.cpp->實(shí)際的文件,從enable函數(shù)看
FMRadio::Enable(){
IFMRadioService::Singleton()->Enable(); -->這是一個(gè)單例
}
FMRadioService.cpp
Enable(){
self->EnableFMRadio();
}
EnableFMRadio(){
hal::EnableFMRadio(info);
}
下到Hal:
gecko/hal/gonk/GonkFMRadio.cpp
EnableFMRadio(){
//這里操作驅(qū)動(dòng)設(shè)備
open("dev/radio0");
}
-------------------------------------MTK +Android----------------------------
image.png
image002.png