FM一条线下来的流程,以turnOn FM为例:
上层
fm.js,
var mozFMRadio = navigator.mozFM || navigator.mozFMRadio;
enableFMRadio(){
mozFMRadio.enable(frequency);
}
上层通过webidl的方式调用FMRadio的东西, 通过navigator的指针:
Navigator.webidl
readonly attribut FMRadio mozFMRadio;
FMRadio.cpp->实际的文件,从enable函数看
FMRadio::Enable(){
IFMRadioService::Singleton()->Enable(); -->这是一个单例
}
FMRadioService.cpp
Enable(){
self->EnableFMRadio();
}
EnableFMRadio(){
hal::EnableFMRadio(info);
}
下到Hal:
gecko/hal/gonk/GonkFMRadio.cpp
EnableFMRadio(){
//这里操作驱动设备
open("dev/radio0");
}
-------------------------------------MTK +Android----------------------------