RIL是一个WCE驱动
它主要由驱动的主要部分RIL_Init,RIL_Open,RIL_Close…等等组成。作为一个驱动的dll库当然也应该由dll特有的函数DllMain。RIL作为一个驱动当然也应该支持电源管理的所有函数。
RIL对外接口
RIL作为WCE的标准接口提供了一整套的函数如:RIL_Initialize,RIL_Answer…。这些函数都映射为如下的函数:RIL_IOControl(zhRil,IOCTL_..,…)。
RIL的上层
RIL虽然提供了对外接口,但是并不直接对外,在上一层主要有TAPI,SIMAPI,SMSAPI,PPP等。我们常用的接口基本都是基于其上的。例如短消息的发送:
// try to open an SMS Handle
if(FAILED(SmsOpen(SMS_MSGTYPE_TEXT, SMS_MODE_SEND, &smshHandle, NULL)))
{
return;
}
// Send the message, indicating success or failure
if(SUCCEEDED(SmsSendMessage(smshHandle, ((bUseDefaultSMSC) ? NULL : &smsaSource),
&smsaDestination, NULL, (PBYTE) lpszMessage,
_tcslen(lpszMessage) * sizeof(TCHAR), (PBYTE) &tpsd,
sizeof(TEXT_PROVIDER_SPECIFIC_DATA), SMSDE_OPTIMAL,
SMS_OPTION_DELIVERY_NONE, &smsmidMessageID)))
{
。。。
}
else
{
。。。
}
// clean up
VERIFY(SUCCEEDED(SmsClose(smshHandle)));
这里的SmsOpen,SmsSendMessage,SmsClose都是SMS API,估计SMS API层都是一些空函数,所有的处理都映射到了RIL,如RIL_SendMsg,但SmsOpen和SmsClose呢?我不知道。
RIL的下层
主要由一个MUX和COM口的驱动组成。这里的排列组合可能有几种方式,感兴趣的可以参考其CellCoreView.ppt文档。
RIL的框架