Blame view

app/app-prime-modbus/include/fanet/ipc_call.h 4.41 KB
8c2952457   김태훈   응용 프로그램 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  /**    
      @file     ipc_call.h
      @date     2008-06-30
      @author   오재경 freefrug@falinux.com
      @brief    프로세스간의 명령 전달을 구현한다.
  
      @modify   
      @todo    
      @bug     
      @remark   
      
      @warning 
  */
  //
  //  저작권    에프에이리눅스(주)
  //            외부공개 금지
  //
  //----------------------------------------------------------------------------
  
  #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    /// 
  
  /// IPC CALL 에서의 데이타 수신시 호출되는 사용자 이벤트 함수 형태
  typedef void (*ipc_call_func_t)(unsigned long src_id, unsigned long msg_type, void *buf, int len );
  
  /// @{
  /// @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];				/// 메시지 버퍼
  
  } 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 	
  
  /// @{
  /// @brief  외부에서 사용할수 있는 객체함수 리스트 
  
  
  
  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_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_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_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_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 형식으로 데이터를 전송하고 수신한다.
  
  
  /// @}
  
  #ifdef __cplusplus 
  }
  #endif 
  
  #endif