1. 개요

     Device의 상태는 다양한 Property들을 특성별로 분류하여 Tree형태로 구성한 모양이다. 
     Device Status Module은 Property의 값을 확인하거나 설정하는 작업을 할 수 있는 API를 
     제공하며, Property의 값이 정상적으로 변경됐을 경우 호출되는 Callback을 등록하는 
     방법도 제공한다.
2. Interface
     1) DeviceStatusManager
          – listVocabularies();
             Available한 Vocabulary들을 array of string의 형태로 반한하는 함수.
             Vocabulary는 IRI의 형태로 반환된다.
             ex) var vocabularies = bondi.devicestatus.listVocabularies();
          – setDefaultVocabulary(vocabulary);
             vocabulary가 정의되지 않았을 때 Default Vocabulary를 설정하는 함수.
             Default Vocabulary로 사용하기를 원하는 값은 listVocabularies의 결과에
             포함이 되어 있어야 하며, 만약 없다면 NOT_FOUND_ERROR를 발생시켜야
             한다. Default로는 BONDI vocabulary가 사용된다.
             ex) bondi.devicestatus.setDefaultVocabulary(“http://bondi.omtp.org”);
          – listAspects();
             현재의 vocabulary에서 지원하는 모든 Aspect(ex. Battery, Display, NetworkConnection)
             들을 Array of String의 형태로 반환하는 함수.
             ex) var aspects = bondi.devicestatus.listAspects();
          – getComponents(aspect);
             인자로 받은 Aspect를 구성하는 모든 Component들을 Array of String의 형태로 반환하는 함수
             aspect의 값이 유효하지 않을 경우 INVALID_ARGUMENT_ERROR를 반환한다.
             ex) var cameras = bondi.devicestatus.getComponents({aspect : “Camera”});
                  결과로 cameras[0] : __primary, cameras[1] : __secondary …… 이 할당된다.
          – listProperties(aspect);
             인자로 받은 Aspect의 모든 Property들을 Array of String의 형태로 반환하는 함수
             ex) var props = bondi.devicestatus.listProperties({aspect:’Camera’});
결과로 props[0] : flashOn,  props[1] : maxZoom …… 이 할당된다.
          – getPropertyValue(propRef);
             propRef에 대응하는 값을 반환하는 함수. 이때 PropertyRef Object중 property의 이름은 반드시
             설정되어야 하며, aspect와 components는 의무가 아니다.
             ex) var level = bondi.devicestatus.getPropertyValue({property:”batteryLevel”, 
aspect:”Battery”, component:”_default”});
var level = bondi.devicestatus.getPropertyValue({property:”batteryLevel”,
aspect:”Battery”});
          – setPropertyValue(propRef, value);
             property의 값을 설정하는 함수, 이때 PropertyRef Object중 property의 이름은 반드시
             설정되어야 하며, aspect와 components는 의무가 아니다.
             ex) bondi.devicestatus.setPropertyValue({property:”orientation”, 
aspect:”Display”}, 0);
 
          – watchPropertyChange(propertyName, changeCallback, options);
             property의 값이 변경될때 호출되는 Callback을 등록하는 함수로써 option field를 통해
             특정 상태에서만 호출되도록 설정할 수 있다.
             Detailed Option Field
             – minTimeout : changeCallback이 동작하는 최소시간을 millisecond로 표현한 값, Default = 0
             – maxTimeout : changeCallback이 동작하는 최대시간을 millisecond로 표현한 값, Default = 무한대
                                     maxTimeout은 반드시 minTimeout보다 큰값이어야 한다.
             – callCalbackOnRegister : Callback을 등록한 이후 Callback을 호출할 것인지를 나타내는 값
                                                   Default = false
             – minChangePercent : numeric일 경우 값이 몇 %이상 변경될 경우에만 Callback을 호출하길
                                             원할 때 사용되는 option. 이 값이 20이면 값이 20%이상 변경됐을 때만 
                                             Callback을 호출한다.
          – clearPropertyChange(watchHandle);
             등록한 propertyChangeCallback을 unregister하는 함수.
     2) AspectName
          – aspect : Aspect의 이름
          – vocabulary : Vocabulary의 IRI
     3) PerpertyRef
          – DOMString vocabulary : Vocabulary의 IRI (Optional)
          – DOMString component : Component Identifier (Optional)
          – DOMString aspect : Aspect Name (Optional)
          – DOMString property : Property Name (Mandatory)
Reference)
      1) vocabularies : 다양한 Aspect들이 모여서 vocabulary를 만든다. 이때 vacabularies는 
                     http://bondi.omtp.org/2009/05/vocabulary와 같이 IRI의 형태로
                               제공된다. 
                               http://bondi.omtp.org/1.01/apis/vocabulary.htm
      2) aspects : BONDI가 정한 Aspect들. link참조
                        http://bondi.omtp.org/1.01/apis/vocabulary.htm#aspects
      3) components : __active, __current, __default, __primary, __secondary (aspect의 속성값)
                              http://bondi.omtp.org/1.01/apis/vocabulary.htm#components
      4) properties : aspect를 구성하는 속성값
                           http://bondi.omtp.org/1.01/apis/vocabulary.htm#properties