AllJoyn 이해 - Base Service의 Control Panel 개념 정리
Allseen Alliance에 소개되어 있는 AllJoyn Base Service의 Control Panel 내용을 이해하기 위해 아래와 같이 해석해서 정리해 보았습니다. 개발자 입장에서 볼 때 새로운 용어나 개념의 이해가 선행되어야 코드상에서의 접근이 용이하다는 것은 중요한 점입니다. 많은 용어와 개념들을 가능한한 원문 형태로 이해하는것이 가장 빠른 방법입니다.
(원문 참조 : https://allseenalliance.org/developers/learn/base-services/controlpanel )
컨트롤 패널 서비스는 위젯 요소들을 생성하기 위한 코드 생성기와 하이레벨 API의 사용을 허용함으로써 AllJoyn 컨트롤 패널 인터페이스의 세부사항을 추상화 합니다. 컨트롤 패널은 어떻게 UI를 보여야한다고 지시하지 않습니다. 단지 무엇을 할 수 있는 요소인지, 스크린상에 어디에 표시해야하는지, 다른 어플리케이션들과 동기화와 관련된 힌트/정보를 제공합니다.
두가지 역할이 있습니다. Control Panel 사용자가 디바이스들과 상호작용하도록 하게 하는 것은 위젯들의 컬렉션입니다. 컨트롤 패널은 Controlee에 의해 정의되고 공표됩니다. 그리고 Controller에 의해 발견되고 디스플레이 됩니다. 디바이스는 Controller나 Controllee 하나 이상이 있을수 있으며, 해당 언어에 기반하여 정의될 수 있습니다.
Control Panel Service Code Generator 코드를 생성을 돕는 툴이며 컨트롤 패널에 대응될 것 입니다. 이 툴은 특정 컨트롤 패널의 구현에 알맞은 코드를 생성하고 컨트롤 패널 위젯들을 정의하는 XML파일을 가집니다. XML은 컨트롤 패널 서비스내의 위젯들의 내부 표현으로 사용되지 않을것과 또한 컨트롤러에 전송하는것도 아님을 유의해야 합니다.
Type of widgets modules 컨트롤 패널은 XML로 표현될 수 있습니다. 코드생성기를 통해 공급되고, 개발자의 소프트웨어에 연결할 수 있습니다. 아래의 UI요소들이 컨트롤 패널을 형성합니다.
UI Adaptive Layer 컨트롤 패널을 사용하고 상호작용 하기 위해 제공되는 도우미 라이브러리는 프레임워크의 일부로 사용할 수 있습니다. 이 소프트웨어 레이어의 목적은 서비스 레벨 Discovery를 통해 발견된 컨트롤 패널 인터페이스의 객체 경로에서 시작된 AllJoyn Introspection을 사용한 위젯의 발견을 용이하게하는 것 입니다.
그런다음 각각의 하위가 있는지 그리고 발견된 위젯과 상호작용할 네이티브 플랫폼 UI요소를 생성하는 것을 결정하기 위해 이 경로의 하위를 파싱합니다.
네이티브 플랫폼 요소들은 주어진 플랫폼의 기본 UI 입니다. 안드로이드 상의 버튼은 디폴트 안드로이드 버튼과 같이 보입니다. iOS 디바이스상의 버튼은 해당 OS의 디폴트 버튼의 모습으로 보일 것이며 다른 OS의 그것과는 다르게 보입니다. 개발자는 사용자 정의 룩&필을 제공하기 위해 각 플랫폼 위젯들의 생성을 오버로드할 수 있는 옵션이 있습니다.
컨트롤 패널을 구현하기 위한 간단하고 가장 일반적인 방법은 컨트롤 패널을 나타내는 XML파일을 생성하는 것 입니다. 이 파일은 코드생성기를 통과하여 위젯들이 상호작용할때 연결되는 개발자 메소드를 포함한 헤더파일을 취하게 될 것입니다. 코드 생성기는 컨트롤 패널 서비스 API의 사용과 컨트롤 패널을 제공하기 위한 클래스들을 만드는 소스트웨어가 포함되어 생성된 폴더를 제공할 것입니다. 어플리케이션이 컨트롤 패널을 발견하면, 컨트롤 패널 서비스는 랜더링하는데 필요한 세부정보를 수집하는 AllJoyn BusOjbect 트리를 탐색할 수 있는 AllJoyn Introspection을 수행합니다. 이 정보는 루트 UI요소를 생성하는 처리를 위해 UI Adpative Layer로 전달됩니다. UI요소들은 전송될 수 있고 기본 요소는 디스플레이에 추가됩니다.
어떤 위젯이 상호작용하고 있을때, 사용자에 의해 Controllee 디바이이스로 돌아가는 것을 만들수 있는 AllJoyn Bus Method 호출을 일으킵니다. 그리고 나서 UI에 따른 상태를 변경하고, 주어진 메소드를 실행하기 위한 디바이스 코드를 야기하고, 다른 연결된 어플리케이션들에 상태를 유지하기 위한 AllJoyn 신호를 보냅니다.
AllJoyn 신호는 시스템에 내장되어 있으며 같은 디바스에 여러 사용자들이 상호작용하고 있을때 혼동을 피하기위해 항상 동기화 될 수 있는 슬라이더, 스피너 등을 허용합니다.
(원문 참조 : https://allseenalliance.org/developers/learn/base-services/controlpanel )
CONTROL PANEL SERVICE
AllJoyn® Control Panel Service 프레임워크는 어플리케이션이 원격 디바이스들과 상호작용 하도록 설정하는 UI위젯을 만들수 있는 간단한 방법을 제공합니다. 프레임워크는 특정한 개체 경로에 구현될때, 원격 디바이스의 UI상에 위젯들의 동적인 표현을 할 수 있는 인터페이스들의 표준 셋으로 구성됩니다.Concepts and Terminology
Contoller 와 Controllee- Controller. 이것은 컨트롤 패널을 표시하는 어플리케이션 입니다.
- Controlee. 이것은 컨트롤 패널을 광고하는 어플리케이션 입니다.
- Container. UI 요소 컨테이너입니다. 위젯들의 그룹화가 가능합니다. 적어도 하나의 하위 요소를 포함해야 합니다.
- Label. 텍스트로 된 읽기전용 레이블과 같은 UI 요소 입니다.
- Action. Controlee 상에서 코드를 실행하거나 실행전에 확인과 같은 대화상자 위젯을 열기위한 버튼으로 표현되는 UI 요소 입니다.
- Dialog. 대화상자 UI 요소 입니다. 대화상자 메시지를 가지며 3개까지의 선택 버튼을 가집니다.
- Property. 값을 표시하고 그것을 편집할 하는데 사용되는 UI 요소 입니다. 이 위젯들은 힌트속성을 통해 슬라이더, 스피너, 라디오버튼 등을 표시하는데 사용됩니다.
How Does It Work?
비결은, 복잡한 위젯들을 생성하기 위한 빌딩 블록을 구성하는 많은 인터페이스들이 있습니다. 이 인터페이스들은, 특정한 객체 경로 상의 BusObject에 의해 구현될때 언어, 위젯, 텍스트 그리고 제약조건을 결정합니다. 컨트롤 패널 서비스는 지원하는 클래스와 API를 통해 명확한 위젯을 구현하고 어떻게 위젯을 표시하는지, 어플리케이션간에 동기화를 위한 신호, 디폴트 값/제약사항을 자동으로 제공하는 BusObject를 등록하기위한 AllJoyn 프레임워크의 간단한 사용을 허용합니다.컨트롤 패널을 구현하기 위한 간단하고 가장 일반적인 방법은 컨트롤 패널을 나타내는 XML파일을 생성하는 것 입니다. 이 파일은 코드생성기를 통과하여 위젯들이 상호작용할때 연결되는 개발자 메소드를 포함한 헤더파일을 취하게 될 것입니다. 코드 생성기는 컨트롤 패널 서비스 API의 사용과 컨트롤 패널을 제공하기 위한 클래스들을 만드는 소스트웨어가 포함되어 생성된 폴더를 제공할 것입니다. 어플리케이션이 컨트롤 패널을 발견하면, 컨트롤 패널 서비스는 랜더링하는데 필요한 세부정보를 수집하는 AllJoyn BusOjbect 트리를 탐색할 수 있는 AllJoyn Introspection을 수행합니다. 이 정보는 루트 UI요소를 생성하는 처리를 위해 UI Adpative Layer로 전달됩니다. UI요소들은 전송될 수 있고 기본 요소는 디스플레이에 추가됩니다.
어떤 위젯이 상호작용하고 있을때, 사용자에 의해 Controllee 디바이이스로 돌아가는 것을 만들수 있는 AllJoyn Bus Method 호출을 일으킵니다. 그리고 나서 UI에 따른 상태를 변경하고, 주어진 메소드를 실행하기 위한 디바이스 코드를 야기하고, 다른 연결된 어플리케이션들에 상태를 유지하기 위한 AllJoyn 신호를 보냅니다.
댓글
댓글 쓰기