aboutsummaryrefslogtreecommitdiffstats
path: root/octvc1/octvocnet_pkt.h
blob: d6d823abacdb539356e673de84653ae761df7cbc (plain)
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\

File: OCTVOCNET_PKT.h

Copyright (c) 2017 Octasic Inc. All rights reserved.

Description: 

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.


Release: OCTSDR Software Development Kit OCTSDR_GSM-02.09.00-B1607 (2017/08/29)

$Revision: $

\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

#ifndef __OCTVOCNET_PKT_H__
#define __OCTVOCNET_PKT_H__


/*****************************  INCLUDE FILES  *******************************/
#include "../octdev_types.h"
#include "../octpkt/octpkt_hdr.h"
#include "../octpkt/octpkt_hdrxl.h"
#include "octvc1_handle.h"
#include "octvc1_module.h"


/************************  COMMON DEFINITIONS  *******************************/

#define cOCTVOCNET_PKT_ETHERTYPE							cOCTPKT_HDR_ETHERTYPE	
#define cOCTVOCNET_PKT_ETHERTYPE_XL							cOCTPKT_HDRXL_ETHERTYPE	

/*-------------------------------------------------------------------------------------
 	VocalloNet Packet Format Values
-------------------------------------------------------------------------------------*/
#define cOCTVOCNET_PKT_FORMAT_MASK							cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT	
#define cOCTVOCNET_PKT_FORMAT_BIT_OFFSET					cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_OFFSET	
#define cOCTVOCNET_PKT_FORMAT_BIT_MASK						cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_FORMAT_BIT_MASK	
#define cOCTVOCNET_PKT_TRACE_MASK							cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE	
#define cOCTVOCNET_PKT_TRACE_BIT_OFFSET						cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_OFFSET	
#define cOCTVOCNET_PKT_TRACE_BIT_MASK						cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_TRACE_BIT_MASK	
#define cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_MASK			cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE	
#define cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_BIT_OFFSET		cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_OFFSET	
#define cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_BIT_MASK		cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_CONTROL_PROTOCOL_TYPE_BIT_MASK	
#define cOCTVOCNET_PKT_LENGTH_MASK							cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH	
#define cOCTVOCNET_PKT_LENGTH_BIT_OFFSET					cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_OFFSET	
#define cOCTVOCNET_PKT_LENGTH_BIT_MASK						cOCTPKT_HDR_FORMAT_PROTO_TYPE_LEN_MASK_LENGTH_BIT_MASK	

/*-------------------------------------------------------------------------------------
 	VocalloNet Format Control Packet
-------------------------------------------------------------------------------------*/
#define cOCTVOCNET_PKT_FORMAT_CTRL							0x00	
#define cOCTVOCNET_PKT_FORMAT_F								0x01	
#define cOCTVOCNET_PKT_FORMAT_DATA_FRAGMENT					0x02	
#define cOCTVOCNET_PKT_FORMAT_MODULE_DATA					0x03	 	/* Use to send OCTVC1 MODULE DATA */

/*-------------------------------------------------------------------------------------
 	VocalloNet Format Control Bit Shifted
-------------------------------------------------------------------------------------*/
#define cOCTVOCNET_PKT_BITSHIFTED_FORMAT_CTRL				(cOCTVOCNET_PKT_FORMAT_CTRL<<cOCTVOCNET_PKT_FORMAT_BIT_OFFSET)	
#define cOCTVOCNET_PKT_BITSHIFTED_FORMAT_F					(cOCTVOCNET_PKT_FORMAT_F<<cOCTVOCNET_PKT_FORMAT_BIT_OFFSET)	
#define cOCTVOCNET_PKT_BITSHIFTED_FORMAT_DATA_FRAGMENT		(cOCTVOCNET_PKT_FORMAT_DATA_FRAGMENT<<cOCTVOCNET_PKT_FORMAT_BIT_OFFSET)	
#define cOCTVOCNET_PKT_BITSHIFTED_FORMAT_MODULE_DATA		(cOCTVOCNET_PKT_FORMAT_MODULE_DATA<<cOCTVOCNET_PKT_FORMAT_BIT_OFFSET)	

/*-------------------------------------------------------------------------------------
 	VocalloNet Packet F sub-type Values
-------------------------------------------------------------------------------------*/
#define cOCTVOCNET_PKT_SUBTYPE_UNSPECIFIED					0x0		
#define cOCTVOCNET_PKT_SUBTYPE_API_EVENT					0x1		
#define cOCTVOCNET_PKT_SUBTYPE_MODULE_DATA					0x2		

