versadac  1
versadac - Scalable Recorder Firmware
rpctools.h
1 /*---------------------------------------------------------------------------*/
2 /* Copyright (C) 2006 Woodhead Software & Electonics. All rights reserved. */
3 /*---------------------------------------------------------------------------*/
4 /* This program is protected by international copyright. */
5 /* */
6 /* The use of this software including but not limited to its Source Code */
7 /* is subject to restrictions as agreed in the license agreement between */
8 /* you and Woodhead. */
9 /* Copying or distribution is not allowed unless expressly permitted */
10 /* according to your license agreement with Woodhead. */
11 /*---------------------------------------------------------------------------*/
12 /* */
13 /* Project : STACK PROFINET Controller */
14 /* Component : RPC Interface */
15 /* $Workfile:: rpctools.h $*/
16 /* $Revision:: 2 $*/
17 /* $Date:: 9/22/09 6:01p $*/
18 /* */
19 /*---------------------------------------------------------------------------*/
20 /* */
21 /* D e s c r i p t i o n : */
22 /* */
23 /* */
24 /*---------------------------------------------------------------------------*/
25 #ifndef __RPCTOOLS_H__
26 #define __RPCTOOLS_H__
27 
28 #include "os_pck.h"
29 
30 
31 /*---------------------------------------------------------------------------*/
32 /* RPC DATA BUFFER */
33 /*---------------------------------------------------------------------------*/
34 typedef struct _RPC_DATA_BUFFER
35 {
36  APP_LPBYTE pbyBuffer; /*4 - 0*/ /*Pointeur on allocated memory bloc */
37  APP_LPBYTE pbyCurrent; /*4 - 4*/ /*Pointeur on beginning of the data */
38  APP_WORD wMaxDataLen; /*2 - 8*/ /*Sizeof allocated memory bloc */
39  APP_WORD wDataLen; /*2 - 10*/ /*Current data len in bloc */
40  APP_BOOL bLittleEndian; /*2 - 12*/ /*Indicate if bloc is Little/Big Endian*/
41  APP_BYTE byMode; /*1 - 14*/ /*Indicate if bloc is currently managed from 0:end/1:begin*/
42 #ifdef PADDING
43  APP_BYTE Padding; /*1 - 15*/ /*Indicate if bloc is currently managed from 0:end/1:begin*/
44 #endif
45 } PACK_ALIGNEMENT(ST_RPC_DATA_BUFFER),APP_FAR *LPST_RPC_DATA_BUFFER;
46 
47 #define ST_RPC_DATA_BUFFER_SIZEOF sizeof(ST_RPC_DATA_BUFFER)
48 STRUCT_SIZE_CHECK(ST_RPC_DATA_BUFFER, ST_RPC_DATA_BUFFER_SIZEOF)
49 
50 
51 #define RPC_DATA_COPY_BEGIN 1
52 #define RPC_DATA_COPY_END 0
53 
54 #define GET_DATA_ALLOC_PTR(data) (data)->pbyBuffer
55 #define GET_DATA_ALLOC_MAX_DATA(data) (data)->wMaxDataLen
56 #define GET_DATA_CURRENT_PTR(data) (data)->pbyCurrent
57 #define GET_DATA_CURRENT_SIZE(data) (data)->wDataLen
58 #define GET_DATA_LITTLEENDIAN(data) (data)->bLittleEndian
59 #define GET_DATA_MODE(data) (data)->bMode
60 
61 #define SET_DATA_ALLOC_PTR(data,val) (data)->pbyBuffer = val
62 #define SET_DATA_ALLOC_MAX_DATA(data,val) (data)->wMaxDataLen = val
63 #define SET_DATA_CURRENT_PTR(data,val) (data)->pbyCurrent = val
64 #define SET_DATA_CURRENT_SIZE(data,val) (data)->wDataLen = val
65 #define SET_DATA_LITTLEENDIAN(data,val) (data)->bLittleEndian = val
66 #define SET_DATA_MODE(data,val) (data)->bMode = val
67 
68 APP_VOID data_set_ptr(LPST_RPC_DATA_BUFFER pstData,APP_LPBYTE pbyData,APP_WORD wMaxDataLen,APP_BOOL bLittleEndian,APP_BYTE bMode);
69 APP_VOID data_reset_ptr(LPST_RPC_DATA_BUFFER pstData,APP_BOOL bLittleEndian,APP_BYTE bMode);
70 APP_VOID data_release_ptr(LPST_RPC_DATA_BUFFER pstData);
71 APP_BOOL data_move_ptr(LPST_RPC_DATA_BUFFER pstData,APP_WORD wOffset);
72 
73 #include "os_unpck.h"
74 
75 #endif
Definition: rpctools.h:34