Android Core
Felipe Silveira
felipesilveira.com.br Aula 5
RIL (Radio Interface Layer)
RIL: Radio Interface Layer
O que é RIL?
● Camada de abstração entre os serviços de telefonia
de android (android.telephony) e o hardware de rádio.
● 2 principais componentes:
- RIL Daemon (rild)
- Vendor RIL
RIL: Radio Interface Layer
Applications (Phone, Messaging, Contacts, etc.)
RIL: Radio Interface Layer
Packet Driver
PPP, for example
Linux IP stack
Vendor RIL
system/libs/libril-vendor.so
Radio Daemon (rild)
commands/rild
Phone
android.telephony.*
Applications (Phone, Messaging, Contacts, etc.)
RIL API (RILJ)
android.telephony.gsm.*
Baseband
RIL: Radio Interface Layer
Packet Driver
PPP, for example
Linux IP stack
Vendor RIL
system/libs/libril-vendor.so
Radio Daemon (rild)
commands/rild
Phone
android.telephony.*
Applications (Phone, Messaging, Contacts, etc.)
RIL API (RILJ)
android.telephony.gsm.*
Baseband
RIL: Radio Interface Layer
Packet Driver
PPP, for example
Linux IP stack
Vendor RIL
system/libs/libril-vendor.so
Radio Daemon (rild)
commands/rild
Phone
android.telephony.*
Applications (Phone, Messaging, Contacts, etc.)
RIL API (RILJ)
android.telephony.gsm.*
Baseband
RIL: Radio Interface Layer
Packet Driver
PPP, for example
Linux IP stack
Vendor RIL
system/libs/libril-vendor.so
Radio Daemon (rild)
commands/rild
Phone
android.telephony.*
Applications (Phone, Messaging, Contacts, etc.)
RIL API (RILJ)
android.telephony.gsm.*
Baseband
RIL: Radio Interface Layer
Packet Driver
PPP, for example
Linux IP stack
Vendor RIL
system/libs/libril-vendor.so
Radio Daemon (rild)
commands/rild
Phone
android.telephony.*
Applications (Phone, Messaging, Contacts, etc.)
RIL API (RILJ)
android.telephony.gsm.*
Baseband
RIL: Radio Interface Layer
Packet Driver
PPP, for example
Linux IP stack
Vendor RIL
system/libs/libril-vendor.so
Radio Daemon (rild)
commands/rild
Phone
android.telephony.*
Applications (Phone, Messaging, Contacts, etc.)
RIL API (RILJ)
android.telephony.gsm.*
Baseband
RIL
RILD - Radio Interface Layer Daemon
O termo RILD se refere ao componente responsável por
controlar as tarefas de telefonia.
A abreviação terminada em D indica que ele é um
daemon, componente comum em sistemas linux.
RILD - Radio Interface Layer Daemon
Em linux, daemons são softwares responsáveis por
receber comandos que serão executados em background.
Este software é executado em um processo que nunca é
terminado.
Exemplos: sshd, ftpd, httpd, etc
Em android o conceito é o mesmo.
RILD - Radio Interface layer daemon
● Responsável por inicializar o Vendor RIL
● Faz o processamento de toda comunicação entre os
serviços de telefonia android e dispara chamadas para
o Vendor RIL através dos Solicited Commands. Por
exemplo: send SMS, dial, etc.
Estrutura interna do RILD
RILC
● Escrito em C
● hardware/lib/ril
● Event Scheduler
responsável por
processar as
requisições solicitadas
e não-solicitadas.
Vendor RIL
● hardware/ril/
reference-ril
● Lib proprietária,
responsável por
acessar o BP para
serviços de
voz/mensagens/contro
le e a IP stack para
dados
RILD Startup
Inicialização do RIL daemon é feita pelo init.rc:
RILD Startup
Após a inicialização do rild, este executa a seguinte
sequência para inicializar toda a stack de telefonia e o
Vendor RIL:
1) O rild lê as system properties rild.libpath e rild.libargs
para determinar qual será o Vendor RIL utilizado e quais
são os parâmetros necessários. Por exemplo:
RILD Startup
2) O rild então carrega o Vendor RIL e invoca o seu
método RIL_Init para obter uma referência para as
funções da interface do RIL.
RILD Startup
3) O rild invoca o método RIL_register para obter uma
referência para as funções da interface do Vendor RIL.
Interações com o RIL
O RIL interage com os outros componentes de um
telefone android através de dois mecanismos:
● Comandos solicitados
Comandos originados da RIL lib (RILJ)
● Comandos não solicitados
Comandos originados da camada Baseband
Comandos Solicitados
Requisições solicitadas são aquelas que se originam da RIL
API, na maioria das vezes a partir de alguma ação do
usuário.
Exemplos:
Comandos Solicitados
Interface de tratamento de requisições solicitadas:
Comandos Solicitados
Mais de 60 comandos disponíveis, divididos nos seguintes
grupos:
SIM PIN, IO, and IMSI/IMEI (11)
Call status and handling (dial, answer, mute…) (16)
Network status query (4)
Network setting (barring, forwarding, selection…) (12)
SMS (3)
PDP connection (4)
Power and reset (2)
Supplementary Services (5)
Vendor defined and support (4)
Comandos Solicitados
Comandos Não Solicitados
As requisições não solicitadas, por sua vez, são aquelas
que ocorrem a partir de um evento na camada de
Baseband.
Exemplos:
Comandos Não Solicitados
Interface de tratamento de requisições não solicitadas:
Comandos Não Solicitados
Mais de 10 comandos disponíveis, divididos nos seguintes
grupos:
Network status changed (4)
New SMS notify (3)
New USSD notify (2)
Signal strength or time changed (2)
Comandos Não Solicitados

