Blame view

app/app-prime-modbus/include/fanet/ipc_call.h 4.72 KB
8c2952457   김태훈   응용 프로그램 추가
1
2
3
  /**    
      @file     ipc_call.h
      @date     2008-06-30
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
4
5
      @author   오재경 freefrug@falinux.com
      @brief    프로세스간의 명령 전달을 구현한다.
8c2952457   김태훈   응용 프로그램 추가
6
7
8
9
10
11
12
13
14
  
      @modify   
      @todo    
      @bug     
      @remark   
      
      @warning 
  */
  //
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
15
16
  //  저작권    에프에이리눅스(주)
  //            외부공개 금지
8c2952457   김태훈   응용 프로그램 추가
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  //
  //----------------------------------------------------------------------------
  
  #ifndef _IPC_CALL_H_
  #define _IPC_CALL_H_
  
  //#define		IPC_UDS_NAME_PREFIX			"ipc_uds."
  #define		IPC_CALL_UDS_NAME_FORMAT		"/tmp/ipc_%03ld.uds"
  
  #define		IPC_CALL_PACKET_HEADER_LEN	(16)
  #define		IPC_CALL_BUF_LEN			(4096-IPC_CALL_PACKET_HEADER_LEN)
  
  #define     IPC_CALL_TIMEOUT_UNLIMIT    0xffffffff    /// 
  
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
31
  /// IPC CALL 에서의 데이타 수신시 호출되는 사용자 이벤트 함수 형태
8c2952457   김태훈   응용 프로그램 추가
32
33
34
  typedef void (*ipc_call_func_t)(unsigned long src_id, unsigned long msg_type, void *buf, int len );
  
  /// @{
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
35
  /// @brief  IPC CALL에서 사용하는 통신 패킷 
8c2952457   김태훈   응용 프로그램 추가
36
37
38
  
  typedef struct {
  
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
39
40
41
42
43
  	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];				/// 메시지 버퍼
8c2952457   김태훈   응용 프로그램 추가
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  
  } ipc_call_packet_t;
  
  /// @}
  
  
  #define 	IPC_CALL_OK 	     	 	0
  #define 	IPC_CALL_E_AGAIN     		-1
  #define     IPC_CALL_E_TIME_OUT  		-2 
  #define     IPC_CALL_E_BUSY      		-3
  #define     IPC_CALL_E_NO_ID     		-4
  #define     IPC_CALL_E_EMPTY     		-5
  
  
  #define   	IPC_CALL_GET_GROUP(x)    	(((x)>>16)&0xFFFF)
  #define   	IPC_CALL_GET_PORT(x)       	(((x)>> 0)&0xFFFF)
  
  #define		IPC_CALL_METHOD_FABIND		0
  #define		IPC_CALL_METHOD_UDS			1
  #define		IPC_CALL_METHOD_UDP			2
  #define		IPC_CALL_METHOD_NONE		-1
  
  #define		IPC_CALL_MSG_TYPE_BIN	    0
  #define		IPC_CALL_MSG_TYPE_XML	    1
  #define		IPC_CALL_MSG_TYPE_ASC	    2
  
  
  #define		IPC_CALL_LEVEL_DEFAULT		0
  #define		IPC_CALL_TIMEOUT_DEFAULT	1000
  
  #ifdef __cplusplus 
  extern "C" { 
  #endif 	
  
  /// @{
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
79
  /// @brief  외부에서 사용할수 있는 객체함수 리스트 
8c2952457   김태훈   응용 프로그램 추가
80
81
82
  
  
  
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
83
84
  int			ipc_call_create			( unsigned long id  	); 									/// IPC_CALL 을 생성한다.
  int			ipc_call_free			( unsigned long id  	); 									/// IPC_CALL 을 해제한다.
8c2952457   김태훈   응용 프로그램 추가
85
                                                                  							
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
86
  int			ipc_call_method			( unsigned long method	); 									/// IPC_CALL 의 수행 방식을 정한다.
8c2952457   김태훈   응용 프로그램 추가
87
                                                                  							
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
88
89
  int			ipc_call_level			( unsigned long level	); 									/// IPC_CALL 의 시간 초과를 설정한다.
  int			ipc_call_level_default	( unsigned long level	); 									/// IPC_CALL 의 시간 초과를 설정한다.
8c2952457   김태훈   응용 프로그램 추가
90
                                                                  							
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
91
92
  int			ipc_call_timeout		( unsigned long msec	); 									/// IPC_CALL 의 시간 초과를 설정한다.
  int			ipc_call_timeout_default( unsigned long msec	); 									/// IPC_CALL 의 시간 초과를 설정한다.
8c2952457   김태훈   응용 프로그램 추가
93
                                      
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
94
  // int			ipc_call_on_read	( void (*func)( unsigned long msg_type, void *priv ) ); 	/// IPC_CALL 의 읽기에 대한 이벤트를 지정한다.
8c2952457   김태훈   응용 프로그램 추가
95
96
97
  int			ipc_call_on_read		( ipc_call_func_t *func );
  
                                      
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
98
  int			ipc_call_read			( void *buf, int len ); 									/// IPC_CALL 의 수신된 버퍼의 내용을 BIN 형식으로 읽는다.
8c2952457   김태훈   응용 프로그램 추가
99
  
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
100
101
  // int			ipc_call_read_xml	( void *buf, int len ); 									/// IPC_CALL 의 수신된 버퍼의 내용을 XML 형식으로 읽는다.
  //int			ipc_call_read_asc	( void *buf, int len ); 									/// IPC_CALL 의 수신된 버퍼의 내용을 ASC 형식으로 읽는다.
8c2952457   김태훈   응용 프로그램 추가
102
                                	    
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
103
104
105
  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 형식으로 데이터를 전송한다.
8c2952457   김태훈   응용 프로그램 추가
106
                                	    
3061c73f6   김태훈   인코딩 변경 EUC-KR -> ...
107
108
109
  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 형식으로 데이터를 전송하고 수신한다.
8c2952457   김태훈   응용 프로그램 추가
110
111
112
113
114
115
116
117
118
119
  
  
  /// @}
  
  #ifdef __cplusplus 
  }
  #endif 
  
  #endif