KR20060071749A - 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법 - Google Patents

홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법 Download PDF

Info

Publication number
KR20060071749A
KR20060071749A KR1020040110725A KR20040110725A KR20060071749A KR 20060071749 A KR20060071749 A KR 20060071749A KR 1020040110725 A KR1020040110725 A KR 1020040110725A KR 20040110725 A KR20040110725 A KR 20040110725A KR 20060071749 A KR20060071749 A KR 20060071749A
Authority
KR
South Korea
Prior art keywords
library
network
command
home network
event
Prior art date
Application number
KR1020040110725A
Other languages
English (en)
Inventor
박진성
Original Assignee
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to KR1020040110725A priority Critical patent/KR20060071749A/ko
Priority to US11/315,539 priority patent/US8019855B2/en
Publication of KR20060071749A publication Critical patent/KR20060071749A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2807Exchanging configuration information on appliance services in a home automation network
    • H04L12/2814Exchanging control software or macros for controlling appliance services in a home automation network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Automation & Control Theory (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은, 홈 네트워크를 대상으로 운영되는 각종 어플리케이션과 라이브러리의 호환성을 확보할 수 있는 표준 인터페이싱 방법에 관한 것으로서, 본 발명에 의한 기기의 부가기능 설정방법은, 어플리케이션이, 네트워크에 연결된 기기가 살아있는 지를 판단하기 위한 시간을 설정하는 함수루틴을 상기 라이브러리에 호출하되, 그 입력변수로 시간을 부가하여 호출하고, 상기 라이브러리는, 상기 입력변수의 시간 간격으로, 살아있음을 알리는 메시지를 주기적으로 송신하도록 명령하는 메시지를 상기 네트워크에 연결된 기기에 송신한다.
홈네트워크, 라이브러리, 주소, 시간, 주기, alive

Description

홈 네트워크 마스터의 어플리케이션과 라이브러리의 인터페이싱 방법 {Interfacing method between application and library of a master on home network}
도 1은 본 발명에 따른 홈 네트워크 라이브러리와의 인터페이싱 방법에 적용되는 서버와 홈 네트워크의 구조를 개략적으로 도시한 것이고,
도 2는 도 1의 장치의 초기 구동시, 어플리케이션과 라이브러리간의 동작 수행절차를 도시한 것이고,
도 3a는 도 1의 라이브러리가 이벤트를 개별적으로 구분하여 처리하는 과정을 도시한 것이고,
도 3b는 도 1의 라이브러리가 모든 이벤트를 통합하여 처리하는 과정을 도시한 것이고,
도 4는, 어플리케이션과 라이브러리간에 정의되는, 홈 네트워크의 기기를 개별적으로 조회/변경/제어하기 위해 필요한 커맨드의 구조를 예시한 것이고,
도 5a내지 5c는 라이브러리가 홈 네트워크의 각 디바이스들에 홈 코드를 설정하는 과정을 예시한 것이고,
도 6은 홈 네트워크상에서 하나의 디바이스에 주소가 할당되는 과정에 대한 흐름도이다.
※ 도면의 주요부분에 대한 부호의 설명
100: 제어 어플리케이션 110: 라이브러리
120: 물리적 인터페이스 200: 물리적 통신망
301, 302: 홈 네트워크 기기
본 발명은, 홈 네트워크를 위한 서버에서 컨트롤 어플리케이션과 같은 프로그램이 네트워크에 있는 원격의 디바이스를 억세스하기 위한 라이브러리(Library)와의 인터페이싱 방법에 관한 것이다.
댁내에는 많은 가전기기들의 보급되고 있어서, 이들의 집중관리하는 것이 필요해 지고 있다. 이러한 추세에 따라 홈 네트워크가 도입되고 있으며, 홈 네트워크를 구축하기 위한 물리적 망으로서 랜이나 전력선 통신 등이 제안되고 있다. 홈 네트워크에는 많은 전자제품들이 접속되고 이 전자제품들은 그 제조업체가 다를 수 있다.
제조업체가 다르면 홈 네트워크에 억세스할 수 있게 그 제품과 함께 제공하는 라이브러리도 또한 다를 수 있으며, 이 라이브러리가 다르면 컨트롤 프로그램과 같은 응용 어플리케이션과의 인터페이스도 또한 달라진다.
이와 같이 인터페이스 방법이 달라지면 응용 어플리케이션은 특정한 라이브러리가 동작하는 디바이스에서만 동작하게 되므로 호환성이 보장되지 못한다. 또한, 홈 네트워크를 위해 제공한 라이브러리 개발업체가 상이하면 응용 어플리케이션도 그에 맞추어 구입해야 하는 등의 호환성 문제도 발생한다.
따라서, 본 발명은, 홈 네트워크를 대상으로 운영되는 각종 어플리케이션과 라이브러리의 호환성을 확보할 수 있는 표준 인터페이싱 방법을 제공하는 것에 그 목적이 있다.
상기의 목적을 달성하기 위한 본 발명은, 홈 네트워크 기기의 목록을 조회하는 방법을 제공한다.
또한, 본 발명은, 홈 네트워크 기기의 상세정보를 조회하는 방법을 제공한다.
또한, 본 발명은, 홈 네트워크 기기의 목록 변경, 예를 들어 기기의 삭제, 추가 등을 행하는 방법을 제공한다.
또한, 본 발명은, 홈 네트워크의 마스터(서버)에서의 어플리케이션과 라이브러리간의 구동순서에 대한 방법을 제공한다.
또한, 본 발명은, 홈 네트워크 기기의 상태를 변경 통지하는 방법을 제공한다.
또한, 본 발명은, 홈 네트워크 기기의 상태를 개별적으로 확인하는 방법을 제공한다.
또한, 본 발명은, 홈 네트워크 기기를 개별적으로 제어하는 방법을 제공한다.
또한, 본 발명은, 홈 네트워크의 서버에서의 어플리케이션과 라이브러리간의 커맨드 동기를 위한 방법을 제공한다.
또한, 본 발명은, 홈 네트워크의 구축시 필요한, 네트워크의 유일 식별자인 홈코드(home code)를 설정하는 방법을 제공한다.
또한 본 발명은, 홈 네트워크 기기의 주소를 설정/변경하는 방법을 제공한다.
또한, 본 발명은, 홈 네트워크 기기의 동작옵션, 예를 들어 alive상태 보고주기, 시간, 이벤트 보고 활성화 등을 설정하는 방법을 제공한다.
이하, 본 발명에 따른 홈 네트워크 라이브러리와의 인터페이싱 방법에 대해 상세히 설명한다.
도 1은 본 발명에 따른 홈 네트워크 라이브러리와의 인터페이싱 방법에 적용되는 서버와 홈 네트워크의 구조를 개략적으로 도시한 것이다.
본 발명에 따른 인터페이싱 방법이 적용되는 서버는, 홈 네트워크의 운영 프로그램과 같은 사용자 어플리케이션(100), 홈 네트워크를 억세스하기 위한 필요한 모든 함수와 실행 루틴들이 포함되어 있는 라이브러리(110)( 이 라이브러리는 LnCP( Living Network Control Protocol) 라이브러리로도 호칭된다 ), 전력선 또는 랜 케이블과 같은 물리적 통신망(200)에 접속하기 위한 물리적 인터페이스(120)를 포함한다. 그리고, 도 1의 홈 네트워크에는 상기 서버에 의해 제어되는 원격 디바이스(301,302)도 도시되어 있다. 이 들 디바이스는 상기 라이브러리(110)의 실행루 틴에 의해 그 상태가 조회, 변경 및/또는 제어되며, 이러한 동작을 위한 명령 등은 상기 사용자 어플리케이션( 이하, 제어 어플리케이션이라 함 )(100)에서 상기 라이브러리(110)의 API의 정의에 따라 호출되는 데 이하에서는 이에 대해서 상세히 설명한다.
먼저, 서버가 홈 네트워크에 살아있는 디바이스를 조회하는 방법에 대해 설명한다.
상기 제어 어플리케이션(100)은 홈 네트워크에 연결된 기기의 목록을 알기 위해 상기 라이브러리(110)에 다음의 함수 콜을 한다.
get_active_device_list(&active_device_list);
그러면, 상기 라이브러리(110)는, Input argument( 즉, &active_device_list(active_device_list의 포인터) )에 네트워크에 살아있는(활성화된) 디바이스들의 정보를 실는다. 정보를 실는 리스트내에는 총 디바이스의 개수와 디바이스 리스트가 있는 데, 각 디바이스에 대한 정보의 구조는 다음과 같다.
typedef struct device {
device_descriptor_t dd;
device_type_t device_type;
device_mode_t device_mode;
} device_t;
리스트 개개의 기기 정보는 프로토콜 인덱스, device descriptor의 정보, 그 유형 그리고 모드정보를 포함한다. 유형정보는 그 기기의 종류, 예를 들면 냉장 고 또는 세탁기와 같은 것을 지정하는 것이고, 모드 정보는 그 기기가 마스터인지 슬레이브인지를 지정하는 값이다.
한편, 상기 라이브러리(110)는 살아있는 디바이스의 정보를 상기 제어 어플리케이션(100)에 전달할 때, 각 살아있는 디바이스 각각에 대해 필요한 메모리 공간을 위해 내부 메모리를 할당한다.
이후, 상기 제어 어플리케이션(100)이 살아있는 디바이스들의 사용( 또는 제어 )의 필요성이 없을 때는 라이브러리(110)에 할당된 메모리를 해제하도록 하기 위해 다음의 명령에 의해 active_list 를 해제한다
release_active_device_list(&active_device_list);
다음으로, 서버가 홈 네트워크에 살아있는 디바이스를 좀 더 상세히 조회하는 방법에 대해 설명한다.
이 때는, 상기 제어 어플리케이션(100)은 다음 함수를 이용하여 리턴값에 주소, 디바이스 종류, 모델명, 위치 정보를 상기 라이브러리(110)가 실도록 함으로써 요청한 디바이스에 대해 상세히 조회할 수 있다.
get_device_info_by_dd(device_descriptor_t dd, device_info_t *ret_entry)
여기서, dd는 디바이스를 네트워크상에서 유일하게 식별케하는 정보( device descriptor )이며, ret_entry의 포인터에는 다음 구조를 갖는 정보가 상기 라이브러리(110)에 의해 실린다.
typedef struct device_info{
device_descriptor_t dd;
unsigned short address;
device_type_t device_type;
char model[MAX_MODEL_NAME_LEN];
unsigned char location;
} device_info_t;
address는 유형(type)과 그 유형에서의 일련번호가 조합된 값이며, model은 그 모델명이 실리는 텍스트이며, location은 댁내에 위치한 곳에 대한 정보이다. 예를 들면, 거실, 안방 등이다.
상기와 같은 조회 명령에 의해 특정 디바이스에 대한 정보를 획득하면 상기 제어 어플리케이션(100)은 사용자가 요청하는 적당한 제어 명령을 상기 라이브러리(110)에 호출하고, 해당 디바이스에 대한 정보가 필요없다고 판단되면 그 디바이스를 해제하는 명령을 상기 라이브러리(110)에 호출함으로써, 상기 라이브러리(110)가 할당해 둔 메모리를 다른 용도로 다시 사용할 수 있게 한다.
다음으로, 상기 제어 어플리케이션(100)이 특정 디바이스를 홈 네트워크상에서 제거하는 방법에 대해 설명한다.
상기 제어 어플리케이션(100)은 디바이스 삭제 이벤트와 그 이벤트의 발생시 콜백 받을 함수를 다음 함수를 호출함에 의해 상기 라이브러리(110)에 등록한다.
add_sys_event_func_entry(EVT_SYSTEM_PLUG_OUT, plugout_event_handler);
상기 라이브러리(110)는 홈 네트워크상에서 EVT_STSTEM_PLUG_OUT( 플러그 아웃 이벤트로 지정된 값 )의 이벤트가 발생하면 상기 등록한 콜백 함수 (plug_out_event_handler)를 호출한다. 이 때, 그 호출된 함수의 입력변수에 dd(device descriptor or protocol index)값을 싣는다. 즉, 다음과 같이 상기 라이브러리(110)로 부터 상기 제어 어플리케이션(100)내의 루틴이 호출된다.
plugout_event_handler (sys_event_value_t dd);
그러면, 상기 plugout_event_handler 루틴은 해당 기기를 자신이 관리하고 있는 디바이스 리스트에서 삭제한다.
만약, 상기와 같은 삭제 이벤트의 상기 라이브러리(110)에의 등록 후, 디바이스 삭제 이벤트를 더 이상 받고 싶지 않으면 이미 등록시킨 콜백 함수를 다음과 같은 함수 호출에 의해 해제 한다. 해제하는 것은 해제 함수의 인자값에 해제하고 싶은 이벤트, 콜백받을 등록 함수를 입력한다.
del_sys_event_func_entry(EVT_SYSTEM_PLUG_OUT, plugout_event_handler);
디바이스의 추가인 경우는 디바이스 삭제 이벤트 등록 및 콜백함수에 의한 실행과정과 동일하지만 호출할 때 사용하는 추가하는 이벤트의 값(EVT_SYSTEM_ACTIVE_DEVICE_ADD)이 다르고 또한, 추가 이벤트 처리를 위한 콜백루틴에서는 디바이스가 추가 되었다는 것을 사용자에게 알려주거나 추가된 것에 대한 처리를 해준다.
네트워크에 기기가 다시 연결되었을때를 위한 처리과정은 위의 디바이스 추가와 동일하고 (이벤트 값도 EVT_SYSTEM_ACTIVE_DEVICE_ADD를 사용) 사용자 처리는 동일 또는 매우 유시하다. 즉, 사용자에게 알려주는 메시지가 다소 상이할 수 있다.
한편, 도 1의 서버내의 제어 어플리케이션과 라이브러리간의 동작이 정상적으로 이루어지기 위해서는 상호간의 함수호출이나 정보의 교환이 정해진 절차에 따라 이루어져야 이후의 동작이 정상적으로 수행될 수 있다.
도 2는 이에 대한 실시예의 흐름도이다. 먼저, 상기 제어 어플리케이션(100)은 구동되면 필요한 사용자 UI를 구동한다(S21). 그리고, 상기 라이브러리(110)의 초기화를 요청한다(S22). 이 때, 제어할 각 디바이스들에 대한 기본 정보들( 예를 들어, 통신포트, 그 포트의 baudrate 등 )이 라이브러리(110)에 전달된다. 그리고, 앞서 설명한 바와 같이, 살아있는 디바이스들을 조회하고 이들에 대한 초기화를 요청한다(S23). 또한, 처리할 이벤트, 예를 들어 플러그-인 또는 플러그-아웃 등과 그들에 대한 이벤트 핸들러, 즉 콜백 함수들을 각가 등록한다(S24). 이와 같은 과정이 순서대로 수행되고 나면, 상기 LnCP 라이브러리(110)는 홈 네트워크상에서 각조 디바이스들로 부터 이벤트가 발생되면, 자신에게 등록된 해당하는 콜백함수를 호출함으로써 이벤트에 대한 적절한 동작이 이루어지도록 한다(S25).
만약, 상기 제어 어플리케이션(100)은 필요하다면 자신이 등록한 이벤트 및 함수를 해제시키기 위한 함수호출을 수행할 수도 있다.
다음으로, 디바이스의 상태가 변경통지되게 하는 방법에 대해 설명한다. 홈네트워크의 기능을 지원하는 기기의 경우, 디바이스의 상태(예를 들어 전원 상태, 동작 상태, 온도값, 운전모드, 선택코스 등)가 변경되면 디바이스 자체적으로 이벤트를 발생시키도록 되어 있는 데, 이벤트 발생시에는 이벤트의 유형을 알려주는 이벤트 코드와 그 이벤트가 발생한 상태의 값인 이벤트 값이 전달된다.
이를 위해서, 먼저, 상기 제어 어플리케이션(100)은 상기 라이브러리(110)에 해당 이벤트를 처리하기 위한 이벤트 콜백함수를 등록한다. 이벤트를 처리하는 콜백함수는 각각의 이벤트를 처리하는 경우와 모든 이벤트를 받아서 처리하는 경우 두 가지로 나뉠 수 있다.
첫째, 각각의 이벤트를 처리하는 경우는 다음과 같이 정의된 user_event_func_t 타입의 함수를 device descriptor 'dd'와 event code 'ec'로 상기 라이브러리(110)에 등록한다.
typedef void(*user_event_func_t) (event_value1_t event_value);
int add_event_handler(device_descriptor_t dd, event_code_t ec, user_event_func_t uefunc);
여기서 ec는 상기 라이브러리(110)로부터 보고받을 이벤트의 유형에 대한 것이며, uefunc는 콜백함수의 포인터이다.
상기 라이브러리(110)은 어떤 event가 발생되면, 자신이 관리하고 있는 hash table에서 device descriptor와 event code를 찾아서 해당 function, 즉, 등록된 uefunc의 포인터를 호출함으로써 콜백한다( 도 3a의 301과정 ). 이 때, uefunc의 입력변수로서 'event_value'를 싣는다. 이는 이벤트가 발생한 상태값인 데, 이 값에 따라서 상기 제어 어플리케이션(110)은 사용자에게 알려주거나 그 값에 대해 지정된 적절한 동작이 있으면 이를 수행한다.
둘째, 모든 이벤트를 처리하기 위해서는 경우는 다음과 같이 정의된 user_all_event_func_t 타입의 함수를 상기 라이브러리(110)에 등록한다.
typedef void (*user_all_event_func_t) (unsigned short device_addr, unsigned char size, unsigned char *event_data);
int add_all_event_handler(user_all_event_func_t func);
이 함수가 상기 라이브러리(110)에 등록되면, 네트워크상의 어떤 디바이스로부터 어떤 이벤트가 발생되어도,상기 라이브러리(110)는 항상 user_all_event_func_t로 정의된 함수 'func'를 콜백한다( 도 3b의 302과정 ). 대신, 상기 라이브러리(110)가, 그 이벤트를 발생시킨 디바이스를 특정하고 이벤트를 확인할 수 있도록 device_addr( 홈 네트워크에서 하나의 디바이스를 특정하기 위한 유형 및 일련번호에 대한 것 )와 *event_data를 입력변수로 하여 콜백한다. event_data의 포인터에는 이벤트의 코드와 값이 포함될 수 있다.
콜백된 상기 제어 어플리케이션(100)내의 루틴은 받은 parameter의 정보에 근거하여 해당 event를 적절히 처리하는 과정을 수행하게 된다.
다음으로, 상기 제어 어플리케이션(100)이 상기 라이브러리(110)의 루틴 호출을 통해 디바이스를 개별적으로 제어하는 방법에 대해서 설명한다.
먼저, 상기 제어 어플리케이션(100)에서 상기 라이브러리(110)내의 디바이스 제어 함수를 호출하기 위해서는 다음과 같은 정보가 정해져야한다.
먼저, 제어하고자하는 디바이스의 ID(device descriptor)와 수행하고자 하는 명령의 command code를 알고 있어야 한다. command code는 라이브러리 내부적으로 제공할 수도 있다. 그리고, 각 제어의 특징상 필요한 input parameter, 예를 들어 세탁기를 전원을 제어하기 위해서는 전원을 켜는지(POWER_ON) 전원을 끄는지 (POWER_OFF)에 대한 argument를 입력하여야 한다.
사용자 프로그램의 특성에 따라 해당 명령의 수행이 모두 끝난 후에 응답을 받을지(Synchronize mode), 명령이 전달되면 바로 함수를 return 할지(Asynchronize mode)와 Synchronize mode에서 응답을 받을때까지 기다릴 시간과 같은 command option이 필요하다.
상기와 같이 필요한 argument가 부가되어 디바이스 제어함수가 호출되면, 상기 라이브러리(110)는 그 argument를 도 4에 정의된 command option을 command_t의 구조체에 담아서 내부 control_device 함수를 호출한다.
도 4의 command_t의 구조에는, 명령코드(cc), command_args_t의 구조(401)를 갖는 args변수, command_ret_t구조(402)를 갖는 rets변수, 그리고 command_option_t의 구조( 이에 대해서는 후술한다 )를 갖는 option변수가 포함되는 데, 입력변수 cc, args, 그리고 option의 값은 사용자 입력에 근거하여 결정된다. 그리고, command_args_t의 구조(401)와 command_ret_t구조(402)내의 var_arg와 var_ret의 필드는 명령과 응답시에 부가되는 메시지에 대한 포인터이이다.
해당 내부 control_device 함수에서는 제어하는 디바이스의 주소와 command code를 key로 하여 응답을 처리할 함수를 등록한 후, 실제 디바이스를 제어하기 위한 프로토콜 패킷을 생성하여 Physical Interface(200)를 통해서 디바이스(301 또는 302)로 전송한다.
상기 패킷의 전송 후에 응답을 받으면, 앞서 등록한 응답을 처리할 함수를 호출하여 해당 응답을 처리하는 데, 만약 디바이스로부터 받은 응답에 필요한 정보 가 있으면, 이를 command_t의 구조체에 담아서 리턴한다. 이 return에 의해 제어권을 넘겨받은 디바이스 제어 함수에서는, command_t의 구조체를 풀어 해당 함수의 output parameter에 담은 다음, 제어 결과와 output parameter를 상기 제어 어플리케이션(100)으로 리턴함으로써 사용자가 요청한 또는 상기 제어 어플리케이션(100)이 요청한 개별 디바이스에 대한 제어동작을 완료한다.
다음으로, 상기 제어 어플리케이션(100)이 상기 라이브러리(110)의 루틴 호출을 통해 개별 디바이스의 상태를 조회하는 방법에 대해서 설명한다.
개별 디바이스의 상태 조회는 앞서 개별적으로 디바이스를 제어하는 방법과 다음의 점을 제외하고는 동일하다.
디바이스의 조회(모니터링) 함수는 디바이스에서 해당 명령의 수행이 모두 끝난 후에 응답을 받아야 하므로 항상 동기(synchronized) 모드여야 하며, 따라서, 응답을 받을 때까지 기다릴 시간을 지정해야할 필요가 있다. 명령의 모드와 시간의 지정은 다음과 같은 구조의 command option으로 주어진다.
typedef struct command_option {
unsigned char async;
unsigned long wait_time; // sec. 단위
} command_option_t;
async는 SYNC_COMMAND또는 ASYNC_COMMAND로 지정하는 값( 0 또는 1 )을 가지며, SYNC_COMMAND는 사용자( 제어 어플리케이션(100) )가 명령을 보내고 그 명령에 대한 답변을 기다리겠다는 뜻이며, ASYNC_COMMAND는 사용자가 명령을 보내고 그 명 령에 대한 답변을 기다리지 않겠다는 의미이다.
async의 값을 SYNC_COMMAND로 설정을 하는 경우는, 명령을 보낸 시간부터 시작해서 wait_time에 설정된 시간만큼 기다리고 그 안에 답변이 오면 정상 종료, 그렇지 않으면 상기 제어 어플리케이션(100)은 TIME OUT의 이벤트에 따른 동작을 실행하게 된다. async의 값이 ASYNC_COMMAND일 때 wait_time의 값은 상기 라이브러리(110)에 의해 무시된다.
상기 제어 어플리케이션(100)과 라이브러리(110)간에 전체 커맨드에 대한 옵션을 공유하기 위해 command_option_t에 의한 구조체를 다음과 같이 전역(global) 변수로 지정하여 이용할 수도 있다.
static command_option_t *func_option
또한, 상기 제어 어플리케이션(100)과 라이브러리(110)간에 동시에 요청되는 명령들이 다수일 수 있으므로, command_option의 구조를 다음과 같이, 그 옵션을 갖는 커맨드를 식별케하는 커맨드 코드를 더 포함하게 할 수 있다.
typedef struct command_option {
unsigned char cc; // 커맨트 코드
unsigned char async;
unsigned long wait_time; // sec. 단위
} command_option_t;
이와 같이 정의하는 경우, 복수의 명령들에 대해 복수개의 광역변수를 설정함으로써, 커맨트별로 구분하여 상기 제어 어플리케이션(100)과 상기 라이브러리 (110)간에 해당 명령이 동기 또는 비동기로 적절히 동작할 수 있다.
이하에서는, 홈 네트워크를 초기 또는 변경설정하는 방법에 대해 상세히 설명한다.
먼저, 홈 네트워크를 초기 설정하는 방법에 대해 설명한다.
한 집안의 독립적인 네트위크를 구성하기 위해서 홈코드(Home Code)라는 것을 사용한다. 홈코드는 그 집의 유일하고 독립적인 코드 로서 홈코드가 같은 홈네트워크 기기끼리만 통신이 되게 된다. 이러한 Home code는 사용자의 요청에 따라 상기 제어 어플리케이션(100)이 상기 라이브러리(110)에 다음과 같은 함수를 호출하여 설정을 하게 된다.
int set_home_code();
상기 호출에 의해 상기 라이브러리(110)는 도 5a의 과정을 수행하는 데, 먼저 디바이스들로부터 응답이 있는 메시지, 예를 들면 기기의 이름을 요청하는 메시지를 물리적 네트워크(200)를 통해 방송한다(S51). 이 메시지에는 물리적 인터페이스(120)에 설정되어 있는 홈코드가 사용되는 데, 만약, 이 방송 메시지에 대해 응답이 있으면(S52), 기기의 추가인 경우, 홈코드를 설정하는 방송 메시지를 송출하고(S56), 그렇지 않으면 상기 물리적 인터페이스(120), 예를 들어 전력선 어댑터(모뎀)에 홈코드를 생성하라는 명령을 내리고(S53), 다시 응답이 필요한 메시지, 즉, 이름 요청 메시지를 네트워크를 통해 방송한다(S54). 이 때, 응답이 있으면(S55), 방금 생성된 홈코드가 어디선가 사용이 되고 있음을 의미하므로 재생성 과정을 수행하게 되고(S53,S54), 그렇지 않으면 생성된 홈코드를 설정하라는 방송 메 시지를 홈 네트워크를 통해 송출한다(S56).
이와 같은 과정에 의해, 홈 네트워크가 전력선을 통해 타 댁내의 가전기기들과 연결되어 있더라도 그 댁내에 유일하고 고유한 홈코드가 설정됨으로써, 그 댁내의 기기들끼리만 통신할 수 있게 된다.
도 5b는 상기의 과정에서 홈 네트워크가 최초설정되는 것인지 새 기기의 추가인 것인지를 판별하는 과정의 상세 흐름도이다.
앞서 언급한 바와 같이, 홈 코드를 설정 할 때는 최초로 네트워크를 설치 하는 경우인지, 아니면 새로운 기기가 추가 되어서 홈코드를 설정하는 것인지에 따라 설정 방법이 다르다. 여기서 최초로 네트워크를 설치 하는 것인지, 새로운 기기를 추가하는 것인지에 대한 판단은, 예를 들어 이름 요청명령을 3회 보내서(S502) 응답하는 것이 있으면(S503,S504), 새로운 기기를 추가하는 경우라고 판단하고(S506), 응답이 없으면 처음으로 네트워크를 설치하는 것으로 판단하고 동작한다(S505).
도 5c는 도 5a의 S53내지 S55의 과정을 보다 상세히 도시한 흐름도이다. 최초로 Network을 설치 하는 경우 일 때는, 물리적 인터페이스(120), 예를 들어, 홈 네트워크용 모뎀에게 새로운 홈 코드를 생성하도록 하고(S511) 새로이 만든 홈코드가 다른 네트워크의 홈코드와 중복이 되지 않는지 확인을 한 다음, 그 홈코드를 방송하여서 다른 홈 네트워크용 모뎀도 그 홈코드를 설정하게 만든다. 홈코드가 중복된 홈코드인지 아닌지는 이름 요청(Name Request) 패킷(Packet)을 보내서(S513) 판단하게 된다. 이름 요청 메시지의 응답메시지에 대한 핸들러(handler)를 메시지 송출전 미리 테이블에 등록한다(S512). 이 핸들러가 응답 메시지에 대한 루틴(S515)를 수행한다.
이름 요청 메시지를 방송하여 응답이 없으면(S514), 중복되지 않은 홈코드로 판단을 한다. 3회이상의 메시지에 대한 무응답시에 앞서 설명한 바와 같이 홈코드 설정 메시지를 송출한다(S56). 만약에 응답이 있다면, 그 홈코드는 중복 된 것이므로 홈코드 크리어(clear) 명령을 모뎀에 보내주어서(S515) 직전만든 홈코드를 지우고(S515) 다시 홈코드를 생성하도록 한다(S511).
홈코드 크리어를 위한 상기 라이브러리(110)의 루틴의 호출은 다음과 같이 이루어진다.
int clear_home_code()
이 루틴은, 마스터(master)와 연결된 홈 네트워크용 모뎀에 홈코드 클리어 명령 패킷을 전송함으로써 실제로 연결된 홈 네트워크용 모뎀에 설정된 홈코드가 제거되도록 한다.
한편, 상기의 홈코드 생성/해제 과정은 중복되지 않은 홈코드가 만들어 질 때까지 반복된다.
앞서 설명한 바와 같이, 최초로 네트워크를 설치하는 경우가 아니고, 새로운 기기를 기존의 네트워크에 추가하는 경우라면, 기존의 홈코드를 네트워크상에서 방송하여서 새로운 기기의 홈 네트워크용 모뎀에 홈코드를 설정하도록 한다(S56).
홈코드를 설정 할 때, 상기 라이브러리(110)가 임의로 생성한 홈코드가 아닌 사용자( 또는 네트워크 설치/운영자 )가 직접 정해주는 홈코드로 설정을 할 수도 있다. 이 때는 다음과 같은 함수를 상기 라이브러리(110)에 호출함으로써 홈코드를 수동적으로 설정할 수 있다.
int push_home_code(unsigned long home_code);
상기 라이브러리(110)는 상기 함수가 호출되면 그 입력변수인 home_code의 값을 홈 네트워크를 통해 방송하여 각 기기(301,302)의 모뎀에 설정되도록 한다.
한편, 각각의 홈 네트워크 기기들은 각각의 주소를 가져야만 서로 통신을 할 수 있다. 상기 라이브러리(110)는, 이러한 주소를 설정하는데 필요한 루틴을 제공함으로써 상기 제어 어플리케이션(100)이 편리하게 어드레스를 할당하도록 해준다.
홈네트워크에 참여하려고 하는 기기는 어드레스를 할당 받기 위해서 Plug-In Notification 메시지를 방송(broadcasting)하며(S61), 이 Plug-In Notification을 받은 마스터의 라이브러리(110)는 그 메시지를 처리하여서 요청한 기기에게 주소를 할당하여 준다.
이를 위해, 상기 라이브러리(110)는, 먼저 Plug-In Notification Handler를 자신의 Response function hash table 에 등록을 하여 Plug-In Notification 패킷이 들어오면 처리 할 수 있도록 한다.
따라서, Plug-In Notification Packet을 받으면, Plug-In Notification Handler가 수행되며 핸들러는 그 packet을 보낸 기기의 유형(type)을 알아낸 다음 그 유형을 가지고 자신의 DB를 검색한다. DB를 검색하여 비어있는 주소를 확인한 다음(S62), 그 주소를 주소 변경(Address Change) 명령에 실어서 보내준다(S63). 이 과정은 다음의 함수호출에 의해 이루어진다.
int change_address(old_addr, new_addr);
change_address 함수의 입력 인자로는 홈 네트워크 기기의 기존 주소와 새로이 설정할 주소를 넣어 준다. 처음으로 홈네트워크에 참여하는 기기라면 old_addr은 디폴트(default) 주소( 예를 들어, 0 )가 될 것이다. 이 함수의 실행에 의해 주소 변경 명령이 홈 네트워크를 통해 전송된다.
이 함수루틴의 리턴시에는 주소 변경 작업의 성공 여부를 알려주는 값이 입력변수로 포함된다.
한편, 상기 주소변경 명령을 받은 기기는 자신의 주소를, 명령에 들어있는 주소로 설정하고 응답을 보내게 된다. 상기 change_address루틴은 그 응답을 받으면 성공적으로 주소가 설정 된 것이므로, 자신의 DB에 그 할당된 주소를 저장하게 된다(S64). 아울러 다른 네트워크 관리자(Manager)에게 새로운 기기가 등록이 되었다는 사실을 알리기 위해서 DB 갱신(Update) 명령을 보내준다(S65).
이런 작업을 한 후에 새로이 등록된( 즉, 주소를 할당받은 ) 기기에 대한 추가정보를 요청하여(S66,S67) 알아낸 후 DB에 기록해 둔다. 예를 들어, Device Search 명령을 보내서 그 기기가 Master인지 Slave인지를 알아내고(S66), Model Request 명령을 보내서 모델명을 알아낸다(S67).
다음르로, 홈 네트워크를 사용함 에 있어서 마스터의 기능을 하는 장치가 처음 초기화 할 때, 홈 네트워크에 연결된 기기들의 옵션사항들을 설정하는 방법에 대해 상세히 설명한다.
홈 네트워크에서 마스터의 기능을 하는 장치내의 라이브러리(110)는 각각 홈 네트워크 기기들의 존재 유무와 작동 여부를 확인해야 한다. 이 때 이를 위해 각각의 기기들에게 일정한 시간 간격으로 메시지를, 마스터 기기에게 보내어 자신이 정상 작동함을 알리게 하는 데, 이러한 메시지를 Alive 메시지라고 한다. 따라서, 마스터의 제어 어플리케이션(100)은 처음으로 수행됨으로써 네트워크를 초기화할 때, 이 시간 간격을 기기들에게 보내어 그 보낸 시간 간격으로 각 기기가 Alive 메시지를 보내는 지 상기 라이브러리(110)가 확인을 하여서 각 기기가 정상 작동하는 지를 확인할 수 있도록 한다.
이를 위해서, 상기 제어 어플리케이션(100)은, 사용자( 또는 운영자 )로부터 입력되는 시간간격을 상기 라이브러리(110)의 해당 루틴을 다음과 같이 호출한다.
int set_alive_message_interval (time);
이 함수의 호출될 때, 상기 라이브러리(110)는 시간변수(time)을 입력 인자로 받아서 그 값을 홈 네트워크 각 디바이스에게 설정 메시지로 전달함으로써, 지정된 간격을 alive 메시지 전송주기로 설정하게 한다.
그리고, 홈 네트워크 기기들 중에서 현재시간 설정이 가능한 기기들에게는 시간을 설정 할 수 있는데, 이 를 설정하기 위해서 상기 제어 어플리케이션(100)은 상기 라이브러리(110)의 set_clock함수 루틴을 호출한다. 호출되는 set_clock 함수는 다음과 같이 정의된다.
int set_clock (hour,min,sec);
이 함수의 호출시에, 상기 라이브러리(110)는 입력변수인 시, 분, 초의 값을 패킷으로 만들어 홈네트워크 해당 기기들에게 전송하고, 그 처리결과는 응답되는 메시지에 근거하여 리턴 값으로 상기 제어 어플리케이션(100)에게 전달한다.
그리고, 홈 네트워크 기기들은 기본적으로 자신의 상태변화를 이벤트를 통하여 다른 기기들과 마스터 기기들에게 알려주는데, 이런 이벤트들을 계속해서 보내게 할 것인지 아닌지를 상기 라이브러리(110)를 통해 설정할 수 있다. 이 옵션을 설정하기 위해서는 상기 제어 어플리케이션(100)는 상기 라이브러리(110)에 다음과 같은 함수루틴을 호출한다.
int event_enable(enable);
이 함수의 호출시에, 상기 라이브러리(110)는 이벤트 전송의 활성화 여부를 입력변수로 받아서, 이 입력변수에 따른 명령을 만들어서 해당 기기에게 보내 주고 이 설정 값대로 이벤트 보고를 활성화할 것인지 아닌지를 설정하도록 한다. 그 설정에 따른 응답메시지가 수신되면 상기 라이브러리(110)는 그 응답메시지에 따른 리턴 값을 상기 제어 어플리케이션(100)에 전달한다.
이상에서 상세히 설명한 본 발명에 따라, 제어 어플리케이션과 라이브러리간의 인터페이스 방법이 표준화됨으로 인해 제조업체간의 호환성이 확보되므로 사용자들은 홈 네트워크의 구축을 위한 기기들의 선택의 폭이 넓어지고 제조업체들은 구축된 기기들의 지원, 보수 또는 A/S 등을 위한 관리비용이 절감되는 효과가 있다.

Claims (3)

  1. 홈 네트워크를 관리하는 기기내의 어플리케이션과 라이브러리간의 명령 및/또는 응답 방법에 있어서,
    상기 어플리케이션이, 네트워크에 연결된 기기가 살아있는 지를 판단하기 위한 시간을 설정하는 함수루틴을 상기 라이브러리에 호출하되, 그 입력변수로 시간을 부가하여 호출하는 1단계; 및
    상기 라이브러리가, 상기 입력변수의 시간 간격으로, 살아있음을 알리는 메시지를 주기적으로 송신하도록 명령하는 메시지를 상기 네트워크에 연결된 기기에 송신하는 2단계를 포함하여 이루어지는 방법.
  2. 홈 네트워크를 관리하는 기기내의 어플리케이션과 라이브러리간의 명령 및/또는 응답 방법에 있어서,
    상기 어플리케이션이, 네트워크에 연결된 기기에 현재시간을 설정하는 함수루틴을 상기 라이브러리에 호출하되, 그 입력변수로 현재시간을 부가하여 호출하는 1단계; 및
    상기 라이브러리가, 상기 입력변수의 현재시간의 설정을 명령하는 메시지를 상기 네트워크에 연결된 기기에 송신하는 2단계를 포함하여 이루어지는 방법.
  3. 홈 네트워크를 관리하는 기기내의 어플리케이션과 라이브러리간의 명령 및/ 또는 응답 방법에 있어서,
    상기 어플리케이션이, 네트워크에 연결된 기기의 이벤트 보고의 활성/비활성을 설정하는 함수루틴을 상기 라이브러리에 호출하되, 그 입력변수로 활성/비활성을 지정하는 변수를 부가하여 호출하는 1단계; 및
    상기 라이브러리가, 상기 입력변수에 지정된 바에 따라, 이벤트 보고 또는 중단을 지시하는 명령 메시지를 상기 네트워크에 연결된 기기에 송신하는 2단계를 포함하여 이루어지는 방법.
KR1020040110725A 2004-12-22 2004-12-22 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법 KR20060071749A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040110725A KR20060071749A (ko) 2004-12-22 2004-12-22 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
US11/315,539 US8019855B2 (en) 2004-12-22 2005-12-21 Method and apparatus interfacing between an application and a library of a master for network managing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040110725A KR20060071749A (ko) 2004-12-22 2004-12-22 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법

Publications (1)

Publication Number Publication Date
KR20060071749A true KR20060071749A (ko) 2006-06-27

Family

ID=37165134

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040110725A KR20060071749A (ko) 2004-12-22 2004-12-22 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법

Country Status (1)

Country Link
KR (1) KR20060071749A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100814403B1 (ko) * 2006-10-12 2008-03-18 삼성전자주식회사 큐잉을 지원하는 수식 기반 네트워크 관리 시스템 및 이를이용한 성능 파라미터 측정 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100814403B1 (ko) * 2006-10-12 2008-03-18 삼성전자주식회사 큐잉을 지원하는 수식 기반 네트워크 관리 시스템 및 이를이용한 성능 파라미터 측정 방법

Similar Documents

Publication Publication Date Title
CN100411352C (zh) 网络配置变化时设备间交换信息的方法及其家庭网络系统
US20060230128A1 (en) Method and apparatus interfacing for controlling a device between an application and a library of a master on home network
US10719200B2 (en) Architecture for remote control of IOT (internet of things) devices
KR100559023B1 (ko) 홈 네트워크 시스템 및 이를 위한 구성장치
US8019855B2 (en) Method and apparatus interfacing between an application and a library of a master for network managing
KR20070118602A (ko) 네트워크 시스템 관리방법
US8484323B2 (en) Network system connected with multiple master devices and method for operating the same
JP2005517311A (ja) ホームネットワーキング通信装置及び方法
WO2006091028A1 (en) Method for setting home code in network system and device for network
CN104750544A (zh) 应用于分布式系统中的进程管理系统及进程管理方法
TWI592892B (zh) 智能家居系統
KR20030075728A (ko) 홈 네트워크 시스템의 가전제품 연결상태 확인방법
US20180367647A1 (en) Wireless communication module based cloud access method and system
EP2040418B1 (en) Program control method for network devices and network system
WO2006004378A1 (en) Event interfacing method and apparatus between applications and a library of a master on home network
KR20060071749A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
KR20060071746A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
KR20060071751A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
KR20060071753A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
KR20060071036A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
KR20060071745A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
KR20060071744A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
CN102025576A (zh) 一种家庭自动化系统及其控制方法
KR20060071750A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법
KR20060071752A (ko) 홈 네트워크 마스터의 어플리케이션과 라이브러리의인터페이싱 방법

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination