이 문서는
모듈과 호스트 사이에 주고 받는 데이터를 분석하는 데 꼭 필요한 사항들을 정리했다. 리소스 계층은 가장 복잡한(?) 계층 중 하나다.
여기서 리소스란, 유사한 목적을 위한 object 의 집합이며 또 그 사용법에 대한 프로토콜을 말한다. 각 리소스는 리소스 ID 로 구분된다.
세션 계층으로 부터 받은 data 는 byte 단위의 array 이다. 이 array byte 데이터를 규격에서 제시한 리소스 object 의 데이터 구조를 바꿔서 application layer 로 보내는 역할을 한다.
잠깐, 프로그램 레벨에서 보면, 이제까지 설명했던 순서대로 각각이 task 로 분류되어 있다. 그 중에서 가장 마지막에 수행되는 것이 바로 resource layer 이다. 스펙상으로 본다면, 이 위에 application layer 가 있겠지만, 프로그램 상에서는 따로 task 로 분리하지 않았다. 이 계층 역시, APDU 를 만드는 부분과 파싱하는 부분으로 나뉘어 있다.
APDU 의 기본 스펙
apdu_tag | length_field | data field |
위의 표에서 apdu_tag, length_field 부분이 헤더부분이다. 그리고 나머지가 body 부분이다.
syntax | no.of bits | Mnemonic |
apdu_tag | 24 | uimsbf |
length_field() | ||
data_byte | 8 | uimsbf |
두개의 부분으로 나눌 수 있다. 명령헤더 부분은 apdu_tag, length_field 이 포함된다. body 부분의 변수 길이는 length_field 의 값과 같다.
Resource Manager
리소스 매니저는 host 가 제공하는 resource 이며, class 에 하나의 type 만이 있고 수의 제한 없이 session 을 지원한다. 또한 리소스 매니저는 모든 리소스를 관리한다. 대칭된 통신 프로토콜은 호스트와 모듈사이의 각각이 지원 가능한 리소스를 규정한다.
RM(Resource Manager)의 수행
순서 |
모듈을 넣고 전원을 넣는다. 모듈에서 전송계층을 만든다. application 또는 resource 제공자에게 공급한다. |
profile inquiry
이것은 Profile Reply object를 제공하는 리소스의 리스트와 함께 응답한다. 어떤 기능을 하는 리소스인지 물어본다.
syntax | no. of bits | Mnemonic |
profile_inq_tag | 24 | uimsbf |
length_field()=0 |
profile reply
이 것은 보내는 쪽이 제공할 수 있는 리소스의 리스트와 profile inquiry 의 응답을 보낸다. resource identifiers 는 제공되어질 리소스의 minimum set 을 위한 것이다. 더 나가서, optional resource 는 이 스펙에 추가되어 리스트 되어 정의될 것이다.
syntax | no.of bits | Mnemonic |
profile_reply_tag | 24 | uimsbf |
length_field()=N*4 | ||
resource_identifier() |
profile changed
리소스가 바뀌는 것을 통지하는 역할을 한다. 모듈은 전형적으로 사용한다.
syntax | no.of bits | Mnemonic |
profile_changed_tag | 24 | uimsbf |
length_field()=0 |
Man Machine Interface
호스트 쪽에 있는 리소스이다. 하나 또는 이상의 MMI dialogs 가 초기화될 때, 이 리소스는 오직 하나의 세션을 연다. 이 세션은 normal operation 을 open 하는 동안에 남아있어야 한다.
- POD 가 MMI dialog 를 열도록 한다.
- HOST 는 MMI dialog 가 open 되었었는지 확인한다.
- POD가 MMI dialog 가 close 시킨다.
- HOST 는 MMI dialog 가 close되도록 POD 또는 HOST 가 요청하다.
Open_mmi_req() | POD 는 MMI dialog 가 초기화 될때 Open_mmi_req 를 호스트에 보낸다. |
Open_mmi_cnf() | HOST 는 이러한 요청에 대해 Open_mmi_cnf 로 응답한다. |
Close_mmi_req() | POD 는 Open_mmi_req 가 open 되기 이전에 MMI dialog 를 close_mmi_req 신호에 보내 close 한다. |
Close_mmi_cnf() | HOST 는 close_mmi_req 를 POD 에 보내지 않고, Close_mmi_cnf 를 보낸다. |
Application Information
이 것은 호스트 쪽에서 제공한다. resource manager 리소스가 성공적으로 profile 을 inqury 한 후에, 오직 하나의 세션을 open 한다.
- HOST가 POD 에 문자들을 보이게 한다.
- POD 가 application 을을 호스트에서 보이게 한다.
- POD 가 HTML 페이지를 HOST 로 보낸다.
Application_info_req | 호스트는 application information 리소스가 open 되어 보내어지면, APDU 는 POD 에 광고를 뿌린다. |
Application_info_cnf | POD 는 이에 대한 응답으로 이 신호를 보낸다. |
Server_Query | 호스트는 특별한 URL을 가리키는 POD 파일의 정보를 요청하는 POD 에게 Server_query() 를 보내다. |
Server_Reply | URL 을 받을 때, POD 의 위치나, 요구하는 데이터, server_reply() 안에 들어있다. |
Low Speed Communication
이 리소스는 Forward Data Channel, Reverse Data Channel 그리고, 호스트 모뎀의 동작의 속성을 지원하기 위해 사용된다.
또한 이 것은 OOB 나 POD-HOST 의 up/down stream 을 의미하지 않는다.
Conditional Access
POD 는 CA_UPDATE 를 통해서 CA states 가 바뀌었음을 호스트에 알린다. 새로운 버전의 CA 리소스는 CA_UPDATE APDU 에 process 된다.
또한 이 리소스는 object 세트를 conditional access application 에 제공한다. 이 것은 리소스 매니저와 같이 세션의 제한이 없고, 오직 host 에 의해서 제공된다.
모든 ca application 들은 그들의 application 들이 초기화가 완료되자마자, 세션을 만든다. 호스트는 ca info inquiry 를 ca info 와 함께 적합한 정보가 오면, application 으로 보낸다.
- CA_update : POD 모듈은 현재의 프로그램의 tune 의 바뀜을 CA Information 으로 CA_update 를 이용해서 HOST 로 보낸다.
- CA_info_inquiry : POD 쪽에서 올바른 정보(ca_info)가 오면, 호스트가 이신호를 보낸다.
- CA_info : POD 가 보내는 ca 관련한 정보
- Select of services to be descrambled : CA_PMT 는 호스트에 의해 하나 또는 여러개의 CA applications 차례로 기본적인 스트림의
Copy Protection
이것은
Host Control
이 것은 host rf receiver 와 rf transmitter setup 을 POD 모듈에 보낸다. 부가적으로 이 버전은 OOB 와 inband 를 포함하고 있다. host control 의 open 세션의 요청없이 내부의 튜닝이 수행됨이 예상된다.
Extend Channel
이는 extend channel 을 목적으로 하는 것으로서, POD 또는 HOST 가 physical 통신을 headend 로 보내는 'link device' 이다. POD 모듈은 QPSK 모뎀을 위한 link device 이다. host 는 high speed host modem 을 위한 link device 이다. extend channel resource 는 extended channel 로 부터 데이터를 주고 받는 application 을 등록하고 만든다.
Generic IPPV
이 것은 conditional access information 이 호스트에 있는 navigation application 이 제공한다. 이 것은 구독한 pay per view 기능에 접근을 허용한다. 예를 들면, 구문이나. 삭제되고, history view..
이것은 좀더 구독자들의 승인과 IPPV 사용량의 증가를 원한다.
Specific Application
이 것은 POD 또는 호스트가 인터페이스에 접근하는 오브젝트들의 private set 과의 통신이 필요하거나, vendor-specific application 의 사용을 위한 리소스이다. 이 리소스를 지원하기 위해 호스트와 POD 가 요청한다.
Homing Resource
이 것은 POD 모듈이 호스트가 standby 상태로 있을 때, 호스트로 부터 specific 서비스를 요청하는 것을 허용한다. 호스트가 standby 상태이면, 오직 'immediate' 모드를 지원할 것이다 .
Generic Diagnostic
진단 리소스는 호스트가 POD 가 요청하면, 상태와 결과를 진단해서 알려준다.
System Time
이것은 호스트에 의해 제공되며, 세션의 수에 제한이 없다. application 가 리소스에게 세션을 만들고, system time inquiry 오브젝트와 함께 현재 시간을 묻는다. 만일 response_interval 의 값이 0 이면, 응답은 single system_time object 가 곧바로 올것이다. 만일 값이 0 이 아니면, 매번 response_interval 시간 만큼 더 느려질 것이다.