Android Core Aula 5 - RIL (Radio Interface Layer)

  • 1.
  • 2.
  • 3.
    RIL: Radio InterfaceLayer O que é RIL? ● Camada de abstração entre os serviços de telefonia de android (android.telephony) e o hardware de rádio. ● 2 principais componentes: - RIL Daemon (rild) - Vendor RIL
  • 4.
    RIL: Radio InterfaceLayer Applications (Phone, Messaging, Contacts, etc.)
  • 5.
    RIL: Radio InterfaceLayer Packet Driver PPP, for example Linux IP stack Vendor RIL system/libs/libril-vendor.so Radio Daemon (rild) commands/rild Phone android.telephony.* Applications (Phone, Messaging, Contacts, etc.) RIL API (RILJ) android.telephony.gsm.* Baseband
  • 6.
    RIL: Radio InterfaceLayer Packet Driver PPP, for example Linux IP stack Vendor RIL system/libs/libril-vendor.so Radio Daemon (rild) commands/rild Phone android.telephony.* Applications (Phone, Messaging, Contacts, etc.) RIL API (RILJ) android.telephony.gsm.* Baseband
  • 7.
    RIL: Radio InterfaceLayer Packet Driver PPP, for example Linux IP stack Vendor RIL system/libs/libril-vendor.so Radio Daemon (rild) commands/rild Phone android.telephony.* Applications (Phone, Messaging, Contacts, etc.) RIL API (RILJ) android.telephony.gsm.* Baseband
  • 8.
    RIL: Radio InterfaceLayer Packet Driver PPP, for example Linux IP stack Vendor RIL system/libs/libril-vendor.so Radio Daemon (rild) commands/rild Phone android.telephony.* Applications (Phone, Messaging, Contacts, etc.) RIL API (RILJ) android.telephony.gsm.* Baseband
  • 9.
    RIL: Radio InterfaceLayer Packet Driver PPP, for example Linux IP stack Vendor RIL system/libs/libril-vendor.so Radio Daemon (rild) commands/rild Phone android.telephony.* Applications (Phone, Messaging, Contacts, etc.) RIL API (RILJ) android.telephony.gsm.* Baseband
  • 10.
    RIL: Radio InterfaceLayer Packet Driver PPP, for example Linux IP stack Vendor RIL system/libs/libril-vendor.so Radio Daemon (rild) commands/rild Phone android.telephony.* Applications (Phone, Messaging, Contacts, etc.) RIL API (RILJ) android.telephony.gsm.* Baseband RIL
  • 11.
    RILD - RadioInterface Layer Daemon O termo RILD se refere ao componente responsável por controlar as tarefas de telefonia. A abreviação terminada em D indica que ele é um daemon, componente comum em sistemas linux.
  • 12.
    RILD - RadioInterface Layer Daemon Em linux, daemons são softwares responsáveis por receber comandos que serão executados em background. Este software é executado em um processo que nunca é terminado. Exemplos: sshd, ftpd, httpd, etc Em android o conceito é o mesmo.
  • 13.
    RILD - RadioInterface layer daemon ● Responsável por inicializar o Vendor RIL ● Faz o processamento de toda comunicação entre os serviços de telefonia android e dispara chamadas para o Vendor RIL através dos Solicited Commands. Por exemplo: send SMS, dial, etc.
  • 14.
  • 15.
    RILC ● Escrito emC ● hardware/lib/ril ● Event Scheduler responsável por processar as requisições solicitadas e não-solicitadas.
  • 16.
    Vendor RIL ● hardware/ril/ reference-ril ●Lib proprietária, responsável por acessar o BP para serviços de voz/mensagens/contro le e a IP stack para dados
  • 17.
    RILD Startup Inicialização doRIL daemon é feita pelo init.rc:
  • 18.
    RILD Startup Após ainicialização do rild, este executa a seguinte sequência para inicializar toda a stack de telefonia e o Vendor RIL: 1) O rild lê as system properties rild.libpath e rild.libargs para determinar qual será o Vendor RIL utilizado e quais são os parâmetros necessários. Por exemplo:
  • 19.
    RILD Startup 2) Orild então carrega o Vendor RIL e invoca o seu método RIL_Init para obter uma referência para as funções da interface do RIL.
  • 20.
    RILD Startup 3) Orild invoca o método RIL_register para obter uma referência para as funções da interface do Vendor RIL.
  • 21.
    Interações com oRIL O RIL interage com os outros componentes de um telefone android através de dois mecanismos: ● Comandos solicitados Comandos originados da RIL lib (RILJ) ● Comandos não solicitados Comandos originados da camada Baseband
  • 22.
    Comandos Solicitados Requisições solicitadassão aquelas que se originam da RIL API, na maioria das vezes a partir de alguma ação do usuário. Exemplos:
  • 23.
    Comandos Solicitados Interface detratamento de requisições solicitadas:
  • 24.
    Comandos Solicitados Mais de60 comandos disponíveis, divididos nos seguintes grupos: SIM PIN, IO, and IMSI/IMEI (11) Call status and handling (dial, answer, mute…) (16) Network status query (4) Network setting (barring, forwarding, selection…) (12) SMS (3) PDP connection (4) Power and reset (2) Supplementary Services (5) Vendor defined and support (4)
  • 25.
  • 26.
    Comandos Não Solicitados Asrequisições não solicitadas, por sua vez, são aquelas que ocorrem a partir de um evento na camada de Baseband. Exemplos:
  • 27.
    Comandos Não Solicitados Interfacede tratamento de requisições não solicitadas:
  • 28.
    Comandos Não Solicitados Maisde 10 comandos disponíveis, divididos nos seguintes grupos: Network status changed (4) New SMS notify (3) New USSD notify (2) Signal strength or time changed (2)
  • 29.