|
|
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을 일부분만 발췌한 것이다.
|
|
|
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을 일부분만 발췌한 것이다.
|
|
|
|
|
|
<img src="Led_Image/1.png" width="500">
|
|
|
## 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에서 정의된 기본 콜벡함수 구조체이다.
|
|
|
<img src="Led_Image/1.png" width="700">
|
|
|
|
|
|
**ATOM/Led/AppLed.h struct sys_led_status : ATOM에서 노드의 LED 정보를 가지는 구조체**
|
|
|
**iris3/iris3_ledfun_api.h Struct NODE_STATUS : 프로젝트별로 서로 다른 Led Info를 동일한 타입의 포인터로 가리키기 위한 구조체**
|
|
|
<img src="Led_Image/2.png" width="200">
|
|
|
### 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에서 정의된 기본 콜벡함수 구조체이다.
|
|
|
<br>
|
|
|
|
|
|
**iris3/iris3_ledfun_api.h Struct LedInfoFunSet : EMS의 콜백함수를 가지고 있는 구조체**
|
|
|
| **함수** | **기능** |
|
|
|
| -------- | -------- |
|
|
|
|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 | 노드의 소속 그룹을 알려주는 콜백함수 |
|
|
|
|
|
|
<img src="Led_Image/2.png" width="300">
|
|
|
<img src="Led_Image/3.png" width="300">
|
|
|
**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를 사용한다.
|
|
|
|
|
|
### 추가 구현 콜벡함수
|
|
|
Iris에서 콜벡함수는 return 타입과 파라미터 형식을 미리 정의해 놓는다. return 타입과 파라미터 형식이 변할 경우 콜벡함수 typedef int (*fn_ext_ledfun)(void* ns, void* out, const int param1, const int param2, const int param3)의 배열을 전역변수로 저장해두고 쓰는 방식으로 구현되어 있다. 아래 3개의 api를 사용한다.
|
|
|
<br>
|
|
|
|
|
|
**IRIS3_LEDFUN_DECL int Iris3led_Ext_InitFun(int max_entry) :** 등록할 수 있는 콜벡함수의 최대 개수
|
|
|
**IRIS3_LEDFUN_DECL int Iris3led_Ext_AddFun(int idx, fn_ext_ledfun func) :** 콜벡함수 등록
|
|
|
**IRIS3_LEDFUN_DECL fn_ext_ledfun Iris3led_Ext_GetFun(int idx) :** 콜벡함수 찾기
|
|
|
| **함수** | **기능** |
|
|
|
| -------- | -------- |
|
|
|
| IRIS3_LEDFUN_DECL int Iris3led_Ext_InitFun(int max_entry) | 등록할 수 있는 콜벡함수의 최대 개수 |
|
|
|
| IRIS3_LEDFUN_DECL int Iris3led_Ext_AddFun(int idx, fn_ext_ledfun func) | 콜벡함수 등록 |
|
|
|
| IRIS3_LEDFUN_DECL fn_ext_ledfun Iris3led_Ext_GetFun(int idx) | 콜벡함수 찾기 |
|
|
|
|
|
|
## ATOM EMS에서 콜벡함수를 등록하는 Flow
|
|
|
### ATOM EMS에서 콜벡함수를 등록하는 Flow
|
|
|
<img src="Led_Image/4.png" width="500">
|
|
|
**int app_InitLedFunSet()**
|
|
|
EMS UI가 보이기 전 초기화 과정에서 호출되어야 한다.
|
|
|
**int Iris3led_Init(LedInfoFunSet* pFunset /*OUT*/)**
|
|
|
LedInfoFunSet 구조체 정보를 기본 콜벡 구현체로 초기화 한다.
|
|
|
**int Iris3led_AddFunSet(int nodeTypeID, struct LedInfoFunSet *funset)**
|
|
|
노드 타입별로 LedInfoFunSet을 전역 변수에 저장한다.
|
|
|
**BOOL Iris3ab_RegDebugLed(int nodeTypeID, void (*make_autoled)(ElementNode* pNode))**
|
|
|
EMS 토폴로지에서 노드 선택 후 위의 파란색 사각형 안에서 "Ctrl+마우스오른쪽버튼"을 클릭하면 make_autoled 함수 구현대로 셀프 정보가 채워져서 화면에 표시된다. |
|
|
\ No newline at end of file |
|
|
<br>
|
|
|
|
|
|
| **함수** | **기능** |
|
|
|
| -------- | -------- |
|
|
|
| app_InitLedFunSet() | EMS UI가 보이기 전 초기화 과정에서 호출되어야 함 |
|
|
|
| Iris3led_Init(LedInfoFunSet* pFunset /*OUT*/) | LedInfoFunSet 구조체 정보를 기본 콜벡 구현체로 초기화 |
|
|
|
| Iris3led_AddFunSet(int nodeTypeID, struct LedInfoFunSet *funset) | 노드 타입별로 LedInfoFunSet을 전역 변수에 저장한다 |
|
|
|
| Iris3ab_RegDebugLed(int nodeTypeID, void (*make_autoled)(ElementNode* pNode)) | EMS 토폴로지에서 노드 선택 후 위의 파란색 사각형 안에서 "Ctrl+마우스오른쪽버튼"을 클릭하면 make_autoled 함수 구현대로 셀프 정보가 채워져서 화면에 표시 | |
|
|
\ No newline at end of file |