diff --git a/app/app-prime-modbus/app/app-prime-modbus/Makefile b/app/app-prime-modbus/app/app-prime-modbus/Makefile
index e550646..fe7be9d 100644
--- a/app/app-prime-modbus/app/app-prime-modbus/Makefile
+++ b/app/app-prime-modbus/app/app-prime-modbus/Makefile
@@ -1,60 +1,57 @@
 #
-# falinux ���̺������� ����ϴ� ���ÿ� Makefile
+# falinux 라이블러리를 사용하는 어플용 Makefile
 #
 
-#CROSS_PREFIX	= mipsel-linux
-CROSS_PREFIX	= arm-buildroot-linux-gnueabihf
-#CROSS_PREFIX   = /opt/ezzynq/usr/bin/arm-buildroot-linux-gnueabihf
+CROSS_PREFIX    = arm-buildroot-linux-gnueabihf
 
-CP_DIR          = /nfs/prime-oven/
+CP_DIR          = /nfs/prime_oven/
 
-## ����� �ҽ�
-TARGET			= app-prime-modbus
-SRCS			= main_controller.c rs485_serial.c calc_crc.c udp_gui.c ring_que.c 
+## 사용자 소스
+TARGET          = app-prime-modbus
+SRCS            = main_controller.c rs485_serial.c calc_crc.c udp_gui.c ring_que.c
 #---------------------------------------------------------------------
-## �ҽ������� ���̺귯��
+## 소스레벨의 라이브러리
 DIR_LIB         = ../../lib/
 DIR_COMMON      = $(DIR_LIB)common/
-DIR_FANET		= $(DIR_LIB)fanet/
+DIR_FANET       = $(DIR_LIB)fanet/
 
-SRCS_MODULE		= 
-SRCS_COMMON		= $(DIR_COMMON)tlist.c  $(DIR_COMMON)util.c $(DIR_COMMON)sharemem.c  $(DIR_COMMON)tstrlist.c $(DIR_COMMON)tinifile.c 
-SRCS_FANET		= $(DIR_FANET)pollmng.c $(DIR_FANET)uds.c  $(DIR_FANET)udp.c $(DIR_FANET)tcp.c $(DIR_FANET)uart.c 
-SRCS            += $(SRCS_MODULE) $(SRCS_COMMON) $(SRCS_FANET)
+SRCS_COMMON     = $(DIR_COMMON)tlist.c $(DIR_COMMON)util.c $(DIR_COMMON)tstrlist.c $(DIR_COMMON)tinifile.c
+SRCS_FANET      = $(DIR_FANET)pollmng.c $(DIR_FANET)udp.c $(DIR_FANET)uart.c
+SRCS           += $(SRCS_COMMON) $(SRCS_FANET)
 
-## ��Ŭ��� ���丮
-DIR_INC        = ../../include/
+## 인클루드 디렉토리
+DIR_INC         = ../../include/
 INC_COMMON      = $(DIR_INC)common/
-INC_FANET		= $(DIR_INC)fanet/
+INC_FANET       = $(DIR_INC)fanet/
 
-INCLUDEDIRS		+= -I. -I$(DIR_INC) -I$(INC_COMMON) -I$(INC_FANET)
-LIVDIRS			+= 
+INCLUDEDIRS    += -I. -I$(DIR_INC) -I$(INC_COMMON) -I$(INC_FANET)
+LIVDIRS        +=
 
-OBJS			= $(SRCS:.c=.o)
+OBJS            = $(SRCS:.c=.o)
 
-CFLAGS			= $(INCLUDEDIRS) -o -W -Wall -O2
-LDFLAGS			= $(LIVDIRS)
-LIBS		    = -lm    
+CFLAGS          = $(INCLUDEDIRS) -o -W -Wall -O2
+LDFLAGS         = $(LIVDIRS)
+LIBS            = -lm
 #---------------------------------------------------------------------
-CC				=	$(CROSS_PREFIX)-gcc
-CXX			 	=	$(CROSS_PREFIX)-g++
-AR				=	$(CROSS_PREFIX)-ar rc
-AR2				=	$(CROSS_PREFIX)-ranlib
-RANLIB			=	$(CROSS_PREFIX)-ranlib
-LD				=	$(CROSS_PREFIX)-ld
-NM				=	$(CROSS_PREFIX)-nm
-STRIP			=	$(CROSS_PREFIX)-strip
-OBJCOPY		 	=	$(CROSS_PREFIX)-objcopy
-CP	= cp
-MV	= mv
+CC              = $(CROSS_PREFIX)-gcc
+CXX             = $(CROSS_PREFIX)-g++
+AR              = $(CROSS_PREFIX)-ar rc
+AR2             = $(CROSS_PREFIX)-ranlib
+RANLIB          = $(CROSS_PREFIX)-ranlib
+LD              = $(CROSS_PREFIX)-ld
+NM              = $(CROSS_PREFIX)-nm
+STRIP           = $(CROSS_PREFIX)-strip
+OBJCOPY         = $(CROSS_PREFIX)-objcopy
+CP              = cp
+MV              = mv
 #--------------------------------------------------------------------
 
 all : $(TARGET)
 	mkdir -p $(CP_DIR)
-	cp $^ $(CP_DIR)
+	$(CP) $^ $(CP_DIR)
 
 $(TARGET) : $(OBJS)
-	$(CC) $(LDFLAGS) $(OBJS) -o $@ $(LIBS) 
+	$(CC) $(LDFLAGS) $(OBJS) -o $@ $(LIBS)
 	$(NM) $(TARGET) > $(TARGET).map
 
 %.o:%.c
@@ -66,7 +63,7 @@ $(TARGET) : $(OBJS)
 	$(CXX) -c $(CFLAGS) $(CXXFLAGS) -o $@ $<
 
 dep :
-	$(CC)	-M	$(INCLUDEDIRS)	$(SRCS) > .depend
+	$(CC) -M $(INCLUDEDIRS)	$(SRCS) > .depend
 
 clean:
 	rm -f *.bak
@@ -76,7 +73,7 @@ clean:
 	rm -f $(TARGET) core
 
 distclean: clean
-	rm -rf .depend	
+	rm -rf .depend
 
 
 ifeq (.depend,$(wildcard .depend))
diff --git a/app/app-prime-modbus/app/app-prime-modbus/main_controller.c b/app/app-prime-modbus/app/app-prime-modbus/main_controller.c
index ae86efb..d9231ae 100644
--- a/app/app-prime-modbus/app/app-prime-modbus/main_controller.c
+++ b/app/app-prime-modbus/app/app-prime-modbus/main_controller.c
@@ -1,8 +1,8 @@
-/**    
+/**
     @file     main_control.c
     @date     2017/01/12
-    @author   ��漮 jks@falinux.com  FALinux.Co.,Ltd.
-    @brief    �µ������� ���� ���α׷�
+    @author   장길석 jks@falinux.com  FALinux.Co.,Ltd.
+    @brief    온도조절기 제어 프로그램
 
     @todo
     @bug
@@ -10,8 +10,8 @@
     @warning
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -37,7 +37,7 @@ int   on_stdin_read( poll_obj_t *obj )
 
     memset( buff, 0, sizeof( buff));
     rdcnt = read( obj->fd, buff, sizeof( buff));
-    if (0 < rdcnt){                                                 // ���ŵ� �����Ͱ� �ִٸ�
+    if (0 < rdcnt){                                                 // 수신된 데에터가 있다면
     	switch( buff[0]){
     	case '1' :
     	    {
@@ -115,15 +115,15 @@ int   on_stdin_read( poll_obj_t *obj )
 }
 
 /** ----------------------------------------------------------------------------
-@brief  main�� ���� �ʱ�Ȱ�� �Ѵ�.
+@brief  main을 위한 초기활를 한다.
 @remark
-@param  uart_name   : uart ��ġ �̸�
+@param  uart_name   : uart 장치 이름
 @return
  -----------------------------------------------------------------------------*/
 static int main_initialize(){
     poll_obj_t  *obj;
 
-    obj = poll_add( fileno(stdin) );                                // ������� ���� Ű���� �Է��� �޴´�.
+    obj = poll_add( fileno(stdin) );                                // 디버깅을 위한 키보드 입력을 받는다.
     obj->on_poll_in = on_stdin_read;
 
     return 0;
@@ -153,11 +153,11 @@ int   main  ( int argc, char *argv[])
     rs845_run_start();
     gui_run_start();
 
-    tm_curr = get_cur_msec();                                       // ���� �ð�
+    tm_curr = get_cur_msec();                                       // 현재 시간
 
     while( TRUE ){
         poll_do_loop( 100);
-        tm_curr = get_cur_msec();                                   // ���� �ð�
+        tm_curr = get_cur_msec();                                   // 현재 시간
         rs485_timer( tm_curr);
     }
 
diff --git a/app/app-prime-modbus/app/app-prime-modbus/ring_que.c b/app/app-prime-modbus/app/app-prime-modbus/ring_que.c
index 9704834..42ae7ec 100644
--- a/app/app-prime-modbus/app/app-prime-modbus/ring_que.c
+++ b/app/app-prime-modbus/app/app-prime-modbus/ring_que.c
@@ -10,61 +10,61 @@
 #include <ring_que.h>
 
 /** ----------------------------------------------------------------------------
-@brief que�� ������ ����
+@brief que에 데이터 저장
 @remark -
-@param data : ������
-@param sz_data : ������ ����
+@param data : 데이터
+@param sz_data : 데이터 길이
 @return -
  -----------------------------------------------------------------------------*/
 void que_put( que_t *que, char *data, int sz_data){
 
-  // que�� ������ ����
+  // que에 데이터 저장
   memcpy( que->que[que->tag_head].data, data, sizeof( que->que[que->tag_head].data));
   que->que[que->tag_head].sz_data = sz_data;
 
-  // que tag ����
+  // que tag 조정
   que->tag_head = ( que->tag_head +1) % MAX_QUE_SIZE;
-  if ( que->tag_head == que->tag_tail){ // ���۰� ��� á�ٸ�
+  if ( que->tag_head == que->tag_tail){ // 버퍼가 모두 찼다면
   que->tag_tail = ( que->tag_tail +1) % MAX_QUE_SIZE;
   }
 }
 
 /** ----------------------------------------------------------------------------
-@brief que ������ ��û
+@brief que 데이터 요청
 @remark -
-@param buff : ����
-@param sz_buff : ���� ũ��
-@return ������ ����
+@param buff : 버퍼
+@param sz_buff : 버퍼 크기
+@return 데이터 길이
  -----------------------------------------------------------------------------*/
 int que_get( que_t *que, char *buff, int sz_buff){
 
-  // ť�� �����Ͱ� ���ٸ� ����
+  // 큐에 데이터가 없다면 복귀
   if ( que->tag_head == que->tag_tail){
-  return 0; // ������ ����
+  return 0; // 테이터 없음
   }
 
-  // ť ������ ���ϱ�
+  // 큐 데이터 구하기
   int sz_data = que->que[que->tag_tail].sz_data;
   memcpy( buff, que->que[que->tag_tail].data, sz_buff);
 
-  // que tag ����
+  // que tag 조정
   que->tag_tail = ( que->tag_tail +1) % MAX_QUE_SIZE;
 
   return sz_data;
 }
 
 /** ----------------------------------------------------------------------------
-@brief que�� �����Ͱ� �ִ��� ����
+@brief que에 데이터가 있는지 여부
 @remark -
-@param que : ���� ť ������
-@return TRUE == ������ ����
+@param que : 원형 큐 포인터
+@return TRUE == 데이터 있음
  -----------------------------------------------------------------------------*/
 int que_exists( que_t *que){
 
-  return que->tag_head != que->tag_tail; // head �� tail ���� �ٸ��ٸ� ������ ����
+  return que->tag_head != que->tag_tail; // head 와 tail 값이 다르다면 데이터 있음
 }
 
 void que_init( que_t *que){
 
-  que->tag_head = que->tag_tail = 0; // ������ ��ġ�� ����
+  que->tag_head = que->tag_tail = 0; // 포인터 위치를 수정
 }
diff --git a/app/app-prime-modbus/app/app-prime-modbus/ring_que.h b/app/app-prime-modbus/app/app-prime-modbus/ring_que.h
index 90d4bf4..d6ee756 100644
--- a/app/app-prime-modbus/app/app-prime-modbus/ring_que.h
+++ b/app/app-prime-modbus/app/app-prime-modbus/ring_que.h
@@ -1,8 +1,8 @@
 #ifndef APP_DATA_COLLECTOR_RING_QUE_H_
 #define APP_DATA_COLLECTOR_RING_QUE_H_
 
-#define MAX_QUE_SIZE 100                // ���� ť�� ���� ������ ����
-#define MAX_QUE_DATA_SIZE 1024          // �������� ������ ����
+#define MAX_QUE_SIZE 100                // 원형 큐가 갖는 아이템 개수
+#define MAX_QUE_DATA_SIZE 1024          // 아이템의 데이터 길이
 
 typedef struct{
   int sz_data;
@@ -11,8 +11,8 @@ typedef struct{
 } que_item_t;
 
 typedef struct{
-  int tag_head;                         // ���� ��ġ
-  int tag_tail;                         // �б� ��ġ
+  int tag_head;                         // 쓰기 위치
+  int tag_tail;                         // 읽기 위치
   que_item_t que[MAX_QUE_SIZE];
 } que_t;
 
diff --git a/app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c b/app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c
index 8278e76..4e25232 100644
--- a/app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c
+++ b/app/app-prime-modbus/app/app-prime-modbus/rs485_serial.c
@@ -8,8 +8,8 @@
 /**
     @file     main_control.c
     @date     2017/01/12
-    @author   ��漮 jks@falinux.com  FALinux.Co.,Ltd.
-    @brief    �µ������� ���� ���α׷�
+    @author   장길석 jks@falinux.com  FALinux.Co.,Ltd.
+    @brief    온도조절기 제어 프로그램
 
     @todo
     @bug
@@ -17,8 +17,8 @@
     @warning
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -31,7 +31,7 @@
 #include <rs485_serial.h>
 #include <udp_gui.h>
 
-#define MAX_RETRY               3                                   // ���� ���� �� �� ���� Ƚ��
+#define MAX_RETRY               3                                   // 전송 실패 시 재 전송 횟수
 #define MAX_BUFF_SIZE           1024
 
 enum step_t {
@@ -63,25 +63,25 @@ static char     	    buff[MAX_BUFF_SIZE];
 static poll_obj_t      *obj_uart;
 static enum step_t      step_work = STEP_CONTROL;
 static enum switch_t    sw_uart = SW_WAIT_ADDRESS;
-static char             tx_data[MAX_BUFF_SIZE];                     // ���� ������ ����
-static int              tx_szdata;                                  // ���� ������ ����
+static char             tx_data[MAX_BUFF_SIZE];                     // 전송 데이터 버퍼
+static int              tx_szdata;                                  // 전송 데이터 길이
 static U8               rx_data[MAX_BUFF_SIZE];
 static int              rx_index;
 static int              rx_szdata;
-static msec_t           tm_recv;                                    // ��� ���� Ȯ���� ���� �ð� ����
-static int              cnt_retry;                                  // ���� ���п� ���� �� ���� Ƚ��
-static int              bit_onoff19 = 0;                            // bit sw 0x19 ���� ��
-static int              bit_onoff21 = 0;                            // bit sw 0x21 ���� ��
-static int              bit_onoff22 = 0;                            // bit sw 0x22 ���� ��
-static U16              oven_error_bit = 0;                         // ���� ���� ��Ʈ ��
-static U16              ary_error_cnt[16];                          // ���� ī��Ʈ
+static msec_t           tm_recv;                                    // 통신 상태 확인을 위한 시간 변수
+static int              cnt_retry;                                  // 전송 실패에 대한 재 전송 횟수
+static int              bit_onoff19 = 0;                            // bit sw 0x19 변수 값
+static int              bit_onoff21 = 0;                            // bit sw 0x21 변수 값
+static int              bit_onoff22 = 0;                            // bit sw 0x22 변수 값
+static U16              oven_error_bit = 0;                         // 오븐 에러 비트 값
+static U16              ary_error_cnt[16];                          // 에러 카운트
 
-static void run_step_work( int n_step);                             // ������ �۾��� ����
-static void run_next_step_work( void);                              // ���� �۾� ����
+static void run_step_work( int n_step);                             // 지정된 작업을 실행
+static void run_next_step_work( void);                              // 다음 작업 실행
 
 /** ----------------------------------------------------------------------------
-@brief  WORD ����Ʈ�� ����/���� ����Ʈ ������ �ٲ۴�.
-@remark �򿣵���� ��Ʋ���������, ��Ʋ������� �򿣵������ ����
+@brief  WORD 바이트의 하위/상위 바이트 순서를 바꾼다.
+@remark 빅엔디안을 리틀엔디안으로, 리틀엔디안을 빅엔디안으로 변경
 @param  -
 @return -
  -----------------------------------------------------------------------------*/
@@ -94,14 +94,14 @@ static void swap_byte( U16 *p16){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  uart�� ���� ������ ����
-@remark ������ ������ uart ���� �ܰ踦 �ʱ�ȭ�Ѵ�.
+@brief  uart로 실제 데이터 전송
+@remark 데이터 전송후 uart 수신 단계를 초기화한다.
 @param
 @return
  -----------------------------------------------------------------------------*/
 static int write_to_uart( void){
 
-    { // ����� �ڵ�, ���� �����͸� ����Ʈ ������ ���
+    { // 디버깅 코드, 전송 데이터를 바이트 단위로 출력
         int ndx;
 
         printf( "send:");
@@ -112,19 +112,19 @@ static int write_to_uart( void){
     }
 
     int rst = uart_write( obj_uart, tx_data, tx_szdata);
-    sw_uart = SW_WAIT_ADDRESS;                                      // ������ ���� �� uart ���� �ܰ� �ʱ�ȭ
+    sw_uart = SW_WAIT_ADDRESS;                                      // 데이터 전송 후 uart 수신 단계 초기화
 
-    tm_recv = get_cur_msec();                                       // ���� �ð� ����
+    tm_recv = get_cur_msec();                                       // 현재 시간 갱신
 
     return rst;
 }
 
 /** ----------------------------------------------------------------------------
-@brief  uart�� ������ �����͸� �ϼ�
-@remark tx_data   <- ������ ������
-        tx_szdata <- ������ ������ ����Ʈ ����
-@param  pdata   : ������ ������
-        sz_data : ������ ����Ʈ ����
+@brief  uart로 전송할 데이터를 완성
+@remark tx_data   <- 전송할 데이터
+        tx_szdata <- 전송할 데이터 바이트 개수
+@param  pdata   : 데이터 포인터
+        sz_data : 데이터 바이트 개수
 @return
  -----------------------------------------------------------------------------*/
 static void make_tx_data( char *pdata, int sz_data){
@@ -141,11 +141,11 @@ static void make_tx_data( char *pdata, int sz_data){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  �������κ��� ���� �����͸� ��û�Ѵ�.
+@brief  오븐으로부터 상태 데이터를 요청한다.
 @remark
-@param  addr_high   : ���� address
-        addr_low    : ���� address
-        size        : �䱸�� ������ ����Ʈ ����
+@param  addr_high   : 상위 address
+        addr_low    : 하위 address
+        size        : 요구할 데이터 바이트 개수
 @return
  -----------------------------------------------------------------------------*/
 static void modbus_func03( int addr_high, int addr_low, int size){
@@ -159,15 +159,15 @@ static void modbus_func03( int addr_high, int addr_low, int size){
     buff[ndx++] = 0x00;
     buff[ndx++] = size;
 
-    make_tx_data( buff, ndx);                                       // ���� ���� �����͸� ����
-    write_to_uart();                                                // uart�� ����
+    make_tx_data( buff, ndx);                                       // 실제 전송 데이터를 생성
+    write_to_uart();                                                // uart로 전송
 }
 /** ----------------------------------------------------------------------------
-@brief  �������κ��� ���� �����͸� ��û�Ѵ�.
+@brief  오븐으로부터 상태 데이터를 요청한다.
 @remark
-@param  addr_high   : ���� address
-        addr_low    : ���� address
-        size        : �䱸�� ������ ����Ʈ ����
+@param  addr_high   : 상위 address
+        addr_low    : 하위 address
+        size        : 요구할 데이터 바이트 개수
 @return
  -----------------------------------------------------------------------------*/
 static void modbus_func04( int addr_high, int addr_low, int size){
@@ -181,17 +181,17 @@ static void modbus_func04( int addr_high, int addr_low, int size){
     buff[ndx++] = 0x00;
     buff[ndx++] = size;
 
-    make_tx_data( buff, ndx);                                       // ���� ���� �����͸� ����
-    write_to_uart();                                                // uart�� ����
+    make_tx_data( buff, ndx);                                       // 실제 전송 데이터를 생성
+    write_to_uart();                                                // uart로 전송
 }
 
 /** ----------------------------------------------------------------------------
-@brief  �������� ��� ����(���� ��û)
+@brief  오븐으로 명령 전송(쓰기 요청)
 @remark
-@param  addr_high   : ���� address
-        addr_low    : ���� address
-        data_high   : ���� data
-        data_log    : ���� data
+@param  addr_high   : 상위 address
+        addr_low    : 하위 address
+        data_high   : 상위 data
+        data_log    : 하위 data
 @return
  -----------------------------------------------------------------------------*/
 static void modbus_func06( int addr_high, int addr_low, int data_high, int data_low){
@@ -205,14 +205,14 @@ static void modbus_func06( int addr_high, int addr_low, int data_high, int data_
     buff[ndx++] = data_high;
     buff[ndx++] = data_low;
 
-    make_tx_data( buff, ndx);                                       // ���� ���� �����͸� ����
-    write_to_uart();                                                // uart�� ����
+    make_tx_data( buff, ndx);                                       // 실제 전송 데이터를 생성
+    write_to_uart();                                                // uart로 전송
 }
 
 /** ----------------------------------------------------------------------------
-@brief  GUI�� ���� ��� ����
+@brief  GUI의 쓰기 명령 실행
 @remark
-@param  pcmd    : GUI�� ��û�� ���
+@param  pcmd    : GUI가 요청한 명령
 @return
  -----------------------------------------------------------------------------*/
 static void set_value( command_t *pcmd){
@@ -246,13 +246,13 @@ static void set_value( command_t *pcmd){
     int value_high  = ( pcmd->value >> 8) & 0xff;
     int value_low   = ( pcmd->value     ) & 0xff;
 
-    modbus_func06( 0, addr, value_high, value_low);                     // Modbus Func 6 �Լ� ȣ��
+    modbus_func06( 0, addr, value_high, value_low);                     // Modbus Func 6 함수 호출
 }
 
 /** ----------------------------------------------------------------------------
-@brief  GUI�� ����ġ on/off ��� ����
+@brief  GUI의 스위치 on/off 명령 실행
 @remark
-@param  pcmd    : GUI�� ��û�� ���
+@param  pcmd    : GUI가 요청한 명령
 @return
  -----------------------------------------------------------------------------*/
 static void onoff_switch( command_t *pcmd){
@@ -271,13 +271,13 @@ static void onoff_switch( command_t *pcmd){
     int value_high  = 0;
     int value_low   = pcmd->value;
 
-    modbus_func06( 0, addr, value_high, value_low);                     // Modbus Func 6 �Լ� ȣ��
+    modbus_func06( 0, addr, value_high, value_low);                     // Modbus Func 6 함수 호출
 }
 
 /** ----------------------------------------------------------------------------
-@brief  GUI�� ��Ʈ ���� ����ġ on/off ��� ����
-@remark 0x0021, 0x0022 ��Ʈ ���� ����ġ ����
-@param  pcmd    : GUI�� ��û�� ���
+@brief  GUI의 비트 단위 스위치 on/off 명령 실행
+@remark 0x0021, 0x0022 비트 단위 스위치 제어
+@param  pcmd    : GUI가 요청한 명령
 @return
  -----------------------------------------------------------------------------*/
 static void onoff_bit( command_t *pcmd){
@@ -352,11 +352,11 @@ static void onoff_bit( command_t *pcmd){
     int value_high  = ( *p_onoff >> 8) & 0xff;
     int value_low   = ( *p_onoff     ) & 0xff;
 
-    modbus_func06( 0, addr, value_high, value_low);                     // Modbus Func 6 �Լ� ȣ��
+    modbus_func06( 0, addr, value_high, value_low);                     // Modbus Func 6 함수 호출
 }
 
 /** ----------------------------------------------------------------------------
-@brief  ���� ���� ��Ʈ�� ī��Ʈ�� �ʱ�ȭ
+@brief  오븐 에러 비트별 카운트를 초기화
 @remark -
 @param  -
 @return
@@ -371,7 +371,7 @@ static void clear_error_cnt(){
 
 }
 /** ----------------------------------------------------------------------------
-@brief  GUI�κ��� ������ ��û�� �ִٸ�
+@brief  GUI로부터 수신한 요청이 있다면
 @remark -
 @param  -
 @return
@@ -380,19 +380,19 @@ static void check_gui_cmd( void){
 
     command_t   cmd;
 
-    if ( 0 < gui_get_command( &cmd)){                               // GUI�κ��� ��û�� �ִٸ�
+    if ( 0 < gui_get_command( &cmd)){                               // GUI로부터 요청이 있다면
         switch( cmd.cmd){
-        case CMD_VALUE  :                                           // ���� �� ����
+        case CMD_VALUE  :                                           // 오븐 값 설정
             set_value( &cmd);
             break;
-        case CMD_ONOFF  :                                           // ���� ����ġ ����
+        case CMD_ONOFF  :                                           // 오븐 스위치 변경
             if ( TG_BITONOFF > cmd.target){
                 onoff_switch( &cmd);
             } else {
                 onoff_bit( &cmd);
             }
             break;
-        case CMD_CLEAR_ERROR_CNT    :                               // ���� ī��Ʈ �ʱ�ȭ
+        case CMD_CLEAR_ERROR_CNT    :                               // 에러 카운트 초기화
             clear_error_cnt();
             break;
         }
@@ -403,7 +403,7 @@ static void check_gui_cmd( void){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  �������κ��� ���� ���� �޾���
+@brief  오븐으로부터 상태 값을 받았음
 @remark
 @param -
 @return
@@ -413,14 +413,14 @@ static void on_rcv_control( void){
     gui_oven_control_t  oven;
     int                 ndx;
 
-    // �򿣵���� ��Ʋ��������� ����
-    U16 *pword = (U16 *)&rx_data[3];                                // �����ʹ� rx_data[3]���� ����
+    // 빅엔디안을 리틀엔디안으로 변경
+    U16 *pword = (U16 *)&rx_data[3];                                // 데이터는 rx_data[3]에서 시작
 
     for ( ndx = 0; ndx < rx_szdata / 2; ndx++){
         swap_byte( pword++);
     }
 
-    // ���� ó��
+    // 변수 처리
 
     oven.header    = HDR_OVEN_CONTROL;
     memcpy( ( char *)&oven.control, &rx_data[3], sizeof( oven_control_t));
@@ -441,14 +441,14 @@ static void on_rcv_control( void){
     printf( "manual_onoff21 = 0x%04x\n", bit_onoff21);
     printf( "manual_onoff22 = 0x%04x\n", bit_onoff22);
 
-    // GUI�� ����
+    // GUI로 전송
     gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t));
 
-    // ���� �ܰ� ����
+    // 다음 단계 실행
     run_next_step_work();
 }
 /** ----------------------------------------------------------------------------
-@brief  �������κ��� ���� ���� �޾���
+@brief  오븐으로부터 상태 값을 받았음
 @remark
 @param -
 @return
@@ -458,33 +458,33 @@ static void on_rcv_status( void){
     gui_oven_state_t    oven;
     int                 ndx;
 
-    // �򿣵���� ��Ʋ��������� ����
-    U16 *pword = (U16 *)&rx_data[3];                                // �����ʹ� rx_data[3]���� ����
+    // 빅엔디안을 리틀엔디안으로 변경
+    U16 *pword = (U16 *)&rx_data[3];                                // 데이터는 rx_data[3]에서 시작
 
     for ( ndx = 0; ndx < rx_szdata / 2; ndx++){
         swap_byte( pword++);
     }
 
-    // ���� ó��
+    // 변수 처리
 
     oven.header    = HDR_OVEN_STATE;
     memcpy( ( char *)&oven.state, &rx_data[3], sizeof(oven_state_t) - sizeof(oven.state.error_cnt));           // 0x32 : ���� ���� ���� 2����Ʈ ����
 
-    bit_onoff21 = oven.state.onoff_state1;                          // ���� ���� ���¸� �ݿ�
-    bit_onoff22 = oven.state.onoff_state2;                          // ���� ���� ���¸� �ݿ�
+    bit_onoff21 = oven.state.onoff_state1;                          // 현재 오븐 상태를 반영
+    bit_onoff22 = oven.state.onoff_state2;                          // 현재 오븐 상태를 반영
 
     if ( oven_error_bit != oven.state.system_error){
 
-        // ����� ��Ʈ�� �ִ� �� Ȯ��
+        // 변경된 비트가 있는 지 확인
         U16     bit_ndx  = 0x0001;
         int     bit_prev;
         int     bit_curr;
 
         for ( ndx = 0; ndx < 16; ndx++){
-            bit_prev = oven_error_bit           & bit_ndx;          // ���� ��Ʈ ����
-            bit_curr = oven.state.system_error  & bit_ndx;          // ���� ��Ʈ ����
-            if ( bit_prev != bit_curr){                             // ��Ʈ ���� ���̰� �ִٸ�
-                if ( 0 != bit_prev){                                // ��Ʈ ���� 0->1 ��ȭ�� �� ���� ī��Ʈ ����
+            bit_prev = oven_error_bit           & bit_ndx;          // 이전 비트 상태
+            bit_curr = oven.state.system_error  & bit_ndx;          // 현재 비트 상태
+            if ( bit_prev != bit_curr){                             // 비트 값에 차이가 있다면
+                if ( 0 != bit_prev){                                // 비트 값이 0->1 변화일 때 에러 카운트 증가
                     ary_error_cnt[ndx]++;
                 }
             }
@@ -496,21 +496,21 @@ static void on_rcv_status( void){
             oven.state.error_cnt[ndx]   = ary_error_cnt[ndx];
         }
 
-        oven_error_bit = oven.state.system_error;                   // ���� ��Ʈ �� ����
+        oven_error_bit = oven.state.system_error;                   // 에러 비트 값 변경
     }
 
     printf( "onoff_state1       = 0x%04x\n", oven.state.onoff_state1);
     printf( "onoff_state2       = 0x%04x\n", oven.state.onoff_state2);
     printf( "onoff_realy_load   = 0x%04x\n", oven.state.onoff_relay_load);
 
-    // GUI�� ����
+    // GUI로 전송
     gui_send_data_to_gui( ( char *)&oven, sizeof( gui_oven_state_t));
 
-    // ���� �ܰ� ����
+    // 다음 단계 실행
     run_next_step_work();
 }
 /** ----------------------------------------------------------------------------
-@brief  �������κ��� ��� ���� ����� �޾���
+@brief  오븐으로부터 명령 수행 결과를 받았음
 @remark
 @param -
 @return
@@ -519,15 +519,15 @@ static void on_rcv_echo( void){
 
     printf( "receive func code 0x%x\n", rx_data[1] & 0xff);
 
-    if ( gui_command_exists()){                             // ó���ؾ��� ����� ���� �ִٸ�
-        check_gui_cmd();                                    // ���� ����� �����Ѵ�.
-    } else {                                                // ó���ؾ��� ����� ���ٸ�
-        run_next_step_work();                               // ���� �ܰ�� �Ѿ� ����.
+    if ( gui_command_exists()){                             // 처리해야할 명령이 남아 있다면
+        check_gui_cmd();                                    // 다음 명령을 전송한다.
+    } else {                                                // 처리해야할 명령이 없다면
+        run_next_step_work();                               // 다음 단계로 넘어 간다.
     }
 }
 
 /** ----------------------------------------------------------------------------
-@brief  �������κ��� Modbus 80 ���� �ڵ� ���� �� ó��
+@brief  오븐으로부터 Modbus 80 에러 코드 수신 시 처리
 @remark
 @param -
 @return
@@ -539,7 +539,7 @@ static void on_rcv_80_code( void){
     switch( step_work){
         case STEP_CHECK :
             printf( "failed to command to oven\n");
-            gui_send_error_code( ERR_RECEIVE_80);                   // 0x80 �ڵ� ������ GUI�� �˸�
+            gui_send_error_code( ERR_RECEIVE_80);                   // 0x80 코드 수령을 GUI에 알림
             break;
         default :
             break;
@@ -548,14 +548,14 @@ static void on_rcv_80_code( void){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  uart�κ��� CRC���� Ȯ���� ������ ��������
+@brief  uart로부터 CRC까지 확인한 전문을 수신했음
 @remark
 @param
 @return
  -----------------------------------------------------------------------------*/
 static void on_receive_data( void){
 
-    // function �ڵ庰�� �з�
+    // function 코드별로 분류
     switch ( rx_data[1]){
         case 0x03   :   on_rcv_control();   break;
         case 0x04   :   on_rcv_status();    break;
@@ -569,14 +569,14 @@ static void on_receive_data( void){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  CRC üũ
+@brief  CRC 체크
 @remark
 @param
-@return true: CRC �� ����
+@return true: CRC 값 옳음
  -----------------------------------------------------------------------------*/
 static int is_crc_ok( void){
 
-    // rx_index�� ���ο� ����Ʈ�� ���� ��ġ. ��, ������ ����Ʈ ����
+    // rx_index는 새로운 바이트를 넣을 위치. 즉, 데이터 바이트 개수
     U16 crc         = CRC16( ( unsigned char *)rx_data, rx_index-2);
 
     U32 data_crc_lo = rx_data[rx_index-2];
@@ -588,10 +588,10 @@ static int is_crc_ok( void){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  uart ��Ʈ�κ��� ������ �����͸� ó��
+@brief  uart 포트로부터 수신한 데이터를 처리
 @remark
-@param  obj : ��� ��ü
-@return ���� ����Ʈ ����
+@param  obj : 통신 객체
+@return 수신 바이트 개수
  -----------------------------------------------------------------------------*/
 static int on_serial_read( poll_obj_t *obj )
 {
@@ -599,7 +599,7 @@ static int on_serial_read( poll_obj_t *obj )
     int     ndx;
     int     rdcnt;
 
-    tm_recv = get_cur_msec();                                       // ����Ʈ Ÿ�� ������ �ɸ��� �ʵ��� ���� �ð� ����.
+    tm_recv = get_cur_msec();                                       // 웨이트 타임 오버에 걸리지 않도록 현재 시간 갱신.
 
     memset(buff, 0, sizeof(buff));
     rdcnt = uart_read(obj, buff, sizeof(buff));
@@ -615,10 +615,10 @@ static int on_serial_read( poll_obj_t *obj )
                 case SW_WAIT_FUNCTION   :
                     rx_data[rx_index++] = ch_data;
                     switch( ch_data){
-                    case 0x03   :                                   // ������ 0x04�� COUNT ������ �ʿ�
+                    case 0x03   :                                   // 모드버스 0x04는 COUNT 정보가 필요
                         sw_uart = SW_WAIT_COUNT;
                         break;
-                    case 0x04   :                                   // ������ 0x04�� COUNT ������ �ʿ�
+                    case 0x04   :                                   // 모드버스 0x04는 COUNT 정보가 필요
                         sw_uart = SW_WAIT_COUNT;
                         break;
                     default :
@@ -626,28 +626,28 @@ static int on_serial_read( poll_obj_t *obj )
                         break;
                     }
                     break;
-                case SW_WAIT_COUNT      :                           // ������ ���̸� ����
+                case SW_WAIT_COUNT      :                           // 데이터 길이를 구함
                     sw_uart             = SW_WAIT_DATA_COUNT;
                     rx_data[rx_index++] = ch_data;
-                    rx_szdata           = ch_data;                  // CRC�� ������ ����Ʈ ����
+                    rx_szdata           = ch_data;                  // CRC를 제외한 바이트 개수
                     break;
                 case SW_WAIT_DATA_COUNT :
-                    rx_data[rx_index++] = ch_data;                  // rx_szdata ���� ����Ʈ ��ŭ �о� ����
-                    if ( rx_szdata == rx_index-3){                  // -3: ���� 1����Ʈ, FUN 1����Ʈ, ������ ���� 1����Ʈ ���� ����
+                    rx_data[rx_index++] = ch_data;                  // rx_szdata 개의 바이트 만큼 읽어 들임
+                    if ( rx_szdata == rx_index-3){                  // -3: 국번 1바이트, FUN 1바이트, 데이터 길이 1바이트 선두 제거
                         sw_uart = SW_WAIT_CRC_LOW;
                     }
                     break;
-                case SW_WAIT_DATA       :                           // ��� ���� 0x05���� �о� ���� ������ ������ 4����Ʈ
+                case SW_WAIT_DATA       :                           // 모드 버스 0x05에서 읽어 들일 데이터 개수는 4바이트
                     rx_data[rx_index++] = ch_data;
-                    if ( 4 == rx_index-2){                          // -2: ���� 1����Ʈ, FUN 1����Ʈ
+                    if ( 4 == rx_index-2){                          // -2: 국번 1바이트, FUN 1바이트
                         sw_uart = SW_WAIT_CRC_LOW;
                     }
                     break;
-                case SW_WAIT_CRC_LOW    :                           // crc low ����Ʈ ����
+                case SW_WAIT_CRC_LOW    :                           // crc low 바이트 수신
                     sw_uart             = SW_WAIT_CRC_HIGH;
                     rx_data[rx_index++] = ch_data;
                     break;
-                case SW_WAIT_CRC_HIGH   :                           // crc high ����Ʈ ����
+                case SW_WAIT_CRC_HIGH   :                           // crc high 바이트 수신
                     sw_uart             = SW_WAIT_ADDRESS;
                     rx_data[rx_index++] = ch_data;
                     if ( is_crc_ok()){
@@ -661,9 +661,9 @@ static int on_serial_read( poll_obj_t *obj )
 }
 
 /** ----------------------------------------------------------------------------
-@brief  �����͸� �������� �� ���� ���� ó��
-@remark �µ��� �� �о��� ���� ���� �޸��� �µ� ������ -9999��
-        RUNSTOP �� ��û�� ���� �����Ͱ� ���ٸ� RUNSTOP_NOT_EXISTS�� ����
+@brief  데이터를 수신하지 못 했을 때의 처리
+@remark 온도를 못 읽었을 때는 공유 메모리의 온도 값에는 -9999로
+        RUNSTOP 값 요청에 대한 데이터가 없다면 RUNSTOP_NOT_EXISTS로 지정
 @param
 @return
  -----------------------------------------------------------------------------*/
@@ -672,44 +672,44 @@ static void on_no_data( void){
     if ( MAX_RETRY < cnt_retry){
         printf( ">>>>>>>> failed to send data\n");
 
-        if ( STEP_CHECK == step_work){                              // GUI ��û���� ����� ���� ���̾���
-            gui_send_error_code( ERR_SEND_COMMAND);             // ��� ���� ���и� GUI�� �˸�
+        if ( STEP_CHECK == step_work){                              // GUI 요청으로 명령을 전송 중이었다
+            gui_send_error_code( ERR_SEND_COMMAND);             // 명령 전송 실패를 GUI에 알림
         }
     } else {
-        write_to_uart();                                    // ���� ���� �����͸� �ٽ� ����
+        write_to_uart();                                    // 이전 전송 데이터를 다시 전송
         cnt_retry++;
         return;
     }
 
-    run_step_work( STEP_CONTROL);                                   // ����� ��� �����ߴٸ� ���� ���¸� ���ϴ� �۾����� �ٽ� ����
+    run_step_work( STEP_CONTROL);                                   // 통신을 계속 실패했다면 오븐 상태를 구하는 작업부터 다시 시작
 }
 
 /** ----------------------------------------------------------------------------
-@brief  �μ��� ���� �۾� STEP�� �����Ѵ�.
+@brief  인수로 받은 작업 STEP을 실행한다.
 @remark
-@param  n_step  : ������ STEP
+@param  n_step  : 실행할 STEP
 @return -
  -----------------------------------------------------------------------------*/
 static void run_step_work( int n_step){
 
-    step_work   = n_step;                                           // �۾� �ܰ� ����
-    cnt_retry   = 0;                                                // ���� �۾��� ���� �� ���� Ƚ�� �ʱ�ȭ
-    msleep( 50);                                                    // ���� ��� ��û ���� ���� ������ ������ �� �Ǵ� ��찡 ����
+    step_work   = n_step;                                           // 작업 단계 변경
+    cnt_retry   = 0;                                                // 현재 작업에 대한 재 전송 횟수 초기화
+    msleep( 50);                                                    // 다음 명령 요청 전에 쉬지 않으면 수신이 안 되는 경우가 있음
 
     switch( step_work){
         case STEP_CONTROL       : modbus_func03( 0x00, 0x00, sizeof( oven_control_t) /2);                    break;  // ������ ��û ���� /2: word ������ ����, 2���� ��û�ϸ� 4 ����Ʈ ����
         case STEP_STATE         : modbus_func04( 0x00, 0x00, (sizeof( oven_state_t) - sizeof(U16) * 16) /2); break;  // oven_stae_t�� error_cnt[] ������ �־ ���� �Է�
         case STEP_CHECK         : check_gui_cmd();                                                           break;  // GUI ��û Ȯ��
         default                 :
-            msleep( 100);                                           // 100mm sec �޽�, ��� ���� ����
-            run_next_step_work();                                   // ���� STEP ����
+            msleep( 100);                                           // 100mm sec 휴식, 통신 간격 조절
+            run_next_step_work();                                   // 다음 STEP 실행
             break;
     }
 }
 
 /** ----------------------------------------------------------------------------
-@brief  ���� �۾� STEP�� �����Ѵ�.
-@remark STEP�� ����ϴ� step_work�� ����
+@brief  다음 작업 STEP을 실행한다.
+@remark STEP을 기억하는 step_work를 증가
 @param  -
 @return -
  -----------------------------------------------------------------------------*/
@@ -721,14 +721,14 @@ static void run_next_step_work( void){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  ������ ���� ���� Ȯ��
+@brief  데이터 수신 여부 확인
 @remark
-@param  msec_t tm_curr  : ���� �ð�
+@param  msec_t tm_curr  : 현재 시간
 @return
  -----------------------------------------------------------------------------*/
 int rs485_timer( msec_t tm_curr){
 
-    if ( 500 <= ( tm_curr - tm_recv) ){                        // 1�� �̻� ���ŵǴ� �����Ͱ� ���ٸ� ��� �̻����� �Ǵ�
+    if ( 500 <= ( tm_curr - tm_recv) ){                        // 1초 이상 수신되는 데이터가 없다면 통신 이상으로 판단
         on_no_data();
     }
     return 0;
@@ -736,9 +736,9 @@ int rs485_timer( msec_t tm_curr){
 
 
 /** ----------------------------------------------------------------------------
-@brief  rs485 ��� ���� ����
+@brief  rs485 모듈 실행 시작
 @remark
-@param  uart_name   : uart ��ġ �̸�
+@param  uart_name   : uart 장치 이름
 @return
  -----------------------------------------------------------------------------*/
 int rs845_run_start( void){
@@ -749,7 +749,7 @@ int rs845_run_start( void){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  ��� ������ ���� �ʱ�Ȱ�� �Ѵ�.
+@brief  모듈 시작을 위한 초기활를 한다.
 @remark
 @param
 @return
@@ -760,7 +760,7 @@ int rs485_initialize( void){
     poll_obj_t  *obj;
     int          ndx;
 
-    inifile = ini_create( INI_SYSTEM);                                    // IniFile ����
+    inifile = ini_create( INI_SYSTEM);                                    // IniFile 생성
     if  ( NULL == inifile){
         printf( "ini file error.\n");
         return -1;
@@ -781,12 +781,12 @@ int rs485_initialize( void){
         ini_free( inifile);
     }
 
-    memset( &rx_data, 0, sizeof( rx_data));                         // ���� ���� ���� �ʱ�ȭ
+    memset( &rx_data, 0, sizeof( rx_data));                         // 누적 수신 버퍼 초기화
 
     obj_uart    = obj;
 
-    // ���� ī��Ʈ�� ���� ��Ʈ �ʱ�ȭ
-    // ���� ���Ͽ��� �о� ����
+    // 에러 카운트를 위한 비트 초기화
+    // 추후 파일에서 읽어 들임
 
     for ( ndx = 0; ndx < 16; ndx++){
         ary_error_cnt[ndx] = 0;
diff --git a/app/app-prime-modbus/app/app-prime-modbus/udp_gui.c b/app/app-prime-modbus/app/app-prime-modbus/udp_gui.c
index 3f71ac6..d3a01cb 100644
--- a/app/app-prime-modbus/app/app-prime-modbus/udp_gui.c
+++ b/app/app-prime-modbus/app/app-prime-modbus/udp_gui.c
@@ -1,16 +1,16 @@
 /**
     @file     udp_gui.c
     @date     2017/02/13
-    @author   ��漮 jks@falinux.com  FALinux.Co.,Ltd.
-    @brief    ������ ����, GUI���� ���
+    @author   장길석 jks@falinux.com  FALinux.Co.,Ltd.
+    @brief    프라임 오븐, GUI와의 통신
     @todo
     @bug
     @remark
     @warning
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -25,13 +25,13 @@
 static char         buff[MAX_BUFF_SIZE];
 static char         gui_ip[100];
 static int          gui_port;
-static que_t        que;                                            // ���� ť
+static que_t        que;                                            // 원형 큐
 static poll_obj_t  *obj_udp = NULL;
 
 /** ----------------------------------------------------------------------------
-@brief  UDP�� ���ŵ� ������ ����
+@brief  UDP로 수신된 데이터 있음
 @remark
-@param  obj : UDP ��� ��ü
+@param  obj : UDP 통신 객체
 @return
  -----------------------------------------------------------------------------*/
 static int on_udp_read(poll_obj_t *obj) {
@@ -48,10 +48,10 @@ static int on_udp_read(poll_obj_t *obj) {
 }
 
 /** ----------------------------------------------------------------------------
-@brief  �����͸� GUI�� ����
+@brief  데이터를 GUI로 전송
 @remark
-@param  p_data  : ���� ������
-        sz_data : ������ ����Ʈ ����
+@param  p_data  : 전송 데이터
+        sz_data : 데이터 바이트 개수
 @return
  -----------------------------------------------------------------------------*/
 int gui_send_data_to_gui( char *p_data, int sz_data){
@@ -66,9 +66,9 @@ int gui_send_data_to_gui( char *p_data, int sz_data){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  gui�� ���� �ڵ� ����
+@brief  gui로 에러 코드 전송
 @remark
-@param  code : ���� �ڵ夤
+@param  code : 에러 코드ㄴ
 @return
  -----------------------------------------------------------------------------*/
 int gui_send_error_code( int code){
@@ -86,7 +86,7 @@ int gui_send_error_code( int code){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  ������� ���� GUI ��ſ� ������ ť�� �߰�
+@brief  디버깅을 위해 GUI 대신에 명려을 큐에 추가
 @remark
 @param
 @return
@@ -99,10 +99,10 @@ int gui_test( command_t cmd){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  GUI�κ��� ������ ������ ������ Ȯ��
+@brief  GUI로부터 수신한 명령이 있음을 확인
 @remark
 @param
-@return true : ���� ����
+@return true : 명령 있음
  -----------------------------------------------------------------------------*/
 int gui_command_exists( void){
 
@@ -110,9 +110,9 @@ int gui_command_exists( void){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  GUI��� ������ ������ ����
+@brief  GUI로부터 수신한 명령을 구함
 @remark
-@param  pcmd    : ������ ������ ������
+@param  pcmd    : 명령을 수령할 포인터
 @return
  -----------------------------------------------------------------------------*/
 int gui_get_command( command_t *pcmd){
@@ -120,8 +120,8 @@ int gui_get_command( command_t *pcmd){
     static char buff[MAX_QUE_DATA_SIZE];
     int sz_data;
 
-    if ( que_exists( &que)){ // ť�� �����Ͱ� �ִٸ�
-        sz_data = que_get( &que, buff, sizeof( buff)); // ť���� ������ ����
+    if ( que_exists( &que)){ // 큐에 데이터가 있다면
+        sz_data = que_get( &que, buff, sizeof( buff)); // 큐에서 데이터 수신
         memcpy( ( char *)pcmd, buff, sizeof( command_t));
         return sz_data;
     } else {
@@ -130,7 +130,7 @@ int gui_get_command( command_t *pcmd){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  upd_gui ��� ����
+@brief  upd_gui 모듈 시작
 @remark
 @param
 @return
@@ -141,7 +141,7 @@ int gui_run_start( void){
 }
 
 /** ----------------------------------------------------------------------------
-@brief  ��� ������ ���� �ʱ�Ȱ�� �Ѵ�.
+@brief  모듈 시작을 위한 초기활를 한다.
 @remark
 @param
 @return
@@ -154,9 +154,9 @@ int gui_initialize( void){
     int      port;
 
 
-    que_init( &que);                                                // ���� ť �ʱ�ȭ
+    que_init( &que);                                                // 원형 큐 초기화
 
-    inifile = ini_create( INI_SYSTEM);                              // IniFile ����
+    inifile = ini_create( INI_SYSTEM);                              // IniFile 생성
     if  ( NULL == inifile){
         printf( "ini file error.\n");
         return -1;
@@ -183,5 +183,3 @@ int gui_initialize( void){
 
     return 0;
 }
-
-
diff --git a/app/app-prime-modbus/app/app-prime-modbus/udp_gui.h b/app/app-prime-modbus/app/app-prime-modbus/udp_gui.h
index c5c1643..bfd0e0c 100644
--- a/app/app-prime-modbus/app/app-prime-modbus/udp_gui.h
+++ b/app/app-prime-modbus/app/app-prime-modbus/udp_gui.h
@@ -9,9 +9,9 @@
 #define APP_OVEN_CONTROLLER_gui_GUI_H_
 
 extern int gui_send_data_to_gui( char *p_data, int sz_data);
-extern int gui_send_error_code( int code);                          // gui�� ���� �ڵ� ����
-extern int gui_command_exists( void);                               // gui�κ��� �Է� ����
-extern int gui_test( command_t cmd);                                // �׽�Ʈ�� ���� ���� �ڵ带 �߰�
+extern int gui_send_error_code( int code);                          // gui로 에러 코드 전송
+extern int gui_command_exists( void);                               // gui로부터 입력 받은
+extern int gui_test( command_t cmd);                                // 테스트를 위한 명령 코드를 추가
 extern int gui_get_command( command_t *pcmd);
 extern int gui_run_start( void);
 extern int gui_initialize( void);
diff --git a/app/app-prime-modbus/include/all_share.h b/app/app-prime-modbus/include/all_share.h
index 3f86657..bb4aca5 100644
--- a/app/app-prime-modbus/include/all_share.h
+++ b/app/app-prime-modbus/include/all_share.h
@@ -1,15 +1,15 @@
 //------------------------------------------------------------------------------
-// ȭ�ϸ�   : all_share.h
-// ������Ʈ :
-// ��  ��   : ���� �޸� ����ü�� �����Ѵ�.
-// 
-// ���۱�   : FA�������ֽ�ȸ��
-// ��  ��   :
+// 화일명   : all_share.h
+// 프로젝트 :
+// 설  명   : 공유 메모리 구조체를 선언한다.
+//
+// 저작권   : FA리눅스주식회사
+// 주  의   :
 //------------------------------------------------------------------------------
 #ifndef _ALL__SHARE_HEADER_
 #define _ALL__SHARE_HEADER_
-                             
-#define STRUCT_PACK     __attribute__ ((packed))                             
+
+#define STRUCT_PACK     __attribute__ ((packed))
 #define SHM_METER_KEY   0xFA1234
 
 #define TRUE                1
@@ -25,9 +25,9 @@ typedef unsigned long long  U64;
 typedef signed short        I16;
 
 enum command_enum_t {
-    CMD_VALUE   = 0,                                                // ���� �� ����
-    CMD_ONOFF,                                                      // ���� ����ġ ON/OFF
-    CMD_CLEAR_ERROR_CNT                                             // ���� ī��Ʈ�� �ʱ�ȭ
+    CMD_VALUE   = 0,                                                // 오븐 값 변경
+    CMD_ONOFF,                                                      // 오븐 스위치 ON/OFF
+    CMD_CLEAR_ERROR_CNT                                             // 에러 카운트를 초기화
 };
 
 enum target_value_t {
@@ -93,18 +93,18 @@ enum target_onoff_t {
 };
 
 enum {
-    HDR_OVEN_CONTROL  = 0,                                          // 40000 ���� ��, ��Ʈ�� ����
-    HDR_OVEN_STATE,                                                 // 30000 ���� ��, ���� ����
-    HDR_ERROR_CODE                                                  // ���� �ڵ�
+    HDR_OVEN_CONTROL  = 0,                                          // 40000 번지 값, 컨트롤 제어
+    HDR_OVEN_STATE,                                                 // 30000 번지 값, 오븐 상태
+    HDR_ERROR_CODE                                                  // 에러 코드
 };
 
 enum {
-    ERR_SEND_COMMAND    = 0,                                        // ��� ���ۿ� ���� ������ ����
-    ERR_RECEIVE_80                                                  // 0x80 �ڵ带 ��������
+    ERR_SEND_COMMAND    = 0,                                        // 명령 전송에 대한 응답이 없음
+    ERR_RECEIVE_80                                                  // 0x80 코드를 수신했음
 };
 
 //
-// �ý��� ��ü ���� ����ü ����ü
+// 시스템 전체 공유 구조체 구조체
 //
 
 typedef struct
@@ -225,7 +225,7 @@ typedef struct {
     U16     burner2_current_rpm;    // 36
     U16     burner3_current_rpm;    // 37
     U16     controller_error;       // 38
-    U16     error_cnt[16];          // ���� ī��Ʈ
+    U16     error_cnt[16];          // 에러 카운트
 } STRUCT_PACK oven_state_t;
 
 typedef struct {
@@ -245,13 +245,13 @@ typedef struct {
 
 //------------------------------------------------------------------------------
 //
-// ������, ���̷ε�
+// 프레임, 페이로드
 //
 //------------------------------------------------------------------------------
 
 //------------------------------------------------------------------------------
 //
-// ���� ���� ����
+// 전역 변수 정의
 //
 //------------------------------------------------------------------------------
 
diff --git a/app/app-prime-modbus/include/basic_def.h b/app/app-prime-modbus/include/basic_def.h
index cbf80ab..7d6d85b 100644
--- a/app/app-prime-modbus/include/basic_def.h
+++ b/app/app-prime-modbus/include/basic_def.h
@@ -9,7 +9,7 @@
 #include <fcntl.h>
 #include <unistd.h>
 
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -64,7 +64,7 @@
 #include <ipc_call.h>
 
 
-/// ���α׷� �������
+/// 프로그램 실행상태
 enum {
 	PROC_INFO_STATE_STOP = 0,
 	PROC_INFO_STATE_RUN,
diff --git a/app/app-prime-modbus/include/common/dprint.h b/app/app-prime-modbus/include/common/dprint.h
index 106db81..953de75 100644
--- a/app/app-prime-modbus/include/common/dprint.h
+++ b/app/app-prime-modbus/include/common/dprint.h
@@ -1,15 +1,15 @@
 //------------------------------------------------------------------------------
-// ȭ�ϸ�   : dprint.h
-// ������Ʈ : 
-// ��  ��   : NISP ������ ���õ� ��ƾ ���
+// 화일명   : dprint.h
+// 프로젝트 : 
+// 설  명   : NISP 디버깅과 관련된 루틴 헤더
 // 
-// ���۱�   : �������̸������ֽ�ȸ��
-// ��  ��   : 
+// 저작권   : 에프에이리눅스주식회사
+// 주  의   : 
 //------------------------------------------------------------------------------
 #ifndef _NISP_DEBUG_HEADER_
 #define _NISP_DEBUG_HEADER_
 
-// ����ü PACK ���� ����  ------------------------------------------------------
+// 구조체 PACK 관련 정의  ------------------------------------------------------
 #if   defined __GNUC__
                               #define STRUCT_PACK   __attribute__ ((packed))
 #elif defined __BORLANDC__
@@ -42,7 +42,7 @@ extern "C"
 #define tprint(fmt,args...)   dprint( fmt, ## args )
 
 
-// ����ü PACK ���� ����  ------------------------------------------------------
+// 구조체 PACK 관련 정의  ------------------------------------------------------
 #if defined __GNUC__
                               #undef STRUCT_PACK 
 #elif defined __BORLANDC__
diff --git a/app/app-prime-modbus/include/common/famap.h b/app/app-prime-modbus/include/common/famap.h
index 5d668a6..f3e3cc4 100644
--- a/app/app-prime-modbus/include/common/famap.h
+++ b/app/app-prime-modbus/include/common/famap.h
@@ -1,15 +1,15 @@
 /**    
     @file     famap.h
     @date     2010/12/1
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    mmap ��ƿ��Ƽ�̴�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    mmap 유틸리티이다.
               Ver 0.1.0
               
     @modify   
     @todo     
     @bug     
     @remark   
-    @warning   tmmap.c  tmmap.h �ʹ� ���� ������� �ʴ´�.
+    @warning   tmmap.c  tmmap.h 와는 같이 사용하지 않는다.
 */
 //----------------------------------------------------------------------------
 
@@ -21,15 +21,15 @@
 #define  PAGE_SIZE  (1024*4)
 #endif
 
-/// mmap �� ���� ���� ���� ����ü
+/// mmap 를 위한 개별 관리 구조체
 typedef struct {
 	
-	int            dev;         // /dev/mem �����ڵ�
-	unsigned long  phys;        // �����ּ�
-	unsigned long  size;        // ũ��
-	int            base_ofs;    // ���̽� �ּҰ� 4K ������ ���� �ʾ����� ���
+	int            dev;         // /dev/mem 파일핸들
+	unsigned long  phys;        // 물리주소
+	unsigned long  size;        // 크기
+	int            base_ofs;    // 베이스 주소가 4K 정렬이 되지 않았을때 사용
 
-	void          *virt;        // �Ҵ���� �޸�������
+	void          *virt;        // 할당받은 메모리포인터
 	
 } mmap_alloc_t;
 
diff --git a/app/app-prime-modbus/include/common/i2c-api.h b/app/app-prime-modbus/include/common/i2c-api.h
index 0d26643..0306268 100644
--- a/app/app-prime-modbus/include/common/i2c-api.h
+++ b/app/app-prime-modbus/include/common/i2c-api.h
@@ -1,9 +1,9 @@
 //------------------------------------------------------------------------------
-// ������Ʈ : ETRI I2C AGENT
-// �� �� : i2c_api.h
-// �� �� : I2C DEVICE DRIVE API INCLUDE
+// 프로젝트 : ETRI I2C AGENT
+// 파 일 : i2c_api.h
+// 설 명 : I2C DEVICE DRIVE API INCLUDE
 //
-// �� �� : ����â frog@falinux.com
+// 작 성 : 유영창 frog@falinux.com
 //------------------------------------------------------------------------------
 
 #ifndef _I2C_API_LIB_H_
@@ -41,13 +41,13 @@
 
 
 
-#define I2C_NO_ERROR             		    0000 // ������ ����.
-#define I2C_UNKONW_COMMAND       		    7001 // �˼� ���� �������� �����̴�.
-#define I2C_NOT_FIND_MAJOR	                7002 // I2C ����̽� ����̹� �ֹ�ȣ ȹ�� ����
-#define I2C_NOT_FIND_BUS   		            7003 // I2C ������ �߰��Ҽ� ����.
-#define I2C_NOT_FIND_DEVICE  		        7004 // I2C ����̽��� �߰��Ҽ� ����.
-#define I2C_READ_DEVICE             		7005 // �б� ����
-#define I2C_WRITE_DEVICE            		7006 // ���� ����
+#define I2C_NO_ERROR             		    0000 // 에러가 없다.
+#define I2C_UNKONW_COMMAND       		    7001 // 알수 없는 프로토콜 명령이다.
+#define I2C_NOT_FIND_MAJOR	                7002 // I2C 디바이스 드라이버 주번호 획득 실패
+#define I2C_NOT_FIND_BUS   		            7003 // I2C 버스를 발견할수 없다.
+#define I2C_NOT_FIND_DEVICE  		        7004 // I2C 디바이스를 발견할수 없다.
+#define I2C_READ_DEVICE             		7005 // 읽기 실패
+#define I2C_WRITE_DEVICE            		7006 // 쓰기 실패
 
 
 typedef struct 
diff --git a/app/app-prime-modbus/include/common/mtd-nand.h b/app/app-prime-modbus/include/common/mtd-nand.h
index 5b4ef7d..a18df92 100644
--- a/app/app-prime-modbus/include/common/mtd-nand.h
+++ b/app/app-prime-modbus/include/common/mtd-nand.h
@@ -1,17 +1,17 @@
 /**    
     @file     mtd-nand.h
     @date     2010/05/27
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    mtd�� ���� nand �÷��ø� �����Ѥ�.��
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    mtd를 통해 nand 플래시를 제어한ㄷ.ㅏ
               
-    @todo     �׽�Ʈ �Լ��� ���� ������ �ʾҴ�.
+    @todo     테스트 함수를 아직 만들지 않았다.
     @bug     
     @remark  
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -30,7 +30,7 @@ typedef enum {
 		EZP_S5PV210_HEADER = 210
 } ezboot_ver_t;
 
-/// mtd �� ���� ���� ���� ����ü
+/// mtd 를 위한 개별 관리 구조체
 typedef struct {
 
 	char  node_name[128];
@@ -46,18 +46,18 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  mtd-nand.c ���� �����ϴ� �Լ� ����Ʈ 
-extern  mtdnand_t *mtdnand_create( char *fname );  /// mtd-nand �����Լ�
-extern  void  mtdnand_free( mtdnand_t *mtd );      /// mtd-nand �����Լ�
+/// @brief  mtd-nand.c 에서 제공하는 함수 리스트 
+extern  mtdnand_t *mtdnand_create( char *fname );  /// mtd-nand 생성함수
+extern  void  mtdnand_free( mtdnand_t *mtd );      /// mtd-nand 해제함수
 
-extern  int   mtdnand_is_bad( mtdnand_t *mtd );                               /// ������Ȯ�� 
-extern  int   mtdnand_read ( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand ���� ����Ÿ�� �д´�.
-extern  int   mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand �� ����Ÿ�� ����.
-extern  int   mtdnand_read_oob( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand �� oob ������ �д´�.
-extern  int   mtdnand_read_skip_bad( mtdnand_t *mtd, unsigned char *buf, int count ); // mtd-nand ���� �������� ��ŵ�Ͽ� ����Ÿ�� �д´�.
+extern  int   mtdnand_is_bad( mtdnand_t *mtd );                               /// 배드블럭확인 
+extern  int   mtdnand_read ( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand 에서 데이타를 읽는다.
+extern  int   mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand 에 데이타를 쓴다.
+extern  int   mtdnand_read_oob( mtdnand_t *mtd, unsigned char *buf, int count ); /// mtd-nand 의 oob 영역을 읽는다.
+extern  int   mtdnand_read_skip_bad( mtdnand_t *mtd, unsigned char *buf, int count ); // mtd-nand 에서 배드블럭을 스킵하여 데이타를 읽는다.
 
-extern  int   mtdnand_seek ( mtdnand_t *mtd, int offset, int origin );        /// mtd-nand �� ������ ��ġ�� �̵��Ѵ�
-extern  int   mtdnand_erase( mtdnand_t *mtd );                                /// mtd-nand �� �Ѻ����� �����.
+extern  int   mtdnand_seek ( mtdnand_t *mtd, int offset, int origin );        /// mtd-nand 의 엑세스 위치를 이동한다
+extern  int   mtdnand_erase( mtdnand_t *mtd );                                /// mtd-nand 의 한블럭을 지운다.
 
 /// @}
 
diff --git a/app/app-prime-modbus/include/common/open_map.h b/app/app-prime-modbus/include/common/open_map.h
index 547b87b..a8297b2 100644
--- a/app/app-prime-modbus/include/common/open_map.h
+++ b/app/app-prime-modbus/include/common/open_map.h
@@ -1,8 +1,8 @@
 /**    
     @file     open_map.c
     @date     2014/01/20
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    * mmap ��ƿ��Ƽ�̴�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    * mmap 유틸리티이다.
               Ver 0.2.0
               
     @modify   
diff --git a/app/app-prime-modbus/include/common/sharemem.h b/app/app-prime-modbus/include/common/sharemem.h
index c982d13..bb0dbbc 100644
--- a/app/app-prime-modbus/include/common/sharemem.h
+++ b/app/app-prime-modbus/include/common/sharemem.h
@@ -1,8 +1,8 @@
 /**    
     @file     sharemem.c
     @date     2006
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    �����޸𸮸� �����ϰ� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    공유메모리를 생성하고 해제한다.
 
     @modify   
     @todo    
@@ -13,8 +13,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -27,11 +27,11 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� �Լ� ����Ʈ 
+/// @brief  외부에서 사용할수 있는 함수 리스트 
 
-void   share_delete( int key );                     /// �����޸𸮸� �����Ѵ�.
-void  *share_create( int key, unsigned int size );  /// �����޸𸮸� �����Ѵ�.
-void   share_free( void *data );                    /// �����޸𸮸� �����Ѵ�.
+void   share_delete( int key );                     /// 공유메모리를 삭제한다.
+void  *share_create( int key, unsigned int size );  /// 공유메모리를 생성한다.
+void   share_free( void *data );                    /// 공유메모리를 해제한다.
 
 
 /// @}
diff --git a/app/app-prime-modbus/include/common/strparsing.h b/app/app-prime-modbus/include/common/strparsing.h
index 40eff2a..730ea2c 100644
--- a/app/app-prime-modbus/include/common/strparsing.h
+++ b/app/app-prime-modbus/include/common/strparsing.h
@@ -1,30 +1,30 @@
 /**
     @file   tstrplist.h
     @date   2009-06-01
-    @author ��漮 jwjwmx@gmail.com
-    @brief  string ���ڿ����� �����ڿ� �����ͷ� ������ ������ ����� �ۼ�
+    @author 장길석 jwjwmx@gmail.com
+    @brief  string 문자열에서 구별자와 데이터로 구성된 아이템 목록을 작성
     @todo
     @bug
     @remark
     @warning
-        - ���۱�    �������̸�����(��)
-        - �ܺΰ��� ����
+        - 저작권    에프에이리눅스(주)
+        - 외부공개 금지
 */
 //----------------------------------------------------------------------------
 
 #ifndef __STR_PARSING__
 #define __STR_PARSING__
 
-/// ���� ����
+/// 에러 없음
 #define STRPERR_NONE                    0
-/// �޸� ����
+/// 메모리 부족
 #define STRPERR_OUT_OF_MEMORY           1
-/// ����Ʈ ���� ����
+/// 리스트 생성 실패
 #define STRPERR_CREATE_LIST_FAIL        2
 
-/// ��Ʈ�� �Ľ� �������� TRUE
+/// 스트링 파싱 내에서의 TRUE
 #define STRP_TRUE                       1
-/// ��Ʈ�� �Ľ� �������� FALSE
+/// 스트링 파싱 내에서의 FALSE
 #define STRP_FALSE                      0
 
 extern int          strp_error_code;
diff --git a/app/app-prime-modbus/include/common/tgpio.h b/app/app-prime-modbus/include/common/tgpio.h
index 3801068..2c6df23 100644
--- a/app/app-prime-modbus/include/common/tgpio.h
+++ b/app/app-prime-modbus/include/common/tgpio.h
@@ -1,8 +1,8 @@
 /**    
     @file     tgpio.h
     @date     2010/1/4
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    gpio �� ����̹����� mmap�� �̿��Ͽ� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    gpio 를 드라이버없이 mmap를 이용하여 제어한다.
               Ver 0.6.0
              
               
@@ -96,7 +96,7 @@
 #define  MCU_IXP4XX_MMAP_GPIO_SIZE	   0x10
 
 
-/// PXA ���� �������� 
+/// PXA 관련 레지스터 
 #define  PXA_GPIO_bit(x)         (1 << ((x) & 0x1f))
 #define  PXA_REG_OFFSET(x)       ( ((x) < 96) ? ((x)/32)*4 : 0x100  )
 
@@ -153,7 +153,7 @@
 #define  GFER3     0x13C     // GPIO Falling-Edge Detect Register GPIO<127:96>
 #define  GEDR3     0x148     // GPIO Edge Detect Status Register GPIO<127:96> 
 
-/// IXP ���� �������� 
+/// IXP 관련 레지스터 
 #define IXP4XX_GPIO_GPOUTR		*(volatile unsigned long *)( (int)(mcu_gpio.mmap_base) + IXP4XX_GPIO_GPOUTR_OFFSET )
 #define IXP4XX_GPIO_GPOER       *(volatile unsigned long *)( (int)(mcu_gpio.mmap_base) + IXP4XX_GPIO_GPOER_OFFSET  )
 #define IXP4XX_GPIO_GPINR       *(volatile unsigned long *)( (int)(mcu_gpio.mmap_base) + IXP4XX_GPIO_GPINR_OFFSET  )
@@ -168,7 +168,7 @@
 
 //======================================================================================================================
 
-/// tgpio_dir_input() �Լ� ����  pull_up �ɼ�
+/// tgpio_dir_input() 함수 사용시  pull_up 옵션
 typedef enum {	
 	GPIO_PULL_NONE = 0,
 	GPIO_PULL_UP,
@@ -176,12 +176,12 @@ typedef enum {
 } gpio_pulled_t;
 
 
-/// GPIO �׷��� GRP0, GRP1 ������ ������  ��ȣ�ν� �����Ѵ�.
+/// GPIO 그룹이 GRP0, GRP1 등으로 나뉠때  번호로써 구분한다.
 #define GP_NR_GRP		1000
 
 #include <famap.h>
 
-/// gpio ���� ���ΰ��� ����ü
+/// gpio 관련 내부관리 구조체
 typedef struct {
 
 	int   mcu_nr;
@@ -190,7 +190,7 @@ typedef struct {
 	unsigned long  phys_base;
 	unsigned long  phys_size;
 
-	mmap_alloc_t   map_info;		// 0.7.0 ���� �߰�
+	mmap_alloc_t   map_info;		// 0.7.0 부터 추가
 	unsigned long  mmap_base;
 	
 	void  (*close     )( void );
@@ -206,7 +206,7 @@ typedef struct {
 
 } mcu_gpio_fops_t;
 
-/// gpio ���� iMX �������� ����ü
+/// gpio 관련 iMX 레지스터 구조체
 typedef struct 
 {
 	unsigned long  phys;
@@ -216,7 +216,7 @@ typedef struct
 } imx6_gpio_register_t;
 
 
-/// gpio ���� AM3xxx �������� ����ü
+/// gpio 관련 AM3xxx 레지스터 구조체
 typedef struct {
 
 	unsigned long  phys;
@@ -226,7 +226,7 @@ typedef struct {
 
 } am3x_gpio_register_t;
 
-/// gpio ���� s3c �������� ����ü
+/// gpio 관련 s3c 레지스터 구조체
 typedef struct {
 
 	int            gpcnt;
@@ -238,7 +238,7 @@ typedef struct {
 } s3c_gpio_register_t;
 
 
-/// gpio ���� pxa ���� ����ü
+/// gpio 관련 pxa 정보 구조체
 typedef struct {
 
 	int            gpcnt;
@@ -246,7 +246,7 @@ typedef struct {
 } pxa_gpio_info_t;
 
 
-/// gpio ��ȣ ����ü
+/// gpio 번호 구조체
 typedef struct {
 
 	char            grp;
@@ -262,17 +262,17 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief   tgpio.h ���� �����ϴ� �Լ� ����Ʈ 
+/// @brief   tgpio.h 에서 제공하는 함수 리스트 
 
-extern int   tgpio_open      ( int mcu ); /// mcu �� ������ �� mmap �޸𸮸� �����Ѵ�.
-extern void  tgpio_close     ( void    ); /// gpio ������ �����Ѵ�.
-extern void  tgpio_dir_input ( char grp, int gp_nr, gpio_pulled_t pull_up ); /// gpio �� �Է����� �����Ѵ�.
-extern void  tgpio_dir_output( char grp, int gp_nr, int gp_val  ); /// gpio �� ������� �����Ѵ�.
-extern int   tgpio_input     ( char grp, int gp_nr              ); /// gpio �� �Է°��� �д´�.
-extern void  tgpio_output    ( char grp, int gp_nr, int gp_val  ); /// gpio �� ���� ����
+extern int   tgpio_open      ( int mcu ); /// mcu 를 선택한 후 mmap 메모리를 맵핑한다.
+extern void  tgpio_close     ( void    ); /// gpio 맵핑을 해제한다.
+extern void  tgpio_dir_input ( char grp, int gp_nr, gpio_pulled_t pull_up ); /// gpio 를 입력으로 설정한다.
+extern void  tgpio_dir_output( char grp, int gp_nr, int gp_val  ); /// gpio 를 출력으로 설정한다.
+extern int   tgpio_input     ( char grp, int gp_nr              ); /// gpio 의 입력값을 읽는다.
+extern void  tgpio_output    ( char grp, int gp_nr, int gp_val  ); /// gpio 에 값을 쓴다
 
-extern unsigned long tgpio_get_input_port ( char grp, int gp_nr ); /// gpio �� �Է� ��Ʈ �����͸� ��´�.
-extern unsigned long tgpio_get_output_port( char grp, int gp_nr ); /// gpio �� ��� ��Ʈ �����͸� ��´�.
+extern unsigned long tgpio_get_input_port ( char grp, int gp_nr ); /// gpio 의 입력 포트 포인터를 얻는다.
+extern unsigned long tgpio_get_output_port( char grp, int gp_nr ); /// gpio 의 출력 포트 포인터를 얻는다.
 
 /// @}
 
diff --git a/app/app-prime-modbus/include/common/tgpio_imx6q.h b/app/app-prime-modbus/include/common/tgpio_imx6q.h
index c69ab40..a03d646 100644
--- a/app/app-prime-modbus/include/common/tgpio_imx6q.h
+++ b/app/app-prime-modbus/include/common/tgpio_imx6q.h
@@ -1,8 +1,8 @@
 /**    
     @file     tgpio_imx6.c
     @date     2013/7/22
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    gpio �� ����̹����� mmap�� �̿��Ͽ� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    gpio 를 드라이버없이 mmap를 이용하여 제어한다.
               Ver 0.7.0
              
               
@@ -92,7 +92,7 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief   tgpio_imx6q.h ���� �����ϴ� �Լ� ����Ʈ 
+/// @brief   tgpio_imx6q.h 에서 제공하는 함수 리스트 
 extern void  imx6_gpio_open( int  mcu_nr );
 
 /// @}
diff --git a/app/app-prime-modbus/include/common/tinifile.h b/app/app-prime-modbus/include/common/tinifile.h
index 6114410..f7642e1 100644
--- a/app/app-prime-modbus/include/common/tinifile.h
+++ b/app/app-prime-modbus/include/common/tinifile.h
@@ -1,51 +1,51 @@
 /**
     @file   tinifile.h
     @date   2009-04-09
-    @author ��漮 jwjwmx@gmail.com
-    @brief  Delphi���� �����ϴ� TIniFile�� �����Ѵ�.
+    @author 장길석 jwjwmx@gmail.com
+    @brief  Delphi에서 제공하는 TIniFile을 생성한다.
     @todo
     @bug
     @remark
     @warning
-        - ���۱�    �������̸�����(��)
-        - �ܺΰ��� ����
+        - 저작권    에프에이리눅스(주)
+        - 외부공개 금지
 */
 #ifndef __TINI_FILE__
 #define __TINI_FILE__
 
-/// ���� ����
+/// 에러 없음
 #define INIERR_NONE                 0
-/// �޸� ����
+/// 메모리 부족
 #define INIERR_OUT_OF_MEMORY        1
-/// ���� �̸� ���� ����
+/// 파일 이름 지정 오류
 #define INIERR_FILENAME_FAIL        2
-/// ������ �ڷᰡ ����
+/// 지정된 자료가 없음
 #define INIERR_NO_DATA              3
-/// IniFile�� ����
+/// IniFile이 없음
 #define INIERR_NO_FILE              4
-/// IniFile ���� ����
+/// IniFile 열기 실패
 #define INIERR_ACCESS_FAIL          5
-/// ���� ����Ʈ ���� ����
+/// 섹션 리스트 생성 실패
 #define INIERR_CREATE_SECTION_FAIL  6
-/// ������ ������ ���� �޸� Ȯ���� ����
+/// 구별자 정보를 위한 메모리 확보를 실패
 #define INIERR_CREATE_IDENTIFY_FAIL 7
-/// �������� ���ڿ� ������ �����ϱ� ���� �޸� Ȯ���� ����
+/// 구별자의 문자열 정보를 저장하기 위한 메모리 확보에 실패
 #define INIERR_READ_IDENTIFY_FAIL   8
-/// NULL ��ü
+/// NULL 객체
 #define INIERR_NULL_POINTER         9
 
-/// INI ���� ����ϴ� TRUE
+/// INI 에서 사용하는 TRUE
 #define INI_TRUE                    1
-/// INI ���� ����ϴ� FALSE
+/// INI 에서 사용하는 FALSE
 #define INI_FALSE                   0
 
-/// ini ������ ó���ϴ� ��ü�� ���� ����ü
+/// ini 파일을 처리하는 객체를 위한 구조체
 typedef struct
-{   /// IniFile ���� ���� �����̸�
+{   /// IniFile 정보 저장 파일이름
     char       *filename;
-    /// INI ������ ����Ǿ������� ����
+    /// INI 정보가 변경되었는지의 여부
     int         is_changed;
-    /// ��� ������ ���ڿ�
+    /// 모든 섹션의 문자열
     tstrlist   *lst_sections;
 } inifile_t;
 
diff --git a/app/app-prime-modbus/include/common/tlist.h b/app/app-prime-modbus/include/common/tlist.h
index aa8d27c..fa78adb 100644
--- a/app/app-prime-modbus/include/common/tlist.h
+++ b/app/app-prime-modbus/include/common/tlist.h
@@ -1,8 +1,8 @@
 /**    
     @file     tlist.h
     @date     1997/10/7
-    @author   ����â frog@falinux.com  FALinux.Co.,Ltd.
-    @brief    Delphi ������ ����Ʈ ��ü�̴�.
+    @author   유영창 frog@falinux.com  FALinux.Co.,Ltd.
+    @brief    Delphi 형식의 리스트 객체이다.
     
     @todo    
     @bug     
@@ -10,8 +10,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -22,12 +22,12 @@
 
 #define MAXLISTSIZE 0x7FFFFFF   
 
-/// ��ü�� ������ ����ü
+/// 객체를 관리할 구조체
 typedef struct 
 {
-   void  **flist;     // �ּ��� �迭�� �ִ°� 
-   int     fcount;    // �������� ��
-   int     fcapacity; // �޸� �Ҵ� ��
+   void  **flist;     // 주소의 배열이 있는곳 
+   int     fcount;    // 아이템의 수
+   int     fcapacity; // 메모리 할당 수
 } tlist;
 
 #ifdef __cplusplus 
@@ -35,37 +35,37 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �����Լ�����Ʈ
-void   tlist_error        ( tlist *that );                                  /// �����Լ�
-void   tlist_error_index  ( tlist *that, int index );                       /// ��� ��������
-void   tlist_grow         ( tlist *that );                                  /// �������� �� �޸𸮸� ������Ų��.
-void   tlist_setcapacity  ( tlist *that, int newcapacity );                 /// ������ �� �ִ� ������ Ǯ�� �뷮�� �����ϰ� �޸𸮸� �� �Ҵ��Ѵ�.
-void   tlist_setcount     ( tlist *that, int newcount );                    /// ������ �� �ִ� �������� ������ �����ϸ� �������� ������ ������ ������ �����Ѵ�.
-tlist *tlist_expand       ( tlist *that );                                  /// ������ Ǯ�� �뷮�� Ȯ���Ѵ�.
-int    tlist_getcapacity  ( tlist *that );                                  /// ������Ǯ�� ũ�⸦ ��´�.
+/// @brief  내부함수리스트
+void   tlist_error        ( tlist *that );                                  /// 에러함수
+void   tlist_error_index  ( tlist *that, int index );                       /// 인덱스 범위에러
+void   tlist_grow         ( tlist *that );                                  /// 아이템이 들어갈 메모리를 증가시킨다.
+void   tlist_setcapacity  ( tlist *that, int newcapacity );                 /// 관리할 수 있는 아이템 풀의 용량을 설정하고 메모리를 재 할당한다.
+void   tlist_setcount     ( tlist *that, int newcount );                    /// 관리할 수 있는 아이템의 개수를 설정하며 아이템의 개수를 설정된 값으로 변경한다.
+tlist *tlist_expand       ( tlist *that );                                  /// 아이템 풀의 용량을 확장한다.
+int    tlist_getcapacity  ( tlist *that );                                  /// 아이템풀의 크기를 얻는다.
 /// @}
 
 
 /// @{
-/// @brief  ����ڰ� ����Ҽ� �ִ� �Լ� ����Ʈ 
-extern tlist* tlist_create     ( void );                                    /// tlist ��ü�� �����Ѵ�.
-extern void   tlist_free       ( tlist *that );                             /// tlist ��ü�� �Ҹ��Ų��.
+/// @brief  사용자가 사용할수 있는 함수 리스트 
+extern tlist* tlist_create     ( void );                                    /// tlist 객체를 생성한다.
+extern void   tlist_free       ( tlist *that );                             /// tlist 객체를 소멸시킨다.
                                                                             
-extern int    tlist_getcount   ( tlist *that );                             /// �������� ������ ��´�.
-extern void*  tlist_get        ( tlist *that, int index );                  /// �ε����� �ش��ϴ� ������ �����͸� �����ش�.
-extern void   tlist_put        ( tlist *that, int index, void *item );      /// Ư���������� �����͸� �����Ѵ�.
-extern int    tlist_add        ( tlist *that, void *item );                 /// �������� �߰��Ѵ�.
-extern void   tlist_clear      ( tlist *that );                             /// ��� �������� �����Ѵ�.
-extern void   tlist_delete     ( tlist *that, int index );                  /// �ϳ��� �������� �����Ѵ�.
-extern void   tlist_exchange   ( tlist *that, int index1, int index2 );     /// 2���� ������ ��ġ�� ��ȯ�Ѵ�.
-extern void  *tlist_first      ( tlist *that );                             /// ù��° ������ �����͸� �����ش�.
-extern int    tlist_indexof    ( tlist *that, void *item );                 /// ������ �����Ͱ� ������ �������� �ε����� ���Ѵ�.
-extern void   tlist_insert     ( tlist *that, int index, void *item );      /// �������� Ư�� ��ġ�� �߰��Ѵ�.
-extern void  *tlist_last       ( tlist *that );                             /// ������ ������ �����͸� ���Ѵ�.
-extern void   tlist_move       ( tlist *that, int curindex, int newindex ); /// Ư�� �������� ��ġ(�ε���)�� �����Ѵ�.
-extern int    tlist_remove     ( tlist *that, void *item );                 /// ���ڷ� ������ ������ ������ �����͸� ã�� �����Ѵ�.
-extern void   tlist_pack       ( tlist *that );                             /// �޸� ������ ���� ������� �ʴ� �޸𸮸� ��ȯ�Ѵ�.
-extern void   tlist_sort       ( tlist *that,int (*tlistsortcompare)(const void *, const void *) ); /// �������� ����� ���Լ��� ���� �����Ѵ� 
+extern int    tlist_getcount   ( tlist *that );                             /// 아이템의 개수를 얻는다.
+extern void*  tlist_get        ( tlist *that, int index );                  /// 인덱스에 해당하는 아이템 포인터를 돌려준다.
+extern void   tlist_put        ( tlist *that, int index, void *item );      /// 특정아이템의 포인터를 변경한다.
+extern int    tlist_add        ( tlist *that, void *item );                 /// 아이템을 추가한다.
+extern void   tlist_clear      ( tlist *that );                             /// 모든 아이템을 제거한다.
+extern void   tlist_delete     ( tlist *that, int index );                  /// 하나의 아이템을 제거한다.
+extern void   tlist_exchange   ( tlist *that, int index1, int index2 );     /// 2개의 아이템 위치를 교환한다.
+extern void  *tlist_first      ( tlist *that );                             /// 첫번째 아이템 포인터를 돌려준다.
+extern int    tlist_indexof    ( tlist *that, void *item );                 /// 아이템 포인터가 동일한 포인터의 인덱스를 구한다.
+extern void   tlist_insert     ( tlist *that, int index, void *item );      /// 아이템을 특정 위치에 추가한다.
+extern void  *tlist_last       ( tlist *that );                             /// 마지막 아이템 포인터를 구한다.
+extern void   tlist_move       ( tlist *that, int curindex, int newindex ); /// 특정 아이템의 위치(인덱스)를 변경한다.
+extern int    tlist_remove     ( tlist *that, void *item );                 /// 인자로 전해준 동일한 아이템 포인터를 찾아 삭제한다.
+extern void   tlist_pack       ( tlist *that );                             /// 메모리 관리를 위해 사용하지 않는 메모리를 반환한다.
+extern void   tlist_sort       ( tlist *that,int (*tlistsortcompare)(const void *, const void *) ); /// 아이템을 사용자 비교함수를 통해 정렬한다 
 /// @}
 
 #ifdef __cplusplus 
diff --git a/app/app-prime-modbus/include/common/tmmap.h b/app/app-prime-modbus/include/common/tmmap.h
index 254ed9a..ccdcc4c 100644
--- a/app/app-prime-modbus/include/common/tmmap.h
+++ b/app/app-prime-modbus/include/common/tmmap.h
@@ -1,8 +1,8 @@
 /**    
     @file     tmmap.h
     @date     2009/07/06
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    mmap �� �ٷ�� �Լ��� ��üȭ �Ͽ���.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    mmap 를 다루는 함수를 객체화 하였다.
               
     @todo    
     @bug     
@@ -10,8 +10,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -30,9 +30,9 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  tmmap.c ���� �����ϴ� �Լ� ����Ʈ 
-extern void  *tmmap_alloc( unsigned long phys_base, unsigned long size );       /// mmap �����Լ�
-extern void   tmmap_free( void *mem );                                          /// mmap  �����͸� �����Ѵ�.
+/// @brief  tmmap.c 에서 제공하는 함수 리스트 
+extern void  *tmmap_alloc( unsigned long phys_base, unsigned long size );       /// mmap 생성함수
+extern void   tmmap_free( void *mem );                                          /// mmap  포인터를 해제한다.
 
 /// @}
 
diff --git a/app/app-prime-modbus/include/common/tstrlist.h b/app/app-prime-modbus/include/common/tstrlist.h
index 86efbd7..774efdb 100644
--- a/app/app-prime-modbus/include/common/tstrlist.h
+++ b/app/app-prime-modbus/include/common/tstrlist.h
@@ -1,8 +1,8 @@
 /**    
     @file     tstrlist.c
     @date     2009/1/14
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    Delphi ������ ��Ʈ������Ʈ ��ü�̴�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    Delphi 형식의 스트링리스트 객체이다.
     
     @modify   
     @todo    
@@ -11,8 +11,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -23,20 +23,20 @@
 #define  MIN_STR_LEN        64
 #define  COMMA_TEXT_DELIM   " ,\f\n\r\t\v"
 
-/// ��ü�� ������ ����ü
+/// 객체를 관리할 구조체
 typedef struct 
 {
-   tlist *ftlst;      // tlist ��ü ������
+   tlist *ftlst;      // tlist 객체 포인터
 
 } tstrlist;
 
-/// ���ڿ� ������ ����ü
+/// 문자열 아이템 구조체
 typedef struct 
 {
-   void         *fdata;     // ����� ������
-   int           ftag;      // ������ �������� ���� ����
-   int           fstrcap;   // ���ڿ� �޸� �Ҵ� ����
-   char         *fstr;      // ���ڿ� ������
+   void         *fdata;     // 사용자 포인터
+   int           ftag;      // 임의의 정수형값 저장 변수
+   int           fstrcap;   // 문자열 메모리 할당 개수
+   char         *fstr;      // 문자열 포인터
 } tstritem;
 
 
@@ -45,32 +45,32 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ 
-extern tstrlist* tstrlist_create  ( void );                                       /// tstrlist ��ü�� �����Ѵ�.
-extern void   tstrlist_free       ( tstrlist *that );                             /// tstrlist ��ü�� �Ҹ��Ų��.
-extern void   tstrlist_clear      ( tstrlist *that );                             /// ��� �������� �����Ѵ�.
-extern int    tstrlist_add        ( tstrlist *that, const char *str );            /// ���ڿ� �������� �߰��Ѵ�.
-extern int    tstrlist_add_object ( tstrlist *that, const char *str, void *obj ); /// ���ڿ��� ����� �����͸� �߰��Ѵ�.
-extern void   tstrlist_delete     ( tstrlist *that, int index );                  /// �ϳ��� �������� �����Ѵ�.
-extern char  *tstrlist_get_string ( tstrlist *that, int index );                  /// �ε����� �ش��ϴ� ���ڿ� �����͸� ��ȯ�Ѵ�.
-extern void  *tstrlist_get_object ( tstrlist *that, int index );                  /// �ε����� �ش��ϴ� ����� �����͸� ��ȯ�Ѵ�.
-extern int    tstrlist_get_tag    ( tstrlist *that, int index );                  /// �ε����� �ش��ϴ� ������ �±׺����� ��ȯ�Ѵ�.
-extern void   tstrlist_exchange   ( tstrlist *that, int index1, int index2 );     /// 2���� ������ ��ġ�� ��ȯ�Ѵ�.
-extern int    tstrlist_indexof    ( tstrlist *that, const char *str );            /// ���ڿ��� ������ �ε����� ���Ѵ�.
-extern void   tstrlist_insert     ( tstrlist *that, int index, char *str );       /// �������� Ư�� ��ġ�� �߰��Ѵ�.
-extern char  *tstrlist_first      ( tstrlist *that );                             /// ù��° ���ڿ� �����͸� �����ش�.
-extern char  *tstrlist_last       ( tstrlist *that );                             /// ������ ���ڿ� �����͸� ���Ѵ�.
-extern void   tstrlist_move       ( tstrlist *that, int curindex, int newindex ); /// Ư�� �������� ��ġ(�ε���)�� �����Ѵ�.
-extern void   tstrlist_put_string ( tstrlist *that, int index, char *str );       /// Ư���������� ���ڿ��� �����Ѵ�.
-extern void   tstrlist_put_object ( tstrlist *that, int index, void *obj );       /// Ư���������� ����� �޸� ������ �����Ѵ�.
-extern void   tstrlist_put_tag    ( tstrlist *that, int index, int tag );         /// Ư���������� �±׺����� �����Ѵ�.
-extern int    tstrlist_remove     ( tstrlist *that, char *str );                  /// ���ڷ� ������ ������ ���ڿ��� ã�� �����Ѵ�.
-extern void   tstrlist_pack       ( tstrlist *that );                             /// �޸� ������ ���� ������� �ʴ� �޸𸮸� ��ȯ�Ѵ�.
-extern int    tstrlist_getcount   ( tstrlist *that );                             /// �������� ������ ��´�.
-extern void   tstrlist_sort       ( tstrlist *that );                             /// �������� ����� ���Լ��� ���� �����Ѵ�.
-extern int    tstrlist_commatext  ( tstrlist *that, char *str );                  /// ���ڷ� ������ ���ڿ��� �и��Ͽ� ���������� �߰��Ѵ�.
-extern int    tstrlist_load_from_file ( tstrlist *that, char *fname );            /// �ؽ�Ʈ���Ͽ��� ���κ��� �����ۿ� ����Ѵ�.
-extern int    tstrlist_save_to_file ( tstrlist *that, char *fname );              /// �����۵��� ���κ��� ���Ϸ� �����Ѵ�.
+/// @brief  외부에서 사용할수 있는 객체함수 리스트 
+extern tstrlist* tstrlist_create  ( void );                                       /// tstrlist 객체를 생성한다.
+extern void   tstrlist_free       ( tstrlist *that );                             /// tstrlist 객체를 소멸시킨다.
+extern void   tstrlist_clear      ( tstrlist *that );                             /// 모든 아이템을 제거한다.
+extern int    tstrlist_add        ( tstrlist *that, const char *str );            /// 문자열 아이템을 추가한다.
+extern int    tstrlist_add_object ( tstrlist *that, const char *str, void *obj ); /// 문자열과 사용자 포인터를 추가한다.
+extern void   tstrlist_delete     ( tstrlist *that, int index );                  /// 하나의 아이템을 제거한다.
+extern char  *tstrlist_get_string ( tstrlist *that, int index );                  /// 인덱스에 해당하는 문자열 포인터를 반환한다.
+extern void  *tstrlist_get_object ( tstrlist *that, int index );                  /// 인덱스에 해당하는 사용자 포인터를 반환한다.
+extern int    tstrlist_get_tag    ( tstrlist *that, int index );                  /// 인덱스에 해당하는 정수형 태그변수를 반환한다.
+extern void   tstrlist_exchange   ( tstrlist *that, int index1, int index2 );     /// 2개의 아이템 위치를 교환한다.
+extern int    tstrlist_indexof    ( tstrlist *that, const char *str );            /// 문자열이 동일한 인덱스를 구한다.
+extern void   tstrlist_insert     ( tstrlist *that, int index, char *str );       /// 아이템을 특정 위치에 추가한다.
+extern char  *tstrlist_first      ( tstrlist *that );                             /// 첫번째 문자열 포인터를 돌려준다.
+extern char  *tstrlist_last       ( tstrlist *that );                             /// 마지막 문자열 포인터를 구한다.
+extern void   tstrlist_move       ( tstrlist *that, int curindex, int newindex ); /// 특정 아이템의 위치(인덱스)를 변경한다.
+extern void   tstrlist_put_string ( tstrlist *that, int index, char *str );       /// 특정아이템의 문자열을 변경한다.
+extern void   tstrlist_put_object ( tstrlist *that, int index, void *obj );       /// 특정아이템의 사용자 메모리 변수를 변경한다.
+extern void   tstrlist_put_tag    ( tstrlist *that, int index, int tag );         /// 특정아이템의 태그변수를 변경한다.
+extern int    tstrlist_remove     ( tstrlist *that, char *str );                  /// 인자로 전해준 동일한 문자열을 찾아 삭제한다.
+extern void   tstrlist_pack       ( tstrlist *that );                             /// 메모리 관리를 위해 사용하지 않는 메모리를 반환한다.
+extern int    tstrlist_getcount   ( tstrlist *that );                             /// 아이템의 개수를 얻는다.
+extern void   tstrlist_sort       ( tstrlist *that );                             /// 아이템을 사용자 비교함수를 통해 정렬한다.
+extern int    tstrlist_commatext  ( tstrlist *that, char *str );                  /// 인자로 전해준 문자열을 분리하여 아이템으로 추가한다.
+extern int    tstrlist_load_from_file ( tstrlist *that, char *fname );            /// 텍스트파일에서 라인별로 아이템에 등록한다.
+extern int    tstrlist_save_to_file ( tstrlist *that, char *fname );              /// 아이템들을 라인별로 파일로 저장한다.
 /// @}
 
 #ifdef __cplusplus 
diff --git a/app/app-prime-modbus/include/common/uservar.h b/app/app-prime-modbus/include/common/uservar.h
index 7ac557a..5d454e9 100644
--- a/app/app-prime-modbus/include/common/uservar.h
+++ b/app/app-prime-modbus/include/common/uservar.h
@@ -1,8 +1,8 @@
 /**    
     @file     uservar.h
     @date     2009/4/9
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    ����ڰ� �����ϴ� ������ �����ϴ� ����ü��
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    사용자가 편집하는 변수를 관리하는 구조체들
               
     
     @modify   
@@ -18,22 +18,22 @@
 #define _USERVAR_HEADER_
 
 
-/// ������ ���� ���� ����ü
+/// 정수형 변수 편집 구조체
 typedef struct 
 {
-	int cur_val;       // ����Ǵ� ��
-	int *ptr_org_val;  // ������ ��
+	int cur_val;       // 변경되는 값
+	int *ptr_org_val;  // 원래의 값
 	
-	int max;           // �ִ밪
-	int min;           // �ּҰ�
-	int step;          // ��ȭġ
-	int allow_loop;    // ��ȯ��뿩��
+	int max;           // 최대값
+	int min;           // 최소값
+	int step;          // 변화치
+	int allow_loop;    // 순환허용여부
 	
 } user_var_integer_t;
 
 
 /// @{
-/// @brief  uservar.c �� �����ϴ� �ʱ�ȭ ��ũ��
+/// @brief  uservar.c 가 제공하는 초기화 매크로
 //----------------------------------------------------------------------------
 #define DECRARE_UVAR_INT( _name_, _cur_val_, _ptr_org_val_, _min_, _max_, _step_, _allow_loop_ ) \
 		static user_var_integer_t _name = { \
@@ -48,11 +48,11 @@ typedef struct
 /// @}
 
 /// @{
-/// @brief  uservar.c �� �����ϴ� �Լ�
+/// @brief  uservar.c 가 제공하는 함수
 //----------------------------------------------------------------------------
-extern void  uvar_int_ready( user_var_integer_t *uv );           /// ������ ���� ����ü�� ����� �غ� �Ѵ�.
-extern void  uvar_int_apply( user_var_integer_t *uv );           /// ������ ���� ����ü���� ������ ���� �����Ѵ�.
-extern void  uvar_int_add( user_var_integer_t *uv, int offset ); /// ������ ���� ����ü���� ���� �����Ѵ�.
+extern void  uvar_int_ready( user_var_integer_t *uv );           /// 정수형 편집 구조체를 사용할 준비를 한다.
+extern void  uvar_int_apply( user_var_integer_t *uv );           /// 정수형 편집 구조체에서 수정된 값을 적용한다.
+extern void  uvar_int_add( user_var_integer_t *uv, int offset ); /// 정수형 편집 구조체에서 값을 변경한다.
 
 
 /// @}
diff --git a/app/app-prime-modbus/include/common/util.h b/app/app-prime-modbus/include/common/util.h
index 159d292..1b3c8fb 100644
--- a/app/app-prime-modbus/include/common/util.h
+++ b/app/app-prime-modbus/include/common/util.h
@@ -1,8 +1,8 @@
 /**    
     @file     util.h
     @date     2009/1/15 ~
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    �ܼ��� ��ƿ��Ƽ �Լ����� ��Ƴ��Ҵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    단순한 유틸리티 함수들을 모아놓았다.
     
     @modify   
     @todo    
@@ -26,7 +26,7 @@
 typedef long long msec_t;
 
 /// @{
-/// @brief  util.h ���� �����ϴ� ��ũ�� ����Ʈ
+/// @brief  util.h 에서 제공하는 매크로 리스트
 #define	   ALIGN_SIZE( v, as )		(((v+(as-1))/as)*as)
 
 /// @}
@@ -36,48 +36,48 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  util.h ���� �����ϴ� �Լ� ����Ʈ
+/// @brief  util.h 에서 제공하는 함수 리스트
 
 #ifdef EMBEDDED_LINUX
 
-// ���� ����
-extern int    find_dev_major( char *driver_name );               /// ����̹� �̸����� ����̹��� ��������ȣ�� ��´�.
-extern int	  dev_open( char *fname, unsigned char major, unsigned char minor ); /// ����̽� ����̹� ��������� ����.
-extern int    exist_file( char *fname );                         /// �����̳� ���丮�� �����ϴ��� Ȯ���Ѵ�.
-extern int    get_file_size( char *fname );                      /// ������ ũ�⸦ ��´�
-extern int    tftp_download_file( char *ip, char *fname );       /// tftp shell ��ƿ��Ƽ�� ����Ͽ� ������ �ٿ�ε�޴´�.
-extern int    tftp_upload_file  ( char *ip, char *fname );       /// tftp shell ��ƿ��Ƽ�� ����Ͽ� ������ ���ε��Ѵ�
-
-// �ð� ����
-extern unsigned long get_cur_usec(void);                         /// ������ usec �ð�ƽ�� ���´�.
-extern void	         format_date_text( char *fmt, char *text );  /// ��¥�� �ð��� ���ڿ� ���·� �����ش�.
-extern int           set_sys_time( int yyyy, int MM, int dd, int hh, int mm, int ss ); /// �ý��� �ð��� �����Ѵ�.
-
-// ���ڿ� ����
-extern void   trimstr( char *line );                             /// ���ڿ����� �յ��� Ư�����ڿ� ���鹮�ڸ� �����Ѵ�.
-extern int    item_value_parse( const char *line, char delim, char *item, char *val ); /// ���ڿ����� Ư�� ���ڸ� �и��ڷ� ����Ͽ� �и��Ѵ�
-extern void   bin_to_hex( char *hex, char *bin, int bcnt );      /// ���̳ʸ� ����Ÿ�� ���� ���ڿ��� ��ȯ�Ѵ�.
-
-// ��Ÿ
-extern int    log_printf( const char *log_file, const char *fmt, ...  );        /// �α������� ���Ͽ� �� �ִ´�.
-extern int	  is_rect_region( int x, int y, int sx, int sy, int wdt, int hgt ); /// ��ǥ�� �簢�����ȿ� �ִ��� �˻�
-extern int    get_myip( char *ip );                                             /// �ڱ� IP�� ��´�.
-extern int    ping( char *host, int count );                     /// ping ������ �����Ͽ� ������ ȸ���� �����ش�.
-extern int	  get_irq_count( int irq );                          /// ���ͷ�Ʈ �߻� Ƚ���� �����ش�
-extern int	  get_mcu( void );                                   /// mcu ��ȣ�� ã�´�.
-
-extern char   getchar_without_enter( void );					 /// Ű���� �Է��� ���;��� �ѹ��ھ� ��� �޴´�.
-extern void   print_buffer( char *buf, int count );              /// ���۸� ����� �����ش�.
-extern unsigned int strtosize( char *str );                      /// ���ڿ��� ���ڷ� ��ȯ�Ѵ�. ���ڵ��� �������� �Ǵ��Ѵ�.
-extern unsigned short checksum(void* buf, int len);				 /// ������ ���� 16��Ʈ�� ���Ͽ� �����ش�.
-extern void   msleep( int msec );								 /// msec ������ ��ٸ���.
+// 파일 관련
+extern int    find_dev_major( char *driver_name );               /// 드라이버 이름으로 드라이버의 메이져번호를 얻는다.
+extern int	  dev_open( char *fname, unsigned char major, unsigned char minor ); /// 디바이스 드라이버 노드파일을 연다.
+extern int    exist_file( char *fname );                         /// 파일이나 디렉토리가 존재하는지 확인한다.
+extern int    get_file_size( char *fname );                      /// 파일의 크기를 얻는다
+extern int    tftp_download_file( char *ip, char *fname );       /// tftp shell 유틸리티를 사용하여 파일을 다운로드받는다.
+extern int    tftp_upload_file  ( char *ip, char *fname );       /// tftp shell 유틸리티를 사용하여 파일을 업로드한다
+
+// 시간 관련
+extern unsigned long get_cur_usec(void);                         /// 현재의 usec 시간틱을 얻어온다.
+extern void	         format_date_text( char *fmt, char *text );  /// 날짜와 시간을 문자열 형태로 돌려준다.
+extern int           set_sys_time( int yyyy, int MM, int dd, int hh, int mm, int ss ); /// 시스템 시간을 설정한다.
+
+// 문자열 관련
+extern void   trimstr( char *line );                             /// 문자열에서 앞뒤의 특수문자와 공백문자를 제거한다.
+extern int    item_value_parse( const char *line, char delim, char *item, char *val ); /// 문자열에서 특정 문자를 분리자로 사용하여 분리한다
+extern void   bin_to_hex( char *hex, char *bin, int bcnt );      /// 바이너리 데이타를 헥사 문자열로 변환한다.
+
+// 기타
+extern int    log_printf( const char *log_file, const char *fmt, ...  );        /// 로그정보를 파일에 써 넣는다.
+extern int	  is_rect_region( int x, int y, int sx, int sy, int wdt, int hgt ); /// 좌표가 사각영역안에 있는지 검사
+extern int    get_myip( char *ip );                                             /// 자기 IP를 얻는다.
+extern int    ping( char *host, int count );                     /// ping 명령을 수행하여 성공한 회수를 돌려준다.
+extern int	  get_irq_count( int irq );                          /// 인터럽트 발생 횟수를 돌려준다
+extern int	  get_mcu( void );                                   /// mcu 번호를 찾는다.
+
+extern char   getchar_without_enter( void );					 /// 키보드 입력을 엔터없이 한문자씩 즉시 받는다.
+extern void   print_buffer( char *buf, int count );              /// 버퍼를 헥사로 보여준다.
+extern unsigned int strtosize( char *str );                      /// 문자열을 숫자로 변환한다. 숫자뒤의 단위까지 판단한다.
+extern unsigned short checksum(void* buf, int len);				 /// 버퍼의 값을 16비트로 더하여 돌려준다.
+extern void   msleep( int msec );								 /// msec 단위로 기다린다.
 
 /// @}
 
 #endif
 
-extern msec_t        get_cur_msec(void);                         /// ������ msec �ð�ƽ�� ���´�.
-extern unsigned long get_cur_sec(void);                          /// ������ sec �ð�ƽ�� ���´�.
+extern msec_t        get_cur_msec(void);                         /// 현재의 msec 시간틱을 얻어온다.
+extern unsigned long get_cur_sec(void);                          /// 현재의 sec 시간틱을 얻어온다.
 
 #ifdef __cplusplus 
 }
diff --git a/app/app-prime-modbus/include/fa-types.h b/app/app-prime-modbus/include/fa-types.h
index 148c171..a2feff8 100644
--- a/app/app-prime-modbus/include/fa-types.h
+++ b/app/app-prime-modbus/include/fa-types.h
@@ -1,10 +1,10 @@
 //------------------------------------------------------------------------------
-// ȭ�ϸ�   : fa-types.h
-// ������Ʈ : 
-// ��  ��   : NISP ������ ���õ� ��ƾ ���
+// 화일명   : fa-types.h
+// 프로젝트 : 
+// 설  명   : NISP 디버깅과 관련된 루틴 헤더
 // 
-// ���۱�   : �������̸������ֽ�ȸ��
-// ��  ��   : 
+// 저작권   : 에프에이리눅스주식회사
+// 주  의   : 
 //------------------------------------------------------------------------------
 #ifndef _FA_TYPES_HEADER_
 #define _FA_TYPES_HEADER_
diff --git a/app/app-prime-modbus/include/fanet/alarm.h b/app/app-prime-modbus/include/fanet/alarm.h
index cddd189..c052975 100644
--- a/app/app-prime-modbus/include/fanet/alarm.h
+++ b/app/app-prime-modbus/include/fanet/alarm.h
@@ -1,8 +1,8 @@
 /**    
     @file     alarm.h
     @date     2009-04-09
-    @author   ����� freefrug@falinux.com
-    @brief    �˶�����̽� ����̹��� ���� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    알람디바이스 드라이버를 열고 관리한다.
 
     @modify   
     @todo    
@@ -12,8 +12,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -26,12 +26,12 @@
 #define ENDLESS_ALARM_NOTIFY         ENDLESS_ALARM_VALUE
 
 /// @{
-/// @brief  �ܺο� �����Ǵ� �Լ� ����Ʈ 
-extern poll_obj_t  *alarm_open( int count, unsigned int per_msec );   /// �˶� ����̽� ����̹��� open �Ѵ�.
-extern void         alarm_close( poll_obj_t *obj );                   /// alarm ����̹��� close �Ѵ�.
-extern void         alarm_restart( poll_obj_t *obj );                 /// �˶��� ������Ѵ�.
-extern void         alarm_stop( poll_obj_t *obj );                    /// �˶��� �����Ѵ�.
-extern void         alarm_handled( poll_obj_t *obj );                 /// �˶��� Ȯ���Ѵ�.(�˶��� �߻��ϸ� �ݵ�� ȣ���Ͽ��� �Ѵ�.)
+/// @brief  외부에 공개되는 함수 리스트 
+extern poll_obj_t  *alarm_open( int count, unsigned int per_msec );   /// 알람 디바이스 드라이버를 open 한다.
+extern void         alarm_close( poll_obj_t *obj );                   /// alarm 드라이버를 close 한다.
+extern void         alarm_restart( poll_obj_t *obj );                 /// 알람을 재시작한다.
+extern void         alarm_stop( poll_obj_t *obj );                    /// 알람을 중지한다.
+extern void         alarm_handled( poll_obj_t *obj );                 /// 알람을 확인한다.(알람이 발생하면 반드시 호출하여야 한다.)
 
 
 /// @}
diff --git a/app/app-prime-modbus/include/fanet/can.h b/app/app-prime-modbus/include/fanet/can.h
index 29574d2..b944914 100644
--- a/app/app-prime-modbus/include/fanet/can.h
+++ b/app/app-prime-modbus/include/fanet/can.h
@@ -1,8 +1,8 @@
 /**
     @file     can.h
     @date     2012-02-24
-    @author   ��漮 jks@falinux.com
-    @brief    can�� ����� ����� ����Ѵ�.
+    @author   장길석 jks@falinux.com
+    @brief    can을 사용한 통신을 담당한다.
 
     @modify
     @todo
@@ -12,8 +12,8 @@
     @warning
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -26,7 +26,7 @@ extern "C" {
 #endif
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ
+/// @brief  외부에서 사용할수 있는 객체함수 리스트
 
 
 typedef struct can_frame    can_frame_t;
diff --git a/app/app-prime-modbus/include/fanet/fa-bind-ioctl.h b/app/app-prime-modbus/include/fanet/fa-bind-ioctl.h
index 8caf836..d032134 100644
--- a/app/app-prime-modbus/include/fanet/fa-bind-ioctl.h
+++ b/app/app-prime-modbus/include/fanet/fa-bind-ioctl.h
@@ -1,9 +1,9 @@
 /*-----------------------------------------------------------------------------
-  �� �� : fa-bind-ioctl.h
-  �� �� : ���̵� ����̹��̴�.
-  �� �� : ����� freefrug@falinux.com 
-  �� ¥ : 
-  �� �� :
+  파 일 : fa-bind-ioctl.h
+  설 명 : 바이드 드라이버이다.
+  작 성 : 오재경 freefrug@falinux.com 
+  날 짜 : 
+  주 의 :
 
 -------------------------------------------------------------------------------*/
 #ifndef _FA_BIND_IOCTL_H_
@@ -34,20 +34,20 @@ typedef struct {
 
 
 typedef struct {
-                                       // ���� ������ �������� ����
-	int  port;                         // ����� �ּ�
-	int  group;                        // ����� �׷�
-	int  sr_type;                      // ���� Ÿ��
-	int  count;                        // ����Ÿ ����
+                                       // 변수 순서를 변경하지 말것
+	int  port;                         // 상대편 주소
+	int  group;                        // 상대편 그룹
+	int  sr_type;                      // 전송 타입
+	int  count;                        // 데이타 개수
 	
-	unsigned char *buf;                // ����
+	unsigned char *buf;                // 버퍼
 
 } __attribute__((packed)) ioctl_bind_msg_t;
 
-#define  SR_TYPE_NORMAL                0      // �Ϲ����� ����
-#define  SR_TYPE_EXPRESS               1      // �� �޼����߿��� ����
-#define  SR_TYPE_EMERENCY              2      // ��� �޼����� ���� ����
-#define  SR_TYPE_REQ_ACK               0x10000000      // req_ack �޼��� ����
+#define  SR_TYPE_NORMAL                0      // 일반적인 전송
+#define  SR_TYPE_EXPRESS               1      // 내 메세지중에서 먼저
+#define  SR_TYPE_EMERENCY              2      // 모든 메세지중 가장 먼저
+#define  SR_TYPE_REQ_ACK               0x10000000      // req_ack 메세지 형태
 
 #define  FABIND_BROADCAST_GROUP        (0x7fff)
 
diff --git a/app/app-prime-modbus/include/fanet/fabind.h b/app/app-prime-modbus/include/fanet/fabind.h
index 64cf228..b266c4b 100644
--- a/app/app-prime-modbus/include/fanet/fabind.h
+++ b/app/app-prime-modbus/include/fanet/fabind.h
@@ -1,8 +1,8 @@
 /**    
     @file     fabind.h
     @date     2008/10/08
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    fa-bind ����̹��� ����ϱ� ���� API �� �����Ѵ�..
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    fa-bind 드라이버를 사용하기 위한 API 를 구현한다..
               
     
     @todo     
@@ -32,17 +32,17 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  fabind ��ü �Լ� ����Ʈ 
-extern poll_obj_t  *fabind_open( int port, int group, int recv_queue_count );          /// fabind ����̹� ���� ��ü�� �ʱ�ȭ�Ѵ�.
-extern void         fabind_close( poll_obj_t *obj );                                   /// fabind ��ü�� �����Ѵ�.
-extern poll_obj_t  *fabind_get_byport( int port );                                     /// fabind ��ü�� ��Ʈ��ȣ�� ã�´�.
-extern int          fabind_write( poll_obj_t *obj, int port, char *buf, int len );     /// fabind �� ���� ����Ÿ�� �����Ѵ�.
-extern int          fabind_read( poll_obj_t *obj, char *buf, int len, int *need_ack ); /// fabind �� ���� ����Ÿ�� �д´�.
-extern int          fabind_write_and_response( poll_obj_t *obj, int port, char *tx_buf, char *rx_buf, int tx_cnt, int rx_cnt ); /// fabind �� ���� ����Ÿ�� ������ �� ������ �޴´�.
-extern int          fabind_write_group( poll_obj_t *obj, int grp_port, char *buf, int len ); ///  fabind �� ���� �׷������ ����Ÿ�� �����Ѵ�.
-extern int          fabind_get_recv_port( poll_obj_t *obj );                           /// fabind �� ���� ���� ��Ʈ��ȣ�� ��´�.
-
-extern int          fabind_write_timeout( poll_obj_t *obj, int port, char *buf, int len, int timeout_sec ); /// fabind �� ���� ����Ÿ�� �ð��� �����ϸ� �����Ѵ�.
+/// @brief  fabind 객체 함수 리스트 
+extern poll_obj_t  *fabind_open( int port, int group, int recv_queue_count );          /// fabind 드라이버 열고 객체를 초기화한다.
+extern void         fabind_close( poll_obj_t *obj );                                   /// fabind 객체를 해제한다.
+extern poll_obj_t  *fabind_get_byport( int port );                                     /// fabind 객체를 포트번호로 찾는다.
+extern int          fabind_write( poll_obj_t *obj, int port, char *buf, int len );     /// fabind 를 통해 데이타를 전송한다.
+extern int          fabind_read( poll_obj_t *obj, char *buf, int len, int *need_ack ); /// fabind 를 통해 데이타를 읽는다.
+extern int          fabind_write_and_response( poll_obj_t *obj, int port, char *tx_buf, char *rx_buf, int tx_cnt, int rx_cnt ); /// fabind 를 통해 데이타를 전송한 후 응답을 받는다.
+extern int          fabind_write_group( poll_obj_t *obj, int grp_port, char *buf, int len ); ///  fabind 를 통해 그룹단위로 데이타를 전송한다.
+extern int          fabind_get_recv_port( poll_obj_t *obj );                           /// fabind 를 통해 들어온 포트번호를 얻는다.
+
+extern int          fabind_write_timeout( poll_obj_t *obj, int port, char *buf, int len, int timeout_sec ); /// fabind 를 통해 데이타를 시간을 감시하며 전송한다.
 /// @}
 
 #ifdef __cplusplus 
diff --git a/app/app-prime-modbus/include/fanet/fcntl_lock.h b/app/app-prime-modbus/include/fanet/fcntl_lock.h
index 98a0a10..6f5f51e 100644
--- a/app/app-prime-modbus/include/fanet/fcntl_lock.h
+++ b/app/app-prime-modbus/include/fanet/fcntl_lock.h
@@ -1,8 +1,8 @@
 /**    
     @file     fcntl_lock.c
     @date     2009/9/30
-    @author   ����â frog@falinux.com  FALinux.Co.,Ltd.
-    @brief    fcntl_lock �Լ� 
+    @author   유영창 frog@falinux.com  FALinux.Co.,Ltd.
+    @brief    fcntl_lock 함수 
               Ver 0.1.0
   
     @modify   
@@ -23,11 +23,11 @@ extern "C" {
 
 
 /// @{
-/// @brief  fcntl_lock.h ���� �����ϴ� �Լ� ����Ʈ 
-extern int 	flock_create	( char *key_file  );				/// ���μ��� ���� ���� ������ �����Ѵ�. 
-extern int 	flock_free		( int key_fd  );					/// ���μ��� ���� ���� ������ �ݴ´�. 
-extern int 	flock_lock		( int key_fd  );					/// ���μ����� ��ٴ�. 
-extern int 	flock_unlock	( int key_fd  );					/// ���μ����� Ǭ��.
+/// @brief  fcntl_lock.h 에서 제공하는 함수 리스트 
+extern int 	flock_create	( char *key_file  );				/// 프로세스 록을 위한 파일을 생성한다. 
+extern int 	flock_free		( int key_fd  );					/// 프로세스 록을 위한 파일을 닫는다. 
+extern int 	flock_lock		( int key_fd  );					/// 프로세스를 잠근다. 
+extern int 	flock_unlock	( int key_fd  );					/// 프로세스를 푼다.
 
 /// @}
 
diff --git a/app/app-prime-modbus/include/fanet/ioctl-alarm.h b/app/app-prime-modbus/include/fanet/ioctl-alarm.h
index 2bd7c8f..dec5838 100644
--- a/app/app-prime-modbus/include/fanet/ioctl-alarm.h
+++ b/app/app-prime-modbus/include/fanet/ioctl-alarm.h
@@ -1,8 +1,8 @@
 /**    
     @file     ioctl-alarm.h
     @date     2009/4/09
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    �ٹ��̽�����̹����� Ÿ�̸Ӹ� ����Ͽ� �˶��� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    다바이스드라이버에서 타이머를 사용하여 알람을 구현한다.
               
     
     @todo     
@@ -25,11 +25,11 @@
 
 
 /// @{
-/// @brief  IOCTL_ALARM_SET ���� ����ü
+/// @brief  IOCTL_ALARM_SET 인자 구조체
 //------------------------------------------------------------------------------
 typedef struct {
 	
-	int          count;         // 0 ���� ������ ���������� �˶��� �߻���Ų��.
+	int          count;         // 0 보다 작으면 지속적으로 알람을 발생시킨다.
 	unsigned int per_msec;
 			
 } ioctl_alarm_set_t;
diff --git a/app/app-prime-modbus/include/fanet/ioctl-gpio-int.h b/app/app-prime-modbus/include/fanet/ioctl-gpio-int.h
index 58c8098..d645819 100644
--- a/app/app-prime-modbus/include/fanet/ioctl-gpio-int.h
+++ b/app/app-prime-modbus/include/fanet/ioctl-gpio-int.h
@@ -1,16 +1,16 @@
 /*-----------------------------------------------------------------------------
-  �� �� : gpio-int.h
-  �� �� : gpio ���ͷ�Ʈ�� Ȱ��ȭ �ϰ� ���ͷ�Ʈ �߻��� app �� �˷��ִ� ����̹�
-  �� �� : freefrug@falinux.com
-  �� ¥ : 2010-03 ~
-  �� �� :
+  파 일 : gpio-int.h
+  설 명 : gpio 인터럽트를 활성화 하고 인터럽트 발생을 app 에 알려주는 드라이버
+  작 성 : freefrug@falinux.com
+  날 짜 : 2010-03 ~
+  주 의 :
 
 -------------------------------------------------------------------------------*/
 #ifndef _GPIO_INT_H_
 #define _GPIO_INT_H_
 
 
-/* ������ -------------------------------------------------------------------*/
+/* 모듈관련 -------------------------------------------------------------------*/
 #define     GPIO_INT_DRIVER_MAJOR      202
 
 #ifdef MODULE
@@ -19,7 +19,7 @@
 #endif
 
 
-/* ioctl �Լ��� command -------------------------------------------------------*/
+/* ioctl 함수의 command -------------------------------------------------------*/
 #define		GPIO_INT_DRIVER_MAJOR_KEY         'g'
 #define		IOCTL_REGISTER_GPIO_INT           _IOW( GPIO_INT_DRIVER_MAJOR_KEY, 0 , ioctl_arg_gpio_int_info_t )	
 #define		IOCTL_UNREGISTER_GPIO_INT         _IOW( GPIO_INT_DRIVER_MAJOR_KEY, 1 , gpdesc_t )	
diff --git a/app/app-prime-modbus/include/fanet/ipc_call.h b/app/app-prime-modbus/include/fanet/ipc_call.h
index 605478e..d546755 100644
--- a/app/app-prime-modbus/include/fanet/ipc_call.h
+++ b/app/app-prime-modbus/include/fanet/ipc_call.h
@@ -1,8 +1,8 @@
 /**    
     @file     ipc_call.h
     @date     2008-06-30
-    @author   ����� freefrug@falinux.com
-    @brief    ���μ������� ���� ������ �����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    프로세스간의 명령 전달을 구현한다.
 
     @modify   
     @todo    
@@ -12,8 +12,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -28,19 +28,19 @@
 
 #define     IPC_CALL_TIMEOUT_UNLIMIT    0xffffffff    /// 
 
-/// IPC CALL ������ ����Ÿ ���Ž� ȣ��Ǵ� ����� �̺�Ʈ �Լ� ����
+/// IPC CALL 에서의 데이타 수신시 호출되는 사용자 이벤트 함수 형태
 typedef void (*ipc_call_func_t)(unsigned long src_id, unsigned long msg_type, void *buf, int len );
 
 /// @{
-/// @brief  IPC CALL���� ����ϴ� ��� ��Ŷ 
+/// @brief  IPC CALL에서 사용하는 통신 패킷 
 
 typedef struct {
 
-	unsigned long dst_id;					/// ������ ID 
-	unsigned long src_id;					/// �۽��� ID
-	unsigned long msg_type;					/// �޽��� ���� ( BIN, XML, ASC )
-	unsigned long size;						/// ���� �޽����� ũ��
-	char buf[IPC_CALL_BUF_LEN];				/// �޽��� ����
+	unsigned long dst_id;					/// 수신지 ID 
+	unsigned long src_id;					/// 송신지 ID
+	unsigned long msg_type;					/// 메시지 형식 ( BIN, XML, ASC )
+	unsigned long size;						/// 전송 메시지의 크기
+	char buf[IPC_CALL_BUF_LEN];				/// 메시지 버퍼
 
 } ipc_call_packet_t;
 
@@ -76,37 +76,37 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ 
+/// @brief  외부에서 사용할수 있는 객체함수 리스트 
 
 
 
-int			ipc_call_create			( unsigned long id  	); 									/// IPC_CALL �� �����Ѵ�.
-int			ipc_call_free			( unsigned long id  	); 									/// IPC_CALL �� �����Ѵ�.
+int			ipc_call_create			( unsigned long id  	); 									/// IPC_CALL 을 생성한다.
+int			ipc_call_free			( unsigned long id  	); 									/// IPC_CALL 을 해제한다.
                                                                 							
-int			ipc_call_method			( unsigned long method	); 									/// IPC_CALL �� ���� ����� ���Ѵ�.
+int			ipc_call_method			( unsigned long method	); 									/// IPC_CALL 의 수행 방식을 정한다.
                                                                 							
-int			ipc_call_level			( unsigned long level	); 									/// IPC_CALL �� �ð� �ʰ��� �����Ѵ�.
-int			ipc_call_level_default	( unsigned long level	); 									/// IPC_CALL �� �ð� �ʰ��� �����Ѵ�.
+int			ipc_call_level			( unsigned long level	); 									/// IPC_CALL 의 시간 초과를 설정한다.
+int			ipc_call_level_default	( unsigned long level	); 									/// IPC_CALL 의 시간 초과를 설정한다.
                                                                 							
-int			ipc_call_timeout		( unsigned long msec	); 									/// IPC_CALL �� �ð� �ʰ��� �����Ѵ�.
-int			ipc_call_timeout_default( unsigned long msec	); 									/// IPC_CALL �� �ð� �ʰ��� �����Ѵ�.
+int			ipc_call_timeout		( unsigned long msec	); 									/// IPC_CALL 의 시간 초과를 설정한다.
+int			ipc_call_timeout_default( unsigned long msec	); 									/// IPC_CALL 의 시간 초과를 설정한다.
                                     
-// int			ipc_call_on_read	( void (*func)( unsigned long msg_type, void *priv ) ); 	/// IPC_CALL �� �б⿡ ���� �̺�Ʈ�� �����Ѵ�.
+// int			ipc_call_on_read	( void (*func)( unsigned long msg_type, void *priv ) ); 	/// IPC_CALL 의 읽기에 대한 이벤트를 지정한다.
 int			ipc_call_on_read		( ipc_call_func_t *func );
 
                                     
-int			ipc_call_read			( void *buf, int len ); 									/// IPC_CALL �� ���ŵ� ������ ������ BIN �������� �д´�.
+int			ipc_call_read			( void *buf, int len ); 									/// IPC_CALL 의 수신된 버퍼의 내용을 BIN 형식으로 읽는다.
 
-// int			ipc_call_read_xml	( void *buf, int len ); 									/// IPC_CALL �� ���ŵ� ������ ������ XML �������� �д´�.
-//int			ipc_call_read_asc	( void *buf, int len ); 									/// IPC_CALL �� ���ŵ� ������ ������ ASC �������� �д´�.
+// int			ipc_call_read_xml	( void *buf, int len ); 									/// IPC_CALL 의 수신된 버퍼의 내용을 XML 형식으로 읽는다.
+//int			ipc_call_read_asc	( void *buf, int len ); 									/// IPC_CALL 의 수신된 버퍼의 내용을 ASC 형식으로 읽는다.
                               	    
-int			ipc_call_send			( unsigned long dest, void *buf, int len, unsigned long msg_type ); 				/// IPC_CALL �� BIN �������� �����͸� �����Ѵ�.
-int			ipc_call_send_xml		( unsigned long dest, char *buf, int len ); 				/// IPC_CALL �� XML �������� �����͸� �����Ѵ�.
-int			ipc_call_send_asc		( unsigned long dest, char *buf, int len ); 				/// IPC_CALL �� ASC �������� �����͸� �����Ѵ�.
+int			ipc_call_send			( unsigned long dest, void *buf, int len, unsigned long msg_type ); 				/// IPC_CALL 의 BIN 형식으로 데이터를 전송한다.
+int			ipc_call_send_xml		( unsigned long dest, char *buf, int len ); 				/// IPC_CALL 의 XML 형식으로 데이터를 전송한다.
+int			ipc_call_send_asc		( unsigned long dest, char *buf, int len ); 				/// IPC_CALL 의 ASC 형식으로 데이터를 전송한다.
                               	    
-int			ipc_call_rpc			( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen ); 	/// IPC_CALL �� BIN �������� �����͸� �����ϰ� �����Ѵ�.
-int			ipc_call_rpc_xml		( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen ); 	/// IPC_CALL �� XML �������� �����͸� �����ϰ� �����Ѵ�.
-int			ipc_call_rpc_asc		( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen ); 	/// IPC_CALL �� ASC �������� �����͸� �����ϰ� �����Ѵ�.
+int			ipc_call_rpc			( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen ); 	/// IPC_CALL 의 BIN 형식으로 데이터를 전송하고 수신한다.
+int			ipc_call_rpc_xml		( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen ); 	/// IPC_CALL 의 XML 형식으로 데이터를 전송하고 수신한다.
+int			ipc_call_rpc_asc		( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen ); 	/// IPC_CALL 의 ASC 형식으로 데이터를 전송하고 수신한다.
 
 
 /// @}
diff --git a/app/app-prime-modbus/include/fanet/pollmng.h b/app/app-prime-modbus/include/fanet/pollmng.h
index 2ef9638..027e9d7 100644
--- a/app/app-prime-modbus/include/fanet/pollmng.h
+++ b/app/app-prime-modbus/include/fanet/pollmng.h
@@ -1,11 +1,11 @@
 /**    
     @file     pollmng.c
     @date     2009/3/19
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    poll �� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    poll 을 관리한다.
 
-    @modify   2010/01/04 (�����)  poll_obj_t ����ü���� poll_ndx ������� ����
-              2010/08/18 (��漭) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
+    @modify   2010/01/04 (오재경)  poll_obj_t 구조체에서 poll_ndx 멤버변수 제거
+              2010/08/18 (장길서) mingw와 함께 사용할 수 있는 코드 추가
                
     @todo    
     @bug     
@@ -15,8 +15,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -33,14 +33,14 @@
 #define POLL_RECURSIVE_COUNT       8
 
 
-/// �����ϴ� �Լ����� ���ϰ�
+/// 관리하는 함수들의 리턴값
 #define POLL_NO_DESCRIPTOR        -2
 #define POLL_ASYNC_ERR            -1
 #define POLL_EVENTED               0
 #define POLL_TIME_OUT              1
 #define POLL_RECURSIVE_LIMIT_ERR  -3
                             
-/// poll �� �����Ǵ� �����ڵ��� ����
+/// poll 로 관리되는 파일핸들의 형태
 #define STYP_NONE                   0
 #define STYP_TCP                    1
 #define STYP_UDP                    2
@@ -62,15 +62,15 @@
 
 #endif
 
-/// poll ���� ��ü
+/// poll 관리 객체
 typedef struct poll_obj_t_ poll_obj_t;
 struct poll_obj_t_
 {
 	fd_t   fd;
 	int    type;
 	int    tag;
-	void  *priv;               // tcp, udp, uds ��� ���Ǵ� ������
-	void  *user;               // ����� ������
+	void  *priv;               // tcp, udp, uds 등에서 사용되는 포인터
+	void  *user;               // 사용자 포인터
 
 #ifdef  MS_WIN32
 
@@ -84,7 +84,7 @@ struct poll_obj_t_
 	int    (*on_poll_hup)( poll_obj_t *obj);   
 	
 	int    (*on_timeout )( poll_obj_t *obj);   
-	int    (*on_disconnect )( poll_obj_t *obj);   // tcp ���� ���������� �������� ȣ��
+	int    (*on_disconnect )( poll_obj_t *obj);   // tcp 에서 소켓접속이 끊어지면 호출
 };
 
 #ifdef	MS_WIN32
@@ -117,21 +117,21 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ
-
-void        poll_init( void );              /// poll ���� ��ü�� �����Ѵ�.
-void        poll_exit( void );              /// poll ���� ��ü�� �����Ѵ�
-void        poll_rebuild( void );           /// ����Ʈ�� �����Ǵ� ���ϵ�ũ���͵��� ���迭�� �籸���Ѵ�.
-poll_obj_t *poll_add( fd_t fd );            /// poll ���� ��ü�� ������ ���� ��ũ���͸� ����Ѵ�.
-poll_obj_t *poll_obj_byfd( fd_t fd );       /// poll ���� ��ü���� ���ϵ�ũ��Ʈ�� �����ϴ� ����ü�� ��ȯ�Ѵ�.
-poll_obj_t *poll_get_obj( int idx );        /// poll ���� ��ü���� ������ ������ü �����͸� ��´�.
-void       *poll_get_priv( int idx  );      /// poll ���� ��ü���� ����� �����͸� ��´�.
-int         poll_count( void  );            /// �����ϴ� ������ ����
-void        poll_delete( poll_obj_t *obj ); /// poll ���� ��ü���� ��ü�� �����ͷ� �����Ѵ�.
-void        poll_delete_byfd( fd_t fd );    /// poll ���� ��ü���� ���ϵ�ũ���ͷ� �����Ѵ�.
-int         poll_do_loop( int time_out );   /// poll �̺�Ʈ ���� �����Լ�
-int         poll_do_one( fd_t fd, int event, int time_out ); /// poll �̺�Ʈ�� �ϳ��� �����ڵ�θ� ������.
-poll_obj_t *poll_obj_bytag( int tag );      /// poll ���� ��ü���� tag ��ȣ�� ã�� ����ü�� ��ȯ�Ѵ�.
+/// @brief  외부에서 사용할수 있는 객체함수 리스트
+
+void        poll_init( void );              /// poll 관리 객체를 생성한다.
+void        poll_exit( void );              /// poll 관리 객체를 해제한다
+void        poll_rebuild( void );           /// 리스트로 관리되는 파일디스크립터들을 폴배열에 재구성한다.
+poll_obj_t *poll_add( fd_t fd );            /// poll 관리 객체에 열려진 파일 디스크립터를 등록한다.
+poll_obj_t *poll_obj_byfd( fd_t fd );       /// poll 관리 객체에서 파일디스크립트로 관리하는 폴객체를 반환한다.
+poll_obj_t *poll_get_obj( int idx );        /// poll 관리 객체에서 개개의 폴구조체 포인터를 얻는다.
+void       *poll_get_priv( int idx  );      /// poll 관리 객체에서 사용자 포인터를 얻는다.
+int         poll_count( void  );            /// 관리하는 파일의 개수
+void        poll_delete( poll_obj_t *obj ); /// poll 관리 객체에서 객체의 포인터로 삭제한다.
+void        poll_delete_byfd( fd_t fd );    /// poll 관리 객체에서 파일디스크립터로 삭제한다.
+int         poll_do_loop( int time_out );   /// poll 이벤트 메인 루프함수
+int         poll_do_one( fd_t fd, int event, int time_out ); /// poll 이벤트를 하나의 파일핸들로만 돌린다.
+poll_obj_t *poll_obj_bytag( int tag );      /// poll 관리 객체에서 tag 번호로 찾아 폴객체를 반환한다.
 /// @}
 
 #ifdef __cplusplus 
diff --git a/app/app-prime-modbus/include/fanet/rspackage.h b/app/app-prime-modbus/include/fanet/rspackage.h
index 4cb38cb..f0da70c 100644
--- a/app/app-prime-modbus/include/fanet/rspackage.h
+++ b/app/app-prime-modbus/include/fanet/rspackage.h
@@ -2,16 +2,16 @@
 #define __RS_PACKAGE__
 
 #define __RS_BUFFER_MAX             (8192)
-#define RSERR_NONE                  0                                           /// ���� ����
-#define RSERR_OUT_OF_MEMORY         1                                           /// �޸� ����
-#define RSERR_CRC                   2                                           /// CRC ����
-#define RSERR_DATA                  3                                           /// ������ ���� �̻�
+#define RSERR_NONE                  0                                           /// 에러 없음
+#define RSERR_OUT_OF_MEMORY         1                                           /// 메모리 부족
+#define RSERR_CRC                   2                                           /// CRC 에러
+#define RSERR_DATA                  3                                           /// 데이터 내용 이상
 
-#define __WAIT_DLE        0                                                     // DLE �ڵ带 ���� �� ���� ���
-#define __WAIT_STX        1                                                     // STX �ڵ带 ���� �� ���� ���
-#define __RCV_DATA        2                                                     // swRCV_DATA �ڷ� ������ ���
-#define __CHK_DLE         3                                                     // ������ ���� �� DLE �ڵ带 ����, ������ DLE ������ Ȯ��
+#define __WAIT_DLE        0                                                     // DLE 코드를 만날 때 까지 대기
+#define __WAIT_STX        1                                                     // STX 코드를 만날 때 까지 대기
+#define __RCV_DATA        2                                                     // swRCV_DATA 자료 수신을 계속
+#define __CHK_DLE         3                                                     // 데이터 수신 중 DLE 코드를 받음, 다음이 DLE 인지를 확인
 
-int     rspackage_error_code;                                                   /// ���� ���� �ڵ�
+int     rspackage_error_code;                                                   /// 에러 전역 코드
 
 #endif
diff --git a/app/app-prime-modbus/include/fanet/rspackage_dle.h b/app/app-prime-modbus/include/fanet/rspackage_dle.h
index 3d6257f..8b95e27 100644
--- a/app/app-prime-modbus/include/fanet/rspackage_dle.h
+++ b/app/app-prime-modbus/include/fanet/rspackage_dle.h
@@ -3,16 +3,16 @@
 
 #include <rspackage.h>
 
-/// rs package �� ���� �⺻ ����
+/// rs package 를 위한 기본 구조
 typedef struct rs_dle_t_ rs_dle_t;
 struct rs_dle_t_
-{   /// IniFile ���� ���� �����̸�
-    char        ch_stx;                                                         // STX�� ���Ǵ� ����Ʈ �ڵ�
-    char        ch_etx;                                                         // ETX�� ���Ǵ� ����Ʈ �ڵ�
-    char        ch_dle;                                                         // DLE�� ���Ǵ� ����Ʈ �ڵ�
-    char        buffer[__RS_BUFFER_MAX+1];                                      // ���� �ڷḦ ���� ����
-    int         sz_data;                                                        // ���� �ڷ��� ����Ʈ ����, -1:CRC ����, 0:�ڷ� ����, �ٸ���:���� �ڷ� ����
-    int            (*check_crc)( rs_dle_t *);                                   // CRC�� üũ�ϴ� �Լ�
+{   /// IniFile 정보 저장 파일이름
+    char        ch_stx;                                                         // STX에 사용되는 바이트 코드
+    char        ch_etx;                                                         // ETX에 사용되는 바이트 코드
+    char        ch_dle;                                                         // DLE에 사용되는 바이트 코드
+    char        buffer[__RS_BUFFER_MAX+1];                                      // 수신 자료를 위한 버퍼
+    int         sz_data;                                                        // 수신 자료의 바이트 개수, -1:CRC 에러, 0:자료 없음, 다른값:수신 자료 개수
+    int            (*check_crc)( rs_dle_t *);                                   // CRC를 체크하는 함수
 };
 
 extern rs_dle_t *rs_create_dle( int  (*check_crc)( rs_dle_t *));
diff --git a/app/app-prime-modbus/include/fanet/tcp.h b/app/app-prime-modbus/include/fanet/tcp.h
index 3cfbc13..911eb99 100644
--- a/app/app-prime-modbus/include/fanet/tcp.h
+++ b/app/app-prime-modbus/include/fanet/tcp.h
@@ -1,11 +1,11 @@
 /**    
     @file     tcp.c
     @date     2009-03-27
-    @author   ����� freefrug@falinux.com
-    @brief    tcp �� ����� ����� ����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    tcp 를 사용한 통신을 담당한다.
               
     @modify   
-              2010-08-18 (��漮) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
+              2010-08-18 (장길석) mingw와 함께 사용할 수 있는 코드 추가
     @todo    
     @bug     
     @remark   
@@ -13,8 +13,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -30,21 +30,21 @@
 
 //#include <netinet/in.h>
 
-/// tcp ������ ���¸� �����Ѵ�.
+/// tcp 소켓의 형태를 구분한다.
 #define  SOCK_TYPE_CLIENT          0
 #define  SOCK_TYPE_SERVER          1
 #define  SOCK_TYPE_SERVER_CLIENT   2
 
-/// ��å�� ���� �ɼ�
-#define  BF_POLICY_CLOSE_IOERR     (1<<0 )        /// read(), write() �Լ� �����߻��� ������ ���´�.
-#define  BF_POLICY_CLOSE_TIMEOUT   (1<<1 )        /// SOCK_TYPE_SERVER_CLIENT Ÿ�Կ� ���ؼ� Ư���ð��� �����Ķ�� ������ ���´�.
-#define  BF_POLICY_RELOAD_TIMEOUT  (1<<2 )        /// SOCK_TYPE_SERVER_CLIENT Ÿ�Կ� ���ؼ� �ð��� �簻���Ѵ�.
-#define  BF_POLICY_CLOSE_OFF_LINK  (1<<3 )        /// SOCK_TYPE_SERVER_CLIENT Ÿ�Կ� ���ؼ� �ϵ�������� ��ũ�� �������� ������ ���´�.
-#define  BF_POLICY_READ_ZERO_ERROR (1<<4 )        /// read() �Լ����� ���� ���� 0�̸� ����ó���Ѵ�. (���������� ������ �� ��������� read 0 �̺�Ʈ�� ȣ��Ǵ°��� ���´�)
-#define  BF_POLICY_WRITE_NONBLOCK  (1<<5 )        /// write() �Լ��� ȣ���Ҷ� ���۰� ��밡������ Ȯ���ϱ� ���� POLLOUT �̺�Ʈ�� Ȯ���Ѵ�.
+/// 정책의 대한 옵션
+#define  BF_POLICY_CLOSE_IOERR     (1<<0 )        /// read(), write() 함수 에러발생시 접속을 끊는다.
+#define  BF_POLICY_CLOSE_TIMEOUT   (1<<1 )        /// SOCK_TYPE_SERVER_CLIENT 타입에 한해서 특정시간이 지난후라면 접속을 끊는다.
+#define  BF_POLICY_RELOAD_TIMEOUT  (1<<2 )        /// SOCK_TYPE_SERVER_CLIENT 타입에 한해서 시간을 재갱신한다.
+#define  BF_POLICY_CLOSE_OFF_LINK  (1<<3 )        /// SOCK_TYPE_SERVER_CLIENT 타입에 한해서 하드웨어적인 링크가 끊어지면 접속을 끊는다.
+#define  BF_POLICY_READ_ZERO_ERROR (1<<4 )        /// read() 함수에서 읽은 값이 0이면 에러처리한다. (소켓접속이 끊어진 후 계속적으로 read 0 이벤트가 호출되는것을 막는다)
+#define  BF_POLICY_WRITE_NONBLOCK  (1<<5 )        /// write() 함수를 호출할때 버퍼가 사용가능한지 확인하기 위해 POLLOUT 이벤트를 확인한다.
 
 
-/// ��Ÿ���
+/// 기타상수
 #define  DEFAULT_LIVE_SEC          (3600)
 
 
@@ -53,32 +53,32 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ
+/// @brief  외부에서 사용할수 있는 객체함수 리스트
 
 #ifdef EMBEDDED_LINUX
 
-void         tcp_set_policy( unsigned int option );                  /// tcp ��å�� �����Ѵ�
-unsigned int tcp_get_policy( void );                                 /// tcp ��å�� ��´�.
-void         tcp_set_livesec( int sec );                             /// ����� �����ð� ������ ������ ���µ� ����ϴ� �ð��� �����Ѵ�.
+void         tcp_set_policy( unsigned int option );                  /// tcp 정책을 설정한다
+unsigned int tcp_get_policy( void );                                 /// tcp 정책을 얻는다.
+void         tcp_set_livesec( int sec );                             /// 통신이 일정시간 없으면 접속을 끊는데 사용하는 시간을 설정한다.
 
 #endif
 
-poll_obj_t  *tcp_open_server( int port, int max_client );            /// tcp ������ �������·� open �Ѵ�.
-poll_obj_t  *tcp_open_client( char *ip, int port );                  /// tcp ������ Ŭ���̾�Ʈ ���·� open �ϰ� ������� �����Ѵ�
-//poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, int sockfd, struct sockaddr_in *paddr ); /// Ŭ���̾�Ʈ ������ ������ ������ ��ü�� ����Ѵ�.
-void         tcp_close( poll_obj_t *obj );                           /// tcp ������ close �Ѵ�.
-poll_obj_t  *tcp_accept_client( poll_obj_t *obj_server );            /// tcp ������ ���ӿ䱸�� ó������ Ŭ���̾�Ʈ������ ����Ѵ�.
-int          tcp_write( poll_obj_t *obj, char *buf, int len );       /// tcp ������ ���� ����Ÿ�� �����Ѵ�.
-int          tcp_read( poll_obj_t *obj, char *buf, int len );        /// tcp ������ ���� ����Ÿ�� �д´�.
-int          tcp_check_time( poll_obj_t *obj );                      /// �����ð��� �������� ȣ��Ǹ� tcp ��å�� ���� ���� �����Ѵ�.
+poll_obj_t  *tcp_open_server( int port, int max_client );            /// tcp 소켓을 서버형태로 open 한다.
+poll_obj_t  *tcp_open_client( char *ip, int port );                  /// tcp 소켓을 클라이언트 형태로 open 하고 상대편에 접속한다
+//poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, int sockfd, struct sockaddr_in *paddr ); /// 클라이언트 소켓의 접속을 폴관린 객체에 등록한다.
+void         tcp_close( poll_obj_t *obj );                           /// tcp 소켓을 close 한다.
+poll_obj_t  *tcp_accept_client( poll_obj_t *obj_server );            /// tcp 소켓의 접속요구를 처리한후 클라이언트소켓을 등록한다.
+int          tcp_write( poll_obj_t *obj, char *buf, int len );       /// tcp 소켓을 통해 데이타를 전송한다.
+int          tcp_read( poll_obj_t *obj, char *buf, int len );        /// tcp 소켓을 통해 데이타를 읽는다.
+int          tcp_check_time( poll_obj_t *obj );                      /// 일정시간이 지난을때 호출되며 tcp 정책에 의해 일을 수행한다.
 
-int          tcp_client_count( poll_obj_t *obj_server );             /// tcp �������� ���ӵ� ������ ������ ��´�.
-poll_obj_t  *tcp_get_client( poll_obj_t *obj_server, int idx );      /// tcp �������� �ε����� ���ӵ� ���� �� ��ü�� ��´�.
-poll_obj_t  *tcp_get_server( poll_obj_t *obj_client );               /// tcp Ŭ���̾�Ʈ ����ü���� ������ü�� ��´�.
+int          tcp_client_count( poll_obj_t *obj_server );             /// tcp 서버에서 접속된 소켓의 개수를 얻는다.
+poll_obj_t  *tcp_get_client( poll_obj_t *obj_server, int idx );      /// tcp 서버에서 인덱스로 접속된 소켓 폴 객체를 얻는다.
+poll_obj_t  *tcp_get_server( poll_obj_t *obj_client );               /// tcp 클라이언트 폴객체에서 서버객체를 얻는다.
 
-int          tcp_write_thread( poll_obj_t *obj, char *buf, int len );/// �����带 �����Ͽ� ����Ÿ�� �����Ѵ�.
+int          tcp_write_thread( poll_obj_t *obj, char *buf, int len );/// 쓰레드를 생성하여 데이타를 전송한다.
 
-const char  *tcp_peer_ip_string( poll_obj_t *obj_client );           /// ����� ������� IP ���ڿ��� ��´�.
+const char  *tcp_peer_ip_string( poll_obj_t *obj_client );           /// 연결된 상대편의 IP 문자열을 얻는다.
 
 /// @}
 
diff --git a/app/app-prime-modbus/include/fanet/tipc.h b/app/app-prime-modbus/include/fanet/tipc.h
index e56b4cd..dabb170 100644
--- a/app/app-prime-modbus/include/fanet/tipc.h
+++ b/app/app-prime-modbus/include/fanet/tipc.h
@@ -8,11 +8,11 @@
 #ifndef INCLUDE_FANET_TIPC_H_
 #define INCLUDE_FANET_TIPC_H_
 
-poll_obj_t  *tipc_open_server( int type, int inst, int client_max);   /// tcp ������ �������·� open �Ѵ�.
-poll_obj_t  *tipc_open_client( int type, int inst);                                   /// tcp ������ Ŭ���̾�Ʈ ���·� open �ϰ� ������� �����Ѵ�
-void         tipc_close( poll_obj_t *obj );                           /// tcp ������ close �Ѵ�.
-poll_obj_t  *tipc_accept_client( poll_obj_t *obj_server );            /// tcp ������ ���ӿ䱸�� ó������ Ŭ���̾�Ʈ������ ����Ѵ�.
-int          tipc_write( poll_obj_t *obj, char *buf, int len );       /// tcp ������ ���� ����Ÿ�� �����Ѵ�.
-int          tipc_read( poll_obj_t *obj, char *buf, int len );        /// tcp ������ ���� ����Ÿ�� �д´�.
+poll_obj_t  *tipc_open_server( int type, int inst, int client_max);   /// tcp 소켓을 서버형태로 open 한다.
+poll_obj_t  *tipc_open_client( int type, int inst);                                   /// tcp 소켓을 클라이언트 형태로 open 하고 상대편에 접속한다
+void         tipc_close( poll_obj_t *obj );                           /// tcp 소켓을 close 한다.
+poll_obj_t  *tipc_accept_client( poll_obj_t *obj_server );            /// tcp 소켓의 접속요구를 처리한후 클라이언트소켓을 등록한다.
+int          tipc_write( poll_obj_t *obj, char *buf, int len );       /// tcp 소켓을 통해 데이타를 전송한다.
+int          tipc_read( poll_obj_t *obj, char *buf, int len );        /// tcp 소켓을 통해 데이타를 읽는다.
 
 #endif /* INCLUDE_FANET_TIPC_H_ */
diff --git a/app/app-prime-modbus/include/fanet/tipc_bcast.h b/app/app-prime-modbus/include/fanet/tipc_bcast.h
index ee46f92..619f137 100644
--- a/app/app-prime-modbus/include/fanet/tipc_bcast.h
+++ b/app/app-prime-modbus/include/fanet/tipc_bcast.h
@@ -1,8 +1,8 @@
 /**
     @file     tipc_bcast.h
     @date     2015-08-31
-    @author   ��漮 jks@falinux.com
-    @brief    TIPC-DGRAM ������ ����Ͽ� ��Ƽij��Ʈ�� ������ ����� ����Ѵ�.
+    @author   장길석 jks@falinux.com
+    @brief    TIPC-DGRAM 소켓을 사용하여 멀티캐스트가 가능한 통신을 담당한다.
 
     @modify
     @todo
@@ -12,8 +12,8 @@
     @warning
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -26,13 +26,13 @@ extern "C" {
 #endif
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ
+/// @brief  외부에서 사용할수 있는 객체함수 리스트
 
-poll_obj_t  *tipc_bcast_open(  int type, int lower, int upper );     /// tipc_dgram ������ �������·� open �Ѵ�.
-void         tipc_bcast_close( poll_obj_t *obj );       /// tipc_dgram ������ close �Ѵ�.
+poll_obj_t  *tipc_bcast_open(  int type, int lower, int upper );     /// tipc_dgram 소켓을 서버형태로 open 한다.
+void         tipc_bcast_close( poll_obj_t *obj );       /// tipc_dgram 소켓을 close 한다.
 
-int          tipc_bcast_write( poll_obj_t *obj, int type, int lower, int upper, char *buf, int len ); /// tipc_dgram ������ ���� ����Ÿ�� �����Ѵ�.
-int          tipc_bcast_read( poll_obj_t *obj, char *buf, int len );                        /// tipc_dgram ������ ���� ����Ÿ�� �д´�.
+int          tipc_bcast_write( poll_obj_t *obj, int type, int lower, int upper, char *buf, int len ); /// tipc_dgram 소켓을 통해 데이타를 전송한다.
+int          tipc_bcast_read( poll_obj_t *obj, char *buf, int len );                        /// tipc_dgram 소켓을 통해 데이타를 읽는다.
 /// @}
 
 #ifdef __cplusplus
diff --git a/app/app-prime-modbus/include/fanet/tipc_stream.h b/app/app-prime-modbus/include/fanet/tipc_stream.h
index c93a90b..7d75731 100644
--- a/app/app-prime-modbus/include/fanet/tipc_stream.h
+++ b/app/app-prime-modbus/include/fanet/tipc_stream.h
@@ -8,11 +8,11 @@
 #ifndef INCLUDE_FANET_TIPC_STREAM_H_
 #define INCLUDE_FANET_TIPC_STREAM_H_
 
-poll_obj_t  *tipc_stream_open_server( int type, int inst, int client_max);   /// tipc ������ �������·� open �Ѵ�.
-poll_obj_t  *tipc_stream_open_client( int type, int inst);                   /// tipc ������ Ŭ���̾�Ʈ ���·� open �ϰ� ������� �����Ѵ�
-void         tipc_stream_close( poll_obj_t *obj );                           /// tipc ������ close �Ѵ�.
-poll_obj_t  *tipc_stream_accept_client( poll_obj_t *obj_server );            /// tipc ������ ���ӿ䱸�� ó������ Ŭ���̾�Ʈ������ ����Ѵ�.
-int          tipc_stream_write( poll_obj_t *obj, char *buf, int len );       /// tipc ������ ���� ����Ÿ�� �����Ѵ�.
-int          tipc_stream_read( poll_obj_t *obj, char *buf, int len );        /// tipc ������ ���� ����Ÿ�� �д´�.
+poll_obj_t  *tipc_stream_open_server( int type, int inst, int client_max);   /// tipc 소켓을 서버형태로 open 한다.
+poll_obj_t  *tipc_stream_open_client( int type, int inst);                   /// tipc 소켓을 클라이언트 형태로 open 하고 상대편에 접속한다
+void         tipc_stream_close( poll_obj_t *obj );                           /// tipc 소켓을 close 한다.
+poll_obj_t  *tipc_stream_accept_client( poll_obj_t *obj_server );            /// tipc 소켓의 접속요구를 처리한후 클라이언트소켓을 등록한다.
+int          tipc_stream_write( poll_obj_t *obj, char *buf, int len );       /// tipc 소켓을 통해 데이타를 전송한다.
+int          tipc_stream_read( poll_obj_t *obj, char *buf, int len );        /// tipc 소켓을 통해 데이타를 읽는다.
 
 #endif /* INCLUDE_FANET_TIPC_STREAM_H_ */
diff --git a/app/app-prime-modbus/include/fanet/uart-packet-dle.h b/app/app-prime-modbus/include/fanet/uart-packet-dle.h
index 174f22b..1209b28 100644
--- a/app/app-prime-modbus/include/fanet/uart-packet-dle.h
+++ b/app/app-prime-modbus/include/fanet/uart-packet-dle.h
@@ -1,8 +1,8 @@
 /**    
     @file     uart-packet-dle.h
     @date     2010-09-17
-    @author   ����� freefrug@falinux.com
-    @brief    uart ������¸� �м��ϰ� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    uart 통신형태를 분석하고 관리한다.
               
               dle / stx / data(crc16) / dle / etx
 
@@ -14,8 +14,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -30,16 +30,16 @@ enum { ANERR_NONE=0, ANERR_CRC };
 typedef  void(*on_uart_packet_t)( poll_obj_t *obj, char *buf, int count, int error );
 
 
-/// �ø������� �м��� ����ü
+/// 시리얼패켓 분석용 구조체
 typedef struct 
 {
-	// ����� ���溯��
+	// 사용자 변경변수
 	int   stx;
 	int   etx;
 	int   dle;
-	unsigned short (*make_crc16)(char *buf, int count );  // �⺻���� crc �Լ��� ��ġ�ȴ�.
+	unsigned short (*make_crc16)(char *buf, int count );  // 기본적인 crc 함수가 매치된다.
 
-	// ����� ����Ұ�
+	// 사용자 변경불가
 	poll_obj_t *obj;
 	
 	int     an_seq;
@@ -58,13 +58,13 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ 
+/// @brief  외부에서 사용할수 있는 객체함수 리스트 
 
-extern void  upacket_dle_create( poll_obj_t *obj, on_uart_packet_t callback );              /// uart ���� ���� ��ü ����
-extern void  upacket_dle_free( poll_obj_t *obj );                                            /// uart ���� ���� ��ü ����
-extern void  upacket_dle_clear( uart_packet_analysis_t *up );                                /// uart ���Ϻм� Ŭ����
-extern int   upacket_dle_read_from_uart( poll_obj_t *obj, on_uart_packet_t callback );      /// uart ���� ����Ÿ�� �о� ������ �м��� �� ������ ���������  ��ϵ� �ݹ��Լ��� ȣ���Ѵ�.
-extern int   upacket_dle_write_to_uart( poll_obj_t *obj, const char *data_buf, int count  ); /// uart �� ������ ����� �����Ѵ�.
+extern void  upacket_dle_create( poll_obj_t *obj, on_uart_packet_t callback );              /// uart 패켓 관린 객체 생성
+extern void  upacket_dle_free( poll_obj_t *obj );                                            /// uart 패켓 관린 객체 해제
+extern void  upacket_dle_clear( uart_packet_analysis_t *up );                                /// uart 패켓분석 클리어
+extern int   upacket_dle_read_from_uart( poll_obj_t *obj, on_uart_packet_t callback );      /// uart 에서 데이타를 읽어 패켓을 분석한 후 패켓이 만들어지면  등록된 콜백함수를 호출한다.
+extern int   upacket_dle_write_to_uart( poll_obj_t *obj, const char *data_buf, int count  ); /// uart 에 패켓을 만들어 전송한다.
 
 
 
diff --git a/app/app-prime-modbus/include/fanet/uart.h b/app/app-prime-modbus/include/fanet/uart.h
index c0701d3..8127256 100644
--- a/app/app-prime-modbus/include/fanet/uart.h
+++ b/app/app-prime-modbus/include/fanet/uart.h
@@ -1,11 +1,11 @@
 /**    
     @file     uart.h
     @date     2009-03-19
-    @author   ����� freefrug@falinux.com
-    @brief    uds �� ����� ����� ����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    uds 를 사용한 통신을 담당한다.
 
     @modify   
-              2010-08-18 (��漮) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
+              2010-08-18 (장길석) mingw와 함께 사용할 수 있는 코드 추가
     @todo    
     @bug     
     @remark   
@@ -13,8 +13,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -28,21 +28,21 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ
+/// @brief  외부에서 사용할수 있는 객체함수 리스트
 
-poll_obj_t *uart_open( char *dev_name, int baud, char parity, int stop_bit); /// uart �� open �Ѵ�.
-void        uart_close( poll_obj_t *obj );                      /// uart �� close �Ѵ�.
-poll_obj_t *uart_get_byport( char *fname );                     /// uart ����ü�� �����̸����� ã�´�.
-int         uart_write( poll_obj_t *obj, char *buf, int len );  /// uart �� ���� ����Ÿ�� �����Ѵ�.
-int         uart_read( poll_obj_t *obj, char *buf, int len );   /// uart �� ���� ����Ÿ�� �д´�.
+poll_obj_t *uart_open( char *dev_name, int baud, char parity, int stop_bit); /// uart 을 open 한다.
+void        uart_close( poll_obj_t *obj );                      /// uart 를 close 한다.
+poll_obj_t *uart_get_byport( char *fname );                     /// uart 폴객체를 파일이름으로 찾는다.
+int         uart_write( poll_obj_t *obj, char *buf, int len );  /// uart 를 통해 데이타를 전송한다.
+int         uart_read( poll_obj_t *obj, char *buf, int len );   /// uart 를 통해 데이타를 읽는다.
 
-int         uart_read_into_fifo( poll_obj_t *obj );                     /// uart ���� ���Ź��ۿ� ����Ÿ�� �����Ѵ�.
-int         uart_copy_recv_fifo( poll_obj_t *obj, char *buf, int len ); /// uart ���� ���Ź��ۿ��� ����Ÿ�� �о�´�.
-char       *uart_get_recv_fifo( poll_obj_t *obj );                      /// uart ���� ���Ź����� �����͸� ��´�.
-int         uart_get_recv_fifo_count( poll_obj_t *obj );                /// uart ���� ���Ź��ۿ� ����� ����Ÿ�� ������ ��´�.
-int         uart_checkout_recv_fifo( poll_obj_t *obj, int len );        /// uart ���� ���Ź��ۿ��� ������ ����Ÿ�� ������ �� ������ ����Ÿ�� �̵��Ѵ�.
+int         uart_read_into_fifo( poll_obj_t *obj );                     /// uart 내부 수신버퍼에 데이타를 저장한다.
+int         uart_copy_recv_fifo( poll_obj_t *obj, char *buf, int len ); /// uart 내부 수신버퍼에서 데이타를 읽어온다.
+char       *uart_get_recv_fifo( poll_obj_t *obj );                      /// uart 내부 수신버퍼의 포인터를 얻는다.
+int         uart_get_recv_fifo_count( poll_obj_t *obj );                /// uart 내부 수신버퍼에 저장된 데이타의 갯수를 얻는다.
+int         uart_checkout_recv_fifo( poll_obj_t *obj, int len );        /// uart 내부 수신버퍼에서 앞쪽의 데이타를 제거한 후 뒤쪽의 데이타를 이동한다.
 
-int         uart_recv_wait_fifo( poll_obj_t *obj, unsigned char *match, int match_len, int tmout_msec ); ///uart���� �񱳵���Ÿ�� ���ŵɶ����� �����Ѵ�.
+int         uart_recv_wait_fifo( poll_obj_t *obj, unsigned char *match, int match_len, int tmout_msec ); ///uart에서 비교데이타가 수신될때까지 감시한다.
 
 /// @}
 
diff --git a/app/app-prime-modbus/include/fanet/udp.h b/app/app-prime-modbus/include/fanet/udp.h
index c6c9c3c..df434fd 100644
--- a/app/app-prime-modbus/include/fanet/udp.h
+++ b/app/app-prime-modbus/include/fanet/udp.h
@@ -1,11 +1,11 @@
 /**    
     @file     udp.h
     @date     2009-03-19
-    @author   ����� freefrug@falinux.com
-    @brief    udp �� ����� ����� ����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    udp 를 사용한 통신을 담당한다.
 
     @modify   
-              2010-08-18 (��漮) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
+              2010-08-18 (장길석) mingw와 함께 사용할 수 있는 코드 추가
     @todo    
     @bug     
     @remark   
@@ -13,8 +13,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -27,21 +27,21 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ
+/// @brief  외부에서 사용할수 있는 객체함수 리스트
 
-poll_obj_t  *udp_open_server( int port );        /// udp ������ �������·� open �Ѵ�.
-poll_obj_t  *udp_open_client( void );            /// udp ������ Ŭ���̾�Ʈ ���·� open �Ѵ�.
-void         udp_close( poll_obj_t *obj );       /// udp ������ close �Ѵ�.
-poll_obj_t  *udp_get_byport( int port );         /// udp ����ü�� ��Ʈ��ȣ�� ã�´�.
+poll_obj_t  *udp_open_server( int port );        /// udp 소켓을 서버형태로 open 한다.
+poll_obj_t  *udp_open_client( void );            /// udp 소켓을 클라이언트 형태로 open 한다.
+void         udp_close( poll_obj_t *obj );       /// udp 소켓을 close 한다.
+poll_obj_t  *udp_get_byport( int port );         /// udp 폴객체를 포트번호로 찾는다.
 
-int          udp_write( poll_obj_t *obj, char *host, int port, char *buf, int len ); /// udp ������ ���� ����Ÿ�� �����Ѵ�.
-int          udp_read( poll_obj_t *obj, char *buf, int len );                        /// udp ������ ���� ����Ÿ�� �д´�.
-int  		 udp_echo( poll_obj_t *obj, char *buf, int len );						 /// on_read()���� Ŭ���̾�Ʈ�� �� �����Ѵ�.
+int          udp_write( poll_obj_t *obj, char *host, int port, char *buf, int len ); /// udp 소켓을 통해 데이타를 전송한다.
+int          udp_read( poll_obj_t *obj, char *buf, int len );                        /// udp 소켓을 통해 데이타를 읽는다.
+int  		 udp_echo( poll_obj_t *obj, char *buf, int len );						 /// on_read()에서 클라이언트로 재 전송한다.
 
-int          udp_write_simple( char *host, int port, char *buf, int len );           /// poll ��ü���� udp ������ ���� ����Ÿ�� �����Ѵ�.
-int          udp_read_simple( char *buf, int len );                                  /// poll ��ü���� udp ������ ���� ����Ÿ�� �д´�.
+int          udp_write_simple( char *host, int port, char *buf, int len );           /// poll 객체없이 udp 소켓을 통해 데이타를 전송한다.
+int          udp_read_simple( char *buf, int len );                                  /// poll 객체없이 udp 소켓을 통해 데이타를 읽는다.
 
-int  		 udp_get_remote_host( poll_obj_t *obj, char *host, int *port );          /// udp �������� ���������� ������ ȣ��Ʈ�� ã�´�.
+int  		 udp_get_remote_host( poll_obj_t *obj, char *host, int *port );          /// udp 소켓으로 마지막으로 수신한 호스트를 찾는다.
 
 /// @}
 
diff --git a/app/app-prime-modbus/include/fanet/uds.h b/app/app-prime-modbus/include/fanet/uds.h
index e4b9f90..db4d8b9 100644
--- a/app/app-prime-modbus/include/fanet/uds.h
+++ b/app/app-prime-modbus/include/fanet/uds.h
@@ -1,8 +1,8 @@
 /**    
     @file     uds.h
     @date     2009-03-19
-    @author   ����� freefrug@falinux.com
-    @brief    uds �� ����� ����� ����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    uds 를 사용한 통신을 담당한다.
 
     @modify   
     @todo    
@@ -12,8 +12,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -26,17 +26,17 @@ extern "C" {
 #endif 	
 
 /// @{
-/// @brief  �ܺο��� ����Ҽ� �ִ� ��ü�Լ� ����Ʈ 
+/// @brief  외부에서 사용할수 있는 객체함수 리스트 
 
-poll_obj_t  *uds_open_server( char *fname );       /// uds ������ �������·� open �Ѵ�.
-poll_obj_t  *uds_open_client( char *fname );       /// uds ������ Ŭ���̾�Ʈ ���·� open �Ѵ�.
-void         uds_close( poll_obj_t *obj );         /// uds ������ close �Ѵ�.
-poll_obj_t  *uds_get_byport( char *fname );        /// uds ����ü�� �����̸����� ã�´�.
-int          uds_write( poll_obj_t *obj, char *to, char *buf, int len );  /// uds ������ ���� ����Ÿ�� �����Ѵ�.
-int          uds_read( poll_obj_t *obj, char *buf, int len );             /// uds ������ ���� ����Ÿ�� �д´�.
+poll_obj_t  *uds_open_server( char *fname );       /// uds 소켓을 서버형태로 open 한다.
+poll_obj_t  *uds_open_client( char *fname );       /// uds 소켓을 클라이언트 형태로 open 한다.
+void         uds_close( poll_obj_t *obj );         /// uds 소켓을 close 한다.
+poll_obj_t  *uds_get_byport( char *fname );        /// uds 폴객체를 파일이름으로 찾는다.
+int          uds_write( poll_obj_t *obj, char *to, char *buf, int len );  /// uds 소켓을 통해 데이타를 전송한다.
+int          uds_read( poll_obj_t *obj, char *buf, int len );             /// uds 소켓을 통해 데이타를 읽는다.
 
-int          uds_write_simple( char *to, char *buf, int len );            /// poll ��ü���� uds ������ ���� ����Ÿ�� �����Ѵ�.
-int          uds_read_simple( char *buf, int len );                       /// poll ��ü���� uds ������ ���� ����Ÿ�� �д´�.
+int          uds_write_simple( char *to, char *buf, int len );            /// poll 객체없이 uds 소켓을 통해 데이타를 전송한다.
+int          uds_read_simple( char *buf, int len );                       /// poll 객체없이 uds 소켓을 통해 데이타를 읽는다.
 
 /// @}
 
diff --git a/app/app-prime-modbus/include/fanet/ux_gui.h b/app/app-prime-modbus/include/fanet/ux_gui.h
index 0929f11..def1707 100644
--- a/app/app-prime-modbus/include/fanet/ux_gui.h
+++ b/app/app-prime-modbus/include/fanet/ux_gui.h
@@ -1,6 +1,6 @@
 //------------------------------------------------------------------------------
 /** @file    	ux_gui.h
-    @brief   	GUI ó�� ���̺귯�� 
+    @brief   	GUI 처리 라이브러리 
     @author  	
 *///----------------------------------------------------------------------------
 
@@ -18,21 +18,21 @@ extern "C"
 #endif
 
 
-	int 		ux_gui_lib_init						( int exit_flag );											//  gui ���̺������ �ʱ�ȭ �Ѵ�.
-	int 		ux_gui_screen_map_load				( char *filename );											// ��ũ�� �� ������ �о� ó�� �Ѵ�. 
-	int 		ux_gui_screen_map_set_dc			( dc_t	*dc );												// ��� DC�� �����Ѵ�. 
-	int 		ux_gui_screen_map_draw_front		( void );													// ���� ȭ���� �׸���. 
-	int 		ux_gui_screen_map_put_ie_event		( ie_event_t *event_data  );								// �̺�Ʈ �����͸� �Ѱ� ���� ó�� �Ѵ�. 
-	int 		ux_gui_screen_map_get_area			( void );													// ���� �ε����� ���Ѵ�.
-	int 		ux_gui_screen_map_draw_area_front	( int area_index );											// ���� ������ �׸���. 	
-	int 		ux_gui_screen_map_draw_area_back	( int area_index );											// ��� ������ �׸���.
+	int 		ux_gui_lib_init						( int exit_flag );											//  gui 라이브버리를 초기화 한다.
+	int 		ux_gui_screen_map_load				( char *filename );											// 스크린 맵 파일을 읽어 처리 한다. 
+	int 		ux_gui_screen_map_set_dc			( dc_t	*dc );												// 대상 DC를 설정한다. 
+	int 		ux_gui_screen_map_draw_front		( void );													// 전경 화면을 그린다. 
+	int 		ux_gui_screen_map_put_ie_event		( ie_event_t *event_data  );								// 이벤트 데이터를 넘겨 사전 처리 한다. 
+	int 		ux_gui_screen_map_get_area			( void );													// 영역 인덱스를 구한다.
+	int 		ux_gui_screen_map_draw_area_front	( int area_index );											// 전경 영역을 그린다. 	
+	int 		ux_gui_screen_map_draw_area_back	( int area_index );											// 배경 영역을 그린다.
 	
-	int 		ux_gui_screen_map_mark_button		( int area_index );											// ��ũ�� �� �����ڿ���  ��ư �������� ǥ�� �Ѵ�. 	
+	int 		ux_gui_screen_map_mark_button		( int area_index );											// 스크립 맵 관리자에게  버튼 영역임을 표기 한다. 	
 	
-	int 		ux_gui_screen_map_draw_button_down	( int area_index );											// ��ư�� �ٿ�� ����� �׸���.
-	int 		ux_gui_screen_map_draw_button_up	( int area_index , int msec_delay );						// ��ư�� msec ����� ���� ����� �׸���.
+	int 		ux_gui_screen_map_draw_button_down	( int area_index );											// 버튼이 다운된 모습을 그린다.
+	int 		ux_gui_screen_map_draw_button_up	( int area_index , int msec_delay );						// 버튼이 msec 대기후 업된 모습을 그린다.
 	
-	int 		ux_gui_screen_map_get_mouse_pos		( int *x, int *y );											// ���콺 ��ġ�� ��´�. 
+	int 		ux_gui_screen_map_get_mouse_pos		( int *x, int *y );											// 마우스 위치를 얻는다. 
 
 #ifdef __cplusplus
 }
@@ -40,7 +40,7 @@ extern "C"
 
 //------------------------------------------------------------------------------
 //
-// ���� ���� ����
+// 전역 변수 정의
 //
 //------------------------------------------------------------------------------
 
diff --git a/app/app-prime-modbus/include/global.h b/app/app-prime-modbus/include/global.h
index 717636b..4503c00 100644
--- a/app/app-prime-modbus/include/global.h
+++ b/app/app-prime-modbus/include/global.h
@@ -2,11 +2,11 @@
     @file     global.h
     @date     2010-03-09
     @author   name  ( @falinux.com) FALinux.Co.,Ltd.
-    @brief    ������ ���� ����ü���� �����Ѵ�
+    @brief    다음과 같은 구조체들을 정의한다
 
-              - �����޸� ����ü
-              - ��� ����ü
-              - ȯ������ �̸�
+              - 공유메모리 구조체
+              - 통신 구조체
+              - 환경파일 이름
 
     @modify   
     @todo    
@@ -16,8 +16,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
diff --git a/app/app-prime-modbus/lib/common/dprint.c b/app/app-prime-modbus/lib/common/dprint.c
index f9526b3..3a888fc 100644
--- a/app/app-prime-modbus/lib/common/dprint.c
+++ b/app/app-prime-modbus/lib/common/dprint.c
@@ -1,10 +1,10 @@
 //------------------------------------------------------------------------------
-// ���ϸ�   : dprint.c
-// ������Ʈ : 
-// ��  ��   :
+// 파일명   : dprint.c
+// 프로젝트 : 
+// 설  명   :
 // 
-// �ۼ���   : 
-// ���۱�   : 
+// 작성일   : 
+// 저작권   : 
 //
 //
 //------------------------------------------------------------------------------
@@ -14,14 +14,14 @@
 #include <dprint.h>
 
 //------------------------------------------------------------------------------
-// ���� : ���� ���� 
+// 설명 : 전역 변수 
 //------------------------------------------------------------------------------
 
 static unsigned long 	debug_flag = 0; 
 static char 			prg_mark[128];
 
 //------------------------------------------------------------------------------
-// ���� : ����� �ʱ�ȭ
+// 설명 : 디버그 초기화
 //------------------------------------------------------------------------------
 void dinit( char *prg_name )
 {
@@ -29,7 +29,7 @@ void dinit( char *prg_name )
 }
 
 //------------------------------------------------------------------------------
-// ���� : ����� ������ �����Ѵ�. 
+// 설명 : 디버그 레벨을 설정한다. 
 //------------------------------------------------------------------------------
 void dlevel ( unsigned long level )
 {
@@ -37,7 +37,7 @@ void dlevel ( unsigned long level )
 }
 
 //------------------------------------------------------------------------------
-// ���� : ����� ����Ʈ
+// 설명 : 디버그 프린트
 //------------------------------------------------------------------------------
 int dprintf( const char *fmt, ... )
 {
diff --git a/app/app-prime-modbus/lib/common/famap.c b/app/app-prime-modbus/lib/common/famap.c
index 890f195..7d66d51 100644
--- a/app/app-prime-modbus/lib/common/famap.c
+++ b/app/app-prime-modbus/lib/common/famap.c
@@ -1,11 +1,11 @@
 /**    
     @file     famap.c
     @date     2010/12/1
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    * mmap ��ƿ��Ƽ�̴�.
-              * tmmap.c �� tlist.c �� �ݵ�� �����ؾ��ϴ� �������� �־� �̸� �����ϱ�
-                ���� �ۼ��Ǿ���. (�ܺΰ����� �ʿ��Ҷ� ����ϸ� ����.)
-              * ������ ������ ���� �ۼ��Ǿ� �ִ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    * mmap 유틸리티이다.
+              * tmmap.c 가 tlist.c 를 반드시 포함해야하는 문제점이 있어 이를 보완하기
+                위해 작성되었다. (외부공개가 필요할때 사용하면 좋다.)
+              * 사용법은 파일의 끝에 작성되어 있다.
               
               Ver 0.1.0
               
@@ -13,7 +13,7 @@
     @todo     
     @bug     
     @remark   
-    @warning   tmmap.c  tmmap.h �ʹ� ���� ������� �ʴ´�.
+    @warning   tmmap.c  tmmap.h 와는 같이 사용하지 않는다.
 */
 //----------------------------------------------------------------------------
 #include <stdio.h>
@@ -32,11 +32,11 @@
 #include <famap.h>
 
 //------------------------------------------------------------------------------
-/** @brief   mmap �����Լ�
-    @param   ma           mmap_alloc_t ����ü ������
-    @param   phys_base    �����ּ�
-    @param   size         ũ��
-    @return  ����Ҽ� �ִ� �����ּ�
+/** @brief   mmap 생성함수
+    @param   ma           mmap_alloc_t 구조체 포인터
+    @param   phys_base    물리주소
+    @param   size         크기
+    @return  사용할수 있는 가상주소
 *///----------------------------------------------------------------------------
 void  *fa_mmap_alloc( mmap_alloc_t *ma, unsigned long phys_base, unsigned long size )
 {       
@@ -45,11 +45,11 @@ void  *fa_mmap_alloc( mmap_alloc_t *ma, unsigned long phys_base, unsigned long s
 	void      *mmap_mem;
 	
 	
-	// 4K ���� �ּҷ� �����Ѵ�.
+	// 4K 정렬 주소로 변경한다.
 	base_ofs   = phys_base & (PAGE_SIZE-1);
 	phys_base &= ~(PAGE_SIZE-1);
 	
-	// 4K ������ �޸𸮸� �Ҵ�޴´�.
+	// 4K 단위의 메모리를 할당받는다.
 	size = PAGE_SIZE * ( (size + base_ofs + (PAGE_SIZE-1))/(PAGE_SIZE) );
 	
 	dev_mem = open( "/dev/mem", O_RDWR|O_SYNC );
@@ -59,12 +59,12 @@ void  *fa_mmap_alloc( mmap_alloc_t *ma, unsigned long phys_base, unsigned long s
 		return NULL;
 	}
 
-	// mmap �� �����Ѵ�.
-	mmap_mem = mmap( 0,                                // Ŀ�ο��� �˾Ƽ� �Ҵ��û
-                     size,                             // �Ҵ� ũ��
-                     PROT_READ|PROT_WRITE, MAP_SHARED, // �Ҵ� �Ӽ�
-                     dev_mem,                          // ���� �ڵ�
-                     phys_base );                      // ���� ����� �����ּ�	
+	// mmap 로 맵핑한다.
+	mmap_mem = mmap( 0,                                // 커널에서 알아서 할당요청
+                     size,                             // 할당 크기
+                     PROT_READ|PROT_WRITE, MAP_SHARED, // 할당 속성
+                     dev_mem,                          // 파일 핸들
+                     phys_base );                      // 매핑 대상의 물리주소	
 	
 	
 	if ( !mmap_mem )
@@ -73,7 +73,7 @@ void  *fa_mmap_alloc( mmap_alloc_t *ma, unsigned long phys_base, unsigned long s
 		return NULL;
 	}
 
-	// ��������ü�� ä���.
+	// 관리구조체를 채운다.
 	ma->dev      = dev_mem;
 	ma->phys     = phys_base;
 	ma->size     = size;
@@ -84,8 +84,8 @@ void  *fa_mmap_alloc( mmap_alloc_t *ma, unsigned long phys_base, unsigned long s
 }
 
 //------------------------------------------------------------------------------
-/** @brief   mmap  �����͸� �����Ѵ�.
-    @param   ma    mmap_alloc_t ����ü ������
+/** @brief   mmap  포인터를 해제한다.
+    @param   ma    mmap_alloc_t 구조체 포인터
 *///----------------------------------------------------------------------------
 void  fa_mmap_free( mmap_alloc_t *ma )
 {
@@ -94,7 +94,7 @@ void  fa_mmap_free( mmap_alloc_t *ma )
 }
 
 
-/// ���� ------------------------------------------------------------------------
+/// 샘플 ------------------------------------------------------------------------
 #if 0
 
 #include <famap.h>
diff --git a/app/app-prime-modbus/lib/common/fcntl_lock.c b/app/app-prime-modbus/lib/common/fcntl_lock.c
index 68307b0..f0fb091 100644
--- a/app/app-prime-modbus/lib/common/fcntl_lock.c
+++ b/app/app-prime-modbus/lib/common/fcntl_lock.c
@@ -1,8 +1,8 @@
 /**    
     @file     fcntl_lock.c
     @date     2009/9/30
-    @author   ����â frog@falinux.com  FALinux.Co.,Ltd.
-    @brief    fcntl_lock �Լ� 
+    @author   유영창 frog@falinux.com  FALinux.Co.,Ltd.
+    @brief    fcntl_lock 함수 
               Ver 0.1.0
     @modify   
     @todo     
diff --git a/app/app-prime-modbus/lib/common/i2c-api.c b/app/app-prime-modbus/lib/common/i2c-api.c
index a03cd87..f951ed4 100644
--- a/app/app-prime-modbus/lib/common/i2c-api.c
+++ b/app/app-prime-modbus/lib/common/i2c-api.c
@@ -1,9 +1,9 @@
 //------------------------------------------------------------------------------
 // 
-// �� �� : i2c_api.c 
-// �� �� : I2C DEVICE DRIVE API LIB
+// 파 일 : i2c_api.c 
+// 설 명 : I2C DEVICE DRIVE API LIB
 //
-// �� �� : ����â frog@falinux.com
+// 작 성 : 유영창 frog@falinux.com
 //------------------------------------------------------------------------------
 #include <sys/types.h>
 #include <stdio.h>
@@ -21,22 +21,22 @@
 #include <i2c-api.h>
 
 //------------------------------------------------------------------------------
-// ���� : ��ũ�� ��� 
+// 설명 : 매크로 상수 
 
 #define I2C_MAX_BUS           8
 
 //------------------------------------------------------------------------------
-// ���� : ��������
+// 설명 : 전역변수
 
-static i2c_bus_t ds[I2C_MAX_BUS];  // I2C ����̽� ����̹� ���� ����ü 
-static int       i2c_bus_cnt = 0;     // �ý��ۿ� �����ϴ� I2C ���� �� 
+static i2c_bus_t ds[I2C_MAX_BUS];  // I2C 디바이스 드라이버 관리 구조체 
+static int       i2c_bus_cnt = 0;     // 시스템에 존재하는 I2C 버스 수 
 
 //------------------------------------------------------------------------------
-// ���� : pcmcia ����̽� ����̹� �ֹ�ȣ�� ��´�. 
-// �Ű� : major : �Լ� ���� ������ �ֹ�ȣ�� �����Ѵ�. 
-// ��ȯ : I2C_OK              : major ��ȣ�� �����. 
-//        I2C_NOT_FIND_MAJOR  : major ��ȣ�� �߰����� ���ߴ�.
-// ���� : 
+// 설명 : pcmcia 디바이스 드라이버 주번호를 얻는다. 
+// 매계 : major : 함수 실행 성공시 주번호를 전달한다. 
+// 반환 : I2C_OK              : major 번호를 얻었다. 
+//        I2C_NOT_FIND_MAJOR  : major 번호를 발견하지 못했다.
+// 주의 : 
 //------------------------------------------------------------------------------
 int  i2c_get_major_i2c( int *major )
 {
@@ -67,7 +67,7 @@ int  i2c_get_major_i2c( int *major )
 }
 
 //------------------------------------------------------------------------------
-// ���� : I2C ���� ����̽� ������ ����� ����.
+// 설명 : I2C 버스 디바이스 파일을 만들고 연다.
 //------------------------------------------------------------------------------
 int i2c_make_bus_node( int major, int bn )
 {
@@ -80,7 +80,7 @@ int i2c_make_bus_node( int major, int bn )
 }
 
 //------------------------------------------------------------------------------
-// ���� : I2C API �� �ʱ�ȭ �Ѵ�. 
+// 설명 : I2C API 를 초기화 한다. 
 //------------------------------------------------------------------------------
 int i2c_init( void )
 {
@@ -116,8 +116,8 @@ int i2c_init( void )
 
 
 //------------------------------------------------------------------------------
-// ���� : ���� �����ϴ� I2C BUS ���� ��´�. 
-// ��ȯ : ���� �� 
+// 설명 : 현재 존재하는 I2C BUS 수를 얻는다. 
+// 반환 : 소켓 수 
 //------------------------------------------------------------------------------
 int i2c_get_bus_count( void )
 {
@@ -125,7 +125,7 @@ int i2c_get_bus_count( void )
 }
 
 //------------------------------------------------------------------------------
-// ���� : I2C �������� �д´�. 
+// 설명 : I2C 버스에서 읽는다. 
 //------------------------------------------------------------------------------
 int i2c_read_data( access_data_t * access_data )
 {
@@ -141,7 +141,7 @@ int i2c_read_data( access_data_t * access_data )
 }
 
 //------------------------------------------------------------------------------
-// ���� : I2C ������ �����͸� �� �ִ´�.
+// 설명 : I2C 버스에 데이터를 써 넣는다.
 //------------------------------------------------------------------------------
 int i2c_write_data( access_data_t * access_data )
 {
diff --git a/app/app-prime-modbus/lib/common/mtd-nand.c b/app/app-prime-modbus/lib/common/mtd-nand.c
index 7220278..8213a22 100644
--- a/app/app-prime-modbus/lib/common/mtd-nand.c
+++ b/app/app-prime-modbus/lib/common/mtd-nand.c
@@ -1,20 +1,20 @@
 /**    
     @file     mtd-nand.c
     @date     2010/05/27
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    mtd�� ���� nand �÷��ø� �����Ѵ�
-              2011/03/25 ����� ezboot 1.x �� ������ �߰�
-              2011/04/13 ����� �������� ���� ������ ����
-              2011/06/13 ����� �������� ���� ������ ����
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    mtd를 통해 nand 플래시를 제어한다
+              2011/03/25 오재경 ezboot 1.x 를 지원을 추가
+              2011/04/13 오재경 배드블럭에 대한 에러를 수정
+              2011/06/13 오재경 배드블럭에 대한 에러를 수정
     @todo     
-    		MTD_NANDECC_OFF �ɼǵ� ������ ��������
+    		MTD_NANDECC_OFF 옵션도 있으니 구현하자
     @bug     
     @remark  
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -38,9 +38,9 @@
 char desc_mtd_nand[] = "falinux mtd-nand ver 0.3.4";
 
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand �����Լ�
-    @param   fname  mtd ��������̸�
-    @return  mtdnand_t ����ü ������
+/** @brief   mtd-nand 생성함수
+    @param   fname  mtd 노드파일이름
+    @return  mtdnand_t 구조체 포인터
 *///----------------------------------------------------------------------------
 mtdnand_t *mtdnand_create( char *fname )
 {       
@@ -59,7 +59,7 @@ mtdnand_t *mtdnand_create( char *fname )
 		return NULL;
 	}
 
-	// �����÷����� ������ ��´�.
+	// 난드플래시의 정보를 얻는다.
 	if ( 0 == ioctl( mtd->fd, MEMGETINFO, &mtd->info) )
 	{
 		printf( " mtd=%s \n", mtd->node_name );
@@ -80,8 +80,8 @@ mtdnand_t *mtdnand_create( char *fname )
 	return mtd;
 }
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand �����Լ�
-    @param   mtd   mtdnand_t ����ü ������
+/** @brief   mtd-nand 해제함수
+    @param   mtd   mtdnand_t 구조체 포인터
 *///----------------------------------------------------------------------------
 void  mtdnand_free( mtdnand_t *mtd )
 {
@@ -92,11 +92,11 @@ void  mtdnand_free( mtdnand_t *mtd )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand �� ������ ��ġ�� �̵��Ѵ�.
-    @param   mtd     mtdnand_t ����ü ������
-    @param   offset  �̵�ũ��
-    @param   origin  ������ġ
-    @return  ������������ ��ġ, �����ϰ�� ���� 
+/** @brief   mtd-nand 의 엑세스 위치를 이동한다.
+    @param   mtd     mtdnand_t 구조체 포인터
+    @param   offset  이동크기
+    @param   origin  기준위치
+    @return  파일포인터의 위치, 에러일경우 음수 
 *///----------------------------------------------------------------------------
 int  mtdnand_seek( mtdnand_t *mtd, int offset, int origin )
 {
@@ -126,11 +126,11 @@ int  mtdnand_seek( mtdnand_t *mtd, int offset, int origin )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand �� oob ������ �д´�.
-    @param   mtd    mtdnand_t ����ü ������
-    @param   buf    ����Ÿ�� ���� ����
-    @param   count  ������ ũ��
-    @return  ����0
+/** @brief   mtd-nand 의 oob 영역을 읽는다.
+    @param   mtd    mtdnand_t 구조체 포인터
+    @param   buf    데이타를 담을 버퍼
+    @param   count  버퍼의 크기
+    @return  성공0
 *///----------------------------------------------------------------------------
 int  mtdnand_read_oob( mtdnand_t *mtd, unsigned char *buf, int count )
 {
@@ -150,9 +150,9 @@ int  mtdnand_read_oob( mtdnand_t *mtd, unsigned char *buf, int count )
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand �� oob ������ �д´�.
-    @param   mtd     mtdnand_t ����ü ������
-    @return  -1 : badblock   0:�������
+/** @brief   mtd-nand 의 oob 영역을 읽는다.
+    @param   mtd     mtdnand_t 구조체 포인터
+    @return  -1 : badblock   0:정상블럭
 *///----------------------------------------------------------------------------
 int  mtdnand_is_bad( mtdnand_t *mtd )
 {
@@ -179,9 +179,9 @@ int  mtdnand_is_bad( mtdnand_t *mtd )
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand �� �Ѻ����� �����.
-    @param   mtd     mtdnand_t ����ü ������
-    @return  ����0
+/** @brief   mtd-nand 의 한블럭을 지운다.
+    @param   mtd     mtdnand_t 구조체 포인터
+    @return  성공0
 *///----------------------------------------------------------------------------
 int  mtdnand_erase( mtdnand_t *mtd )
 {
@@ -199,12 +199,12 @@ int  mtdnand_erase( mtdnand_t *mtd )
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand ���� ����Ÿ�� �д´�.
-    @param   mtd    mtdnand_t ����ü ������
-    @param   buf    ����Ÿ�� ���� ����
-    @param   count  ������ ũ��
-    @return  ���� ����Ÿ�� ũ��
-    @remark  �������� ������ 
+/** @brief   mtd-nand 에서 데이타를 읽는다.
+    @param   mtd    mtdnand_t 구조체 포인터
+    @param   buf    데이타를 담을 버퍼
+    @param   count  버퍼의 크기
+    @return  읽은 데이타의 크기
+    @remark  배드블럭을 만나면 
 *///----------------------------------------------------------------------------
 int  mtdnand_read( mtdnand_t *mtd, unsigned char *buf, int count )
 {
@@ -223,12 +223,12 @@ int  mtdnand_read( mtdnand_t *mtd, unsigned char *buf, int count )
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand ���� ����Ÿ�� �д´�.
-    @param   mtd    mtdnand_t ����ü ������
-    @param   buf    ����Ÿ�� ���� ����
-    @param   count  ������ ũ��
-    @return  ���� ����Ÿ�� ũ��
-    @remark  �������� ������ ������������ �ڵ����� �����Ѵ�.
+/** @brief   mtd-nand 에서 데이타를 읽는다.
+    @param   mtd    mtdnand_t 구조체 포인터
+    @param   buf    데이타를 담을 버퍼
+    @param   count  버퍼의 크기
+    @return  읽은 데이타의 크기
+    @remark  배드블럭을 만나면 다음블럭으로 자동으로 점프한다.
 *///----------------------------------------------------------------------------
 int  mtdnand_read_skip_bad( mtdnand_t *mtd, unsigned char *buf, int count )
 {
@@ -239,13 +239,13 @@ int  mtdnand_read_skip_bad( mtdnand_t *mtd, unsigned char *buf, int count )
 	bad_cnt = 0;
 	remain  = count;
 
-	// ������ ������ �����Ѵ�.
+	// 페이지 단위로 정렬한다.
 	mtd->pos = ALIGN_SIZE( mtd->pos, mtd->info.writesize );
 	mtdnand_seek( mtd, mtd->pos, SEEK_SET );
 	
 	while( 0 < remain )
 	{
-		// ������ ������
+		// 블럭의 시작인가?
 		if ( 0 == (mtd->pos % esize) )
 		{
 			while( mtdnand_is_bad( mtd ) )
@@ -262,10 +262,10 @@ int  mtdnand_read_skip_bad( mtdnand_t *mtd, unsigned char *buf, int count )
 			}
 		}	
 
-		// ���� ������ �����Ѵ�.
+		// 읽을 갯수를 결정한다.
 		rdcnt = (remain > esize) ? esize : remain;
 	
-		// ����Ÿ �б�
+		// 데이타 읽기
 		rtn = read( mtd->fd, buf, rdcnt );
 		if ( 0 > rtn )
 		{
@@ -286,14 +286,14 @@ int  mtdnand_read_skip_bad( mtdnand_t *mtd, unsigned char *buf, int count )
 
 
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand �� ����Ÿ�� ����.
-    @param   mtd    mtdnand_t ����ü ������
-    @param   buf    ����Ÿ ����
-    @param   count  ������ ũ��
-    @return  �� ����Ÿ�� ũ��
-    @remark  ����Ÿ�� ũ��� writesize ũ���� ����� ��������.
-             erase �� �ڵ����� �̷������ erasesize ����� ��ġ�� ��� �����.
-                          �������� ������ ������������ �ѱ��.
+/** @brief   mtd-nand 에 데이타를 쓴다.
+    @param   mtd    mtdnand_t 구조체 포인터
+    @param   buf    데이타 버퍼
+    @param   count  버퍼의 크기
+    @return  쓴 데이타의 크기
+    @remark  데이타의 크기는 writesize 크기의 배수만 쓰여진다.
+             erase 는 자동으로 이루어지며 erasesize 배수의 위치일 경우 지운다.
+                          배드블럭이 있으면 다음블럭으로 넘긴다.
 *///----------------------------------------------------------------------------
 int  mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count )
 {
@@ -306,7 +306,7 @@ int  mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count )
 	esize    = mtd->info.erasesize;
 	wsize    = mtd->info.writesize;
 
-	// ������ ��ġ�� �׻� writesize�� ����̾�� �Ѵ�.
+	// 쓰기의 위치는 항상 writesize의 배수이어야 한다.
 	if ( 0 != ( mtd->pos % wsize ) )
 	{
 		mtdnand_seek( mtd, (mtd->pos/wsize)*wsize, SEEK_SET );
@@ -314,7 +314,7 @@ int  mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count )
 	
 	while( 0 < remain )
 	{	
-		// ������ ������ �ϴ°�?
+		// 블럭을 지워야 하는가?
 		if ( 0 == (mtd->pos % esize) )
 		{
 			if ( mtdnand_is_bad( mtd ) )
@@ -324,7 +324,7 @@ int  mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count )
 				continue;
 			}
 
-			// ������ ������  �ִٸ� �������̴�(?)
+			// 지워서 에러가  있다면 배드블럭이다(?)
 			// mtdnand_erase( mtd );
 			if ( 0 != mtdnand_erase( mtd ) )
 			{
@@ -334,17 +334,17 @@ int  mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count )
 			}
 		}
 		
-		// writesize ��ŭ ����.
+		// writesize 만큼 쓴다.
 		wrcnt = (remain >= wsize) ? wsize : remain;
 		
-		// writesize ���� �۴ٸ� �������� 0xff �� ä���.
+		// writesize 보다 작다면 나머지를 0xff 로 채운다.
 		memcpy( wbuf, getp, wrcnt );
 		if ( wrcnt < wsize )
 		{
 			memset( wbuf+wrcnt, 0xff, wsize-wrcnt );	
 		}
 		
-		// ����� �׻� writesize �̾�� �Ѵ�.
+		// 쓰기는 항상 writesize 이어야 한다.
 		wrcnt = write( mtd->fd, wbuf, wsize );	
 		if ( wrcnt < 0 )
 		{
@@ -364,8 +364,8 @@ int  mtdnand_write( mtdnand_t *mtd, unsigned char *buf, int count )
 
 
 //------------------------------------------------------------------------------
-/** @brief   mtd-nand �� ��� �����.
-    @param   mtd     mtdnand_t ����ü ������
+/** @brief   mtd-nand 를 모두 지운다.
+    @param   mtd     mtdnand_t 구조체 포인터
 *///----------------------------------------------------------------------------
 void  mtdnand_erase_all( mtdnand_t *mtd )
 {
@@ -380,7 +380,7 @@ void  mtdnand_erase_all( mtdnand_t *mtd )
 	sprintf( str, " erase all mtd=%s size=%dMB\n", mtd->node_name, mtd->info.size/(1024*1024) );
 	progress_msg( str );
 	
-	// mtd �������� �����Ѵ�.
+	// mtd 어프셋을 설정한다.
 	mtdnand_seek( mtd, 0, SEEK_SET );
 	
 	remain = mtd->info.size;
diff --git a/app/app-prime-modbus/lib/common/open_map.c b/app/app-prime-modbus/lib/common/open_map.c
index 7858a61..f2936aa 100644
--- a/app/app-prime-modbus/lib/common/open_map.c
+++ b/app/app-prime-modbus/lib/common/open_map.c
@@ -1,8 +1,8 @@
 /**    
     @file     open_map.c
     @date     2014/01/20
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    * mmap ��ƿ��Ƽ�̴�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    * mmap 유틸리티이다.
               
               Ver 0.2.0
               
@@ -32,15 +32,15 @@
 #define  PAGE_SIZE  (1024*4)
 #endif
 
-/// mmap �� ���� ���� ���� ����ü
+/// mmap 를 위한 개별 관리 구조체
 typedef struct {
 	
-	int            dev;         // /dev/mem �����ڵ�
-	unsigned long  phys;        // �����ּ�
-	unsigned long  size;        // ũ��
-	int            base_ofs;    // ���̽� �ּҰ� 4K ������ ���� �ʾ����� ���
+	int            dev;         // /dev/mem 파일핸들
+	unsigned long  phys;        // 물리주소
+	unsigned long  size;        // 크기
+	int            base_ofs;    // 베이스 주소가 4K 정렬이 되지 않았을때 사용
 
-	void          *virt;        // �Ҵ���� �޸�������
+	void          *virt;        // 할당받은 메모리포인터
 	
 } mmap_alloc_t;
 
@@ -50,8 +50,8 @@ static mmap_alloc_t *list_ptr[MAP_LIST_COUNT];
 static int map_list_init = 0;
 
 //------------------------------------------------------------------------------
-/** @brief   mmap_alloc_t �Ҵ��Լ�
-    @return  mmap_alloc ������
+/** @brief   mmap_alloc_t 할당함수
+    @return  mmap_alloc 포인터
 *///----------------------------------------------------------------------------
 static mmap_alloc_t *get_map_struct( void )
 {       
@@ -78,7 +78,7 @@ static mmap_alloc_t *get_map_struct( void )
 }
 //------------------------------------------------------------------------------
 /** @brief   
-    @return  mmap_alloc ������
+    @return  mmap_alloc 포인터
 *///----------------------------------------------------------------------------
 static mmap_alloc_t *put_map_struct( void *virt )
 {       
@@ -103,11 +103,11 @@ static mmap_alloc_t *put_map_struct( void *virt )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief   mmap �����Լ�
-    @param   ma           mmap_alloc_t ����ü ������
-    @param   phys_base    �����ּ�
-    @param   size         ũ��
-    @return  ����Ҽ� �ִ� �����ּ�
+/** @brief   mmap 생성함수
+    @param   ma           mmap_alloc_t 구조체 포인터
+    @param   phys_base    물리주소
+    @param   size         크기
+    @return  사용할수 있는 가상주소
 *///----------------------------------------------------------------------------
 void  *open_mmap_alloc( unsigned long phys_base, unsigned long size )
 {       
@@ -117,11 +117,11 @@ void  *open_mmap_alloc( unsigned long phys_base, unsigned long size )
 	int        base_ofs;
 	void      *mmap_mem;
 	
-	// 4K ���� �ּҷ� �����Ѵ�.
+	// 4K 정렬 주소로 변경한다.
 	base_ofs   = phys_base & (PAGE_SIZE-1);
 	phys_base &= ~(PAGE_SIZE-1);
 	
-	// 4K ������ �޸𸮸� �Ҵ�޴´�.
+	// 4K 단위의 메모리를 할당받는다.
 	size = PAGE_SIZE * ( (size + base_ofs + (PAGE_SIZE-1))/(PAGE_SIZE) );
 	
 	dev_mem = open( "/dev/mem", O_RDWR|O_SYNC );
@@ -131,12 +131,12 @@ void  *open_mmap_alloc( unsigned long phys_base, unsigned long size )
 		return NULL;
 	}
 
-	// mmap �� �����Ѵ�.
-	mmap_mem = mmap( 0,                                // Ŀ�ο��� �˾Ƽ� �Ҵ��û
-                     size,                             // �Ҵ� ũ��
-                     PROT_READ|PROT_WRITE, MAP_SHARED, // �Ҵ� �Ӽ�
-                     dev_mem,                          // ���� �ڵ�
-                     phys_base );                      // ���� ����� �����ּ�	
+	// mmap 로 맵핑한다.
+	mmap_mem = mmap( 0,                                // 커널에서 알아서 할당요청
+                     size,                             // 할당 크기
+                     PROT_READ|PROT_WRITE, MAP_SHARED, // 할당 속성
+                     dev_mem,                          // 파일 핸들
+                     phys_base );                      // 매핑 대상의 물리주소	
 	
 	
 	if ( !mmap_mem )
@@ -145,7 +145,7 @@ void  *open_mmap_alloc( unsigned long phys_base, unsigned long size )
 		return NULL;
 	}
 
-	// ��������ü�� ä���.
+	// 관리구조체를 채운다.
 	ma = get_map_struct();
 	if ( ma )
 	{
@@ -166,8 +166,8 @@ void  *open_mmap_alloc( unsigned long phys_base, unsigned long size )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   mmap  �����͸� �����Ѵ�.
-    @param   ma    mmap_alloc_t ����ü ������
+/** @brief   mmap  포인터를 해제한다.
+    @param   ma    mmap_alloc_t 구조체 포인터
 *///----------------------------------------------------------------------------
 void  open_mmap_free( void *io_virt )
 {
@@ -183,7 +183,7 @@ void  open_mmap_free( void *io_virt )
 }
 
 
-/// ���� ------------------------------------------------------------------------
+/// 샘플 ------------------------------------------------------------------------
 #if 0
 
 static volatile unsigned int *io_port;
@@ -200,14 +200,14 @@ int  main( int argc, char **argv )
 	
 	phys = strtoul( argv[1], NULL, 0 );
 	
-	// �Ҵ� --------------
+	// 할당 --------------
 	io_port = (unsigned int *)open_mmap_alloc( phys, 0x100 );
 
-	// �б�	
+	// 읽기	
 	data = *io_port;
 	printf( "read  addr=%08x   data=%08x\n", phys, data );
 	
-	// ���� --------------
+	// 해제 --------------
 	open_mmap_free( io_port );
 	
 	return 0;	
diff --git a/app/app-prime-modbus/lib/common/sharemem.c b/app/app-prime-modbus/lib/common/sharemem.c
index 9e45069..71bb0a7 100644
--- a/app/app-prime-modbus/lib/common/sharemem.c
+++ b/app/app-prime-modbus/lib/common/sharemem.c
@@ -1,9 +1,9 @@
 /**    
     @file     sharemem.c
     @date     2006
-    @author   ����â frog@falinux.com  FALinux.Co.,Ltd.
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    �����޸𸮸� �����ϰ� �����Ѵ�.
+    @author   유영창 frog@falinux.com  FALinux.Co.,Ltd.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    공유메모리를 생성하고 해제한다.
 
     @modify   
     @todo    
@@ -14,11 +14,11 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -46,19 +46,19 @@
 
 
 
-/// �����޸� ������ ���� ����ü
+/// 공유메모리 관리를 위한 구조체
 typedef struct
 {
-	int	key;            // ����ڰ� �ٶ󺸴� �ĺ���
-    int	id;             // �����޸� �ڵ�
-	char	data[0];    // ����ڰ� �������ϴ� �޸�
+	int	key;            // 사용자가 바라보는 식별자
+    int	id;             // 공유메모리 핸들
+	char	data[0];    // 사용자가 엑세스하는 메모리
 	
 } share_t;
 
 
 //------------------------------------------------------------------------------
-/** @brief    �����޸𸮸� �����Ѵ�.
-    @param    key   �����޸𸮸� �����ϴ� ����ũ��
+/** @brief    공유메모리를 삭제한다.
+    @param    key   공유메모리를 지정하는 유니크값
     @remark
 *///----------------------------------------------------------------------------
 void	share_delete( int key )
@@ -68,21 +68,21 @@ void	share_delete( int key )
 	int	   id = -1;
 	int    size;
 	
-	// shm ���������� ����.
+	// shm 정보파일을 연다.
 	fp = fopen( "/proc/sysvipc/shm", "r" );
 	if ( NULL == fp) 	return;
 	
-	if ( NULL != fgets( line, sizeof(line), fp )){              // ù ��° ������ �����ϱ� ���� fgets() ����
+	if ( NULL != fgets( line, sizeof(line), fp )){              // 첫 번째 라인은 무시하기 위해 fgets() 실행
 	    while(1){
 	        int tmp_key, tmp_id, tmp_perm, tmp_size;
 
 	        if ( fgets( line, sizeof(line), fp ) == NULL ) break;
 
-	        // Ű���� ũ�⸦ �о�´�.
+	        // 키값과 크기를 읽어온다.
 	        if ( 4 == sscanf( line, "%d %d %d %d", &tmp_key, &tmp_id, &tmp_perm, &tmp_size) ){
 	            // printf( "SHM KEY = %d ID = %d SIZE=%d\n", tmp_key, tmp_id, tmp_size );
 	            if ( tmp_key == key){
-	                id = tmp_id;    // �ش��ϴ� id �� ã�Ҵ�
+	                id = tmp_id;    // 해당하는 id 를 찾았다
 	                size = tmp_size;
 	                break;
 	            }
@@ -90,20 +90,20 @@ void	share_delete( int key )
 	    }
 	}
 
-	// ������ �ݴ´�.
+	// 파일을 닫는다.
 	fclose( fp );
 
-	// id �� ã�Ҵٸ� �����޸𸮸� �����Ѵ�.
+	// id 를 찾았다면 공유메모리를 삭제한다.
 	if( 0 <= id){
 		id = shmget( key, size, 0666 | IPC_CREAT);
 		shmctl( id, IPC_RMID, NULL ); 
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief    ���� �޸𸮸� �����Ѵ�.
-    @param    key   �����޸𸮸� �����ϴ� ����ũ��
-    @param    size  ������ �����޸� ũ��
-    @return   �Ҵ���� �����޸�
+/** @brief    공유 메모리를 생성한다.
+    @param    key   공유메모리를 지정하는 유니크값
+    @param    size  생성할 공유메모리 크기
+    @return   할당받은 공유메모리
     @remark
 *///----------------------------------------------------------------------------
 void	*share_create( int key, unsigned int size )
@@ -114,28 +114,28 @@ void	*share_create( int key, unsigned int size )
 	
 //	printf( "share_create key = %d\n" , key );
 	
-	// ���� �޸𸮸� �����Ͽ� �ڵ��� ��ų� �̹� ������ �ش� �ڵ��� ���� �´�.
+	// 공유 메모리를 생성하여 핸들을 얻거나 이미 있으면 해당 핸들을 가져 온다.
 	id = shmget( key, sizeof(share_t) + size, 0666 | IPC_CREAT );
 //	printf("shmget id = %d\n", id )
 
 	if( id < 0 ) 
 	{
-		// ���࿡ ������ �ٸ� ũ��� �����Ǿ� �ִٸ�
-		// �������� ��� ���� ó�� �ϰ� �� ������ ��û�Ѵ�.
+		// 만약에 기존에 다른 크기로 생성되어 있다면
+		// 이전것을 모두 삭제 처리 하고 재 생성을 요청한다.
 //		printf("Exit Share Memory %08X\n", key );
 		share_delete( key );
 		
-		// �ٽ� �Ҵ�޴´�.
+		// 다시 할당받는다.
 		id = shmget( key, size + sizeof(share_t), 0666 | IPC_CREAT | IPC_EXCL );
 		
 		if( id < 0 ) return NULL;
 	}
 
-	// �����޸��� ���� �ּҸ� ���´�.
+	// 공유메모리의 선두 주소를 얻어온다.
 	ptr = shmat( id, NULL, 0 ); 
 	if( ptr == NULL ) return NULL;
 	
-	// �����޸��� ������ �����Ѵ�.
+	// 공유메모리의 정보를 저장한다.
 	share = (share_t *) ptr;
 	share->key = key;
 	share->id  = id;
@@ -143,8 +143,8 @@ void	*share_create( int key, unsigned int size )
 	return share->data;
 }
 //------------------------------------------------------------------------------
-/** @brief    ���� �޸𸮸� �����Ѵ�.
-    @param    data  share_create() �Լ��� ���� �޸� ������
+/** @brief    공유 메모리를 해제한다.
+    @param    data  share_create() 함수로 받은 메모리 포인터
     @remark
 *///----------------------------------------------------------------------------
 void	share_free( void *data )
@@ -155,10 +155,10 @@ void	share_free( void *data )
 	share = (share_t *)( data - sizeof(share_t) );
 	id    = share->id;
 	
-	// ���� �޸𸮸� ��巹�� �������� �и��Ѵ�.
+	// 공유 메모리를 어드레스 공간에서 분리한다.
 	shmdt( share ); 
 	
-	// ���� �޸𸮸� ����ϴ� ���μ����� ���ٸ� �����ϵ��� �����Ѵ�.
+	// 공유 메모리를 사용하는 프로세스가 없다면 삭제하도록 설정한다.
 	shmctl( id, IPC_RMID, NULL ); 
 }
 
@@ -166,8 +166,8 @@ void	share_free( void *data )
 /*
 
 //-------------------------------------------------------------------------------
-// ���� :
-// ���� :
+// 설명 :
+// 주의 :
 //-------------------------------------------------------------------------------
 int	get_usrmsg( char *buf, int size )
 {
@@ -184,8 +184,8 @@ int	get_usrmsg( char *buf, int size )
 
 
 //-------------------------------------------------------------------------------
-// ���� : help
-// ���� :
+// 설명 : help
+// 주의 :
 //-------------------------------------------------------------------------------
 void	help( void )
 {
@@ -197,7 +197,7 @@ void	help( void )
 	);
 }
 
-// �޼����� ������ �ޱ����� ����ü
+// 메세지를 보내고 받기위한 구조체
 typedef struct 
 {
 	unsigned int	seq;
@@ -206,8 +206,8 @@ typedef struct
 } msg_t;
 
 //------------------------------------------------------------------------------
-// ���� : main
-// ���� :
+// 설명 : main
+// 주의 :
 //------------------------------------------------------------------------------
 int     main( int argc, char **argv )
 {
@@ -226,7 +226,7 @@ int     main( int argc, char **argv )
 	key  = strtoul( argv[2], NULL, 0 );	
 	size = strtoul( argv[3], NULL, 0 );	
 	
-	// �����޸𸮸� �����Ѵ�.
+	// 공유메모리를 생성한다.
 	pmsg = (msg_t *)share_create( key, sizeof(msg_t) + size );
 	
 	if ( NULL == pmsg )
@@ -235,7 +235,7 @@ int     main( int argc, char **argv )
 		return -1;
 	}
 	
-	// ����Ÿ�� �����޸𸮿� ����.
+	// 데이타를 공유메모리에 쓴다.
 	if ( dir == 'w' )
 	{
 		pmsg->seq = 0;
@@ -246,7 +246,7 @@ int     main( int argc, char **argv )
 		
 		pmsg->seq ++;
 	}
-	// ����Ÿ�� �����޸𸮿��� �д´�.
+	// 데이타를 공유메모리에서 읽는다.
 	else
 	{
 		unsigned int seq = 0;
@@ -265,7 +265,7 @@ int     main( int argc, char **argv )
 		}
 	}
 	
-	// �����޸𸮸� �����Ѵ�.
+	// 공유메모리를 해제한다.
 	share_free( pmsg );
 
 	printf( " shm test end\n" );
diff --git a/app/app-prime-modbus/lib/common/strparsing.c b/app/app-prime-modbus/lib/common/strparsing.c
index 814e00c..ec9224d 100644
--- a/app/app-prime-modbus/lib/common/strparsing.c
+++ b/app/app-prime-modbus/lib/common/strparsing.c
@@ -1,20 +1,20 @@
 /**
     @file   strparsing.c
     @date   2009-06-01
-    @author ��漮 jwjwmx@gmail.com
+    @author 장길석 jwjwmx@gmail.com
     @brief  Ver 0.0.4
-            ���ڿ��� �м��Ͽ� tstrlist�� �����Ѵ�.
+            문자열을 분석하여 tstrlist로 생성한다.
     @todo
     @bug
     @remark
     @warning
-        - ���۱�    �������̸�����(��)
-        - �ܺΰ��� ����
-    @section ModifyInfo ���� ����
+        - 저작권    에프에이리눅스(주)
+        - 외부공개 금지
+    @section ModifyInfo 수정 정보
         - 2009-07-06
-            -# Doxygen�� ���� �ּ� ����
+            -# Doxygen을 위한 주석 수정
         - 2009-06-01
-            -# �⺻ ����� �߰�
+            -# 기본 기능을 추가
 */
 //------------------------------------------------------------------------------
 #include <stdio.h>
@@ -29,18 +29,18 @@
 #define MAX_BUFFSIZE        1024
 #define MAX_IDENTIFY        128
 
-int     strp_error_code;                                                        // �����ڵ�
+int     strp_error_code;                                                        // 에러코드
 
 static char buff_parse[1024];
 static char buff_identify[1024];
 
 static char *read_string( tstrlist *strplist, char *str_identify)
-//����: �������� ���ڿ� �����͸� ���Ѵ�.
-//�μ�: tstrlist *strplist  : tstrlist ��ü ������
-//      char *str_identify  : ������ ���ڿ�
-//��ȯ: ���ǰ� �������� ���ڿ� ������
-//����: ���ǰ� �����ڰ� ���ٸ� NULL�� ��ȯ
-//      ��ȯ�� ���ڿ� �����ͷ� �޸� �Ҹ��� �ؼ��� �� �ȴ�.
+//설명: 구별자의 문자열 데이터를 구한다.
+//인수: tstrlist *strplist  : tstrlist 객체 포인터
+//      char *str_identify  : 구별자 문자열
+//반환: 섹션과 구별자의 문자열 데이터
+//주의: 섹션과 구별자가 없다면 NULL을 반환
+//      반환된 문자열 포인터로 메모리 소멸을 해서는 안 된다.
 {
     int     index;
     
@@ -51,37 +51,37 @@ static char *read_string( tstrlist *strplist, char *str_identify)
 }
                                                       
 static char *get_inner( char *str, char branch)
-// ����: " �Ǵ� ' ���� ���� ���ڿ� ���� ���Ѵ�.
-// ����: �ο� ��ȣ �ȿ��� ���� ���� �̻��� ��� ���ڸ� �����Ѵ�.
-// ��ȯ: �μ��� ���� ���ڿ� �����Ϳ��� ���� ó���� ���� ��ġ
+// 설명: " 또는 ' 으로 묶인 문자열 값을 구한다.
+// 참고: 인용 부호 안에는 공백 문자 이상의 모든 문자를 포함한다.
+// 반환: 인수로 받은 문자열 포인터에서 다음 처리할 문자 위치
 {                   
-    char   *pbuff;                                                              // ���� ����� ���� ������
-    char    ch_data;                                                            // �˻� ��� ����
+    char   *pbuff;                                                              // 버퍼 사용을 위한 포인터
+    char    ch_data;                                                            // 검색 대상 문자
 
     pbuff   = buff_parse;
     
     while( '\0' != *str)
     {
         ch_data = *str++;
-        if ( branch == ch_data)                                                 // ������ ���ڸ� �����ٸ�
+        if ( branch == ch_data)                                                 // 구별자 문자를 만났다면
         {  
             break;                                                              // break
         }
         else
         {
-           *pbuff++ = ch_data;                                                  // ���ڿ� ����
+           *pbuff++ = ch_data;                                                  // 문자열 복사
         }
     }
-   *pbuff = '\0';                                                               // ������ ���� �Ϸ�
+   *pbuff = '\0';                                                               // 데이터 구성 완료
     return str;
 }
 
 static char *get_string( char *str)
-// ����: ���ڿ� ���̳� '=' ���ڸ� ������ ���� ������� ���ڿ��� ���Ѵ�.
-// ��ȯ: �μ��� ���� ���ڿ� �����Ϳ��� ���� ó���� ���� ��ġ
+// 설명: 문자열 끝이나 '=' 문자를 만나기 까지 공백없는 문자열을 구한다.
+// 반환: 인수로 받은 문자열 포인터에서 다음 처리할 문자 위치
 {
-    char   *pbuff;                                                              // ���� ����� ���� ������
-    char    ch_data;                                                            // �˻� ��� ����         
+    char   *pbuff;                                                              // 버퍼 사용을 위한 포인터
+    char    ch_data;                                                            // 검색 대상 문자         
 
     pbuff   = buff_parse;
     
@@ -97,15 +97,15 @@ static char *get_string( char *str)
         {
            *pbuff++ = ch_data;
         }
-        str++;                                                                  // �� �Լ� ȣ�� �Ŀ� '='���ڰ� �ִ����� Ȯ���ؾ� �ϹǷ�, ���⼭ ������ ����
+        str++;                                                                  // 이 함수 호출 후에 '='문자가 있는지를 확인해야 하므로, 여기서 포인터 증가
     }
    *pbuff = '\0';
     return str;
 }
 
 static char *get_parse( char *str)
-// ����: �μ��� ���� ���ڿ��� �ο��ȣ�� �ο��ȣ�� ���� ���ڿ��� ���� �Ľ��Ѵ�.
-// ��ȯ: �μ��� ���� ���ڿ� �����Ϳ��� ���� ó���� ���� ��ġ
+// 설명: 인수로 받은 문자열을 인용부호와 인용부호가 없는 문자열에 따라 파싱한다.
+// 반환: 인수로 받은 문자열 포인터에서 다음 처리할 문자 위치
 {
     buff_parse[0] = '\0';
 
@@ -113,22 +113,22 @@ static char *get_parse( char *str)
     {
         switch( *str++)
         {                     
-            case '\''   :                                                       // �ο��ȣ ' ���� ������ ���ڿ��� ���Ѵ�.
+            case '\''   :                                                       // 인용부호 ' 문자 사이의 문자열을 구한다.
             {
                 str = get_inner( str, '\'');
                 return str;
             }
-            case '"'    :                                                       // �ο��ȣ " ���� ������ ���ڿ��� ���Ѵ�.
+            case '"'    :                                                       // 인용부호 " 문자 사이의 문자열을 구한다.
             {
                 str = get_inner( str, '\"');
                 return str;
             }
-            case ' '    :                                                       // �����̳�
-            case '='    :                                                       // �и��� �̸� ���� ���ڸ� ��� �˻�
+            case ' '    :                                                       // 공백이나
+            case '='    :                                                       // 분리자 이면 다음 문자를 계속 검색
                     break;
             default     :
             {
-                str = get_string( str-1);                                       // �����̳� �и��ڸ� ���� �������� ���ڿ��� ���Ѵ�.    
+                str = get_string( str-1);                                       // 공백이나 분리자를 만날 때까지의 문자열을 구한다.    
                 return str;
             }
         }
@@ -137,25 +137,25 @@ static char *get_parse( char *str)
 }
 
 static int is_identify( char *str)
-// ����: ��� ���� ���ڿ��� ������������ Ȯ���Ѵ�.
-// ����: ���ڿ� �ڿ� �����̳� �и��ڸ� �ִٸ� �����ڷ� ����
-// ��ȯ: ������ ����
+// 설명: 방금 구한 문자열이 구별자인지를 확인한다.
+// 참고: 문자열 뒤에 공백이나 분리자만 있다면 구별자로 인정
+// 반환: 구별자 여부
 {
     while( '\0' != *str)
     {
         switch( *str++)
         {
-            case ' '    :   break;                                              // ���� �����̸� ���� ���ڸ� ��� �˻�
-            case '='    :   return 1;                                           // '=' ���ڰ� ������ OK
-            default     :   return 0;                                           // �����̳� '=' ���ڰ� �ƴϸ� FALSE
+            case ' '    :   break;                                              // 공백 문자이면 다음 문자를 계속 검색
+            case '='    :   return 1;                                           // '=' 문자가 있으면 OK
+            default     :   return 0;                                           // 공백이나 '=' 문자가 아니면 FALSE
         }
     }        
     return 0;
 }
 
 static void parse_string( tstrlist *lst_parse, char *str)
-// ����: �����ڿ� �����ڿ� ���� �����͸� ���Ѵ�.
-// ��ȯ: ������ ����
+// 설명: 구별자와 구별자에 대한 데이터를 구한다.
+// 반환: 구별자 개수
 {
     char   *pdata;
     
@@ -170,7 +170,7 @@ static void parse_string( tstrlist *lst_parse, char *str)
         {
             continue;
         }
-        memcpy( buff_identify, buff_parse, strlen( buff_parse)+1);              // NULL���� �����ϱ� ���� +1
+        memcpy( buff_identify, buff_parse, strlen( buff_parse)+1);              // NULL까지 포함하기 위해 +1
         
         str     = get_parse( str);
         pdata   = ( char *)malloc( strlen( buff_parse)+1);
@@ -181,7 +181,7 @@ static void parse_string( tstrlist *lst_parse, char *str)
         }
         else
         {
-            memcpy( pdata, buff_parse, strlen( buff_parse)+1);                  // NULL���� �����ϱ� ���� +1
+            memcpy( pdata, buff_parse, strlen( buff_parse)+1);                  // NULL까지 포함하기 위해 +1
             tstrlist_add_object( lst_parse, buff_identify, pdata);
         }            
     }
@@ -189,115 +189,115 @@ static void parse_string( tstrlist *lst_parse, char *str)
 
 int strp_read_bool( tstrlist *strplist, char *str_identify, int default_value)
 /**
-    @brief  �����ڰ� �����ϴ� Boolean �����͸� ���Ѵ�.
-    @param  strplist : �Ľ� �ڷḦ ������ �ִ� tstlist
-    @param  str_identify : ������ ���ڿ�
-    @param  default_value : ���� ���ٸ� ��� ��ȯ�� �⺻��
-    @warning    �������� ���ڿ��� 0 �̸� FALSE�� ��ȯ�ϸ�\n
-                �ܴ̿� ������ TRUE�� ��ȯ�Ѵ�.\n
-                ��, �����ڰ� ������ �ִ� ���ڿ� ������\n
-                '0' ���� �ƴ����� ���θ� ��ȯ�Ѵ�.
+    @brief  구별자가 지정하는 Boolean 데이터를 구한다.
+    @param  strplist : 파싱 자료를 가지고 있는 tstlist
+    @param  str_identify : 구별자 문자열
+    @param  default_value : 값이 없다면 대신 반환될 기본값
+    @warning    구별자의 문자열이 0 이면 FALSE로 반환하며\n
+                이외는 무조건 TRUE로 반환한다.\n
+                즉, 구별자가 가지고 있는 문자열 정보가\n
+                '0' 인지 아닌지의 여부를 반환한다.
 */
 {
     char   *data;
     int     int_data;
 
-    data    = read_string( strplist, str_identify);                             // ���� �����ڷ� �����͸� ���Ѵ�.    
-    if      ( NULL == data)                             return default_value;   // ã�� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == strlen( data) )                      return default_value;   // ���ڿ� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == sscanf( data, "%d", &int_data))      return default_value;   // ������ ��ȯ�� ���� ���ٸ� �⺻���� ��ȯ
-    else                                                return 0 != int_data;   // ���� ���� 0�̸� FALSE�� ��ȯ�Ѵ�.
+    data    = read_string( strplist, str_identify);                             // 먼저 구별자로 데이터를 구한다.    
+    if      ( NULL == data)                             return default_value;   // 찾는 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == strlen( data) )                      return default_value;   // 문자열 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == sscanf( data, "%d", &int_data))      return default_value;   // 정수로 변환된 값이 없다면 기본값을 반환
+    else                                                return 0 != int_data;   // 정수 값이 0이면 FALSE로 반환한다.
 }
 
 double strp_read_real( tstrlist *strplist, char *str_identify, double default_value)
 /**
-    @brief  �����ڰ� �����ϴ� ���� �����͸� ���Ѵ�.
-    @param  strplist : �Ľ� �ڷḦ ������ �ִ� tstlist
-    @param  str_identify : ������ ���ڿ�
-    @param  default_value : ���� ���ٸ� ��� ��ȯ�� �⺻��
+    @brief  구별자가 지정하는 정수 데이터를 구한다.
+    @param  strplist : 파싱 자료를 가지고 있는 tstlist
+    @param  str_identify : 구별자 문자열
+    @param  default_value : 값이 없다면 대신 반환될 기본값
     @return
-            - �����ڿ� �ش��ϴ� �Ǽ� ��
-            - ������ �����̳� �����ڿ� ���� �Ǽ� ���� ���ٸ� �⺻���� ��ȯ
+            - 구별자에 해당하는 실수 값
+            - 저정한 섹션이나 구별자에 대한 실수 값이 없다면 기본값을 반환
 */
 {
     char       *data;
     double      float_data;
 
 
-    data    = read_string( strplist, str_identify);                             // ���� �����ڷ� �����͸� ���Ѵ�.    
-    if      ( NULL == data)                             return default_value;   // ã�� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == strlen( data) )                      return default_value;   // ���ڿ� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == sscanf( data, "%lf", &float_data))   return default_value;   // �Ǽ��� ��ȯ�� ���� ���ٸ� �⺻���� ��ȯ
-    else                                                return float_data;      // �Ǽ� ���� ��ȯ�Ѵ�.
+    data    = read_string( strplist, str_identify);                             // 먼저 구별자로 데이터를 구한다.    
+    if      ( NULL == data)                             return default_value;   // 찾는 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == strlen( data) )                      return default_value;   // 문자열 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == sscanf( data, "%lf", &float_data))   return default_value;   // 실수로 변환된 값이 없다면 기본값을 반환
+    else                                                return float_data;      // 실수 값을 반환한다.
 }
 
 int strp_read_integer( tstrlist *strplist, char *str_identify, int default_value)
 /**
-    @brief  �����ڰ� �����ϴ� ���� �����͸� ���Ѵ�.
-    @param  strplist : �Ľ� �ڷḦ ������ �ִ� tstlist
-    @param  str_identify : ������ ���ڿ�
-    @param  default_value : ���� ���ٸ� ��� ��ȯ�� �⺻��
+    @brief  구별자가 지정하는 정수 데이터를 구한다.
+    @param  strplist : 파싱 자료를 가지고 있는 tstlist
+    @param  str_identify : 구별자 문자열
+    @param  default_value : 값이 없다면 대신 반환될 기본값
     @return
-            - �����ڿ� �ش��ϴ� ���� ��
-            - ������ �����̳� �����ڿ� ���� ���� ���� ���ٸ� �⺻���� ��ȯ
+            - 구별자에 해당하는 정수 값
+            - 저정한 섹션이나 구별자에 대한 정수 값이 없다면 기본값을 반환
 */
 {
     char   *data;
     int     int_data;
 
-    data    = read_string( strplist, str_identify);                             // ���� �����ڷ� �����͸� ���Ѵ�.    
-    if      ( NULL == data)                             return default_value;   // ã���� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == strlen( data) )                      return default_value;   // ���ڿ� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == sscanf( data, "%d", &int_data))      return default_value;   // ������ ��ȯ�� ���� ���ٸ� �⺻���� ��ȯ
-    else                                                return int_data;        // �������� ��ȯ�Ѵ�.
+    data    = read_string( strplist, str_identify);                             // 먼저 구별자로 데이터를 구한다.    
+    if      ( NULL == data)                             return default_value;   // 찾아진 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == strlen( data) )                      return default_value;   // 문자열 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == sscanf( data, "%d", &int_data))      return default_value;   // 정수로 변환된 값이 없다면 기본값을 반환
+    else                                                return int_data;        // 정수값을 반환한다.
 }
 
 char *strp_read_string( tstrlist *strplist, char *str_identify, char *default_value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� ���ڿ� �����͸� ���Ѵ�.
-    @param  strplist : �Ľ� �ڷḦ ������ �ִ� tstlist
-    @param  str_identify : ������ ���ڿ�
-    @param  default_value : ���� ���ٸ� ��� ��ȯ�� �⺻��
+    @brief  섹션과 구별자가 지정하는 문자열 데이터를 구한다.
+    @param  strplist : 파싱 자료를 가지고 있는 tstlist
+    @param  str_identify : 구별자 문자열
+    @param  default_value : 값이 없다면 대신 반환될 기본값
     @return\n
-        �������� ���ڿ� ����\n
-        ������ �����̳� �����ڿ� ���� ���ڿ��� ���ٸ� �⺻���� ��ȯ
-    @warning ���� ��ȯ ���� ���ڿ��� �Ҹ� ���Ѽ��� �� �ȴ�!!
+        구별자의 문자열 정보\n
+        저정한 섹션이나 구별자에 대한 문자열이 없다면 기본값을 반환
+    @warning 절대 반환 받은 문자열을 소멸 시켜서는 안 된다!!
 */
 {
     char    *data;
 
-    data    = read_string( strplist, str_identify);                             // ���� �����ڷ� �����͸� ���Ѵ�.    
-    if ( NULL == data)                                  return default_value;   // ã���� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == strlen( data) )                      return default_value;   // ���ڿ� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
+    data    = read_string( strplist, str_identify);                             // 먼저 구별자로 데이터를 구한다.    
+    if ( NULL == data)                                  return default_value;   // 찾아진 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == strlen( data) )                      return default_value;   // 문자열 데이터가 없다면 기본값을 반환한다.
     else                                                return data;
 }
 
 char  *strp_error_string( void)
 /**
-    @brief  strp_error_code�� ���� ���� ���� ���ڿ��� ��ȯ
-    @return ���� �ڵ忡 ���� ���� ���� ���ڿ� ������
-    @warning ���� ��ȯ ���� ���ڿ��� �Ҹ� ���Ѽ��� �� �ȴ�!!
+    @brief  strp_error_code에 대한 에러 설명 문자열을 반환
+    @return 에러 코드에 대한 에러 설명 문자열 포인터
+    @warning 절대 반환 받은 문자열을 소멸 시켜서는 안 된다!!
 */
 {
-   char *error_string[] ={ "���� ����",                                         //  INIERR_NONE
-                           "�޸� ����",                                       //  INIERR_OUT_OF_MEMORY
-                           "���� �̸� ���� ����",                               //  INIERR_FILENAME_FAIL
-                           "�ڷ� ����",                                         //  INIERR_NO_DATA
-                           "IniFile ����",                                      //  INIERR_NO_FILE
-                           "IniFile�� ���� �� ����",                            //  INIERR_ACCESS_FAIL
-                           "���� ����Ʈ ���� ����",                             //  INIERR_CREATE_SECTION_FAIL
-                           "������ ���� ����",                                  //  INIERR_CREATE_IDENTIFY_FAIL
-                           "�μ��� ��ü�� NULL"                                 //  INIERR_NULL_POINTER
+   char *error_string[] ={ "에러 없음",                                         //  INIERR_NONE
+                           "메모리 부족",                                       //  INIERR_OUT_OF_MEMORY
+                           "파일 이름 지정 오류",                               //  INIERR_FILENAME_FAIL
+                           "자료 없음",                                         //  INIERR_NO_DATA
+                           "IniFile 없음",                                      //  INIERR_NO_FILE
+                           "IniFile을 읽을 수 없음",                            //  INIERR_ACCESS_FAIL
+                           "섹션 리스트 생성 실패",                             //  INIERR_CREATE_SECTION_FAIL
+                           "구별자 생성 실패",                                  //  INIERR_CREATE_IDENTIFY_FAIL
+                           "인수의 객체가 NULL"                                 //  INIERR_NULL_POINTER
                         };
    return( error_string[strp_error_code]);
 }
 
 int strp_print_error( char *remark)
 /**
-    @brief  ini_error_code�� ���� ���� ���� ���ڿ��� ȭ�鿡 ���
-    @param  remark : ���� ���� ���ڿ� ���� ÷���Ͽ� ����� ���ڿ�
+    @brief  ini_error_code에 대한 에러 설명 문자열을 화면에 출력
+    @param  remark : 에러 설명 문자열 끝에 첨부하여 출력할 문자열
     @return\n
-        ���� �ڵ�
+        에러 코드
 */
 {
    printf( "[str parsing error:%d]%s %s\n", strp_error_code, strp_error_string(), remark);
@@ -306,8 +306,8 @@ int strp_print_error( char *remark)
 
 void strp_free( tstrlist *strplist)
 /**
-    @brief  strparsing ��ü�� �Ҹ��Ѵ�.
-    @param  strplist : strparsing ��ü
+    @brief  strparsing 객체를 소멸한다.
+    @param  strplist : strparsing 객체
 */
 {
     int     ndx;
@@ -315,28 +315,28 @@ void strp_free( tstrlist *strplist)
     
     for ( ndx = 0; ndx < tstrlist_getcount( strplist); ndx++)
     {
-        pdata   = ( char *)tstrlist_get_object( strplist, ndx);                 // ��ü�� ����� ���ڿ� ����
+        pdata   = ( char *)tstrlist_get_object( strplist, ndx);                 // 객체로 등록한 문자열 제거
         free( pdata);
     }
-    tstrlist_free( strplist);                                                   // ����Ʈ �Ҹ�
+    tstrlist_free( strplist);                                                   // 리스트 소멸
 }
 tstrlist *strp_parsing( char *data)
 /**
-    @brief  data ���ڿ��� �м��ؼ� �����ڿ� �����ͷ� ������ ������ ����� �����.\n
-    @param  data : ���ڿ� ������
+    @brief  data 문자열을 분석해서 구별자와 데이터로 구성된 아이템 목록을 만든다.\n
+    @param  data : 문자열 데이터
     @return\n
-        �����ڿ� �����ͷ� ������ �������� tstrlist *\n
-        �б⿡ �����ߴٸ� NULL�� ��ȯ
+        구별자와 데이터로 구성된 아이템의 tstrlist *\n
+        읽기에 실패했다면 NULL을 반환
 */
 {
     tstrlist   *lst_parse;
 
-    strp_error_code  = STRPERR_NONE;                                            //  �����ڵ�: ���� ����
+    strp_error_code  = STRPERR_NONE;                                            //  에러코드: 에러 없음
 
-    lst_parse = tstrlist_create();                                              //  tstrlist ��ü ����
-    if ( NULL == lst_parse)                                                     //  tstrlist ��ü�� �������� ���ߴٸ�
+    lst_parse = tstrlist_create();                                              //  tstrlist 객체 생성
+    if ( NULL == lst_parse)                                                     //  tstrlist 객체를 생성하지 못했다면
     {
-        strp_error_code  = STRPERR_CREATE_LIST_FAIL;                            //  �����ڵ�: ��Ʈ ���� ����Ʈ ����
+        strp_error_code  = STRPERR_CREATE_LIST_FAIL;                            //  에러코드: 루트 섹션 리스트 생성
         return  NULL;
     }
     parse_string( lst_parse, data);
diff --git a/app/app-prime-modbus/lib/common/tgpio.c b/app/app-prime-modbus/lib/common/tgpio.c
index 0ae9f0d..cf1dc52 100644
--- a/app/app-prime-modbus/lib/common/tgpio.c
+++ b/app/app-prime-modbus/lib/common/tgpio.c
@@ -1,23 +1,23 @@
 /**    
     @file     tgpio.c
     @date     2010/1/4
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    gpio �� ����̹����� mmap�� �̿��Ͽ� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    gpio 를 드라이버없이 mmap를 이용하여 제어한다.
 
-              Ver 0.6.0    am3874 ����, GP0�׽�Ʈ �Ϸ� 
+              Ver 0.6.0    am3874 포함, GP0테스트 완료 
 
-              Ver 0.5.0    s5pv210 ����, �׽�Ʈ �Ϸ� 
-                           pull-up, pull-dn ��������
+              Ver 0.5.0    s5pv210 포함, 테스트 완료 
+                           pull-up, pull-dn 설정변경
                            
-              Ver 0.4.0    tmmap.c �� ������� �ʰ� famap.c �� ����ϴ°����� ����
-              Ver 0.3.0    ixp420  �׽�Ʈ �Ϸ�
-              Ver 0.2.1    s3c6410, pxa270 �׽�Ʈ �Ϸ�
-              Ver 0.2.0    pxa270  �Ϸ�
-                           pxa255  �Ϸ�(�׽�Ʈ �ȵ�)
-              Ver 0.1.0    s3c6410 �Ϸ�
-                           s3c2440 �Ϸ�(�׽�Ʈ �ȵ�)
+              Ver 0.4.0    tmmap.c 를 사용하지 않고 famap.c 를 사용하는것으로 수정
+              Ver 0.3.0    ixp420  테스트 완료
+              Ver 0.2.1    s3c6410, pxa270 테스트 완료
+              Ver 0.2.0    pxa270  완료
+                           pxa255  완료(테스트 안됨)
+              Ver 0.1.0    s3c6410 완료
+                           s3c2440 완료(테스트 안됨)
     @modify   
-    @todo     ������ ���� MCU �鵵 �����Ͽ��� �Ѵ�.
+    @todo     다음과 같은 MCU 들도 지원하여야 한다.
                 ..
     @bug     
     @remark   
@@ -42,7 +42,7 @@
 static const char desc[] = "tgpio ver 0.7.0";
 
 
-/// am3874 gpio ����
+/// am3874 gpio 관리
 static am3x_gpio_register_t  am3874_gpio_register[MCU_AM3874_GPIO_GRP_CNT] = {
 	[0] = { .phys = MCU_AM3874_GPIO0_PHYS,     
 			//            0             		5
@@ -67,7 +67,7 @@ static am3x_gpio_register_t  am3874_gpio_register[MCU_AM3874_GPIO_GRP_CNT] = {
 		  },
 };
 
-/// s5pv210 gpio �׷� �ε���
+/// s5pv210 gpio 그룹 인덱스
 static int s5pv210_reg_idx_table[] = {
 //  A   B   C   D   E   F   G   H   I   J
     0,  1,  2,  3,  4,  5,  6,  7,  8,  9,	// GPA0 ... GPJ0
@@ -77,7 +77,7 @@ static int s5pv210_reg_idx_table[] = {
    -1, -1, -1, -1, -1, -1, -1, -1, -1, 26   // GPA4 ... GPJ4
 };
 
-/// s5pv210 gpio �������� �����°� ����
+/// s5pv210 gpio 레지스터 어프셋과 정보
 static s3c_gpio_register_t  s5pv210_gpio_register[27] = {
 	
 	[0]  = {/* GPA0 */	.gpcnt = 8,	.con_mask_bitcnt = 4,	.ofs_con = 0x0, 	.ofs_dat = 0x4,  	.ofs_pup = 0x8,		},
@@ -109,7 +109,7 @@ static s3c_gpio_register_t  s5pv210_gpio_register[27] = {
 	[26] = {/* GPJ4 */	.gpcnt = 5,	.con_mask_bitcnt = 4,	.ofs_con = 0x2c0,	.ofs_dat = 0x2c4,	.ofs_pup = 0x2c8,	},
 };
 
-/// s3c6410 �������� �����°� ����
+/// s3c6410 레지스터 어프셋과 정보
 static s3c_gpio_register_t  s3c6410_gpio_register['q'-'a'+1] = {
 	
 	['a'-'a'] = {
@@ -234,7 +234,7 @@ static s3c_gpio_register_t  s3c6410_gpio_register['q'-'a'+1] = {
 		    }
 };
  
-/// s3c2440 �������� �����°� ���� 
+/// s3c2440 레지스터 어프셋과 정보 
 static s3c_gpio_register_t  s3c2440_gpio_register['j'-'a'+1] = {
 	
 	['a'-'a'] = {
@@ -309,7 +309,7 @@ static s3c_gpio_register_t  s3c2440_gpio_register['j'-'a'+1] = {
 		    }
 };
 
-/// pxa ���� ����
+/// pxa 관련 정보
 static pxa_gpio_info_t pxa270_info = {
 	.gpcnt = 128,
 }; 
@@ -319,11 +319,11 @@ static pxa_gpio_info_t pxa255_info = {
 }; 
 
 static mcu_gpio_fops_t  mcu_gpio;
-//static mmap_alloc_t     map_gpio;       /// mmap ���� ����ü (0.7.0 ���� ����)
+//static mmap_alloc_t     map_gpio;       /// mmap 관리 구조체 (0.7.0 부터 삭제)
 
 //------------------------------------------------------------------------------
-/** @brief   gpio fops ������ ���
-    @return  gpio fops ������
+/** @brief   gpio fops 포인터 얻기
+    @return  gpio fops 포인터
 *///----------------------------------------------------------------------------
 mcu_gpio_fops_t *get_gpio_fops( void )
 {
@@ -331,17 +331,17 @@ mcu_gpio_fops_t *get_gpio_fops( void )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   gpio ���õ� �������͸� mmap �� ���� �Ҵٹ޴´�.
-    @param   phys_base  �����ּ�
-    @param   phys_size  �����ּ� ũ��
-    @return  �Ҵ���� ���� �޸� �ּ�
+/** @brief   gpio 관련된 레지스터를 mmap 을 통해 할다받는다.
+    @param   phys_base  물리주소
+    @param   phys_size  물리주소 크기
+    @return  할당받은 가상 메모리 주소
 *///----------------------------------------------------------------------------
 static unsigned long malloc_gpio( unsigned long phys_base, unsigned long phys_size )
 {
 	return (unsigned long)fa_mmap_alloc( &mcu_gpio.map_info, phys_base, phys_size );
 }
 //------------------------------------------------------------------------------
-/** @brief   �⺻���� gpio close() �Լ�
+/** @brief   기본적인 gpio close() 함수
 
 *///----------------------------------------------------------------------------
 static void  def_gpio_close( void )
@@ -354,9 +354,9 @@ static void  def_gpio_close( void )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   am3x gpio ��ȣ�� ��Ȯ���� Ȯ���Ѵ�.
+/** @brief   am3x gpio 번호가 정확한지 확인한다.
     @param   grp      0~3
-    @param   gp_nr    gp_nr   ��ȣ
+    @param   gp_nr    gp_nr   번호
 *///----------------------------------------------------------------------------
 static int am3x_valid_gpio( char grp, int gp_nr )
 {
@@ -376,9 +376,9 @@ static int am3x_valid_gpio( char grp, int gp_nr )
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   am3x gpio �Է� ��Ʈ �ּҸ� ��´�.
+/** @brief   am3x gpio 입력 포트 주소를 얻는다.
     @param   grp      0~3
-    @param   gp_nr    gp_nr   ��ȣ
+    @param   gp_nr    gp_nr   번호
 *///----------------------------------------------------------------------------
 static unsigned long am3x_get_input_port ( char grp, int gp_nr )
 {
@@ -389,9 +389,9 @@ static unsigned long am3x_get_input_port ( char grp, int gp_nr )
 	return gp->mmap_base + MCU_AM3874_GPIO_DATAIN;
 }
 //------------------------------------------------------------------------------
-/** @brief   am3x gpio ��� ��Ʈ �ּҸ� ��´�.
+/** @brief   am3x gpio 출력 포트 주소를 얻는다.
     @param   grp      0~3
-    @param   gp_nr    gp_nr   ��ȣ
+    @param   gp_nr    gp_nr   번호
 *///----------------------------------------------------------------------------
 static unsigned long am3x_get_output_port( char grp, int gp_nr )
 {
@@ -402,9 +402,9 @@ static unsigned long am3x_get_output_port( char grp, int gp_nr )
 	return gp->mmap_base + MCU_AM3874_GPIO_DATAOUT;
 }
 //------------------------------------------------------------------------------
-/** @brief   am3x gpio �Է� ����
+/** @brief   am3x gpio 입력 설정
     @param   grp      0~3
-    @param   gp_nr    gp_nr   ��ȣ
+    @param   gp_nr    gp_nr   번호
     @param   pull_up  pull_up 
 *///----------------------------------------------------------------------------
 static void  am3x_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
@@ -437,10 +437,10 @@ static void  am3x_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 	AM3874_GPIO_OE( gp->mmap_base ) |= (1<<gp_nr); // dir input
 }
 //------------------------------------------------------------------------------
-/** @brief   am3x gpio ��� ����
+/** @brief   am3x gpio 출력 설정
     @param   grp     0~3
-    @param   gp_nr   gpio ��ȣ
-    @param   gp_val  gpio �ʱ� ��°�
+    @param   gp_nr   gpio 번호
+    @param   gp_val  gpio 초기 출력값
 *///----------------------------------------------------------------------------
 static void  am3x_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 {
@@ -476,9 +476,9 @@ static void  am3x_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 	AM3874_PIN_CTRL(mcu_gpio.mmap_base,pin) = rval;    
 }
 //------------------------------------------------------------------------------
-/** @brief   am3x gpio �Է�
+/** @brief   am3x gpio 입력
     @param   grp     0~3
-    @param   gp_nr   gpio ��ȣ
+    @param   gp_nr   gpio 번호
 *///----------------------------------------------------------------------------
 static int  am3x_gpio_input( char grp, int gp_nr  )
 {
@@ -492,10 +492,10 @@ static int  am3x_gpio_input( char grp, int gp_nr  )
 	return ( rval & (1<<gp_nr) ) ? 1:0;
 }
 //------------------------------------------------------------------------------
-/** @brief   pxa gpio ���
-    @param   grp       ������� �ʴ´�.
-    @param   gp_nr     gpio ��ȣ
-    @param   gpio_val  gpio �ʱ� ��°�
+/** @brief   pxa gpio 출력
+    @param   grp       사용하지 않는다.
+    @param   gp_nr     gpio 번호
+    @param   gpio_val  gpio 초기 출력값
     
 *///----------------------------------------------------------------------------
 static void  am3x_gpio_output( char grp, int gp_nr, int gp_val  )
@@ -514,7 +514,7 @@ static void  am3x_gpio_output( char grp, int gp_nr, int gp_val  )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   �⺻���� gpio close() �Լ�
+/** @brief   기본적인 gpio close() 함수
 
 *///----------------------------------------------------------------------------
 static void  am3x_gpio_close( void )
@@ -535,8 +535,8 @@ static void  am3x_gpio_close( void )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   am3x gpio  �ʱ�ȭ
-    @param   mcu_nr  mcu ��ȣ
+/** @brief   am3x gpio  초기화
+    @param   mcu_nr  mcu 번호
 *///----------------------------------------------------------------------------
 static void  am3x_gpio_open( int  mcu_nr )
 {
@@ -567,7 +567,7 @@ static void  am3x_gpio_open( int  mcu_nr )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   s3c gpio ��ȣ�� �˻��Ͽ� �ش��ϴ� �����͸� �����ش�.
+/** @brief   s3c gpio 번호를 검사하여 해당하는 포이터를 돌려준다.
 	
 *///----------------------------------------------------------------------------
 static s3c_gpio_register_t *s3c_find_reg( char grp, int gp_nr )
@@ -622,10 +622,10 @@ static s3c_gpio_register_t *s3c_find_reg( char grp, int gp_nr )
 	return reg;
 }
 //------------------------------------------------------------------------------
-/** @brief   s3c gpio �Է� ����
-    @param   grp      gpio    �׷칮�� 'a' ... 'z'
-    @param   gp_nr    gp_nr   ��ȣ
-    @param   pull_up  pull_up ���� Ǯ�� Ȱ��ȭ ����
+/** @brief   s3c gpio 입력 설정
+    @param   grp      gpio    그룹문자 'a' ... 'z'
+    @param   gp_nr    gp_nr   번호
+    @param   pull_up  pull_up 내부 풀업 활성화 유무
 *///----------------------------------------------------------------------------
 static void  s3c_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 {
@@ -641,7 +641,7 @@ static void  s3c_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 	reg_con = (unsigned long *)(mcu_gpio.mmap_base + reg->ofs_con );
 	reg_pup = (unsigned long *)(mcu_gpio.mmap_base + reg->ofs_pup );
 
-	// pull-up ����
+	// pull-up 설정
 	{
 		rval  = *(reg_pup);
 		rval &= ~(0x3<<(gp_nr*2));  
@@ -656,7 +656,7 @@ static void  s3c_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 		*(reg_pup) = rval;
     }
 	
-	// �Է� ����
+	// 입력 설정
 	{
 		unsigned long  and_mask, orr_mask;
 		
@@ -679,10 +679,10 @@ static void  s3c_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   s3c gpio ��� ����
-    @param   grp     gpio �׷�
-    @param   gp_nr   gpio ��ȣ
-    @param   gp_val  gpio �ʱ� ��°�
+/** @brief   s3c gpio 출력 설정
+    @param   grp     gpio 그룹
+    @param   gp_nr   gpio 번호
+    @param   gp_val  gpio 초기 출력값
 *///----------------------------------------------------------------------------
 static void  s3c_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 {
@@ -700,14 +700,14 @@ static void  s3c_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 	reg_dat = (unsigned long *)(mcu_gpio.mmap_base + reg->ofs_dat );
 	reg_pup = (unsigned long *)(mcu_gpio.mmap_base + reg->ofs_pup );
 
-	// pull-up ����
+	// pull-up 설정
 	{
 		rval  = *(reg_pup);
 		rval &= ~(0x3<<(gp_nr*2));  // pull-up disable
 		*(reg_pup) = rval;
     }
 
-	// ���
+	// 출력
 	{
 		rval = *(reg_dat);
 		rval &= ~(1<<gp_nr);
@@ -715,7 +715,7 @@ static void  s3c_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 		*(reg_dat) = rval;
 	}
 
-	// ��� ����
+	// 출력 설정
 	{
 		unsigned long  and_mask, orr_mask;
 		
@@ -738,9 +738,9 @@ static void  s3c_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   s3c gpio �Է�
-    @param   grp     gpio �׷�
-    @param   gp_nr   gpio ��ȣ
+/** @brief   s3c gpio 입력
+    @param   grp     gpio 그룹
+    @param   gp_nr   gpio 번호
 *///----------------------------------------------------------------------------
 static int  s3c_gpio_input( char grp, int gp_nr  )
 {
@@ -756,10 +756,10 @@ static int  s3c_gpio_input( char grp, int gp_nr  )
 	return *(reg_dat) & (1<< gp_nr) ? 1 : 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   s3c gpio ���
-    @param   grp  gpio �׷�
-    @param   gp_nr   gpio ��ȣ
-    @param   gpio_val  gpio �ʱ� ��°�
+/** @brief   s3c gpio 출력
+    @param   grp  gpio 그룹
+    @param   gp_nr   gpio 번호
+    @param   gpio_val  gpio 초기 출력값
     
 *///----------------------------------------------------------------------------
 static void  s3c_gpio_output( char grp, int gp_nr, int gp_val  )
@@ -774,16 +774,16 @@ static void  s3c_gpio_output( char grp, int gp_nr, int gp_val  )
 
 	reg_dat = (unsigned long *)(mcu_gpio.mmap_base + reg->ofs_dat );
 
-	// ���
+	// 출력
 	rval = *(reg_dat);
 	rval &= ~(1<<gp_nr);
 	rval |=  (gp_val&0x1) << gp_nr;
 	*(reg_dat) = rval;
 }
 //------------------------------------------------------------------------------
-/** @brief   s3c, s5p gpio ��� ��Ʈ �ּҸ� ��´�.
+/** @brief   s3c, s5p gpio 출력 포트 주소를 얻는다.
     @param   grp      0~3
-    @param   gp_nr    gp_nr   ��ȣ
+    @param   gp_nr    gp_nr   번호
 *///----------------------------------------------------------------------------
 static unsigned long s3c_get_data_port( char grp, int gp_nr )
 {
@@ -797,8 +797,8 @@ static unsigned long s3c_get_data_port( char grp, int gp_nr )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   s3c gpio  �ʱ�ȭ
-    @param   mcu_nr  mcu ��ȣ
+/** @brief   s3c gpio  초기화
+    @param   mcu_nr  mcu 번호
 *///----------------------------------------------------------------------------
 static void  s3c_gpio_open( int  mcu_nr )
 {
@@ -851,10 +851,10 @@ static void  s3c_gpio_open( int  mcu_nr )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   pxa gpio �Է� ����
-    @param   grp      gpio    ������� �ʴ´�.
-    @param   gp_nr    gp_nr   ��ȣ
-    @param   pull_up  pull_up ������� �ʴ´�.
+/** @brief   pxa gpio 입력 설정
+    @param   grp      gpio    사용하지 않는다.
+    @param   gp_nr    gp_nr   번호
+    @param   pull_up  pull_up 사용하지 않는다.
 *///----------------------------------------------------------------------------
 static void  pxa_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 {
@@ -870,17 +870,17 @@ static void  pxa_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 		return;
 	}
 	
-	// gpio in/out ����
+	// gpio in/out 설정
 	PXA_GPIO_INOUT( gp_nr );
 
-	// �Է� ����
+	// 입력 설정
 	PXA_DIR_IN( gp_nr );
 }
 //------------------------------------------------------------------------------
-/** @brief   pxa gpio ��� ����
-    @param   grp     ������� �ʴ´�.
-    @param   gp_nr   gpio ��ȣ
-    @param   gp_val  gpio �ʱ� ��°�
+/** @brief   pxa gpio 출력 설정
+    @param   grp     사용하지 않는다.
+    @param   gp_nr   gpio 번호
+    @param   gp_val  gpio 초기 출력값
 *///----------------------------------------------------------------------------
 static void  pxa_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 {
@@ -895,10 +895,10 @@ static void  pxa_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 		return;
 	}
 
-	// gpio in/out ����
+	// gpio in/out 설정
 	PXA_GPIO_INOUT( gp_nr );
 	
-	// ���
+	// 출력
 	if (gp_val & 0x1)
 	{
 		PXA_OUT_SET(gp_nr);
@@ -908,13 +908,13 @@ static void  pxa_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 		PXA_OUT_CLR(gp_nr);
 	}
 
-	// ��� ����
+	// 출력 설정
 	PXA_DIR_OUT( gp_nr );
 }
 //------------------------------------------------------------------------------
-/** @brief   pxa gpio �Է�
-    @param   grp     ������� �ʴ´�.
-    @param   gp_nr   gpio ��ȣ
+/** @brief   pxa gpio 입력
+    @param   grp     사용하지 않는다.
+    @param   gp_nr   gpio 번호
 *///----------------------------------------------------------------------------
 static int  pxa_gpio_input( char grp, int gp_nr  )
 {
@@ -932,10 +932,10 @@ static int  pxa_gpio_input( char grp, int gp_nr  )
 	return PXA_IN_DAT( gp_nr ) ? 1:0;
 }
 //------------------------------------------------------------------------------
-/** @brief   pxa gpio ���
-    @param   grp       ������� �ʴ´�.
-    @param   gp_nr     gpio ��ȣ
-    @param   gpio_val  gpio �ʱ� ��°�
+/** @brief   pxa gpio 출력
+    @param   grp       사용하지 않는다.
+    @param   gp_nr     gpio 번호
+    @param   gpio_val  gpio 초기 출력값
     
 *///----------------------------------------------------------------------------
 static void  pxa_gpio_output( char grp, int gp_nr, int gp_val  )
@@ -961,8 +961,8 @@ static void  pxa_gpio_output( char grp, int gp_nr, int gp_val  )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   pxa gpio  �ʱ�ȭ
-    @param   mcu_nr  mcu ��ȣ
+/** @brief   pxa gpio  초기화
+    @param   mcu_nr  mcu 번호
 *///----------------------------------------------------------------------------
 static void  pxa_gpio_open( int  mcu_nr )
 {
@@ -991,10 +991,10 @@ static void  pxa_gpio_open( int  mcu_nr )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   ixp gpio �Է� ����
-    @param   grp      gpio    ������� �ʴ´�.
-    @param   gp_nr    gp_nr   ��ȣ
-    @param   pull_up  pull_up ������� �ʴ´�.
+/** @brief   ixp gpio 입력 설정
+    @param   grp      gpio    사용하지 않는다.
+    @param   gp_nr    gp_nr   번호
+    @param   pull_up  pull_up 사용하지 않는다.
 *///----------------------------------------------------------------------------
 static void  ixp_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 {
@@ -1012,10 +1012,10 @@ static void  ixp_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   ixp gpio ��� ����
-    @param   grp     ������� �ʴ´�.
-    @param   gp_nr   gpio ��ȣ
-    @param   gp_val  gpio �ʱ� ��°�
+/** @brief   ixp gpio 출력 설정
+    @param   grp     사용하지 않는다.
+    @param   gp_nr   gpio 번호
+    @param   gp_val  gpio 초기 출력값
 *///----------------------------------------------------------------------------
 static void  ixp_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 {
@@ -1040,9 +1040,9 @@ static void  ixp_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   ixp gpio �Է�
-    @param   grp     ������� �ʴ´�.
-    @param   gp_nr   gpio ��ȣ
+/** @brief   ixp gpio 입력
+    @param   grp     사용하지 않는다.
+    @param   gp_nr   gpio 번호
 *///----------------------------------------------------------------------------
 static int  ixp_gpio_input( char grp, int gp_nr  )
 {
@@ -1058,10 +1058,10 @@ static int  ixp_gpio_input( char grp, int gp_nr  )
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   ixp gpio ���
-    @param   grp       ������� �ʴ´�.
-    @param   gp_nr     gpio ��ȣ
-    @param   gpio_val  gpio �ʱ� ��°�
+/** @brief   ixp gpio 출력
+    @param   grp       사용하지 않는다.
+    @param   gp_nr     gpio 번호
+    @param   gpio_val  gpio 초기 출력값
     
 *///----------------------------------------------------------------------------
 static void  ixp_gpio_output( char grp, int gp_nr, int gp_val  )
@@ -1081,8 +1081,8 @@ static void  ixp_gpio_output( char grp, int gp_nr, int gp_val  )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   ixp gpio  �ʱ�ȭ
-    @param   mcu_nr  mcu ��ȣ
+/** @brief   ixp gpio  초기화
+    @param   mcu_nr  mcu 번호
 *///----------------------------------------------------------------------------
 static void  ixp_gpio_open( int  mcu_nr )
 {
@@ -1112,9 +1112,9 @@ static void  ixp_gpio_open( int  mcu_nr )
 
 
 //------------------------------------------------------------------------------
-/** @brief   mcu �� ������ �� mmap �޸𸮸� �����Ѵ�. 
-    @param   mcu  ����� MCU ��ȣ�� �����Ѵ�.
-    @return  ���� 0, ���� -1
+/** @brief   mcu 를 선택한 후 mmap 메모리를 맵핑한다. 
+    @param   mcu  사용할 MCU 번호를 선택한다.
+    @return  성공 0, 에러 -1
 *///----------------------------------------------------------------------------
 int tgpio_open( int mcu )
 {
@@ -1141,7 +1141,7 @@ int tgpio_open( int mcu )
     return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   gpio ������ �����Ѵ�..
+/** @brief   gpio 맵핑을 해제한다..
     @remark  
 *///----------------------------------------------------------------------------
 void tgpio_close( void )
@@ -1150,30 +1150,30 @@ void tgpio_close( void )
 	memset( &mcu_gpio, 0, sizeof(mcu_gpio_fops_t) );
 }
 //------------------------------------------------------------------------------
-/** @brief   gpio �� �Է����� �����Ѵ�.
-    @param   grp      gpio    �׷칮�� 'a' ... 'z'
-    @param   gp_nr    gp_nr   ��ȣ
-    @param   pull_up  pull_up ���� Ǯ�� Ȱ��ȭ ����
+/** @brief   gpio 를 입력으로 설정한다.
+    @param   grp      gpio    그룹문자 'a' ... 'z'
+    @param   gp_nr    gp_nr   번호
+    @param   pull_up  pull_up 내부 풀업 활성화 유무
 *///----------------------------------------------------------------------------
 void  tgpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up )
 {
 	if ( mcu_gpio.dir_input ) mcu_gpio.dir_input( grp, gp_nr, pull_up );
 }
 //------------------------------------------------------------------------------
-/** @brief   gpio �� ������� �����Ѵ�.
-    @param   grp     �׷칮�� 'a' ... 'z'
-    @param   gp_nr   gpio ��ȣ
-    @param   gp_val  gpio �ʱ� ��°�
+/** @brief   gpio 를 출력으로 설정한다.
+    @param   grp     그룹문자 'a' ... 'z'
+    @param   gp_nr   gpio 번호
+    @param   gp_val  gpio 초기 출력값
 *///----------------------------------------------------------------------------
 void  tgpio_dir_output( char grp, int gp_nr, int gp_val )
 {
 	if ( mcu_gpio.dir_output ) mcu_gpio.dir_output( grp, gp_nr, gp_val );
 }
 //------------------------------------------------------------------------------
-/** @brief   gpio �� �Է°��� �д´�.
-    @param   grp      gpio    �׷칮�� 'a' ... 'z'
-    @param   gp_nr    gp_nr   ��ȣ
-    @return  ���� 0 or 1   ������ ��� ���� 
+/** @brief   gpio 의 입력값을 읽는다.
+    @param   grp      gpio    그룹문자 'a' ... 'z'
+    @param   gp_nr    gp_nr   번호
+    @return  성공 0 or 1   에러일 경우 음수 
 *///----------------------------------------------------------------------------
 int  tgpio_input( char grp, int gp_nr )
 {
@@ -1183,20 +1183,20 @@ int  tgpio_input( char grp, int gp_nr )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   gpio �� ���� ����
-    @param   grp      gpio    �׷칮�� 'a' ... 'z'
-    @param   gp_nr    gp_nr   ��ȣ
-    @param   gp_val   gpio    ��°�
+/** @brief   gpio 에 값을 쓴다
+    @param   grp      gpio    그룹문자 'a' ... 'z'
+    @param   gp_nr    gp_nr   번호
+    @param   gp_val   gpio    출력값
 *///----------------------------------------------------------------------------
 void tgpio_output( char grp, int gp_nr, int gp_val )
 {
 	if ( mcu_gpio.output ) mcu_gpio.output( grp, gp_nr, gp_val );
 }
 //------------------------------------------------------------------------------
-/** @brief   gpio �� �Է� ��Ʈ �����͸� ��´�.
-    @param   grp      gpio    �׷칮�� 'a' ... 'z'
-    @param   gp_nr    gp_nr   ��ȣ
-    @return  ��Ʈ�ּ�
+/** @brief   gpio 의 입력 포트 포인터를 얻는다.
+    @param   grp      gpio    그룹문자 'a' ... 'z'
+    @param   gp_nr    gp_nr   번호
+    @return  포트주소
 *///----------------------------------------------------------------------------
 unsigned long tgpio_get_input_port ( char grp, int gp_nr ) 
 {
@@ -1204,10 +1204,10 @@ unsigned long tgpio_get_input_port ( char grp, int gp_nr )
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   gpio �� ��� ��Ʈ �����͸� ��´�.
-    @param   grp      gpio    �׷칮�� 'a' ... 'z'
-    @param   gp_nr    gp_nr   ��ȣ
-    @return  ��Ʈ�ּ�
+/** @brief   gpio 의 출력 포트 포인터를 얻는다.
+    @param   grp      gpio    그룹문자 'a' ... 'z'
+    @param   gp_nr    gp_nr   번호
+    @return  포트주소
 *///----------------------------------------------------------------------------
 unsigned long tgpio_get_output_port( char grp, int gp_nr )
 {
diff --git a/app/app-prime-modbus/lib/common/tgpio_imx6q.c b/app/app-prime-modbus/lib/common/tgpio_imx6q.c
index 96d37ef..d1b59ea 100644
--- a/app/app-prime-modbus/lib/common/tgpio_imx6q.c
+++ b/app/app-prime-modbus/lib/common/tgpio_imx6q.c
@@ -1,25 +1,25 @@
 /**    
     @file     tgpio_imx6.c
     @date     2013/7/22
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    gpio �� ����̹����� mmap�� �̿��Ͽ� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    gpio 를 드라이버없이 mmap를 이용하여 제어한다.
 
-              Ver 0.7.0    iMX6 ����, GP0�׽�Ʈ ����
+              Ver 0.7.0    iMX6 포함, GP0테스트 진행
 
-              Ver 0.6.0    am3874 ����, GP0�׽�Ʈ �Ϸ� 
+              Ver 0.6.0    am3874 포함, GP0테스트 완료 
 
-              Ver 0.5.0    s5pv210 ����, �׽�Ʈ �Ϸ� 
-                           pull-up, pull-dn ��������
+              Ver 0.5.0    s5pv210 포함, 테스트 완료 
+                           pull-up, pull-dn 설정변경
                            
-              Ver 0.4.0    tmmap.c �� ������� �ʰ� famap.c �� ����ϴ°����� ����
-              Ver 0.3.0    ixp420  �׽�Ʈ �Ϸ�
-              Ver 0.2.1    s3c6410, pxa270 �׽�Ʈ �Ϸ�
-              Ver 0.2.0    pxa270  �Ϸ�
-                           pxa255  �Ϸ�(�׽�Ʈ �ȵ�)
-              Ver 0.1.0    s3c6410 �Ϸ�
-                           s3c2440 �Ϸ�(�׽�Ʈ �ȵ�)
+              Ver 0.4.0    tmmap.c 를 사용하지 않고 famap.c 를 사용하는것으로 수정
+              Ver 0.3.0    ixp420  테스트 완료
+              Ver 0.2.1    s3c6410, pxa270 테스트 완료
+              Ver 0.2.0    pxa270  완료
+                           pxa255  완료(테스트 안됨)
+              Ver 0.1.0    s3c6410 완료
+                           s3c2440 완료(테스트 안됨)
     @modify   
-    @todo     ������ ���� MCU �鵵 �����Ͽ��� �Ѵ�.
+    @todo     다음과 같은 MCU 들도 지원하여야 한다.
                 ..
     @bug     
     @remark   
@@ -311,7 +311,7 @@ static iomux_v3_cfg_t imx6q_gpio_pads[7][32] = {
 	}
 };
 
-//static mmap_alloc_t   map_iomux;       /// mmap ���� ����ü
+//static mmap_alloc_t   map_iomux;       /// mmap 관리 구조체
 //static unsigned long  iomux_base = 0;
 
 //------------------------------------------------------------------------------
@@ -356,9 +356,9 @@ err_exit:
 
 
 //------------------------------------------------------------------------------
-/** @brief   imx6 gpio ��ȣ�� ��Ȯ���� Ȯ���Ѵ�.
+/** @brief   imx6 gpio 번호가 정확한지 확인한다.
     @param   grp      0~3
-    @param   gp_nr    gp_nr   ��ȣ
+    @param   gp_nr    gp_nr   번호
 *///----------------------------------------------------------------------------
 static int imx6_valid_gpio( char grp, int gp_nr )
 {
@@ -378,9 +378,9 @@ static int imx6_valid_gpio( char grp, int gp_nr )
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   imx6 gpio �Է� ��Ʈ �ּҸ� ��´�.
+/** @brief   imx6 gpio 입력 포트 주소를 얻는다.
     @param   grp      0~3
-    @param   gp_nr    gp_nr   ��ȣ
+    @param   gp_nr    gp_nr   번호
 *///----------------------------------------------------------------------------
 static unsigned long imx6_get_dat_port ( char grp, int gp_nr )
 {
@@ -391,7 +391,7 @@ static unsigned long imx6_get_dat_port ( char grp, int gp_nr )
 	return gp->mmap_base + MCU_iMX6_GPIO_DAT_OFS;
 }
 //------------------------------------------------------------------------------
-/** @brief   imx6 gpio �Է� ����
+/** @brief   imx6 gpio 입력 설정
     @param   grp      '1'~'7'
     @param   gp_nr    gp_nr   0..31 
     @param   pull_up  pull_up 
@@ -409,10 +409,10 @@ static void  imx6_gpio_dir_input( char grp, int gp_nr, gpio_pulled_t pull_up  )
 	iMX6_GPIO_DIRPORT( gp->mmap_base ) &= ~(1<<gp_nr);	 // input
 }
 //------------------------------------------------------------------------------
-/** @brief   imx6 gpio ��� ����
+/** @brief   imx6 gpio 출력 설정
     @param   grp      '1'~'7'
     @param   gp_nr    gp_nr   0..31 
-    @param   gp_val  gpio �ʱ� ��°�
+    @param   gp_val  gpio 초기 출력값
 *///----------------------------------------------------------------------------
 static void  imx6_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 {
@@ -429,7 +429,7 @@ static void  imx6_gpio_dir_output( char grp, int gp_nr, int gp_val  )
 	imx6_gpio_output( grp, gp_nr, gp_val );
 }
 //------------------------------------------------------------------------------
-/** @brief   imx6 gpio �Է�
+/** @brief   imx6 gpio 입력
     @param   grp      '1'~'7'
     @param   gp_nr    gp_nr   0..31 
 *///----------------------------------------------------------------------------
@@ -445,10 +445,10 @@ static int  imx6_gpio_input( char grp, int gp_nr  )
 	return ( rval & (1<<gp_nr) ) ? 1:0;
 }
 //------------------------------------------------------------------------------
-/** @brief   imx6 gpio ���
+/** @brief   imx6 gpio 출력
     @param   grp      '1'~'7'
     @param   gp_nr    gp_nr   0..31 
-    @param   gpio_val  gpio �ʱ� ��°�
+    @param   gpio_val  gpio 초기 출력값
     
 *///----------------------------------------------------------------------------
 static void  imx6_gpio_output( char grp, int gp_nr, int gp_val  )
@@ -467,7 +467,7 @@ static void  imx6_gpio_output( char grp, int gp_nr, int gp_val  )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   imx6 gpio close() �Լ�
+/** @brief   imx6 gpio close() 함수
 
 *///----------------------------------------------------------------------------
 static void  imx6_gpio_close( void )
@@ -480,7 +480,7 @@ static void  imx6_gpio_close( void )
 		fa_mmap_free( &gp->map_gpio ); 
 	}
 	
-	// iomux ����
+	// iomux 해제
 	if ( mgpio->mmap_base )
 	{
 		fa_mmap_free( &mgpio->map_info );
@@ -488,8 +488,8 @@ static void  imx6_gpio_close( void )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   imx6 gpio  �ʱ�ȭ
-    @param   mcu_nr  mcu ��ȣ
+/** @brief   imx6 gpio  초기화
+    @param   mcu_nr  mcu 번호
 *///----------------------------------------------------------------------------
 void  imx6_gpio_open( int  mcu_nr )
 {
diff --git a/app/app-prime-modbus/lib/common/tinifile.c b/app/app-prime-modbus/lib/common/tinifile.c
index 9f12917..0f6654e 100644
--- a/app/app-prime-modbus/lib/common/tinifile.c
+++ b/app/app-prime-modbus/lib/common/tinifile.c
@@ -1,24 +1,24 @@
 /**
     @file   tinifile.c
     @date   2009-04-09
-    @author ��漮 jwjwmx@gmail.com
+    @author 장길석 jwjwmx@gmail.com
     @brief  Ver 0.0.6
-            Delphi���� �����ϴ� TIniFile�� �����Ѵ�.
+            Delphi에서 제공하는 TIniFile을 생성한다.
     @brief  
-        -# 2012-02-07 �����
-            -# get_identify() �Լ����� index() �Լ� ���ϰ� ó��
+        -# 2012-02-07 오재경
+            -# get_identify() 함수에서 index() 함수 리턴값 처리
 
-        -# 2010-09-14 ��漮
-            -# ���� ���� IniFile�� �������� ������ ��ü�� �����ǰ�
-            -# ���Ϸ� ������ �� �ֵ��� ����
+        -# 2010-09-14 장길석
+            -# 파일 없이 IniFile을 생성했을 때에도 객체가 생성되고
+            -# 파일로 저장할 수 있도록 수정
     @todo
-        -# ������ �����ϴ� �Լ��� �߰�
-        -# ������ ������ �����ϴ� �Լ��� �߰�
+        -# 섹션을 삭제하는 함수를 추가
+        -# 구별자 정보를 삭제하는 함수를 추가
     @bug
     @remark
     @warning
-        - ���۱� �������̸�����(��)
-        - �ܺΰ��� ����
+        - 저작권 에프에이리눅스(주)
+        - 외부공개 금지
 */
 
 
@@ -31,53 +31,53 @@
 #include <tstrlist.h>
 #include <tinifile.h>
 
-/// INI���� ����ϴ� ���� ũ��
+/// INI에서 사용하는 버퍼 크기
 #define MAX_BUFFSIZE        1024
-/// ���� ���ڿ� �ִ� ũ��
+/// 섹션 문자열 최대 크기
 #define MAX_SECTION         128
-/// ������ ���ڿ� �ִ� ũ��
+/// 구분자 문자열 최대 크기
 #define MAX_IDENTIFY        128
 
-/// ���� ���� �ڵ�
-int     ini_error_code;                                                 // �����ڵ�
+/// 에러 전역 코드
+int     ini_error_code;                                                 // 에러코드
 
-/// ���ǰ� �����ڸ� ���� ����
+/// 섹션과 구분자를 위한 버퍼
 char buf_text[MAX_BUFFSIZE+1];
-/// ���ǰ� �����ڿ� ���� �����͸� ���ϱ� ���� ����
+/// 센션과 구분자에 대한 데이터를 구하기 위한 버퍼
 char buf_data[MAX_BUFFSIZE+1];
 
 static void trim( char *str)
-// ����: �μ��� ���� ���ڿ����� �հ� ���� ȭ��Ʈ ���ڸ� �����Ѵ�.
+// 설명: 인수로 받은 문자열에서 앞과 뒤의 화이트 문자를 제거한다.
 {
     int     sz_str;
     int     ndx;
 
     sz_str = strlen( str);
 
-    if ( 0 >= sz_str)   return;                                         // �������� ���ڿ��� �ƴϸ� �ٷ� ����
+    if ( 0 >= sz_str)   return;                                         // 정상적인 문자열이 아니면 바로 복귀
 
-    for ( ndx = sz_str -1; 0 <= ndx; ndx--)                             // ���ڿ� ���� ȭ��Ʈ ���ڸ� ����, -1: NULL ��ġ ����
+    for ( ndx = sz_str -1; 0 <= ndx; ndx--)                             // 문자열 뒤의 화이트 문자를 제거, -1: NULL 위치 제거
     {
-        if ( ' ' < str[ndx])                                            // �ѱ��̳� Ư�������� �ι�° ����Ʈ�� ��츦 ����ϱ� ���� MSB ��Ʈ�� Ȯ���Ѵ�.
+        if ( ' ' < str[ndx])                                            // 한글이나 특수문자의 두번째 바이트일 경우를 대비하기 위해 MSB 비트를 확인한다.
         {
             break;
         }
         str[ndx]    = '\0';
     }
 
-    sz_str  = strlen( str);                                             // ���ڿ� ���� ȭ��Ʈ ���ڸ� ����
+    sz_str  = strlen( str);                                             // 문자열 앞의 화이트 문자를 제거
     for( ndx = 0; ndx < sz_str; ndx++)
     {
-        if ( ' ' != str[ndx])                                           // �ѱ��� ���� ��츦 �����ؼ� ' ' ���ڸ� ���� ���Ѵ�.
+        if ( ' ' != str[ndx])                                           // 한글이 있을 경우를 생각해서 ' ' 문자를 직접 비교한다.
             break;
     }
-    memcpy( str, str+ndx, strlen( str));                                // ȸ��Ʈ ���ڰ� �ƴ� �κ��� �������� ���� ��ġ�� �̵�
+    memcpy( str, str+ndx, strlen( str));                                // 회이트 문자가 아닌 부분을 포인터의 시작 위치로 이동
 }
 
 static char *get_identify( char *str, char *identify)
-// ����: �μ� ���ڿ����� ������ ���ڿ��� ���Ѵ�.
-// ����: '='������ ���ڿ��� ���ϸ�, �հ� ���� ȭ��Ʈ ���ڸ� �����Ѵ�.
-// ��ȯ: ������ ���ڿ�
+// 설명: 인수 문자열에서 구별지 문자열을 구한다.
+// 참고: '='까지의 문자열을 구하며, 앞과 뒤의 화이트 문자를 제거한다.
+// 반환: 구별자 문자열
 {
     char   *p_data;
     char   *p_branch;
@@ -97,7 +97,7 @@ static char *get_identify( char *str, char *identify)
     if ( NULL != p_data)
     {
         memcpy( p_data, p_branch+1, sz_data);
-        p_data[sz_data] = '\0';                                         // ���� ���ڿ� ���� '\0'���� ������
+        p_data[sz_data] = '\0';                                         // 복사 문자열 끝을 '\0'으로 마무리
 
         trim( identify);
         trim( p_data);
@@ -106,9 +106,9 @@ static char *get_identify( char *str, char *identify)
 }
 
 static void get_section( char *str, char *sec)
-// ����: �μ� ���ڿ����� ���� ���ڿ��� ���Ѵ�.
-// ����: '['�� ']' ������ ���ڸ� ���ϸ�, ���ڿ� �հ� ���� ȭ��Ʈ ���ڴ� �����Ѵ�.
-// ��ȯ: ���� ���ڿ�
+// 설명: 인수 문자열에서 섹션 문자열을 구한다.
+// 참고: '['와 ']' 사이의 문자를 구하며, 문자열 앞과 뒤의 화이트 문자는 제거한다.
+// 반환: 섹션 문자열
 {
     int     ndx_str;
     int     ndx_sec;
@@ -134,26 +134,26 @@ static void get_section( char *str, char *sec)
 }
 
 static int  is_remark( char *str)
-// ����: ���ڿ��� �ּ������� ���θ� �Ǵ��Ѵ�.
-// ����: '#' ���� �Ǵ� ';' ���ڷ� ������ �����ϸ� �ּ����� �Ǵ�
-// ��ȯ: INI_TRUE=�ּ�
+// 설명: 문자열이 주석인지의 여부를 판단한다.
+// 참고: '#' 문자 또는 ';' 문자로 문장이 시작하면 주석으로 판단
+// 반환: INI_TRUE=주석
 {
     char    ch_data;
     int     ndx;
 
     ndx = 0;
-    while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))                 // ������ �� �Ǵ� ������ ũ�� ��ŭ Ȯ��
+    while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))                 // 문장의 끝 또는 버퍼의 크기 만큼 확인
     {
         ch_data = str[ndx++];
-        if ( '#' == ch_data)                                            // ���� �̻��� ���� �� �ּ��� �ش�Ǵ� '#' ���ڸ� ������ �ּ����� �Ǵ�
+        if ( '#' == ch_data)                                            // 공백 이상의 문자 중 주석에 해당되는 '#' 문자를 만나면 주석으로 판단
         {
             return INI_TRUE;
         }
-        else if ( ';' == ch_data)                                       // ���� �̻��� ���� �� �ּ��� �ش�Ǵ� ';' ���ڸ� ������ �ּ����� �Ǵ�
+        else if ( ';' == ch_data)                                       // 공백 이상의 문자 중 주석에 해당되는 ';' 문자를 만나면 주석으로 판단
         {
             return INI_TRUE;
         }
-        else if ( ' ' != str[ndx])                                      // ���� Ű���尡 �ƴ� ���� �̻��� ���ڸ� ������ �ּ� ���� �ƴ����� �Ǵ�
+        else if ( ' ' != str[ndx])                                      // 공백 키워드가 아닌 공백 이상의 문자를 만나면 주석 행이 아님으로 판단
         {
             return INI_FALSE;
         }
@@ -162,18 +162,18 @@ static int  is_remark( char *str)
 }
 
 static int  is_identify( char *str)
-// ����: ���ڿ��� ���� ������ ����ִ����� ���θ� ��ȯ
-// ����: '=' ���ڰ� �����鼭 ��ȿ
-// ��ȯ: 0 = ������ ������ ����, 1 = ������ ������ ����
+// 설명: 문자열이 섹션 정보를 담고있는지의 여부를 반환
+// 참고: '=' 문자가 있으면서 유효
+// 반환: 0 = 구별자 정보가 없음, 1 = 구별자 정보가 있음
 {
     int     ndx;
 
     ndx = 0;
-    while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))                 // ������ �� �Ǵ� ������ ũ�� ��ŭ Ȯ��
+    while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))                 // 문장의 끝 또는 버퍼의 크기 만큼 확인
     {
-        if ( ' ' < str[ndx++])                                          // �տ� �ִ� ���� ���ڸ� ����. ���� �̻��� ���ڰ� ����
+        if ( ' ' < str[ndx++])                                          // 앞에 있는 공백 문자를 무시. 공백 이상의 문자가 오면
         {
-            while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))         // ���� �̻� '=' ���ڰ� �ִ��� Ȯ��
+            while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))         // 공백 이상에 '=' 문자가 있는지 확인
             {
                 if ( '=' == str[ndx++])
                 {
@@ -187,27 +187,27 @@ static int  is_identify( char *str)
 }
 
 static int  is_section( char *str)
-//����: ���ڿ��� ���� ������ ����ִ����� ���θ� ��ȯ
-//����: '[' ���ڰ� �����鼭 '[' �տ��� �� ���ڿ��̰ų� ���� ���ڸ� ��ȿ
-//      '[' ���ڿ� ']' ���� ���̿��� ���ǿ� ���� �̸� ���ڿ��� �־�� ��
-//��ȯ: 0 = ���� ������ ����, 1 = ���� ������ ����
+//설명: 문자열이 섹션 정보를 담고있는지의 여부를 반환
+//참고: '[' 문자가 있으면서 '[' 앞에는 빈 문자열이거나 공백 문자만 유효
+//      '[' 문자와 ']' 문자 사이에는 섹션에 대한 이름 문자열이 있어야 함
+//반환: 0 = 섹션 정보가 없음, 1 = 섹션 정보가 있음
 {
     char    ch_data;
     int     ndx;
 
     ndx = 0;
-    while( ( '\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))                // ������ �� �Ǵ� ������ ũ�� ��ŭ Ȯ��
+    while( ( '\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))                // 문장의 끝 또는 버퍼의 크기 만큼 확인
     {
-        ch_data = str[ndx++];                                           // Ȯ���� ���ڿ�
-        if ( '[' == ch_data)                                            // ���� [ ���� ����
+        ch_data = str[ndx++];                                           // 확인할 문자열
+        if ( '[' == ch_data)                                            // 시작 [ 문자 있음
         {
-            while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))         // ������ �� �Ǵ� ������ ũ�� ��ŭ Ȯ��
+            while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE))         // 문장의 끝 또는 버퍼의 크기 만큼 확인
             {
-                if ( ' ' < str[ndx++])                                  // [ ���� ���Ŀ� �ٸ� ���ڰ� �ִٸ�
+                if ( ' ' < str[ndx++])                                  // [ 문자 이후에 다른 문자가 있다면
                 {
-                    while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE)) // ������ �� �Ǵ� ������ ũ�� ��ŭ Ȯ��
+                    while( ('\0' != str[ndx]) && ( ndx < MAX_BUFFSIZE)) // 문장의 끝 또는 버퍼의 크기 만큼 확인
                     {
-                        if ( ']' == str[ndx++])                         // ] ���ڰ� �ִٸ� TRUE
+                        if ( ']' == str[ndx++])                         // ] 문자가 있다면 TRUE
                         {
                             return 1;
                         }
@@ -217,7 +217,7 @@ static int  is_section( char *str)
             }
             return 0;
         }
-        else if ( ' ' != ch_data)                                       // [ ���� �տ� ���� ���� �ܿ� �ٸ� ���ڰ� �ִٸ� FALSE
+        else if ( ' ' != ch_data)                                       // [ 문자 앞에 공백 문자 외에 다른 문자가 있다면 FALSE
         {
             break;
         }
@@ -226,11 +226,11 @@ static int  is_section( char *str)
 }
 
 static void read_inifile_data( FILE *fp, inifile_t *inifile)
-//����: ini ������ ������ �о�鿩 inifile_t ��ü�� ������ �ϼ��Ѵ�.
-//�μ�: FILE *fp          : ini ���Ͽ� ���� ���� ������
-//      ifile_t *inifile  : inifile_t ��ü ������
-//����: ���ǿ� ���� ������ ����� ���� tstrlist�� �����Ͽ�
-//      ���� ����Ʈ�� �����ۿ� object�� �߰��Ѵ�.
+//설명: ini 파일의 내용을 읽어들여 inifile_t 객체의 내용을 완성한다.
+//인수: FILE *fp          : ini 파일에 대한 파일 포인터
+//      ifile_t *inifile  : inifile_t 객체 포인터
+//참고: 섹션에 따라 구별자 목록을 갖는 tstrlist를 생성하여
+//      섹션 리스트의 아이템에 object로 추가한다.
 {
     char        str_section [MAX_SECTION +1];
     char        str_identify[MAX_IDENTIFY+1];
@@ -239,16 +239,16 @@ static void read_inifile_data( FILE *fp, inifile_t *inifile)
 
     while( NULL != fgets( buf_text, MAX_BUFFSIZE, fp))
     {
-        if      ( INI_TRUE == is_remark( buf_text) )                    // �ּ� ���̸� ���� ������
+        if      ( INI_TRUE == is_remark( buf_text) )                    // 주석 행이면 다음 행으로
             ;
         else if ( NULL != index( buf_text, '['))
         {
-            if ( is_section( buf_text))                                 // ���Ͽ��� �о���� ���ڿ��� ���� ������ ��ȿ�ϴٸ�
+            if ( is_section( buf_text))                                 // 파일에서 읽어들인 문자열이 섹션 정보로 유효하다면
             {
-                lst_identify    = tstrlist_create();                    // ���ǿ� ���Ե� ��� ������ ������ ���� �� �ִ� tstrlist�� ����
+                lst_identify    = tstrlist_create();                    // 섹션에 포함된 모든 구별자 정보를 담을 수 있는 tstrlist를 생성
                 if ( NULL == lst_identify)
                 {
-                    ini_error_code  = INIERR_CREATE_IDENTIFY_FAIL;      //  �����ڵ�: ������ ������ ���� �޸� �Ҵ� ����
+                    ini_error_code  = INIERR_CREATE_IDENTIFY_FAIL;      //  에러코드: 구별자 정보를 위한 메모리 할당 실패
                     return;
                 }
                 get_section( buf_text, str_section);
@@ -263,7 +263,7 @@ static void read_inifile_data( FILE *fp, inifile_t *inifile)
             p_data = get_identify( buf_text, str_identify);
             if ( NULL == p_data)
             {
-                ini_error_code  = INIERR_READ_IDENTIFY_FAIL;            //  �����ڵ�: �������� ���ڿ� ������ �޸� �Ҵ� ����
+                ini_error_code  = INIERR_READ_IDENTIFY_FAIL;            //  에러코드: 구별자의 문자열 정보를 메모리 할당 실패
                 return;
             }
             tstrlist_add_object( lst_identify, str_identify, p_data);
@@ -274,13 +274,13 @@ static void read_inifile_data( FILE *fp, inifile_t *inifile)
 }
 
 static char *read_string( inifile_t *inifile, char *str_section, char *str_identify)
-//����: ���ǰ� �������� ���ڿ� �����͸� ���Ѵ�.
-//�μ�: inifile_t *inifile  : inifile_t ��ü ������
-//      char *str_section   : ���� ���ڿ�
-//      char *str_identify  : ������ ���ڿ�
-//��ȯ: ���ǰ� �������� ���ڿ� ������
-//����: ���ǰ� �����ڰ� ���ٸ� NULL�� ��ȯ
-//      ��ȯ�� ���ڿ� �����ͷ� �޸� �Ҹ��� �ؼ��� �� �ȴ�.
+//설명: 섹션과 구별자의 문자열 데이터를 구한다.
+//인수: inifile_t *inifile  : inifile_t 객체 포인터
+//      char *str_section   : 섹션 문자열
+//      char *str_identify  : 구별자 문자열
+//반환: 섹션과 구별자의 문자열 데이터
+//주의: 섹션과 구별자가 없다면 NULL을 반환
+//      반환된 문자열 포인터로 메모리 소멸을 해서는 안 된다.
 {
     tstrlist   *lst_section;
     int         index;
@@ -299,27 +299,27 @@ static char *read_string( inifile_t *inifile, char *str_section, char *str_ident
 }
 
 static int write_string( inifile_t *inifile, char *str_section, char *str_identify, char *data)
-//����: ���ǰ� �������� ���ڿ� �����͸� ���� �Ǵ� �߰��Ѵ�.
-//�μ�: inifile_t *inifile      : inifile_t ��ü ������
-//      char      *str_section  : ���� ���ڿ�
-//      char      *str_identify : ������ ���ڿ�
-//      char      *data         : ������ ������
-//��ȯ: INI_TRUE= ���� �Ǵ� �߰� ����, INI_FALSE ���� �Ǵ� �߰� ����
-//����: ���ǰ� �����ڰ� ���ٸ� ���� �߰��Ѵ�.
+//설명: 섹션과 구별자의 문자열 데이터를 변경 또는 추가한다.
+//인수: inifile_t *inifile      : inifile_t 객체 포인터
+//      char      *str_section  : 섹션 문자열
+//      char      *str_identify : 구별자 문자열
+//      char      *data         : 저장할 데이터
+//반환: INI_TRUE= 변경 또는 추가 성공, INI_FALSE 변경 또는 추가 실패
+//주의: 섹션과 구별자가 없다면 새로 추가한다.
 {
     tstrlist   *lst_section;
     char       *p_data;
     int         index;
 
-    inifile->is_changed = 1;                                            // �ڷ� ���� �̳� �߰��� ����
+    inifile->is_changed = 1;                                            // 자료 변경 이나 추가가 있음
 
     index   = tstrlist_indexof( inifile->lst_sections, str_section);
-    if ( 0 > index)                                                     // ������ ���ٸ� �߰��Ѵ�.
+    if ( 0 > index)                                                     // 섹션이 없다면 추가한다.
     {
-        lst_section = tstrlist_create();                                // ���ǿ� ���Ե� ��� ������ ������ ���� �� �ִ� tstrlist�� ����
+        lst_section = tstrlist_create();                                // 섹션에 포함된 모든 구별자 정보를 담을 수 있는 tstrlist를 생성
         if ( NULL == lst_section)
         {
-            ini_error_code  = INIERR_CREATE_IDENTIFY_FAIL;              //  �����ڵ�: ������ ������ ���� �޸� �Ҵ� ����
+            ini_error_code  = INIERR_CREATE_IDENTIFY_FAIL;              //  에러코드: 구별자 정보를 위한 메모리 할당 실패
             return INI_FALSE;
         }
         tstrlist_add_object( inifile->lst_sections, str_section, lst_section);
@@ -330,7 +330,7 @@ static int write_string( inifile_t *inifile, char *str_section, char *str_identi
     }
 
     index   = tstrlist_indexof( lst_section, str_identify);
-    if ( 0 > index)                                                     // �����ڰ� ���ٸ� �߰��Ѵ�.
+    if ( 0 > index)                                                     // 구별자가 없다면 추가한다.
     {
         tstrlist_add_object( lst_section, str_identify, data);
     }
@@ -346,29 +346,29 @@ static int write_string( inifile_t *inifile, char *str_section, char *str_identi
 
 char  *ini_error_string( void)
 /**
-    @brief  ini_error_code�� ���� ���� ���� ���ڿ��� ��ȯ
-    @return ���� �ڵ忡 ���� ���� ���� ���ڿ� ������
-    @warning ���� ��ȯ ���� ���ڿ��� �Ҹ� ���Ѽ��� �� �ȴ�!!
+    @brief  ini_error_code에 대한 에러 설명 문자열을 반환
+    @return 에러 코드에 대한 에러 설명 문자열 포인터
+    @warning 절대 반환 받은 문자열을 소멸 시켜서는 안 된다!!
 */
 {
-   char *error_string[] ={ "���� ����",                                 //  INIERR_NONE
-                           "�޸� ����",                               //  INIERR_OUT_OF_MEMORY
-                           "���� �̸� ���� ����",                       //  INIERR_FILENAME_FAIL
-                           "�ڷ� ����",                                 //  INIERR_NO_DATA
-                           "IniFile ����",                              //  INIERR_NO_FILE
-                           "IniFile�� ���� �� ����",                    //  INIERR_ACCESS_FAIL
-                           "���� ����Ʈ ���� ����",                     //  INIERR_CREATE_SECTION_FAIL
-                           "������ ���� ����",                          //  INIERR_CREATE_IDENTIFY_FAIL
-                           "�μ��� ��ü�� NULL"                         //  INIERR_NULL_POINTER
+   char *error_string[] ={ "에러 없음",                                 //  INIERR_NONE
+                           "메모리 부족",                               //  INIERR_OUT_OF_MEMORY
+                           "파일 이름 지정 오류",                       //  INIERR_FILENAME_FAIL
+                           "자료 없음",                                 //  INIERR_NO_DATA
+                           "IniFile 없음",                              //  INIERR_NO_FILE
+                           "IniFile을 읽을 수 없음",                    //  INIERR_ACCESS_FAIL
+                           "섹션 리스트 생성 실패",                     //  INIERR_CREATE_SECTION_FAIL
+                           "구별자 생성 실패",                          //  INIERR_CREATE_IDENTIFY_FAIL
+                           "인수의 객체가 NULL"                         //  INIERR_NULL_POINTER
                         };
    return( error_string[ini_error_code]);
 }
 
 int ini_print_error( char *remark)
 /**
-    @brief  ini_error_code�� ���� ���� ���� ���ڿ��� ȭ�鿡 ���
-    @param  remark : ���� ���� ���ڿ� ���� ÷���Ͽ� ����� ���ڿ�
-    @return ���� �ڵ�
+    @brief  ini_error_code에 대한 에러 설명 문자열을 화면에 출력
+    @param  remark : 에러 설명 문자열 끝에 첨부하여 출력할 문자열
+    @return 에러 코드
 */
 {
    printf( "[ini error:%d]%s %s\n", ini_error_code, ini_error_string(), remark);
@@ -377,14 +377,14 @@ int ini_print_error( char *remark)
 
 int ini_write_bool( inifile_t *inifile, char *str_section, char *str_identify, int value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� �������� ���� �����Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�
-    @param  str_identify : ������ ���ڿ�
-    @param  value : boolean ��
+    @brief  섹션과 구별자가 지정하는 데이터의 값을 변경한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열
+    @param  str_identify : 구별자 문자열
+    @param  value : boolean 값
     @return\n
-        INI_TRUE  - ���� �Ǵ� �߰� ����\n
-        INI_FALSE - ���� �Ǵ� �߰� ����
+        INI_TRUE  - 변경 또는 추가 성공\n
+        INI_FALSE - 변경 또는 추가 실패
 */
 {
     char    *data;
@@ -398,14 +398,14 @@ int ini_write_bool( inifile_t *inifile, char *str_section, char *str_identify, i
 
 int ini_write_real( inifile_t *inifile, char *str_section, char *str_identify, double value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� �Ǽ� �����͸� ���Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�
-    @param  str_identify : ������ ���ڿ�
-    @param  value : �Ǽ� ��
+    @brief  섹션과 구별자가 지정하는 실수 데이터를 구한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열
+    @param  str_identify : 구별자 문자열
+    @param  value : 실수 값
     @return
-        - INI_TRUE  - ���� �Ǵ� �߰� ����
-        - INI_FALSE - ���� �Ǵ� �߰� ����
+        - INI_TRUE  - 변경 또는 추가 성공
+        - INI_FALSE - 변경 또는 추가 실패
 */
 {
     char    *data;
@@ -418,14 +418,14 @@ int ini_write_real( inifile_t *inifile, char *str_section, char *str_identify, d
 
 int ini_write_integer( inifile_t *inifile, char *str_section, char *str_identify, int value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� ���� �����͸� �����Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�\n
-    @param  str_identify : ������ ���ڿ�\n
-    @param  value : ���� ������
+    @brief  섹션과 구별자가 지정하는 정수 데이터를 지정한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열\n
+    @param  str_identify : 구별자 문자열\n
+    @param  value : 정수 데이터
     @return
-        - INI_TRUE  - ���� �Ǵ� �߰� ����
-        - INI_FALSE - ���� �Ǵ� �߰� ����
+        - INI_TRUE  - 변경 또는 추가 성공
+        - INI_FALSE - 변경 또는 추가 실패
 */
 {
     char    *data;
@@ -439,14 +439,14 @@ int ini_write_integer( inifile_t *inifile, char *str_section, char *str_identify
 
 int ini_write_string( inifile_t *inifile, char *str_section, char *str_identify, char *value)
 /**
-    @brief  ���ǰ� �������� ���ڿ��� ����
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�\n
-    @param  str_identify : ������ ���ڿ�\n
-    @param  value : ���ڿ� ������
+    @brief  섹션과 구별자의 문자열을 변경
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열\n
+    @param  str_identify : 구별자 문자열\n
+    @param  value : 문자열 데이터
     @return
-        - INI_TRUE  - ���� �Ǵ� �߰� ����
-        - INI_FALSE - ���� �Ǵ� �߰� ����
+        - INI_TRUE  - 변경 또는 추가 성공
+        - INI_FALSE - 변경 또는 추가 실패
 */
 {
     char    *data;
@@ -459,14 +459,14 @@ int ini_write_string( inifile_t *inifile, char *str_section, char *str_identify,
 
 int ini_write_char( inifile_t *inifile, char *str_section, char *str_identify, char value)
 /**
-    @brief  ���ǰ� �������� ���ڸ� ����
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�\n
-    @param  str_identify : ������ ���ڿ�\n
-    @param  value : ����
+    @brief  섹션과 구별자의 문자를 변경
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열\n
+    @param  str_identify : 구별자 문자열\n
+    @param  value : 문자
     @return
-        - INI_TRUE  - ���� �Ǵ� �߰� ����
-        - INI_FALSE - ���� �Ǵ� �߰� ����
+        - INI_TRUE  - 변경 또는 추가 성공
+        - INI_FALSE - 변경 또는 추가 실패
 */
 {
     char  str[16];
@@ -477,105 +477,105 @@ int ini_write_char( inifile_t *inifile, char *str_section, char *str_identify, c
 
 int ini_read_bool( inifile_t *inifile, char *str_section, char *str_identify, int default_value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� Boolean �����͸� ���Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�\n
-    @param  str_identify : ������ ���ڿ�\n
-    @param  default_value : ���� ���ٸ� ��� ��ȯ�� �⺻��
-    @warning    ini ���Ͽ� ������ ���ڿ��� 0 �̸� FALSE�� ��ȯ�ϸ�\n
-                �ܴ̿� ������ TRUE�� ��ȯ�Ѵ�.\n
-                ��, ���ǰ� �����ڰ� ������ �ִ� ���ڿ� ������\n
-                '0' ���� �ƴ����� ���θ� ��ȯ�Ѵ�.
+    @brief  섹션과 구별자가 지정하는 Boolean 데이터를 구한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열\n
+    @param  str_identify : 구별자 문자열\n
+    @param  default_value : 값이 없다면 대신 반환될 기본값
+    @warning    ini 파일에 저장한 문자열이 0 이면 FALSE로 반환하며\n
+                이외는 무조건 TRUE로 반환한다.\n
+                즉, 섹션과 구별자가 가지고 있는 문자열 정보가\n
+                '0' 인지 아닌지의 여부를 반환한다.
 */
 {
     char   *data;
     int     int_data;
 
-    data    = read_string( inifile, str_section, str_identify);                         // ���� ���ڿ��� �����͸� �о� ���δ�.
-    if      ( NULL == data)                             return default_value;           // ã�� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == strlen( data) )                      return default_value;           // ���ڿ� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == sscanf( data, "%d", &int_data))      return default_value;           // ������ ��ȯ�� ���� ���ٸ� �⺻���� ��ȯ
-    else                                                return 0 != int_data;           // ���� ���� 0�̸� FALSE�� ��ȯ�Ѵ�.
+    data    = read_string( inifile, str_section, str_identify);                         // 먼저 문자열로 데이터를 읽어 들인다.
+    if      ( NULL == data)                             return default_value;           // 찾는 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == strlen( data) )                      return default_value;           // 문자열 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == sscanf( data, "%d", &int_data))      return default_value;           // 정수로 변환된 값이 없다면 기본값을 반환
+    else                                                return 0 != int_data;           // 정수 값이 0이면 FALSE로 반환한다.
 }
 
 double ini_read_real( inifile_t *inifile, char *str_section, char *str_identify, double default_value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� �Ǽ� �����͸� ���Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section  : ���� ���ڿ�
-    @param  str_identify : ������ ���ڿ�
-    @param  default_value: ���� ���ٸ� ��� ��ȯ�� �⺻��
+    @brief  섹션과 구별자가 지정하는 실수 데이터를 구한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section  : 섹션 문자열
+    @param  str_identify : 구별자 문자열
+    @param  default_value: 값이 없다면 대신 반환될 기본값
     @return\n
-        ���ǰ� �����ڿ� �ش��ϴ� �Ǽ� ��\n
-        ������ �����̳� �����ڿ� ���� �Ǽ� ���� ���ٸ� �⺻���� ��ȯ
+        섹션과 구별자에 해당하는 실수 값\n
+        저정한 섹션이나 구별자에 대한 실수 값이 없다면 기본값을 반환
 */
 {
     char       *data;
     double      float_data;
 
 
-    data    = read_string( inifile, str_section, str_identify);                         // ���� ���ڿ��� �����͸� �о� ���δ�.
-    if      ( NULL == data)                             return default_value;           // ã�� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == strlen( data) )                      return default_value;           // ���ڿ� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == sscanf( data, "%lf", &float_data))   return default_value;           // �Ǽ��� ��ȯ�� ���� ���ٸ� �⺻���� ��ȯ
-    else                                                return float_data;              // �Ǽ� ���� ��ȯ�Ѵ�.
+    data    = read_string( inifile, str_section, str_identify);                         // 먼저 문자열로 데이터를 읽어 들인다.
+    if      ( NULL == data)                             return default_value;           // 찾는 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == strlen( data) )                      return default_value;           // 문자열 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == sscanf( data, "%lf", &float_data))   return default_value;           // 실수로 변환된 값이 없다면 기본값을 반환
+    else                                                return float_data;              // 실수 값을 반환한다.
 }
 
 int ini_read_integer( inifile_t *inifile, char *str_section, char *str_identify, int default_value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� ���� �����͸� ���Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�
-    @param  str_identify : ������ ���ڿ�
-    @param  default_value : ���� ���ٸ� ��� ��ȯ�� �⺻��
+    @brief  섹션과 구별자가 지정하는 정수 데이터를 구한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열
+    @param  str_identify : 구별자 문자열
+    @param  default_value : 값이 없다면 대신 반환될 기본값
     @return\n
-        ���ǰ� �����ڿ� �ش��ϴ� ���� ��\n
-        ������ �����̳� �����ڿ� ���� ���� ���� ���ٸ� �⺻���� ��ȯ
+        섹션과 구별자에 해당하는 정수 값\n
+        저정한 섹션이나 구별자에 대한 정수 값이 없다면 기본값을 반환
 */
 {
     char   *data;
     int     int_data;
 
-    data    = read_string( inifile, str_section, str_identify);                         // ���� ���ڿ��� �����͸� �о� ���δ�.
+    data    = read_string( inifile, str_section, str_identify);                         // 먼저 문자열로 데이터를 읽어 들인다.
     
-    if      ( NULL == data)                             return default_value;           // ã���� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == strlen( data) )                      return default_value;           // ���ڿ� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
-    else if ( 0 == sscanf( data, "%d", &int_data))      return default_value;           // ������ ��ȯ�� ���� ���ٸ� �⺻���� ��ȯ
-    else                                                return int_data;                // �������� ��ȯ�Ѵ�.
+    if      ( NULL == data)                             return default_value;           // 찾아진 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == strlen( data) )                      return default_value;           // 문자열 데이터가 없다면 기본값을 반환한다.
+    else if ( 0 == sscanf( data, "%d", &int_data))      return default_value;           // 정수로 변환된 값이 없다면 기본값을 반환
+    else                                                return int_data;                // 정수값을 반환한다.
 }
 
 char *ini_read_string( inifile_t *inifile, char *str_section, char *str_identify, char *default_value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� ���ڿ� �����͸� ���Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�
-    @param  str_identify : ������ ���ڿ�
-    @param  default_value : ���� ���ٸ� ��� ��ȯ�� �⺻��
+    @brief  섹션과 구별자가 지정하는 문자열 데이터를 구한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열
+    @param  str_identify : 구별자 문자열
+    @param  default_value : 값이 없다면 대신 반환될 기본값
     @return\n
-        ���ǰ� �������� ���ڿ� ����\n
-        ������ �����̳� �����ڿ� ���� ���ڿ��� ���ٸ� �⺻���� ��ȯ
-    @warning ���� ��ȯ ���� ���ڿ��� �Ҹ� ���Ѽ��� �� �ȴ�!!
+        섹션과 구별자의 문자열 정보\n
+        저정한 섹션이나 구별자에 대한 문자열이 없다면 기본값을 반환
+    @warning 절대 반환 받은 문자열을 소멸 시켜서는 안 된다!!
 */
 {
     char    *data;
 
     data    = read_string( inifile, str_section, str_identify);
     if ( NULL == data)                                  return default_value;
-    else if ( 0 == strlen( data) )                      return default_value;           // ���ڿ� �����Ͱ� ���ٸ� �⺻���� ��ȯ�Ѵ�.
+    else if ( 0 == strlen( data) )                      return default_value;           // 문자열 데이터가 없다면 기본값을 반환한다.
     else                                                return data;
 }
 
 char         ini_read_char( inifile_t *inifile, char *str_section, char *str_identify, char default_value)
 /**
-    @brief  ���ǰ� �����ڰ� �����ϴ� �ɸ��� ����Ÿ�� ���Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�
-    @param  str_identify : ������ ���ڿ�
-    @param  default_value : ���� ���ٸ� ��� ��ȯ�� �⺻��
+    @brief  섹션과 구별자가 지정하는 케릭터 데이타를 구한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열
+    @param  str_identify : 구별자 문자열
+    @param  default_value : 값이 없다면 대신 반환될 기본값
     @return\n
-        ���ǰ� �������� ���ڿ� ����\n
-        ������ �����̳� �����ڿ� ���� ���ڿ��� ���ٸ� �⺻���� ��ȯ
-    @warning ���� ��ȯ ���� ���ڿ��� �Ҹ� ���Ѽ��� �� �ȴ�!!
+        섹션과 구별자의 문자열 정보\n
+        저정한 섹션이나 구별자에 대한 문자열이 없다면 기본값을 반환
+    @warning 절대 반환 받은 문자열을 소멸 시켜서는 안 된다!!
 */
 {
 	char *cc;
@@ -587,13 +587,13 @@ char         ini_read_char( inifile_t *inifile, char *str_section, char *str_ide
 
 tstrlist *ini_read_section( inifile_t *inifile, char *str_section)
 /**
-    @brief  ������ ������ �ִ� ��� ������ ���ڿ��� ������ tstrlist �������� ���Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ���� ���ڿ�
+    @brief  섹션이 가지고 있는 모든 구별자 문자열의 정보를 tstrlist 형식으로 구한다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 섹션 문자열
     @return\n
-        ������ ������ �ִ� ��� ������ ���ڿ��� ������ �ִ� tstrlist ��ü\n
-        ������ ������ ���ٸ� NULL�� ��ȯ
-    @warning ���� ��ȯ ���� ��ü�� �Ҹ� ���Ѽ��� �� �ȴ�!!
+        섹션이 가지고 있는 모든 구별자 문자열을 가지고 있는 tstrlist 객체\n
+        저정한 섹션이 없다면 NULL을 반환
+    @warning 절대 반환 받은 객체를 소멸 시켜서는 안 된다!!
 */
 {
     tstrlist   *lst_section;
@@ -610,10 +610,10 @@ tstrlist *ini_read_section( inifile_t *inifile, char *str_section)
 
 tstrlist *ini_read_sections( inifile_t *inifile)
 /**
-    @brief  inifile_t ��ü�� ������ �ִ� ��� ���� ������ tstrlist �������� ���Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @return ��� ���� ���ڿ��� ������ �ִ� tstrlist ��ü
-    @warning ���� ��ȯ ���� ��ü�� �Ҹ� ���Ѽ��� �� �ȴ�!!
+    @brief  inifile_t 객체가 가지고 있는 모든 섹션 정보를 tstrlist 형식으로 구한다.
+    @param  inifile : inifile_t 객체 포인터
+    @return 모든 섹션 문자열을 가지고 있는 tstrlist 객체
+    @warning 절대 반환 받은 객체를 소멸 시켜서는 안 된다!!
 */
 {
     if ( NULL == inifile)
@@ -626,20 +626,20 @@ tstrlist *ini_read_sections( inifile_t *inifile)
 int ini_save_to_file( inifile_t *inifile, char *filename){
 
     /**
-        @brief  inifile_t ��ü ������ ����Ǿ� �ִٸ� ���Ϸ� �����Ѵ�.
-        @param  inifile : inifile_t ��ü ������
-        @return  INI_TRUE - �۾� �� ���� ����
+        @brief  inifile_t 객체 내용이 변경되어 있다면 파일로 저장한다.
+        @param  inifile : inifile_t 객체 포인터
+        @return  INI_TRUE - 작업 중 오류 없음
     */
-    FILE       *fp_inifile;             // ini ���� ��ü
-    tstrlist   *lst_sections;           // inifile_t�� ������ �ִ� ��� ���� ����Ʈ
-    tstrlist   *lst_identifies;         // ������ ������ �ִ� ������ ����Ʈ
-    char       *str_section;            // ���� ���ڿ�
-    char       *str_identify;           // ������ ���ڿ�
-    char       *str_data;               // ���ǰ� �������� ���ڿ� ������
-    int         ndx_sec;                // ��� ������ ó���ϱ� ���� ���� �ε���
-    int         ndx_idn;                // ��� �����ڸ� ó���ϱ� ���� ���� �ε���
-
-    if ( NULL == inifile)                                               // ini ���� ��ü�� ����
+    FILE       *fp_inifile;             // ini 파일 객체
+    tstrlist   *lst_sections;           // inifile_t가 가지고 있는 모든 섹션 리스트
+    tstrlist   *lst_identifies;         // 섹션이 가지고 있는 구별자 리스트
+    char       *str_section;            // 섹션 문자열
+    char       *str_identify;           // 구별자 문자열
+    char       *str_data;               // 섹션과 구별자의 문자열 데이터
+    int         ndx_sec;                // 모든 섹션을 처리하기 위한 루프 인데스
+    int         ndx_idn;                // 모든 구별자를 처리하기 위한 루프 인덱스
+
+    if ( NULL == inifile)                                               // ini 파일 개체가 없음
     {
         ini_error_code  = INIERR_NULL_POINTER;
         return INI_FALSE;
@@ -649,24 +649,24 @@ int ini_save_to_file( inifile_t *inifile, char *filename){
         ini_error_code  = INIERR_NULL_POINTER;
         return INI_FALSE;
     }
-    fp_inifile = fopen( filename, "w");                    //  ini ������ ���� �������� ����
-    if ( NULL == fp_inifile)                                        //  ���� ���� ����
+    fp_inifile = fopen( filename, "w");                    //  ini 파일을 쓰기 전용으로 열기
+    if ( NULL == fp_inifile)                                        //  파일 열기 실패
     {
-        ini_error_code  = INIERR_ACCESS_FAIL;                       //  �����ڵ�: ���� ���� ���� ����
+        ini_error_code  = INIERR_ACCESS_FAIL;                       //  에러코드: 파일 열기 실패 지정
         return INI_FALSE;
     }
-    lst_sections = ini_read_sections( inifile);                     // ini ��ü���� ��� ���� ����Ʈ�� ���Ѵ�.
-    for( ndx_sec = 0; ndx_sec < tstrlist_getcount( lst_sections); ndx_sec++)// ��� ���ǿ� ���ؼ�
+    lst_sections = ini_read_sections( inifile);                     // ini 객체에서 모든 섹션 리스트를 구한다.
+    for( ndx_sec = 0; ndx_sec < tstrlist_getcount( lst_sections); ndx_sec++)// 모든 섹션에 대해서
     {
-        str_section     = tstrlist_get_string( lst_sections, ndx_sec);      // ���� ���ڿ��� ���Ѵ�.
-        fprintf( fp_inifile, "[%s]\n", str_section);                // ���Ͽ� ���� ���ڿ��� ����
+        str_section     = tstrlist_get_string( lst_sections, ndx_sec);      // 섹션 문자열을 구한다.
+        fprintf( fp_inifile, "[%s]\n", str_section);                // 파일에 섹션 문자열을 쓰기
 
-        lst_identifies  = ini_read_section( inifile, str_section);  // ������ ��� ������ ����Ʈ�� ���Ѵ�.
+        lst_identifies  = ini_read_section( inifile, str_section);  // 섹션의 모든 구별자 리스트를 구한다.
         for( ndx_idn = 0; ndx_idn < tstrlist_getcount( lst_identifies); ndx_idn++)
         {
             str_identify    = tstrlist_get_string( lst_identifies, ndx_idn);
             str_data        = ini_read_string( inifile, str_section, str_identify, "");
-            fprintf( fp_inifile, "%s=%s\n", str_identify, str_data);         // �����ڿ� �����͸� ����
+            fprintf( fp_inifile, "%s=%s\n", str_identify, str_data);         // 구별자와 데이터를 쓰기
         }
     }
     fclose( fp_inifile);
@@ -677,14 +677,14 @@ int ini_save_to_file( inifile_t *inifile, char *filename){
 
 int ini_flush( inifile_t *inifile)
 /**
-    @brief  inifile_t ��ü ������ ����Ǿ� �ִٸ� ���Ϸ� �����Ѵ�.
-    @param  inifile : inifile_t ��ü ������
-    @return  INI_TRUE - �۾� �� ���� ����
+    @brief  inifile_t 객체 내용이 변경되어 있다면 파일로 저장한다.
+    @param  inifile : inifile_t 객체 포인터
+    @return  INI_TRUE - 작업 중 오류 없음
 */
 {
     int     rst = INIERR_NONE;
 
-    if ( INI_TRUE == inifile->is_changed){                              // �����Ͱ� ����Ǿ��ų� �߰��Ǿ���
+    if ( INI_TRUE == inifile->is_changed){                              // 데이터가 변경되었거나 추가되었음
         inifile->is_changed = INI_FALSE;
         rst = ini_save_to_file( inifile, inifile->filename);
     }
@@ -693,10 +693,10 @@ int ini_flush( inifile_t *inifile)
 
 void ini_remove_section( inifile_t *inifile, char *str_section)
 /**
-    @brief  ������ ������ �����մϴ�.
-    @param  inifile : inifile_t ��ü ������
-    @param  str_section : ������ ����
-    @warning �����̳� �߰��� �ڷḦ ���� ini_flush()�� ȣ���Ѵ�.
+    @brief  지정된 섹션을 제거합니다.
+    @param  inifile : inifile_t 객체 포인터
+    @param  str_section : 삭제할 섹션
+    @warning 변경이나 추가된 자료를 위해 ini_flush()를 호출한다.
 */
 {
     tstrlist   *psection;
@@ -714,13 +714,13 @@ void ini_remove_section( inifile_t *inifile, char *str_section)
                 psection = ( tstrlist *)tstrlist_get_object( inifile->lst_sections, index);
                 for ( ndx_idn = 0; ndx_idn < tstrlist_getcount( psection); ndx_idn++)
                 {
-                    pdata   = ( char *)tstrlist_get_object( psection, ndx_idn);         // identify�� ������ ������ ���ڿ� �޸𸮸� ����
+                    pdata   = ( char *)tstrlist_get_object( psection, ndx_idn);         // identify에 지정된 데이터 문자열 메모리를 제거
                     free( pdata);
                 }
                 tstrlist_free( psection);
                 tstrlist_delete( inifile->lst_sections, index);
 
-		        inifile->is_changed = INI_TRUE;	// [KTG] section ������ ���ؼ��� ���Ͽ� �ݿ��ǵ��� �ϱ� ����.
+		        inifile->is_changed = INI_TRUE;	// [KTG] section 삭제에 대해서도 파일에 반영되도록 하기 위함.
             }
         }
     }
@@ -728,9 +728,9 @@ void ini_remove_section( inifile_t *inifile, char *str_section)
 
 void ini_free( inifile_t *inifile)
 /**
-    @brief  inifile_t ��ü�� �Ҹ�
-    @param  inifile : inifile_t ��ü ������
-    @warning �����̳� �߰��� �ڷḦ ���� ini_flush()�� ȣ���Ѵ�.
+    @brief  inifile_t 객체를 소멸
+    @param  inifile : inifile_t 객체 포인터
+    @warning 변경이나 추가된 자료를 위해 ini_flush()를 호출한다.
 */
 {
     tstrlist   *psection;
@@ -740,8 +740,8 @@ void ini_free( inifile_t *inifile)
 
     if ( NULL != inifile)
     {
-        ini_flush( inifile);                                            // ����� ������ �ִٸ� ���Ϸ� ����
-        if ( NULL != inifile->filename) free( inifile->filename);       // ���� �̸��� �޸� �Ҹ�
+        ini_flush( inifile);                                            // 변경된 내용이 있다면 파일로 저장
+        if ( NULL != inifile->filename) free( inifile->filename);       // 파일 이름의 메모리 소멸
         if ( NULL != inifile->lst_sections)
         {
             for ( ndx_sec = 0; ndx_sec < tstrlist_getcount( inifile->lst_sections); ndx_sec++)
@@ -749,7 +749,7 @@ void ini_free( inifile_t *inifile)
                 psection    = tstrlist_get_object( inifile->lst_sections, ndx_sec);
                 for ( ndx_idn = 0; ndx_idn < tstrlist_getcount( psection); ndx_idn++)
                 {
-                    pdata   = ( char *)tstrlist_get_object( psection, ndx_idn);         // identify�� ������ ������ ���ڿ� �޸𸮸� ����
+                    pdata   = ( char *)tstrlist_get_object( psection, ndx_idn);         // identify에 지정된 데이터 문자열 메모리를 제거
                     free( pdata);
                 }
                 tstrlist_free( psection);
@@ -762,41 +762,41 @@ void ini_free( inifile_t *inifile)
 
 inifile_t *ini_create( char *filename)
 /**
-    @brief  filename�� ������ ���ǰ� �����ڷ� �����Ͽ� �о� ���δ�.\n
-    file���� �ڷḦ �о� ���� �Ŀ��� �����Ͱ� ����Ǿ� ������ �ʿ��ϱ� �������� \n
-    �ٽ� ������ �\���� �ʿ䰡 ����.
-    @param  filename : ini ������ �̸�
+    @brief  filename의 내용을 섹션과 구별자로 구분하여 읽어 들인다.\n
+    file에서 자료를 읽어 들인 후에는 데이터가 변경되어 저장이 필요하기 전까지는 \n
+    다시 파일을 억세스할 필요가 없다.
+    @param  filename : ini 파일의 이름
     @return\n
-        ini ������ ��� ������ ���� inifile_t ��ü ������
-        �б⿡ �����ߴٸ� NULL�� ��ȯ
+        ini 파일의 모든 내용을 담은 inifile_t 객체 포인터
+        읽기에 실패했다면 NULL을 반환
 */
 {
-    inifile_t  *inifile;                // ini ���� ��ü
-    FILE       *fp_inifile;             // ini ������ �б� ���� ���� ������
-    int         sz_filename;            // ini ������ ��ü �̸� ũ��
+    inifile_t  *inifile;                // ini 파일 객체
+    FILE       *fp_inifile;             // ini 파일을 읽기 위한 파일 포인터
+    int         sz_filename;            // ini 파일의 전체 이름 크기
 
-    if ( 0 != access( filename, F_OK | R_OK))                           //  IniFile ���� Ȯ�� �� �бⰡ �������� Ȯ��
+    if ( 0 != access( filename, F_OK | R_OK))                           //  IniFile 존재 확인 및 읽기가 가능한지 확인
     {
-        fp_inifile = fopen( filename, "w");                             //  ������ ���ٸ� ���� ������ ���������� Ȯ���Ѵ�.
-        if ( NULL == fp_inifile)                                        //  ���� ������ �����ߴٸ� �����ڵ� ��ȯ
+        fp_inifile = fopen( filename, "w");                             //  파일이 없다면 파일 생성이 가능한지를 확인한다.
+        if ( NULL == fp_inifile)                                        //  파일 생성에 실패했다면 에러코드 반환
         {
-            ini_error_code  = INIERR_ACCESS_FAIL;                       //  �����ڵ�: ���� ���� ���� ����
+            ini_error_code  = INIERR_ACCESS_FAIL;                       //  에러코드: 파일 열기 실패 지정
             return  NULL;
         }
         fclose( fp_inifile);
     }
     
-    inifile = malloc( sizeof( inifile_t));                              //  ini ���� ��ü ����
-    if ( NULL == inifile)                                               //  ��ü�� ���� �޸� �Ҵ翡 �����ϸ�
+    inifile = malloc( sizeof( inifile_t));                              //  ini 파일 객체 생성
+    if ( NULL == inifile)                                               //  객체를 위한 메모리 할당에 실패하면
     {
-        ini_error_code  = INIERR_OUT_OF_MEMORY;                         //  �����ڵ� ����
+        ini_error_code  = INIERR_OUT_OF_MEMORY;                         //  에러코드 지정
         return  NULL;
     }
-    inifile->filename       = NULL;                                     //  �⺻�� ����: ���� �̸� ������ ���� �� �Ǿ� ����
+    inifile->filename       = NULL;                                     //  기본값 지정: 파일 이름 지정이 아직 안 되어 있음
     inifile->lst_sections   = NULL;                                     //  
-    inifile->is_changed     = INI_FALSE;                                //  �⺻�� ����: ����� ������ ����
+    inifile->is_changed     = INI_FALSE;                                //  기본값 지정: 변경된 내용이 없음
 
-    sz_filename             = strlen( filename);                        //  ���� �̸��� ��ü ������ �����Ѵ�.
+    sz_filename             = strlen( filename);                        //  파일 이름을 객체 정보에 저장한다.
     if ( 0 == sz_filename)
     {
         ini_free( inifile);
@@ -804,29 +804,29 @@ inifile_t *ini_create( char *filename)
         return  NULL;
     }
     inifile->filename = malloc( sz_filename+1);
-    if ( NULL == inifile->filename)                                     //  �޸� �Ҵ翡 �����ߴٸ� ���� ó���Ѵ�.
+    if ( NULL == inifile->filename)                                     //  메모리 할당에 실패했다면 에러 처리한다.
     {
         ini_free( inifile);
         ini_error_code  = INIERR_OUT_OF_MEMORY;
         return  NULL;
     }
     memcpy( inifile->filename, filename, sz_filename+1);
-    inifile->lst_sections = tstrlist_create();                          //  ��Ʈ ������ ����
-    if ( NULL == inifile->lst_sections)                                 //  ��Ʈ ������ ���� ��Ʈ�� ����Ʈ�� �������� ���ߴٸ�
+    inifile->lst_sections = tstrlist_create();                          //  루트 섹션을 생성
+    if ( NULL == inifile->lst_sections)                                 //  루트 섹션을 위한 스트링 리스트를 생성하지 못했다면
     {
         ini_free( inifile);
-        ini_error_code  = INIERR_CREATE_SECTION_FAIL;                   //  �����ڵ�: ��Ʈ ���� ����Ʈ ����
+        ini_error_code  = INIERR_CREATE_SECTION_FAIL;                   //  에러코드: 루트 섹션 리스트 생성
         return  NULL;
     }
 
-    fp_inifile = fopen( filename, "r");                                 //  IniFile�� ������ ���⸦ ��
-    if ( NULL == fp_inifile)                                            //  ���� ���� ����
+    fp_inifile = fopen( filename, "r");                                 //  IniFile의 파일을 열기를 함
+    if ( NULL == fp_inifile)                                            //  파일 열기 실패
     {                                                                   
         ini_free( inifile);                                             
-        ini_error_code  = INIERR_ACCESS_FAIL;                           //  �����ڵ�: ���� ���� ���� ����
+        ini_error_code  = INIERR_ACCESS_FAIL;                           //  에러코드: 파일 열기 실패 지정
         return  NULL;                                                   
     }                                                                   
-    read_inifile_data( fp_inifile, inifile);                            // IniFile ������ ��� �о� ����
+    read_inifile_data( fp_inifile, inifile);                            // IniFile 내용을 모두 읽어 들임
     fclose( fp_inifile);
     
     return inifile;
diff --git a/app/app-prime-modbus/lib/common/tlist.c b/app/app-prime-modbus/lib/common/tlist.c
index e3aba83..3ad4180 100644
--- a/app/app-prime-modbus/lib/common/tlist.c
+++ b/app/app-prime-modbus/lib/common/tlist.c
@@ -1,17 +1,17 @@
 /**    
     @file     tlist.c
     @date     1997/10/7
-    @author   ����â frog@falinux.com  FALinux.Co.,Ltd.
+    @author   유영창 frog@falinux.com  FALinux.Co.,Ltd.
     @brief    Ver 1.0.1
-              Delphi ������ ����Ʈ ��ü�̴�.
+              Delphi 형식의 리스트 객체이다.
               
     @modify   
-    		  ����� (2012/2/7, Ver 1.0.2)
-                - tlist_clear() ���� ���� ���� (���� �߿���)
+    		  오재경 (2012/2/7, Ver 1.0.2)
+                - tlist_clear() 해제 에러 수정 (아주 중요함)
     
-    		  ����� (2009/1/14, Ver 1.0.1)
-                - �ε��� �����Լ� �߰�
-                - ������ ��� return �ڵ� �߰�
+    		  오재경 (2009/1/14, Ver 1.0.1)
+                - 인덱스 에러함수 추가
+                - 에러일 경우 return 코드 추가
    
     @todo    
     @bug     
@@ -19,11 +19,11 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -49,8 +49,8 @@
 char desc_tlist[] = "falinux tlist ver 1.0.1";
 
 //------------------------------------------------------------------------------
-/** @brief   �����Լ�
-    @param   that   ���� ��ü�� ������
+/** @brief   에러함수
+    @param   that   관리 객체의 포인터
 *///----------------------------------------------------------------------------
 void   tlist_error      ( tlist *that )
 {
@@ -58,9 +58,9 @@ void   tlist_error      ( tlist *that )
 //  exit( 1 ); 
 }
 //------------------------------------------------------------------------------
-/** @brief   ��� ��������
-    @param   that   ���� ��ü�� ������
-    @param   index  �������
+/** @brief   인덱스 범위에러
+    @param   that   관리 객체의 포인터
+    @param   index  에러인덱스
 *///----------------------------------------------------------------------------
 void   tlist_error_index  ( tlist *that, int index )
 {
@@ -68,8 +68,8 @@ void   tlist_error_index  ( tlist *that, int index )
 //    exit( 1 ); 
 }
 //------------------------------------------------------------------------------
-/** @brief   tlist ��ü�� �����Ѵ�.
-    @return  ��ü�� ������
+/** @brief   tlist 객체를 생성한다.
+    @return  객체의 포인터
 *///----------------------------------------------------------------------------
 tlist* tlist_create     ( void )
 {
@@ -85,8 +85,8 @@ tlist* tlist_create     ( void )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   tlist ��ü�� �Ҹ��Ų��.
-    @param   *that ���� ��ü�� ������
+/** @brief   tlist 객체를 소멸시킨다.
+    @param   *that 관리 객체의 포인터
 *///----------------------------------------------------------------------------
 void   tlist_free       ( tlist *that )
 {
@@ -95,10 +95,10 @@ void   tlist_free       ( tlist *that )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   �������� �߰��Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   item ������ �߰��Ǵ� ������ ������
-    @return  �߰��� �������� �ε���
+/** @brief   아이템을 추가한다.
+    @param   that 관리 객체의 포인터
+    @param   item 새로이 추가되는 아이템 포인터
+    @return  추가된 아이템의 인덱스
 *///----------------------------------------------------------------------------
 int    tlist_add        ( tlist *that, void *item )
 {
@@ -113,8 +113,8 @@ int    tlist_add        ( tlist *that, void *item )
      return result;
 }
 //------------------------------------------------------------------------------
-/** @brief   ��� �������� �����Ѵ�.
-    @param   that ���� ��ü�� ������
+/** @brief   모든 아이템을 제거한다.
+    @param   that 관리 객체의 포인터
 *///----------------------------------------------------------------------------
 void   tlist_clear      ( tlist *that )
 {
@@ -127,9 +127,9 @@ void   tlist_clear      ( tlist *that )
 	that->fcapacity = 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   �ϳ��� �������� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index ���ŵ� �������� �ε���
+/** @brief   하나의 아이템을 제거한다.
+    @param   that 관리 객체의 포인터
+    @param   index 제거될 아이템의 인덱스
 *///----------------------------------------------------------------------------
 void   tlist_delete     ( tlist *that, int index )
 {
@@ -145,10 +145,10 @@ void   tlist_delete     ( tlist *that, int index )
                                         ( that->fcount - index ) * sizeof( void * ) );
 }
 //------------------------------------------------------------------------------
-/** @brief   2���� ������ ��ġ�� ��ȯ�Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index1 ��ȯ�� �ε���1
-    @param   index2 ��ȯ�� �ε���2
+/** @brief   2개의 아이템 위치를 교환한다.
+    @param   that 관리 객체의 포인터
+    @param   index1 교환할 인덱스1
+    @param   index2 교환할 인덱스2
 *///----------------------------------------------------------------------------
 void   tlist_exchange   ( tlist *that, int index1, int index2 )
 {
@@ -166,9 +166,9 @@ void   tlist_exchange   ( tlist *that, int index1, int index2 )
     that->flist[ index2 ] = item;  
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ Ǯ�� �뷮�� Ȯ���Ѵ�.
-    @param   that ���� ��ü�� ������
-    @return  ��ü�� ������
+/** @brief   아이템 풀의 용량을 확장한다.
+    @param   that 관리 객체의 포인터
+    @return  객체의 포인터
 *///----------------------------------------------------------------------------
 tlist *tlist_expand     ( tlist *that )
 {
@@ -176,19 +176,19 @@ tlist *tlist_expand     ( tlist *that )
     return that;
 }
 //------------------------------------------------------------------------------
-/** @brief   ù��° ������ �����͸� �����ش�.
-    @param   that ���� ��ü�� ������
-    @return  ù��° ������ ������
+/** @brief   첫번째 아이템 포인터를 돌려준다.
+    @param   that 관리 객체의 포인터
+    @return  첫번째 아이템 포인터
 *///----------------------------------------------------------------------------
 void  *tlist_first      ( tlist *that )
 {
     return tlist_get( that, 0 );
 }
 //------------------------------------------------------------------------------
-/** @brief   �ε����� �ش��ϴ� ������ �����͸� �����ش�.
-    @param   that ���� ��ü�� ������
-    @param   index ������ ���
-    @return  �ε����� �ش��ϴ� ������ ������
+/** @brief   인덱스에 해당하는 아이템 포인터를 돌려준다.
+    @param   that 관리 객체의 포인터
+    @param   index 아이템 인덱스
+    @return  인덱스에 해당하는 아이템 포인터
 *///----------------------------------------------------------------------------
 void*  tlist_get        ( tlist *that, int index )
 {
@@ -200,8 +200,8 @@ void*  tlist_get        ( tlist *that, int index )
     return( that->flist[ index ] );
 }
 //------------------------------------------------------------------------------
-/** @brief   �������� �� �޸𸮸� ������Ų��.
-    @param   that ���� ��ü�� ������
+/** @brief   아이템이 들어갈 메모리를 증가시킨다.
+    @param   that 관리 객체의 포인터
 *///----------------------------------------------------------------------------
 void   tlist_grow     ( tlist *that )
 {
@@ -214,10 +214,10 @@ void   tlist_grow     ( tlist *that )
     tlist_setcapacity( that, that->fcapacity + delta ); 
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ �����Ͱ� ������ �������� �ε����� ���Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index  ������ ������
-    @return  ������ �����Ͱ� �ش�Ǵ� �ε���
+/** @brief   아이템 포인터가 동일한 포인터의 인덱스를 구한다.
+    @param   that 관리 객체의 포인터
+    @param   index  아이템 포인터
+    @return  아이템 포인터가 해당되는 인덱스
 *///----------------------------------------------------------------------------
 int    tlist_indexof    ( tlist *that, void *item )
 {
@@ -228,10 +228,10 @@ int    tlist_indexof    ( tlist *that, void *item )
     return result;
 }
 //------------------------------------------------------------------------------
-/** @brief   �������� Ư�� ��ġ�� �߰��Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index �߰��� �����۰� �� �ε���
-    @param   item  �߰��� ������ ������
+/** @brief   아이템을 특정 위치에 추가한다.
+    @param   that 관리 객체의 포인터
+    @param   index 추가할 아이템가 들어갈 인덱스
+    @param   item  추가할 아이템 포인터
 *///----------------------------------------------------------------------------
 void   tlist_insert     ( tlist *that, int index, void *item )
 {
@@ -249,19 +249,19 @@ void   tlist_insert     ( tlist *that, int index, void *item )
     that->fcount++;
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ ������ �����͸� ���Ѵ�.
-    @param   that ���� ��ü�� ������
-    @return  ������ ������ ������
+/** @brief   마지막 아이템 포인터를 구한다.
+    @param   that 관리 객체의 포인터
+    @return  마지막 아이템 포인터
 *///----------------------------------------------------------------------------
 void  *tlist_last       ( tlist *that )
 {
     return( tlist_get( that, that->fcount -1 ) );
 }
 //------------------------------------------------------------------------------
-/** @brief   Ư�� �������� ��ġ(�ε���)�� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   curindex ������ �������� ���
-    @param   newindex ����� �������� ���
+/** @brief   특정 아이템의 위치(인덱스)를 변경한다.
+    @param   that 관리 객체의 포인터
+    @param   curindex 변경할 아이템의 인덱스
+    @param   newindex 변경될 아이템의 인덱스
 *///----------------------------------------------------------------------------
 void   tlist_move       ( tlist *that, int curindex, int newindex )
 {
@@ -280,10 +280,10 @@ void   tlist_move       ( tlist *that, int curindex, int newindex )
 	} 
 }
 //------------------------------------------------------------------------------
-/** @brief   Ư���������� �����͸� �����Ѵ�.
-    @param   that  ���� ��ü�� ������
-    @param   index �����۰� ����� �ε���
-    @param   item  ���� ����� ������ ������
+/** @brief   특정아이템의 포인터를 변경한다.
+    @param   that  관리 객체의 포인터
+    @param   index 아이템가 변경될 인덱스
+    @param   item  새로 변경될 아이템 포인터
 *///----------------------------------------------------------------------------
 void   tlist_put        ( tlist *that, int index, void *item )
 {
@@ -296,10 +296,10 @@ void   tlist_put        ( tlist *that, int index, void *item )
 	that->flist[ index ] = item;
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڷ� ������ ������ ������ �����͸� ã�� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   item ������ �������� ������
-    @return  ������ �������� ���� ���
+/** @brief   인자로 전해준 동일한 아이템 포인터를 찾아 삭제한다.
+    @param   that 관리 객체의 포인터
+    @param   item 삭제할 아이템의 포인터
+    @return  삭제된 아이템의 과거 인덱스
 *///----------------------------------------------------------------------------
 int    tlist_remove     ( tlist *that, void *item )
 {
@@ -309,10 +309,10 @@ int    tlist_remove     ( tlist *that, void *item )
     return result;
 }
 //------------------------------------------------------------------------------
-/** @brief   �޸� ������ ���� ������� �ʴ� �޸𸮸� ��ȯ�Ѵ�.
-    @param   that ���� ��ü�� ������
-    @remark  ���� �޸𸮸� ��ȯ���� �ʴ´�.
-    @todo    �޸𸮸� ��ȯ�ϵ��� ���ۼ��Ǿ�� �Ѵ�.
+/** @brief   메모리 관리를 위해 사용하지 않는 메모리를 반환한다.
+    @param   that 관리 객체의 포인터
+    @remark  실제 메모리를 반환하지 않는다.
+    @todo    메모리를 반환하도록 재작성되어야 한다.
 *///----------------------------------------------------------------------------
 void   tlist_pack       ( tlist *that )
 {
@@ -321,9 +321,9 @@ void   tlist_pack       ( tlist *that )
       if( tlist_get( that, loop ) == NULL ) tlist_delete( that, loop );
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ �� �ִ� ������ Ǯ�� �뷮�� �����ϰ� �޸𸮸� �� �Ҵ��Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   newcapacity �Ҵ��ؾ��� ������ Ǯ�� �뷮
+/** @brief   관리할 수 있는 아이템 풀의 용량을 설정하고 메모리를 재 할당한다.
+    @param   that 관리 객체의 포인터
+    @param   newcapacity 할당해야할 아이템 풀의 용량
 *///----------------------------------------------------------------------------
 void   tlist_setcapacity( tlist *that, int newcapacity )
 {
@@ -340,9 +340,9 @@ void   tlist_setcapacity( tlist *that, int newcapacity )
     }
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ �� �ִ� �������� ������ �����ϸ� �������� ������ ������ ������ �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   newcount ����Ǵ� �������� ����
+/** @brief   관리할 수 있는 아이템의 개수를 설정하며 아이템의 개수를 설정된 값으로 변경한다.
+    @param   that 관리 객체의 포인터
+    @param   newcount 변경되는 아이템의 개수
 *///----------------------------------------------------------------------------
 void   tlist_setcount   ( tlist *that, int newcount )
 {
@@ -357,27 +357,27 @@ void   tlist_setcount   ( tlist *that, int newcount )
     that->fcount = newcount; 
 }
 //------------------------------------------------------------------------------
-/** @brief   ������Ǯ�� ũ�⸦ ��´�.
-    @param   that ���� ��ü�� ������
-    @return  ������Ǯ�� ũ��
+/** @brief   아이템풀의 크기를 얻는다.
+    @param   that 관리 객체의 포인터
+    @return  아이템풀의 크기
 *///----------------------------------------------------------------------------
 int    tlist_getcapacity ( tlist *that )
 {
     return that->fcapacity;
 }
 //------------------------------------------------------------------------------
-/** @brief   �������� ������ ��´�.
-    @param   that ���� ��ü�� ������
-    @return  �������� ����
+/** @brief   아이템의 개수를 얻는다.
+    @param   that 관리 객체의 포인터
+    @return  아이템의 개수
 *///----------------------------------------------------------------------------
 int    tlist_getcount   ( tlist *that )
 {
     return that->fcount;
 }
 //------------------------------------------------------------------------------
-/** @brief   �������� ����� ���Լ��� ���� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   tlistsortcomparefunc ����ں� �ݹ��Լ��̸�, int (*func)(const void *, const void *) �����̴�.
+/** @brief   아이템을 사용자 비교함수를 통해 정렬한다.
+    @param   that 관리 객체의 포인터
+    @param   tlistsortcomparefunc 사용자비교 콜백함수이며, int (*func)(const void *, const void *) 형태이다.
 *///----------------------------------------------------------------------------
 void   tlist_sort       ( tlist *that,int (*tlistsortcomparefunc)(const void *, const void *) )
 {
diff --git a/app/app-prime-modbus/lib/common/tmmap.c b/app/app-prime-modbus/lib/common/tmmap.c
index e5bcf83..96a7fec 100644
--- a/app/app-prime-modbus/lib/common/tmmap.c
+++ b/app/app-prime-modbus/lib/common/tmmap.c
@@ -1,17 +1,17 @@
 /**    
     @file     tmmap.c
     @date     2009/07/06
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    mmap �� �ٷ�� �Լ��� ��üȭ �Ͽ���.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    mmap 를 다루는 함수를 객체화 하였다.
               
-    @todo     �׽�Ʈ �Լ��� ���� ������ �ʾҴ�.
+    @todo     테스트 함수를 아직 만들지 않았다.
     @bug     
     @remark  
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -32,24 +32,24 @@
 #include <tmmap.h>
 
 
-/// mmap �� ���� ���� ���� ����ü
+/// mmap 를 위한 개별 관리 구조체
 typedef struct {
 	
-	int            dev;         // /dev/mem �����ڵ�
-	unsigned long  phys;        // �����ּ�
-	unsigned long  size;        // ũ��
-	int            base_ofs;    // ���̽� �ּҰ� 4K ������ ���� �ʾ����� ���
+	int            dev;         // /dev/mem 파일핸들
+	unsigned long  phys;        // 물리주소
+	unsigned long  size;        // 크기
+	int            base_ofs;    // 베이스 주소가 4K 정렬이 되지 않았을때 사용
 
-	void          *virt;        // �Ҵ���� �޸�������
+	void          *virt;        // 할당받은 메모리포인터
 	
 } mmap_alloc_t;
 
 
-static tlist *ma_list = NULL;   /// mmap ���� ����Ʈ
+static tlist *ma_list = NULL;   /// mmap 관리 리스트
 
 
 //------------------------------------------------------------------------------
-/** @brief   mmap �����Լ�
+/** @brief   mmap 생성함수
     @param   base
     @param   size
 *///----------------------------------------------------------------------------
@@ -60,17 +60,17 @@ void  *tmmap_alloc( unsigned long phys_base, unsigned long size )
 	void          *mmap_mem;
 	mmap_alloc_t  *ma;
 	
-	// ���� ����Ʈ�� �����Ѵ�.
+	// 관리 리스트를 생성한다.
 	if ( NULL == ma_list )
 	{
 		ma_list = tlist_create();	
 	}
 	
-	// 4K ���� �ּҷ� �����Ѵ�.
+	// 4K 정렬 주소로 변경한다.
 	base_ofs   = phys_base & (PAGE_SIZE-1);
 	phys_base &= ~(PAGE_SIZE-1);
 	
-	// 4K ������ �޸𸮸� �Ҵ�޴´�.
+	// 4K 단위의 메모리를 할당받는다.
 	size = PAGE_SIZE * ( (size + base_ofs + (PAGE_SIZE-1))/(PAGE_SIZE) );
 	
 	dev_mem = open( "/dev/mem", O_RDWR|O_SYNC );
@@ -80,12 +80,12 @@ void  *tmmap_alloc( unsigned long phys_base, unsigned long size )
 		return NULL;
 	}
 
-	// mmap �� �����Ѵ�.
-	mmap_mem = mmap( 0,                                // Ŀ�ο��� �˾Ƽ� �Ҵ��û
-                     size,                             // �Ҵ� ũ��
-                     PROT_READ|PROT_WRITE, MAP_SHARED, // �Ҵ� �Ӽ�
-                     dev_mem,                          // ���� �ڵ�
-                     phys_base );                      // ���� ����� �����ּ�	
+	// mmap 로 맵핑한다.
+	mmap_mem = mmap( 0,                                // 커널에서 알아서 할당요청
+                     size,                             // 할당 크기
+                     PROT_READ|PROT_WRITE, MAP_SHARED, // 할당 속성
+                     dev_mem,                          // 파일 핸들
+                     phys_base );                      // 매핑 대상의 물리주소	
 	
 	
 	if ( !mmap_mem )
@@ -94,7 +94,7 @@ void  *tmmap_alloc( unsigned long phys_base, unsigned long size )
 		return NULL;
 	}
 
-	// ���� ������ ���� ����ü�� �Ҵ��Ѵ�.
+	// 개별 관리를 위한 구조체를 할당한다.
 	ma = (mmap_alloc_t  *)malloc( sizeof(mmap_alloc_t) );
 	ma->dev      = dev_mem;
 	ma->phys     = phys_base;
@@ -102,15 +102,15 @@ void  *tmmap_alloc( unsigned long phys_base, unsigned long size )
 	ma->virt     = mmap_mem;
 	ma->base_ofs = base_ofs;
 
-	// ���� ����Ʈ�� ����Ѵ�.
+	// 관리 리스트에 등록한다.
 	tlist_add( ma_list, (void *)ma );
 
 	return mmap_mem + base_ofs;
 }
 //------------------------------------------------------------------------------
-/** @brief   mmap�� ȹ���� �޸� �����͸� �̿��Ͽ� ���� ����ü�� ��´�.
-    @param   virt   mmap �� ȹ���� �޸� ������
-    @return  ���
+/** @brief   mmap로 획드한 메모리 포인터를 이용하여 관리 구조체를 얻는다.
+    @param   virt   mmap 로 획드한 메모리 포인터
+    @return  인덱스
 *///----------------------------------------------------------------------------
 static int tmmap_get_index( void *virt )
 {
@@ -124,7 +124,7 @@ static int tmmap_get_index( void *virt )
 		{
 			ma = (mmap_alloc_t *)tlist_get( ma_list, idx );
 			
-			// ����޸𸮰� ������ �ּ����� Ȯ���Ѵ�.
+			// 가상메모리가 동일한 주소인지 확인한다.
 			if( (ma->virt + ma->base_ofs) == virt )
 			{
 				return idx;
@@ -135,8 +135,8 @@ static int tmmap_get_index( void *virt )
 	return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief   mmap  �����͸� �����Ѵ�.
-    @param   mem   mmap �� ȹ���� �޸� ������
+/** @brief   mmap  포인터를 해제한다.
+    @param   mem   mmap 로 획드한 메모리 포인터
 *///----------------------------------------------------------------------------
 void  tmmap_free( void *mem )
 {
@@ -145,7 +145,7 @@ void  tmmap_free( void *mem )
 		
 	if ( ma_list && mem )
 	{
-		// �ش��ϴ� �������� ã�� �޸𸮸� �����Ѵ�.
+		// 해당하는 아이템을 찾아 메모리를 해제한다.
 		idx = tmmap_get_index( mem );
 		if ( 0 <= idx )
 		{
@@ -158,7 +158,7 @@ void  tmmap_free( void *mem )
 			tlist_delete( ma_list, idx );
 		} 
 
-		// �������� ���ٸ� �����ڵ� �����Ѵ�.
+		// 아이템이 없다면 관리자도 해제한다.
 		if ( 0 >= tlist_getcount( ma_list ) )
 		{
 			tlist_free( ma_list );
diff --git a/app/app-prime-modbus/lib/common/tstrlist.c b/app/app-prime-modbus/lib/common/tstrlist.c
index 6d90750..4e6d334 100644
--- a/app/app-prime-modbus/lib/common/tstrlist.c
+++ b/app/app-prime-modbus/lib/common/tstrlist.c
@@ -1,16 +1,16 @@
 /**    
     @file     tstrlist.c
     @date     2009/1/14
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
     @brief    Ver 0.9.1
-              Delphi ������ ��Ʈ������Ʈ ��ü�̴�.
-              tlist.c ���� ������ tlist �� ���(?) �޾� ����Ѵ�.
+              Delphi 형식의 스트링리스트 객체이다.
+              tlist.c 에서 구현한 tlist 를 상속(?) 받아 사용한다.
     
     @modify   
     @todo     
     @bug     
     
-    @remark   �Լ� �׽�Ʈ �ʿ� (�׽�Ʈ �Ϸ�ǥ�� ">>")
+    @remark   함수 테스트 필요 (테스트 완료표시 ">>")
     
               >>tstrlist_create     
               >>tstrlist_free       
@@ -40,12 +40,12 @@
     @warning 
 */
 //  
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -70,47 +70,47 @@
 char desc_tstrlist[] = "falinux tstrlist ver 0.9.0";
 
 /// @{
-/// @brief  local �Լ�����Ʈ
-static int  tstrlist_calcu_strcap( const char *str );                                   /// �Ҵ��� ���ڿ��� ������ ����Ѵ�.
-static tstritem *tstrlist_newitem( const char *str );                                   /// ���ο� ���ڿ� �������� �����Ѵ�.
-static tstritem *tstrlist_replace_itemstr( tstritem *sitem, const char *str );          /// ���ڿ� �������� ���ڿ��� �����Ѵ�.
-static int tstrlist_sortfunc( const void *ppa, const void *ppb );                       /// ���ڿ� ������ ���� ũ�⸦ ���Ѵ�.
+/// @brief  local 함수리스트
+static int  tstrlist_calcu_strcap( const char *str );                                   /// 할당할 문자열의 공간을 계산한다.
+static tstritem *tstrlist_newitem( const char *str );                                   /// 새로운 문자열 아이템을 생성한다.
+static tstritem *tstrlist_replace_itemstr( tstritem *sitem, const char *str );          /// 문자열 아이템의 문자열을 변경한다.
+static int tstrlist_sortfunc( const void *ppa, const void *ppb );                       /// 문자열 정렬을 위해 크기를 비교한다.
 /// @}
 
 
 
 static void trim( char *str)
-// ����: �μ��� ���� ���ڿ����� �հ� ���� ���� ���ڸ� �����Ѵ�.
+// 설명: 인수로 받은 문자열에서 앞과 뒤의 공백 문자를 제거한다.
 {
     int     sz_str;
     int     ndx;
 
     sz_str = strlen( str);
-    for( ndx = sz_str; 0 <= ndx; ndx--)                                         // ���ڿ� ���� ȭ��Ʈ ���ڸ� ����
+    for( ndx = sz_str; 0 <= ndx; ndx--)                                         // 문자열 뒤의 화이트 문자를 제거
     {
-        if ( ' ' != str[ndx])    break;                                         // �ѱ��� ���� ��츦 �����ؼ� ' ' ���ڸ� ���� ���Ѵ�.
+        if ( ' ' != str[ndx])    break;                                         // 한글이 있을 경우를 생각해서 ' ' 문자를 직접 비교한다.
         str[ndx]   = '\0';
     }
 
-    sz_str  = strlen( str);                                                     // ���ڿ� ���� ȭ��Ʈ ���ڸ� ����
+    sz_str  = strlen( str);                                                     // 문자열 앞의 화이트 문자를 제거
     for( ndx = 0; ndx < sz_str; ndx++)
     {
-        if ( ' ' != str[ndx])                                                   // �ѱ��� ���� ��츦 �����ؼ� ' ' ���ڸ� ���� ���Ѵ�.
+        if ( ' ' != str[ndx])                                                   // 한글이 있을 경우를 생각해서 ' ' 문자를 직접 비교한다.
             break;
     }         
     
-    memcpy( str, str+ndx, strlen( str));                                        // ȸ��Ʈ ���ڰ� �ƴ� �κ��� �������� ���� ��ġ�� �̵�
+    memcpy( str, str+ndx, strlen( str));                                        // 회이트 문자가 아닌 부분을 포인터의 시작 위치로 이동
 }
 
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ����� �յ��� Ư�����ڿ� ���鹮�ڸ� �����Ѵ�.
-    @param   line ���ڿ� ������
+/** @brief   문자열에서 앞뒤의 특수문자와 공백문자를 제거한다.
+    @param   line 문자열 포인터
 *///----------------------------------------------------------------------------
 static void  __trimstr( char *line )
 {
 	int   idx, len;
 	
-	// ���� ���鹮�ڿ� Ư������ ����
+	// 뒷쪽 공백문자와 특수문자 제거
 	len = strlen(line);
 	for( idx=len-1; idx>=0; idx-- )
 	{
@@ -118,7 +118,7 @@ static void  __trimstr( char *line )
 	}
 	line[idx+1] = '\0';
 	
-	// ���� ���鹮�ڿ� Ư������ ����
+	// 앞쪽 공백문자와 특수문자 제거
 	len = strlen(line);
 	for( idx=0; idx<len; idx++ )
 	{
@@ -130,10 +130,10 @@ static void  __trimstr( char *line )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   �Ҵ��� ���ڿ��� ������ ����Ѵ�.
-    @param   str �߰��Ǵ� ���ڿ� ������
-    @return  �Ҵ��� ���ڿ��� ����
-    @remark  �ּ� MIN_STR_LEN ����Ʈ�̻��̸� 2�� ����� �����Ѵ�.
+/** @brief   할당할 문자열의 공간을 계산한다.
+    @param   str 추가되는 문자열 포인터
+    @return  할당할 문자열의 개수
+    @remark  최소 MIN_STR_LEN 바이트이상이며 2의 배수로 증가한다.
 *///----------------------------------------------------------------------------
 static int  tstrlist_calcu_strcap( const char *str )
 {
@@ -154,9 +154,9 @@ static int  tstrlist_calcu_strcap( const char *str )
 	return slen;
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ο� ���ڿ� �������� �����Ѵ�.
-    @param   str �߰��Ǵ� ���ڿ� ������
-    @return  ������ ���ڿ� ������ ����ü ������
+/** @brief   새로운 문자열 아이템을 생성한다.
+    @param   str 추가되는 문자열 포인터
+    @return  생성된 문자열 아이템 구조체 포인터
 *///----------------------------------------------------------------------------
 static tstritem *tstrlist_newitem( const char *str )
 {
@@ -176,10 +176,10 @@ static tstritem *tstrlist_newitem( const char *str )
 	return sitem;
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ� �������� ���ڿ��� �����Ѵ�.
-    @param   sitem ���ڿ� ������ ����ü�� ������
-    @param   str ����Ǵ� ���ڿ� ������
-    @return  ����� �����۱���ü ������
+/** @brief   문자열 아이템의 문자열을 변경한다.
+    @param   sitem 문자열 아이템 구조체의 포인터
+    @param   str 변경되는 문자열 포인터
+    @return  변경된 아이템구조체 포인터
 *///----------------------------------------------------------------------------
 static tstritem *tstrlist_replace_itemstr( tstritem *sitem, const char *str )
 {
@@ -207,8 +207,8 @@ static tstritem *tstrlist_replace_itemstr( tstritem *sitem, const char *str )
 
 
 //------------------------------------------------------------------------------
-/** @brief   tstrlist ��ü�� �����Ѵ�.
-    @return  ��ü�� ������
+/** @brief   tstrlist 객체를 생성한다.
+    @return  객체의 포인터
 *///----------------------------------------------------------------------------
 tstrlist* tstrlist_create     ( void )
 {
@@ -220,8 +220,8 @@ tstrlist* tstrlist_create     ( void )
    return that;
 }
 //------------------------------------------------------------------------------
-/** @brief   tstrlist ��ü�� �Ҹ��Ų��.
-    @param   *that ���� ��ü�� ������
+/** @brief   tstrlist 객체를 소멸시킨다.
+    @param   *that 관리 객체의 포인터
 *///----------------------------------------------------------------------------
 void   tstrlist_free       ( tstrlist *that )
 {
@@ -230,8 +230,8 @@ void   tstrlist_free       ( tstrlist *that )
     free( that );
 }
 //------------------------------------------------------------------------------
-/** @brief   ��� �������� �����Ѵ�.
-    @param   that ���� ��ü�� ������
+/** @brief   모든 아이템을 제거한다.
+    @param   that 관리 객체의 포인터
 *///----------------------------------------------------------------------------
 void   tstrlist_clear      ( tstrlist *that )
 {
@@ -239,7 +239,7 @@ void   tstrlist_clear      ( tstrlist *that )
 	void  *ptr;
 	tlist *tlst = that->ftlst;
 	
-	// ���ڿ� ��ü�� �����Ѵ�.
+	// 문자열 객체를 해제한다.
 	for (loop=0; loop<tlst->fcount; loop++)
 	{
 		ptr = tlist_get( tlst, loop );
@@ -249,10 +249,10 @@ void   tstrlist_clear      ( tstrlist *that )
 	tlist_clear( tlst );
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ� �������� �߰��Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   str ������ �߰��Ǵ� ���ڿ� ������
-    @return  �߰��� �������� �ε���
+/** @brief   문자열 아이템을 추가한다.
+    @param   that 관리 객체의 포인터
+    @param   str 새로이 추가되는 문자열 포인터
+    @return  추가된 아이템의 인덱스
 *///----------------------------------------------------------------------------
 int    tstrlist_add        ( tstrlist *that, const char *str )
 {
@@ -260,17 +260,17 @@ int    tstrlist_add        ( tstrlist *that, const char *str )
 	tstritem *sitem;
 	int       result;
 
-	sitem  = tstrlist_newitem( str );	// ���ڿ� ��ü ����
+	sitem  = tstrlist_newitem( str );	// 문자열 객체 생성
 	result = tlist_add( tlst, sitem );
 
 	return result;
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ��� ����� �����͸� �߰��Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   str ������ �߰��Ǵ� ���ڿ� ������
-    @param   pdata ����� ������
-    @return  �߰��� �������� �ε���
+/** @brief   문자열과 사용자 포인터를 추가한다.
+    @param   that 관리 객체의 포인터
+    @param   str 새로이 추가되는 문자열 포인터
+    @param   pdata 사용자 포인터
+    @return  추가된 아이템의 인덱스
 *///----------------------------------------------------------------------------
 int    tstrlist_add_object ( tstrlist *that, const char *str, void *obj )
 {
@@ -286,9 +286,9 @@ int    tstrlist_add_object ( tstrlist *that, const char *str, void *obj )
 	return result;
 }
 //------------------------------------------------------------------------------
-/** @brief   �ϳ��� �������� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index ���ŵ� �������� �ε���
+/** @brief   하나의 아이템을 제거한다.
+    @param   that 관리 객체의 포인터
+    @param   index 제거될 아이템의 인덱스
 *///----------------------------------------------------------------------------
 void   tstrlist_delete     ( tstrlist *that, int index )
 {
@@ -304,10 +304,10 @@ void   tstrlist_delete     ( tstrlist *that, int index )
 	tlist_delete( tlst, index );	
 }
 //------------------------------------------------------------------------------
-/** @brief   �ε����� �ش��ϴ� ���ڿ� �����͸� ��ȯ�Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index ������ ���
-    @return  �ε����� �ش��ϴ� ���ڿ� ������
+/** @brief   인덱스에 해당하는 문자열 포인터를 반환한다.
+    @param   that 관리 객체의 포인터
+    @param   index 아이템 인덱스
+    @return  인덱스에 해당하는 문자열 포인터
 *///----------------------------------------------------------------------------
 char *tstrlist_get_string  ( tstrlist *that, int index )
 {
@@ -322,10 +322,10 @@ char *tstrlist_get_string  ( tstrlist *that, int index )
     return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief   �ε����� �ش��ϴ� ����� �����͸� ��ȯ�Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index ������ ���
-    @return  �ε����� �ش��ϴ� ����� ������
+/** @brief   인덱스에 해당하는 사용자 포인터를 반환한다.
+    @param   that 관리 객체의 포인터
+    @param   index 아이템 인덱스
+    @return  인덱스에 해당하는 사용자 포인터
 *///----------------------------------------------------------------------------
 void *tstrlist_get_object  ( tstrlist *that, int index )
 {
@@ -340,10 +340,10 @@ void *tstrlist_get_object  ( tstrlist *that, int index )
     return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief   �ε����� �ش��ϴ� ������ �±׺����� ��ȯ�Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index ������ ���
-    @return  �ε����� �ش��ϴ� ������ �±׺���
+/** @brief   인덱스에 해당하는 정수형 태그변수를 반환한다.
+    @param   that 관리 객체의 포인터
+    @param   index 아이템 인덱스
+    @return  인덱스에 해당하는 정수형 태그변수
 *///----------------------------------------------------------------------------
 int  tstrlist_get_tag  ( tstrlist *that, int index )
 {
@@ -359,10 +359,10 @@ int  tstrlist_get_tag  ( tstrlist *that, int index )
     return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief   2���� ������ ��ġ�� ��ȯ�Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index1 ��ȯ�� �ε���1
-    @param   index2 ��ȯ�� �ε���2
+/** @brief   2개의 아이템 위치를 교환한다.
+    @param   that 관리 객체의 포인터
+    @param   index1 교환할 인덱스1
+    @param   index2 교환할 인덱스2
 *///----------------------------------------------------------------------------
 void   tstrlist_exchange   ( tstrlist *that, int index1, int index2 )
 {
@@ -371,10 +371,10 @@ void   tstrlist_exchange   ( tstrlist *that, int index1, int index2 )
     tlist_exchange( tlst, index1, index2 );
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ��� ������ �ε����� ���Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   str  �� ���ڿ� ������
-    @return  ���ڿ��� �ش�Ǵ� �ε���, �������� ������ -1
+/** @brief   문자열이 동일한 인덱스를 구한다.
+    @param   that 관리 객체의 포인터
+    @param   str  비교 문자열 포인터
+    @return  문자열이 해당되는 인덱스, 존재하지 않으면 -1
 *///----------------------------------------------------------------------------
 int    tstrlist_indexof    ( tstrlist *that, const char *str )
 {
@@ -395,32 +395,32 @@ int    tstrlist_indexof    ( tstrlist *that, const char *str )
 	return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief   �������� Ư�� ��ġ�� �߰��Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   index �߰��� �����۰� �� �ε���
-    @param   str  �߰��� ���ڿ� ������
+/** @brief   아이템을 특정 위치에 추가한다.
+    @param   that 관리 객체의 포인터
+    @param   index 추가할 아이템가 들어갈 인덱스
+    @param   str  추가할 문자열 포인터
 *///----------------------------------------------------------------------------
 void   tstrlist_insert     ( tstrlist *that, int index, char *str )
 {
     tlist    *tlst = that->ftlst;
     tstritem *sitem;
 	
-	sitem = tstrlist_newitem( str );	// ���ڿ� ��ü ����
+	sitem = tstrlist_newitem( str );	// 문자열 객체 생성
 	tlist_insert( tlst, index, sitem );
 }
 //------------------------------------------------------------------------------
-/** @brief   ù��° ���ڿ� �����͸� �����ش�.
-    @param   that ���� ��ü�� ������
-    @return  ù��° ���ڿ� ������
+/** @brief   첫번째 문자열 포인터를 돌려준다.
+    @param   that 관리 객체의 포인터
+    @return  첫번째 문자열 포인터
 *///----------------------------------------------------------------------------
 char  *tstrlist_first      ( tstrlist *that )
 {
     return tstrlist_get_string( that, 0 );
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ ���ڿ� �����͸� ���Ѵ�.
-    @param   that ���� ��ü�� ������
-    @return  ������ ���ڿ� ������
+/** @brief   마지막 문자열 포인터를 구한다.
+    @param   that 관리 객체의 포인터
+    @return  마지막 문자열 포인터
 *///----------------------------------------------------------------------------
 char  *tstrlist_last       ( tstrlist *that )
 {
@@ -429,10 +429,10 @@ char  *tstrlist_last       ( tstrlist *that )
     return tstrlist_get_string( that, tlst->fcount-1 );
 }
 //------------------------------------------------------------------------------
-/** @brief   Ư�� �������� ��ġ(�ε���)�� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   curindex ������ �������� ���
-    @param   newindex ����� �������� ���
+/** @brief   특정 아이템의 위치(인덱스)를 변경한다.
+    @param   that 관리 객체의 포인터
+    @param   curindex 변경할 아이템의 인덱스
+    @param   newindex 변경될 아이템의 인덱스
 *///----------------------------------------------------------------------------
 void   tstrlist_move       ( tstrlist *that, int curindex, int newindex )
 {
@@ -441,10 +441,10 @@ void   tstrlist_move       ( tstrlist *that, int curindex, int newindex )
 	tlist_move( tlst, curindex, newindex );
 }
 //------------------------------------------------------------------------------
-/** @brief   Ư���������� ���ڿ��� �����Ѵ�.
-    @param   that  ���� ��ü�� ������
-    @param   index ���ڿ��� ����� �ε���
-    @param   str  ���� ����� ���ڿ�
+/** @brief   특정아이템의 문자열을 변경한다.
+    @param   that  관리 객체의 포인터
+    @param   index 문자열이 변경될 인덱스
+    @param   str  새로 변경될 문자열
 *///----------------------------------------------------------------------------
 void   tstrlist_put_string  ( tstrlist *that, int index, char *str )
 {
@@ -460,10 +460,10 @@ void   tstrlist_put_string  ( tstrlist *that, int index, char *str )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   Ư���������� ����� �޸� ������ �����Ѵ�.
-    @param   that  ���� ��ü�� ������
-    @param   index ����� ������ ���
-    @param   obj   ���� ����� ����� ������
+/** @brief   특정아이템의 사용자 메모리 변수를 변경한다.
+    @param   that  관리 객체의 포인터
+    @param   index 변경될 아이템 인덱스
+    @param   obj   새로 변경될 사용자 포인터
 *///----------------------------------------------------------------------------
 void   tstrlist_put_object ( tstrlist *that, int index, void *obj )
 {
@@ -477,10 +477,10 @@ void   tstrlist_put_object ( tstrlist *that, int index, void *obj )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   Ư���������� �±׺����� �����Ѵ�.
-    @param   that  ���� ��ü�� ������
-    @param   index �±װ� ����� �ε���
-    @param   tag  ���� ����� ������ �±׺���
+/** @brief   특정아이템의 태그변수를 변경한다.
+    @param   that  관리 객체의 포인터
+    @param   index 태그가 변경될 인덱스
+    @param   tag  새로 변경될 정수형 태그변수
 *///----------------------------------------------------------------------------
 void   tstrlist_put_tag  ( tstrlist *that, int index, int tag )
 {
@@ -494,10 +494,10 @@ void   tstrlist_put_tag  ( tstrlist *that, int index, int tag )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڷ� ������ ������ ���ڿ��� ã�� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   item ������ �������� ������
-    @return  ������ �������� ���� ���
+/** @brief   인자로 전해준 동일한 문자열을 찾아 삭제한다.
+    @param   that 관리 객체의 포인터
+    @param   item 삭제할 아이템의 포인터
+    @return  삭제된 아이템의 과거 인덱스
 *///----------------------------------------------------------------------------
 int    tstrlist_remove     ( tstrlist *that, char *str )
 {
@@ -508,10 +508,10 @@ int    tstrlist_remove     ( tstrlist *that, char *str )
     return result;
 }
 //------------------------------------------------------------------------------
-/** @brief   �޸� ������ ���� ������� �ʴ� �޸𸮸� ��ȯ�Ѵ�.
-    @param   that ���� ��ü�� ������
-    @remark  ���� �޸𸮸� ��ȯ���� �ʴ´�.
-    @todo    �޸𸮸� ��ȯ�ϵ��� ���ۼ��Ǿ�� �Ѵ�.
+/** @brief   메모리 관리를 위해 사용하지 않는 메모리를 반환한다.
+    @param   that 관리 객체의 포인터
+    @remark  실제 메모리를 반환하지 않는다.
+    @todo    메모리를 반환하도록 재작성되어야 한다.
 *///----------------------------------------------------------------------------
 void   tstrlist_pack       ( tstrlist *that )
 {
@@ -520,9 +520,9 @@ void   tstrlist_pack       ( tstrlist *that )
 	tlist_pack( tlst );
 }
 //------------------------------------------------------------------------------
-/** @brief   �������� ������ ��´�.
-    @param   that ���� ��ü�� ������
-    @return  �������� ����
+/** @brief   아이템의 개수를 얻는다.
+    @param   that 관리 객체의 포인터
+    @return  아이템의 개수
 *///----------------------------------------------------------------------------
 int    tstrlist_getcount   ( tstrlist *that )
 {
@@ -532,10 +532,10 @@ int    tstrlist_getcount   ( tstrlist *that )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ� ������ ���� ũ�⸦ ���Ѵ�.
-    @param   astr �� ������
-    @param   bstr �� ������
-    @return  ���ڿ� �񱳰�
+/** @brief   문자열 정렬을 위해 크기를 비교한다.
+    @param   astr 비교 포인터
+    @param   bstr 비교 포인터
+    @return  문자열 비교값
 *///----------------------------------------------------------------------------
 static int tstrlist_sortfunc( const void *ppa, const void *ppb )
 {
@@ -547,9 +547,9 @@ static int tstrlist_sortfunc( const void *ppa, const void *ppb )
 	return strcmp( (*aitem)->fstr, (*bitem)->fstr );
 }
 //------------------------------------------------------------------------------
-/** @brief   �������� ����� ���Լ��� ���� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   tstrlistsortcomparefunc ����ں� �ݹ��Լ��̸�, int (*func)(const void *, const void *) �����̴�.
+/** @brief   아이템을 사용자 비교함수를 통해 정렬한다.
+    @param   that 관리 객체의 포인터
+    @param   tstrlistsortcomparefunc 사용자비교 콜백함수이며, int (*func)(const void *, const void *) 형태이다.
 *///----------------------------------------------------------------------------
 void   tstrlist_sort       ( tstrlist *that )
 {
@@ -560,11 +560,11 @@ void   tstrlist_sort       ( tstrlist *that )
 	tlist_sort( tlst, tstrlist_sortfunc );
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڷ� ������ ���ڿ��� �и��Ͽ� ���������� �߰��Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   str �и��� ���ڿ�
-    @return  ��ü�� �����ϴ� ������ ����
-    @todo    ���������̼�(") ���� �ο��� ���ڿ� �и��� �ʿ��ϴ�.
+/** @brief   인자로 전해준 문자열을 분리하여 아이템으로 추가한다.
+    @param   that 관리 객체의 포인터
+    @param   str 분리할 문자열
+    @return  객체가 관리하는 아이템 개수
+    @todo    더블쿼테이션(") 으로 싸여진 문자열 분리가 필요하다.
 *///----------------------------------------------------------------------------
 int    tstrlist_commatext     ( tstrlist *that, char *str )
 {    
@@ -581,7 +581,7 @@ int    tstrlist_commatext     ( tstrlist *that, char *str )
         tstrlist_add( that, buff);
     }
 
-    ndx_buff = 0;                                                               // ���ۿ� ���ڸ� ���� ��ġ�� 0���� �ʱ�ȭ
+    ndx_buff = 0;                                                               // 버퍼에 문자를 넣을 위치를 0으로 초기화
     for ( ndx_sour = 0; ndx_sour < strlen( str); ndx_sour++)
     {
         if ( '\0' == ch_division)
@@ -590,19 +590,19 @@ int    tstrlist_commatext     ( tstrlist *that, char *str )
             {
             case '\''   :
             case '\"'   :
-                    if ( 0 < ndx_buff)                                          // ������ ���۷� ��ϵ� ���ڿ��� �ִٸ� ����Ʈ�� �߰�
+                    if ( 0 < ndx_buff)                                          // 이전에 버퍼로 등록된 문자열이 있다면 리스트에 추가
                     {
                         buff[ndx_buff]  = '\0';
                         add_buff_to_list();
                     }
                     ch_division = str[ndx_sour];
-                    ndx_buff    = 0;                                            // ���ۿ� ���ο� ���ڿ��� ���� �� �ֵ��� ������ ��ġ�� 0 ���� �ʱ�ȭ
+                    ndx_buff    = 0;                                            // 버퍼에 새로운 문자열을 담을 수 있도록 버퍼의 위치를 0 으로 초기화
                     break;
             case ' '    :
             case ','    :
             case '\n'   :
             case '\r'   :
-                    if ( 0 < ndx_buff)                                          // ������ ���۷� ��ϵ� ���ڿ��� �ִٸ� ����Ʈ�� �߰�
+                    if ( 0 < ndx_buff)                                          // 이전에 버퍼로 등록된 문자열이 있다면 리스트에 추가
                     {
                         buff[ndx_buff]  = '\0';
                         add_buff_to_list();
@@ -623,7 +623,7 @@ int    tstrlist_commatext     ( tstrlist *that, char *str )
         }
         else
         {
-            if ( ch_division == str[ndx_sour])                                  // ���� �ο��ȣ�� ���̶��
+            if ( ch_division == str[ndx_sour])                                  // 이전 인용부호의 끝이라면
             {
                 ch_division     = '\0';
                 buff[ndx_buff]  = '\0';
@@ -644,7 +644,7 @@ int    tstrlist_commatext     ( tstrlist *that, char *str )
         }
     }                
 
-    if ( 0 < ndx_buff)                                                          // ������ ���۷� ��ϵ� ���ڿ��� �ִٸ� ����Ʈ�� �߰�
+    if ( 0 < ndx_buff)                                                          // 이전에 버퍼로 등록된 문자열이 있다면 리스트에 추가
     {
         buff[ndx_buff]  = '\0';
         add_buff_to_list();
@@ -652,10 +652,10 @@ int    tstrlist_commatext     ( tstrlist *that, char *str )
 	return tlst->fcount; 
 }
 //------------------------------------------------------------------------------
-/** @brief   �ؽ�Ʈ���Ͽ��� ���κ��� �����ۿ� ����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   fname �����̸�
-    @return  ��ü�� �����ϴ� ������ ����
+/** @brief   텍스트파일에서 라인별로 아이템에 등록한다.
+    @param   that 관리 객체의 포인터
+    @param   fname 파일이름
+    @return  객체가 관리하는 아이템 개수
 *///----------------------------------------------------------------------------
 int    tstrlist_load_from_file ( tstrlist *that, char *fname )
 {
@@ -681,10 +681,10 @@ int    tstrlist_load_from_file ( tstrlist *that, char *fname )
 	return tlst->fcount; 
 }
 //------------------------------------------------------------------------------
-/** @brief   �����۵��� ���κ��� ���Ϸ� �����Ѵ�.
-    @param   that ���� ��ü�� ������
-    @param   fname �����̸�
-    @return  ���Ͽ� ������ ���μ�
+/** @brief   아이템들을 라인별로 파일로 저장한다.
+    @param   that 관리 객체의 포인터
+    @param   fname 파일이름
+    @return  파일에 저장한 라인수
 *///----------------------------------------------------------------------------
 int    tstrlist_save_to_file ( tstrlist *that, char *fname )
 {
diff --git a/app/app-prime-modbus/lib/common/uservar.c b/app/app-prime-modbus/lib/common/uservar.c
index e8718ef..50cd919 100644
--- a/app/app-prime-modbus/lib/common/uservar.c
+++ b/app/app-prime-modbus/lib/common/uservar.c
@@ -1,8 +1,8 @@
 /**    
     @file     uservar.c
     @date     2009/4/9
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    ����ڰ� �����ϴ� ������ �����ϴ� ����ü��
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    사용자가 편집하는 변수를 관리하는 구조체들
               
     
     @modify   
@@ -29,9 +29,9 @@
 
 
 //------------------------------------------------------------------------------
-/** @brief   ������ ���� ����ü���� �������ΰ��� �۾������� �ִ´�.
-	@param   uv       user_var_integer_t ������
-	@param   offset   ��ȭġ
+/** @brief   정수형 편집 구조체에서 오리지널값을 작업변수에 넣는다.
+	@param   uv       user_var_integer_t 포인터
+	@param   offset   변화치
 *///----------------------------------------------------------------------------
 void  uvar_int_ready( user_var_integer_t *uv )
 {
@@ -41,9 +41,9 @@ void  uvar_int_ready( user_var_integer_t *uv )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ ���� ����ü���� ������ ���� �����Ѵ�.
-	@param   uv       user_var_integer_t ������
-	@param   offset   ��ȭġ
+/** @brief   정수형 편집 구조체에서 수정된 값을 적용한다.
+	@param   uv       user_var_integer_t 포인터
+	@param   offset   변화치
 *///----------------------------------------------------------------------------
 void  uvar_int_apply( user_var_integer_t *uv )
 {
@@ -53,9 +53,9 @@ void  uvar_int_apply( user_var_integer_t *uv )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ ���� ����ü���� ���� �����Ѵ�.
-	@param   uv       user_var_integer_t ������
-	@param   offset   ��ȭġ
+/** @brief   정수형 편집 구조체에서 값을 변경한다.
+	@param   uv       user_var_integer_t 포인터
+	@param   offset   변화치
 *///----------------------------------------------------------------------------
 void  uvar_int_add( user_var_integer_t *uv, int offset )
 {
diff --git a/app/app-prime-modbus/lib/common/util.c b/app/app-prime-modbus/lib/common/util.c
index 4487e28..1279179 100644
--- a/app/app-prime-modbus/lib/common/util.c
+++ b/app/app-prime-modbus/lib/common/util.c
@@ -1,8 +1,8 @@
 /**    
     @file     util.c
     @date     2009/1/15 ~
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    �ܼ��� ��ƿ��Ƽ �Լ����� ��Ƴ��Ҵ�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    단순한 유틸리티 함수들을 모아놓았다.
               Ver 0.2.1
     @modify   
     @todo     
@@ -12,7 +12,7 @@
 */
 //----------------------------------------------------------------------------
 
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -53,9 +53,9 @@
 #ifdef EMBEDDED_LINUX
 
 //------------------------------------------------------------------------------
-/** @brief   ����̹� �̸����� ����̹��� ��������ȣ�� ��´�.
-    @param   driver_name  ����̽�����̹� �̸�
-    @return  ��������ȣ
+/** @brief   드라이버 이름으로 드라이버의 메이져번호를 얻는다.
+    @param   driver_name  디바이스드라이버 이름
+    @return  메이져번호
 *///----------------------------------------------------------------------------
 int find_dev_major( char *driver_name )
 {
@@ -83,12 +83,12 @@ int find_dev_major( char *driver_name )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   ����̽� ����̹� ��������� ����.
-    @param   fname  ����̽� ������� �̸�
-    @param   major  ����̽� ����̹� ��������ȣ
-    @param   minor  ����̽� ����̹� ���̳ʹ�ȣ
-    @return  ������� �ڵ�, 0���� ������ ����
-    @remakr  ��������� ������ ��������� ������ �� ����.
+/** @brief   디바이스 드라이버 노드파일을 연다.
+    @param   fname  디바이스 노드파일 이름
+    @param   major  디바이스 드라이버 메이져번호
+    @param   minor  디바이스 드라이버 마이너번호
+    @return  노드파일 핸들, 0보다 작으면 에러
+    @remakr  노드파일이 없으면 노드파일을 생성한 후 연다.
 *///----------------------------------------------------------------------------
 int dev_open( char *fname, unsigned char major, unsigned char minor )
 {
@@ -115,12 +115,12 @@ int dev_open( char *fname, unsigned char major, unsigned char minor )
 	return dev;
 }
 //------------------------------------------------------------------------------
-/** @brief   tftp ��ƿ��Ƽ�� ����Ͽ� ������ �ٿ�ε�޴´�.
-    @param   ip    �����ּ�
-    @param   fname �������� ���� �����̸�
-    @return  ��������
-    @retval  0  ����
-    @retval  -1 ����
+/** @brief   tftp 유틸리티를 사용하여 파일을 다운로드받는다.
+    @param   ip    서버주소
+    @param   fname 서버에서 받을 파일이름
+    @return  성공여부
+    @retval  0  성공
+    @retval  -1 실패
 *///----------------------------------------------------------------------------
 int tftp_download_file( char *ip, char *fname )
 {
@@ -129,10 +129,10 @@ int tftp_download_file( char *ip, char *fname )
 	char     line[256];
     int      rst;
 
-	// �ޱ�� temp ������ �����.
+	// 받기용 temp 파일을 지운다.
 	remove( TEMP_DOWNLOAD_FILE );
 	
-	// tftp �� �̿��Ͽ� ������ �޴´�.
+	// tftp 를 이용하여 파일을 받는다.
 	sprintf( line, "tftp %s -r %s -l %s -g", ip, fname, TEMP_DOWNLOAD_FILE );
 	rst = system( line );
     if ( ( -1 == rst) || ( 127 == rst) ){
@@ -140,7 +140,7 @@ int tftp_download_file( char *ip, char *fname )
         return -1;
     }
 	
-	// ������ �����ϸ� �������Ͽ� �����.
+	// 파일이 존재하면 기존파일에 덮어쓴다.
 	if ( 0 == exist_file( TEMP_DOWNLOAD_FILE ) ){
 		sprintf( line, "cp -a %s %s", TEMP_DOWNLOAD_FILE, fname );
 		rst = system( line );
@@ -154,12 +154,12 @@ int tftp_download_file( char *ip, char *fname )
 	return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief   tftp ��ƿ��Ƽ�� ����Ͽ� ������  ���ε��Ѵ�
-    @param   ip    �����ּ�
-    @param   fname ������ ������ �����̸�
-    @return  ��������
-    @retval  0  ����
-    @retval  -1 ����
+/** @brief   tftp 유틸리티를 사용하여 파일을  업로드한다
+    @param   ip    서버주소
+    @param   fname 서버에 전송할 파일이름
+    @return  성공여부
+    @retval  0  성공
+    @retval  -1 실패
 *///----------------------------------------------------------------------------
 int tftp_upload_file( char *ip, char *fname )
 {
@@ -179,7 +179,7 @@ int tftp_upload_file( char *ip, char *fname )
     }
 
 
-	// tftp �� �̿��Ͽ� ������ �����Ѵ�.
+	// tftp 를 이용하여 파일을 전송한다.
 	sprintf( line, "tftp %s -r %s -l %s -p", ip, ptr_name, fname );
 
     rst = system( line );
@@ -192,28 +192,28 @@ int tftp_upload_file( char *ip, char *fname )
 
 
 //------------------------------------------------------------------------------
-/** @brief   usec �ð�ƽ�� ���´�.
-    @return  usec ������ �ð�ƽ
-    @remark  �Ϸ������ �ð������̴�.
+/** @brief   usec 시간틱을 얻어온다.
+    @return  usec 단위의 시간틱
+    @remark  하루단위의 시간범위이다.
 *///----------------------------------------------------------------------------
 unsigned long get_cur_usec(void)
 {
 	struct timeval mytime;
 
-    // ���� �ð��� ���´�.
+    // 현재 시간을 얻어온다.
     gettimeofday(&mytime, NULL);
 
     return ( (mytime.tv_sec%(24*3600))*1000000 + mytime.tv_usec );
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ����� �յ��� Ư�����ڿ� ���鹮�ڸ� �����Ѵ�.
-    @param   line ���ڿ� ������
+/** @brief   문자열에서 앞뒤의 특수문자와 공백문자를 제거한다.
+    @param   line 문자열 포인터
 *///----------------------------------------------------------------------------
 void  trimstr( char *line )
 {
 	int   idx, len;
 	
-	// ���� ���鹮�ڿ� Ư������ ����
+	// 뒷쪽 공백문자와 특수문자 제거
 	len = strlen(line);
 	for( idx=len-1; idx>=0; idx-- )
 	{
@@ -221,7 +221,7 @@ void  trimstr( char *line )
 	}
 	line[idx+1] = '\0';
 	
-	// ���� ���鹮�ڿ� Ư������ ����
+	// 앞쪽 공백문자와 특수문자 제거
 	len = strlen(line);
 	for( idx=0; idx<len; idx++ )
 	{
@@ -233,14 +233,14 @@ void  trimstr( char *line )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ����� Ư�� ���ڸ� �и��ڷ� ����Ͽ� �и��Ѵ�
-    @param   line  �и��� ���ڿ�
-    @param   delim ��������
-    @param   item  �и��� ���ڿ��� ������
-    @param   val   �и��� ���ڿ��� ��
-    @return  ������ 0, ���н� -1
-    @remark  aaa = bbbb ���¸� �и��Ѵ�.
-    @bug     ���� �׽�Ʈ�� �ʿ��ϴ�.
+/** @brief   문자열에서 특정 문자를 분리자로 사용하여 분리한다
+    @param   line  분리할 문자열
+    @param   delim 델리미터
+    @param   item  분리된 문자열중 아이템
+    @param   val   분리된 문자열중 값
+    @return  성공시 0, 실패시 -1
+    @remark  aaa = bbbb 형태를 분리한다.
+    @bug     좀더 테스트가 필요하다.
 *///----------------------------------------------------------------------------
 int item_value_parse( const char *line, char delim, char *item, char *val )
 {
@@ -268,11 +268,11 @@ int item_value_parse( const char *line, char delim, char *item, char *val )
 	return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ����� ���������� �и��Ͽ� �迭�� �ִ´�.
-    @param   str        �и��� ���ڿ�
-    @param   delim      �������� ���ڿ�
-    @param   int_array  ������ �迭
-    @param   count      ������ �迭 ����
+/** @brief   문자열에서 정수형값을 분리하여 배열에 넣는다.
+    @param   str        분리할 문자열
+    @param   delim      델리미터 문자열
+    @param   int_array  정수형 배열
+    @param   count      정수형 배열 개수
 *///----------------------------------------------------------------------------
 int  str_to_int_array( char *str, char *delim, int *int_array, int count )
 {
@@ -299,11 +299,11 @@ int  str_to_int_array( char *str, char *delim, int *int_array, int count )
 	return idx;
 }
 //------------------------------------------------------------------------------
-/** @brief   �ڱ� IP�� ���� �´�.
-	@param   ip �� ���� ���ڿ� ������
-    @return  ������ 0, ���н� -1
+/** @brief   자기 IP를 가져 온다.
+	@param   ip 를 받을 문자열 포인터
+    @return  성공시 0, 실패시 -1
     
-    @todo    tstrlist ��ü�� �����Ͽ��� �Ѵ�.
+    @todo    tstrlist 객체에 저장하여야 한다.
     @bug     
 *///----------------------------------------------------------------------------
 int  get_myip( char *ip ) 
@@ -366,18 +366,18 @@ int  get_myip( char *ip )
 	return -1;
 } 
 //------------------------------------------------------------------------------
-/** @brief   �����̳� ���丮�� �����ϴ��� Ȯ���Ѵ�.
-	@param   fname   �����̳� ���丮�̸�
-	@return  0 �̸� ����, �����̸� �������� ����
+/** @brief   파일이나 디렉토리가 존재하는지 확인한다.
+	@param   fname   파일이나 디렉토리이름
+	@return  0 이면 정상, 음수이면 존재하지 않음
 *///----------------------------------------------------------------------------
 int exist_file( char *fname )
 {
 	return access( fname, F_OK );
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ ũ�⸦ ��´�.
-	@param   fname   �����̳� ���丮�̸�
-	@return  ������ ũ�� �����϶� ����
+/** @brief   파일의 크기를 얻는다.
+	@param   fname   파일이나 디렉토리이름
+	@return  파일의 크기 에러일때 음수
 *///----------------------------------------------------------------------------
 int get_file_size( char *fname )
 {
@@ -389,10 +389,10 @@ int get_file_size( char *fname )
 	return fstat.st_size;
 }
 //------------------------------------------------------------------------------
-/** @brief   �α������� ���Ͽ� �� �ִ´�.
-    @param   fmt ���Ĺ��ڿ�
-    @param   ���� ��������.
-    @return  ���Ͽ� ������ ���ڰ���
+/** @brief   로그정보를 파일에 써 넣는다.
+    @param   fmt 형식문자열
+    @param   가변 스택인자.
+    @return  파일에 저장한 문자개수
 *///----------------------------------------------------------------------------
 int log_printf( const char *log_file, const char *fmt, ...  )
 {
@@ -414,9 +414,9 @@ int log_printf( const char *log_file, const char *fmt, ...  )
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief   ��¥�� �ð��� ���ڿ� ���·� �����ش�.
-    @param   fmt ���Ĺ��ڿ�
-    @param   ��ȯ���ڿ�.
+/** @brief   날짜와 시간을 문자열 형태로 돌려준다.
+    @param   fmt 형식문자열
+    @param   반환문자열.
 *///----------------------------------------------------------------------------
 void	format_date_text( char *fmt, char *text )
 {
@@ -437,10 +437,10 @@ void	format_date_text( char *fmt, char *text )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   ��ǥ�� �簢�����ȿ� �ִ��� �˻�
-    @param   x,y ��ǥ
-    @param   sx, sy, wdt, hgt  �簢����
-    @return  �簢������ ���ԵǸ� 1,  �ƴϸ� 0
+/** @brief   좌표가 사각영역안에 있는지 검사
+    @param   x,y 좌표
+    @param   sx, sy, wdt, hgt  사각영역
+    @return  사각영역에 포함되면 1,  아니면 0
 *///----------------------------------------------------------------------------
 int	 is_rect_region( int x, int y, int sx, int sy, int wdt, int hgt )
 {
@@ -453,9 +453,9 @@ int	 is_rect_region( int x, int y, int sx, int sy, int wdt, int hgt )
 }
 
 //------------------------------------------------------------------------------
-/** @brief   ���ͷ�Ʈ�� �߻� Ƚ���� �����ش�.
-    @param   irq  irq ��ȣ
-    @return  ���ͷ�Ʈ �߻�ȸ��, irq ��ȣ�� ���ٸ� -1
+/** @brief   인터럽트가 발생 횟수를 돌려준다.
+    @param   irq  irq 번호
+    @return  인터럽트 발생회수, irq 번호가 없다면 -1
 *///----------------------------------------------------------------------------
 int		get_irq_count( int irq )
 {
@@ -486,10 +486,10 @@ int		get_irq_count( int irq )
 	return int_cnt;		 		
 }
 //------------------------------------------------------------------------------
-/** @brief   ping ������ �����Ͽ� ������ ȸ���� �����ش�.
-    @param   host   ���� IP ���ڿ�
-    @param   count  ����� ȸ��
-    @return  �μ��� ȸ��
+/** @brief   ping 명령을 수행하여 성공한 회수를 돌려준다.
+    @param   host   상대방 IP 문자열
+    @param   count  핑통신 회수
+    @return  핑성공 회수
 *///----------------------------------------------------------------------------
 int		ping( char *host, int count )
 {
@@ -523,10 +523,10 @@ int		ping( char *host, int count )
 	return ok_cnt;	 		
 }
 //------------------------------------------------------------------------------
-/** @brief   ���̳ʸ� ����Ÿ�� ���� ���ڿ��� ��ȯ�Ѵ�.
-    @param   hex  ���ڿ��� ���� ����
-    @param   bin  ���̳ʸ� ���ڿ� ����
-    @param   bcnt ���̳ʸ� ���ڿ� ����
+/** @brief   바이너리 데이타를 헥사 문자열로 변환한다.
+    @param   hex  문자열을 담을 버퍼
+    @param   bin  바이너리 문자열 버퍼
+    @param   bcnt 바이너리 문자열 개수
 *///----------------------------------------------------------------------------
 void  bin_to_hex( char *hex, char *bin, int bcnt )
 {
@@ -545,8 +545,8 @@ void  bin_to_hex( char *hex, char *bin, int bcnt )
 	}
 }   	
 //------------------------------------------------------------------------------
-/** @brief   mcu ��ȣ�� ã�´�.
-    @return  mcu ��ȣ  6410, 210, 2440, 270, 255, 420, 430, 1250
+/** @brief   mcu 번호를 찾는다.
+    @return  mcu 번호  6410, 210, 2440, 270, 255, 420, 430, 1250
 *///----------------------------------------------------------------------------
 int  get_mcu( void )
 {
@@ -583,8 +583,8 @@ int  get_mcu( void )
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   Ű���� �Է��� ���;��� �ѹ��ھ� ��� �޴´�.
-    @return  Ű���� �Է°�
+/** @brief   키보드 입력을 엔터없이 한문자씩 즉시 받는다.
+    @return  키보드 입력값
 *///----------------------------------------------------------------------------
 char  getchar_without_enter( void )
 {
@@ -602,9 +602,9 @@ char  getchar_without_enter( void )
 	return ch;
 }
 //------------------------------------------------------------------------------
-/** @brief   �ý��� �ð��� �����Ѵ�.
+/** @brief   시스템 시간을 변경한다.
     @param   yyyy, MM, dd, hh, mm, ss
-    @return  ���� 0, ���� -1
+    @return  성공 0, 실패 -1
 *///----------------------------------------------------------------------------
 int  set_sys_time( int yyyy, int MM, int dd, int hh, int mm, int ss )
 {
@@ -628,38 +628,38 @@ int  set_sys_time( int yyyy, int MM, int dd, int hh, int mm, int ss )
 #endif
 
 //------------------------------------------------------------------------------
-/** @brief    ����ð��� �ʴ����� �����ش�
-    @return   ���� ��
+/** @brief    현재시간을 초단위로 돌려준다
+    @return   현재 시간초
 *///----------------------------------------------------------------------------
 unsigned long get_cur_sec( void )
 {
     struct timeval mytime;
 
-    // ���� �ð��� ���´�.
+    // 현재 시간을 얻어온다.
     gettimeofday(&mytime, NULL);
 
     return mytime.tv_sec;
 }
 //------------------------------------------------------------------------------
-/** @brief    ������ msec �ð�ƽ�� ���´�.
-    @return   ���� msec
-    @todo     �����÷ο쿡 ���� ������ �ʿ��ϴ�.
+/** @brief    현재의 msec 시간틱을 얻어온다.
+    @return   현재 msec
+    @todo     오버플로우에 대한 고찰이 필요하다.
 *///----------------------------------------------------------------------------
 msec_t get_cur_msec( void )
 {
     struct      timeval mytime;
     long long   tm_sec;
 
-    // ���� �ð��� ���´�.
+    // 현재 시간을 얻어온다.
     gettimeofday(&mytime, NULL);
     tm_sec = (unsigned long) mytime.tv_sec;
 
     return ( tm_sec * 1000LL + mytime.tv_usec / 1000);
 }
 //------------------------------------------------------------------------------
-/** @brief   ������ ����Ÿ�� ���� ���ڿ��� �����ش�.
-    @param   buf   ����
-    @param   count ���۰���
+/** @brief   버퍼의 데이타를 헥사 문자열로 보여준다.
+    @param   buf   버퍼
+    @param   count 버퍼개수
 *///----------------------------------------------------------------------------
 void  print_buffer( char *buf, int count )
 {
@@ -679,9 +679,9 @@ void  print_buffer( char *buf, int count )
 	printf( "\n" );
 }   	
 //------------------------------------------------------------------------------
-/** @brief   ���ڿ��� ���ڷ� ��ȯ�Ѵ�. ���ڵ��� �������� �Ǵ��Ѵ�.
-    @param   buf   ����
-    @return  ���ڿ��� ��ȯ�� ��
+/** @brief   문자열을 숫자로 변환한다. 숫자뒤의 단위까지 판단한다.
+    @param   buf   버퍼
+    @return  문자열을 변환한 값
 *///----------------------------------------------------------------------------
 unsigned int strtosize( char *str )
 {
@@ -703,10 +703,10 @@ unsigned int strtosize( char *str )
 }   	
 
 //------------------------------------------------------------------------------
-/** @brief   ������ ���� 16��Ʈ�� ���Ͽ� �����ش�.
-    @param   buf   ����
-    @param   len   ������ ����
-    @return  ���ڿ��� ��ȯ�� ��
+/** @brief   버퍼의 값을 16비트로 더하여 돌려준다.
+    @param   buf   버퍼
+    @param   len   버퍼의 길이
+    @return  문자열을 변환한 값
 *///----------------------------------------------------------------------------
 unsigned short checksum(void* buf, int len)
 {
@@ -727,9 +727,9 @@ unsigned short checksum(void* buf, int len)
 	return sum;
 }
 //------------------------------------------------------------------------------
-/** @brief    msec ������ ��ٸ���.
+/** @brief    msec 단위로 기다린다.
     @param    msec
-    @remark   ������ ƽ�� �����Ѵ�.
+    @remark   스케줄 틱에 의존한다.
 *///----------------------------------------------------------------------------
 void msleep( int msec )
 {
diff --git a/app/app-prime-modbus/lib/fanet/alarm.c b/app/app-prime-modbus/lib/fanet/alarm.c
index 3c9456a..4e97579 100644
--- a/app/app-prime-modbus/lib/fanet/alarm.c
+++ b/app/app-prime-modbus/lib/fanet/alarm.c
@@ -1,8 +1,8 @@
 /**    
     @file     alarm.c
     @date     2009-04-09
-    @author   ����� freefrug@falinux.com
-    @brief    �˶�����̽� ����̹��� ���� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    알람디바이스 드라이버를 열고 관리한다.
 
     @modify   
     @todo    
@@ -12,8 +12,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 #include <stdio.h>
@@ -36,7 +36,7 @@
 
 char desc_alarm[] = "falinux alarm ver 0.1.0";
 
-/// alarm ���� ����ü
+/// alarm 개별 구조체
 typedef struct {
 	
 	int   count;
@@ -46,10 +46,10 @@ typedef struct {
 
 
 //------------------------------------------------------------------------------
-/** @brief    �˶� ����̽� ����̹��� open �Ѵ�.
-    @param    count     �˶��߻�ȸ��, 0���� ������ �������� �˶��̴�.
-    @param    per_msec  �˶��߻� ��
-    @return   poll_obj_t ������ ������
+/** @brief    알람 디바이스 드라이버를 open 한다.
+    @param    count     알람발생회수, 0보다 작으면 지속적인 알람이다.
+    @param    per_msec  알람발생 텀
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *alarm_open( int count, unsigned int per_msec )
 {
@@ -64,7 +64,7 @@ poll_obj_t  *alarm_open( int count, unsigned int per_msec )
 		return NULL;	
 	}
 
-	// alarm ���� ������ �����Ѵ�.
+	// alarm 만의 정보를 설정한다.
 	alarm = (alarm_priv_t *)malloc( sizeof(alarm_priv_t) );
 	alarm->count    = count;
 	alarm->per_msec = per_msec;
@@ -82,18 +82,18 @@ poll_obj_t  *alarm_open( int count, unsigned int per_msec )
 	return obj;
 }
 //------------------------------------------------------------------------------
-/** @brief    �˶��� �����Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    알람을 중지한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void  alarm_stop( poll_obj_t *obj )
 {
 	ioctl( obj->fd, IOCTL_ALARM_CLR, 0 );
 }	
 //------------------------------------------------------------------------------
-/** @brief    �˶��� ������Ѵ�.
-    @param    obj  ����ü ������
-    @param    count     �˶��߻�ȸ��, 0���� ������ �������� �˶��̴�.
-    @param    per_msec  �˶��߻� ��
+/** @brief    알람을 재시작한다.
+    @param    obj  폴객체 포인터
+    @param    count     알람발생회수, 0보다 작으면 지속적인 알람이다.
+    @param    per_msec  알람발생 텀
 *///----------------------------------------------------------------------------
 void  alarm_restart( poll_obj_t *obj )
 {
@@ -108,9 +108,9 @@ void  alarm_restart( poll_obj_t *obj )
 	ioctl( obj->fd, IOCTL_ALARM_SET, &alarm_set );
 }	
 //------------------------------------------------------------------------------
-/** @brief    �˶��� Ȯ���Ѵ�.(�˶��� �߻��ϸ� �ݵ�� ȣ���Ͽ��� �Ѵ�.)
-    @param    obj  ����ü ������
-    @remark   �˶��� �߻��ϸ� �ݵ�� ȣ���Ͽ��� �Ѵ�.
+/** @brief    알람을 확인한다.(알람이 발생하면 반드시 호출하여야 한다.)
+    @param    obj  폴객체 포인터
+    @remark   알람이 발생하면 반드시 호출하여야 한다.
 *///----------------------------------------------------------------------------
 void  alarm_handled( poll_obj_t *obj )
 {
@@ -119,8 +119,8 @@ void  alarm_handled( poll_obj_t *obj )
 	read( obj->fd, buf, 1  );
 }	
 //------------------------------------------------------------------------------
-/** @brief    alarm ����̹��� close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    alarm 드라이버를 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void alarm_close( poll_obj_t *obj )
 {
diff --git a/app/app-prime-modbus/lib/fanet/can.c b/app/app-prime-modbus/lib/fanet/can.c
index 9acbbf5..59b4419 100644
--- a/app/app-prime-modbus/lib/fanet/can.c
+++ b/app/app-prime-modbus/lib/fanet/can.c
@@ -1,11 +1,11 @@
 /**
     @file     can.c
     @date     2012-02-24
-    @author   ��漮 jks@falinux.com
-    @brief    can�� ����� ����� ����Ѵ�.
+    @author   장길석 jks@falinux.com
+    @brief    can을 사용한 통신을 담당한다.
 
     @modify
-              2010-08-18 (��漮) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
+              2010-08-18 (장길석) mingw와 함께 사용할 수 있는 코드 추가
     @todo
     @bug
     @remark
@@ -13,8 +13,8 @@
     @warning
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 #include <stdio.h>
@@ -33,22 +33,22 @@
 #include <pollmng.h>
 #include <can.h>
 
-/// udp ���� ����ü
+/// udp 개별 구조체
 typedef struct {
 
     int                  im_server;
     struct sockaddr_can  addr;
 } can_priv_t;
 
-static poll_obj_t  *tmp_can_poll = NULL;  // poll ������ü���� �����Լ��� ����
+static poll_obj_t  *tmp_can_poll = NULL;  // poll 관리객체없이 전송함수를 위해
 
 #define PF_CAN      29                      /* Controller Area Network.  */
 #define AF_CAN      PF_CAN
 
 //------------------------------------------------------------------------------
-/** @brief    udp ������ �������·� open �Ѵ�.
-    @param    port  ��Ʈ��ȣ
-    @return   poll_obj_t ������ ������
+/** @brief    udp 소켓을 서버형태로 open 한다.
+    @param    port  포트번호
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *can_open( char *can_port, can_filter_t *rfilter, int filter_size)
 {
@@ -67,10 +67,10 @@ poll_obj_t  *can_open( char *can_port, can_filter_t *rfilter, int filter_size)
     }
     setsockopt( sockfd, SOL_CAN_RAW, CAN_RAW_FILTER, rfilter, filter_size);
 
-    // ������ �ý��ۿ� �����Ѵ�.
+    // 소켓을 시스템에 연결한다.
     bzero( &addr, sizeof(struct sockaddr_can) );
 
-    strcpy( ifr.ifr_name, can_port);                         // ����� CAN ��ȣ
+    strcpy( ifr.ifr_name, can_port);                         // 사용할 CAN 번호
     ioctl(sockfd, SIOCGIFINDEX, &ifr);
     ifindex = ifr.ifr_ifindex;
 
@@ -84,7 +84,7 @@ poll_obj_t  *can_open( char *can_port, can_filter_t *rfilter, int filter_size)
         return NULL;
     }
 
-    // udp ���� ������ �����Ѵ�.
+    // udp 만의 정보를 설정한다.
     can = (can_priv_t *)malloc( sizeof(can_priv_t) );
     can->im_server  = 1;
     memcpy( &can->addr, &addr, sizeof( can->addr));
@@ -99,8 +99,8 @@ poll_obj_t  *can_open( char *can_port, can_filter_t *rfilter, int filter_size)
 }
 
 //------------------------------------------------------------------------------
-/** @brief    udp ������ close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    udp 소켓을 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void can_close( poll_obj_t *obj )
 {
@@ -116,13 +116,13 @@ void can_close( poll_obj_t *obj )
     if ( tmp_can_poll == obj ) tmp_can_poll = NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    udp ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    obj     ����ü ������
-    @param    host    ���� IP �� ȣ��Ʈ�̸� ���ڿ�������
-    @param    port    ���� ��Ʈ��ȣ
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
+/** @brief    udp 소켓을 통해 데이타를 전송한다.
+    @param    obj     폴객체 포인터
+    @param    host    상대방 IP 나 호스트이름 문자열포인터
+    @param    port    상대방 포트번호
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  can_write( poll_obj_t *obj, can_frame_t *frame)
 {
@@ -140,10 +140,10 @@ int  can_write( poll_obj_t *obj, can_frame_t *frame)
     return wrcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    udp ������ ���� ����Ÿ�� �д´�.
-    @param    obj     ����ü ������
-    @param    len     ������ ����
-    @return   ���۵� ����Ÿ ����
+/** @brief    udp 소켓을 통해 데이타를 읽는다.
+    @param    obj     폴객체 포인터
+    @param    len     버퍼의 길이
+    @return   전송된 데이타 개수
 *///----------------------------------------------------------------------------
 int  can_read( poll_obj_t *obj, can_frame_t *frame)
 {
@@ -158,13 +158,13 @@ int  can_read( poll_obj_t *obj, can_frame_t *frame)
     return rdcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ��ü���� udp ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    host    ���� IP �� ȣ��Ʈ�̸� ���ڿ�������
-    @param    port    ���� ��Ʈ��ȣ
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
-    @remark   can_open_server(), can_open_client() �Լ��� �ѹ� ȣ��Ǿ�� �Ѵ�.
+/** @brief    poll 객체없이 udp 소켓을 통해 데이타를 전송한다.
+    @param    host    상대방 IP 나 호스트이름 문자열포인터
+    @param    port    상대방 포트번호
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
+    @remark   can_open_server(), can_open_client() 함수는 한번 호출되어야 한다.
 *///----------------------------------------------------------------------------
 int  can_write_simple( can_frame_t *frame )
 {
@@ -176,11 +176,11 @@ int  can_write_simple( can_frame_t *frame )
     return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ��ü���� udp ������ ���� ����Ÿ�� �д´�.
-    @param    buf  ���۹���
-    @param    len  ������ ����
-    @return   ���۵� ����Ÿ ����
-    @remark   can_open_server(), can_open_client() �Լ��� �ѹ� ȣ��Ǿ�� �Ѵ�.
+/** @brief    poll 객체없이 udp 소켓을 통해 데이타를 읽는다.
+    @param    buf  전송버퍼
+    @param    len  버퍼의 길이
+    @return   전송된 데이타 개수
+    @remark   can_open_server(), can_open_client() 함수는 한번 호출되어야 한다.
 *///----------------------------------------------------------------------------
 int  can_read_simple( can_frame_t *frame )
 {
diff --git a/app/app-prime-modbus/lib/fanet/fabind.c b/app/app-prime-modbus/lib/fanet/fabind.c
index 5bc409a..62d6c12 100644
--- a/app/app-prime-modbus/lib/fanet/fabind.c
+++ b/app/app-prime-modbus/lib/fanet/fabind.c
@@ -1,9 +1,9 @@
 /**    
     @file     fabind.c 
     @date     2008/10/08
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    fa-bind ����̹��� ����ϱ� ���� API �� �����Ѵ�..
-              2009/06/10(�����) fanet �� �����ϱ� ���� ����
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    fa-bind 드라이버를 사용하기 위한 API 를 구현한다..
+              2009/06/10(오재경) fanet 에 포함하기 위해 수정
     
     @todo     
     @bug     
@@ -11,8 +11,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -36,36 +36,36 @@
 
 char desc_fabind[] = "falinux fa-bind ver 0.2.1";
 
-/// fabind ���� ����ü
+/// fabind 개별 구조체
 typedef struct {
 
 	int  port;
 	int  group;
 	
-	int  need_ack;          // ����䱸�� �ʿ��Ѱ�
+	int  need_ack;          // 응답요구가 필요한것
 	ioctl_bind_msg_t ack_info;
 	
 } fabind_priv_t;
 
 
 /// @{
-/// @brief  ���� �Լ� ����Ʈ 
-int    fabind_post_message_simple( int fd, int port , unsigned char *buf, int count                    ); /// �Ϲ����� �޼��� ����
-int    fabind_post_message       ( int fd, int port , unsigned char *buf, int count, msg_howto_t howto ); /// �Ϲ����� �޼��� ����
-int    fabind_group_message      ( int fd, int group, unsigned char *buf, int count );                    /// �׷� �޼��� ����(��۵� ����)
-int    fabind_recv_message       ( int fd, unsigned char *buf, int count, ioctl_bind_msg_t *info       ); /// �޼��� ����
-int    fabind_request_response   ( int fd, int port , unsigned char *tx_buf, unsigned char *rx_buf, int tx_cnt, int rx_cnt ); /// ���� ����� �޼��� ����
-int    fabind_send_ack           ( int fd, int port , unsigned char *buf, int count                    ); /// ack �޼��� ����
+/// @brief  로컬 함수 리스트 
+int    fabind_post_message_simple( int fd, int port , unsigned char *buf, int count                    ); /// 일반적인 메세지 전송
+int    fabind_post_message       ( int fd, int port , unsigned char *buf, int count, msg_howto_t howto ); /// 일반적인 메세지 전송
+int    fabind_group_message      ( int fd, int group, unsigned char *buf, int count );                    /// 그룹 메세지 전송(방송도 포함)
+int    fabind_recv_message       ( int fd, unsigned char *buf, int count, ioctl_bind_msg_t *info       ); /// 메세지 수신
+int    fabind_request_response   ( int fd, int port , unsigned char *tx_buf, unsigned char *rx_buf, int tx_cnt, int rx_cnt ); /// 응답 대기형 메세지 전송
+int    fabind_send_ack           ( int fd, int port , unsigned char *buf, int count                    ); /// ack 메세지 전송
 /// @}
 
 
 
 //------------------------------------------------------------------------------
-/** @brief   fabind ����̹� ���� ��ü�� �ʱ�ȭ�Ѵ�.
-	@param   port              ���� ��Ʈ
-	@param   group             ���� �׷�
-	@param   recv_queue_count  ���� ���� ť�� ����
-	@retrun  obj  ����ü ������
+/** @brief   fabind 드라이버 열고 객체를 초기화한다.
+	@param   port              나의 포트
+	@param   group             나의 그룹
+	@param   recv_queue_count  내가 받을 큐의 개수
+	@retrun  obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *fabind_open( int port, int group, int recv_queue_count )
 {
@@ -104,7 +104,7 @@ poll_obj_t  *fabind_open( int port, int group, int recv_queue_count )
 		return NULL;
 	}
 	    
-	// fabind ���� ������ �����Ѵ�.
+	// fabind 만의 정보를 설정한다.
 	fabind = (fabind_priv_t *)malloc( sizeof(fabind_priv_t) );
 	memset( (void *)fabind, 0, sizeof(fabind_priv_t) );
 	
@@ -112,7 +112,7 @@ poll_obj_t  *fabind_open( int port, int group, int recv_queue_count )
 	fabind->group         = group;
 	fabind->need_ack = 0;
 
-	// ���Ŵ����� ����Ѵ�.
+	// 폴매니져에 등록한다.
 	obj = poll_add( dev );
 	obj->type = STYP_FABIND;
 	obj->priv = (void *)fabind;
@@ -120,8 +120,8 @@ poll_obj_t  *fabind_open( int port, int group, int recv_queue_count )
 	return obj;
 }
 //------------------------------------------------------------------------------
-/** @brief    fabind ��ü�� �����Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    fabind 객체를 해제한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void fabind_close( poll_obj_t *obj )
 {
@@ -135,9 +135,9 @@ void fabind_close( poll_obj_t *obj )
 	poll_delete( obj );
 }
 //------------------------------------------------------------------------------
-/** @brief    fabind ����ü�� ��Ʈ��ȣ�� ã�´�.
-    @param    port ��Ʈ��ȣ
-    @return   obj  ����ü ������
+/** @brief    fabind 폴객체를 포트번호로 찾는다.
+    @param    port 포트번호
+    @return   obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t *fabind_get_byport( int port )
 {
@@ -163,12 +163,12 @@ poll_obj_t *fabind_get_byport( int port )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    fabind �� ���� ����Ÿ�� �����Ѵ�.
-    @param    obj       ����ü ������
-    @param    port      ����� ��Ʈ��ȣ
-    @param    buf       ���۹���
-    @param    len       ������ ����
-    @return   ������ ����Ÿ ����
+/** @brief    fabind 를 통해 데이타를 전송한다.
+    @param    obj       폴객체 포인터
+    @param    port      상대편 포트번호
+    @param    buf       전송버퍼
+    @param    len       버퍼의 길이
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  fabind_write( poll_obj_t *obj, int port, char *buf, int len )
 {
@@ -187,7 +187,7 @@ int  fabind_write( poll_obj_t *obj, int port, char *buf, int len )
 		return -1;
 	}
 
-	// ���� ����Ÿ���� ������ �ʿ��� ����Ÿ�� ���Դٸ�
+	// 이전 데이타에서 응답이 필요한 데이타가 들어왔다면
 	if ( fabind->need_ack )
 	{
 		fabind->need_ack = 0;
@@ -199,14 +199,14 @@ int  fabind_write( poll_obj_t *obj, int port, char *buf, int len )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief    fabind �� ���� ����Ÿ�� �����Ѵ�.
-    @param    obj          ����ü ������
-    @param    port         ����� ��Ʈ��ȣ
-    @param    buf          ���۹���
-    @param    len          ������ ����
-    @param    timeout_sec  ���� ���ð�
-                           0���� ������ ���Ѵ�� ����Ͽ� �����Ѵ�
-    @return   ������ ����Ÿ ����
+/** @brief    fabind 를 통해 데이타를 전송한다.
+    @param    obj          폴객체 포인터
+    @param    port         상대편 포트번호
+    @param    buf          전송버퍼
+    @param    len          버퍼의 길이
+    @param    timeout_sec  전송 대기시간
+                           0보다 작으면 무한대로 대기하여 전송한다
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  fabind_write_timeout( poll_obj_t *obj, int port, char *buf, int len, int timeout_sec )
 {
@@ -231,13 +231,13 @@ int  fabind_write_timeout( poll_obj_t *obj, int port, char *buf, int len, int ti
 	return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief    fabind �� ���� ����Ÿ�� �д´�.
-    @param    obj       ����ü ������
-    @param    buf       ����
-    @param    len       ������ ����
-    @param    need_ack  ������ ���۰� ������ �ʿ��Ѱ������� ���θ� �˷��ִ� ������
-    @return   ���� ����Ÿ ����
-    @remark   need_ack_port �� 0 �̻��̸� ��ٷ� fabind_write() �Լ��� ������ �����־�� �Ѵ�.
+/** @brief    fabind 를 통해 데이타를 읽는다.
+    @param    obj       폴객체 포인터
+    @param    buf       읽기버퍼
+    @param    len       버퍼의 길이
+    @param    need_ack  현재의 버퍼가 응답이 필요한것인지의 여부를 알려주는 포인터
+    @return   읽은 데이타 개수
+    @remark   need_ack_port 가 0 이상이면 곧바로 fabind_write() 함수로 응답을 보내주어야 한다.
 *///----------------------------------------------------------------------------
 int  fabind_read( poll_obj_t *obj, char *buf, int len, int *need_ack )
 {
@@ -247,7 +247,7 @@ int  fabind_read( poll_obj_t *obj, char *buf, int len, int *need_ack )
 	fabind = (fabind_priv_t *)obj->priv; 
 	*need_ack = 0;
 
-	// ����Ÿ�� �д´�.
+	// 데이타를 읽는다.
 	rdcnt = fabind_recv_message( obj->fd, buf, len, &fabind->ack_info );
 
 	if ( 0 < rdcnt )
@@ -263,8 +263,8 @@ int  fabind_read( poll_obj_t *obj, char *buf, int len, int *need_ack )
 	return rdcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief   fabind �� ���� ����Ÿ�� ������ �� ������ �޴´�.
-	@retrun  ���� ����Ÿ ����
+/** @brief   fabind 를 통해 데이타를 전송한 후 응답을 받는다.
+	@retrun  받은 데이타 개수
 *///----------------------------------------------------------------------------
 int  fabind_write_and_response( poll_obj_t *obj, int port, char *tx_buf, char *rx_buf, int tx_cnt, int rx_cnt ) 
 {
@@ -272,22 +272,22 @@ int  fabind_write_and_response( poll_obj_t *obj, int port, char *tx_buf, char *r
 
 	fabind = (fabind_priv_t *)obj->priv;
 
-	// ���� ������ ��Ʈ���� ����䱸 ������ ���� �ʴ´�.
+	// 내가 점유한 포트에는 응답요구 전송을 하지 않는다.
 	if ( fabind->port == port ) return 0;
 	
 	return fabind_request_response( obj->fd, port, tx_buf, rx_buf, tx_cnt, rx_cnt );
 }
 //------------------------------------------------------------------------------
-/** @brief   fabind �� ���� �׷������ ����Ÿ�� �����Ѵ�.
-	@retrun  ���� ����Ÿ ����
+/** @brief   fabind 를 통해 그룹단위로 데이타를 전송한다.
+	@retrun  받은 데이타 개수
 *///----------------------------------------------------------------------------
 int  fabind_write_group( poll_obj_t *obj, int grp_port, char *buf, int len )
 {
 	return fabind_group_message( obj->fd, grp_port, buf, len );
 }
 //------------------------------------------------------------------------------
-/** @brief   fabind �� ���� ���� ��Ʈ��ȣ�� ��´�.
-	@retrun  ���� ����Ÿ ����
+/** @brief   fabind 를 통해 들어온 포트번호를 얻는다.
+	@retrun  받은 데이타 개수
 *///----------------------------------------------------------------------------
 int  fabind_get_recv_port( poll_obj_t *obj )
 {
@@ -300,16 +300,16 @@ int  fabind_get_recv_port( poll_obj_t *obj )
 
 
 
-//____���� api �Լ�_____________________________________________________________
+//____개별 api 함수_____________________________________________________________
 
 
 //------------------------------------------------------------------------------
-/** @brief   �ܼ��ϰ� �޼��� ������
-	@param   fd       fa-bind ����̽� �ڵ�
-	@param   port     ����� ��Ʈ��ȣ
-	@param   buf      ����
-	@param   count    ������ ����
-	@retrun  ���۵� ����
+/** @brief   단순하게 메세지 보내기
+	@param   fd       fa-bind 디바이스 핸들
+	@param   port     상대편 포트번호
+	@param   buf      버퍼
+	@param   count    버퍼의 개수
+	@retrun  전송된 개수
 *///----------------------------------------------------------------------------
 int  fabind_post_message_simple( int fd, int port, unsigned char *buf, int count )
 {
@@ -332,14 +332,14 @@ int  fabind_post_message_simple( int fd, int port, unsigned char *buf, int count
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   �޼��� ������
-	@param   fd       fa-bind ����̽� �ڵ�
-	@param   port     ����� ��Ʈ��ȣ
-	@param   buf      ����
-	@param   count    ������ ����
-	@param   howto    ������ ���
+/** @brief   메세지 보내기
+	@param   fd       fa-bind 디바이스 핸들
+	@param   port     상대편 포트번호
+	@param   buf      버퍼
+	@param   count    버퍼의 개수
+	@param   howto    전송의 방법
 	                  SR_TYPE_NORMAL, SR_TYPE_EXPRESS, SR_TYPE_EMERENCY
-	@retrun  ���۵� ����
+	@retrun  전송된 개수
 *///----------------------------------------------------------------------------
 int  fabind_post_message( int fd, int port , unsigned char *buf, int count, msg_howto_t howto )
 {
@@ -362,12 +362,12 @@ int  fabind_post_message( int fd, int port , unsigned char *buf, int count, msg_
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   �޼��� �޾ƿ���
-	@param   fd       fa-bind ����̽� �ڵ�
-	@param   buf      ����
-	@param   count    ������ ����
-	@param   info     ����� ���� ����ü ������
-	@retrun  ���� ����Ÿ ����
+/** @brief   메세지 받아오기
+	@param   fd       fa-bind 디바이스 핸들
+	@param   buf      버퍼
+	@param   count    버퍼의 개수
+	@param   info     상대편 정보 구조체 포인터
+	@retrun  받은 데이타 개수
 	@remark  
 *///----------------------------------------------------------------------------
 int  fabind_recv_message( int fd, unsigned char *buf, int count, ioctl_bind_msg_t *info )
@@ -388,14 +388,14 @@ int  fabind_recv_message( int fd, unsigned char *buf, int count, ioctl_bind_msg_
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   �޼����� ������ �� ������ �޴´�.
-	@param   fd       fa-bind ����̽� �ڵ�
-	@param   port     ����� ��Ʈ��ȣ
-	@param   tx_buf   ���� ����
-	@param   rx_buf   ���� ����
-	@param   tx_cnt   ���۹����� ����
-	@param   rx_cnt   �������� ����
-	@retrun  ���� ����Ÿ ����
+/** @brief   메세지를 전송한 후 응답을 받는다.
+	@param   fd       fa-bind 디바이스 핸들
+	@param   port     상대편 포트번호
+	@param   tx_buf   전송 버퍼
+	@param   rx_buf   수신 버퍼
+	@param   tx_cnt   전송버퍼의 개수
+	@param   rx_cnt   수신버퍼의 개수
+	@retrun  받은 데이타 개수
 *///----------------------------------------------------------------------------
 int  fabind_request_response( int fd, int port , 
           unsigned char *tx_buf, unsigned char *rx_buf, int tx_cnt, int rx_cnt )
@@ -409,7 +409,7 @@ int  fabind_request_response( int fd, int port ,
 	msg.count    = tx_cnt;
 	msg.buf      = tx_buf;
 	
-	rtn = ioctl( fd, IOCTL_BIND_SEND_REQ, &msg );   // �۽� (blocking)
+	rtn = ioctl( fd, IOCTL_BIND_SEND_REQ, &msg );   // 송신 (blocking)
 
 	if ( rtn <= 0 )
 	{
@@ -422,16 +422,16 @@ int  fabind_request_response( int fd, int port ,
 	msg.count   = rx_cnt;
 	msg.buf     = rx_buf;
 	
-	rtn = ioctl( fd, IOCTL_BIND_RECV_ACK, &msg );   // ����
+	rtn = ioctl( fd, IOCTL_BIND_RECV_ACK, &msg );   // 수신
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   �׷캰 �޼��� ����
-	@param   fd       fa-bind ����̽� �ڵ�
-	@param   group    ������ �׷��ȣ
-	@param   buf      ����
-	@param   count    ������ ����
-	@retrun  ���۵� �������� ����
+/** @brief   그룹별 메세지 전송
+	@param   fd       fa-bind 디바이스 핸들
+	@param   group    전송할 그룹번호
+	@param   buf      버퍼
+	@param   count    버퍼의 개수
+	@retrun  전송된 목적지의 개수
 *///----------------------------------------------------------------------------
 int  fabind_group_message( int fd, int group, unsigned char *buf, int count )
 {
@@ -450,12 +450,12 @@ int  fabind_group_message( int fd, int group, unsigned char *buf, int count )
 	return rtn;
 }
 //------------------------------------------------------------------------------
-/** @brief   �䱸 �޼����� ���� ���� ����
-	@param   fd       fa-bind ����̽� �ڵ�
-	@param   port     ������ ���� ��Ʈ
-	@param   buf      ����
-	@param   count    ������ ����
-	@retrun  ���۵� �������� ����
+/** @brief   요구 메세지에 대한 응답 전송
+	@param   fd       fa-bind 디바이스 핸들
+	@param   port     응답을 보낼 포트
+	@param   buf      버퍼
+	@param   count    버퍼의 개수
+	@retrun  전송된 목적지의 개수
 *///----------------------------------------------------------------------------
 int  fabind_send_ack( int fd, int port , unsigned char *buf, int count )
 {
diff --git a/app/app-prime-modbus/lib/fanet/ipc_call.c b/app/app-prime-modbus/lib/fanet/ipc_call.c
index 4e3f20a..521d90d 100644
--- a/app/app-prime-modbus/lib/fanet/ipc_call.c
+++ b/app/app-prime-modbus/lib/fanet/ipc_call.c
@@ -1,8 +1,8 @@
 /**    
     @file     ipc_call.c
     @date     2008-06-30
-    @author   ����ȣ jhpark@falinux.com
-    @brief    ���μ������� ���� ������ �����Ѵ�.
+    @author   박진호 jhpark@falinux.com
+    @brief    프로세스간의 명령 전달을 구현한다.
 
     @modify   
     @todo    
@@ -12,8 +12,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -38,7 +38,7 @@
 
 #include <ipc_call.h>
 
-/// @brief  ���� ���� ����
+/// @brief  전역 변수 선언
 //------------------------------------------------------------------------------
 /// @}
 
@@ -46,22 +46,22 @@ char ipc_call_desc[]   = "ipc_call ver 0.3.0";
 
 #define 				FABIND_QUEUE_COUNT		1024
 
-/// fabind ���� ����ü
+/// fabind 개별 구조체
 typedef struct {
 	unsigned long 		id;						/// 
-	unsigned long 		port;					/// ����� ���� PORT 
-	unsigned long 		group;					/// ���� �� ���� GROUP ID
-	         long 		method_type;			/// ��� ó�� ��� ( FABIND, UDS, UDP )
-	unsigned long 		level;					/// LEVEL ��
-	unsigned long 		time_out;				/// TIME OUT ��
+	unsigned long 		port;					/// 통신을 위한 PORT 
+	unsigned long 		group;					/// 구룹 처리를 위한 GROUP ID
+	         long 		method_type;			/// 통신 처리 방법 ( FABIND, UDS, UDP )
+	unsigned long 		level;					/// LEVEL 값
+	unsigned long 		time_out;				/// TIME OUT 값
 	
-	poll_obj_t  		*poll_obj;				/// �� ���� obj
-	ipc_call_func_t     *func;                  /// ����Ÿ ���Ž� ȣ���ϴ� ����� �ݹ��Լ�
-	ipc_call_packet_t   recv_packet;            /// ����Ÿ ���� ����
+	poll_obj_t  		*poll_obj;				/// 폴 관련 obj
+	ipc_call_func_t     *func;                  /// 데이타 수신시 호출하는 사용자 콜백함수
+	ipc_call_packet_t   recv_packet;            /// 데이타 수신 패켓
 
 } ipc_priv_t;
 
-/// IPC_CALL �� ������ �����ϴ� ����ü
+/// IPC_CALL 의 변수를 관리하는 구조체
 static ipc_priv_t  ipc_priv;
 
 int    ipc_call_poll_in( poll_obj_t *obj);
@@ -70,8 +70,8 @@ int    ipc_call_poll_in( poll_obj_t *obj);
 int			ipc_call_method				( unsigned long method	);
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL ���� ���¸� ��� �Ѵ�.
-    @param    err err �ѹ�
+/** @brief    IPC_CALL 에러 상태를 출력 한다.
+    @param    err err 넘버
 *///----------------------------------------------------------------------------
 void ipc_call_print_error				( int err	) 									
 {
@@ -88,10 +88,10 @@ void ipc_call_print_error				( int err	)
 }
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� �����Ѵ�.
-    @param    id   IPC�� ID.
-    @return   0  ����
-			  -1 ����
+/** @brief    IPC_CALL 을 생성한다.
+    @param    id   IPC의 ID.
+    @return   0  성공
+			  -1 실패
 *///----------------------------------------------------------------------------
 int			ipc_call_create				( unsigned long id  	) 									
 {	
@@ -104,15 +104,15 @@ int			ipc_call_create				( unsigned long id  	)
 	ipc_priv.group     		= IPC_CALL_GET_GROUP(id);  
 	ipc_priv.method_type 	= IPC_CALL_METHOD_NONE;     
 	                        
-	// ����Ʈ�� UDS�� ���� �ٸ����� Ÿ���� �����Ҷ� ó�� �ϵ��� �Ѵ�.
+	// 디폴트로 UDS로 열고 다른것은 타입을 변경할때 처리 하도록 한다.
 	return ipc_call_method( IPC_CALL_METHOD_UDS );
 }
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� �����Ѵ�.
-    @param    id IPC�� ID.
-    @return   0 ����
-			  -1 ����
+/** @brief    IPC_CALL 을 해제한다.
+    @param    id IPC의 ID.
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------
 int	ipc_call_free( unsigned long id )
 {	
@@ -135,10 +135,10 @@ int	ipc_call_free( unsigned long id )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� ���� ����� ���Ѵ�.
-    @param    method �޽��� ���� ���
-    @return   0 ����
-			  -1 ����
+/** @brief    IPC_CALL 의 수행 방식을 정한다.
+    @param    method 메시지 전송 방법
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------                       	                                							
 int			ipc_call_method				( unsigned long method	)
 {
@@ -196,10 +196,10 @@ int			ipc_call_method				( unsigned long method	)
 }
  
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� ������ ���Ѵ�.
-    @param    level ���� ������ ���Ѵ�.
-    @return   0 ����
-			  -1 ����
+/** @brief    IPC_CALL 의 레벨을 정한다.
+    @param    level 전송 레벨을 정한다.
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------                                    	                                							
 int			ipc_call_level				( unsigned long level	)
 {
@@ -209,10 +209,10 @@ int			ipc_call_level				( unsigned long level	)
 
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� ����Ʈ ������ �����Ѵ�.
-    @param    level    ����Ʈ ���� ������ ���Ѵ�.	
-    @return   0 ����
-			  -1 ����
+/** @brief    IPC_CALL 의 디폴트 레벨을 설정한다.
+    @param    level    디폴트 전송 레벨을 정한다.	
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------           
 int			ipc_call_level_default		( unsigned long level	)
 {
@@ -221,10 +221,10 @@ int			ipc_call_level_default		( unsigned long level	)
 }
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� �ð� �ʰ��� �����Ѵ�.
-    @param    msec    timeout�� �ð��� ���Ѵ�.
-    @return   0 ����
-			  -1 ����
+/** @brief    IPC_CALL 의 시간 초과를 설정한다.
+    @param    msec    timeout될 시간을 정한다.
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------                                               	                                							
 int			ipc_call_timeout			( unsigned long msec	)
 {
@@ -233,10 +233,10 @@ int			ipc_call_timeout			( unsigned long msec	)
 }
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� ����Ʈ �ð� �ʰ��� ���Ѵ�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   0 ����
-			  -1 ����
+/** @brief    IPC_CALL 의 디폴트 시간 초과를 정한다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------   
 int			ipc_call_timeout_default	( unsigned long msec	)
 {
@@ -246,10 +246,10 @@ int			ipc_call_timeout_default	( unsigned long msec	)
 
 
 //------------------------------------------------------------------------------
-/** @brief    POLLIN�� ���� �Լ� ������
+/** @brief    POLLIN을 위한 함수 포인터
     @param    obj poll_obj 
-    @return   0 ����
-			  -1 ����
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------                                       	
 int    ipc_call_poll_in( poll_obj_t *obj)
 {
@@ -291,10 +291,10 @@ int    ipc_call_poll_in( poll_obj_t *obj)
 }
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� �б⿡ ���� �̺�Ʈ�� �����Ѵ�.
-    @param    func    read�� ȣ��� �Լ� �����͸� ���� �Ѵ�.
-    @return   0 ����
-			  -1 ����
+/** @brief    IPC_CALL 의 읽기에 대한 이벤트를 지정한다.
+    @param    func    read시 호출될 함수 포인터를 설정 한다.
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------                                       	
 int	ipc_call_on_read			( ipc_call_func_t *func )
 {
@@ -303,11 +303,11 @@ int	ipc_call_on_read			( ipc_call_func_t *func )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    IPC_CALL �� ���ŵ� ������ ������ BIN �������� �д´�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   0 ����
-			  -1 ����
-	@remark   �� �Լ��� �ʿ䰡 ������ ����. �Ǵ��ʿ�
+/** @brief    IPC_CALL 의 수신된 버퍼의 내용을 BIN 형식으로 읽는다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   0 성공
+			  -1 실패
+	@remark   이 함수는 필요가 없을것 같다. 판단필요
 *///----------------------------------------------------------------------------                                       	
 int			ipc_call_read				( void *buf, int len ) 
 {
@@ -336,10 +336,10 @@ int			ipc_call_read				( void *buf, int len )
 
 
 //------------------------------------------------------------------------------
-/** @brief     IPC_CALL �� BIN �������� �����͸� �����Ѵ�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   0 ����
-			  -1 ����
+/** @brief     IPC_CALL 의 BIN 형식으로 데이터를 전송한다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------                                      	
 int			ipc_call_send			( unsigned long dest, void *buf, int len, unsigned long msg_type )
 {
@@ -407,10 +407,10 @@ int			ipc_call_send			( unsigned long dest, void *buf, int len, unsigned long ms
 
 
 //------------------------------------------------------------------------------
-/** @brief     IPC_CALL �� XML �������� �����͸� �����Ѵ�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   0 ����
-			  -1 ����
+/** @brief     IPC_CALL 의 XML 형식으로 데이터를 전송한다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------   
 int			ipc_call_send_xml			( unsigned long dest, char *buf, int len )
 {
@@ -419,10 +419,10 @@ int			ipc_call_send_xml			( unsigned long dest, char *buf, int len )
 }
 
 //------------------------------------------------------------------------------
-/** @brief     IPC_CALL �� ASC �������� �����͸� �����Ѵ�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   0 ����
-			  -1 ����
+/** @brief     IPC_CALL 의 ASC 형식으로 데이터를 전송한다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   0 성공
+			  -1 실패
 *///----------------------------------------------------------------------------  
 int			ipc_call_send_asc			( unsigned long dest, char *buf, int len )
 {
@@ -430,10 +430,10 @@ int			ipc_call_send_asc			( unsigned long dest, char *buf, int len )
 }
 
 //------------------------------------------------------------------------------
-/** @brief     IPC_CALL �� BIN �������� �����͸� �����ϰ� �����Ѵ�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   ���  ����
-			  ����  ����
+/** @brief     IPC_CALL 의 BIN 형식으로 데이터를 전송하고 수신한다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   양수  성공
+			  음수  실패
 *///----------------------------------------------------------------------------                                                	
 int			ipc_call_rpc_raw		( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen , unsigned long msg_type )
 {
@@ -465,18 +465,18 @@ int			ipc_call_rpc_raw		( unsigned long dest, void *tbuf, int tlen , void *rbuf,
 			sprintf( dst_uds, IPC_CALL_UDS_NAME_FORMAT, IPC_CALL_GET_PORT(dest) );
 
 			ret = uds_write( obj, dst_uds, (char *)(&packet), IPC_CALL_PACKET_HEADER_LEN + tlen );
-			event_ret = poll_do_one( obj->fd, POLLIN, ipc_priv.time_out );		// POLL �̺�Ʈ�� �ö����� ��� �Ѵ�. ( TIME OUT )�̸� ���� ������.
+			event_ret = poll_do_one( obj->fd, POLLIN, ipc_priv.time_out );		// POLL 이벤트가 올때까지 대기 한다. ( TIME OUT )이면 빠져 나간다.
 
 			if ( event_ret != POLL_EVENTED  ) 
 			{
-				// �̺�Ʈ�� ���������� �߻� �Ҷ� ���� ���� ��� �Ѵ�.
+				// 이벤트가 정상적으로 발생 할때 까지 무한 대기 한다.
 				while(1)
 				{
 					ret = uds_write( obj, dst_uds, (char *)(&packet), IPC_CALL_PACKET_HEADER_LEN + tlen );
 
 					if ( ( event_ret == POLL_TIME_OUT ) && ( ipc_priv.time_out == IPC_CALL_TIMEOUT_UNLIMIT ) )
 					{
-						event_ret = poll_do_one( obj->fd, POLLIN, ipc_priv.time_out );		// POLL �̺�Ʈ�� �ö����� ��� �Ѵ�. ( TIME OUT )�̸� ���� ������.
+						event_ret = poll_do_one( obj->fd, POLLIN, ipc_priv.time_out );		// POLL 이벤트가 올때까지 대기 한다. ( TIME OUT )이면 빠져 나간다.
 					}
 
 					if ( event_ret == POLL_EVENTED  ) 
@@ -497,7 +497,7 @@ int			ipc_call_rpc_raw		( unsigned long dest, void *tbuf, int tlen , void *rbuf,
 			sprintf(host, "%s", "127.0.0.1");
 
 			udp_write( obj, host, packet.dst_id, (char *)(&packet), tlen );
-			poll_do_one( obj->fd, POLLIN, ipc_priv.time_out );		// POLL �̺�Ʈ�� �ö����� ��� �Ѵ�.  ( TIME OUT )�̸� ���� ������.
+			poll_do_one( obj->fd, POLLIN, ipc_priv.time_out );		// POLL 이벤트가 올때까지 대기 한다.  ( TIME OUT )이면 빠져 나간다.
 
 			ret = udp_read( obj, rbuf, rlen );        
 
@@ -517,10 +517,10 @@ int			ipc_call_rpc_raw		( unsigned long dest, void *tbuf, int tlen , void *rbuf,
 }
 
 //------------------------------------------------------------------------------
-/** @brief     IPC_CALL �� BIN �������� �����͸� �����ϰ� �����Ѵ�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   ���  ����
-			  ����  ����
+/** @brief     IPC_CALL 의 BIN 형식으로 데이터를 전송하고 수신한다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   양수  성공
+			  음수  실패
 *///----------------------------------------------------------------------------                                                	
 int	ipc_call_rpc( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen )
 {
@@ -528,10 +528,10 @@ int	ipc_call_rpc( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rle
 }
 
 //------------------------------------------------------------------------------
-/** @brief     IPC_CALL �� XML �������� �����͸� �����ϰ� �����Ѵ�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   ���  ����
-			  ����  ����
+/** @brief     IPC_CALL 의 XML 형식으로 데이터를 전송하고 수신한다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   양수  성공
+			  음수  실패
 *///----------------------------------------------------------------------------         
 int	ipc_call_rpc_xml( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen )
 {
@@ -540,10 +540,10 @@ int	ipc_call_rpc_xml( unsigned long dest, void *tbuf, int tlen , void *rbuf, int
 }
 
 //------------------------------------------------------------------------------
-/** @brief     IPC_CALL �� ASC �������� �����͸� �����ϰ� �����Ѵ�.
-    @param    msec    timeout�� ����Ʈ �ð��� ���Ѵ�.
-    @return   ��� ����
-			  ���� ����
+/** @brief     IPC_CALL 의 ASC 형식으로 데이터를 전송하고 수신한다.
+    @param    msec    timeout될 디폴트 시간을 정한다.
+    @return   양수 성공
+			  음수 실패
 *///----------------------------------------------------------------------------         
 int	ipc_call_rpc_asc( unsigned long dest, void *tbuf, int tlen , void *rbuf, int rlen )
 {
diff --git a/app/app-prime-modbus/lib/fanet/ix.c b/app/app-prime-modbus/lib/fanet/ix.c
index ffe9020..1f51472 100644
--- a/app/app-prime-modbus/lib/fanet/ix.c
+++ b/app/app-prime-modbus/lib/fanet/ix.c
@@ -1,22 +1,22 @@
 //------------------------------------------------------------------------------
-// �� �� �� : ix.c
-// ������Ʈ : fwp
-// ��    �� :
-// �� �� �� : ����â, �̿���, ����� , �̿���
-// �� �� �� : 2009�� 1�� 17��
-// �� �� �� :
-// �� �� �� :
-// ��    �� :
-// ���̼��� : BSD
+// 파 일 명 : ix.c
+// 프로젝트 : fwp
+// 설    명 :
+// 작 성 자 : 유영창, 이영민, 문경원 , 이원재
+// 작 성 일 : 2009년 1월 17일
+// 수 정 일 :
+// 수 정 일 :
+// 주    의 :
+// 라이센스 : BSD
 // to do list :
 //  1. ix_scan_device()  : sprintf(filename_buf,"/sys/class/input/input%d/name",ix_mng[lp].input_number );
-//     ���� �������� �ʿ��Ѱ� ? ���� �� ������ ���ٸ� error�� retrun �ؾ� �ϴ°�?
-//	   ���� ������ �ִ� ���忡�� /sys/class/input/input0 ������ ����. �׷��� event0��
-//	   �ֱ� ������ �Է� ���� ������ ���� ���� ����.
+//     과연 이정보가 필요한가 ? 만약 이 정보가 없다면 error로 retrun 해야 하는가?
+//	   내가 가지고 있는 보드에는 /sys/class/input/input0 정보가 없다. 그래도 event0가
+//	   있기 때문에 입력 값을 얻어오는 데는 문제 없다.
 
-//  3. press��ư�� ��ư�� down�Ǵ� ���� ���� ������ , ascii-2�� ��ȯ�Ѵ�.
-//  4. �ΰ� ��� Ű shitf, alt,...���� Űī ���� �� ���� code���� �����ϸ� �ȵȴ�. press���� ���� ��� ������ shtfŰ�� Ű�� 6�� ������ �ڵ带 ������.
-//     ���� �ΰ� ��� Ű�� ��������, key ����0���� �ؼ� ��������.
+//  3. press버튼은 버튼이 down되는 순간 값을 보내고 , ascii-2로 변환한다.
+//  4. 부가 기능 키 shitf, alt,...등의 키카 눌려 질 때는 code값을 전달하면 안된다. press에서 예를 들어 오른쪽 shtf키는 키값 6과 동일한 코드를 가진다.
+//     따라서 부가 기능 키가 눌려지면, key 값은0으로 해서 전달하자.
 //------------------------------------------------------------------------------
 #include <stdio.h>
 #include <string.h>
@@ -29,7 +29,7 @@
 
 #include <linux/input.h>
 #include <linux/limits.h>				// PATH_MAX
-#include <fcntl.h>                      // O_RDWR , O_NOCTTY ���� ��� ����
+#include <fcntl.h>                      // O_RDWR , O_NOCTTY 등의 상수 정의
 #include <time.h>
 
 #include <linux/kdev_t.h>				// MKDEV
@@ -48,16 +48,16 @@
 
 
 //--------------------------------------------------------------
-// ���� ����
+// 전역 변수
 //--------------------------------------------------------------
 
-#define ABS( x )   (((x) > 0 )? (x):-(x))		// ���밪
+#define ABS( x )   (((x) > 0 )? (x):-(x))		// 절대값
 
 
-static 	int				ix_error_code			= IXERR_NONE;				// �����ڵ�
+static 	int				ix_error_code			= IXERR_NONE;				// 에러코드
 static	ix_mng_t		ix_mng[IX_INPUT_DEVICE_MAX];
 static	int				ix_mng_count			= 0;
-static	poll_obj_t 		*input_obj[IX_INPUT_DEVICE_MAX];					// �Է� ����̽��� ���� ������Ʈ
+static	poll_obj_t 		*input_obj[IX_INPUT_DEVICE_MAX];					// 입력 디바이스에 대한 오브젝트
 
 
 static int				ix_sreen_x_min = 0;
@@ -68,23 +68,23 @@ static int				ix_sreen_y_max = IX_SCREEN_Y_DEFAULT;
 
 static int				ix_mouse_x = IX_SCREEN_X_DEFAULT/2;
 static int				ix_mouse_y = IX_SCREEN_Y_DEFAULT/2;
-static int				ix_key	    =0;											// KEY  �Է°�
+static int				ix_key	    =0;											// KEY  입력값
 
-static ix_btn_state_t	ix_button_state =0;											// ��ư ���°�
+static ix_btn_state_t	ix_button_state =0;											// 버튼 상태값
 
-static unsigned long	ix_mouse_event_flag	 =0;									// ���콺 �̺�Ʈ �߻� ( up ,down, move ..etc)
-static unsigned long	ix_key_event_flag	 =0;									// key    �̺�Ʈ �߻� ( up ,down ,press )
+static unsigned long	ix_mouse_event_flag	 =0;									// 마우스 이벤트 발생 ( up ,down, move ..etc)
+static unsigned long	ix_key_event_flag	 =0;									// key    이벤트 발생 ( up ,down ,press )
 static unsigned long	ix_mouse_double_click_flag=0;
 
-static ix_event_func_t  ix_event_func = NULL;			// �Լ� ������ 										//
+static ix_event_func_t  ix_event_func = NULL;			// 함수 포인터 										//
 
 static ix_cal_touch_info_t  	ix_cal_touch_info[IX_CAL_TOUCH_INFO_MAX];
 static ix_adjust_touch_info_t  	ix_adjust_touch_info;
 
-static char 			ix_capslock_flag 	=0;										// Ű���� caps lock �÷���
-static char 			ix_numlock_flag 	=0;										// Ű���� caps numlock �÷���
+static char 			ix_capslock_flag 	=0;										// 키보드 caps lock 플래그
+static char 			ix_numlock_flag 	=0;										// 키보드 caps numlock 플래그
 
-int  			ix_mouse_click_interval = IX_MOUSE_DOUBLE_CLICK_TIME_INTAVAL;		// ���콺 ���� Ŭ�� Ÿ�� ���͹�
+int  			ix_mouse_click_interval = IX_MOUSE_DOUBLE_CLICK_TIME_INTAVAL;		// 마우스 더블 클릭 타임 인터벌
 
 static struct timeval	ix_pre_time;
 
@@ -132,25 +132,25 @@ static char ix_askii[128] = {
 };
 
 //--------------------------------------------------------------
-// �Լ�
+// 함수
 //--------------------------------------------------------------
 static int ix_get_key_press_value(int *m_key, ix_btn_state_t button_state);
 
 
 //--------------------------------------------------------------
-// ���� :
-// �� :
-// ��ȯ : ����0, ����-1
+// 설명 :
+// 매계 :
+// 반환 : 성공0, 실패-1
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
-    @param  ����
-    @return 0: ���� , -1 ����
-    @remark ����
+    @param  없음
+    @return 0: 성공 , -1 실패
+    @remark 없음
 *///----------------------------------------------------------------------------
 int ix_init( void )
 {
-	// ���� ���� �ʱ�ȭ ... ���߿� ����.
+	// 전역 변수 초기화 ... 나중에 하자.
 	ix_event_func = NULL;
 
 	memset(ix_cal_touch_info, 0, sizeof(ix_cal_touch_info_t)*IX_CAL_TOUCH_INFO_MAX);
@@ -162,25 +162,25 @@ int ix_init( void )
 }
 
 //------------------------------------------------------------------------------
-/** @brief     ���� �޽��� ���ڿ��� ��ȯ�Ѵ�.
-    @param     ����
-    @return    ���� �޽��� ���ڿ��� ��ȯ�Ѵ�.
-    @remark		����
+/** @brief     에러 메시지 문자열을 반환한다.
+    @param     없음
+    @return    에러 메시지 문자열을 반환한다.
+    @remark		없음
 *///----------------------------------------------------------------------------
 static char  *ix_error_string( void )
 {
 
-	char *error_string[] ={ "���� ����",                                    			//IXERR_NONE
-							"ix_read_event_data_low �Լ� read ���� ",               	//IXERR_READ
-							"ix_read_event_data_low �Լ� fd ���� ",						//IXERR_FD
-							"ix_scan_device �Լ� ��ġ �������� ���� ����",				//IXERR_DEV_INFO_OPEN
-							"ix_auto_scan_open �Լ� ���� ix_scan_device ����",			//IXERR_AUTOSCAN_SCANDEVICE
-							"ix_auto_scan_open �Լ� ���� mknod ����",					//IXERR_AUTOSCAN_MKNOD
-							"ix_auto_scan_open �Լ� ���� ����̽� ���� ����",			//IXERR_AUTOSCAN_DEVICE_OPEN
-							"ix_auto_scan_open �Լ� ���� ex �Լ� ��� ����",			//IXERR_AUTOSCAN_EX_ADD
-							"ix_write_event_low �Լ� ���� �߸��� ���� ����",			//IXERR_WRITE_EVENT
-							"ix_write_mouse_button_action �Լ� ���� �߸��� ���� ����",	//IXERR_WRITE_MOUSE_BUTTON_EVENT
-							"ix_write_keyboard_key_action �Լ� ���� �߸��� ���� ����",	//IXERR_WRITE_KEYBOARD_EVENT
+	char *error_string[] ={ "에러 없음",                                    			//IXERR_NONE
+							"ix_read_event_data_low 함수 read 에러 ",               	//IXERR_READ
+							"ix_read_event_data_low 함수 fd 에러 ",						//IXERR_FD
+							"ix_scan_device 함수 장치 정보파일 오픈 에러",				//IXERR_DEV_INFO_OPEN
+							"ix_auto_scan_open 함수 에서 ix_scan_device 에러",			//IXERR_AUTOSCAN_SCANDEVICE
+							"ix_auto_scan_open 함수 에서 mknod 에러",					//IXERR_AUTOSCAN_MKNOD
+							"ix_auto_scan_open 함수 에서 디바이스 파일 오픈",			//IXERR_AUTOSCAN_DEVICE_OPEN
+							"ix_auto_scan_open 함수 에서 ex 함수 등록 에러",			//IXERR_AUTOSCAN_EX_ADD
+							"ix_write_event_low 함수 에서 잘못된 인자 에러",			//IXERR_WRITE_EVENT
+							"ix_write_mouse_button_action 함수 에서 잘못된 인자 에러",	//IXERR_WRITE_MOUSE_BUTTON_EVENT
+							"ix_write_keyboard_key_action 함수 에서 잘못된 인자 에러",	//IXERR_WRITE_KEYBOARD_EVENT
 
                         };
 	return( error_string[ix_error_code]);
@@ -189,8 +189,8 @@ static char  *ix_error_string( void )
 }
 
 //------------------------------------------------------------------------------
-/** @brief  ixlib�� �����ڵ�, �������ڿ� �� ����� �޼��� ���
-    @param  msg ����� �޼���
+/** @brief  ixlib에 에러코드, 에러문자열 및 사용자 메세지 출력
+    @param  msg 사용자 메세지
     @return
     @remark
 *///----------------------------------------------------------------------------
@@ -202,11 +202,11 @@ void ix_print_error( char *msg )
 
 
 //------------------------------------------------------------------------------
-/** @brief  �Է���ġ(Ű����, ���콺..���)���� �̺�Ʈ �����͸� �о� �´�. ��ġ�� �������� ������ �����Ͱ� ������.)
-    @param	fd 			�����͸� �о������� ��ũ����
-    @param	event_data	�̺�Ʈ �����͸� ��ȯ�Ѵ�.
-    @return	���� :0, ���� : -1
-    @remark �� �Լ��� �̿��Ͽ� �켱 �Է� �̺�Ʈ�� �о�� �� ��ġ���� �����͸� �и��ؼ� ����Ѵ�.
+/** @brief  입력장치(키보드, 마우스..등등)에서 이벤트 데이터를 읽어 온다. 장치에 구별없이 동일한 데이터가 읽힌다.)
+    @param	fd 			데이터를 읽어파일의 디스크립터
+    @param	event_data	이벤트 데이터를 반환한다.
+    @return	정상 :0, 실패 : -1
+    @remark 이 함수를 이용하여 우선 입력 이벤트를 읽어온 후 장치별로 데이터를 분리해서 사용한다.
 *///----------------------------------------------------------------------------
 int ix_read_event_data_low(int fd, ix_event_t *event_data )
 {
@@ -214,7 +214,7 @@ int ix_read_event_data_low(int fd, ix_event_t *event_data )
 
 	if(fd <0)
 	{
-		ix_error_code = IXERR_FD; 		// ����
+		ix_error_code = IXERR_FD; 		// 에러
 		return -1;
 	}
 
@@ -222,7 +222,7 @@ int ix_read_event_data_low(int fd, ix_event_t *event_data )
 
 	if(read_size != sizeof(ix_event_t))
 	{
-		ix_error_code = IXERR_READ; 	// �о�� �����Ͱ� �ùٸ��� ������ ������.
+		ix_error_code = IXERR_READ; 	// 읽어온 데이터가 올바르지 않으면 에러다.
 		return -1;
 	}
 
@@ -231,8 +231,8 @@ int ix_read_event_data_low(int fd, ix_event_t *event_data )
 }
 
 //------------------------------------------------------------------------------
-/** @brief 	������ �Լ��̸�, ix_event_t �����͸� ǥ���Ѵ�.
-    @param	event_data  �Է� ��ġ���� �о�� �̺�Ʈ ������
+/** @brief 	디버깅용 함수이며, ix_event_t 데이터를 표시한다.
+    @param	event_data  입력 장치에서 읽어온 이벤트 데이터
     @remark
 *///----------------------------------------------------------------------------
 void ix_debug_disp_event_data( ix_event_t *event_data )
@@ -284,7 +284,7 @@ void ix_debug_disp_event_data( ix_event_t *event_data )
 	{
     case    EV_SYN :  	printf("EV_SYN  ");		break;
 	case    EV_KEY :  	printf("EV_KEY  ");		break;
-	case    EV_ABS :    printf("EV_ABS  ");		break;      // ��ġ ��ũ�� �Է�
+	case    EV_ABS :    printf("EV_ABS  ");		break;      // 터치 스크린 입력
 	case    EV_REL :    printf("EV_ABS  ");		break;
 
     default : 	printf("[type]:%02x! " ,event_data->type); 			break;
@@ -292,7 +292,7 @@ void ix_debug_disp_event_data( ix_event_t *event_data )
 
 	switch(event_data->type)
 	{
- 	case    EV_ABS :    // ���밪
+ 	case    EV_ABS :    // 절대값
  		printf("[code:%d]%s , [value]:%d  ",
  					event_data->code ,
  					ix_code_abs_str[event_data->code],
@@ -300,7 +300,7 @@ void ix_debug_disp_event_data( ix_event_t *event_data )
  			   );
  		break;
 
-	case    EV_REL :   	// ��밪
+	case    EV_REL :   	// 상대값
  		printf("[code:%d]%s , [value]:%d  ",
  					event_data->code ,
  					ix_code_rel_str[event_data->code],
@@ -317,10 +317,10 @@ void ix_debug_disp_event_data( ix_event_t *event_data )
 
 
 //------------------------------------------------------------------------------
-/** @brief   Ű���� ���� �о� �´�.
-    @param   fd	Ű���忡 �ش��ϴ� ���ϵ�ũ����
-    @param   key ���� ���� Ű���� ��ȯ�Ѵ�.
-    @param   key_state ����key�� ���� ��ȯ�Ѵ�.
+/** @brief   키보드 값을 읽어 온다.
+    @param   fd	키보드에 해당하는 파일디스크립터
+    @param   key 현재 눌린 키값을 반환한다.
+    @param   key_state 보조key의 값을 반환한다.
     @return  -1
     @remark
 *///----------------------------------------------------------------------------
@@ -328,8 +328,8 @@ int ix_read_keyboard_low(int fd , int *key, int *key_state )
 {
 	ix_event_t	 event_data;
 
-	*key 		= KEY_RESERVED ;				// �ʱ�ȭ
-	*key_state 	= 0;							// �ʱ�ȭ
+	*key 		= KEY_RESERVED ;				// 초기화
+	*key_state 	= 0;							// 초기화
 
 	while(1)
 	{
@@ -342,7 +342,7 @@ int ix_read_keyboard_low(int fd , int *key, int *key_state )
 			*key 		= event_data.code;
 			*key_state	= event_data.value;
 		}
-		if(event_data.type == EV_SYN)			break;			// syn�� ���� ������.
+		if(event_data.type == EV_SYN)			break;			// syn가 오면 나간다.
 	}
 
 	return 0;
@@ -350,12 +350,12 @@ int ix_read_keyboard_low(int fd , int *key, int *key_state )
 
 
 //--------------------------------------------------------------
-// ���� : Ű���� ���� �о� �´�.
-//        Ű���带 ������
-//        Ű�� ������ �����Ͱ� �ι� �´�.
-//[Sec]665, [uSec]902491 EV_KEY  [code]:2 ,[value]:1       //value�� 1�̸� down
+// 설명 : 키보드 값을 읽어 온다.
+//        키보드를 누른값
+//        키가 눌리면 데이터가 두번 온다.
+//[Sec]665, [uSec]902491 EV_KEY  [code]:2 ,[value]:1       //value가 1이면 down
 //[Sec]665, [uSec]902604 EV_SYN  [code]:0 ,[value]:0
-// ����  key �� 2�� syn �ɶ� ���ױ� ����
+// 따라서  key 값 2를 syn 될때 보네기 위해
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -365,10 +365,10 @@ int ix_read_keyboard_low(int fd , int *key, int *key_state )
 *///----------------------------------------------------------------------------
 int ix_read_key_press_low(int fd , int *key )
 {
-	int 	key_state =0;					// syn�ϱ� ������ ����
+	int 	key_state =0;					// syn하기 이전값 보전
 	ix_event_t	 event_data;
 
-	*key 	= KEY_RESERVED ;				// �ʱ�ȭ
+	*key 	= KEY_RESERVED ;				// 초기화
 
 	while(1)
 	{
@@ -381,7 +381,7 @@ int ix_read_key_press_low(int fd , int *key )
 		}
 
 		if(	 (event_data.type	== EV_SYN			)
-		   &&(key_state			== IX_KEY_VAULE_DOWN))  break;			// �� ���� �� syn�� ���� ������.
+		   &&(key_state			== IX_KEY_VAULE_DOWN))  break;			// 키가 눌린 후 syn가 오면 나간다.
 	}
 
 	return 0;
@@ -389,30 +389,30 @@ int ix_read_key_press_low(int fd , int *key )
 
 
 //--------------------------------------------------------------
-// ���� : mouse ���� �о� �´�.
-// ���� :
-//		*x	: REL_X ��
-//		*y	: REL_Y ��
-//		*btn: code ���� �̿��Ͽ� ���콺 ��ư ��ġ�� �Ѱ��ش�.
-//			  ��ư�� ���ÿ� ������ ���� �� �������� ��Ʈ ����ũ �Ͽ� ���ÿ� ��ư�� ������ ���¸� �����Ѵ�.
+// 설명 : mouse 값을 읽어 온다.
+// 인자 :
+//		*x	: REL_X 값
+//		*y	: REL_Y 값
+//		*btn: code 값을 이용하여 마우스 버튼 위치를 넘겨준다.
+//			  버튼은 동시에 여러게 누릴 수 있음으로 비트 마스크 하여 동시에 버튼이 눌리는 상태를 전달한다.
 //
-//  [����1. ���콺 �����ʹ�ư�� ������, ���콺�� ������ ���]
-//	type = 	EV_KEY, code = BTN_LEFT,	value = 1    <- ���콺 ���� ��ư�� ����
-//	type = 	EV_REL, code = REL_X,		value = -14  <- X ��ǥ���� -14�̴�.
-//	type = 	EV_REL, code = REL_Y,		value = 99   <- Y ��ǥ���� +99�̴�.
-//	type = 	EV_SYN, code = 0,			value = 1    <- ���ݱ��� �����Ͱ� �ϳ��� �������̴�.
+//  [예시1. 마우스 오른쪽버튼을 누르고, 마우스를 움직일 경우]
+//	type = 	EV_KEY, code = BTN_LEFT,	value = 1    <- 마우스 왼쪽 버튼이 눌림
+//	type = 	EV_REL, code = REL_X,		value = -14  <- X 좌표값은 -14이다.
+//	type = 	EV_REL, code = REL_Y,		value = 99   <- Y 좌표값은 +99이다.
+//	type = 	EV_SYN, code = 0,			value = 1    <- 지금까지 데이터가 하나의 데이터이다.
 //
-//	��ư�� ���� ���¿��� , ���콺�� �����̴� ���� Ȯ�� �Ϸ���,
+//	버튼이 눌린 상태에서 , 마우스를 움직이는 값을 확인 하려면,
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
-/** @brief		��ġ��ũ���� ��ǥ���� ���޵ȴ�.
-    @param	fd	��ġ��ũ���� �ش��ϴ� ���ϵ�ũ����
-    @param	x	x��ǥ���� ������ ������ ����
-    @param	y	y��ǥ���� ������ ������ ����
-    @param	press	�о�� �������� type�� EV_KEY�̰�, code�� BTN_TOUCH�϶��� value���� ������ ������ ����
-    @return	0	����
-    @return	-1	����
-    @remark		�Ű躯���� ���� ��ǥ���� ���޵ȴ�.
+/** @brief		터치스크린의 좌표값이 전달된다.
+    @param	fd	터치스크린에 해당하는 파일디스크립터
+    @param	x	x좌표값을 저장할 포인터 변수
+    @param	y	y좌표값을 저장할 포인터 변수
+    @param	press	읽어온 데이터의 type가 EV_KEY이고, code가 BTN_TOUCH일때의 value값을 저장할 포인터 변수
+    @return	0	성공
+    @return	-1	실패
+    @remark		매계변수를 통해 좌표값이 전달된다.
 *///----------------------------------------------------------------------------
 int ix_read_touch_low(int fd , int *x, int *y, int *press )
 {
@@ -438,7 +438,7 @@ int ix_read_touch_low(int fd , int *x, int *y, int *press )
 			if(event_data.code == ABS_Y)	*y = event_data.value;
 		}
 
-		if(event_data.type == EV_SYN)			break;			// syn�� ���� ������.
+		if(event_data.type == EV_SYN)			break;			// syn가 오면 나간다.
 	}
 	return 0;
 }
@@ -446,36 +446,36 @@ int ix_read_touch_low(int fd , int *x, int *y, int *press )
 
 
 //------------------------------------------------------------------------------
-/** @brief	���콺 �Է� ���� ��� �´�.
-    @param	fd	���콺 �Է���ġ ���� ��ũ����
-    @param	x	���콺 ���� x��ǥ��(REL_X) ��ȯ�Ѵ�.
-    @param	y	���콺 ���� y��ǥ��(REL_Y) ��ȯ�Ѵ�.
-    @param	btn	���콺 ��ư ������ ��ȯ�Ѵ�.(code)
-                ��ư�� ���ÿ� ������ ���� �� �������� ��Ʈ ����ũ �Ͽ� ���ÿ� ��ư�� ������ ���¸� �����Ѵ�.
-
-    @return -1 	���콺 �Է� ���� �б� ����
-    @return 0 	���콺 �Է� ���б� ����
-    @remark  [����1. ���콺 �����ʹ�ư�� ������, ���콺�� ������ ���]
-			type = 	EV_KEY, code = BTN_LEFT,	value = 1    <- ���콺 ���� ��ư�� ����
-			type = 	EV_REL, code = REL_X,		value = -14  <- X ��ǥ���� -14�̴�.
-			type = 	EV_REL, code = REL_Y,		value = 99   <- Y ��ǥ���� +99�̴�.
-			type = 	EV_SYN, code = 0,			value = 1    <- ���ݱ��� �����Ͱ� �ϳ��� �������̴�.
+/** @brief	마우스 입력 값을 얻어 온다.
+    @param	fd	마우스 입력장치 파일 디스크립터
+    @param	x	마우스 상태 x좌표값(REL_X) 반환한다.
+    @param	y	마우스 상태 y좌표값(REL_Y) 반환한다.
+    @param	btn	마우스 버튼 눌림을 반환한다.(code)
+                버튼은 동시에 여러게 누릴 수 있음으로 비트 마스크 하여 동시에 버튼이 눌리는 상태를 전달한다.
+
+    @return -1 	마우스 입력 값을 읽기 실패
+    @return 0 	마우스 입력 값읽기 성공
+    @remark  [예시1. 마우스 오른쪽버튼을 누르고, 마우스를 움직일 경우]
+			type = 	EV_KEY, code = BTN_LEFT,	value = 1    <- 마우스 왼쪽 버튼이 눌림
+			type = 	EV_REL, code = REL_X,		value = -14  <- X 좌표값은 -14이다.
+			type = 	EV_REL, code = REL_Y,		value = 99   <- Y 좌표값은 +99이다.
+			type = 	EV_SYN, code = 0,			value = 1    <- 지금까지 데이터가 하나의 데이터이다.
 
 *///----------------------------------------------------------------------------
-/** @brief	���콺 �Է� ���� ��� �´�.
-    @param	fd	���콺 �Է���ġ ���� ��ũ����
-    @param	x	���콺 ���� x��ǥ��(REL_X)�� ��ȯ�� ������ ����
-    @param	y	���콺 ���� y��ǥ��(REL_Y)�� ��ȯ�� ������ ����
-    @param	btn	���콺 ��ư ������ ��ȯ�Ѵ�.(code)
-                ��ư�� ���ÿ� ������ ���� �� �������� ��Ʈ ����ũ �Ͽ� ���ÿ� ��ư�� ������ ���¸� �����Ѵ�.
-
-    @return -1 	���콺 �Է� ���� �б� ����
-    @return 0 	���콺 �Է� ���б� ����
-    @remark  [����1. ���콺 �����ʹ�ư�� ������, ���콺�� ������ ���]
-			type = 	EV_KEY, code = BTN_LEFT,	value = 1    <- ���콺 ���� ��ư�� ����
-			type = 	EV_REL, code = REL_X,		value = -14  <- X ��ǥ���� -14�̴�.
-			type = 	EV_REL, code = REL_Y,		value = 99   <- Y ��ǥ���� +99�̴�.
-			type = 	EV_SYN, code = 0,			value = 1    <- ���ݱ��� �����Ͱ� �ϳ��� �������̴�.
+/** @brief	마우스 입력 값을 얻어 온다.
+    @param	fd	마우스 입력장치 파일 디스크립터
+    @param	x	마우스 상태 x좌표값(REL_X)을 반환할 포인터 변수
+    @param	y	마우스 상태 y좌표값(REL_Y)을 반환할 포인터 변수
+    @param	btn	마우스 버튼 눌림을 반환한다.(code)
+                버튼은 동시에 여러게 누릴 수 있음으로 비트 마스크 하여 동시에 버튼이 눌리는 상태를 전달한다.
+
+    @return -1 	마우스 입력 값을 읽기 실패
+    @return 0 	마우스 입력 값읽기 성공
+    @remark  [예시1. 마우스 오른쪽버튼을 누르고, 마우스를 움직일 경우]
+			type = 	EV_KEY, code = BTN_LEFT,	value = 1    <- 마우스 왼쪽 버튼이 눌림
+			type = 	EV_REL, code = REL_X,		value = -14  <- X 좌표값은 -14이다.
+			type = 	EV_REL, code = REL_Y,		value = 99   <- Y 좌표값은 +99이다.
+			type = 	EV_SYN, code = 0,			value = 1    <- 지금까지 데이터가 하나의 데이터이다.
 
 *///----------------------------------------------------------------------------
 int ix_read_mouse_low(int fd , int *x, int *y, int *btn)
@@ -493,30 +493,30 @@ int ix_read_mouse_low(int fd , int *x, int *y, int *btn)
 			switch(event_data.code)
 			{
 			case BTN_LEFT	:
-					if(event_data.value == 1)	*btn |= IX_MOUSE_BTN_LEFT;		// ���콺 ���� ��ư�� ����
-					else						*btn &= ~IX_MOUSE_BTN_LEFT;		// ���콺 ���� ��ư�� ���� ����
+					if(event_data.value == 1)	*btn |= IX_MOUSE_BTN_LEFT;		// 마우스 왼쪽 버튼이 눌림
+					else						*btn &= ~IX_MOUSE_BTN_LEFT;		// 마우스 왼쪽 버튼이 눌림 해제
 				 break;
 
 			case BTN_RIGHT	:
-					if(event_data.value == 1)	*btn |= IX_MOUSE_BTN_RIGHT;		// ���콺 ������ ��ư�� ����
-					else						*btn &= ~IX_MOUSE_BTN_RIGHT;	// ���콺 ������ ��ư�� ���� ����
+					if(event_data.value == 1)	*btn |= IX_MOUSE_BTN_RIGHT;		// 마우스 오른쪽 버튼이 눌림
+					else						*btn &= ~IX_MOUSE_BTN_RIGHT;	// 마우스 오른쪽 버튼이 눌림 해제
 				 break;
 
 			case BTN_MIDDLE :
-					if(event_data.value == 1)	*btn |= IX_MOUSE_BTN_MIDDLE;	// ���콺 ��� ��ư�� ����
-					else						*btn &= ~IX_MOUSE_BTN_MIDDLE;	// ���콺 ��� ��ư�� ���� ����
+					if(event_data.value == 1)	*btn |= IX_MOUSE_BTN_MIDDLE;	// 마우스 가운데 버튼이 눌림
+					else						*btn &= ~IX_MOUSE_BTN_MIDDLE;	// 마우스 가운데 버튼이 눌림 해제
 				 break;
 			}
 		}
 
 		if( event_data.type	== EV_REL)
 		{
-			if(event_data.code == REL_X)	*x = event_data.value;				// x ���� ����
+			if(event_data.code == REL_X)	*x = event_data.value;				// x 값을 저장
 
-			if(event_data.code == REL_Y)	*y = event_data.value;				// y ���� ����
+			if(event_data.code == REL_Y)	*y = event_data.value;				// y 값을 저장
 		}
 
-		if(event_data.type == EV_SYN)			break;			// syn�� ���� ������.
+		if(event_data.type == EV_SYN)			break;			// syn가 오면 나간다.
 	}
 	return 0;
 }
@@ -524,14 +524,14 @@ int ix_read_mouse_low(int fd , int *x, int *y, int *btn)
 
 
 //------------------------------------------------------------------------------
-/** @brief	��ġ�� USB ������ ����� ��ġ�� �˻��� �� �����Ѵ�.
-    @return	-1	����
-    @return	0	����
-    @remark  cat /proc/bus/input/devices ���� input�� ���� ������ ���
-	         event�� ���� ������ �ִ� ��찡 �ִ�.
-	         �̰�� S: Sysfs=/class/input/input ���� ����̵� �̸� ������ ��� �� �� ���µ�
-	         �� ����̽� ������ /proc/bus/input/devices ���� ��� �� �� �ֱ� ������ �����Ͽ���.
-	         input �� ���� ������ ���ٸ�  -1�� �����ϰ� �����Ͽ���.
+/** @brief	장치의 USB 버스에 연결된 장치를 검색한 후 저장한다.
+    @return	-1	실패
+    @return	0	성공
+    @remark  cat /proc/bus/input/devices 에서 input에 대한 정보가 없어도
+	         event에 대한 정보는 있는 경우가 있다.
+	         이경우 S: Sysfs=/class/input/input 에서 디바이드 이름 정보를 얻어 올 수 없는데
+	         이 디바이스 정보는 /proc/bus/input/devices 에서 얻어 올 수 있기 때문에 수정하였다.
+	         input 에 대한 정보가 없다면  -1을 저장하게 수정하였다.
 *///----------------------------------------------------------------------------
 int ix_scan_device(void)
 {
@@ -556,9 +556,9 @@ int ix_scan_device(void)
 		return -1;
 	}
 
-	ix_mng_count = 0;		// �ʱ�ȭ
+	ix_mng_count = 0;		// 초기화
 
-	memset(ix_mng , 0, sizeof(ix_mng_t)*IX_INPUT_DEVICE_MAX);  // �ʱ�ȭ
+	memset(ix_mng , 0, sizeof(ix_mng_t)*IX_INPUT_DEVICE_MAX);  // 초기화
 
 
 	while(!feof(fp))
@@ -567,46 +567,46 @@ int ix_scan_device(void)
 
 		memset(read_buf, 0, sizeof(read_buf));
 
-		fgets(read_buf, sizeof(read_buf)-1, fp );	// �� �پ� �о�´�.
+		fgets(read_buf, sizeof(read_buf)-1, fp );	// 한 줄씩 읽어온다.
 		//printf("[line data]%s" ,read_buf );
-		if(read_buf[0] == 'S')						//	�Է� ����̽� ��ȣ�� ��ĵ�Ѵ�.
+		if(read_buf[0] == 'S')						//	입력 디바이스 번호를 스캔한다.
 		{
 			sscanf(read_buf, "S: Sysfs=/class/input/input%d" ,&tmp_num1);
 			ix_mng[ix_mng_count].input_number = tmp_num1;
 		}
 
-		if(read_buf[0] == 'H')						//	�̺�Ʈ  ����̽� ��ȣ�� ��ĵ�Ѵ�.
+		if(read_buf[0] == 'H')						//	이벤트  디바이스 번호를 스캔한다.
 		{
-			find_str = strstr(read_buf, "event");	// ���ڿ��� "event" �� ���� ���� �˻��ϰ� , �ִٸ� �κ� �����͸� �Ѱ��ش�.
+			find_str = strstr(read_buf, "event");	// 문자열에 "event" 가 있은 곳을 검색하고 , 있다면 부분 포인터를 넘겨준다.
 			if(find_str !=NULL)
 			{
 				sscanf(find_str, "event%d" ,&tmp_num1 );
 				ix_mng[ix_mng_count].event_number = tmp_num1;
 				printf( "event_number = %d\n", ix_mng[ix_mng_count].event_number );
 			}
-			else //imesu 2�� 13�� �߰�
+			else //imesu 2월 13일 추가
 			{
 				ix_mng[ix_mng_count].event_number = -1;
 			}
 		}
 
-		if(read_buf[0] == 'N')							// imesu 2�� 13�� �߰� , �Ʒ� �ּ�ó���� �κ��� ��ü�ϴ� �κ�
+		if(read_buf[0] == 'N')							// imesu 2월 13일 추가 , 아래 주석처리한 부분을 대체하는 부분
 		{
 			name_ptr = strchr(read_buf,'=');
-			name_ptr++;  								// = �� �ʿ� ��� ����
+			name_ptr++;  								// = 은 필요 없어서 제외
 			tmp_ptr = strchr(read_buf,'\n');
 			//printf(" %s \n",name_ptr);
 
 			strncpy(ix_mng[ix_mng_count].name , name_ptr , tmp_ptr - name_ptr);		//
 		}
 
-		if(	read_buf[0] ==0x0a)	ix_mng_count++;	          // 0x0a �� LF �� '\r'
+		if(	read_buf[0] ==0x0a)	ix_mng_count++;	          // 0x0a 는 LF 즉 '\r'
 	}
 	fclose(fp);
 	
 //	printf( "ix_mng_count = %d\n", ix_mng_count );
 
-	// �Է� ��ġ�� major , minor ��ȣ�� ��´�.
+	// 입력 장치이 major , minor 번호를 얻는다.
 	for(lp = 0 ; lp < ix_mng_count ; lp++)
 	{
 		sprintf(filename_buf,"/sys/class/input/event%d/dev" ,ix_mng[lp].event_number );
@@ -618,15 +618,15 @@ int ix_scan_device(void)
 		{
 			fscanf(fp , "%d:%d" ,&tmp_num1 ,&tmp_num2 );
 
-			ix_mng[lp].dev_major = tmp_num1;				// major ��ȣ ����
-			ix_mng[lp].dev_minor = tmp_num2;				// minor ��ȣ ����
+			ix_mng[lp].dev_major = tmp_num1;				// major 번호 저장
+			ix_mng[lp].dev_minor = tmp_num2;				// minor 번호 저장
 			
 //			printf( "major = %d, minor = %d\n", ix_mng[lp].dev_major, ix_mng[lp].dev_minor );
 			
 			fclose(fp);
 		}
 
-		// ��ġ ����̽� �ΰ��� Ȯ���Ѵ�.
+		// 터치 디바이스 인가를 확인한다.
 //		sprintf(filename_buf,"/sys/class/input/input%d/capabilities/abs" ,ix_mng[lp].input_number );
 		sprintf(filename_buf,"/sys/class/input/input%d/capabilities/abs" ,ix_mng[lp].event_number );
 
@@ -637,15 +637,15 @@ int ix_scan_device(void)
 
 			printf( "FILE %s [%d]\n", filename_buf, tmp_num1 );
 
-			if( tmp_num1 >= 3 ) ix_mng[lp].is_touch = 1;			// ��ġ ����̽� �̴�.
-			else                ix_mng[lp].is_touch = 0;			// ��ġ ����̽� �ƴϴ�.
+			if( tmp_num1 >= 3 ) ix_mng[lp].is_touch = 1;			// 터치 디바이스 이다.
+			else                ix_mng[lp].is_touch = 0;			// 터치 디바이스 아니다.
 
 			fclose(fp);
 		}
 
 	}
 
-	// ����� �޽���
+	// 디버그 메시지
 /*
 	for(lp = 0 ; lp < ix_mng_count ; lp++)
 	{
@@ -663,30 +663,30 @@ int ix_scan_device(void)
 
 
 //------------------------------------------------------------------------------
-/** @brief	����� ������ �̺�Ʈ�� �����Ѵ�.
+/** @brief	사용자 영역에 이벤트를 전송한다.
     @param
-    @return	0 ����
+    @return	0 성공
     @remark
 *///----------------------------------------------------------------------------
 static int ix_copy_to_user()
 {
 	ie_event_t 		ie_data;							// input event data;
 	int 			mx, my;
-	int 			mkey;								// Ű���� �Է°�
+	int 			mkey;								// 키보드 입력값
 
-	ix_get_mouse_position(&mx , &my);					// ���콺 ��ǥ���� �Ѱ��ش�.
+	ix_get_mouse_position(&mx , &my);					// 마우스 좌표값을 넘겨준다.
 
-	ix_get_key_value(&mkey);							// keyboard �Է� ���� �Ѱ��ش�.
+	ix_get_key_value(&mkey);							// keyboard 입력 값을 넘겨준다.
 
 	if( ix_mouse_event_flag & IX_MOUSE_FLAG_BTN_DOWN )
 	{
 		//printf("mouse down\n");
 		ix_mouse_event_flag 	&= ~IX_MOUSE_FLAG_BTN_DOWN;
-		ie_data.data.mouse.x 	= mx;							// x ��ǥ��
-		ie_data.data.mouse.y 	= my;							// y ��ǥ��
+		ie_data.data.mouse.x 	= mx;							// x 좌표값
+		ie_data.data.mouse.y 	= my;							// y 좌표값
 
 //		printf("mx:%d, my:%d ",mx, my);
-		ie_data.data.mouse.state= ix_button_state;				// ���°�
+		ie_data.data.mouse.state= ix_button_state;				// 상태값
 		ie_data.type 		 	= IE_MOUSE_DOWN;
 		if(ix_event_func != NULL)  ix_event_func(&ie_data);
 	}
@@ -697,7 +697,7 @@ static int ix_copy_to_user()
 		ix_mouse_event_flag 	&= ~IX_MOUSE_FLAG_MOVE;
 		ie_data.data.mouse.x	 = mx;
 		ie_data.data.mouse.y	 = my;
-		ie_data.data.mouse.state = ix_button_state;				// ���°�
+		ie_data.data.mouse.state = ix_button_state;				// 상태값
 		ie_data.type 			 = IE_MOUSE_MOVE;
 		if(ix_event_func != NULL)  ix_event_func(&ie_data);
 	}
@@ -708,32 +708,32 @@ static int ix_copy_to_user()
 		ix_mouse_event_flag 	&= ~IX_MOUSE_FLAG_BTN_UP;
 		ie_data.data.mouse.x	 = mx;
 		ie_data.data.mouse.y	 = my;
-		ie_data.data.mouse.state = ix_button_state;				// ���°�
+		ie_data.data.mouse.state = ix_button_state;				// 상태값
 		ie_data.type 			 = IE_MOUSE_UP;
 		if(ix_event_func != NULL)  ix_event_func(&ie_data);
 	}
 
-	if( ix_key_event_flag & IX_KEY_VAULE_DOWN )					// key �� ���ȴ�.
+	if( ix_key_event_flag & IX_KEY_VAULE_DOWN )					// key 가 눌렸다.
 	{
 		//printf("IX_KEY_VAULE_DOWN  \n");
 		ix_key_event_flag		&= 	~IX_KEY_VAULE_DOWN;
 		ie_data.data.key.key	 = 	mkey;
 		ie_data.type 			 = 	IE_KEY_DOWN;
-		ie_data.data.key.state	 =	ix_button_state;				// ���°�
+		ie_data.data.key.state	 =	ix_button_state;				// 상태값
 		if(ix_event_func != NULL)	ix_event_func(&ie_data);
 	}
 
-	if( ix_key_event_flag & IX_KEY_VAULE_UP )						// key �� ������ ���� �Ǿ���.
+	if( ix_key_event_flag & IX_KEY_VAULE_UP )						// key 가 눌림이 해제 되었다.
 	{
 		//printf("IX_KEY_VAULE_UP  \n");
 		ix_key_event_flag    	&= 	~IX_KEY_VAULE_UP;
 		ie_data.data.key.key	= 	mkey;
 		ie_data.type 			= 	IE_KEY_UP;
-		ie_data.data.key.state  = 	ix_button_state;				// ���°�
+		ie_data.data.key.state  = 	ix_button_state;				// 상태값
 		if(ix_event_func != NULL)	ix_event_func(&ie_data);
 	}
 
-	if( ix_key_event_flag & IX_KEY_VAULE_PRESS )					// key ���� ����ڰ� ���������� �˼� �ִ� �ƽ�Ű ������ ��ȯ
+	if( ix_key_event_flag & IX_KEY_VAULE_PRESS )					// key 값을 사용자가 직관적으로 알수 있는 아스키 값으로 변환
 	{
 		ix_get_key_press_value(&mkey, ix_button_state);
 
@@ -741,15 +741,15 @@ static int ix_copy_to_user()
 		ix_key_event_flag   	&= 	~IX_KEY_VAULE_PRESS;
 		ie_data.data.key.key	= 	mkey;
 		ie_data.type 			= 	IE_KEY_PRESS;
-		ie_data.data.key.state  =	ix_button_state;				// ���°�
+		ie_data.data.key.state  =	ix_button_state;				// 상태값
 		if(ix_event_func != NULL)	ix_event_func(&ie_data);
 	}
 	return 0;
 }
 
 //------------------------------------------------------------------------------
-/** @brief	���콺 ���� Ŭ�� ���� �����Ѵ�.
-    @param	msec ���콺 �Է��� ������ �ð� ����, ������  msec�̴�.
+/** @brief	마우스 더블 클릭 간격 설정한다.
+    @param	msec 마우스 입력이 들어오는 시간 간격, 단위는  msec이다.
     @return
     @remark
 *///----------------------------------------------------------------------------
@@ -761,10 +761,10 @@ int  ix_set_mouse_double_click_intaval(int msec)
 }
 
 //------------------------------------------------------------------------------
-/** @brief	���콺 ���� Ŭ���� Ȯ���Ѵ�.
-    @param	cur_time	���� ���콺�� ���� �ð�
-    @return	1    ����Ŭ�� ����
-    @return	0    ����Ŭ�� ����
+/** @brief	마우스 더블 클릭을 확인한다.
+    @param	cur_time	현제 마우스가 눌린 시간
+    @return	1    더블클릭 성공
+    @return	0    더블클릭 실패
     @remark
 *///----------------------------------------------------------------------------
 static int  ix_check_mouse_double_click( struct timeval cur_time)
@@ -772,12 +772,12 @@ static int  ix_check_mouse_double_click( struct timeval cur_time)
 /*
 	int intaval=0;
 
-	// �ð� Ȯ��
+	// 시간 확인
 	intaval = (cur_time.tv_usec - ix_pre_time.tv_usec);
 
 	printf("cur :%ld, old :%ld, intaval :%d \n", cur_time.tv_usec,ix_pre_time.tv_usec, intaval );
 	if(intaval < ix_mouse_click_interval)
-	{	// �ʱ�ȭ
+	{	// 초기화
 		ix_mouse_double_click_flag++;
 		if(ix_mouse_double_click_flag ==2 )
 		{
@@ -800,9 +800,9 @@ static int  ix_check_mouse_double_click( struct timeval cur_time)
 
 
 //------------------------------------------------------------------------------
-/** @brief	ix_event_t ���� Ű( ���콺 ��ư, Ű���� ) �Է��� ���� �����ؼ� ��ư ���� �÷���(ix_button_state)�� �����Ѵ�.
-    @param	event_data	�Է� �̺�Ʈ ������
-    @return	0 �Լ� ���� �Ϸ�
+/** @brief	ix_event_t 에서 키( 마우스 버튼, 키보드 ) 입력의 값을 구별해서 버튼 상태 플레그(ix_button_state)를 설정한다.
+    @param	event_data	입력 이벤트 데이터
+    @return	0 함수 동작 완료
     @remark
 *///----------------------------------------------------------------------------
 static int ix_input_event_type_key(ix_event_t event_data)
@@ -810,97 +810,97 @@ static int ix_input_event_type_key(ix_event_t event_data)
 	//printf("[code] 0x%x\n",event_data.code );
 	switch(event_data.code)
 	{
-	case BTN_TOUCH  :					// touh �Է��� ���콺�� left�� ������ �Է��̴�.
+	case BTN_TOUCH  :					// touh 입력은 마우스의 left와 동일한 입력이다.
 	case BTN_LEFT	:
-			if(event_data.value)	ix_button_state |= IX_MOUSE_BTN_LEFT;			// ���콺 ���� ��ư�� ����
-			else					ix_button_state &= ~IX_MOUSE_BTN_LEFT;			// ���콺 ���� ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_MOUSE_BTN_LEFT;			// 마우스 왼쪽 버튼이 눌림
+			else					ix_button_state &= ~IX_MOUSE_BTN_LEFT;			// 마우스 왼쪽 버튼이 눌림 해제
 		 	break;
 
 	case BTN_RIGHT	:
-			if(event_data.value)	ix_button_state |= IX_MOUSE_BTN_RIGHT;			// ���콺 ������ ��ư�� ����
-			else					ix_button_state &= ~IX_MOUSE_BTN_RIGHT;			// ���콺 ������ ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_MOUSE_BTN_RIGHT;			// 마우스 오른쪽 버튼이 눌림
+			else					ix_button_state &= ~IX_MOUSE_BTN_RIGHT;			// 마우스 오른쪽 버튼이 눌림 해제
 		 	break;
 
 	case BTN_MIDDLE :
-			if(event_data.value)	ix_button_state |= IX_MOUSE_BTN_MIDDLE;			// ���콺 ��� ��ư�� ����
-			else					ix_button_state &= ~IX_MOUSE_BTN_MIDDLE;		// ���콺 ��� ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_MOUSE_BTN_MIDDLE;			// 마우스 가운데 버튼이 눌림
+			else					ix_button_state &= ~IX_MOUSE_BTN_MIDDLE;		// 마우스 가운데 버튼이 눌림 해제
 			break;
 
 	case KEY_LEFTSHIFT :
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_LEFT_SHIFT;		// Ű���� ���� shitf ��ư�� ����
-			else					ix_button_state &= ~IX_KEYBOARD_BTN_LEFT_SHIFT;	// Ű���� ���� shitf ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_LEFT_SHIFT;		// 키보드 왼쪽 shitf 버튼이 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_BTN_LEFT_SHIFT;	// 키보드 왼쪽 shitf 버튼이 눌림 해제
 		 	break;
 
 	case KEY_RIGHTSHIFT   :
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_RIGHT_SHIFT;	// Ű���� ������ shitf ��ư�� ����
-			else					ix_button_state &= ~IX_KEYBOARD_BTN_RIGHT_SHIFT;	// Ű���� ������ shitf ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_RIGHT_SHIFT;	// 키보드 오른쪽 shitf 버튼이 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_BTN_RIGHT_SHIFT;	// 키보드 오른쪽 shitf 버튼이 눌림 해제
 		 	break;
 
 	case KEY_LEFTALT    :
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_LEFT_ALT;		// Ű���� ������ ALT ��ư�� ����
-			else					ix_button_state &= ~IX_KEYBOARD_BTN_LEFT_ALT;		// Ű���� ������ ALT ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_LEFT_ALT;		// 키보드 왼쪽쪽 ALT 버튼이 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_BTN_LEFT_ALT;		// 키보드 오른쪽 ALT 버튼이 눌림 해제
 		 	break;
 
 	case KEY_RIGHTALT    :
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_RIGHT_ALT;		// Ű���� ������ ALT ��ư�� ����
-			else					ix_button_state &= ~IX_KEYBOARD_BTN_RIGHT_ALT;		// Ű���� ������ ALT ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_RIGHT_ALT;		// 키보드 오른쪽 ALT 버튼이 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_BTN_RIGHT_ALT;		// 키보드 오른쪽 ALT 버튼이 눌림 해제
 		 	break;
 
 	case KEY_LEFTCTRL     :
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_LEFT_CTRL;		// Ű���� ������ CTRL ��ư�� ����
-			else					ix_button_state &= ~IX_KEYBOARD_BTN_LEFT_CTRL;		// Ű���� ������ CTRL ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_LEFT_CTRL;		// 키보드 왼쪽쪽 CTRL 버튼이 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_BTN_LEFT_CTRL;		// 키보드 오른쪽 CTRL 버튼이 눌림 해제
 			break;
 
 	case KEY_RIGHTCTRL     :
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_RIGHT_CTRL;		// Ű���� ������ CTRL ��ư�� ����
-			else					ix_button_state &= ~IX_KEYBOARD_BTN_RIGHT_CTRL;	// Ű���� ������ CTRL ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_BTN_RIGHT_CTRL;		// 키보드 오른쪽 CTRL 버튼이 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_BTN_RIGHT_CTRL;	// 키보드 오른쪽 CTRL 버튼이 눌림 해제
 			break;
 
 	case KEY_CAPSLOCK     :	// imesu 090215
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_CAPSLOCK;		// Ű���� ������ CTRL ��ư�� ����
-			else					ix_button_state &= ~IX_KEYBOARD_CAPSLOCK;		// Ű���� ������ CTRL ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_CAPSLOCK;		// 키보드 오른쪽 CTRL 버튼이 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_CAPSLOCK;		// 키보드 오른쪽 CTRL 버튼이 눌림 해제
 			break;
 
 
 	case KEY_NUMLOCK     :	// imesu 090215
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_NUMLOCK;			// Ű���� Num Lock ��ư�� ����
-			else					ix_button_state &= ~IX_KEYBOARD_NUMLOCK;		// Ű���� Num Lock ��ư�� ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_NUMLOCK;			// 키보드 Num Lock 버튼이 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_NUMLOCK;		// 키보드 Num Lock 버튼이 눌림 해제
 			break;
 
 	case KEY_UP     :		// imesu 090215
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_UP;				// Ű���� ���� ����Ű ����
-			else					ix_button_state &= ~IX_KEYBOARD_UP;				// Ű���� ���� ����Ű ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_UP;				// 키보드 윗쪽 방향키 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_UP;				// 키보드 윗쪽 방향키 눌림 해제
 			break;
 
 	case KEY_DOWN   :		// imesu 090215
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_DOWN;			// Ű���� �Ʒ��� ����Ű ����
-			else					ix_button_state &= ~IX_KEYBOARD_DOWN;			// Ű���� �Ʒ��� ����Ű ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_DOWN;			// 키보드 아래쪽 방향키 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_DOWN;			// 키보드 아래쪽 방향키 눌림 해제
 			break;
 
-	case KEY_LEFT    :		// imesu 090215  ����Ű
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_LEFT;			// Ű���� ���� ����Ű ��ư ����
-			else					ix_button_state &= ~IX_KEYBOARD_LEFT;			// Ű���� ���� ����Ű ��ư ���� ����
+	case KEY_LEFT    :		// imesu 090215  방향키
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_LEFT;			// 키보드 왼쪽 방향키 버튼 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_LEFT;			// 키보드 왼쪽 방향키 버튼 툴림 해제
 			break;
 
 	case KEY_RIGHT    :		// imesu 090215
-			if(event_data.value)	ix_button_state |= IX_KEYBOARD_RIGHT;			// Ű���� ������ ����Ű ��ư ����
-			else					ix_button_state &= ~IX_KEYBOARD_RIGHT;			// Ű���� ������ ����Ű ��ư ���� ����
+			if(event_data.value)	ix_button_state |= IX_KEYBOARD_RIGHT;			// 키보드 오른쪽 방향키 버튼 눌림
+			else					ix_button_state &= ~IX_KEYBOARD_RIGHT;			// 키보드 오른쪽 방향키 버튼 눌림 해제
 			break;
 
-	default : // ���� : ��ư ���� �������� Ű����� ó���ߴ�. ���߿� ������ �κ�
-		  //if(event_data.value == 1)	ix_button_state= event_data.value;				// key�� ���������� ���� ������ �ִ´�.
+	default : // 주의 : 버튼 말고 나머지는 키보드로 처리했다. 나중에 수정할 부분
+		  //if(event_data.value == 1)	ix_button_state= event_data.value;				// key가 눌려있을때 값을 무조건 넣는다.
 		  	break;
 	}
 
-	// ���� Ŭ�� Ȯ��
+	// 더블 클릭 확인
 	switch(event_data.code)
 	{
-	case BTN_TOUCH  :					// touh �Է��� ���콺�� left�� ������ �Է��̴�.
+	case BTN_TOUCH  :					// touh 입력은 마우스의 left와 동일한 입력이다.
 	case BTN_LEFT	:
 			if(ix_check_mouse_double_click(event_data.time))
 			{
-				if(event_data.value)	ix_mouse_event_flag |=IX_MOUSE_FLAG_DOUBLE_CLICK;	//���콺�� ���ȴ�.
-				else					ix_mouse_event_flag &=~IX_MOUSE_FLAG_DOUBLE_CLICK;		// ���콺�� ���� ����
+				if(event_data.value)	ix_mouse_event_flag |=IX_MOUSE_FLAG_DOUBLE_CLICK;	//마우스가 눌렸다.
+				else					ix_mouse_event_flag &=~IX_MOUSE_FLAG_DOUBLE_CLICK;		// 마우스가 눌림 해제
 			}
 			break;
 
@@ -909,25 +909,25 @@ static int ix_input_event_type_key(ix_event_t event_data)
 			break;
 	}
 
-	// FLAG����
+	// FLAG설정
 	switch(event_data.code)
 	{
-	case BTN_TOUCH  :					// touh �Է��� ���콺�� left�� ������ �Է��̴�.
+	case BTN_TOUCH  :					// touh 입력은 마우스의 left와 동일한 입력이다.
 	case BTN_LEFT	:
 	case BTN_RIGHT	:
 	case BTN_MIDDLE :
-			if(event_data.value)	ix_mouse_event_flag |=IX_MOUSE_FLAG_BTN_DOWN;	//���콺�� ���ȴ�.
-			else					ix_mouse_event_flag |=IX_MOUSE_FLAG_BTN_UP;		// ���콺�� ���� ����
+			if(event_data.value)	ix_mouse_event_flag |=IX_MOUSE_FLAG_BTN_DOWN;	//마우스가 눌렸다.
+			else					ix_mouse_event_flag |=IX_MOUSE_FLAG_BTN_UP;		// 마우스가 눌림 해제
 			break;
 
-	case KEY_CAPSLOCK     :				// imesu 090215 ��ư�� ������ DOWN -> UP�� �ȴ�. �� 2��ix_input_event_type_key()�� ȣ��ȴ�. �׷��� DOWN �ɶ� FLAG �����ϰ� �Ѵ�.
+	case KEY_CAPSLOCK     :				// imesu 090215 버튼을 누르면 DOWN -> UP이 된다. 즉 2번ix_input_event_type_key()가 호출된다. 그래서 DOWN 될때 FLAG 설정하게 한다.
 			if(event_data.value)
 			{
-				ix_key_event_flag |= IX_KEY_VAULE_DOWN;								// Ű���� Num Lock ��ư�� ����
-				ix_key_event_flag |= IX_KEY_VAULE_PRESS;							// key�� ���ȴ�. low code ���� ascii������ ��ȯ ex) KEY_1 -> 0x30
+				ix_key_event_flag |= IX_KEY_VAULE_DOWN;								// 키보드 Num Lock 버튼이 눌림
+				ix_key_event_flag |= IX_KEY_VAULE_PRESS;							// key가 눌렸다. low code 값을 ascii값으로 변환 ex) KEY_1 -> 0x30
 
-				if(!ix_capslock_flag)		ix_capslock_flag = FLAG_SET;			// CapsLock ����� ���� �Ǿ���.
-				else 						ix_capslock_flag = FLAG_RELEASE;		// CapsLock ����� ���� �Ǿ���.
+				if(!ix_capslock_flag)		ix_capslock_flag = FLAG_SET;			// CapsLock 기능이 설정 되었다.
+				else 						ix_capslock_flag = FLAG_RELEASE;		// CapsLock 기능이 해제 되었다.
 			}
 			else
 			{
@@ -940,11 +940,11 @@ static int ix_input_event_type_key(ix_event_t event_data)
 	case KEY_NUMLOCK     :	// imesu 090215
 			if(event_data.value)
 			{
-				ix_key_event_flag 		|= IX_KEY_VAULE_DOWN;						// Ű���� Num Lock ��ư�� ����
-				ix_key_event_flag 		|= IX_KEY_VAULE_PRESS;						// key�� ���ȴ�. low code ���� ascii������ ��ȯ ex) KEY_1 -> 0x30
+				ix_key_event_flag 		|= IX_KEY_VAULE_DOWN;						// 키보드 Num Lock 버튼이 눌림
+				ix_key_event_flag 		|= IX_KEY_VAULE_PRESS;						// key가 눌렸다. low code 값을 ascii값으로 변환 ex) KEY_1 -> 0x30
 
-				if(!ix_numlock_flag) 	ix_numlock_flag = FLAG_SET;					// CapsLock ����� ���� �Ǿ���.
-				else 					ix_numlock_flag = FLAG_RELEASE;				// CapsLock ����� ���� �Ǿ���.
+				if(!ix_numlock_flag) 	ix_numlock_flag = FLAG_SET;					// CapsLock 기능이 설정 되었다.
+				else 					ix_numlock_flag = FLAG_RELEASE;				// CapsLock 기능이 해제 되었다.
 			}
 			else
 			{
@@ -953,17 +953,17 @@ static int ix_input_event_type_key(ix_event_t event_data)
 			break;
 
 
-	default : // ���� : ��ư ���� �������� Ű����� ó���ߴ�. ���߿� ������ �κ�
-			ix_key = event_data.code;								// key ���� �ִ´�.
+	default : // 주의 : 버튼 말고 나머지는 키보드로 처리했다. 나중에 수정할 부분
+			ix_key = event_data.code;								// key 값을 넣는다.
 
 		  	if(event_data.value )
 		  	{
-		  		ix_key_event_flag |= IX_KEY_VAULE_DOWN;				// key�� ���ȴ�. low code ���� ����
-		  		ix_key_event_flag |= IX_KEY_VAULE_PRESS;			// key�� ���ȴ�. low code ���� ascii������ ��ȯ ex) KEY_1 -> 0x30
+		  		ix_key_event_flag |= IX_KEY_VAULE_DOWN;				// key가 눌렸다. low code 값을 전달
+		  		ix_key_event_flag |= IX_KEY_VAULE_PRESS;			// key가 눌렸다. low code 값을 ascii값으로 변환 ex) KEY_1 -> 0x30
 		  	}
 		  	else
 		  	{
-		  		ix_key_event_flag |= IX_KEY_VAULE_UP;				// key�� ���ȴ�.
+		  		ix_key_event_flag |= IX_KEY_VAULE_UP;				// key가 눌렸다.
 			}
 			break;
 	}
@@ -974,26 +974,26 @@ static int ix_input_event_type_key(ix_event_t event_data)
 
 
 //------------------------------------------------------------------------------
-/** @brief	ix_event_t ���� �Է� ��ġ(���콺 )����, REL �Է� ���� �����ؼ� ix_mouse_x, ix_mouse_y�� �����Ѵ�.
-    @param	event_data	�Է� �̺�Ʈ ������
-    @return	0 �Լ� ���� �Ϸ�
-    @brief	��� ��ǥ(REL_X, REL_Y) �Է°� �������� ix_mouse_x, ix_mouse_y�� �����Ѵ�.
-    @param	event_data	�Է� �̺�Ʈ ������
-    @return	0 �Լ� ���� �Ϸ�
+/** @brief	ix_event_t 에서 입력 장치(마우스 )에서, REL 입력 값을 구별해서 ix_mouse_x, ix_mouse_y에 저장한다.
+    @param	event_data	입력 이벤트 데이터
+    @return	0 함수 동작 완료
+    @brief	상대 좌표(REL_X, REL_Y) 입력값 전역변수 ix_mouse_x, ix_mouse_y에 저장한다.
+    @param	event_data	입력 이벤트 데이터
+    @return	0 함수 동작 완료
     @remark
 *///----------------------------------------------------------------------------
 static int ix_input_event_type_rel(ix_event_t event_data)
 {
 	if(event_data.code == REL_X)
 	{
-		ix_mouse_x += event_data.value;							// x ���� ����
+		ix_mouse_x += event_data.value;							// x 값을 저장
 
 		if(ix_mouse_x < ix_sreen_x_min )	ix_mouse_x = ix_sreen_x_min;
 		if(ix_mouse_x >= ix_sreen_x_max )	ix_mouse_x = ix_sreen_x_max-1;
 	}
 	if(event_data.code == REL_Y)
 	{
-		ix_mouse_y += event_data.value;							// y ���� ����
+		ix_mouse_y += event_data.value;							// y 값을 저장
 
 		if(ix_mouse_y < ix_sreen_y_min )	ix_mouse_y = ix_sreen_y_min;
 		if(ix_mouse_y >= ix_sreen_y_max )	ix_mouse_y = ix_sreen_y_max-1;
@@ -1005,15 +1005,15 @@ static int ix_input_event_type_rel(ix_event_t event_data)
 }
 
 //--------------------------------------------------------------
-// ���� : ABS �� ó��
+// 설명 : ABS 값 처리
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
-/** @brief	ix_event_t ���� �Է� ��ġ(���콺 )����, ABS �Է� ���� �����ؼ� ix_mouse_x, ix_mouse_y�� �����Ѵ�.
-    @param	event_data	�Է� �̺�Ʈ ������
-    @return	0 �Լ� ���� �Ϸ�
-    @brief	���� ��ǥ(ABS_X, ABS_Y) �Է°��� �������� ix_mouse_x, ix_mouse_y�� �����Ѵ�.
-    @param	event_data	�Է� �̺�Ʈ ������
-    @return	0 �Լ� ���� �Ϸ�
+/** @brief	ix_event_t 에서 입력 장치(마우스 )에서, ABS 입력 값을 구별해서 ix_mouse_x, ix_mouse_y에 저장한다.
+    @param	event_data	입력 이벤트 데이터
+    @return	0 함수 동작 완료
+    @brief	절대 좌표(ABS_X, ABS_Y) 입력값을 전역변수 ix_mouse_x, ix_mouse_y에 저장한다.
+    @param	event_data	입력 이벤트 데이터
+    @return	0 함수 동작 완료
     @remark
 *///----------------------------------------------------------------------------
 static int ix_input_event_type_abs(ix_event_t event_data)
@@ -1022,7 +1022,7 @@ static int ix_input_event_type_abs(ix_event_t event_data)
 	int x, y;
 	if(event_data.code == ABS_X)
 	{
-		ix_mouse_x = event_data.value;							// x ���� ����
+		ix_mouse_x = event_data.value;							// x 값을 저장
 
 		if(ix_adjust_touch_flag)
 		{
@@ -1043,7 +1043,7 @@ static int ix_input_event_type_abs(ix_event_t event_data)
 	}
 	if(event_data.code == ABS_Y)
 	{
-		ix_mouse_y = event_data.value;							// y ���� ����
+		ix_mouse_y = event_data.value;							// y 값을 저장
 
 		if(ix_adjust_touch_flag)
 		{
@@ -1072,9 +1072,9 @@ static int ix_input_event_type_abs(ix_event_t event_data)
 
 
 //------------------------------------------------------------------------------
-/** @brief	�̺�Ʈ �Է��� �о� �� �� IX EVENT �޽����� ���, �̺�Ʈ ���̺귯��(exLib)�� ����ϱ� ���� ���� �۾��� �Ѵ�.
-    @param	on_self	�̺�Ʈ ���̺귯��(exLib)�� ����ϱ� ���� ������ �����̴�.
-    @return	0	����
+/** @brief	이벤트 입력을 읽어 온 후 IX EVENT 메시지를 들며, 이벤트 라이브러리(exLib)에 등록하기 위한 사전 작업을 한다.
+    @param	on_self	이벤트 라이브러리(exLib)에 등록하기 위한 포인터 변수이다.
+    @return	0	성공
     @remark
 *///----------------------------------------------------------------------------
 static int ix_event_read(void *on_self )
@@ -1088,7 +1088,7 @@ static int ix_event_read(void *on_self )
 
 	ix_read_event_data_low(mng->fd , &event_data);
 
-	//ix_debug_disp_event_data(&event_data);						// �̺�Ʈ ������ �� Ȯ���Ѵ�.
+	//ix_debug_disp_event_data(&event_data);						// 이벤트 데이터 를 확인한다.
 
 	switch(event_data.type)
 	{
@@ -1098,7 +1098,7 @@ static int ix_event_read(void *on_self )
 
 	case EV_ABS :	ix_input_event_type_abs(event_data);	break;
 
-	case EV_SYN :	ix_copy_to_user();		break;				// ����� ������ �̺�Ʈ�� �����Ѵ�.
+	case EV_SYN :	ix_copy_to_user();		break;				// 사용자 영역에 이벤트를 전송한다.
 
 	default : break;
 	}
@@ -1110,15 +1110,15 @@ static int ix_event_read(void *on_self )
 
 
 //------------------------------------------------------------------------------
-/** @brief	�˻��� ��ġ�� mknod ���� ,������ Open�Ѵ�. \n
-			���� : http://forum.falinux.com/zbxe/?mid=Kernel_API&document_srl=405682&listStyle=&cpage=
-    @param	path	: �⺻ ��ġ
-	@param	major	: ��ġ�� major ��ȣ
-	@param	minor	: ��ġ�� minor ��ȣ
-	@param	open_flag : open �Ҷ� flag �ɼ�
-    @return	���� : ���� ��ũ���� , 0���� ũ�ų� ����. \n
-			���� : 0 ���� �۴�.
-    @remark	Thread �� �����Ǿ����� ����
+/** @brief	검색된 장치를 mknod 한후 ,파일을 Open한다. \n
+			참고 : http://forum.falinux.com/zbxe/?mid=Kernel_API&document_srl=405682&listStyle=&cpage=
+    @param	path	: 기본 위치
+	@param	major	: 장치의 major 번호
+	@param	minor	: 장치의 minor 번호
+	@param	open_flag : open 할때 flag 옵션
+    @return	성공 : 파일 디스크립션 , 0보다 크거나 같다. \n
+			실패 : 0 보다 작다.
+    @remark	Thread 는 고려되어있지 않음
 
 *///----------------------------------------------------------------------------
 int ux_mknod_device_open(char *path, char major, char minor , int open_flag)
@@ -1128,17 +1128,17 @@ int ux_mknod_device_open(char *path, char major, char minor , int open_flag)
 
 	static 	int mknod_count =0;
 
-	sprintf(file_name, "%s-%d-%d", path , getpid(), ++mknod_count ); // �ߺ� ����
+	sprintf(file_name, "%s-%d-%d", path , getpid(), ++mknod_count ); // 중복 방지
 
-	remove(file_name);												// ���� ���� ������ �ִ°� �����Ѵ�. remove�Լ��� ���� open�ϰ� ������ ����
+	remove(file_name);												// 당장 삭제 기존에 있는건 삭제한다. remove함수는 누가 open하고 있으면 실패
 
-	// mknod �Ѵ�.
+	// mknod 한다.
 	mknod(file_name, (S_IRWXU|S_IRWXG|S_IFCHR), MKDEV(major , minor));
 
-	dev_fd = open(file_name, open_flag);							// mknod �� ������ open �� �� fd�� ���´�.
+	dev_fd = open(file_name, open_flag);							// mknod 된 파일을 open 한 후 fd를 얻어온다.
 	if(dev_fd < 0)		return dev_fd;
 
-	unlink(file_name);										   		// ���μ����� ����� �� �ڵ��� ���� ���� .. ���� ���� �����Ǵ°� �ƴϴ�.^^;
+	unlink(file_name);										   		// 프로세스가 종료될 때 자동의 파일 삭제 .. 지금 당장 삭제되는게 아니다.^^;
 
 	return dev_fd;
 }
@@ -1146,14 +1146,14 @@ int ux_mknod_device_open(char *path, char major, char minor , int open_flag)
 
 
 //------------------------------------------------------------------------------
-/** @brief	�˻��� ��ġ�� mknod �Ѵ�.
- 			1)�Է� ��ġ�� �ڵ� �˻�
+/** @brief	검색된 장치를 mknod 한다.
+ 			1)입력 장치를 자동 검색
  			2) mknod
- 			3) ����̽� ���� ����..
- 			4) ex �Լ� ���    @param
-	@param	path	�⺻ ���丮 ��ġ
-    @return	0	����
-    @return	1	����
+ 			3) 디바이스 파일 오픈..
+ 			4) ex 함수 등록    @param
+	@param	path	기본 디렉토리 위치
+    @return	0	성공
+    @return	1	실패
     @remark
 *///----------------------------------------------------------------------------
 int	ix_auto_scan_open( char *path )
@@ -1161,7 +1161,7 @@ int	ix_auto_scan_open( char *path )
 	char 	device_path[PATH_MAX];							// 4096
 	int		lp=0;
 
-	// 1)�Է� ��ġ�� �ڵ� �˻�
+	// 1)입력 장치를 자동 검색
 	if(ix_scan_device() <0)
 	{
 		ix_error_code = IXERR_AUTOSCAN_SCANDEVICE;
@@ -1169,7 +1169,7 @@ int	ix_auto_scan_open( char *path )
 	}
 
 	// 2) mknod
-	// 3) ����̽� ���� ����..
+	// 3) 디바이스 파일 오픈..
 	for( lp= 0 ; lp < ix_mng_count;lp++)
 	{
 		sprintf(device_path, "%s/event%d", path, ix_mng[lp].event_number);
@@ -1177,7 +1177,7 @@ int	ix_auto_scan_open( char *path )
 
 		if(ix_mng[lp].fd < 0)	continue;
 
-		// 4) ex �Լ� ���
+		// 4) ex 함수 등록
 		//poll_obj_t *poll_add( int fd )
 		input_obj[lp] 			= poll_add( ix_mng[lp].fd );
 
@@ -1194,25 +1194,25 @@ int	ix_auto_scan_open( char *path )
 }
 
 //--------------------------------------------------------------
-// ���� : ��ġ ���� ��ũ���͸� ��´�.
-//        �ڵ����� mknod �Ѵ�.
-// 			1) �Է� ��ġ�� ��ġ �˻�
+// 설명 : 터치 파일 디스크립터를 얻는다.
+//        자동으로 mknod 한다.
+// 			1) 입력 장치중 터치 검색
 // 			2) mknod
-// 			3) ����̽� ���� ����..
-// 			4) ex �Լ� ���
-// �Ű� : path : �⺻ ���丮 ��ġ
-// ��ȯ :	fd 	���� ��ũ����
-// ���� :
+// 			3) 디바이스 파일 오픈..
+// 			4) ex 함수 등록
+// 매개 : path : 기본 디렉토리 위치
+// 반환 :	fd 	파일 디스크립터
+// 주의 :
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
-/** @brief	��ġ ���� ��ũ���͸� ���� �� �ڵ����� mknod �Ѵ�.
- 			1) �Է� ��ġ�� ��ġ �˻�
+/** @brief	터치 파일 디스크립터를 얻은 후 자동으로 mknod 한다.
+ 			1) 입력 장치중 터치 검색
  			2) mknod
- 			3) ����̽� ���� ����..
- 			4) ex �Լ� ���
-	@param	path	�⺻ ���丮 ��ġ
-    @return	fd 	���� ��ũ����
-    @return	-1 	����
+ 			3) 디바이스 파일 오픈..
+ 			4) ex 함수 등록
+	@param	path	기본 디렉토리 위치
+    @return	fd 	파일 디스크립터
+    @return	-1 	실패
     @remark
 *///----------------------------------------------------------------------------
 int ix_get_touch_fd( char *path )
@@ -1236,7 +1236,7 @@ int ix_get_touch_fd( char *path )
 }
 
 //------------------------------------------------------------------------------
-/** @brief	��ũ�� ����� �����ϰ�, ���콺�� ���߾����� ��ġ�ϰ� �ʱ�ȭ�Ѵ�.
+/** @brief	스크린 사이즈를 설정하고, 마우스를 정중앙으로 위치하게 초기화한다.
     @param
     @return
     @remark
@@ -1253,11 +1253,11 @@ int ix_set_screen_size(int x, int y)
 }
 
 //------------------------------------------------------------------------------
-/** @brief	���콺 ���� ��ǥ ���´�.
-    @param	x	���콺 x��ǥ���� ��� ������ ����
-    @param	y	���콺 y��ǥ���� ��� ������ ����
-    @return	0 �Ϸ�
-    @remark	�Ű������� ���� ��ǥ���� ��ȯ�Ѵ�.
+/** @brief	마우스 현재 좌표 얻어온다.
+    @param	x	마우스 x좌표값을 얻는 포인터 변수
+    @param	y	마우스 y좌표값을 얻는 포인터 변수
+    @return	0 완료
+    @remark	매개변수를 통해 좌표값을 반환한다.
 *///----------------------------------------------------------------------------
 
 
@@ -1271,9 +1271,9 @@ int ix_get_mouse_position(int *x, int *y)
 }
 
 //------------------------------------------------------------------------------
-/** @brief	�̺�Ʈ �����͸� ó���� �Լ��� ����Ѵ�.
-    @param	func	����� �Լ��̸�
-    @return	0	����
+/** @brief	이벤트 데이터를 처리할 함수를 등록한다.
+    @param	func	등록할 함수이름
+    @return	0	성공
     @remark
 *///----------------------------------------------------------------------------
 int ix_add_event(ix_event_func_t func)
@@ -1284,10 +1284,10 @@ int ix_add_event(ix_event_func_t func)
 }
 
 //------------------------------------------------------------------------------
-/** @brief	���� key ���� ��� �´�.
-    @param	key	���� ��� ������ ����
-    @return	0 �Ϸ�
-    @remark	�Ű������� ���� ��ǥ���� ��ȯ�Ѵ�.
+/** @brief	현재 key 값을 얻어 온다.
+    @param	key	키값을 얻는 포인터 변수
+    @return	0 완료
+    @remark	매개변수를 통해 좌표값을 반환한다.
 *///----------------------------------------------------------------------------
 int ix_get_key_value(int *key)
 {
@@ -1297,10 +1297,10 @@ int ix_get_key_value(int *key)
 }
 
 //------------------------------------------------------------------------------
-/** @brief	touch screen ���� �����ϱ� ���� ���� �ִ´�.
+/** @brief	touch screen 값을 보정하기 위한 값을 넣는다.
     @param
-    @return	-1	���� �߻�
-    @return	0	����
+    @return	-1	에러 발생
+    @return	0	정상
     @remark
 *///----------------------------------------------------------------------------
 int ix_set_cal_touch_info(int index ,ix_cal_touch_info_t one_point)
@@ -1324,9 +1324,9 @@ int ix_set_cal_touch_info(int index ,ix_cal_touch_info_t one_point)
 
 
 //------------------------------------------------------------------------------
-/** @brief	touch screen ���� ������ ���� ���� ���� �����Ѵ�.
-    @param	����
-    @return	0 ����
+/** @brief	touch screen 값을 보정을 위한 기준 값을 설정한다.
+    @param	없음
+    @return	0 성공
     @remark
 *///----------------------------------------------------------------------------
 int ix_adjust_touch( void )
@@ -1376,22 +1376,22 @@ int ix_adjust_touch( void )
 }
 
 //--------------------------------------------------------------
-// ���� : �̺�Ʈ ��ġ�� ����ڰ� ���� �̺�Ʈ ������ �־ �̺�Ʈ�� �߻���Ų��.
-// ���� :
+// 설명 : 이벤트 장치에 사용자가 직접 이벤트 정보를 넣어서 이벤트를 발생시킨다.
+// 주의 :
 // imesu 2008-02-20
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
-/** @brief �̺�Ʈ ��ġ�� ����ڰ� ���� �̺�Ʈ ������ �־ �̺�Ʈ�� �߻���Ų��.
+/** @brief 이벤트 장치에 사용자가 직접 이벤트 정보를 넣어서 이벤트를 발생시킨다.
     @param
     @return
-    @remark ���� ��ġ�� ������ ����� ��� ��� ��ġ �̺�Ʈ �ڵ鷯�� ����.
-//      : ��ġ�� ������ ����� ����� �̺κ��� ix_write_event_low()�Լ��� ��ġ�ؼ� �������
-    @remark ���� ��ġ�� ������ ����� ��� ��� ��ġ �̺�Ʈ �ڵ鷯�� ����.
-//      : ��ġ�� ������ ����� ����� �̺κ��� ix_write_event_low()�Լ��� ��ġ�ؼ� �������!!
+    @remark 현재 장치를 구별할 방법에 없어서 모든 장치 이벤트 핸들러에 쓴다.
+//      : 장치를 구별할 방업에 생기면 이부분을 ix_write_event_low()함수로 대치해서 사용하자
+    @remark 현재 장치를 구별할 방법에 없어서 모든 장치 이벤트 핸들러에 쓴다.
+//      : 장치를 구별할 방업에 생기면 이부분을 ix_write_event_low()함수로 대치해서 사용하자!!
 *///----------------------------------------------------------------------------
 static int ix_write_event_bulk_low(ix_event_t *event_data)
 {
-	int flag_write_event = -1;									// ix_write_event_low �Լ��� ������ üũ��
+	int flag_write_event = -1;									// ix_write_event_low 함수의 에러를 체크함
 	int lp =0;
 
 	if(event_data == NULL)	return -1;
@@ -1400,12 +1400,12 @@ static int ix_write_event_bulk_low(ix_event_t *event_data)
 	{
 		if(!(ix_write_event_low(ix_mng[lp].fd, event_data )))
 		{
-			flag_write_event = 0;	//�ѹ��̶� event write�� �����ϸ� ������ ���߻�!
+			flag_write_event = 0;	//한번이라도 event write가 성공하면 에러를 무발생!
 		}
 	}
 	if(flag_write_event <0)
 	{
-		return -1;	//ix_write_event_low�Լ� ��� ����
+		return -1;	//ix_write_event_low함수 모두 실패
 	}
 	return 0;
 
@@ -1413,7 +1413,7 @@ static int ix_write_event_bulk_low(ix_event_t *event_data)
 
 
 //------------------------------------------------------------------------------
-/** @brief	�̺�Ʈ ��ġ�� ����ڰ� ���� �̺�Ʈ ������ �־ �̺�Ʈ�� �߻���Ų��.
+/** @brief	이벤트 장치에 사용자가 직접 이벤트 정보를 넣어서 이벤트를 발생시킨다.
     @param
     @return
     @remark
@@ -1422,7 +1422,7 @@ int ix_write_event_low(int fd, ix_event_t *event_data )
 {
 	if( fd < 0 || event_data == NULL )
 	{
-		ix_error_code = IXERR_WRITE_EVENT; 		// ����
+		ix_error_code = IXERR_WRITE_EVENT; 		// 에러
 		return -1;
 	}
 
@@ -1432,42 +1432,42 @@ int ix_write_event_low(int fd, ix_event_t *event_data )
 
 
 //------------------------------------------------------------------------------
-/** @brief	���콺 Ư����ư�� Up/Down ������ �߻���Ų��.
-    @param	mouse_button	���콺 ��ư���� ������ 3������ �ִ�. (IX_MOUSE_BTN_LEFT / IX_MOUSE_BTN_RIGHT /IX_MOUSE_BTN_MIDDLE)
-    @param	action			���콺 ��ư���·� 2������ �ִ�. (IE_MOUSE_UP / IE_MOUSE_DOWN)
-    @return	0	����
-    @return	-1	����
+/** @brief	마우스 특정버튼의 Up/Down 엑션을 발생시킨다.
+    @param	mouse_button	마우스 버튼으로 종류는 3가지가 있다. (IX_MOUSE_BTN_LEFT / IX_MOUSE_BTN_RIGHT /IX_MOUSE_BTN_MIDDLE)
+    @param	action			마우스 버튼상태로 2가지가 있다. (IE_MOUSE_UP / IE_MOUSE_DOWN)
+    @return	0	성공
+    @return	-1	실패
     @remark
 *///----------------------------------------------------------------------------
 int ix_write_mouse_button_action(int mouse_button, int action)
 {
 	ix_event_t event_data;
 
-	//step1: event ����ü�� ����� �� ����
+	//step1: event 구조체의 공통된 값 설정
     gettimeofday( &event_data.time, NULL );
 	event_data.type = EV_KEY;
 
-	//step2: event ����ü�� ��ư ������ ����
+	//step2: event 구조체의 버튼 설정값 설정
 	switch(mouse_button)
 	{
 	case IX_MOUSE_BTN_LEFT:		event_data.code = BTN_LEFT;							break;
 	case IX_MOUSE_BTN_RIGHT:	event_data.code = BTN_RIGHT;						break;
 	case IX_MOUSE_BTN_MIDDLE:	event_data.code = BTN_MIDDLE;						break;
-	default:					ix_error_code   = IXERR_WRITE_MOUSE_BUTTON_EVENT; 	return -1;	// ����
+	default:					ix_error_code   = IXERR_WRITE_MOUSE_BUTTON_EVENT; 	return -1;	// 에러
 	}
 
-	//step3: event ����ü�� ��ư ���°� ����
+	//step3: event 구조체의 버튼 상태값 설정
 	switch(action)
 	{
 	case IE_MOUSE_DOWN:	event_data.value = IX_MOUSE_VAULE_DOWN;					break;
 	case IE_MOUSE_UP:	event_data.value = IX_MOUSE_VAULE_UP;					break;
-	default:			ix_error_code    = IXERR_WRITE_MOUSE_BUTTON_EVENT; 		return -1;	// ����
+	default:			ix_error_code    = IXERR_WRITE_MOUSE_BUTTON_EVENT; 		return -1;	// 에러
 	}
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
 
-	//step4: SYC �߻�
+	//step4: SYC 발생
     //gettimeofday( &event_data.time, NULL );
 
 	event_data.type  = EV_SYN;
@@ -1475,7 +1475,7 @@ int ix_write_mouse_button_action(int mouse_button, int action)
 	event_data.value = 0;
 
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
 
 	return 0;
@@ -1483,96 +1483,96 @@ int ix_write_mouse_button_action(int mouse_button, int action)
 }
 
 //------------------------------------------------------------------------------
-/** @brief	���콺 ��ġ�� �����Ų�� �̺�Ʈ�� �߻� ��Ų��.
-    @param	rel_x		������ x�� ��� ��ǥ��
-    @param	rel_y		������ y�� ��� ��ǥ��
-    @return	0	����
-    @return	-1	����
+/** @brief	마우스 위치를 변경시킨후 이벤트를 발생 시킨다.
+    @param	rel_x		움직일 x축 상대 좌표값
+    @param	rel_y		움직일 y축 상대 좌표값
+    @return	0	성공
+    @return	-1	실패
     @remark
 *///----------------------------------------------------------------------------
 int ix_write_mouse_rel_move(int rel_x, int rel_y)
 {
 	ix_event_t event_data;
 
-	//step1: event ����ü�� ����� �� ����
+	//step1: event 구조체의 공통된 값 설정
     gettimeofday( &event_data.time, NULL );
 	event_data.type = EV_REL;
 
-	//step2: event ����ü�� X ���氪 ����
+	//step2: event 구조체의 X 변경값 설정
 	event_data.code = REL_X;
 	event_data.value = rel_x;
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
-	//step3: event ����ü�� Y ���氪 ����
+	//step3: event 구조체의 Y 변경값 설정
 	event_data.code = REL_Y;
 	event_data.value = rel_y;
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
 
-	//step4: SYC �߻�
+	//step4: SYC 발생
 
     //gettimeofday( &event_data.time, NULL );
 	event_data.type  = EV_SYN;
 	event_data.code  = SYN_REPORT;
 	event_data.value = 0;
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
 
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief	Ű���忡 Ű �̺�Ʈ�� �߻���Ų �� �̺�Ʈ�� �߻� ��Ų��.
-    @param	keyboard_key	���콺 ��ư���� ������ 3������ �ִ�. (IX_MOUSE_BTN_LEFT / IX_MOUSE_BTN_RIGHT /IX_MOUSE_BTN_MIDDLE)
-    @param	action			Ű���� ��ư���·� 2������ �ִ�. (IE_KEY_UP / IE_KEY_DOWN)
+/** @brief	키보드에 키 이벤트를 발생시킨 후 이벤트를 발생 시킨다.
+    @param	keyboard_key	마우스 버튼으로 종류는 3가지가 있다. (IX_MOUSE_BTN_LEFT / IX_MOUSE_BTN_RIGHT /IX_MOUSE_BTN_MIDDLE)
+    @param	action			키보드 버튼상태로 2가지가 있다. (IE_KEY_UP / IE_KEY_DOWN)
     @return
-    @remark	keyboard_key: keyboard�� Ű code�� �ǹ���. ����: Linux Ŀ�μҼ�/include/linux/input.h�� 'Keys and buttons' �׸�
+    @remark	keyboard_key: keyboard의 키 code를 의미함. 참고: Linux 커널소소/include/linux/input.h의 'Keys and buttons' 항목
 *///----------------------------------------------------------------------------
 int ix_write_keyboard_key_action(int keyboard_key, int action)
 {
 	ix_event_t event_data;
 
-	//step1: event ����ü�� ����� �� ����
+	//step1: event 구조체의 공통된 값 설정
     gettimeofday( &event_data.time, NULL );
 	event_data.type = EV_KEY;
 
-	//step2: event ����ü�� KEY �� ����
+	//step2: event 구조체의 KEY 값 설정
 	event_data.code = keyboard_key;
 
-	//step3: event ����ü�� �׼� �� ����
+	//step3: event 구조체의 액션 값 설정
 	switch(action)
 	{
 	case IE_KEY_DOWN:	event_data.value = 1;							break;
 	case IE_KEY_UP:		event_data.value = 0;							break;
-	default:			ix_error_code    = IXERR_WRITE_KEYBOARD_EVENT; 	return -1;	// ����
+	default:			ix_error_code    = IXERR_WRITE_KEYBOARD_EVENT; 	return -1;	// 에러
 	}
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
 
-	//step4: SYC �߻�
+	//step4: SYC 발생
     //gettimeofday( &event_data.time, NULL );
 	event_data.type  = EV_SYN;
 	event_data.code  = SYN_REPORT;
 	event_data.value = 0;
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
 
 	return 0;
 }
 
 //--------------------------------------------------------------
-// to do list : ��ũ�� KEY_5�� ���� ���������� �������� �ʰ�, Ű���� �迭�� ���� ������ ������.
-//              �׷��� switch ���� ��� ���µ� ���� ����� ������?
-// http://lxr.falinux.com/source/include/linux/input.h �� �ִ� Ű ���� ���� Ű���� �迭��� �����Ǿ� ��ִ?
+// to do list : 매크로 KEY_5넘 들은 순차적으로 증가하지 않고, 키보드 배열에 따른 순서에 따른다.
+//              그래서 switch 문에 길어 졌는데 좋은 방법이 없을까?
+// http://lxr.falinux.com/source/include/linux/input.h 에 있는 키 값을 실제 키보드 배열대로 나열되어 揚獵?
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
-/** @brief	�Է� ���� ����ڰ� �ٷ� ����� �� �ִ� �ƽ�Ű �ڵ�� ��ȯ�Ͽ� ��ȯ�Ѵ�.
-			���� ��� KEY_1�� 0x30���� ��ȯ�Ͽ� �����Ѵ�.
-			Shift , ALT, CTRLŰ�� �����Ѵ�.
+/** @brief	입력 값을 사용자가 바로 사용할 수 있는 아스키 코드로 변환하여 반환한다.
+			예를 들어 KEY_1은 0x30으로 변환하여 리턴한다.
+			Shift , ALT, CTRL키도 고려한다.
     @param
     @return
     @remark
@@ -1585,12 +1585,12 @@ static int ix_get_key_press_value(int *m_key, ix_btn_state_t button_state)
 
 	if( (button_state & IX_KEYBOARD_BTN_LEFT_SHIFT) ||	(button_state & IX_KEYBOARD_BTN_RIGHT_SHIFT) )
 	{
-		shift_flag = FLAG_SET;											// shift �� ������ ������ flag�� �����Ѵ�.
+		shift_flag = FLAG_SET;											// shift 가 눌려져 있으면 flag를 설정한다.
 	}
 
 	if( (button_state & IX_KEYBOARD_BTN_LEFT_ALT)||(button_state & IX_KEYBOARD_BTN_RIGHT_ALT))
 	{
-		alt = FLAG_SET;												// alt �� ������ ������ flag�� �����Ѵ�.
+		alt = FLAG_SET;												// alt 가 눌려져 있으면 flag를 설정한다.
 	}
 
 	for(askii =0 ; askii <128 ;askii ++)
@@ -1599,11 +1599,11 @@ static int ix_get_key_press_value(int *m_key, ix_btn_state_t button_state)
 		{
 			if(shift_flag == FLAG_SET ||ix_capslock_flag == FLAG_SET)
 			{
-				if(askii >= 0x41 && askii <=0x5a)	*m_key = askii+0x20;	// shift �� ������ �ҹ���.
+				if(askii >= 0x41 && askii <=0x5a)	*m_key = askii+0x20;	// shift 가 눌리면 소문자.
 			}
 			else
 			{
-				*m_key = askii;												// �������� ���� �ƽ�Ű �ڵ�ǥ�� �ִ�.
+				*m_key = askii;												// 나머지는 전부 아스키 코드표에 있다.
 			}
 			break;
 		}
@@ -1616,7 +1616,7 @@ static int ix_get_key_press_value(int *m_key, ix_btn_state_t button_state)
 }
 /*
 //--------------------------------------------------------------
-// ���� : ��ġ ��ũ�� ������ ��ġ���� ��� �´�.
+// 설명 : 터치 스크린 보정된 위치값을 얻어 온다.
 // imesu 2009-02-20
 //--------------------------------------------------------------
 
@@ -1628,14 +1628,14 @@ int ix_touch_calcurator(int *x, int *y)
 	int sx = 0;
 	int sy = 0;
 
-	ix_get_mouse_position(&tx,&ty);							// �������� ��ġ��ũ�� ���� ��� �´�.
+	ix_get_mouse_position(&tx,&ty);							// 보정전의 터치스크린 값을 얻어 온다.
 
 //	printf("ix_adjust_touch_info.xa:%d ",ix_adjust_touch_info.xa);
 //	printf("ix_adjust_touch_info.xb:%d ",ix_adjust_touch_info.xb);
 //	printf("ix_adjust_touch_info.ya:%d ",ix_adjust_touch_info.ya);
 //	printf("ix_adjust_touch_info.yb:%d ",ix_adjust_touch_info.yb);
 
-	if(ix_adjust_touch_info.xa ==0)	return -1;				// �и� 0�̸� ������.
+	if(ix_adjust_touch_info.xa ==0)	return -1;				// 분모가 0이면 에러다.
 
 	sx = (tx-ix_adjust_touch_info.xb)/ix_adjust_touch_info.xa;
 	if(sx <= 0)
@@ -1647,7 +1647,7 @@ int ix_touch_calcurator(int *x, int *y)
 		sx = ix_sreen_x_max;
 	}
 
-	if(ix_adjust_touch_info.ya ==0)	return -1;				// �и� 0�̸� ������.
+	if(ix_adjust_touch_info.ya ==0)	return -1;				// 분모가 0이면 에러다.
 
 	sy = (ty-ix_adjust_touch_info.yb)/ix_adjust_touch_info.ya;
 	if(sy <= 0)
@@ -1666,12 +1666,12 @@ int ix_touch_calcurator(int *x, int *y)
 */
 
 //------------------------------------------------------------------------------
-/** @brief	���� Ű���忡�� ���� �Է��� , ���� �Է� ������ ��ȯ ( �ƽ�Ű -> KEY_XX)
-    @param	 key :  �ƽ�Ű �ڵ尪�� �Է� �޴´�.
+/** @brief	가상 키보드에서 받은 입력을 , 실제 입력 값으로 변환 ( 아스키 -> KEY_XX)
+    @param	 key :  아스키 코드값을 입력 받는다.
     @return
-    @remark	���ڷ� ���� 1�� �� ������.
-    		���� ix_write_key_press('A');  ix_write_key_press(3)
-    		�ҹ��� ó���� �߰������� �ؾ��Ѵ�.
+    @remark	인자로 문자 1개 만 보낸다.
+    		사용법 ix_write_key_press('A');  ix_write_key_press(3)
+    		소문자 처리를 추가적으로 해야한다.
 *///----------------------------------------------------------------------------
 int ix_write_key_char_press(char key)
 {
@@ -1681,14 +1681,14 @@ int ix_write_key_char_press(char key)
 	if(key < 0 )	return -1;
 	if(key >128)	return -1;
 
-	// �ҹ��ڰ� ��� ���� �ҹ��� ó��
+	// 소문자가 들어 오면 소문자 처리
 	if(0x61 <= key  && key <=0x7a)
 	{
 		ix_button_state |= IX_KEYBOARD_NUMLOCK;
 	}
 	else
 	{
-		ix_button_state &= ~IX_KEYBOARD_NUMLOCK;	// Ű���� ���� shitf ��ư�� ���� ��?
+		ix_button_state &= ~IX_KEYBOARD_NUMLOCK;	// 키보드 왼쪽 shitf 버튼이 눌림 해?
 //
 	}
 
@@ -1696,26 +1696,26 @@ int ix_write_key_char_press(char key)
 
 //	printf("key_xxx :%d , key_low:%d " ,key_xxx, key);
 
-	//step1: event ����ü�� ����� �� ����
+	//step1: event 구조체의 공통된 값 설정
     gettimeofday( &event_data.time, NULL );
 	event_data.type = EV_KEY;
 
-	//step2: event ����ü�� KEY �� ����
+	//step2: event 구조체의 KEY 값 설정
 	event_data.code = key_xxx;
 
-	//step3: event ����ü�� �׼� �� ����
+	//step3: event 구조체의 액션 값 설정
 	event_data.value = 1;
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
 
-	//step4: SYC �߻�
+	//step4: SYC 발생
     //gettimeofday( &event_data.time, NULL );
 	event_data.type  = EV_SYN;
 	event_data.code  = SYN_REPORT;
 	event_data.value = 0;
 
-	// �̺�Ʈ�� ��� �ڵ鷯�� ����. ... ���߿� ��ġ ������ �Ǹ�, �ش� �ڵ鷯���� ���� ��������.!!
+	// 이벤트를 모든 핸들러에 쓴다. ... 나중에 장치 구별이 되면, 해당 핸들러에만 쓰게 수정하자.!!
 	if(ix_write_event_bulk_low(&event_data) <0)		return -1;
 
 	if(ix_write_keyboard_key_action(key_xxx, IE_KEY_UP) <0 ) return -1;
@@ -1725,15 +1725,15 @@ int ix_write_key_char_press(char key)
 
 
 //--------------------------------------------------------------
-// ���� :
+// 설명 :
 // imesu 2009-02-20
-// ���� :
-//         str :  ���ڿ��� �Է� �޴´�.
-//         size : ���ڿ��� ������
-// ���� : ix_write_key_press('ABC', 3);
+// 인자 :
+//         str :  문자열을 입력 받는다.
+//         size : 문자열의 사이즈
+// 사용법 : ix_write_key_press('ABC', 3);
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
-/** @brief	���� Ű���忡�� ���� �Է¿��� , ���� �Է� ������ ��ȯ ( �ƽ�Ű -> KEY_XX)
+/** @brief	가상 키보드에서 받은 입력열을 , 실제 입력 값으로 변환 ( 아스키 -> KEY_XX)
     @param
     @return
     @remark	ix_write_key_press('ABC', 3);
@@ -1747,7 +1747,7 @@ int ix_write_key_string_press(char *str, int size)
 
 
 //--------------------------------------------------------------
-// ���� :
+// 설명 :
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -1784,10 +1784,10 @@ int ix_get_touch(int x_tch, int y_tch, int *x_scr_ptr, int *y_scr_ptr)
     return 1;
 }
 
-#if 1//���� ����
+#if 1//검토 예정
 
 //------------------------------------------------------------------------------
-/** @brief	ix_adjust_touch_info ���� ���� �Ѵ�
+/** @brief	ix_adjust_touch_info 값을 설정 한다
     @param
     @return
     @remark
@@ -1806,7 +1806,7 @@ int ix_set_touch( ix_adjust_touch_info_t *info )
 }
 
 //------------------------------------------------------------------------------
-/** @brief	ix_adjust_touch_info ���� �����´�
+/** @brief	ix_adjust_touch_info 값을 가져온다
     @param
     @return
     @remark
@@ -1820,10 +1820,10 @@ int ix_get_touch_info( ix_adjust_touch_info_t *info )
 
 
 //------------------------------------------------------------------------------
-/** @brief ix_adjust_touch_info ���� ����Ʈ �Ѵ�
+/** @brief ix_adjust_touch_info 값을 프린트 한다
     @param
     @return
-    @remark 1	����Ʈ ����
+    @remark 1	프린트 성공
 *///----------------------------------------------------------------------------
 int ix_print_touch( void )
 {
@@ -1837,13 +1837,13 @@ int ix_print_touch( void )
 }
 
 //--------------------------------------------------------------
-// ���� :
+// 설명 :
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
-/** @brief	ix_adjust_touch_info ���� �����ϱ� ���� �ʱ�ȭ
+/** @brief	ix_adjust_touch_info 값을 설정하기 위한 초기화
     @return
 
- @brief	ix_adjust_touch_info ���� �����ϱ� ���� �ʱ�ȭ
+ @brief	ix_adjust_touch_info 값을 설정하기 위한 초기화
     @return
 *///----------------------------------------------------------------------------
 int ix_adjust_touch_init( void )
diff --git a/app/app-prime-modbus/lib/fanet/pollmng.c b/app/app-prime-modbus/lib/fanet/pollmng.c
index 23e2ca8..604e6c0 100644
--- a/app/app-prime-modbus/lib/fanet/pollmng.c
+++ b/app/app-prime-modbus/lib/fanet/pollmng.c
@@ -1,20 +1,20 @@
 /**    
     @file     pollmng.c
     @date     2009/3/19
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    poll �� �����Ѵ�.
-
-    @modify   2009-05-07 (�����) �����ϳ����� ���� ������ �Լ��� �߰�
-              2009-05-20 (�����) tag �ν� poll_obj ��ü�� ��� �Լ� �߰�
-              2009-10-09 (�����) poll_do_loop() �Լ��� ���ȣ�� ȸ���� �����ϵ��� ����
-              2010-01-04 (�����) poll_obj_t ����ü���� poll_ndx ������� ����
-                                 poll_delete() �Լ����� tlist_delete() �Լ���� tlist_remove()�Լ��� ����
-              2010-03-19 (�����) poll_obj_t ����ü���� on_disconnect ��� �߰�
-                                 tcp �� ��� ����
-              2010-08-18 (��漮) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
-              2014-09-03 (��μ�) tty�� �ƴ� stdin�� POLL_IN���� ��ϵ� ��� �׻� readable�ϱ� ������
-                                  CPU �������� 100%�� �Ǵ� ������ �־
-                                  stdin�� tty�� �ƴ� ��� �̺�Ʈ�� ������� �ʴ´�.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    poll 을 관리한다.
+
+    @modify   2009-05-07 (오재경) 파일하나만을 폴로 돌리는 함수를 추가
+              2009-05-20 (오재경) tag 로써 poll_obj 객체를 얻는 함수 추가
+              2009-10-09 (오재경) poll_do_loop() 함수의 재귀호출 회수를 제한하도록 수정
+              2010-01-04 (오재경) poll_obj_t 구조체에서 poll_ndx 멤버변수 제거
+                                 poll_delete() 함수에서 tlist_delete() 함수대신 tlist_remove()함수로 수정
+              2010-03-19 (오재경) poll_obj_t 구조체에서 on_disconnect 멤버 추가
+                                 tcp 일 경우 사용됨
+              2010-08-18 (장길석) mingw와 함께 사용할 수 있는 코드 추가
+              2014-09-03 (김민수) tty가 아닌 stdin이 POLL_IN으로 등록될 경우 항상 readable하기 때문에
+                                  CPU 점유율이 100%가 되는 문제가 있어서
+                                  stdin이 tty가 아닐 경우 이벤트를 등록하지 않는다.
                                   
     @todo    
     @bug     
@@ -24,11 +24,11 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -68,14 +68,14 @@
 
 char desc_pollmng[] = "falinux pollmng ver 0.2.4";
 
-/// �� ���� ����
+/// 폴 관리 변수
 static struct pollfd  poll_array[POLL_MAX_COUNT];
 static tlist         *poll_list = NULL;
-static int            cnt_recursive     = 0;                    // poll_do_loop()�� �Ϸ� �DZ� ���� poll_do_loop()�� ȣ��Ǵ� ī����
-static int            is_need_rebuild   = TRUE;                 // poll ��� ��ȭ�� ���� poll_array�� ������ �ʿ䰡 �ִ��� ����
-static int            is_loop_break     = FALSE;                // on_poll_xx �ݹ��Լ��� ���� ��ü�� ����Ʈ�� ����Ǿ��ٸ�
-                                                                // ���� ���̺�Ʈ�� �������� �ʰ� ������ ���� ����
-                                                                // TCP ������ ���� �ʿ��ϴ�.
+static int            cnt_recursive     = 0;                    // poll_do_loop()가 완료 되기 저에 poll_do_loop()가 호축되는 카운터
+static int            is_need_rebuild   = TRUE;                 // poll 등록 변화에 의해 poll_array를 갱신할 필요가 있는지 여부
+static int            is_loop_break     = FALSE;                // on_poll_xx 콜백함수에 의해 객체의 리스트가 변경되었다면
+                                                                // 다음 폴이벤트를 수행하지 않고 나가기 위한 변수
+                                                                // TCP 서버를 위해 필요하다.
 
 #ifdef MS_WIN32
 
@@ -87,13 +87,13 @@ static int poll( struct pollfd *a_fds, nfds_t a_nfds, int a_timeout){
     struct pollfd   *p_fds;
     FD_SET           rset;
 
-//jwjw ���� üũ    DWORD            dwMask;
+//jwjw 이후 체크    DWORD            dwMask;
     int              cnt_rs             = 0;
     int              cnt_sock           = 0;
     int              is_socket_exists   = FALSE;
     int              ndx;
 
-    // ���� �ø��� ���� Ȯ���Ѵ�.
+    // 먼저 시리얼 부터 확인한다.
     p_fds   = a_fds;
     for ( ndx = 0; ndx < a_nfds; ndx++){
 
@@ -104,7 +104,7 @@ static int poll( struct pollfd *a_fds, nfds_t a_nfds, int a_timeout){
             COMSTAT comstat;
 
             ClearCommError( p_fds->fd, &dwErrorFlags, &comstat);
-            dwBytesRead = comstat.cbInQue;    // input queue�� ���� �ִ� �������� ����
+            dwBytesRead = comstat.cbInQue;    // input queue에 들어와 있는 데이터의 길이
 
             if ( 0 < dwBytesRead){
                 p_fds->revents  = POLLIN;
@@ -133,7 +133,7 @@ static int poll( struct pollfd *a_fds, nfds_t a_nfds, int a_timeout){
         return cnt_rs;
     }
 
-    // ���� �ʿ� �̺�Ʈ�� �߻��ߴ��� Ȯ���Ѵ�.
+    // 소켓 쪽에 이벤트가 발생했는지 확인한다.
 
     p_fds   = a_fds;
     FD_ZERO( &rset);
@@ -153,7 +153,7 @@ static int poll( struct pollfd *a_fds, nfds_t a_nfds, int a_timeout){
     sttTimeout.tv_usec  = ( a_timeout % 1000 ) * 1000;
 
     cnt_sock = select( 0, &rset, NULL, NULL, &sttTimeout );
-    if( 0 > cnt_sock ){                                         // ���� ��Ȳ�̹Ƿ� ��ȯ
+    if( 0 > cnt_sock ){                                         // 에러 상황이므로 반환
         return -1;
     }
     else {
@@ -176,15 +176,15 @@ static int poll( struct pollfd *a_fds, nfds_t a_nfds, int a_timeout){
 
 
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü�� �����Ѵ�.
+/** @brief    poll 관리 객체를 생성한다.
     @remark
 *///----------------------------------------------------------------------------
 void  poll_init( void )
 {
 	poll_list           = tlist_create();
 
-	is_need_rebuild     = TRUE;                                 // poll ��� ��ȭ�� ���� poll_array�� ������ �ʿ䰡 �ִ��� ����
-	is_loop_break       = FALSE;                                // on_poll_xx �ݹ��Լ��� ���� ��ü�� ����Ʈ�� ����Ǿ��ٸ�
+	is_need_rebuild     = TRUE;                                 // poll 등록 변화에 의해 poll_array를 갱신할 필요가 있는지 여부
+	is_loop_break       = FALSE;                                // on_poll_xx 콜백함수에 의해 객체의 리스트가 변경되었다면
 
 #ifdef MS_WIN32
 
@@ -199,7 +199,7 @@ void  poll_init( void )
 
 }	
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü�� �����Ѵ�.
+/** @brief    poll 관리 객체를 해제한다.
     @remark
 *///----------------------------------------------------------------------------
 void  poll_exit( void )
@@ -229,8 +229,8 @@ void  poll_exit( void )
 	tlist_free( poll_list );
 }	
 //------------------------------------------------------------------------------
-/** @brief    ����Ʈ�� �����Ǵ� ���ϵ�ũ���͵��� ���迭�� �籸���Ѵ�.
-    @remark   ���� �����Ǵ� ��ü�� �̺�Ʈ�Լ��� ������� �ݵ�� ȣ���Ͽ��� �Ѵ�.
+/** @brief    리스트로 관리되는 파일디스크립터들을 폴배열에 재구성한다.
+    @remark   폴로 관리되는 객체의 이벤트함수를 등록한후 반드시 호출하여야 한다.
 *///----------------------------------------------------------------------------
 void  poll_rebuild( void ){
 
@@ -271,11 +271,11 @@ void  poll_rebuild( void ){
 	is_need_rebuild = FALSE;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü�� ������ ���� ��ũ���͸� ����Ѵ�.
-    @param    fd  ���� ���� ��ũ����
-    @return   poll_obj_t ������ ������
-    @remark   �̺�Ʈ�Լ�( on_poll_in, on_poll_out )�� �������
-              poll_rebuild() �Լ��� �ݵ�� ȣ���Ѵ�.
+/** @brief    poll 관리 객체에 열려진 파일 디스크립터를 등록한다.
+    @param    fd  열린 파일 디스크립터
+    @return   poll_obj_t 형식의 포인터
+    @remark   이벤트함수( on_poll_in, on_poll_out )를 등록한후
+              poll_rebuild() 함수를 반드시 호출한다.
 *///----------------------------------------------------------------------------
 poll_obj_t *poll_add( fd_t fd )
 {
@@ -320,9 +320,9 @@ poll_obj_t *poll_add( fd_t fd )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü���� ������ ������ü �����͸� ��´�.
-    @param    idx  ���
-    @return   poll_obj_t ������ ������
+/** @brief    poll 관리 객체에서 개개의 폴구조체 포인터를 얻는다.
+    @param    idx  인덱스
+    @return   poll_obj_t 형식의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t *poll_get_obj( int idx  )
 {
@@ -334,9 +334,9 @@ poll_obj_t *poll_get_obj( int idx  )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü���� ����� �����͸� ��´�.
-    @param    idx  ���
-    @return   void ������ ������
+/** @brief    poll 관리 객체에서 사용자 포인터를 얻는다.
+    @param    idx  인덱스
+    @return   void 형식의 포인터
 *///----------------------------------------------------------------------------
 void *poll_get_priv( int idx  )
 {
@@ -352,8 +352,8 @@ void *poll_get_priv( int idx  )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü�� �����ϴ� ������ ����
-    @return   �����ϴ� ������ ����
+/** @brief    poll 관리 객체가 관리하는 파일의 개수
+    @return   관리하는 파일의 개수
 *///----------------------------------------------------------------------------
 int  poll_count( void  )
 {
@@ -362,9 +362,9 @@ int  poll_count( void  )
 
 
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü���� ���ϵ�ũ��Ʈ�� �����ϴ� ����ü�� ��ȯ�Ѵ�.
-    @param    fd  ���� ��ũ����
-    @return   poll_obj_t ������ ������
+/** @brief    poll 관리 객체에서 파일디스크립트로 관리하는 폴객체를 반환한다.
+    @param    fd  파일 디스크립터
+    @return   poll_obj_t 형식의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t *poll_obj_byfd( fd_t fd )
 {
@@ -383,10 +383,10 @@ poll_obj_t *poll_obj_byfd( fd_t fd )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü���� ��ü�� �����ͷ� �����Ѵ�.
-    @param    obj  poll_obj_t ������ ������
-    @remark   �����ϴ� ���ϵ� close �ȴ�.
-              poll_rebuild() �Լ��� ���ο��� ȣ��ǹǷ� �ܺο����� ȣ������ �ʴ´�.
+/** @brief    poll 관리 객체에서 객체의 포인터로 삭제한다.
+    @param    obj  poll_obj_t 형식의 포인터
+    @remark   관리하는 파일도 close 된다.
+              poll_rebuild() 함수가 내부에서 호출되므로 외부에서는 호출하지 않는다.
 *///----------------------------------------------------------------------------
 void  poll_delete( poll_obj_t *obj )
 {
@@ -394,9 +394,9 @@ void  poll_delete( poll_obj_t *obj )
 	
 	fd  = obj->fd;
 	
-	free( (void *)obj );              // ����� �޸𸮸� �����Ѵ�.
+	free( (void *)obj );              // 사용한 메모리를 해제한다.
 
-	// �����ϴ� ������ �ݴ´�.
+	// 관리하는 파일을 닫는다.
 #ifdef EMBEDDED_LINUX
 
 	close( fd );
@@ -409,13 +409,13 @@ void  poll_delete( poll_obj_t *obj )
 
 	tlist_remove( poll_list, obj ); 
 
-	poll_rebuild();                   // ���� �籸���Ѵ�.
+	poll_rebuild();                   // 폴을 재구성한다.
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü���� ���ϵ�ũ���ͷ� �����Ѵ�.
-    @param    fd  ���� ��ũ����
-    @remark   �����ϴ� ���ϵ� close �ȴ�.
-              poll_rebuild() �Լ��� ���ο��� ȣ��ǹǷ� �ܺο����� ȣ������ �ʴ´�.
+/** @brief    poll 관리 객체에서 파일디스크립터로 삭제한다.
+    @param    fd  파일 디스크립터
+    @remark   관리하는 파일도 close 된다.
+              poll_rebuild() 함수가 내부에서 호출되므로 외부에서는 호출하지 않는다.
 *///----------------------------------------------------------------------------
 void  poll_delete_byfd( fd_t fd )
 {
@@ -428,19 +428,19 @@ void  poll_delete_byfd( fd_t fd )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief    poll �̺�Ʈ ���� �����Լ�
-    @param    time_out  msec ������ Ÿ�Ӿƿ�
-    @return   POLL_ASYNC_ERR  �ñ׳ο� ���� �����Ǿ���.
-              POLL_TIME_OUT   ��� �ð��� ����Ǿ���.
-              POLL_EVENTED    �̺�Ʈ�� ���� ó���Ǿ���.
-    @remark   �ܺ� �������� ���ȣ���Ѵ�.
+/** @brief    poll 이벤트 메인 루프함수
+    @param    time_out  msec 단위의 타임아웃
+    @return   POLL_ASYNC_ERR  시그널에 의해 중지되었다.
+              POLL_TIME_OUT   대기 시간이 종료되었다.
+              POLL_EVENTED    이벤트가 정상 처리되었다.
+    @remark   외부 루프에서 계속호출한다.
 *///----------------------------------------------------------------------------
 int  poll_do_loop( int time_out )
 {
 	int  fd_cnt, event_cnt;
 	int  ndx, rtnval = POLL_EVENTED;
 
-	// ���ȣ���� ȸ���� �����Ѵ�.
+	// 재귀호출의 회수를 제한한다.
 	if ( POLL_RECURSIVE_COUNT < cnt_recursive )
 	{
 		printf( "fatal error : poll_do_loop() recursive limit\n" );
@@ -448,11 +448,11 @@ int  poll_do_loop( int time_out )
 	}
 	cnt_recursive++;
 	
-	if ( is_need_rebuild ){                                   // poll ��� ��ȭ�� ���� poll_array�� ������ �ʿ䰡 �ִ��� ����
+	if ( is_need_rebuild ){                                   // poll 등록 변화에 의해 poll_array를 갱신할 필요가 있는지 여부
 		poll_rebuild();	
 	}
 
-	// �̺�Ʈ�� �߻��Ҷ����� �����·� ���δ�.
+	// 이벤트가 발생할때까지 대기상태로 놓인다.
 	fd_cnt    = poll_list->fcount;
 	event_cnt = poll( (struct pollfd *)&poll_array, fd_cnt, time_out );
 
@@ -462,7 +462,7 @@ int  poll_do_loop( int time_out )
 		goto lable_poll_do_loop_end;
 	}
 	
-    // timeout �� �߻��ϸ� ��ϵ� �Լ��� ȣ���Ѵ�.
+    // timeout 이 발생하면 등록된 함수를 호출한다.
 	if ( 0 == event_cnt )
 	{
 		for ( ndx=0; ndx < fd_cnt; ndx++ )
@@ -479,13 +479,13 @@ int  poll_do_loop( int time_out )
 		goto lable_poll_do_loop_end;
 	}
 	
-	is_loop_break = FALSE;    // �ݹ��Լ��� ȣ���ϱ� ���� ������ �ʱ�ȭ�Ѵ�.
-	                            // �ݹ��Լ������� poll_rebuild() �Լ��� ȣ��Ǹ� ���� TRUE �� ���Ѵ�.
+	is_loop_break = FALSE;    // 콜백함수를 호출하기 전에 변수를 초기화한다.
+	                            // 콜백함수내에서 poll_rebuild() 함수가 호출되면 값이 TRUE 로 변한다.
 	for ( ndx=0; ndx<fd_cnt; ndx++ )
 	{
     	poll_obj_t *obj;
 
-    	// �Է��̺�Ʈ --------------------------------------
+    	// 입력이벤트 --------------------------------------
     	if( poll_array[ndx].revents & POLLIN )
     	{
 			obj = tlist_get( poll_list, ndx );
@@ -496,7 +496,7 @@ int  poll_do_loop( int time_out )
 			}
 		}
     	
-    	// ����̺�Ʈ --------------------------------------
+    	// 출력이벤트 --------------------------------------
     	if( poll_array[ndx].revents & POLLOUT )
     	{
 			obj = tlist_get( poll_list, ndx );
@@ -507,7 +507,7 @@ int  poll_do_loop( int time_out )
 			}
 		}
     	
-    	// HUP�̺�Ʈ --------------------------------------
+    	// HUP이벤트 --------------------------------------
     	if( poll_array[ndx].revents & POLLHUP )
     	{
 			obj = tlist_get( poll_list, ndx );
@@ -518,7 +518,7 @@ int  poll_do_loop( int time_out )
 			}
 		}
     	
-    	// �����̺�Ʈ --------------------------------------
+    	// 에러이벤트 --------------------------------------
     	if( poll_array[ndx].revents & POLLERR )
     	{
 			obj = tlist_get( poll_list, ndx );
@@ -530,7 +530,7 @@ int  poll_do_loop( int time_out )
 		}
 		
 		if ( 0 >= event_cnt  ) break;
-		if ( is_loop_break ) break;                       // �̺�Ʈ ó�� �� poll�� ����� ��ü�� ��ȭ�� �ִٸ�( poll_rebuild()�� ����) �б��Ѵ�.
+		if ( is_loop_break ) break;                       // 이벤트 처리 중 poll에 등록한 객체에 변화가 있다면( poll_rebuild()를 실행) 분기한다.
 	}
 
 
@@ -542,13 +542,13 @@ lable_poll_do_loop_end:
 
 
 //------------------------------------------------------------------------------
-/** @brief    poll �̺�Ʈ�� �ϳ��� �����ڵ�θ� ������.
-    @param    fd        �����ڵ�
-    @param    event     POLLIN, POLLOUT ���� �ִ´�.
-    @param    time_out  msec ������ Ÿ�Ӿƿ�
-    @return   POLL_ASYNC_ERR  �ñ׳ο� ���� �����Ǿ���.
-              POLL_TIME_OUT   ��� �ð��� ����Ǿ���.
-              POLL_EVENTED    �̺�Ʈ�� �߻��Ͽ���.
+/** @brief    poll 이벤트를 하나의 파일핸들로만 돌린다.
+    @param    fd        파일핸들
+    @param    event     POLLIN, POLLOUT 값을 넣는다.
+    @param    time_out  msec 단위의 타임아웃
+    @return   POLL_ASYNC_ERR  시그널에 의해 중지되었다.
+              POLL_TIME_OUT   대기 시간이 종료되었다.
+              POLL_EVENTED    이벤트가 발생하였다.
 *///----------------------------------------------------------------------------
 int  poll_do_one( fd_t fd, int event, int time_out )
 {
@@ -559,7 +559,7 @@ int  poll_do_one( fd_t fd, int event, int time_out )
 	poll_one[0].revents = 0;
 	poll_one[0].events  = event;
 	
-	// �̺�Ʈ�� �߻��Ҷ����� �����·� ���δ�.
+	// 이벤트가 발생할때까지 대기상태로 놓인다.
 	event_cnt = poll( (struct pollfd *)&poll_one, 1, time_out );
 	
 	if ( 0 > event_cnt )
@@ -575,9 +575,9 @@ int  poll_do_one( fd_t fd, int event, int time_out )
 	return  POLL_EVENTED;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ���� ��ü���� tag ��ȣ�� ã�� ����ü�� ��ȯ�Ѵ�.
-    @param    tag  �±׹�ȣ
-    @return   poll_obj_t ������ ������
+/** @brief    poll 관리 객체에서 tag 번호로 찾아 폴객체를 반환한다.
+    @param    tag  태그번호
+    @return   poll_obj_t 형식의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t *poll_obj_bytag( int tag )
 {
diff --git a/app/app-prime-modbus/lib/fanet/rspackage_dle.c b/app/app-prime-modbus/lib/fanet/rspackage_dle.c
index 6096d7f..9195a49 100644
--- a/app/app-prime-modbus/lib/fanet/rspackage_dle.c
+++ b/app/app-prime-modbus/lib/fanet/rspackage_dle.c
@@ -5,15 +5,15 @@
 
 char  *rs_error_string( void)
 /**
-    @brief  ini_error_code�� ���� ���� ���� ���ڿ��� ��ȯ
-    @return ���� �ڵ忡 ���� ���� ���� ���ڿ� ������
-    @warning ���� ��ȯ ���� ���ڿ��� �Ҹ� ���Ѽ��� �� �ȴ�!!
+    @brief  ini_error_code에 대한 에러 설명 문자열을 반환
+    @return 에러 코드에 대한 에러 설명 문자열 포인터
+    @warning 절대 반환 받은 문자열을 소멸 시켜서는 안 된다!!
 */
 {
-   char *error_string[] ={ "���� ����",                                         //  RSERR_NONE         
-                           "�޸� ����",                                       //  RSERR_OUT_OF_MEMORY
-                           "CRC ����",                                          //  RSERR_CRC          
-                           "�ڷ� ���� �̻�"                                     //  RSERR_DATA         
+   char *error_string[] ={ "에러 없음",                                         //  RSERR_NONE         
+                           "메모리 부족",                                       //  RSERR_OUT_OF_MEMORY
+                           "CRC 에러",                                          //  RSERR_CRC          
+                           "자료 구조 이상"                                     //  RSERR_DATA         
                          };
                         
    return( error_string[rspackage_error_code]);
@@ -47,9 +47,9 @@ char *rs_put_dle( rs_dle_t *dle, char *data, int size)
                         }
                         else
                         {
-                            dle->sz_data          = -1;                         // CRC ���� �Ǵ� ������ �̻�
+                            dle->sz_data          = -1;                         // CRC 에러 또는 데이터 이상
                             rspackage_error_code  = RSERR_DATA;
-                            return data;                                        // ���ݱ��� ó���� ������ �����͸� ��ȯ
+                            return data;                                        // 지금까지 처리한 이후의 포인터를 반환
                         }
                         break;
         case __RCV_DATA   :
@@ -77,23 +77,23 @@ char *rs_put_dle( rs_dle_t *dle, char *data, int size)
                             }
                             else
                             {               
-                                dle->sz_data          = -1;                     // CRC ���� �Ǵ� ������ �̻�
+                                dle->sz_data          = -1;                     // CRC 에러 또는 데이터 이상
                                 rspackage_error_code  = RSERR_CRC;
                             }    
                             return data;    
                         }
-                        else                                                    // DLE ������ �ͼ��� �ȵǴ� �ڵ尡 �����Ƿ� ��ǥ�� ����
+                        else                                                    // DLE 다음에 와서는 안되는 코드가 왔으므로 실표로 반한
                         {
-                            dle->sz_data          = -1;                         // CRC ���� �Ǵ� ������ �̻�
+                            dle->sz_data          = -1;                         // CRC 에러 또는 데이터 이상
                             rspackage_error_code  = RSERR_DATA;
-                            return data;                                        // ���ݱ��� ó���� ������ �����͸� ��ȯ
+                            return data;                                        // 지금까지 처리한 이후의 포인터를 반환
                         }
                         break;
         } // switch()
     } // for {}
-    dle->sz_data          = 0;                                                  // ���ŵ� �����Ͱ� ����
+    dle->sz_data          = 0;                                                  // 수신된 데이터가 없음
     rspackage_error_code  = RSERR_NONE;
-    return data;                                                                // ���ݱ��� ó���� ������ �����͸� ��ȯ
+    return data;                                                                // 지금까지 처리한 이후의 포인터를 반환
 }
 
 rs_dle_t *rs_create_dle( int  (*check_crc)( rs_dle_t *))
diff --git a/app/app-prime-modbus/lib/fanet/sharemem.c b/app/app-prime-modbus/lib/fanet/sharemem.c
index 8ee5c77..4764291 100644
--- a/app/app-prime-modbus/lib/fanet/sharemem.c
+++ b/app/app-prime-modbus/lib/fanet/sharemem.c
@@ -1,9 +1,9 @@
 /**    
     @file     sharemem.c
     @date     2006
-    @author   ����â frog@falinux.com  FALinux.Co.,Ltd.
-    @author   ����� freefrug@falinux.com  FALinux.Co.,Ltd.
-    @brief    �����޸𸮸� �����ϰ� �����Ѵ�.
+    @author   유영창 frog@falinux.com  FALinux.Co.,Ltd.
+    @author   오재경 freefrug@falinux.com  FALinux.Co.,Ltd.
+    @brief    공유메모리를 생성하고 해제한다.
 
     @modify   
     @todo    
@@ -14,8 +14,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 #include <stdio.h>
@@ -34,19 +34,19 @@
 #include <sys/shm.h>
 
 
-/// �����޸� ������ ���� ����ü
+/// 공유메모리 관리를 위한 구조체
 typedef struct
 {
-	int	key;            // ����ڰ� �ٶ󺸴� �ĺ���
-    int	id;             // �����޸� �ڵ�
-	char	data[0];    // ����ڰ� �������ϴ� �޸�
+	int	key;            // 사용자가 바라보는 식별자
+    int	id;             // 공유메모리 핸들
+	char	data[0];    // 사용자가 엑세스하는 메모리
 	
 } share_t;
 
 
 //------------------------------------------------------------------------------
-/** @brief    �����޸𸮸� �����Ѵ�.
-    @param    key   �����޸𸮸� �����ϴ� ����ũ��
+/** @brief    공유메모리를 삭제한다.
+    @param    key   공유메모리를 지정하는 유니크값
     @remark
 *///----------------------------------------------------------------------------
 void	share_delete( int key )
@@ -56,11 +56,11 @@ void	share_delete( int key )
 	int	   id = -1;
 	int    size;
 	
-	// shm ���������� ����.
+	// shm 정보파일을 연다.
 	fp = fopen( "/proc/sysvipc/shm", "r" );
 	if(fp == NULL) 	return;
 	
-	// ù��° ���� ����  
+	// 첫번째 라인 무시  
 	fgets( line, sizeof(line), fp );
 	
 	while(1) 
@@ -69,24 +69,24 @@ void	share_delete( int key )
 
 		if ( fgets( line, sizeof(line), fp ) == NULL ) break;
 		
-		// Ű���� ũ�⸦ �о�´�.
+		// 키값과 크기를 읽어온다.
 		if ( sscanf( line, "%d %d %d %d", &tmp_key, &tmp_id, &tmp_perm, &tmp_size ) == 4 )
 		{
 			// printf( "SHM KEY = %d ID = %d SIZE=%d\n", tmp_key, tmp_id, tmp_size );
 			if ( tmp_key == key )
 			{
-				id = tmp_id;	// �ش��ϴ� id �� ã�Ҵ�
+				id = tmp_id;	// 해당하는 id 를 찾았다
 				size = tmp_size;
 				break;		
 			} 
 		}
 	}
 	
-	// ������ �ݴ´�.
+	// 파일을 닫는다.
 	fclose( fp );
 
 
-	// id �� ã�Ҵٸ� �����޸𸮸� �����Ѵ�.
+	// id 를 찾았다면 공유메모리를 삭제한다.
 	if( id >= 0 )
 	{
 		id = shmget( key, size, 0666 | IPC_CREAT);
@@ -94,10 +94,10 @@ void	share_delete( int key )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief    ���� �޸𸮸� �����Ѵ�. 
-    @param    key   �����޸𸮸� �����ϴ� ����ũ��
-    @param    size  ������ �����޸� ũ��
-    @return   �Ҵ���� �����޸�
+/** @brief    공유 메모리를 생성한다. 
+    @param    key   공유메모리를 지정하는 유니크값
+    @param    size  생성할 공유메모리 크기
+    @return   할당받은 공유메모리
     @remark
 *///----------------------------------------------------------------------------
 void	*share_create( int key, unsigned int size )
@@ -108,28 +108,28 @@ void	*share_create( int key, unsigned int size )
 	
 //	printf( "share_create key = %d\n" , key );
 	
-	// ���� �޸𸮸� �����Ͽ� �ڵ��� ��ų� �̹� ������ �ش� �ڵ��� ���� �´�. 
+	// 공유 메모리를 생성하여 핸들을 얻거나 이미 있으면 해당 핸들을 가져 온다. 
 	id = shmget( key, sizeof(share_t) + size, 0666 | IPC_CREAT );
 //	printf("shmget id = %d\n", id )
 
 	if( id < 0 ) 
 	{
-		// ���࿡ ������ �ٸ� ũ��� �����Ǿ� �ִٸ� 
-		// �������� ��� ���� ó�� �ϰ� �� ������ ��û�Ѵ�. 
+		// 만약에 기존에 다른 크기로 생성되어 있다면 
+		// 이전것을 모두 삭제 처리 하고 재 생성을 요청한다. 
 //		printf("Exit Share Memory %08X\n", key );
 		share_delete( key );
 		
-		// �ٽ� �Ҵ�޴´�.
+		// 다시 할당받는다.
 		id = shmget( key, size + sizeof(share_t), 0666 | IPC_CREAT | IPC_EXCL );
 		
 		if( id < 0 ) return NULL;
 	}
 
-	// �����޸��� ���� �ּҸ� ���´�.
+	// 공유메모리의 선두 주소를 얻어온다.
 	ptr = shmat( id, NULL, 0 ); 
 	if( ptr == NULL ) return NULL;
 	
-	// �����޸��� ������ �����Ѵ�.
+	// 공유메모리의 정보를 저장한다.
 	share = (share_t *) ptr;
 	share->key = key;
 	share->id  = id;
@@ -137,8 +137,8 @@ void	*share_create( int key, unsigned int size )
 	return share->data;
 }
 //------------------------------------------------------------------------------
-/** @brief    ���� �޸𸮸� �����Ѵ�.
-    @param    data  share_create() �Լ��� ���� �޸� ������
+/** @brief    공유 메모리를 해제한다.
+    @param    data  share_create() 함수로 받은 메모리 포인터
     @remark
 *///----------------------------------------------------------------------------
 void	share_free( void *data )
@@ -149,10 +149,10 @@ void	share_free( void *data )
 	share = (share_t *)( data - sizeof(share_t) );
 	id    = share->id;
 	
-	// ���� �޸𸮸� ��巹�� �������� �и��Ѵ�.
+	// 공유 메모리를 어드레스 공간에서 분리한다.
 	shmdt( share ); 
 	
-	// ���� �޸𸮸� ����ϴ� ���μ����� ���ٸ� �����ϵ��� �����Ѵ�.
+	// 공유 메모리를 사용하는 프로세스가 없다면 삭제하도록 설정한다.
 	shmctl( id, IPC_RMID, NULL ); 
 }
 
@@ -160,8 +160,8 @@ void	share_free( void *data )
 /*
 
 //-------------------------------------------------------------------------------
-// ���� : 
-// ���� :
+// 설명 : 
+// 주의 :
 //-------------------------------------------------------------------------------
 int	get_usrmsg( char *buf, int size )
 {
@@ -178,8 +178,8 @@ int	get_usrmsg( char *buf, int size )
 
 
 //-------------------------------------------------------------------------------
-// ���� : help
-// ���� :
+// 설명 : help
+// 주의 :
 //-------------------------------------------------------------------------------
 void	help( void )
 {
@@ -191,7 +191,7 @@ void	help( void )
 	);
 }
 
-// �޼����� ������ �ޱ����� ����ü
+// 메세지를 보내고 받기위한 구조체
 typedef struct 
 {
 	unsigned int	seq;
@@ -200,8 +200,8 @@ typedef struct
 } msg_t;
 
 //------------------------------------------------------------------------------
-// ���� : main
-// ���� : 
+// 설명 : main
+// 주의 : 
 //------------------------------------------------------------------------------
 int     main( int argc, char **argv )
 {
@@ -220,7 +220,7 @@ int     main( int argc, char **argv )
 	key  = strtoul( argv[2], NULL, 0 );	
 	size = strtoul( argv[3], NULL, 0 );	
 	
-	// �����޸𸮸� �����Ѵ�.
+	// 공유메모리를 생성한다.
 	pmsg = (msg_t *)share_create( key, sizeof(msg_t) + size );
 	
 	if ( NULL == pmsg )
@@ -229,7 +229,7 @@ int     main( int argc, char **argv )
 		return -1;
 	}
 	
-	// ����Ÿ�� �����޸𸮿� ����.	
+	// 데이타를 공유메모리에 쓴다.	
 	if ( dir == 'w' )
 	{
 		pmsg->seq = 0;
@@ -240,7 +240,7 @@ int     main( int argc, char **argv )
 		
 		pmsg->seq ++;
 	}
-	// ����Ÿ�� �����޸𸮿��� �д´�.
+	// 데이타를 공유메모리에서 읽는다.
 	else
 	{
 		unsigned int seq = 0;
@@ -259,7 +259,7 @@ int     main( int argc, char **argv )
 		}
 	}
 	
-	// �����޸𸮸� �����Ѵ�.
+	// 공유메모리를 해제한다.
 	share_free( pmsg );
 
 	printf( " shm test end\n" );
diff --git a/app/app-prime-modbus/lib/fanet/tcp.c b/app/app-prime-modbus/lib/fanet/tcp.c
index a2e604b..d412e87 100644
--- a/app/app-prime-modbus/lib/fanet/tcp.c
+++ b/app/app-prime-modbus/lib/fanet/tcp.c
@@ -1,28 +1,28 @@
 /**    
     @file     tcp.c
     @date     2009-03-20
-    @author   ����� freefrug@falinux.com
-    @brief    tcp �� ����� ����� ����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    tcp 를 사용한 통신을 담당한다.
               
-    @modify   write() �Լ� ȣ��� �����Ǵ� ���� �߻��Ͽ� tcp_write_thread()�Լ� �߰�
-              send() �Լ��� ����Ͽ� ������ �߻����� �ʵ��� tcp_write()�Լ��� �����Ͽ�����
-              BF_POLICY_WRITE_NONBLOCK �ɼ����� ����Ѵ�.
+    @modify   write() 함수 호출시 블럭되는 일이 발생하여 tcp_write_thread()함수 추가
+              send() 함수를 사용하여 블럭이 발생하지 않도록 tcp_write()함수를 수정하였으며
+              BF_POLICY_WRITE_NONBLOCK 옵션으로 사용한다.
               
-              2010-03-19 (�����) poll_obj_t ����ü���� on_disconnect ��� �߰�
-                                  ���� ������ ������ ��� on_disconnect �Լ� ȣ��
-              2010-08-18 (��漮) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
+              2010-03-19 (오재경) poll_obj_t 구조체에서 on_disconnect 멤버 추가
+                                  소켓 접속이 끊어질 경우 on_disconnect 함수 호출
+              2010-08-18 (장길석) mingw와 함께 사용할 수 있는 코드 추가
     @todo     
     @bug     
-    @remark   �����带 ���ؼ� ������ �ɼǿ� LDFLAGS += -lpthread �߰�
+    @remark   쓰레드를 위해서 컴파일 옵션에 LDFLAGS += -lpthread 추가
     
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -71,7 +71,7 @@ char desc_tcp[] = "falinux tcp ver 0.2.1";
 
 #endif
 
-/// tcp ���� ����ü
+/// tcp 개별 구조체
 typedef struct {
 	
 	char  host[256];
@@ -79,43 +79,43 @@ typedef struct {
 	int   sock_type;
     struct sockaddr_in addr;
 	
-	// client ����
-	poll_obj_t *obj_server;   // �������� �и��� Ŭ���̾�Ʈ�� ����
-	long        life_sec;     // �Է��� Ư���ð��� ���� ������ ������ ���´�.
+	// client 정보
+	poll_obj_t *obj_server;   // 서버에서 분리된 클라이언트를 위해
+	long        life_sec;     // 입력이 특정시가나 동안 없으면 접속을 끊는다.
 	
-	// ������ ����
+	// 서버용 정보
 	tlist *client_list;
 	int    client_max;
 
 #ifdef _USE_SEND_THREAD_	
-	// ������ ��������
-	pthread_mutex_t mutex_send;     // �Ʒ��� ������ ��ȣ�Ѵ�.
-	int    send_cnt;                // ���۰���
-	int    send_buf_len;            // ���۹��� ũ��
-	char  *send_buf;                // ���۹���
+	// 쓰레드 관련정보
+	pthread_mutex_t mutex_send;     // 아래의 변수를 보호한다.
+	int    send_cnt;                // 전송개수
+	int    send_buf_len;            // 전송버퍼 크기
+	char  *send_buf;                // 전송버퍼
 #endif	
 	
 } tcp_priv_t;
 
-/// ���� ����
+/// 변수 정의
 static unsigned int tcp_live_sec = DEFAULT_LIVE_SEC;
 static unsigned int bf_policy    = BF_POLICY_CLOSE_IOERR | BF_POLICY_READ_ZERO_ERROR; // | BF_POLICY_WRITE_NONBLOCK;
 
 #ifdef EMBEDDED_LINUX
 
 //------------------------------------------------------------------------------
-/** @brief    ���������� ������ �������ӽ� ������ ĸ�� �Լ�
-    @param    signo  �ñ׳� ��ȣ
+/** @brief    소켓접속이 끊어진 소켓접속시 에러를 캡쳐 함수
+    @param    signo  시그널 번호
 *///----------------------------------------------------------------------------
 static void sig_capture_SIGPIPE( int signo )
 {
-	// �ñ׳� ĸ�ĸ��ϰ� ������ ���� ó���� ���� �ʴ´�.
+	// 시그널 캡쳐만하고 에러에 대한 처리는 하지 않는다.
 	// printf("siganl BrokenPipe\n" );
 	
-	signo   = signo;                                                            // jwjw : warning�� ���ϱ� ����
+	signo   = signo;                                                            // jwjw : warning을 피하기 위해
 }
 //------------------------------------------------------------------------------
-/** @brief    broken pipe ĸ�� ����
+/** @brief    broken pipe 캡쳐 설정
     
 *///----------------------------------------------------------------------------
 static int  hook_sigpipe = 0;
@@ -134,20 +134,20 @@ static void hook_SIGPIPE( void )
 	}
 }
 //------------------------------------------------------------------------------
-/** @brief    tcp ��å�� �����Ѵ�.
-    @param    option  bit �� �ɼ��� �����Ѵ�.
-    @remark   BF_POLICY_CLOSE_IOERR        read(), write() �Լ� �����߻��� ������ ���´�.
-              BF_POLICY_CLOSE_TIMEOUT      SOCK_TYPE_SERVER_CLIENT Ÿ�Կ� ���ؼ� Ư���ð��� �����Ķ�� ������ ���´�.
-              BF_POLICY_RELOAD_TIMEOUT     SOCK_TYPE_SERVER_CLIENT Ÿ�Կ� ���ؼ� �ð��� �簻���Ѵ�.
-              BF_POLICY_CLOSE_OFF_LINK     SOCK_TYPE_SERVER_CLIENT Ÿ�Կ� ���ؼ� �ϵ�������� ��ũ�� �������� ������ ���´�.
-              BF_POLICY_READ_ZERO_ERROR    read() �Լ����� ���� ���� 0�̸� ����ó���Ѵ�.
+/** @brief    tcp 정책을 설정한다.
+    @param    option  bit 에 옵션을 설정한다.
+    @remark   BF_POLICY_CLOSE_IOERR        read(), write() 함수 에러발생시 접속을 끊는다.
+              BF_POLICY_CLOSE_TIMEOUT      SOCK_TYPE_SERVER_CLIENT 타입에 한해서 특정시간이 지난후라면 접속을 끊는다.
+              BF_POLICY_RELOAD_TIMEOUT     SOCK_TYPE_SERVER_CLIENT 타입에 한해서 시간을 재갱신한다.
+              BF_POLICY_CLOSE_OFF_LINK     SOCK_TYPE_SERVER_CLIENT 타입에 한해서 하드웨어적인 링크가 끊어지면 접속을 끊는다.
+              BF_POLICY_READ_ZERO_ERROR    read() 함수에서 읽은 값이 0이면 에러처리한다.
 *///----------------------------------------------------------------------------
 void  tcp_set_policy( unsigned int option )
 {
 	bf_policy = option;	
 }
 //------------------------------------------------------------------------------
-/** @brief    tcp ��å�� ��´�.
+/** @brief    tcp 정책을 얻는다.
     @return   bf_policy
 *///----------------------------------------------------------------------------    
 unsigned int  tcp_get_policy( void )
@@ -155,9 +155,9 @@ unsigned int  tcp_get_policy( void )
 	return bf_policy;
 }
 //------------------------------------------------------------------------------
-/** @brief    ����� �����ð� ������ ������ ���µ� ����ϴ� �ð��� �����Ѵ�.
-    @param    sec  �����ð� �ʴ���
-    @remark   SOCK_TYPE_SERVER_CLIENT Ÿ���� ��츸 ����ȴ�.
+/** @brief    통신이 일정시간 없으면 접속을 끊는데 사용하는 시간을 설정한다.
+    @param    sec  생존시간 초단위
+    @remark   SOCK_TYPE_SERVER_CLIENT 타입인 경우만 적용된다.
 *///----------------------------------------------------------------------------
 void  tcp_set_livesec( int sec )
 {
@@ -167,10 +167,10 @@ void  tcp_set_livesec( int sec )
 #endif
 
 //------------------------------------------------------------------------------
-/** @brief    tcp ������ �������·� open �Ѵ�.
-    @param    port  ��Ʈ��ȣ
-    @param    max_client  �����Ҽ� �ִ� Ŭ���̾�Ʈ �ִ밳��
-    @return   poll_obj_t ������ ������
+/** @brief    tcp 소켓을 서버형태로 open 한다.
+    @param    port  포트번호
+    @param    max_client  접속할수 있는 클라이언트 최대개수
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 
 #ifdef EMBEDDED_LINUX
@@ -183,7 +183,7 @@ poll_obj_t  *tcp_open_server( int port, int max_client )
 	int option;
 	int sockfd;
 	
-	// broken pipe ĸ�� ����
+	// broken pipe 캡쳐 설정
 	hook_SIGPIPE();
 	
 	sockfd = socket( PF_INET, SOCK_STREAM, 0 );
@@ -193,12 +193,12 @@ poll_obj_t  *tcp_open_server( int port, int max_client )
 		return NULL;	
 	}
 
-	// TIME-WAIT ���¿� �ִ� ���Ͽ� �Ҵ�Ǿ� �ִ� IP �ּҿ� ��Ʈ�� �ٷ� ����� �� �ֵ���
-	// SO_REUSEADDR �� �ɼ� ���� TRUE ��
+	// TIME-WAIT 상태에 있는 소켓에 할당되어 있는 IP 주소와 포트를 바로 사용할 수 있도록
+	// SO_REUSEADDR 의 옵션 값을 TRUE 로
 	option = 1;                                                         
 	setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 
-	// ������ �ý��ۿ� �����Ѵ�.
+	// 소켓을 시스템에 연결한다.
 	bzero( &addr_in, sizeof(struct sockaddr_in) );
 	addr_in.sin_family      = AF_INET;
 	addr_in.sin_addr.s_addr = htonl( INADDR_ANY );
@@ -219,7 +219,7 @@ poll_obj_t  *tcp_open_server( int port, int max_client )
 	    return NULL;
 	}
 	
-	// tcp ���� ������ �����Ѵ�.
+	// tcp 만의 정보를 설정한다.
 	tcp = (tcp_priv_t *)malloc( sizeof(tcp_priv_t) );
 	
 	tcp->sock_type    = SOCK_TYPE_SERVER;
@@ -233,7 +233,7 @@ poll_obj_t  *tcp_open_server( int port, int max_client )
 	tcp->send_cnt     = 0;
 #endif	
 
-	// ��������ü�� ����Ѵ�.
+	// 폴관리객체에 등록한다.
 	obj = poll_add( sockfd );
 	obj->type = STYP_TCP;
 	obj->priv = (void *)tcp;
@@ -267,12 +267,12 @@ poll_obj_t  *tcp_open_server( int port, int max_client )
         return NULL;
     }
 
-    // TIME-WAIT ���¿� �ִ� ���Ͽ� �Ҵ�Ǿ� �ִ� IP �ּҿ� ��Ʈ�� �ٷ� ����� �� �ֵ���
-    // SO_REUSEADDR �� �ɼ� ���� TRUE ��
+    // TIME-WAIT 상태에 있는 소켓에 할당되어 있는 IP 주소와 포트를 바로 사용할 수 있도록
+    // SO_REUSEADDR 의 옵션 값을 TRUE 로
     option = 1;
     setsockopt( hSock, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 
-    // ������ �ý��ۿ� �����Ѵ�.
+    // 소켓을 시스템에 연결한다.
     memset( &sckAddr, 0, sizeof( sckAddr));
     sckAddr.sin_family      = AF_INET;
     sckAddr.sin_addr.s_addr = htonl( INADDR_ANY );
@@ -291,7 +291,7 @@ poll_obj_t  *tcp_open_server( int port, int max_client )
         return NULL;
     }
 
-    // tcp ���� ������ �����Ѵ�.
+    // tcp 만의 정보를 설정한다.
     tcp = (tcp_priv_t *)malloc( sizeof(tcp_priv_t) );
 
     tcp->sock_type    = SOCK_TYPE_SERVER;
@@ -305,7 +305,7 @@ poll_obj_t  *tcp_open_server( int port, int max_client )
     tcp->send_cnt     = 0;
 #endif
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     fd_t  pSock         = malloc( sizeof( SOCKET));
     *( SOCKET*)pSock    = hSock;
     obj = poll_add( pSock );
@@ -321,10 +321,10 @@ poll_obj_t  *tcp_open_server( int port, int max_client )
 #endif
 
 //------------------------------------------------------------------------------
-/** @brief    tcp ������ Ŭ���̾�Ʈ ���·� open �ϰ� ������� �����Ѵ�
-	@param    ip  IP���ڿ� ������
-	@param    port  ��Ʈ��ȣ
-    @return   poll_obj_t ������ ������
+/** @brief    tcp 소켓을 클라이언트 형태로 open 하고 상대편에 접속한다
+	@param    ip  IP문자열 포인터
+	@param    port  포트번호
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 #ifdef EMBEDDED_LINUX
 
@@ -343,12 +343,12 @@ poll_obj_t  *tcp_open_client( char *ip, int port )
 		return NULL;	
 	}
 
-	// TIME-WAIT ���¿� �ִ� ���Ͽ� �Ҵ�Ǿ� �ִ� IP �ּҿ� ��Ʈ�� �ٷ� ����� �� �ֵ���
-	// SO_REUSEADDR �� �ɼ� ���� TRUE ��
+	// TIME-WAIT 상태에 있는 소켓에 할당되어 있는 IP 주소와 포트를 바로 사용할 수 있도록
+	// SO_REUSEADDR 의 옵션 값을 TRUE 로
 	option = 1;                                                         
 	setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 
-	// ������ ������� �����Ѵ�.
+	// 소켓을 상대편에 연결한다.
 	bzero( &addr_in, sizeof(struct sockaddr_in) );
 	addr_in.sin_family      = AF_INET;
 	addr_in.sin_addr.s_addr = inet_addr( ip );
@@ -361,7 +361,7 @@ poll_obj_t  *tcp_open_client( char *ip, int port )
 		return NULL;
 	}
 	
-	// tcp ���� ������ �����Ѵ�.
+	// tcp 만의 정보를 설정한다.
 	tcp = (tcp_priv_t *)malloc( sizeof(tcp_priv_t) );
 	
 	tcp->sock_type    = SOCK_TYPE_CLIENT;
@@ -378,7 +378,7 @@ poll_obj_t  *tcp_open_client( char *ip, int port )
 	sprintf( tcp->host, "%s", ip );
 	memcpy ( &tcp->addr, &addr_in, sizeof(addr_in) );
 
-	// ��������ü�� ����Ѵ�.
+	// 폴관리객체에 등록한다.
 	obj = poll_add( sockfd );
 	obj->type = STYP_TCP;
 	obj->priv = (void *)tcp;
@@ -403,25 +403,25 @@ poll_obj_t  *tcp_open_client( char *ip, int port )
         return NULL;
     }
 
-    // ������ �ý��ۿ� �����Ѵ�.
+    // 소켓을 시스템에 연결한다.
     memset( &sckAddr, 0, sizeof( sckAddr));
     sckAddr.sin_family      = AF_INET;
     sckAddr.sin_addr.s_addr = inet_addr( ip );
     sckAddr.sin_port        = htons( port );
 
-    // TIME-WAIT ���¿� �ִ� ���Ͽ� �Ҵ�Ǿ� �ִ� IP �ּҿ� ��Ʈ�� �ٷ� ����� �� �ֵ���
-    // SO_REUSEADDR �� �ɼ� ���� TRUE ��
+    // TIME-WAIT 상태에 있는 소켓에 할당되어 있는 IP 주소와 포트를 바로 사용할 수 있도록
+    // SO_REUSEADDR 의 옵션 값을 TRUE 로
     option = 1;
     setsockopt( hSock, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 
-    // ������ ������ �õ��Ѵ�.
+    // 서버에 연결을 시도한다.
     if ( SOCKET_ERROR ==  connect( hSock, ( SOCKADDR *)&sckAddr, sizeof( sckAddr) ) ){
         printf( "tcp connect error :\n\r" );
         closesocket( hSock );
         return NULL;
     }
 
-    // tcp ���� ������ �����Ѵ�.
+    // tcp 만의 정보를 설정한다.
     tcp = (tcp_priv_t *)malloc( sizeof(tcp_priv_t) );
 
     tcp->sock_type    = SOCK_TYPE_CLIENT;
@@ -438,7 +438,7 @@ poll_obj_t  *tcp_open_client( char *ip, int port )
     sprintf( tcp->host, "%s", ip );
     memcpy ( &tcp->addr, &sckAddr, sizeof(sckAddr) );
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     fd_t  pSock         = malloc( sizeof( SOCKET));
     *( SOCKET*)pSock    = hSock;
     obj = poll_add( pSock );
@@ -451,11 +451,11 @@ poll_obj_t  *tcp_open_client( char *ip, int port )
 #endif
 
 //------------------------------------------------------------------------------
-/** @brief    Ŭ���̾�Ʈ ������ ������ ������ ��ü�� ����Ѵ�.
-	@param    obj_server ����ü ������
-	@param    sockfd     Ŭ���̾�Ʈ ����
-	@param    paddr      ���ͳ� ��巹������ü ������
-    @return   poll_obj_t ������ ������
+/** @brief    클라이언트 소켓의 접속을 폴관린 객체에 등록한다.
+	@param    obj_server 폴객체 포인터
+	@param    sockfd     클라이언트 소켓
+	@param    paddr      인터넷 어드레스구조체 포인터
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 
 #ifdef EMBEDDED_LINUX
@@ -465,7 +465,7 @@ static poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, int sockfd, stru
 	poll_obj_t *obj;
 	tcp_priv_t *tcp, *server_tcp;
 	
-	// Ŭ���̾�Ʈ ������ ������ �ľ��Ѵ�.
+	// 클라이언트 접속의 개수를 파악한다.
 	server_tcp = (tcp_priv_t *)obj_server->priv;
 	if ( tlist_getcount(server_tcp->client_list) >= server_tcp->client_max )
 	{
@@ -474,12 +474,12 @@ static poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, int sockfd, stru
 		return NULL;
 	}
 	
-	// tcp ���� ������ �����Ѵ�.
+	// tcp 만의 정보를 설정한다.
 	tcp = (tcp_priv_t *)malloc( sizeof(tcp_priv_t) );
 	
 	tcp->sock_type    = SOCK_TYPE_SERVER_CLIENT;
 	tcp->port         = -1;
-	tcp->obj_server	  = obj_server; // Ŭ���̾�Ʈ ������ �Ҵ��� ��������
+	tcp->obj_server	  = obj_server; // 클라이언트 소켓을 할당한 서버정보
 	tcp->life_sec     = get_cur_sec() + tcp_live_sec;
 #ifdef _USE_SEND_THREAD_	
 	pthread_mutex_init( &tcp->mutex_send, NULL );
@@ -491,14 +491,14 @@ static poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, int sockfd, stru
 	sprintf( tcp->host, "%s", inet_ntoa( paddr->sin_addr) );
 	memcpy( &tcp->addr, paddr, sizeof(struct sockaddr_in) );
 	
-	// ��������ü�� ����Ѵ�.
+	// 폴관리객체에 등록한다.
 	obj = poll_add( sockfd );
 	if ( obj )
 	{
-		// ������ ���ӵ� Ŭ���̾�Ʈ�� ����Ʈ�� ���
+		// 서버에 접속된 클라이언트를 리스트에 등록
 		tlist_add( server_tcp->client_list, obj );
 		
-		// ���ӽð� ������ �ʿ��ϴٸ�
+		// 접속시간 관리가 필요하다면
 		if ( bf_policy & (BF_POLICY_CLOSE_TIMEOUT | BF_POLICY_CLOSE_OFF_LINK) ) 
 		{
 			obj->on_timeout = tcp_check_time;
@@ -524,7 +524,7 @@ static poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, SOCKET hSockClie
     tcp_priv_t *tcp, *server_tcp;
     fd_t        pSock;
 
-    // Ŭ���̾�Ʈ ������ ������ �ľ��Ѵ�.
+    // 클라이언트 접속의 개수를 파악한다.
     server_tcp = (tcp_priv_t *)obj_server->priv;
     if ( tlist_getcount(server_tcp->client_list) >= server_tcp->client_max )
     {
@@ -533,12 +533,12 @@ static poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, SOCKET hSockClie
         return NULL;
     }
 
-    // tcp ���� ������ �����Ѵ�.
+    // tcp 만의 정보를 설정한다.
     tcp = (tcp_priv_t *)malloc( sizeof(tcp_priv_t) );
 
     tcp->sock_type    = SOCK_TYPE_SERVER_CLIENT;
     tcp->port         = -1;
-    tcp->obj_server   = obj_server; // Ŭ���̾�Ʈ ������ �Ҵ��� ��������
+    tcp->obj_server   = obj_server; // 클라이언트 소켓을 할당한 서버정보
     tcp->life_sec     = get_cur_sec() + tcp_live_sec;
 #ifdef _USE_SEND_THREAD_
     pthread_mutex_init( &tcp->mutex_send, NULL );
@@ -550,15 +550,15 @@ static poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, SOCKET hSockClie
     sprintf( tcp->host, "%s", inet_ntoa( sckAddr->sin_addr) );
     memcpy( &tcp->addr, sckAddr, sizeof(struct sockaddr_in) );
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     pSock = malloc( sizeof( SOCKET));
     *( SOCKET*)pSock = hSockClient;
     obj = poll_add( pSock );
     if ( obj ){
-        // ������ ���ӵ� Ŭ���̾�Ʈ�� ����Ʈ�� ���
+        // 서버에 접속된 클라이언트를 리스트에 등록
         tlist_add( server_tcp->client_list, obj );
 
-        // ���ӽð� ������ �ʿ��ϴٸ�
+        // 접속시간 관리가 필요하다면
         if ( bf_policy & (BF_POLICY_CLOSE_TIMEOUT | BF_POLICY_CLOSE_OFF_LINK) )
         {
             obj->on_timeout = tcp_check_time;
@@ -579,14 +579,14 @@ static poll_obj_t  *tcp_connect_client( poll_obj_t *obj_server, SOCKET hSockClie
 #endif
 
 //------------------------------------------------------------------------------
-/** @brief    tcp ������ close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    tcp 소켓을 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void tcp_close( poll_obj_t *obj )
 {
 	tcp_priv_t *tcp, *server_tcp;
 	
-	// ���� �������� ����ڿ��� �˸���.
+	// 소켓 끊어짐을 사용자에게 알린다.
 	if ( obj->on_disconnect )
 	{
 		obj->on_disconnect( obj );
@@ -598,7 +598,7 @@ void tcp_close( poll_obj_t *obj )
 	{
 	case SOCK_TYPE_SERVER_CLIENT :
 		{
-			// ������ �����ϴ� Ŭ���̾�Ʈ�� ����Ʈ���� ����
+			// 서버가 관리하는 클라이언트를 리스트에서 삭제
 			server_tcp = (tcp_priv_t *)(tcp->obj_server->priv);
 			if ( server_tcp  )
 			{
@@ -609,7 +609,7 @@ void tcp_close( poll_obj_t *obj )
 		
 	case SOCK_TYPE_SERVER :
 		{
-			// ������ �����ϴ� Ŭ���̾�Ʈ�� server_tcp �� ��� NULL �� �����.
+			// 서버가 관리하는 클라이언트의 server_tcp 를 모두 NULL 로 만든다.
 			// @@@@@@@@@@
 			tlist_free( tcp->client_list );
 		}
@@ -623,7 +623,7 @@ void tcp_close( poll_obj_t *obj )
 #else
 
 	closesocket( *( ( SOCKET *)obj->fd));
-    free( obj->fd);                                             // SOCKET * �� �����Ѵ�.
+    free( obj->fd);                                             // SOCKET * 를 해제한다.
 
 #endif
 
@@ -639,9 +639,9 @@ void tcp_close( poll_obj_t *obj )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tcp ������ ���ӿ䱸�� ó������ Ŭ���̾�Ʈ������ ����Ѵ�.
-    @param    obj_server   tcp ����  ����ü ������
-    @return   tcp Ŭ���̾�Ʈ ����ü ������
+/** @brief    tcp 소켓의 접속요구를 처리한후 클라이언트소켓을 등록한다.
+    @param    obj_server   tcp 서버  폴객체 포인터
+    @return   tcp 클라이언트 폴객체 포인터
 *///----------------------------------------------------------------------------
 #ifdef EMBEDDED_LINUX
 
@@ -676,14 +676,14 @@ poll_obj_t  *tcp_accept_client( poll_obj_t *obj_server )
 #endif
 
 //------------------------------------------------------------------------------
-/** @brief    tcp ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    obj     ����ü ������
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
-    @remark   ������ ���� ó���� �ؾ��Ѵ�.
-              tcp_close( obj ) �� ȣ���Ͽ� ������ ���� ����� �Ϲ����̴�.
-              BF_POLICY_AUTO_CLOSE �ɼ��� ������� �ڵ����� ������ �ݴ´�.
+/** @brief    tcp 소켓을 통해 데이타를 전송한다.
+    @param    obj     폴객체 포인터
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
+    @remark   에러에 대한 처리를 해야한다.
+              tcp_close( obj ) 를 호출하여 접속을 끊는 방법이 일반적이다.
+              BF_POLICY_AUTO_CLOSE 옵션이 있을경우 자동으로 소켓을 닫는다.
 *///----------------------------------------------------------------------------
 int  tcp_write( poll_obj_t *obj, char *buf, int len )
 {
@@ -692,7 +692,7 @@ int  tcp_write( poll_obj_t *obj, char *buf, int len )
 
 #ifdef EMBEDDED_LINUX
 
-    // NON ���� �ɼ��� �ִٸ�
+    // NON 블럭 옵션이 있다면
     if ( bf_policy & BF_POLICY_WRITE_NONBLOCK )
     {
 		wrcnt = send( obj->fd, buf, len, MSG_DONTWAIT);
@@ -718,7 +718,7 @@ int  tcp_write( poll_obj_t *obj, char *buf, int len )
 	}
 	else
 	{
-		// ��å�� ���� ������ �Ѵ�.
+		// 정책에 대한 결정을 한다.
 		tcp = (tcp_priv_t *)obj->priv;
 		if ( tcp->sock_type  == SOCK_TYPE_SERVER_CLIENT )
 		{
@@ -733,8 +733,8 @@ int  tcp_write( poll_obj_t *obj, char *buf, int len )
 }
 #ifdef _USE_SEND_THREAD_	
 //------------------------------------------------------------------------------
-/** @brief    ���� �������Լ��̴�.
-    @param    obj  ����ü ������
+/** @brief    전송 쓰레드함수이다.
+    @param    obj  폴객체 포인터
     @return   
 *///----------------------------------------------------------------------------
 static void	*thread_write_func( poll_obj_t *obj )
@@ -760,17 +760,17 @@ static void	*thread_write_func( poll_obj_t *obj )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    �����带 �����Ͽ� ����Ÿ�� �����Ѵ�.
-    @param    obj     ����ü ������
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
+/** @brief    쓰레드를 생성하여 데이타를 전송한다.
+    @param    obj     폴객체 포인터
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  tcp_write_thread( poll_obj_t *obj, char *buf, int len )
 {
-    obj = obj;                                                                  // jwjw: warning�� ���ϱ� ����
-    buf = buf;                                                                  // jwjw: warning�� ���ϱ� ����
-    len = len;                                                                  // jwjw: warning�� ���ϱ� ����
+    obj = obj;                                                                  // jwjw: warning을 피하기 위해
+    buf = buf;                                                                  // jwjw: warning을 피하기 위해
+    len = len;                                                                  // jwjw: warning을 피하기 위해
         
 #ifdef _USE_SEND_THREAD_	
 	tcp_priv_t *tcp;
@@ -779,10 +779,10 @@ int  tcp_write_thread( poll_obj_t *obj, char *buf, int len )
 
 	pthread_mutex_lock( &tcp->mutex_send );
 	
-	// �������� �����尡 ��� �ִ°�?
+	// 전송중인 쓰레드가 살아 있는가?
 	if ( 0 == tcp->send_cnt )
 	{
-		// ������ ũ�Ⱑ �۴ٸ� �� �Ҵ��Ѵ�.
+		// 버퍼의 크기가 작다면 재 할당한다.
 		if ( len > tcp->send_buf_len )
 		{
 			if ( tcp->send_buf ) free( tcp->send_buf );
@@ -794,17 +794,17 @@ int  tcp_write_thread( poll_obj_t *obj, char *buf, int len )
 		tcp->send_cnt = len;
 		memcpy( tcp->send_buf, buf, tcp->send_cnt );
 		
-		// ������ ����
+		// 쓰레드 생성
 		{
 			pthread_t	   thr_id;
 			pthread_attr_t thr_attributes;
 			int		       thr_status;
     		
-			// ������ ������ ���μ����� �и�
+			// 쓰레드 생성시 프로세스와 분리
 			pthread_attr_init( &thr_attributes );
 			pthread_attr_setdetachstate( &thr_attributes, PTHREAD_CREATE_DETACHED );
     		
-			// ������ ����
+			// 쓰레드 생성
 			thr_status = pthread_create( &thr_id, &thr_attributes, thread_write_func, (void *)obj );
 			if ( thr_status != 0 ) 
 			{
@@ -837,13 +837,13 @@ int  tcp_write_thread( poll_obj_t *obj, char *buf, int len )
 #endif
 
 //------------------------------------------------------------------------------
-/** @brief    tcp ������ ���� ����Ÿ�� �д´�.
-    @param    obj     ����ü ������
-    @param    len     ������ ����
-    @return   ���۵� ����Ÿ ����
-    @remark   ������ ���� ó���� �ؾ��Ѵ�.
-              tcp_close( obj ) �� ȣ���Ͽ� ������ ���� ����� �Ϲ����̴�.
-              BF_POLICY_AUTO_CLOSE �ɼ��� ������� �ڵ����� ������ �ݴ´�.
+/** @brief    tcp 소켓을 통해 데이타를 읽는다.
+    @param    obj     폴객체 포인터
+    @param    len     버퍼의 길이
+    @return   전송된 데이타 개수
+    @remark   에러에 대한 처리를 해야한다.
+              tcp_close( obj ) 를 호출하여 접속을 끊는 방법이 일반적이다.
+              BF_POLICY_AUTO_CLOSE 옵션이 있을경우 자동으로 소켓을 닫는다.
 *///----------------------------------------------------------------------------
 int  tcp_read( poll_obj_t *obj, char *buf, int len )
 {
@@ -891,7 +891,7 @@ int  tcp_read( poll_obj_t *obj, char *buf, int len )
 		}
 	}
 	
-	// ��å�� ���� ������ �Ѵ�.
+	// 정책에 대한 결정을 한다.
 	tcp = (tcp_priv_t *)obj->priv;
 	if ( tcp->sock_type  == SOCK_TYPE_SERVER_CLIENT )
 	{
@@ -904,17 +904,17 @@ int  tcp_read( poll_obj_t *obj, char *buf, int len )
 	return rdcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    �����ð��� �������� ȣ��Ǹ� tcp ��å�� ���� ���� �����Ѵ�.
-    @remark   BF_POLICY_CLOSE_TIMEOUT, BF_POLICY_CLOSE_OFF_LINK �ɼ��� ����Ѵٸ�
-              ���Լ��� �ڵ� ��ϵǾ� ����ȴ�.
-              link-off ó���� ���� �ʴ´�.
-    @return   ���ϰ��� �ǹ̾���
+/** @brief    일정시간이 지난을때 호출되며 tcp 정책에 의해 일을 수행한다.
+    @remark   BF_POLICY_CLOSE_TIMEOUT, BF_POLICY_CLOSE_OFF_LINK 옵션을 사용한다면
+              이함수가 자동 등록되어 수행된다.
+              link-off 처리는 되지 않는다.
+    @return   리턴값은 의미없다
 *///----------------------------------------------------------------------------
 int  tcp_check_time( poll_obj_t *obj )
 {
 	tcp_priv_t *tcp;
 	
-	// Ÿ�ӿ��� ó��
+	// 타임오버 처리
 	if 	( bf_policy & BF_POLICY_CLOSE_TIMEOUT ) 
 	{
 		tcp = (tcp_priv_t *)obj->priv;
@@ -926,7 +926,7 @@ int  tcp_check_time( poll_obj_t *obj )
 		}
 	}
 
-	// ��ũ off ó��
+	// 링크 off 처리
 	if 	( bf_policy & BF_POLICY_CLOSE_OFF_LINK ) 
 	{
 		//
@@ -936,9 +936,9 @@ int  tcp_check_time( poll_obj_t *obj )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tcp �������� ���ӵ� ������ ������ ��´�.
-    @param    obj_server    tcp ���� ����ü ������
-    @return   ���ӵ� Ŭ���̾�Ʈ ����
+/** @brief    tcp 서버에서 접속된 소켓의 개수를 얻는다.
+    @param    obj_server    tcp 서버 폴객체 포인터
+    @return   접속된 클라이언트 개수
 *///----------------------------------------------------------------------------
 int tcp_client_count( poll_obj_t *obj_server )
 {
@@ -953,10 +953,10 @@ int tcp_client_count( poll_obj_t *obj_server )
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief    tcp �������� �ε����� ���ӵ� ���� �� ��ü�� ��´�.
-    @param    obj_server   tcp ���� ����ü ������
-    @param    idx          ���
-    @return   Ŭ���̾�Ʈ ����ü
+/** @brief    tcp 서버에서 인덱스로 접속된 소켓 폴 객체를 얻는다.
+    @param    obj_server   tcp 서버 폴객체 포인터
+    @param    idx          인덱스
+    @return   클라이언트 폴객체
 *///----------------------------------------------------------------------------
 poll_obj_t *tcp_get_client( poll_obj_t *obj_server, int idx )
 {
@@ -974,9 +974,9 @@ poll_obj_t *tcp_get_client( poll_obj_t *obj_server, int idx )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    tcp Ŭ���̾�Ʈ ����ü���� ������ü�� ��´�.
-    @param    obj_client   tcp Ŭ���̾�Ʈ ����ü ������
-    @return   ���� ����ü
+/** @brief    tcp 클라이언트 폴객체에서 서버객체를 얻는다.
+    @param    obj_client   tcp 클라이언트 폴객체 포인터
+    @return   서버 폴객체
 *///----------------------------------------------------------------------------
 poll_obj_t *tcp_get_server( poll_obj_t *obj_client )
 {
@@ -987,9 +987,9 @@ poll_obj_t *tcp_get_server( poll_obj_t *obj_client )
 	return tcp->obj_server;
 }
 //------------------------------------------------------------------------------
-/** @brief    ����� ������� IP ���ڿ��� ��´�.
-    @param    obj_client   tcp Ŭ���̾�Ʈ ����ü ������
-    @return   ����� ip�� ���ڿ��� �����ش�. ������ NULL
+/** @brief    연결된 상대편의 IP 문자열을 얻는다.
+    @param    obj_client   tcp 클라이언트 폴객체 포인터
+    @return   연결된 ip를 문자열로 돌려준다. 없으면 NULL
 *///----------------------------------------------------------------------------
 const char *tcp_peer_ip_string( poll_obj_t *obj_client )
 {
diff --git a/app/app-prime-modbus/lib/fanet/tipc.c b/app/app-prime-modbus/lib/fanet/tipc.c
index 1e36f6b..230af12 100644
--- a/app/app-prime-modbus/lib/fanet/tipc.c
+++ b/app/app-prime-modbus/lib/fanet/tipc.c
@@ -30,22 +30,22 @@
 #include <pollmng.h>
 #include <tipc.h>
 
-/// tcp ������ ���¸� �����Ѵ�.
+/// tcp 소켓의 형태를 구분한다.
 #define  SOCK_TYPE_CLIENT          0
 #define  SOCK_TYPE_SERVER          1
 #define  SOCK_TYPE_SERVER_CLIENT   2
 
-/// tcp ���� ����ü
+/// tcp 개별 구조체
 typedef struct {
 
     int   type;
     int   inst;
 
-    // ������ ����
+    // 서버용 정보
     tlist *client_list;
     int    client_max;
     int    sock_type;
-    poll_obj_t *obj_server;   // �������� �и��� Ŭ���̾�Ʈ�� ����
+    poll_obj_t *obj_server;   // 서버에서 분리된 클라이언트를 위해
 } tipc_priv_t;
 
 
@@ -79,7 +79,7 @@ poll_obj_t  *tipc_open_server( int type, int inst, int client_max)
         return NULL;
     }
 
-    // tcp ���� ������ �����Ѵ�.
+    // tcp 만의 정보를 설정한다.
     tipc_priv_t *tipc   = (tipc_priv_t *)malloc( sizeof(tipc_priv_t) );
 
     tipc->sock_type     = SOCK_TYPE_SERVER;
@@ -88,7 +88,7 @@ poll_obj_t  *tipc_open_server( int type, int inst, int client_max)
     tipc->client_max    = client_max;
     tipc->client_list   = tlist_create();
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     poll_obj_t *obj = poll_add( sockfd );
     obj->type = STYP_TIPC;
     obj->priv = (void *)tipc;
@@ -129,7 +129,7 @@ poll_obj_t  *tipc_open_client( int type, int inst )
     tipc->type          = type;
     tipc->inst          = inst;
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     obj = poll_add( sockfd );
     obj->type = STYP_TIPC;
     obj->priv = (void *)tipc;
@@ -138,14 +138,14 @@ poll_obj_t  *tipc_open_client( int type, int inst )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tcp ������ close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    tcp 소켓을 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void tipc_close( poll_obj_t *obj )
 {
     tipc_priv_t *tipc, *server_tipc;
 
-    if ( obj->on_disconnect ){                          // ���� �������� ����ڿ��� �˸���.
+    if ( obj->on_disconnect ){                          // 소켓 끊어짐을 사용자에게 알린다.
         obj->on_disconnect( obj );
     }
 
@@ -154,14 +154,14 @@ void tipc_close( poll_obj_t *obj )
     switch( tipc->sock_type )
     {
     case SOCK_TYPE_SERVER_CLIENT :
-        // ������ �����ϴ� Ŭ���̾�Ʈ�� ����Ʈ���� ����
+        // 서버가 관리하는 클라이언트를 리스트에서 삭제
         server_tipc = (tipc_priv_t *)(tipc->obj_server->priv);
         if ( server_tipc  ){
             tlist_remove( server_tipc->client_list, obj );
         }
         break;
     case SOCK_TYPE_SERVER :
-        tlist_free( tipc->client_list );                        // ������ �����ϴ� Ŭ���̾�Ʈ�� server_tipc �� ��� NULL �� �����.
+        tlist_free( tipc->client_list );                        // 서버가 관리하는 클라이언트의 server_tipc 를 모두 NULL 로 만든다.
         break;
     }
 
@@ -177,7 +177,7 @@ void tipc_close( poll_obj_t *obj )
 
 static poll_obj_t  *tipc_connect_client( poll_obj_t *obj_server, int sockfd)
 {
-    // Ŭ���̾�Ʈ ������ ������ �ľ��Ѵ�.
+    // 클라이언트 접속의 개수를 파악한다.
     tipc_priv_t *server_tipc = (tipc_priv_t *)obj_server->priv;
     if ( tlist_getcount(server_tipc->client_list) >= server_tipc->client_max ){
         shutdown(sockfd, SHUT_RDWR);
@@ -186,16 +186,16 @@ static poll_obj_t  *tipc_connect_client( poll_obj_t *obj_server, int sockfd)
         return NULL;
     }
 
-    // tipc ���� ������ �����Ѵ�.
+    // tipc 만의 정보를 설정한다.
     tipc_priv_t *tipc = (tipc_priv_t *)malloc( sizeof(tipc_priv_t) );
 
     tipc->sock_type    = SOCK_TYPE_SERVER_CLIENT;
-    tipc->obj_server   = obj_server; // Ŭ���̾�Ʈ ������ �Ҵ��� ��������
+    tipc->obj_server   = obj_server; // 클라이언트 소켓을 할당한 서버정보
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     poll_obj_t *obj = poll_add( sockfd );
     if ( obj ){
-        // ������ ���ӵ� Ŭ���̾�Ʈ�� ����Ʈ�� ���
+        // 서버에 접속된 클라이언트를 리스트에 등록
         tlist_add( server_tipc->client_list, obj );
 
         obj->type = STYP_TIPC;
@@ -222,14 +222,14 @@ poll_obj_t  *tipc_accept_client( poll_obj_t *obj_server )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tipc ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    obj     ����ü ������
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
-    @remark   ������ ���� ó���� �ؾ��Ѵ�.
-              tipc_close( obj ) �� ȣ���Ͽ� ������ ���� ����� �Ϲ����̴�.
-              BF_POLICY_AUTO_CLOSE �ɼ��� ������� �ڵ����� ������ �ݴ´�.
+/** @brief    tipc 소켓을 통해 데이타를 전송한다.
+    @param    obj     폴객체 포인터
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
+    @remark   에러에 대한 처리를 해야한다.
+              tipc_close( obj ) 를 호출하여 접속을 끊는 방법이 일반적이다.
+              BF_POLICY_AUTO_CLOSE 옵션이 있을경우 자동으로 소켓을 닫는다.
 *///----------------------------------------------------------------------------
 int  tipc_write( poll_obj_t *obj, char *buf, int len )
 {
@@ -244,13 +244,13 @@ int  tipc_write( poll_obj_t *obj, char *buf, int len )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tipc ������ ���� ����Ÿ�� �д´�.
-    @param    obj     ����ü ������
-    @param    len     ������ ����
-    @return   ���۵� ����Ÿ ����
-    @remark   ������ ���� ó���� �ؾ��Ѵ�.
-              tipc_close( obj ) �� ȣ���Ͽ� ������ ���� ����� �Ϲ����̴�.
-              BF_POLICY_AUTO_CLOSE �ɼ��� ������� �ڵ����� ������ �ݴ´�.
+/** @brief    tipc 소켓을 통해 데이타를 읽는다.
+    @param    obj     폴객체 포인터
+    @param    len     버퍼의 길이
+    @return   전송된 데이타 개수
+    @remark   에러에 대한 처리를 해야한다.
+              tipc_close( obj ) 를 호출하여 접속을 끊는 방법이 일반적이다.
+              BF_POLICY_AUTO_CLOSE 옵션이 있을경우 자동으로 소켓을 닫는다.
 *///----------------------------------------------------------------------------
 int  tipc_read( poll_obj_t *obj, char *buf, int len )
 {
@@ -290,7 +290,7 @@ int  tipc_read( poll_obj_t *obj, char *buf, int len )
         }
     }
 
-    // ��å�� ���� ������ �Ѵ�.
+    // 정책에 대한 결정을 한다.
     tipc_priv_t *tipc = (tipc_priv_t *)obj->priv;
     if ( tipc->sock_type  == SOCK_TYPE_SERVER_CLIENT )
     {
diff --git a/app/app-prime-modbus/lib/fanet/tipc_bcast.c b/app/app-prime-modbus/lib/fanet/tipc_bcast.c
index ae4e6dd..b0af64e 100644
--- a/app/app-prime-modbus/lib/fanet/tipc_bcast.c
+++ b/app/app-prime-modbus/lib/fanet/tipc_bcast.c
@@ -1,8 +1,8 @@
 /**
     @file     tipc_bcast.c
     @date     2015-08-31
-    @author   ��漮 jks@falinux.com
-    @brief    TIPC-DGRAM ������ ����Ͽ� ��Ƽij��Ʈ�� ������ ����� ����Ѵ�.
+    @author   장길석 jks@falinux.com
+    @brief    TIPC-DGRAM 소켓을 사용하여 멀티캐스트가 가능한 통신을 담당한다.
 
     @modify
     @todo
@@ -12,8 +12,8 @@
     @warning
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 
@@ -34,7 +34,7 @@
 
 char desc_tipc_bcast[] = "falinux tipc broadcast ver 0.0.1";
 
-/// tipc_bcast ���� ����ü
+/// tipc_bcast 개별 구조체
 typedef struct {
     int   type;                                                     // server type
     int   lower;                                                    // port lower
@@ -42,9 +42,9 @@ typedef struct {
 } tipc_bcast_priv_t;
 
 //------------------------------------------------------------------------------
-/** @brief    tipc_bcast ������ �������·� open �Ѵ�.
-    @param    port  ��Ʈ��ȣ
-    @return   poll_obj_t ������ ������
+/** @brief    tipc_bcast 소켓을 서버형태로 open 한다.
+    @param    port  포트번호
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 
 poll_obj_t  *tipc_bcast_open( int type, int lower, int upper )
@@ -70,7 +70,7 @@ poll_obj_t  *tipc_bcast_open( int type, int lower, int upper )
     tipc_bcast_priv_t *tipc_bcast;
     poll_obj_t *obj;
 
-    // tipc_bcast ���� ������ �����Ѵ�.
+    // tipc_bcast 만의 정보를 설정한다.
     tipc_bcast = (tipc_bcast_priv_t *)malloc( sizeof(tipc_bcast_priv_t) );
     tipc_bcast->type        = type;
     tipc_bcast->lower       = lower;
@@ -84,8 +84,8 @@ poll_obj_t  *tipc_bcast_open( int type, int lower, int upper )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tipc_bcast ������ close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    tipc_bcast 소켓을 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void tipc_bcast_close( poll_obj_t *obj )
 {
@@ -98,13 +98,13 @@ void tipc_bcast_close( poll_obj_t *obj )
     poll_delete( obj );
 }
 //------------------------------------------------------------------------------
-/** @brief    tipc_bcast ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    obj     ����ü ������
-    @param    host    ���� IP �� ȣ��Ʈ�̸� ���ڿ�������
-    @param    port    ���� ��Ʈ��ȣ
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
+/** @brief    tipc_bcast 소켓을 통해 데이타를 전송한다.
+    @param    obj     폴객체 포인터
+    @param    host    상대방 IP 나 호스트이름 문자열포인터
+    @param    port    상대방 포트번호
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  tipc_bcast_write( poll_obj_t *obj, int type, int lower, int upper, char *buf, int len )
 {
@@ -122,10 +122,10 @@ int  tipc_bcast_write( poll_obj_t *obj, int type, int lower, int upper, char *bu
     return wrcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    tipc_bcast ������ ���� ����Ÿ�� �д´�.
-    @param    obj     ����ü ������
-    @param    len     ������ ����
-    @return   ���۵� ����Ÿ ����
+/** @brief    tipc_bcast 소켓을 통해 데이타를 읽는다.
+    @param    obj     폴객체 포인터
+    @param    len     버퍼의 길이
+    @return   전송된 데이타 개수
 *///----------------------------------------------------------------------------
 int  tipc_bcast_read( poll_obj_t *obj, char *buf, int len )
 {
diff --git a/app/app-prime-modbus/lib/fanet/tipc_stream.c b/app/app-prime-modbus/lib/fanet/tipc_stream.c
index 53f50e3..99426a4 100644
--- a/app/app-prime-modbus/lib/fanet/tipc_stream.c
+++ b/app/app-prime-modbus/lib/fanet/tipc_stream.c
@@ -30,22 +30,22 @@
 #include <pollmng.h>
 #include <tipc.h>
 
-/// tcp ������ ���¸� �����Ѵ�.
+/// tcp 소켓의 형태를 구분한다.
 #define  SOCK_TYPE_CLIENT          0
 #define  SOCK_TYPE_SERVER          1
 #define  SOCK_TYPE_SERVER_CLIENT   2
 
-/// tcp ���� ����ü
+/// tcp 개별 구조체
 typedef struct {
 
     int          type;
     int          inst;
 
-    // ������ ����
+    // 서버용 정보
     tlist       *client_list;
     int          client_max;
     int          sock_type;
-    poll_obj_t  *obj_server;                                    // �������� �и��� Ŭ���̾�Ʈ�� ����
+    poll_obj_t  *obj_server;                                    // 서버에서 분리된 클라이언트를 위해
 } tipc_stream_priv_t;
 
 
@@ -79,7 +79,7 @@ poll_obj_t  *tipc_stream_open_server( int type, int inst, int client_max)
         return NULL;
     }
 
-    // tcp ���� ������ �����Ѵ�.
+    // tcp 만의 정보를 설정한다.
     tipc_stream_priv_t *tipc   = (tipc_stream_priv_t *)malloc( sizeof(tipc_stream_priv_t) );
 
     tipc->sock_type     = SOCK_TYPE_SERVER;
@@ -88,7 +88,7 @@ poll_obj_t  *tipc_stream_open_server( int type, int inst, int client_max)
     tipc->client_max    = client_max;
     tipc->client_list   = tlist_create();
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     poll_obj_t *obj = poll_add( sockfd );
     obj->type = STYP_TIPC;
     obj->priv = (void *)tipc;
@@ -129,7 +129,7 @@ poll_obj_t  *tipc_stream_open_client( int type, int inst )
     tipc->type          = type;
     tipc->inst          = inst;
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     obj = poll_add( sockfd );
     obj->type = STYP_TIPC;
     obj->priv = (void *)tipc;
@@ -138,14 +138,14 @@ poll_obj_t  *tipc_stream_open_client( int type, int inst )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tcp ������ close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    tcp 소켓을 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void tipc_stream_close( poll_obj_t *obj )
 {
     tipc_stream_priv_t *tipc, *server_tipc;
 
-    if ( obj->on_disconnect ){                          // ���� �������� ����ڿ��� �˸���.
+    if ( obj->on_disconnect ){                          // 소켓 끊어짐을 사용자에게 알린다.
         obj->on_disconnect( obj );
     }
     tipc = (tipc_stream_priv_t *)obj->priv;
@@ -153,14 +153,14 @@ void tipc_stream_close( poll_obj_t *obj )
     switch( tipc->sock_type )
     {
     case SOCK_TYPE_SERVER_CLIENT :
-        // ������ �����ϴ� Ŭ���̾�Ʈ�� ����Ʈ���� ����
+        // 서버가 관리하는 클라이언트를 리스트에서 삭제
         server_tipc = (tipc_stream_priv_t *)(tipc->obj_server->priv);
         if ( server_tipc  ){
             tlist_remove( server_tipc->client_list, obj );
         }
         break;
     case SOCK_TYPE_SERVER :
-        tlist_free( tipc->client_list );                        // ������ �����ϴ� Ŭ���̾�Ʈ�� server_tipc �� ��� NULL �� �����.
+        tlist_free( tipc->client_list );                        // 서버가 관리하는 클라이언트의 server_tipc 를 모두 NULL 로 만든다.
         break;
     }
 
@@ -176,7 +176,7 @@ void tipc_stream_close( poll_obj_t *obj )
 
 static poll_obj_t  *tipc_stream_connect_client( poll_obj_t *obj_server, int sockfd)
 {
-    // Ŭ���̾�Ʈ ������ ������ �ľ��Ѵ�.
+    // 클라이언트 접속의 개수를 파악한다.
     tipc_stream_priv_t *server_tipc = (tipc_stream_priv_t *)obj_server->priv;
     if ( tlist_getcount(server_tipc->client_list) >= server_tipc->client_max ){
         shutdown(sockfd, SHUT_RDWR);
@@ -185,16 +185,16 @@ static poll_obj_t  *tipc_stream_connect_client( poll_obj_t *obj_server, int sock
         return NULL;
     }
 
-    // tipc ���� ������ �����Ѵ�.
+    // tipc 만의 정보를 설정한다.
     tipc_stream_priv_t *tipc = (tipc_stream_priv_t *)malloc( sizeof(tipc_stream_priv_t) );
 
     tipc->sock_type    = SOCK_TYPE_SERVER_CLIENT;
-    tipc->obj_server   = obj_server; // Ŭ���̾�Ʈ ������ �Ҵ��� ��������
+    tipc->obj_server   = obj_server; // 클라이언트 소켓을 할당한 서버정보
 
-    // ��������ü�� ����Ѵ�.
+    // 폴관리객체에 등록한다.
     poll_obj_t *obj = poll_add( sockfd );
     if ( obj ){
-        // ������ ���ӵ� Ŭ���̾�Ʈ�� ����Ʈ�� ���
+        // 서버에 접속된 클라이언트를 리스트에 등록
         tlist_add( server_tipc->client_list, obj );
 
         obj->type = STYP_TIPC;
@@ -221,14 +221,14 @@ poll_obj_t  *tipc_stream_accept_client( poll_obj_t *obj_server )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tipc ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    obj     ����ü ������
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
-    @remark   ������ ���� ó���� �ؾ��Ѵ�.
-              tipc_stream_close( obj ) �� ȣ���Ͽ� ������ ���� ����� �Ϲ����̴�.
-              BF_POLICY_AUTO_CLOSE �ɼ��� ������� �ڵ����� ������ �ݴ´�.
+/** @brief    tipc 소켓을 통해 데이타를 전송한다.
+    @param    obj     폴객체 포인터
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
+    @remark   에러에 대한 처리를 해야한다.
+              tipc_stream_close( obj ) 를 호출하여 접속을 끊는 방법이 일반적이다.
+              BF_POLICY_AUTO_CLOSE 옵션이 있을경우 자동으로 소켓을 닫는다.
 *///----------------------------------------------------------------------------
 int  tipc_stream_write( poll_obj_t *obj, char *buf, int len )
 {
@@ -243,13 +243,13 @@ int  tipc_stream_write( poll_obj_t *obj, char *buf, int len )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    tipc ������ ���� ����Ÿ�� �д´�.
-    @param    obj     ����ü ������
-    @param    len     ������ ����
-    @return   ���۵� ����Ÿ ����
-    @remark   ������ ���� ó���� �ؾ��Ѵ�.
-              tipc_stream_close( obj ) �� ȣ���Ͽ� ������ ���� ����� �Ϲ����̴�.
-              BF_POLICY_AUTO_CLOSE �ɼ��� ������� �ڵ����� ������ �ݴ´�.
+/** @brief    tipc 소켓을 통해 데이타를 읽는다.
+    @param    obj     폴객체 포인터
+    @param    len     버퍼의 길이
+    @return   전송된 데이타 개수
+    @remark   에러에 대한 처리를 해야한다.
+              tipc_stream_close( obj ) 를 호출하여 접속을 끊는 방법이 일반적이다.
+              BF_POLICY_AUTO_CLOSE 옵션이 있을경우 자동으로 소켓을 닫는다.
 *///----------------------------------------------------------------------------
 int  tipc_stream_read( poll_obj_t *obj, char *buf, int len )
 {
diff --git a/app/app-prime-modbus/lib/fanet/uart-packet-dle.c b/app/app-prime-modbus/lib/fanet/uart-packet-dle.c
index 59055d3..c634477 100644
--- a/app/app-prime-modbus/lib/fanet/uart-packet-dle.c
+++ b/app/app-prime-modbus/lib/fanet/uart-packet-dle.c
@@ -1,8 +1,8 @@
 /**    
     @file     uart-packet-dle.h
     @date     2010-09-17
-    @author   ����� freefrug@falinux.com
-    @brief    uart ������¸� �м��ϰ� �����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    uart 통신형태를 분석하고 관리한다.
               
               dle / stx / data(crc16) / dle / etx
 
@@ -14,8 +14,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 #include <stdio.h>
@@ -39,10 +39,10 @@ char desc_uart_packet_dle[] = "falinux uart-packet-dle ver 0.1.0";
 #define  TRACE()  printf( ".. %s(%d)\n", __FUNCTION__,__LINE__ )
 
 //------------------------------------------------------------------------------
-/** @brief    �⺻ crc16 �Լ�
-    @param    buf    ����Ÿ����
-    @param    count  ����Ÿ����
-    @return   ����� ����Ÿ ����
+/** @brief    기본 crc16 함수
+    @param    buf    데이타버퍼
+    @param    count  데이타개수
+    @return   복사된 데이타 길이
 *///----------------------------------------------------------------------------
 static unsigned short upacket_dle_def_make_crc16( char *buf, int count )
 {
@@ -50,9 +50,9 @@ static unsigned short upacket_dle_def_make_crc16( char *buf, int count )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ���� ��ü ����
-    @param    obj  uart ����ü ������
-    @param    callback  ������ ����������� ȣ��Ǵ� �Լ�
+/** @brief    uart 패켓 관린 객체 생성
+    @param    obj  uart 폴객체 포인터
+    @param    callback  패켓이 만들어졌을대 호출되는 함수
 *///----------------------------------------------------------------------------
 void  upacket_dle_create( poll_obj_t *obj, on_uart_packet_t callback )
 {
@@ -73,8 +73,8 @@ void  upacket_dle_create( poll_obj_t *obj, on_uart_packet_t callback )
 	obj->user = (void *)up;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ���� ��ü ����
-    @param    obj  uart ����ü ������
+/** @brief    uart 패켓 관린 객체 해제
+    @param    obj  uart 폴객체 포인터
 *///----------------------------------------------------------------------------
 void  upacket_dle_free( poll_obj_t *obj )
 {
@@ -82,8 +82,8 @@ void  upacket_dle_free( poll_obj_t *obj )
 	obj->user = NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ���Ϻм� Ŭ����
-    @param    obj  uart ����ü ������
+/** @brief    uart 패켓분석 클리어
+    @param    obj  uart 폴객체 포인터
 *///----------------------------------------------------------------------------
 void  upacket_dle_clear( uart_packet_analysis_t *up )
 {
@@ -94,16 +94,16 @@ void  upacket_dle_clear( uart_packet_analysis_t *up )
 	up->error    = 0;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ������ �м��ϰ� ������ ����� ���� �ݹ��Լ��� ȣ���Ѵ�.
-    @param    obj  uart ����ü ������
-    @return   ����� ������ ����
+/** @brief    uart 패켓을 분석하고 패켓이 만들어 지면 콜백함수를 호출한다.
+    @param    obj  uart 폴객체 포인터
+    @return   사용한 버퍼의 개수
 *///----------------------------------------------------------------------------
 static int  upacket_dle_analysis( uart_packet_analysis_t *up, char *buf, int count )
 {
 	char  *wp, uc;
 	int    make_packet = 0;
 
-	// ����Ÿ ����
+	// 데이타 저장
 	void  data_put( uart_packet_analysis_t *up, char data )
 	{
 		up->data_buf[up->an_cnt++] = data;
@@ -161,7 +161,7 @@ static int  upacket_dle_analysis( uart_packet_analysis_t *up, char *buf, int cou
 		{
 			unsigned short crc_calc, crc_recv;
 
-			up->an_cnt -= 2;  // crc ����
+			up->an_cnt -= 2;  // crc 제거
 			
 			crc_recv = up->data_buf[up->an_cnt]<<8 | up->data_buf[up->an_cnt+1];
 			crc_calc = up->make_crc16( up->data_buf, up->an_cnt );
@@ -184,11 +184,11 @@ static int  upacket_dle_analysis( uart_packet_analysis_t *up, char *buf, int cou
 	return  wp - buf;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ����Ÿ�� �о� ������ �м��� �� ������ ���������
-              ��ϵ� �ݹ��Լ��� ȣ���Ѵ�.
-    @param    obj  ����ü ������
-    @param    callback  ������ ����������� ȣ��Ǵ� �Լ�, NULL �̸� ���� �ݹ��Լ��� �����ȴ�.
-    @return   ���� ����Ÿ ����
+/** @brief    uart 에서 데이타를 읽어 패켓을 분석한 후 패켓이 만들어지면
+              등록된 콜백함수를 호출한다.
+    @param    obj  폴객체 포인터
+    @param    callback  패켓이 만들어졌을대 호출되는 함수, NULL 이면 기존 콜백함수가 유지된다.
+    @return   받은 데이타 개수
 *///----------------------------------------------------------------------------
 int  upacket_dle_read_from_uart( poll_obj_t *obj, on_uart_packet_t callback )
 {
@@ -202,14 +202,14 @@ int  upacket_dle_read_from_uart( poll_obj_t *obj, on_uart_packet_t callback )
 
 	up = (uart_packet_analysis_t *)obj->user;
 
-	// �ݹ��Լ� ���
+	// 콜백함수 등록
 	save_cb = up->on_packet;
 	if ( callback ) 
 	{
 		up->on_packet = callback;
 	}
 
-	// ���� �м�
+	// 패켓 분석
 	wp = buf;
 	while( 0 < count )
 	{
@@ -219,18 +219,18 @@ int  upacket_dle_read_from_uart( poll_obj_t *obj, on_uart_packet_t callback )
 		
 	}
 
-	// �ݹ��Լ� ����
+	// 콜백함수 복귀
 	up->on_packet = save_cb;
 
 	return rdcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ������ �м��ϰ� ������ ����� ���� �ݹ��Լ��� ȣ���Ѵ�.
-    @param    up    upacket ���� ����ü
-    @param    snd_buf   ���� ���۵� ����, �̰��� ����Ÿ�� ���������.
-    @param    src_buf   ����Ÿ ����
-    @param    src_cnt   ����Ÿ ������ ����
-    @return   ������� ������ ����
+/** @brief    uart 패켓을 분석하고 패켓이 만들어 지면 콜백함수를 호출한다.
+    @param    up    upacket 관리 구조체
+    @param    snd_buf   실제 전송될 버퍼, 이곳에 데이타가 만들어진다.
+    @param    src_buf   데이타 버퍼
+    @param    src_cnt   데이타 버퍼의 개수
+    @return   만들어진 버퍼의 개수
 *///----------------------------------------------------------------------------
 static int  upacket_dle_make_packet( uart_packet_analysis_t *up, char *snd_buf, char *src_buf, int src_cnt )
 {
@@ -275,11 +275,11 @@ static int  upacket_dle_make_packet( uart_packet_analysis_t *up, char *snd_buf,
 	return count;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart �� ������ ����� �����Ѵ�.
-    @param    obj  ����ü ������
-    @param    data_buf   ������ ����Ÿ ����
-    @param    count      ������ ����Ÿ ������ ����
-    @return   ������ ����Ÿ ����
+/** @brief    uart 에 패켓을 만들어 전송한다.
+    @param    obj  폴객체 포인터
+    @param    data_buf   전송할 데이타 버퍼
+    @param    count      전송할 데이타 버퍼의 개수
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  upacket_dle_write_to_uart( poll_obj_t *obj, const char *data_buf, int count  )
 {
diff --git a/app/app-prime-modbus/lib/fanet/uart.c b/app/app-prime-modbus/lib/fanet/uart.c
index 639ff2e..6613815 100644
--- a/app/app-prime-modbus/lib/fanet/uart.c
+++ b/app/app-prime-modbus/lib/fanet/uart.c
@@ -1,11 +1,11 @@
 /**    
     @file     uart.c
     @date     2009-03-19
-    @author   ����� freefrug@falinux.com
-    @brief    uart �� ����� ����� ����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    uart 를 사용한 통신을 담당한다.
 
     @modify   
-              2010-08-18 (��漮) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
+              2010-08-18 (장길석) mingw와 함께 사용할 수 있는 코드 추가
     @todo    
     @bug     
     @remark   
@@ -13,11 +13,11 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -48,10 +48,10 @@
 char desc_uart[] = "falinux uart ver 0.2.1";
 
 
-/// uart ���� ����ü
+/// uart 개별 구조체
 typedef struct {
 
-	// ���۰���
+	// 버퍼관리
 	char  recv_fifo[UART_RECV_FIFO_MAX];	
 	int   fifo_rcnt;
 
@@ -60,9 +60,9 @@ typedef struct {
 } uart_priv_t;
 
 //------------------------------------------------------------------------------
-/** @brief    uart �� open �Ѵ�.
-    @param    fname  ���ڿ� �����̸�
-    @return   poll_obj_t ������ ������
+/** @brief    uart 을 open 한다.
+    @param    fname  문자열 파일이름
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *uart_open( char *dev_name, int baud, char parity, int stop_bit)
 {
@@ -74,21 +74,21 @@ poll_obj_t  *uart_open( char *dev_name, int baud, char parity, int stop_bit)
 
 	struct termios  newtio;
 
-	// �ø�����Ʈ�� ����.
-	// parity 'T' �̸� �͹̳��������� ����.
+	// 시리얼포트를 연다.
+	// parity 'T' 이면 터미널형식으로 연다.
 	if ( 'T' == parity ) fd = open( dev_name, O_RDWR  );
 	else  
 		fd = open( dev_name, O_RDWR | O_NOCTTY );
 	
 	if ( fd < 0 ) 
 	{
-		// ȭ�� ���� ����
+		// 화일 열기 실패
 		printf( "device open fail %s : ", dev_name );
 		perror("");
 		return NULL;
 	}
     	
-	// �ø��� ��Ʈ ȯ���� �����Ѵ�.
+	// 시리얼 포트 환경을 설정한다.
 	memset(&newtio, 0, sizeof(newtio) );
 	
 	// data 8bit
@@ -111,7 +111,7 @@ poll_obj_t  *uart_open( char *dev_name, int baud, char parity, int stop_bit)
 	}
 
 	// parity	
-	switch( parity | 0x20 ) // �ҹ��� ó��
+	switch( parity | 0x20 ) // 소문자 처리
 	{
 	case 'o'  : newtio.c_cflag  |= (PARENB |PARODD );  break;
 	case 'e'  : newtio.c_cflag  |= PARENB           ;  break;
@@ -186,7 +186,7 @@ poll_obj_t  *uart_open( char *dev_name, int baud, char parity, int stop_bit)
 
 	COMMTIMEOUTS cto;
 
-    cto.ReadIntervalTimeout         = MAXDWORD;             // �� ���� �־��  1 �� ����Ʈ�� ��� �͵� �̺�Ʈ �߻�
+    cto.ReadIntervalTimeout         = MAXDWORD;             // 이 값을 주어야  1 개 바이트가 들어 와도 이벤트 발생
     cto.ReadTotalTimeoutMultiplier  = 0;
     cto.ReadTotalTimeoutConstant    = 0;
     cto.WriteTotalTimeoutConstant   = 0;
@@ -199,16 +199,16 @@ poll_obj_t  *uart_open( char *dev_name, int baud, char parity, int stop_bit)
 		return NULL;
 	}
 
-    // ���� ����
+    // 버퍼 비우기
     PurgeComm( fd,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
 
 
-    // �̺�Ʈ ����
+    // 이벤트 설정
     SetCommMask( fd,EV_RXCHAR);
 
 #endif
 	
-	// uart ���� ������ �����Ѵ�.
+	// uart 만의 정보를 설정한다.
 	uart = (uart_priv_t *)malloc( sizeof(uart_priv_t) );
 	memset( (void *)uart, 0, sizeof(uart_priv_t) );
 	strcpy( uart->port, dev_name );
@@ -226,11 +226,11 @@ poll_obj_t  *uart_open( char *dev_name, int baud, char parity, int stop_bit)
 	return obj;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart �� �� ��������� open �Ѵ�.
-    @param    fname  ���ڿ� �����̸�
-    @param    fname  ���ڿ� �����̸�
-    @param    fname  ���ڿ� �����̸�
-    @return   poll_obj_t ������ ������
+/** @brief    uart 를 모뎀 제어용으로 open 한다.
+    @param    fname  문자열 파일이름
+    @param    fname  문자열 파일이름
+    @param    fname  문자열 파일이름
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *uart_open_modem( char *dev_name, int baud, char parity )
 {
@@ -243,18 +243,18 @@ poll_obj_t  *uart_open_modem( char *dev_name, int baud, char parity )
 	struct termios  newtio;
 
 	printf( "[%s:%d] \n",__FILE__,__LINE__);
-	// �ø�����Ʈ�� ����.
+	// 시리얼포트를 연다.
 	fd = open( dev_name, O_RDWR | O_NOCTTY );
 	if ( fd < 0 ) 
 	{
-		// ȭ�� ���� ����
+		// 화일 열기 실패
 		printf( "device open fail %s : ", dev_name );
 		perror("");
 		return NULL;
 	}
     	
 	printf( "[%s:%d] \n",__FILE__,__LINE__);
-	// �ø��� ��Ʈ ȯ���� �����Ѵ�.
+	// 시리얼 포트 환경을 설정한다.
 	memset(&newtio, 0, sizeof(newtio) );
 	
 	// data 8bit
@@ -275,7 +275,7 @@ poll_obj_t  *uart_open_modem( char *dev_name, int baud, char parity )
 	}
 
 	// parity	
-	switch( parity | 0x20 ) // �ҹ��� ó��
+	switch( parity | 0x20 ) // 소문자 처리
 	{
 	case 'o'  : newtio.c_cflag  |= (PARENB |PARODD );  break;
 	case 'e'  : newtio.c_cflag  |= PARENB           ;  break;
@@ -295,7 +295,7 @@ poll_obj_t  *uart_open_modem( char *dev_name, int baud, char parity )
 	tcflush  ( fd, TCIFLUSH );
 	tcsetattr( fd, TCSANOW, &newtio );
 	    
-	// uart modem ���� ������ �����Ѵ�.
+	// uart modem 만의 정보를 설정한다.
 	uart = (uart_priv_t *)malloc( sizeof(uart_priv_t) );
 	memset( (void *)uart, 0, sizeof(uart_priv_t) );
 	strcpy( uart->port, dev_name );
@@ -314,8 +314,8 @@ poll_obj_t  *uart_open_modem( char *dev_name, int baud, char parity )
 
 
 //------------------------------------------------------------------------------
-/** @brief    uart �� close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    uart 를 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void uart_close( poll_obj_t *obj )
 {
@@ -337,9 +337,9 @@ void uart_close( poll_obj_t *obj )
 	poll_delete( obj );
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ����ü�� �����̸����� ã�´�.
-    @param    fname ���ڿ� �����̸�
-    @return   obj  ����ü ������
+/** @brief    uart 폴객체를 파일이름으로 찾는다.
+    @param    fname 문자열 파일이름
+    @return   obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t *uart_get_byport( char *fname )
 {
@@ -368,17 +368,17 @@ poll_obj_t *uart_get_byport( char *fname )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart �� ���� ����Ÿ�� �����Ѵ�.
-    @param    obj  ����ü ������
-    @param    buf  ���۹���
-    @param    len  ������ ����
-    @return   ������ ����Ÿ ����
+/** @brief    uart 를 통해 데이타를 전송한다.
+    @param    obj  폴객체 포인터
+    @param    buf  전송버퍼
+    @param    len  버퍼의 길이
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  uart_write( poll_obj_t *obj, char *buf, int len )
 {
 	int  wrcnt;
 	
-	// �����Ѵ�.
+	// 전송한다.
 #ifdef EMBEDDED_LINUX
 
 	wrcnt = write( obj->fd, buf, len );
@@ -397,17 +397,17 @@ int  uart_write( poll_obj_t *obj, char *buf, int len )
 	return wrcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart �� ���� ����Ÿ�� �д´�.
-    @param    obj  ����ü ������
-    @param    buf  �ϱ����
-    @param    len  ������ ����
-    @return   ���� ����Ÿ ����
+/** @brief    uart 를 통해 데이타를 읽는다.
+    @param    obj  폴객체 포인터
+    @param    buf  일기버퍼
+    @param    len  버퍼의 길이
+    @return   읽은 데이타 개수
 *///----------------------------------------------------------------------------
 int  uart_read( poll_obj_t *obj, char *buf, int len )
 {
 	int  rdcnt;
 
-	// ����Ÿ�� �д´�.
+	// 데이타를 읽는다.
 #ifdef EMBEDDED_LINUX
 
 	rdcnt = read( obj->fd, buf, len );
@@ -426,9 +426,9 @@ int  uart_read( poll_obj_t *obj, char *buf, int len )
 	return rdcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ���Ź��ۿ� ����Ÿ�� �����Ѵ�.
-    @param    obj  ����ü ������
-    @return   ���μ��Ź����� �� ����Ÿ ����
+/** @brief    uart 내부 수신버퍼에 데이타를 저장한다.
+    @param    obj  폴객체 포인터
+    @return   내부수신버퍼의 총 데이타 길이
 *///----------------------------------------------------------------------------
 int  uart_read_into_fifo( poll_obj_t *obj )
 {
@@ -464,12 +464,12 @@ int  uart_read_into_fifo( poll_obj_t *obj )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ���Ź��ۿ��� ����Ÿ�� �о�´�.
-    @param    obj  ����ü ������
-    @param    buf  ����Ÿ�� ��ƿ� ����
-    @param    len  ������ ����
-    @return   ����� ����Ÿ ����
-    @remark   ����Ÿ�� ������ �� ������ ũ�⸸ŭ ������ �������� ����Ÿ�� �̵��Ѵ�.
+/** @brief    uart 내부 수신버퍼에서 데이타를 읽어온다.
+    @param    obj  폴객체 포인터
+    @param    buf  데이타를 담아올 버퍼
+    @param    len  버퍼의 길이
+    @return   복사된 데이타 길이
+    @remark   데이타를 복사한 후 복사한 크기만큼 버퍼의 앞쪽으로 데이타를 이동한다.
 *///----------------------------------------------------------------------------
 int  uart_copy_recv_fifo( poll_obj_t *obj, char *buf, int len )
 {
@@ -490,9 +490,9 @@ int  uart_copy_recv_fifo( poll_obj_t *obj, char *buf, int len )
 	return len;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ���Ź����� �����͸� ��´�.
-    @param    obj  ����ü ������
-    @return   uart ���� �������� ������
+/** @brief    uart 내부 수신버퍼의 포인터를 얻는다.
+    @param    obj  폴객체 포인터
+    @return   uart 내부 수신버퍼의 포인터
 *///----------------------------------------------------------------------------
 char *uart_get_recv_fifo( poll_obj_t *obj )
 {
@@ -502,9 +502,9 @@ char *uart_get_recv_fifo( poll_obj_t *obj )
 	return uart->recv_fifo;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ���Ź��ۿ� ����� ����Ÿ�� ������ ��´�.
-    @param    obj  ����ü ������
-    @return   ���Ź��ۿ� ����� ����Ÿ�� ����
+/** @brief    uart 내부 수신버퍼에 저장된 데이타의 갯수를 얻는다.
+    @param    obj  폴객체 포인터
+    @return   수신버퍼에 저장된 데이타의 갯수
 *///----------------------------------------------------------------------------
 int  uart_get_recv_fifo_count( poll_obj_t *obj )
 {
@@ -514,10 +514,10 @@ int  uart_get_recv_fifo_count( poll_obj_t *obj )
 	return uart->fifo_rcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ���Ź��ۿ��� ������ ����Ÿ�� ������ �� ������ ����Ÿ�� �̵��Ѵ�.
-    @param    obj   ����ü ������
-    @param    len   ���ŵ� ����Ÿ ����
-    @return   ���Ź��ۿ� �����ִ� ����Ÿ�� ����
+/** @brief    uart 내부 수신버퍼에서 앞쪽의 데이타를 제거한 후 뒤쪽의 데이타를 이동한다.
+    @param    obj   폴객체 포인터
+    @param    len   제거될 데이타 개수
+    @return   수신버퍼에 남아있는 데이타의 갯수
 *///----------------------------------------------------------------------------
 int  uart_checkout_recv_fifo( poll_obj_t *obj, int len )
 {
@@ -535,20 +535,20 @@ int  uart_checkout_recv_fifo( poll_obj_t *obj, int len )
 	return uart->fifo_rcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    uart ���� ���Ź��۸� ����.
-    @param    obj   ����ü ������
+/** @brief    uart 내부 수신버퍼를 비운다.
+    @param    obj   폴객체 포인터
 *///----------------------------------------------------------------------------
 void  uart_clear_recv_fifo( poll_obj_t *obj )
 {
 	uart_checkout_recv_fifo( obj, uart_get_recv_fifo_count( obj ) );
 }
 //------------------------------------------------------------------------------
-/** @brief    uart���� �񱳵���Ÿ�� ���ŵɶ����� �����Ѵ�.
-    @param    obj         ����ü ������
-    @param    match       ���� ����
-    @param    match_len   ���� ������ ũ��
-    @param    tmout_msec  Ÿ�Ӿƿ� �ð�
-    @return   ���� 0, ���� -1
+/** @brief    uart에서 비교데이타가 수신될때까지 감시한다.
+    @param    obj         폴객체 포인터
+    @param    match       비교할 버퍼
+    @param    match_len   비교할 버퍼의 크기
+    @param    tmout_msec  타임아웃 시간
+    @return   성공 0, 실패 -1
 *///----------------------------------------------------------------------------
 int  uart_recv_wait_fifo( poll_obj_t *obj, unsigned char *match, int match_len, int tmout_msec )
 {
@@ -557,21 +557,21 @@ int  uart_recv_wait_fifo( poll_obj_t *obj, unsigned char *match, int match_len,
 
 	deep_wait = 0;
 
-	// ������ ����Ÿ�� ��� ���ش�.
-	// 2011-05-25 ����
+	// 과거의 데이타를 모두 없앤다.
+	// 2011-05-25 제거
 	// uart_checkout_recv_fifo( obj, uart_get_recv_fifo_count( obj ) );
 	
 	while( 0 < tmout_msec )
 	{
-		// ���ŵ���Ÿ�� �����Ѵ�.
+		// 수신데이타를 감시한다.
 		poll_ret = poll_do_one( obj->fd, POLLIN, 100 );   
 		
-		// �̺�Ʈ�� �����ٸ� �ð��� ���ҽ�Ų��.
+		// 이벤트가 없었다면 시간을 감소시킨다.
 		if ( poll_ret != POLL_EVENTED  )
 		{
 			tmout_msec -= 100;
 			
-			// 1�� ���� ����Ÿ�� �����ٸ� ���Ź���  clear
+			// 1초 동안 데이타가 없었다면 수신버퍼  clear
 			deep_wait ++;
 			if ( 10 < deep_wait )
 			{
@@ -581,17 +581,17 @@ int  uart_recv_wait_fifo( poll_obj_t *obj, unsigned char *match, int match_len,
 			continue;
 		}
 		
-		// ����� ���Դٸ� 1mse �� ���ҽ�Ų��.
+		// 통신이 들어왔다면 1mse 만 감소시킨다.
 		tmout_msec --;
 		deep_wait = 0;
 
-		// ����Ÿ�� ���ۿ� �ִ´�.
+		// 데이타를 버퍼에 넣는다.
 		rdcnt = uart_read_into_fifo( obj );
 		rbuf  = uart_get_recv_fifo ( obj );
 
 		while( match_len <= rdcnt )
 		{
-			// �Ʒ� ������ ���� �׽�Ʈ��  ���ߴ�.
+			// 아래 문장은 아직 테스트를  못했다.
 			//
 			if ( 0 == memcmp( rbuf, match, match_len ) )
 			{
diff --git a/app/app-prime-modbus/lib/fanet/udp.c b/app/app-prime-modbus/lib/fanet/udp.c
index 2d97f8d..6b0708a 100644
--- a/app/app-prime-modbus/lib/fanet/udp.c
+++ b/app/app-prime-modbus/lib/fanet/udp.c
@@ -1,11 +1,11 @@
 /**    
     @file     udp.c
     @date     2009-03-19
-    @author   ����� freefrug@falinux.com
-    @brief    udp �� ����� ����� ����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    udp 를 사용한 통신을 담당한다.
 
     @modify   
-              2010-08-18 (��漮) mingw�� �Բ� ����� �� �ִ� �ڵ� �߰�
+              2010-08-18 (장길석) mingw와 함께 사용할 수 있는 코드 추가
     @todo    
     @bug     
     @remark   
@@ -13,11 +13,11 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
-#define EMBEDDED_LINUX                                          // �̷��� ó������ ������ EClipse���� C ������ ȸ�� ������ ��
+#define EMBEDDED_LINUX                                          // 이렇게 처리하지 않으면 EClipse에서 C 영역이 회색 바탕이 됨
 
 #ifdef MS_WIN32
     #undef EMBEDDED_LINUX
@@ -53,7 +53,7 @@
 char desc_udp[] = "falinux udp ver 0.2.0";
 
 
-/// udp ���� ����ü
+/// udp 개별 구조체
 typedef struct {
 	
 	int   port;
@@ -61,13 +61,13 @@ typedef struct {
 	struct sockaddr_in addr;
 } udp_priv_t;
 
-static poll_obj_t  *tmp_udp_poll = NULL;  // poll ������ü���� �����Լ��� ����
+static poll_obj_t  *tmp_udp_poll = NULL;  // poll 관리객체없이 전송함수를 위해
 
 
 //------------------------------------------------------------------------------
-/** @brief    udp ������ �������·� open �Ѵ�.
-    @param    port  ��Ʈ��ȣ
-    @return   poll_obj_t ������ ������
+/** @brief    udp 소켓을 서버형태로 open 한다.
+    @param    port  포트번호
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 
 #ifdef EMBEDDED_LINUX
@@ -87,12 +87,12 @@ poll_obj_t  *udp_open_server( int port )
 		return NULL;	
 	}
 
-	// TIME-WAIT ���¿� �ִ� ���Ͽ� �Ҵ�Ǿ� �ִ� IP �ּҿ� ��Ʈ�� �ٷ� ����� �� �ֵ���
-	// SO_REUSEADDR �� �ɼ� ���� TRUE ��
+	// TIME-WAIT 상태에 있는 소켓에 할당되어 있는 IP 주소와 포트를 바로 사용할 수 있도록
+	// SO_REUSEADDR 의 옵션 값을 TRUE 로
 	option = 1;                                                         
 	setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 
-	// ������ �ý��ۿ� �����Ѵ�.
+	// 소켓을 시스템에 연결한다.
 	bzero( &addr_svr, sizeof(struct sockaddr_in) );
 	addr_svr.sin_family      = AF_INET;
 	addr_svr.sin_addr.s_addr = htonl( INADDR_ANY );
@@ -105,7 +105,7 @@ poll_obj_t  *udp_open_server( int port )
 	    return NULL;
 	}
 	
-	// udp ���� ������ �����Ѵ�.
+	// udp 만의 정보를 설정한다.
 	udp = (udp_priv_t *)malloc( sizeof(udp_priv_t) );
 	udp->im_server  = 1;
 	udp->port       = port;
@@ -136,12 +136,12 @@ poll_obj_t  *udp_open_server( int port )
         return NULL;
     }
 
-    // TIME-WAIT ���¿� �ִ� ���Ͽ� �Ҵ�Ǿ� �ִ� IP �ּҿ� ��Ʈ�� �ٷ� ����� �� �ֵ���
-    // SO_REUSEADDR �� �ɼ� ���� TRUE ��
+    // TIME-WAIT 상태에 있는 소켓에 할당되어 있는 IP 주소와 포트를 바로 사용할 수 있도록
+    // SO_REUSEADDR 의 옵션 값을 TRUE 로
     option = 1;
     setsockopt( hSock, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 
-    // ������ �ý��ۿ� �����Ѵ�.
+    // 소켓을 시스템에 연결한다.
     memset( &sckAddr, 0, sizeof( sckAddr));
     sckAddr.sin_family      = AF_INET;
     sckAddr.sin_addr.s_addr = htonl( INADDR_ANY );
@@ -154,7 +154,7 @@ poll_obj_t  *udp_open_server( int port )
         return NULL;
     }
 
-    // udp ���� ������ �����Ѵ�.
+    // udp 만의 정보를 설정한다.
     udp = (udp_priv_t *)malloc( sizeof(udp_priv_t) );
     udp->im_server  = 1;
     udp->port       = port;
@@ -174,8 +174,8 @@ poll_obj_t  *udp_open_server( int port )
 
 
 //------------------------------------------------------------------------------
-/** @brief    udp ������ Ŭ���̾�Ʈ ���·� open �Ѵ�.
-    @return   poll_obj_t ������ ������
+/** @brief    udp 소켓을 클라이언트 형태로 open 한다.
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 
 #ifdef EMBEDDED_LINUX
@@ -193,7 +193,7 @@ poll_obj_t  *udp_open_client( void )
 		return NULL;	
 	}
 
-	// udp ���� ������ �����Ѵ�.
+	// udp 만의 정보를 설정한다.
 	udp = (udp_priv_t *)malloc( sizeof(udp_priv_t) );
 	udp->im_server = 0;
 	udp->port      = -1;
@@ -222,7 +222,7 @@ poll_obj_t  *udp_open_client( void )
         return NULL;
     }
 
-    // udp ���� ������ �����Ѵ�.
+    // udp 만의 정보를 설정한다.
     udp = (udp_priv_t *)malloc( sizeof(udp_priv_t) );
     udp->im_server  = FALSE;
     udp->port       = -1;
@@ -241,8 +241,8 @@ poll_obj_t  *udp_open_client( void )
 #endif
 
 //------------------------------------------------------------------------------
-/** @brief    udp ������ close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    udp 소켓을 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void udp_close( poll_obj_t *obj )
 {
@@ -253,7 +253,7 @@ void udp_close( poll_obj_t *obj )
 #else
 
 	closesocket( *( ( SOCKET *)obj->fd));
-	free( obj->fd);                                             // SOCKET * �� �����Ѵ�.
+	free( obj->fd);                                             // SOCKET * 를 해제한다.
 
 #endif
 
@@ -267,9 +267,9 @@ void udp_close( poll_obj_t *obj )
 	if ( tmp_udp_poll == obj ) tmp_udp_poll = NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    udp ����ü�� ��Ʈ��ȣ�� ã�´�.
-    @param    port ��Ʈ��ȣ
-    @return   obj  ����ü ������
+/** @brief    udp 폴객체를 포트번호로 찾는다.
+    @param    port 포트번호
+    @return   obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *udp_get_byport( int port )
 {
@@ -295,10 +295,10 @@ poll_obj_t  *udp_get_byport( int port )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    �ڷḦ �۽��� Ŭ���̾�Ʈ�� �����͸� �� �����Ѵ�
-    @param    obj     ����ü ������
-    @param    len     ������ ����
-    @return   ���۵� ����Ÿ ����
+/** @brief    자료를 송신한 클라이언트로 데에터를 재 전송한다
+    @param    obj     폴객체 포인터
+    @param    len     버퍼의 길이
+    @return   전송된 데이타 개수
 *///----------------------------------------------------------------------------
 int  udp_echo( poll_obj_t *obj, char *buf, int len )
 {
@@ -328,26 +328,26 @@ int  udp_echo( poll_obj_t *obj, char *buf, int len )
 	return wrcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    udp ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    obj     ����ü ������
-    @param    host    ���� IP �� ȣ��Ʈ�̸� ���ڿ�������
-    @param    port    ���� ��Ʈ��ȣ
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
+/** @brief    udp 소켓을 통해 데이타를 전송한다.
+    @param    obj     폴객체 포인터
+    @param    host    상대방 IP 나 호스트이름 문자열포인터
+    @param    port    상대방 포트번호
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  udp_write( poll_obj_t *obj, char *host, int port, char *buf, int len )
 {
 	struct sockaddr_in udp_addr;
 	int  wrcnt;
 	
-	// ����� �ּҸ� �����Ѵ�.
+	// 상대편 주소를 설정한다.
 	memset( &udp_addr, 0, sizeof( struct sockaddr_in) );
 	udp_addr.sin_family      = AF_INET;
 	udp_addr.sin_addr.s_addr = inet_addr( host );
 	udp_addr.sin_port        = htons( port );
 	
-	// �����Ѵ�.
+	// 전송한다.
 
 #ifdef EMBEDDED_LINUX
 
@@ -368,10 +368,10 @@ int  udp_write( poll_obj_t *obj, char *host, int port, char *buf, int len )
 	return wrcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    udp ������ ���� ����Ÿ�� �д´�.
-    @param    obj     ����ü ������
-    @param    len     ������ ����
-    @return   ���۵� ����Ÿ ����
+/** @brief    udp 소켓을 통해 데이타를 읽는다.
+    @param    obj     폴객체 포인터
+    @param    len     버퍼의 길이
+    @return   전송된 데이타 개수
 *///----------------------------------------------------------------------------
 int  udp_read( poll_obj_t *obj, char *buf, int len )
 {
@@ -383,7 +383,7 @@ int  udp_read( poll_obj_t *obj, char *buf, int len )
 	udp   = (udp_priv_t *)(obj->priv);
 	paddr = &(udp->addr);
 	
-	// ����Ÿ�� �д´�.
+	// 데이타를 읽는다.
 	addr_len = sizeof( struct sockaddr_in);
 
 #ifdef EMBEDDED_LINUX
@@ -406,11 +406,11 @@ int  udp_read( poll_obj_t *obj, char *buf, int len )
 	return rdcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    udp �������� ���������� ������ ȣ��Ʈ�� ã�´�.
-    @param    obj   ����ü ������
-    @param    host  ����� ȣ��Ʈ�� ������ ���ڿ� ������
-    @param    port  ����� ȣ��Ʈ�� ����� ��Ʈ��ȣ�� ������ ������ ������
-    @return   �ǹ̾���
+/** @brief    udp 소켓으로 마지막으로 수신한 호스트를 찾는다.
+    @param    obj   폴객체 포인터
+    @param    host  상대편 호스트를 돌려줄 문자열 포인터
+    @param    port  상대편 호스트가 사용한 포트번호를 돌려줄 정수형 포인터
+    @return   의미없음
 *///----------------------------------------------------------------------------
 int  udp_get_remote_host( poll_obj_t *obj, char *host, int *port )
 {
@@ -424,13 +424,13 @@ int  udp_get_remote_host( poll_obj_t *obj, char *host, int *port )
 	return 0;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ��ü���� udp ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    host    ���� IP �� ȣ��Ʈ�̸� ���ڿ�������
-    @param    port    ���� ��Ʈ��ȣ
-    @param    buf     ���۹���
-    @param    len     ������ ����
-    @return   ������ ����Ÿ ����
-    @remark   udp_open_server(), udp_open_client() �Լ��� �ѹ� ȣ��Ǿ�� �Ѵ�.
+/** @brief    poll 객체없이 udp 소켓을 통해 데이타를 전송한다.
+    @param    host    상대방 IP 나 호스트이름 문자열포인터
+    @param    port    상대방 포트번호
+    @param    buf     전송버퍼
+    @param    len     버퍼의 길이
+    @return   전송한 데이타 개수
+    @remark   udp_open_server(), udp_open_client() 함수는 한번 호출되어야 한다.
 *///----------------------------------------------------------------------------
 int  udp_write_simple( char *host, int port, char *buf, int len )
 {
@@ -442,11 +442,11 @@ int  udp_write_simple( char *host, int port, char *buf, int len )
 	return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ��ü���� udp ������ ���� ����Ÿ�� �д´�.
-    @param    buf  ���۹���
-    @param    len  ������ ����
-    @return   ���۵� ����Ÿ ����
-    @remark   udp_open_server(), udp_open_client() �Լ��� �ѹ� ȣ��Ǿ�� �Ѵ�.
+/** @brief    poll 객체없이 udp 소켓을 통해 데이타를 읽는다.
+    @param    buf  전송버퍼
+    @param    len  버퍼의 길이
+    @return   전송된 데이타 개수
+    @remark   udp_open_server(), udp_open_client() 함수는 한번 호출되어야 한다.
 *///----------------------------------------------------------------------------
 int  udp_read_simple( char *buf, int len )
 {
diff --git a/app/app-prime-modbus/lib/fanet/uds.c b/app/app-prime-modbus/lib/fanet/uds.c
index 1b9ce2b..72c6226 100644
--- a/app/app-prime-modbus/lib/fanet/uds.c
+++ b/app/app-prime-modbus/lib/fanet/uds.c
@@ -1,13 +1,13 @@
 /**    
     @file     uds.c
     @date     2009-03-19
-    @author   ����� freefrug@falinux.com
-    @brief    uds �� ����� ����� ����Ѵ�.
+    @author   오재경 freefrug@falinux.com
+    @brief    uds 를 사용한 통신을 담당한다.
 
-    @modify   2009-12-11 (�����)
-                  uds_open_client() �Լ��� ���� ���Ǽ��� �����ߴ�.
-                  uds_open_client() �Լ� ȣ��� ������ �����̸��� uds_write() �Լ�����
-                  �������� NULL �� ��� �������� ��ġ�ȴ�.
+    @modify   2009-12-11 (오재경)
+                  uds_open_client() 함수에 대한 편의성을 가미했다.
+                  uds_open_client() 함수 호출시 인자의 파일이름은 uds_write() 함수에서
+                  목적지가 NULL 일 경우 목적지로 대치된다.
     @todo    
     @bug     
     @remark   
@@ -15,8 +15,8 @@
     @warning 
 */
 //
-//  ���۱�    �������̸�����(��)
-//            �ܺΰ��� ����
+//  저작권    에프에이리눅스(주)
+//            외부공개 금지
 //
 //----------------------------------------------------------------------------
 #include <stdio.h>
@@ -37,7 +37,7 @@
 
 char desc_uds[] = "falinux uds ver 0.2.0";
 
-/// uds ���� ����ü
+/// uds 개별 구조체
 typedef struct {
 	
 	char  port[256];
@@ -45,13 +45,13 @@ typedef struct {
 	
 } uds_priv_t;
 
-static poll_obj_t  *tmp_uds_poll = NULL;  // poll ������ü���� �����Լ��� ����
+static poll_obj_t  *tmp_uds_poll = NULL;  // poll 관리객체없이 전송함수를 위해
 
 
 //------------------------------------------------------------------------------
-/** @brief    uds ������ �������·� open �Ѵ�.
-    @param    fname  ���ڿ� �����̸�
-    @return   poll_obj_t ������ ������
+/** @brief    uds 소켓을 서버형태로 open 한다.
+    @param    fname  문자열 파일이름
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *uds_open_server( char *fname )
 {
@@ -68,15 +68,15 @@ poll_obj_t  *uds_open_server( char *fname )
 		return NULL;	
 	}
 
-	// �̹� ���Ͽ� ȭ�Ͽ� ��ũ�Ǿ� �ִٸ� �����Ѵ�.
+	// 이미 소켓용 화일에 링크되어 있다면 제거한다.
 	unlink ( fname );
 
-	// TIME-WAIT ���¿� �ִ� ���Ͽ� �Ҵ�Ǿ� �ִ� IP �ּҿ� ��Ʈ�� �ٷ� ����� �� �ֵ���
-	// SO_REUSEADDR �� �ɼ� ���� TRUE ��
+	// TIME-WAIT 상태에 있는 소켓에 할당되어 있는 IP 주소와 포트를 바로 사용할 수 있도록
+	// SO_REUSEADDR 의 옵션 값을 TRUE 로
 	option = 1;                                                         
 	setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
 	
-	// ������ �ý��ۿ� �����Ѵ�.
+	// 소켓을 시스템에 연결한다.
 	bzero( &addr_svr, sizeof(struct sockaddr_un) );
 	addr_svr.sun_family = AF_UNIX;
 	strcpy( addr_svr.sun_path, fname );
@@ -88,7 +88,7 @@ poll_obj_t  *uds_open_server( char *fname )
 	    return NULL;
 	}
 
-	// uds ���� ������ �����Ѵ�.
+	// uds 만의 정보를 설정한다.
 	uds = (uds_priv_t *)malloc( sizeof(uds_priv_t) );
 	uds->im_server = 1;
 	strcpy( uds->port, fname );
@@ -102,9 +102,9 @@ poll_obj_t  *uds_open_server( char *fname )
 	return obj;
 }
 //------------------------------------------------------------------------------
-/** @brief    uds ������ Ŭ���̾�Ʈ ���·� open �Ѵ�.
-    @param    fname  ���ڿ� �����̸�, Ȯ���� ���� �����ϸ� NULL �� ����Ͽ��� �ȴ�.
-    @return   poll_obj_t ������ ������
+/** @brief    uds 소켓을 클라이언트 형태로 open 한다.
+    @param    fname  문자열 파일이름, 확장을 위해 존재하며 NULL 을 사용하여도 된다.
+    @return   poll_obj_t 형태의 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *uds_open_client( char *fname )
 {
@@ -119,7 +119,7 @@ poll_obj_t  *uds_open_client( char *fname )
 		return NULL;	
 	}
 
-	// uds ���� ������ �����Ѵ�.
+	// uds 만의 정보를 설정한다.
 	uds = (uds_priv_t *)malloc( sizeof(uds_priv_t) );
 	uds->im_server = 0;
 	if (fname)
@@ -136,8 +136,8 @@ poll_obj_t  *uds_open_client( char *fname )
 	return obj;
 }
 //------------------------------------------------------------------------------
-/** @brief    uds ������ close �Ѵ�.
-    @param    obj  ����ü ������
+/** @brief    uds 소켓을 close 한다.
+    @param    obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 void uds_close( poll_obj_t *obj )
 {
@@ -153,9 +153,9 @@ void uds_close( poll_obj_t *obj )
 	if ( tmp_uds_poll == obj ) tmp_uds_poll = NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    uds ����ü�� �����̸����� ã�´�.
-    @param    fname ���ڿ� �����̸�
-    @return   obj  ����ü ������
+/** @brief    uds 폴객체를 파일이름으로 찾는다.
+    @param    fname 문자열 파일이름
+    @return   obj  폴객체 포인터
 *///----------------------------------------------------------------------------
 poll_obj_t  *uds_get_byport( char *fname )
 {
@@ -181,12 +181,12 @@ poll_obj_t  *uds_get_byport( char *fname )
 	return NULL;
 }
 //------------------------------------------------------------------------------
-/** @brief    uds ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    obj  ����ü ������
-    @param    to   ���� �����̸� ���ڿ�������
-    @param    buf  ���۹���
-    @param    len  ������ ����
-    @return   ������ ����Ÿ ����
+/** @brief    uds 소켓을 통해 데이타를 전송한다.
+    @param    obj  폴객체 포인터
+    @param    to   상대방 파일이름 문자열포인터
+    @param    buf  전송버퍼
+    @param    len  버퍼의 길이
+    @return   전송한 데이타 개수
 *///----------------------------------------------------------------------------
 int  uds_write( poll_obj_t *obj, char *to, char *buf, int len )
 {
@@ -197,19 +197,19 @@ int  uds_write( poll_obj_t *obj, char *to, char *buf, int len )
 	
 	uds = (uds_priv_t *)obj->priv; 
 	
-	// Ŭ���̾�Ʈ�� �����ְų� �������� �������� ������ ����� ��Ʈ�� �����Ѵ�.
+	// 클라이언트로 열려있거나 목적지가 존재하지 않으면 저장된 포트로 전송한다.
 	dst = to;
 	if ( ( 0 == uds->im_server ) && ( NULL == dst ) )
 	{
 		dst = uds->port;
 	}
 
-	// ����� �ּҸ� �����Ѵ�.
+	// 상대편 주소를 설정한다.
 	bzero( &uds_addr, sizeof(struct sockaddr_un) );	
 	uds_addr.sun_family = AF_UNIX;
 	strcpy( uds_addr.sun_path, dst );
 
-	// �����Ѵ�.
+	// 전송한다.
 	wrcnt = sendto( obj->fd, buf, len, 0, (struct sockaddr *)&uds_addr, sizeof(uds_addr) );
 
 	if ( 0 > wrcnt )
@@ -223,11 +223,11 @@ int  uds_write( poll_obj_t *obj, char *to, char *buf, int len )
 	return wrcnt;
 }
 //------------------------------------------------------------------------------
-/** @brief    uds ������ ���� ����Ÿ�� �д´�.
-    @param    obj  ����ü ������
-    @param    buf  ���۹���
-    @param    len  ������ ����
-    @return   ���۵� ����Ÿ ����
+/** @brief    uds 소켓을 통해 데이타를 읽는다.
+    @param    obj  폴객체 포인터
+    @param    buf  전송버퍼
+    @param    len  버퍼의 길이
+    @return   전송된 데이타 개수
 *///----------------------------------------------------------------------------
 int  uds_read( poll_obj_t *obj, char *buf, int len )
 {
@@ -235,7 +235,7 @@ int  uds_read( poll_obj_t *obj, char *buf, int len )
 	int  addr_len;
 	int  rdcnt;
 	
-	// ����Ÿ�� �д´�.
+	// 데이타를 읽는다.
 	addr_len = sizeof(uds_addr);
 	rdcnt = recvfrom( obj->fd, buf, len, 0, (struct sockaddr *)&uds_addr, (socklen_t *)&addr_len );
 	
@@ -252,12 +252,12 @@ int  uds_read( poll_obj_t *obj, char *buf, int len )
 }
 
 //------------------------------------------------------------------------------
-/** @brief    poll ��ü���� uds ������ ���� ����Ÿ�� �����Ѵ�.
-    @param    to   ���� �����̸� ���ڿ�������
-    @param    buf  ���۹���
-    @param    len  ������ ����
-    @return   ������ ����Ÿ ����
-    @remark   uds_open_server(), uds_open_client() �Լ��� �ѹ� ȣ��Ǿ�� �Ѵ�.
+/** @brief    poll 객체없이 uds 소켓을 통해 데이타를 전송한다.
+    @param    to   상대방 파일이름 문자열포인터
+    @param    buf  전송버퍼
+    @param    len  버퍼의 길이
+    @return   전송한 데이타 개수
+    @remark   uds_open_server(), uds_open_client() 함수는 한번 호출되어야 한다.
 *///----------------------------------------------------------------------------
 int  uds_write_simple( char *to, char *buf, int len )
 {
@@ -269,11 +269,11 @@ int  uds_write_simple( char *to, char *buf, int len )
 	return -1;
 }
 //------------------------------------------------------------------------------
-/** @brief    poll ��ü���� uds ������ ���� ����Ÿ�� �д´�.
-    @param    buf  ���۹���
-    @param    len  ������ ����
-    @return   ���۵� ����Ÿ ����
-    @remark   uds_open_server(), uds_open_client() �Լ��� �ѹ� ȣ��Ǿ�� �Ѵ�.
+/** @brief    poll 객체없이 uds 소켓을 통해 데이타를 읽는다.
+    @param    buf  전송버퍼
+    @param    len  버퍼의 길이
+    @return   전송된 데이타 개수
+    @remark   uds_open_server(), uds_open_client() 함수는 한번 호출되어야 한다.
 *///----------------------------------------------------------------------------
 int  uds_read_simple( char *buf, int len )
 {
diff --git a/app/app-prime-modbus/lib/fanet/ux_gui.c b/app/app-prime-modbus/lib/fanet/ux_gui.c
index 3e32d31..9e517db 100644
--- a/app/app-prime-modbus/lib/fanet/ux_gui.c
+++ b/app/app-prime-modbus/lib/fanet/ux_gui.c
@@ -1,9 +1,9 @@
 
 //------------------------------------------------------------------------------
 /** @file    	ux_gui.C
-    @brief   	GUI ó�� ���̺귯��
-    @author  	����â bmfrog2@gmail.com
-    @date 		2009�� 1�� 17��
+    @brief   	GUI 처리 라이브러리
+    @author  	유영창 bmfrog2@gmail.com
+    @date 		2009년 1월 17일
 	@license
 *///----------------------------------------------------------------------------
 
@@ -18,7 +18,7 @@
 
 #include <linux/input.h>
 #include <linux/limits.h>				// PATH_MAX
-#include <fcntl.h>                      // O_RDWR , O_NOCTTY ���� ��� ����
+#include <fcntl.h>                      // O_RDWR , O_NOCTTY 등의 상수 정의
 #include <time.h>
 
 #include <linux/kdev_t.h>				// MKDEV
@@ -35,10 +35,10 @@
 #include <ux_gui.h>
 
 //------------------------------------------------------------------------------
-/** @brief	GUI ó���� �ʿ��� ���̺귯���� �ʱ�ȭ �Ѵ�.
-    @param  exit_flag : �ʱ�ȭ ���н� ���α׷� ���� ����  , 1 �̸� ���α׷� ����
+/** @brief	GUI 처리에 필요한 라이브러리를 초기화 한다.
+    @param  exit_flag : 초기화 실패시 프로그램 종료 여부  , 1 이면 프로그램 종료
     @return
-    @remark ����
+    @remark 없음
 *///----------------------------------------------------------------------------
 int ux_gui_lib_init( int exit_flag )
 {
@@ -80,10 +80,10 @@ static int 		map_last_y     = 0;
 
 
 //------------------------------------------------------------------------------
-/** @brief	���� �׸��� �о� �´�.
-    @param 	fileaname : ��Ʈ�� ���ϸ�
-    @return	���� 0
-    @return	���� -1
+/** @brief	전경 그림을 읽어 온다.
+    @param 	fileaname : 비트맵 파일명
+    @return	정상 0
+    @return	실패 -1
     @remark
 *///----------------------------------------------------------------------------
 int 	ux_gui_screen_map_load_front_bitmap( char *filename )
@@ -95,9 +95,9 @@ int 	ux_gui_screen_map_load_front_bitmap( char *filename )
 }
 
 //--------------------------------------------------------------
-// ���� : ��� �׸��� �о� �´�.
-// �Ű� : fileaname : ��Ʈ�� ���ϸ�
-// ��ȯ : ���� 0 , ���� -1
+// 설명 : 배경 그림을 읽어 온다.
+// 매계 : fileaname : 비트맵 파일명
+// 반환 : 정상 0 , 실패 -1
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -114,9 +114,9 @@ int 	ux_gui_screen_map_load_back_bitmap( char *filename )
 }
 
 //--------------------------------------------------------------
-// ���� : ����ũ �׸��� �о� �´�.
-// �Ű� : fileaname : ��Ʈ�� ���ϸ�
-// ��ȯ : ���� 0 , ���� -1
+// 설명 : 마스크 그림을 읽어 온다.
+// 매계 : fileaname : 비트맵 파일명
+// 반환 : 정상 0 , 실패 -1
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -133,9 +133,9 @@ int 	ux_gui_screen_map_load_mask_bitmap( char *filename )
 }
 
 //--------------------------------------------------------------
-// ���� : GUI ��ũ�� ���� ó�� �ϴ� ������ �о� �ʱ�ȭ �Ѵ�.
-// �Ű� : exit_flag �ʱ�ȭ ���н� ���α׷� ���� ����
-//        1 �̸� ���α׷� ����
+// 설명 : GUI 스크린 맵을 처리 하는 파일을 읽어 초기화 한다.
+// 매계 : exit_flag 초기화 실패시 프로그램 종료 여부
+//        1 이면 프로그램 종료
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -175,12 +175,12 @@ int ux_gui_screen_map_load( char *filename )
 			str++;
 		}
 
-		if( readbuff[0] == 'E' && readbuff[1] == 'D' ) break;		// ���� �� ���� �̸� ó�� ����
-		if( readbuff[0] == 'R' && readbuff[1] == 'M' ) continue;	// remark �����̸� ����
+		if( readbuff[0] == 'E' && readbuff[1] == 'D' ) break;		// 파일 끝 명령 이면 처리 종료
+		if( readbuff[0] == 'R' && readbuff[1] == 'M' ) continue;	// remark 명령이면 무시
 
-		printf( "[%s]\n", readbuff );								// ����׷� ǥ��
+		printf( "[%s]\n", readbuff );								// 디버그로 표시
 
-		// �׸� ���� �б� ��û�̸� �̿� ���� ó��
+		// 그림 파일 읽기 요청이면 이에 대한 처리
 		if( readbuff[0] == 'B' )
 		{
 			switch( readbuff[1] )
@@ -194,7 +194,7 @@ int ux_gui_screen_map_load( char *filename )
 			continue;
 		}
 
-		// �� ���� ó��
+		// 색 정보 처리
 		if( readbuff[0] == 'C' && readbuff[1] == 'M' )
 		{
 			sscanf( &readbuff[3], "%d,%d,%d,%d", &index, &r,&g,&b );
@@ -207,7 +207,7 @@ int ux_gui_screen_map_load( char *filename )
 			}
 			continue;
 		}
-		// ���� ���� ó��
+		// 영역 정보 처리
 		if( readbuff[0] == 'A' && readbuff[1] == 'R' )
 		{
 			sscanf( &readbuff[3], "%d,%d,%d,%d,%d", &index, &left,&top,&right, &bottom );
@@ -237,7 +237,7 @@ int ux_gui_screen_map_load( char *filename )
 
 
 //--------------------------------------------------------------
-// ���� : GUI ��ũ�� ���� ó�� �ϴ� ������ �о� �ʱ�ȭ �Ѵ�.
+// 설명 : GUI 스크린 맵을 처리 하는 파일을 읽어 초기화 한다.
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -252,7 +252,7 @@ int ux_gui_screen_map_set_dc( dc_t	*dc )
 }
 
 //--------------------------------------------------------------
-// ���� : ���� ȭ���� �׸���.
+// 설명 : 전경 화면을 그린다.
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -267,7 +267,7 @@ int ux_gui_screen_map_draw_front( void )
 }
 
 //--------------------------------------------------------------
-// ���� : �̺�Ʈ �����͸� �Ѱ� ���� ó�� �Ѵ�.
+// 설명 : 이벤트 데이터를 넘겨 사전 처리 한다.
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -277,7 +277,7 @@ int ux_gui_screen_map_draw_front( void )
 *///----------------------------------------------------------------------------
 int ux_gui_screen_map_put_ie_event( ie_event_t *event_data )
 {
-	// ���콺 ��ǥ�� ���Ѵ�.
+	// 마우스 좌표를 구한다.
 	switch(event_data->type)
 	{
 	case IE_MOUSE_DOWN	:
@@ -292,7 +292,7 @@ int ux_gui_screen_map_put_ie_event( ie_event_t *event_data )
 }
 
 //--------------------------------------------------------------
-// ���� : ���� �ε����� ���Ѵ�.
+// 설명 : 영역 인덱스를 구한다.
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -330,7 +330,7 @@ int ux_gui_screen_map_get_area( void )
 }
 
 //--------------------------------------------------------------
-// ���� : ���� ������ �׸���.
+// 설명 : 전경 영역을 그린다.
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -360,7 +360,7 @@ int ux_gui_screen_map_draw_area_front	( int area_index )
 
 
 //------------------------------------------------------------------------------
-/** @brief	��� ������ �׸���.
+/** @brief	배경 영역을 그린다.
     @param
     @return
     @remark
@@ -385,7 +385,7 @@ int ux_gui_screen_map_draw_area_back	( int area_index )
 }
 
 //------------------------------------------------------------------------------
-/** @brief	��ũ�� �� �����ڿ���  ��ư �������� ǥ�� �Ѵ�.
+/** @brief	스크립 맵 관리자에게  버튼 영역임을 표기 한다.
     @param
     @return
     @remark
@@ -404,7 +404,7 @@ int ux_gui_screen_map_mark_button( int area_index )
 }
 
 //------------------------------------------------------------------------------
-/** @brief	��ư�� �ٿ�� ����� �׸���.
+/** @brief	버튼이 다운된 모습을 그린다.
     @param
     @return
     @remark
@@ -433,7 +433,7 @@ int ux_gui_screen_map_draw_button_down( int area_index )
 }
 
 //--------------------------------------------------------------
-// ���� : ��ư�� msec ����� ���� ����� �׸���.
+// 설명 : 버튼이 msec 대기후 업된 모습을 그린다.
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief
@@ -448,7 +448,7 @@ int ux_gui_screen_map_draw_button_up	( int area_index , int msec_delay )
 	int x1, x2, y1,y2;
 //dprintf("ux_gui_screen_map_draw_button_up : area_index = %d\n", area_index);
 
-	// ��� ó��
+	// 대기 처리
 	for( lp = 0; lp < map_areas_count; lp++ )
 	{
 		if( map_areas[ lp ][MAP_AREA_COLOR ] != area_index ) continue;
@@ -457,7 +457,7 @@ int ux_gui_screen_map_draw_button_up	( int area_index , int msec_delay )
 		break;
 	}
 
-	// ǥ�� ó��
+	// 표출 처리
 	for( lp = 0; lp < map_areas_count; lp++ )
 	{
 		if( map_areas[ lp ][MAP_AREA_COLOR ] != area_index ) continue;
@@ -477,7 +477,7 @@ int ux_gui_screen_map_draw_button_up	( int area_index , int msec_delay )
 
 
 //--------------------------------------------------------------
-// ���� : ���콺 ��ġ�� ��´�.
+// 설명 : 마우스 위치를 얻는다.
 //--------------------------------------------------------------
 //------------------------------------------------------------------------------
 /** @brief