android core aula 5 - ril (radio interface layer)

Post on 24-May-2015

360 Views

Category:

Technology

9 Downloads

Preview:

Click to see full reader

DESCRIPTION

Quinta Aula do curso "Android Core". Nesta aula veremos detalhes do RIL, o componente Android responsável por comunicação de voz.

TRANSCRIPT

Android Core

Felipe Silveirafelipesilveira.com.br Aula 5

RIL (Radio Interface Layer)

RIL: Radio Interface LayerO 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 LayerApplications (Phone, Messaging, Contacts, etc.)

RIL: Radio Interface Layer

Packet DriverPPP, for exampleLinux IP stack

Vendor RILsystem/libs/libril-vendor.so

Radio Daemon (rild)commands/rild

Phoneandroid.telephony.*

Applications (Phone, Messaging, Contacts, etc.)

RIL API (RILJ)android.telephony.gsm.*

Baseband

RIL: Radio Interface Layer

Packet DriverPPP, for exampleLinux IP stack

Vendor RILsystem/libs/libril-vendor.so

Radio Daemon (rild)commands/rild

Phoneandroid.telephony.*

Applications (Phone, Messaging, Contacts, etc.)

RIL API (RILJ)android.telephony.gsm.*

Baseband

RIL: Radio Interface Layer

Packet DriverPPP, for exampleLinux IP stack

Vendor RILsystem/libs/libril-vendor.so

Radio Daemon (rild)commands/rild

Phoneandroid.telephony.*

Applications (Phone, Messaging, Contacts, etc.)

RIL API (RILJ)android.telephony.gsm.*

Baseband

RIL: Radio Interface Layer

Packet DriverPPP, for exampleLinux IP stack

Vendor RILsystem/libs/libril-vendor.so

Radio Daemon (rild)commands/rild

Phoneandroid.telephony.*

Applications (Phone, Messaging, Contacts, etc.)

RIL API (RILJ)android.telephony.gsm.*

Baseband

RIL: Radio Interface Layer

Packet DriverPPP, for exampleLinux IP stack

Vendor RILsystem/libs/libril-vendor.so

Radio Daemon (rild)commands/rild

Phoneandroid.telephony.*

Applications (Phone, Messaging, Contacts, etc.)

RIL API (RILJ)android.telephony.gsm.*

Baseband

RIL: Radio Interface Layer

Packet DriverPPP, for exampleLinux IP stack

Vendor RILsystem/libs/libril-vendor.so

Radio Daemon (rild)commands/rild

Phoneandroid.telephony.*

Applications (Phone, Messaging, Contacts, etc.)

RIL API (RILJ)android.telephony.gsm.*

Baseband

RIL

RILD - Radio Interface Layer DaemonO 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 DaemonEm 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/controle e a IP stack para dados

RILD StartupInicialização do RIL daemon é feita pelo init.rc:

RILD StartupApó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.libargspara 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 RILO RIL interage com os outros componentes de um telefone android através de dois mecanismos:

● Comandos solicitadosComandos originados da RIL lib (RILJ)

● Comandos não solicitadosComandos originados da camada Baseband

Comandos SolicitadosRequisiçõ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 SolicitadosInterface de tratamento de requisições solicitadas:

Comandos SolicitadosMais 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 SolicitadosMais 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

top related