본문 바로가기

Android44

안드로이드 하드웨어 서비스 03 Telephony Framework Phone 앱과 텔레포니 프레임워크가 하나의 프로세스에서 같이 실행되도록 구현된 이유는 네트워크의 특성상 네트워크로부터 전달되는 응답이 올 시점을 예측하기 어려우므로 비동기 통신 방식을 사용하기 때문임. 3.1.1 텔레포니 프레임워크의 기능 GSM 또는 CDMA 모뎀이 제공하는 모든 서비스를 PDK앱인 Phone앱 및 MMS 앱등에 제공하며 SDK앱에서는 TelephonyManager를 통해 한정적인 네트워크 정보를 제공함. - 텔레포니 프레임워크 내 객체 간의 통신 메커니즘 제공. 레이어와 레이어 간의 인터페이스를 정의하고 각 레이어 내의 객체 간 통신 메커니즘을 정의함. - 텔레포니 프레임워크와 RIL 데몬 간의 통신 : RIL 데몬과의 통신 메커니즘을 구현함. 유닉스 도메인 소켓을 통해 RIL 데몬.. 2021. 6. 17.
인사이드 안드로이드 11. 자바 시스템 서비스 동작 분석 자바 시스템 코드인 액티비티 매니저 서비스를 통해 자바 시스템 서비스가 안드로이드 프레임워크 내에서 어떻게 동작하는지에 대해 좀더 구체적으로 알아봄. 11. 액티비티 매니저 서비스 자바 시스템 서비스의 일종인 코어 플랫폼 서비스. 안드로이드 앱 컴포넌트인 액티비티, 서비스, 보로드캐스트 리시버를 생성, 생명주기를 관리함. RemoteService는 앱가 독립된 프로세스에서 동작하는 리모트 앱 서비스이기 때문에 서비스를 실행하기 위해서는 우선 새로운 프로세스를 생성해야 함. 안드로이드의 모든 자바 기반 프로세스는 Zygote에 의해 성생됨. 액티비티 매니저 서비스는 Zygote를 이용해 서비스를 실행할 프로세스를 생성함. 11.2 액티비티 매니저 서비스를 통한 서비스 생성 코드 분석 앱 컴포넌트는 인텐트라.. 2021. 6. 16.
안드로이드 하드웨어 서비스 03 텔레포니 프레임워크 (6) 4.2.1 USIM의 데이터 구조 2G 통신에 사용되는 파일 시스템의 루트 디렉토리를 MF라 하고 3G를 위한 파일 시스템의 루트 디렉토리는 ADF라 불림. 일조의 디렉토리인 DF와 파일역할을 하는 EF를 가질수 있음. R-APDU의 값에는 결과의 상태를 나타내는 Status Word가 있음. 일반적으로 0x90, 0x00으로 반환됨. 이는 UICC에서 단말로 보내는 명령인 Proactive Command가 UICC에서 대기 중임을 나타내는 것임. 문맥상으로 UICC에서 단말로 명령을 보내고 단말에서 명령을 처리한 후 결과를 보내는 방식으로 동작한다고 볼 수 있음. 4.3 안드로이드 USIM 소프트웨어 구조 getsimstatus, requestsim_io, requestentersimpin, reque.. 2021. 6. 12.
안드로이드 하드웨어 서비스 03 텔레포니 프레임워크 (5) 04 USIM(Universal Subscriver Identity Module) 가입자의 정보를 저장. 이동 통신망과 무선랜 등의 인증 기능, 보안에 민감한 정보의 저장 기능. UICC에 RAM, ROM, EEPROM, 연산 역할을 하는 CPU로 구성되어 있음. EEPROM에는 데이터나 IC칩에서 동작하는 앱이 설치되어 있음. USIM은 앱의 이름에 해당하기 때문에 물리적인 카드 자체를 지칭할 때는 UICC라는 단어를 쓰는 것이 정확한 표현임. 스마트카드는 연산장치와 기억장치가 있는 일종의 컴퓨터임. 클래스별로 허용하는 최저 및 최고 전압이 존재함. 가장 약한 C 클래스의 전압인 1.8V로 구동시키게 됨. 4.1.3 APDU를 이요한 스마트카드 통신 SW1-SW2 멸영 처리 결과 코드 예 - 성공 0x.. 2021. 6. 12.
안드로이드 하드웨어 서비스 03 텔레포니 프레임워크 (4) 3.5 RIL.java 의 RIL req처리의 예제 텔레포니 프레임워크의 RIL는 RIL데몬과 유닉스 도메인 소켓을 통해 통신하며 모뎀에 서비스를 요청하는 중요한 역할을 수행함. 릴을 이해하려면 RILSender쓰레드와 RILReceiver쓰레드의 동작을 이해함. CallManager, GSMPhone, GsmCallTracker, RILjava, RILSEnder, RILReceiver, RIL데몬. 3.5.1 Phone APP의 텔레포니 프레임워크 API호출 CallController -> PhoneUtils -> CallManager- -> GSMPhone -> GsmCallTracker -> RIL java 현재 phone객체와 발신 전화를 걸 전화번호를 받음. Phone객체는 Phone app .. 2021. 5. 27.
안드로이드 하드웨어 서비스 03 텔레포니 프레임워크 (3) 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 애플리케이션의 생성 안드.. 2021. 5. 26.
안드로이드 하드웨어 서비스 03 텔레포니 프레임워크 (2) 3.2.3 PhoneProxy 클래스 폰프록시 클래스의 주요 역할은 폰 제어를 위한 Phone API를 제공하며 RAT에 상관없이 공통적인 폰 제어 방법을 제공하는 것임. RAT가 스위칭되면 해당 폰 객체 또한 스위칭되므로 텔레포니 프레임워크는 공통의 폰 제어 API를 제공하기 어려움. 따라서 폰 앱이 하부 RAT에 의존하지 않고 공통의 폰 제어 방법을 사용할 수 있도록 PhoneProxy 클래스가 필요함. 프록시 패턴의 장점은 실제 객체와 동일한 인터페이스를 구현한 프록시를 통해 접근하여 클라이언트로부터 최적화와 세부적인 구현 내용을 감추어 코드를 단순화하게 함. 3.2.4. Phone 인터페이스 registerForIncomingRing()는 EVENT_INCOMING_RING 이벤트와 같은 서비스 .. 2021. 5. 26.
안드로이드 하드웨어 서비스 03 텔레포니 프레임워크 (1) 텔레포니 프레임워크는 다른 하드웨어 서비스와 달리 폰 앱에 의해서 초기화되며 폰 앱 내에서 실행됨. 폰 앱과 텔레포니 프레임워크가 하나의 프로세스에서 실행되도록 구현된 이유는 네트워크의 특성상 네트워크로부터 전달되는 응답이 올 시점을 예측하기 어려우므로 비동기 통신 방식을 사용하기 때문임. 3.1.1 텔레포니 프레임워크의 기능 TelephonyManager를 통해 한정적인 네트워크 정보를 제공함. 텔레포니 프레임워크는 유닉스 도메인 소켓을 통해 릴 데몬과 통신함. 보통 모뎀은 모뎀 크래쉬가 발생하면 크래쉬의 원인을 규명하기 위해 크래쉬 직전의 레지스터와 스택 메모리의 덤프를 저장함. 안드는 일반적인 SDK앱에 TelephonyManger를 통해 제한적으로 가입자 정보와 네트워크 정보를 제공함 3.1.2 .. 2021. 5. 26.
안드로이드 하드웨어 서비스 02 RIL (2) 2.3 RIL 데몬의 구조 2.3.3 RIL 이벤트 스케줄러 릴 데몬은 외부 또는 내부로부터 발생되는 RIL 이벤트를 처리해야 함. hardware/ril/libril/ril_event.cpp에 ril_event_add()함수 분석. 2.4 릴 데몬 초기화 릴 데몬이 실행되면 가장 먼저 벤더 릴을 동적으로 로딩하고 벤더 릴은 릴 데몬으로부터 릴 resp와 릴 ind를 처리할 수 있는 Radio 응답 함수의 함수 포인터를 얻음. 릴 데몬이 모뎀을 제어하기 위해 필수적으로 벤더 릴이 필요함. 벤더 릴은 공유 라이브러리 형태로 존재함 릴 데몬은 모뎀을 제어하기 위해 벤더릴을 동적으로 로딩함. 2.4.4 릴 에빈트 스케줄러 생성 2.4.5 벤더 RIL 초기화 릴 데몬의 콜백 함수를 벤더 릴에 설정, mainLo.. 2021. 5. 25.