본문 바로가기
Android

안드로이드 하드웨어 서비스 03 텔레포니 프레임워크 (3)

by OKOK 2021. 5. 26.

3G 이동톤신까지 CDMA와 GSM 사업자가 공존하였으나 CDMA 계열이 새로운 기술의 전화를 포기함으로써 대부분의 CDMA 이동통신 사업자는 4G 네트워크 방식으로 GSM 계열의 LTE 통신 방식을 동비하고 있음. 기존의 CDMA 이동통신 사업자가 CDMA 네트워크뿐만 아니라 GSM 계열의 LTE 네트워크를 지원할 수 있도록 CDMALTEPhone, CdmaLteServiceStateTracker 등과 같은 새로운 클래스가 추가됨. 이동통신 네트워크를 지원하지 않는 안드 디바이스를 고려하여 텔레포니 프레임워크 소스 위치를 frmeworks/vvase/telephony에서 frameworks/op/telephony로 이동함

 

3.3 텔레포니 프레임워크의 초기화

 

3.3.1 Phone 애플리케이션의 생성

안드로이드 부팅 시 ActivityManagerService 클래스의 systemReady()는 모든 persistent 앱을 시작함

 

3.2.2 텔레포니 프레임워크의 초기화

Global Roaming을 지원하는 폰은 현재 어떤 네트워크에 속해 있는지에 따라 GSMPhone 객체 또는 CDMAPhone 객체를 생성하여 GSM과 CDMA 네트워크를 모두 지원할 수 있음

 

RILSender쓰레드를 생성할 때 일반 쓰레드가 아닌 핸들러 쓰레드를 이용하여 쓰레드를 생성하는 이유는 RIL java객체와 RILSender 쓰레드 간의 통신은 서로 다른  쓰레드 간 통신이므로 루퍼가 필요하기 때문임. 핸들러 쓰레드는 쓰레드 생성과 함께 루퍼도 같이 생성하므로 쓰레드 간의 통신에 필요한 루퍼를 별도로 생성하지 않아도 되기 때문임.

 

3.4 텔레포니 프레임워크의 서비스 모델

 

3.4.1 텔레포니 프레임워크의 서비스 구조

메시지 기반 통신은 Shot & Forget 특성을 가지고 있음. 응답이 올 때까지 블록되지 않고 다른 일을 처리할 수 있음. 

 

3.4.2 텔레포니 프레임워크의 서비스 req/resp 처리 메커니즘

RILRequest의 파셀 필드에 저장되어 있는 서비스 req를 마샬링함.

 

3.4.3 텔레포니 프레임워크의 서비스 ind 처리 메커니즘

텔레포니 프레임워크는 서비스 ind를 처리하기 위해 Publish/Subscribe 모델을 이용함. Registranct 클래스와 RegistranctList 클래스를 제공함. 

댓글