This question already has answers here:
How does Modem code talk to Android code
(2个答案)
5年前关闭。
我正在尝试修改移动操作系统,以便可以控制接听哪个呼叫,拒绝哪个呼叫以及运行某些信号处理。
我正在使用Android OS,但是我需要与基带OS进行对话,并且我确信有某种方法,例如,每当接到电话时,移动OS的用户界面就会栩栩如生,以及我们是否要接听或拒绝电话。呼叫-可以在移动OS层做出此决定,然后将其传输到基带OS!
我试图在Google中找到一个基带OS和移动OS之间存在什么样的接口的东西,但找不到。
帮助将不胜感激!
(2个答案)
5年前关闭。
我正在尝试修改移动操作系统,以便可以控制接听哪个呼叫,拒绝哪个呼叫以及运行某些信号处理。
我正在使用Android OS,但是我需要与基带OS进行对话,并且我确信有某种方法,例如,每当接到电话时,移动OS的用户界面就会栩栩如生,以及我们是否要接听或拒绝电话。呼叫-可以在移动OS层做出此决定,然后将其传输到基带OS!
我试图在Google中找到一个基带OS和移动OS之间存在什么样的接口的东西,但找不到。
帮助将不胜感激!
最佳答案
Android中与无线电通信的主要机制是/ dev / smd0,它使用许多扩展命令实现了AT调制解调器。我不知道该设备是如何实现的,但是我建议查看其来源。我相信它本质上是连续的。
操作系统(如果我还记得的话)有一个守护程序,用于监视此设备并与之连接。
例如,当电话需要基带在移动网络上注册时,它可以将AT+CREG=1
发送到该设备,然后基带会处理它(并返回0
)。要拨打电话,它将向该设备发送ATD8005551212
或其他内容。要接听电话,它将发送ATA
;挂断它会发送ATH
,就像调制解调器一样。
该设备上的来电交易看起来像这样。基带将在/ dev / smd0上打印+CRING: VOICE
,并且操作系统可以发送AT+CLCC
以获得呼叫者ID,该呼叫者ID的格式为扩展状态消息:+CLIP: "+18555551212",,,,""
或其他内容。
我知道有时候设备名称会有所不同。例如,如果将基带接口实现为USB串行端口,则可能为/dev/ttyUSB0
。
您应该在系统应用程序层而不是内核中执行此操作,我相信这是解决该问题的正确方法。
09-16 08:00