/*-------------------------------------------------------------------------------------
 	Control Protocol Types.
-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------
	tOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_ENUM :
-------------------------------------------------------------------------------------*/
#define tOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_ENUM			tOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM

#define cOCTVOCNET_PKT_CONTROL_PROTOCOL_TYPE_ENUM_OCTVC1	cOCTPKT_HDR_CONTROL_PROTOCOL_TYPE_ENUM_OCTVOCNET	 	/* Vocallo Control Protocol */

/*-------------------------------------------------------------------------------------
 	Octvocnet types.
-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------
	tOCTVOCNET_PKT_HEADER :
-------------------------------------------------------------------------------------*/
#define tOCTVOCNET_PKT_HEADER								tOCTPKT_HDR


/*-------------------------------------------------------------------------------------
	tOCTVOCNET_PKT_HEADER_XL :
-------------------------------------------------------------------------------------*/
#define tOCTVOCNET_PKT_HEADER_XL							tOCTPKT_HDRXL


/*-------------------------------------------------------------------------------------
	tOCTVOCNET_PKT_CTL_HEADER
 		VocalloNet Control Packet Header

 Members:
	ulDestFifoId
 		Destination FIFO ID.
	ulSourceFifoId
 		Source FIFO ID.
	ulSocketId
 		Return socket identifier.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32	ulDestFifoId;
	tOCT_UINT32	ulSourceFifoId;
	tOCT_UINT32	ulSocketId;

} tOCTVOCNET_PKT_CTL_HEADER;

/*-------------------------------------------------------------------------------------
	tOCTVOCNET_PKT_DATA_HEADER
 		VocalloNet Data Packet Header

 Members:
	hLogicalObj
 		Logical Obj Handle.
	ulLogicalObjPktPort
 		Logical_Object Packet_Port.
	ulDestFifoId
 		Destination FIFO ID.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVC1_HANDLE_OBJECT	hLogicalObj;
	tOCT_UINT32				ulLogicalObjPktPort;
	tOCT_UINT32				ulDestFifoId;

} tOCTVOCNET_PKT_DATA_HEADER;

/*-------------------------------------------------------------------------------------
 	VocalloNet Logical Object port signature for event session
-------------------------------------------------------------------------------------*/
#define cOCTVOCNET_PKT_DATA_LOGICAL_OBJ_PKT_PORT_EVENT_SESSION	0x19751007	
/*-------------------------------------------------------------------------------------
	tOCTVOCNET_PKT_DATA_F_HEADER
 		VocalloNet Format F Packet Header (Raw Data packet)

 Members:
	VocNetHeader
	ulTimestamp
 		bits[31:0] = Timestamp
	ulSubType
 		bits[31:0] = SubType
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVOCNET_PKT_DATA_HEADER	VocNetHeader;
	tOCT_UINT32					ulTimestamp;
	tOCT_UINT32					ulSubType;

} tOCTVOCNET_PKT_DATA_F_HEADER;

/*-------------------------------------------------------------------------------------
	tOCTVOCNET_PKT_DATA_FRAGMENT_HEADER
 		VocalloNet Data Packet Header

 Members:
	DataHeader
	ulSequenceId
 		Sequence id.
	ulTransfertTotalSize
 		Total byte transert for that ulSequenceId (for all ulFragmentTotalCnt fragment).
 		If ulTransfertTotalSize set 0, the total ulTransfertTotalSize is unknown
	ulFragmentTotalCnt
 		Total count of fragment.
 		If ulFragmentTotalCnt set 0, the total ulFragmentTotalCnt is unknown
	ulFragmentId
 		Fragment id.
	ulFragmentDataOffset
 		Byte offset where to reassemble the data
	ulFragmentDataSize
 		Data prensent in this fragment.
	ulUserId
 		User Id.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCTVOCNET_PKT_DATA_F_HEADER	DataHeader;
	tOCT_UINT32						ulSequenceId;
	tOCT_UINT32						ulTransfertTotalSize;
	tOCT_UINT32						ulFragmentTotalCnt;
	tOCT_UINT32						ulFragmentId;
	tOCT_UINT32						ulFragmentDataOffset;
	tOCT_UINT32						ulFragmentDataSize;
	tOCT_UINT32						ulUserId;

} tOCTVOCNET_PKT_DATA_FRAGMENT_HEADER;


#endif /* __OCTVOCNET_PKT_H__ */