EMS에서 노드정보는 DB파일을 읽거나 장비에서 주기적으로 수신되는 정보(Binary File)로 구성된다. 장비에서 수신되는 노드 정보를 LED INFO라고 한다. LED INFO에는 iris code, alarm summary, pdu version, node id 등의 데이터가 struct 형태로 들어 있다. 이 부분은 문서(Z:\ATOM\doc\시스템 설계서\AtOM 3200 SW 설계서 1.0 draft 7.doc)의 7.2.2 Status ( view information )에서 확인 할 수 있다. 아래 그림은 LED status data struct을 일부분만 발췌한 것이다.
LedInfo Struct
데이터의 값을 얻으려면 수신된 LED INFO(바이너리 파일)를 데이터 크기만큼 읽어서 값을 얻는다. 프로젝트마다 읽어올 데이터 크기는 다를 수 있기 때문에 LED INFO를 읽어오는 부분은 따로 구현되어야 한다. 따라서, IRIS에서는 기본 콜벡함수를 정의하고 프로젝트에서 정의한 콜벡함수를 IRIS 기본 콜벡함수에 등록하여야 한다. struct sys_led_status는 ATOM 프로젝트의 led data structure이다. struct NODE_STATUS는 IRIS에서 프로젝트마다 다르게 정의된 led data structure를 가리키기 위한 구조체이다. struct LedInfofunSet는 IRIS에서 정의된 기본 콜벡함수 구조체이다.
함수
기능
ATOM/Led/AppLed.h struct sys_led_status
ATOM에서 노드의 LED 정보를 가지는 구조체
iris3/iris3_ledfun_api.h Struct NODE_STATUS
프로젝트별로 서로 다른 Led Info를 동일한 타입의 포인터로 가리키기 위한 구조체
iris3/iris3_ledfun_api.h Struct LedInfoFunSet
EMS의 콜백함수를 가지고 있는 구조체
fn_uint_ns get_cr
critical 경보 개수를 리턴하는 콜백함수
fn_uint_ns get_mj
major 경보 개수를 리턴하는 콜백함수
fn_uint_ns get_mn
minor 경보 개수를 리턴하는 콜백함수
fn_uint_ns get_wn
warning 경보 개수를 리턴하는 콜백함수
fn_uint_ns_int get_shelf_typeid
셸프 ID 정보를 리턴하는 콜백함수
fn_uint_ns get_shelf_type2
셸프 타입을 리턴하는 콜백함수
fn_get_shelf_str get_shelf_str
셸프 타입을 셸프 타입 문자열로 바꿔주는 콜백함수
fn_get_shelf_id2 get_shelf_id2
셸프 타입 문자열을 셸프 타입으로 바꿔주는 콜백함수
fn_print_debug print_debug
LedInfo 구조체 내용을 print해주는 콜백함수
fn_uint_ns get_shelf_state
셸프 실장 상태를 리턴하는 콜백함수
fn_uint_ns get_slot_state
슬롯 상태를 리턴하는 콜백함수
fn_uchar_ns_int get_unit_status
유닛 경보 상태를 리턴하는 콜백함수
fn_uchar_ns_int get_unit_type
유닛 종류를 리턴하는 콜백함수
fn_uchar_ns_int_int get_led_onoff
유닛별 LED on/off 상태를 리턴하는 콜백함수
fn_uint_ns_int_int get_port_state
포트 활성화 상태를 리턴하는 콜백함수
fn_uint_ns_int_int get_port_sigtype
슬롯/포트 signal 타입을 리턴하는 콜백함수
fn_uint_ns_int_int get_lpbk_state
슬롯별/포트별 루프백 수행 중 여부를 리턴하는 콜백함수
fn_uint_ns_int_int get_sw_type
슬롯별/포트별 절체 타입을 리턴하는 콜백함수
fn_uint_ns_int_int get_och_num
슬롯/포트에 할당된 OCH 번호를 리턴하는 콜백함수
fn_uchar_ns_int get_tlm
Telemetry 상태 정보를 리턴하는 콜백함수
fn_uchar_ns_int get_link_status
링크 상태를 리턴하는 콜백함수
fn_uint_ns_int_int get_link_dir
MainPath Direction 정보를 리턴하는 콜백함수
fn_uint_ns_int get_link_ringid
링크에 연결된 RING ID를 리턴하는 콜백함수
fn_bool_ns_str get_net_name
노드의 소속 그룹을 알려주는 콜백함수
추가 구현 콜벡함수
Iris에서 콜벡함수는 return 타입과 파라미터 형식을 미리 정의해 놓는다. return 타입과 파라미터 형식이 변할 경우 콜벡함수 typedef int (fn_ext_ledfun)(void ns, void* out, const int param1, const int param2, const int param3)의 배열을 전역변수로 저장해두고 쓰는 방식으로 구현되어 있다. 아래 3개의 api를 사용한다.
함수
기능
IRIS3_LEDFUN_DECL int Iris3led_Ext_InitFun(int max_entry)
등록할 수 있는 콜벡함수의 최대 개수
IRIS3_LEDFUN_DECL int Iris3led_Ext_AddFun(int idx, fn_ext_ledfun func)