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之间存在什么样的接口的东西,但找不到。

帮助将不胜感激!

最佳答案

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