2014. 4. 16. 11:37ㆍPrograming/Android / Java
- Telephony Framework 정의
안드로이드를 하다보면, Telephony Framework, Telephony Service라는 말을 듣는다.
그리고 이 Telephony Framework를 담당하는 개발자들은 보면, 대부분이 Protocol 관련 개발자들이다.
대체 Telephony가 뭐길래 Protocol Engineer 들이 업무를 받아서 할까?
Telephony란?
"Tele (Distant - 멀다)"와 "Phone (Speak - 말하다 혹은 Sound - 소리)"라는 그리스어의 합성어로
Telephone은 멀리 떨어진 사람과 말을 한다는 의미.
즉, 그냥 전화를 이야기 하는 것 입니다.
이와 관련 된 Part가 Protocol Part이기 때문에 Protocol Engineer들의 주요 담당 업무가 되는 것입니다.
- Telephony Framework 개요
스마트폰에 들어서면서 우리는 통화를 하면서 게임을 할 수도 있고, 인터넷을 할 수도 있다.
또한, 문자를 입력 할 수도 있고, 인터넷을 하면서 요청한 인증 문자의 내용을 자동으로 가져와 인증 처리를 할 수도 있다.
기타, 엄청난 일들이 폰 하나에서 이루어 질 수 있게 되었다.
이러한 것을 가능하게 모뎀과 Application 사이에서 중간 다리를 해주는 것이 바로 Telephony Framework라고 할 수 있겠다.
- Telephony Framework 기능
TFW의 가장 주요한 기능은 Application Layer (쉽게 이야기 하면, 흔히 우리가 사용하고 있는 어플 같은 것을 이야기 합니다.)와 RILD 사이에서
통신이 가능하게 API를 제공해 주는 역할을 합니다.
RILD는 나중에 다루겠지만, RILD를 통해 모뎀(Base Band)과 통신이 이루어지게 되는데, 이를 위한 API를 제공하는 것입니다.
이를 다시 보면, 결국 APP 또는 TFW에서 모뎀을 Control하거나, 모뎀으로 부터 받는 Message를 처리하기 위한 기능을 제공하는 것입니다.
이러한 기능들을 수행하기 위해서 TFW는 여러개의 레이어로 이루어져 있고, 레이어와 레이어 같의 인터페이스를 정의 및 통신 메커니즘이 제공됩니다.
그러면, 왜 Application Layer에서 처리하지 않고, 굳이 TFW를 만들어서 처리하게 만들었을까요?
답 부터 이야기를 하면, 모뎀의 안정성을 보장하기 위해서 입니다.
만일, Application Layer에서 모뎀에 대한 이해도가 없이, 너도 나도 모뎀을 접근하고 부하를 주게 된다면 어떻게 될까요?
오동작 또는 모뎀이 죽어버리는 문제까지 발생하게 될 것입니다.
모뎀이 죽는게 모??
모뎀이 죽게 되면, SIM/USIM 인식이 안되며, 전화, SMS, MMS, 인터넷 등이 모두 안된다고 보시면 됩니다.
즉, 기지국과 연결이 되지 않게 됩니다.
그럼 그냥 WIFI Tablet 같은 존재가 되어 버린다는 것 입니다. (하지만, 실질적으로는 모뎀이 죽는 문제로 인해, 폰이 이상한 짓을 많이 하게 됩니다.)
- TelephonyManager
Application Layer에서 User가 RIL을 통해 모뎀에 접근이 가능한 API를 제공한다고 했습니다.
그럼 이걸 관리하는 놈이 하나 필요하겠지요.
이걸 바로 Telephony Manger라고 하며, 가입장 정보와 네트워크 정보 등을 제공하고 있습니다.
단, 직접적으로 모뎀에 접근을 시켜주지는 않고, TFW가 가지고 있는 정보를 사용해서 User에게 제한적으로 제공을 하고 있습니다.
하지만 모든 길에는 우회하는 방법이 있는법.
TFW에 직접적으로 접근을 하여 전화를 건다거나, 전화를 끊는 등의 동작을 하게 할 수 있습니다.
자세한 내용은 아래 링크에서 확인하시기 바랍니다.
http://victor8481.tistory.com/237
- TFW 제공 서비스 (Telephony Service)
Telephony Service는 GSMPhone이 제공하는 서비스 종류 중에 하나이다. (GSMPhone에 대해서 이후 기술하겠다.)
Telephony Service가 하는 역활을 살펴보면, 긴급통화, 음성 통화, SMS, SIM 또는 USIM 관련 기능 (SIM 접근, NFC - Smart Card, USIM 전화번호부) 등의 기능을 들 수 있다.
GSMPhone에서 제공하는 기타 서비스 중에 부가 서비스(SS - Supplementary Service)라는 놈도 존재하게 되는데,
필자 입장은 굳이 따로 나눌필요 없이, Telephony Service의 일종이라고 보면 될 것 같다.
이 부가 서비스는 흔히 우리가 사용하는 통화 중 통화가 오는 경우 대기 (CW - Call Waiting), 통화 중 걸려온 전화를 받는 경우 이전 통화를 잠시 보류하는 경우 (HOLD - Call Hold), 나에게 온 전화를 다른 사람에서 자동으로 전환시키는 경우 (CF - Call Forwarding), 회의 전화라고 해서 동시에 여러 사람이 통화를 하는 경우 (Multi-party Call), 발신번호 표시 제한 서비스 등이 있다.
TFW에서 제공되는 기능을 모두 서술하라고 하면 아래와 같다.
1. Call Service
MO / MT Call (발신 / 착신), 긴급 통화, 착신 전환, 회의 통화 등
2. Data Service / MMS
흔히 사용하는 인터넷, MMS (MMS는 데이터를 사용해 전송하는 기술입니다.)
3. OEM Service
제조사에 의해 추가 된 기능 들
4. ICC (SIM) / UICC (SIM or USIM) [ICC / UICC Phone Book, SAT - SIM Application Toolkit]
SIM또는 USIM 인식, PIN Code, SIM/USIM 전화번호부,
SIM/USIM Application Toolkit (우리나라에서는 거의 사용하지 않으나, 외국에서는 과금 확인, 뉴스 등등의 기능으로 많이 사용하고 있는 기능이다.)
5. SMS
SMS 발신 및 수신
6. Supplementary Service
통화 대기, 통화 보류, 착신 전환, 회의 통화, 발신번호 표시제한 서비스, USSD, 과금 정보 서비스, 발신 / 착신 전화 금지
7. Subscriber Information Service
폰 번호 (MSISDN), 기기 ID (IMEI) 등
8. Network Service
네트워크 자동 / 수동 선택, APN 설정, 유효 네트워크 검색 및 연결, 네트워크 시간 정보 (NITZ), 신호 세기, 네트워크 품질, 네트워크 이름 등
9. CB (Cell Broadcast Message)
기지국에서 재난 방송이나 날씨 정보 등을 전송해 주는 서비스
아래 그림은 간략한 TFW의 구조를 보여주고 있습니다.
'Programing > Android / Java' 카테고리의 다른 글
안드로이드 PhoneProxy.java 소스 분석 및 기능 (What is PhoneProxy?) (0) | 2014.04.16 |
---|---|
안드로이드 PhoneApp.java / PhoneGlobals.java 소스 및 기능 설명 (Whait is PhoneApp?) (0) | 2014.04.16 |
안드로이드 Message 소스 분석 (Android Message.java) (0) | 2014.04.15 |
Android Looper.java (안드로이드 루퍼 소스) (0) | 2014.04.15 |
How to add system property in Android (안드로이드에서 시스템 프로퍼티 추가 방법) (0) | 2014.04.15 |