blob: 000b92ae3496592590239de28d911f55385aaa7f [file] [log] [blame]
anjana_sreekumar@infosys.com991c2062020-01-08 11:42:57 +05301/*
2 * Copyright 2019-present Infosys Limited  
3 *   
4 * SPDX-License-Identifier: Apache-2.0    
5 */
6/******************************************************************************
7 *
8 * This is an auto generated file.
9 * Please do not edit this file.
10 * All edits to be made through template source file
11 * <TOP-DIR/scripts/GtpV2StackCodeGen/tts/ietemplate.cpp.tt>
12 ******************************************************************************/
13
14#include "presenceReportingAreaActionIe.h"
15#include "dataTypeCodecUtils.h"
16
17PresenceReportingAreaActionIe::PresenceReportingAreaActionIe()
18{
19 ieType = 177;
20 // TODO
21
22}
23
24PresenceReportingAreaActionIe::~PresenceReportingAreaActionIe() {
25 // TODO Auto-generated destructor stub
26}
27
28bool PresenceReportingAreaActionIe::encodePresenceReportingAreaActionIe(MsgBuffer &buffer, PresenceReportingAreaActionIeData const &data)
29{
30 buffer.skipBits(4);
31
32 if(!(buffer.writeBits(data.inapra, 1)))
33 {
34 errorStream.add((char *)"Encoding of inapra failed\n");
35 return false;
36 }
37 if (!(data.action<=3))
38 {
39 errorStream.add((char *)"Data validation failure: action\n");
40 return false;
41 }
42 if(!(buffer.writeBits(data.action, 3)))
43 {
44 errorStream.add((char *)"Encoding of action failed\n");
45 return false;
46 }
47 if (!(buffer.writeUint32(data.presenceReportingAreaIdentifier)))
48 {
49 errorStream.add((char *)"Encoding of presenceReportingAreaIdentifier failed\n");
50 return false;
51 }
52 if(!(buffer.writeBits(data.numberOfTAI, 4)))
53 {
54 errorStream.add((char *)"Encoding of numberOfTAI failed\n");
55 return false;
56 }
57 if(!(buffer.writeBits(data.numberOfRAI, 4)))
58 {
59 errorStream.add((char *)"Encoding of numberOfRAI failed\n");
60 return false;
61 }
62 buffer.skipBits(2);
63
64 if(!(buffer.writeBits(data.numberOfMacroeNodeB, 6)))
65 {
66 errorStream.add((char *)"Encoding of numberOfMacroeNodeB failed\n");
67 return false;
68 }
69 buffer.skipBits(2);
70
71 if(!(buffer.writeBits(data.numberOfHomeeNodeB, 6)))
72 {
73 errorStream.add((char *)"Encoding of numberOfHomeeNodeB failed\n");
74 return false;
75 }
76 buffer.skipBits(2);
77
78 if(!(buffer.writeBits(data.numberOfECGI, 6)))
79 {
80 errorStream.add((char *)"Encoding of numberOfECGI failed\n");
81 return false;
82 }
83 buffer.skipBits(2);
84
85 if(!(buffer.writeBits(data.numberOfSAI, 6)))
86 {
87 errorStream.add((char *)"Encoding of numberOfSAI failed\n");
88 return false;
89 }
90 buffer.skipBits(2);
91
92 if(!(buffer.writeBits(data.numberOfCGI, 6)))
93 {
94 errorStream.add((char *)"Encoding of numberOfCGI failed\n");
95 return false;
96 }
97 if (data.numberOfTAI !=0)
98 {
99 if (!(DataTypeCodecUtils::encodeTaiFieldArray15(buffer, data.tais)))
100 {
101 errorStream.add((char *)"Encoding of tais failed\n");
102 return false;
103 }
104 }
105 if (data.numberOfMacroeNodeB !=0)
106 {
107 if (!(buffer.writeUint8(data.macroeNBIds)))
108 {
109 errorStream.add((char *)"Encoding of macroeNBIds failed\n");
110 return false;
111 }
112 }
113 if (data.numberOfHomeeNodeB !=0)
114 {
115 if (!(buffer.writeUint8(data.homeeNBIds)))
116 {
117 errorStream.add((char *)"Encoding of homeeNBIds failed\n");
118 return false;
119 }
120 }
121 if (data.numberOfECGI !=0)
122 {
123 if (!(DataTypeCodecUtils::encodeEcgiFieldArray64(buffer, data.ecgis)))
124 {
125 errorStream.add((char *)"Encoding of ecgis failed\n");
126 return false;
127 }
128 }
129 if (data.numberOfRAI !=0)
130 {
131 if (!(DataTypeCodecUtils::encodeRaiFieldArray15(buffer, data.raiss)))
132 {
133 errorStream.add((char *)"Encoding of raiss failed\n");
134 return false;
135 }
136 }
137 if (data.numberOfSAI !=0)
138 {
139 if (!(DataTypeCodecUtils::encodeSaiFieldArray64(buffer, data.saiss)))
140 {
141 errorStream.add((char *)"Encoding of saiss failed\n");
142 return false;
143 }
144 }
145 if (data.numberOfCGI !=0)
146 {
147 if (!(DataTypeCodecUtils::encodeCgiFieldArray64(buffer, data.cgiss)))
148 {
149 errorStream.add((char *)"Encoding of cgiss failed\n");
150 return false;
151 }
152 }
153 buffer.skipBits(2);
154
155 if(!(buffer.writeBits(data.numberOfExtendedMacroeNodeB, 6)))
156 {
157 errorStream.add((char *)"Encoding of numberOfExtendedMacroeNodeB failed\n");
158 return false;
159 }
160 if (data.numberOfExtendedMacroeNodeB !=0)
161 {
162 if (!(buffer.writeUint8(data.extendedMacroeNBIds)))
163 {
164 errorStream.add((char *)"Encoding of extendedMacroeNBIds failed\n");
165 return false;
166 }
167 }
168
169 return true;
170}
171
172bool PresenceReportingAreaActionIe::decodePresenceReportingAreaActionIe(MsgBuffer &buffer, PresenceReportingAreaActionIeData &data, Uint16 length)
173{
174 // TODO optimize the length checks
175
176 Uint16 ieBoundary = buffer.getCurrentIndex() + length;
177 buffer.skipBits(4);
178 if (buffer.getCurrentIndex() > ieBoundary)
179 {
180 errorStream.add((char *)"Attempt to read beyond IE boundary: \n");
181 return false;
182 }
183
184 data.inapra = buffer.readBits(1);
185 // confirm that we are not reading beyond the IE boundary
186 if (buffer.getCurrentIndex() > ieBoundary)
187 {
188 errorStream.add((char *)"Attempt to read beyond IE boundary: inapra\n");
189 return false;
190 }
191 data.action = buffer.readBits(3);
192 // confirm that we are not reading beyond the IE boundary
193 if (buffer.getCurrentIndex() > ieBoundary)
194 {
195 errorStream.add((char *)"Attempt to read beyond IE boundary: action\n");
196 return false;
197 }
198 if (!(data.action<=3))
199 {
200 errorStream.add((char *)"Data validation failure : action\n");
201 return false; //TODO need to add validations
202 }
203
204 buffer.readUint32(data.presenceReportingAreaIdentifier);
205 if (buffer.getCurrentIndex() > ieBoundary)
206 {
207 errorStream.add((char *)"Attempt to read beyond IE boundary: presenceReportingAreaIdentifier\n");
208 return false;
209 }
210 data.numberOfTAI = buffer.readBits(4);
211 // confirm that we are not reading beyond the IE boundary
212 if (buffer.getCurrentIndex() > ieBoundary)
213 {
214 errorStream.add((char *)"Attempt to read beyond IE boundary: numberOfTAI\n");
215 return false;
216 }
217 data.numberOfRAI = buffer.readBits(4);
218 // confirm that we are not reading beyond the IE boundary
219 if (buffer.getCurrentIndex() > ieBoundary)
220 {
221 errorStream.add((char *)"Attempt to read beyond IE boundary: numberOfRAI\n");
222 return false;
223 }
224 buffer.skipBits(2);
225 if (buffer.getCurrentIndex() > ieBoundary)
226 {
227 errorStream.add((char *)"Attempt to read beyond IE boundary: \n");
228 return false;
229 }
230
231 data.numberOfMacroeNodeB = buffer.readBits(6);
232 // confirm that we are not reading beyond the IE boundary
233 if (buffer.getCurrentIndex() > ieBoundary)
234 {
235 errorStream.add((char *)"Attempt to read beyond IE boundary: numberOfMacroeNodeB\n");
236 return false;
237 }
238 buffer.skipBits(2);
239 if (buffer.getCurrentIndex() > ieBoundary)
240 {
241 errorStream.add((char *)"Attempt to read beyond IE boundary: \n");
242 return false;
243 }
244
245 data.numberOfHomeeNodeB = buffer.readBits(6);
246 // confirm that we are not reading beyond the IE boundary
247 if (buffer.getCurrentIndex() > ieBoundary)
248 {
249 errorStream.add((char *)"Attempt to read beyond IE boundary: numberOfHomeeNodeB\n");
250 return false;
251 }
252 buffer.skipBits(2);
253 if (buffer.getCurrentIndex() > ieBoundary)
254 {
255 errorStream.add((char *)"Attempt to read beyond IE boundary: \n");
256 return false;
257 }
258
259 data.numberOfECGI = buffer.readBits(6);
260 // confirm that we are not reading beyond the IE boundary
261 if (buffer.getCurrentIndex() > ieBoundary)
262 {
263 errorStream.add((char *)"Attempt to read beyond IE boundary: numberOfECGI\n");
264 return false;
265 }
266 buffer.skipBits(2);
267 if (buffer.getCurrentIndex() > ieBoundary)
268 {
269 errorStream.add((char *)"Attempt to read beyond IE boundary: \n");
270 return false;
271 }
272
273 data.numberOfSAI = buffer.readBits(6);
274 // confirm that we are not reading beyond the IE boundary
275 if (buffer.getCurrentIndex() > ieBoundary)
276 {
277 errorStream.add((char *)"Attempt to read beyond IE boundary: numberOfSAI\n");
278 return false;
279 }
280 buffer.skipBits(2);
281 if (buffer.getCurrentIndex() > ieBoundary)
282 {
283 errorStream.add((char *)"Attempt to read beyond IE boundary: \n");
284 return false;
285 }
286
287 data.numberOfCGI = buffer.readBits(6);
288 // confirm that we are not reading beyond the IE boundary
289 if (buffer.getCurrentIndex() > ieBoundary)
290 {
291 errorStream.add((char *)"Attempt to read beyond IE boundary: numberOfCGI\n");
292 return false;
293 }
294
295 Uint16 lengthLeft = length;
296
297 if (data.numberOfTAI !=0)
298 {
299 lengthLeft = ieBoundary - buffer.getCurrentIndex();
300 if (!(DataTypeCodecUtils::decodeTaiFieldArray15(buffer, data.tais, lengthLeft, 0)))
301 {
302 errorStream.add((char *)"Failed to decode: tais\n");
303 return false;
304 }
305 }
306
307 if (data.numberOfMacroeNodeB !=0)
308 {
309
310 buffer.readUint8(data.macroeNBIds);
311 if (buffer.getCurrentIndex() > ieBoundary)
312 {
313 errorStream.add((char *)"Attempt to read beyond IE boundary: macroeNBIds\n");
314 return false;
315 }
316 }
317
318 if (data.numberOfHomeeNodeB !=0)
319 {
320
321 buffer.readUint8(data.homeeNBIds);
322 if (buffer.getCurrentIndex() > ieBoundary)
323 {
324 errorStream.add((char *)"Attempt to read beyond IE boundary: homeeNBIds\n");
325 return false;
326 }
327 }
328
329 if (data.numberOfECGI !=0)
330 {
331 lengthLeft = ieBoundary - buffer.getCurrentIndex();
332 if (!(DataTypeCodecUtils::decodeEcgiFieldArray64(buffer, data.ecgis, lengthLeft, 0)))
333 {
334 errorStream.add((char *)"Failed to decode: ecgis\n");
335 return false;
336 }
337 }
338
339 if (data.numberOfRAI !=0)
340 {
341 lengthLeft = ieBoundary - buffer.getCurrentIndex();
342 if (!(DataTypeCodecUtils::decodeRaiFieldArray15(buffer, data.raiss, lengthLeft, 0)))
343 {
344 errorStream.add((char *)"Failed to decode: raiss\n");
345 return false;
346 }
347 }
348
349 if (data.numberOfSAI !=0)
350 {
351 lengthLeft = ieBoundary - buffer.getCurrentIndex();
352 if (!(DataTypeCodecUtils::decodeSaiFieldArray64(buffer, data.saiss, lengthLeft, 0)))
353 {
354 errorStream.add((char *)"Failed to decode: saiss\n");
355 return false;
356 }
357 }
358
359 if (data.numberOfCGI !=0)
360 {
361 lengthLeft = ieBoundary - buffer.getCurrentIndex();
362 if (!(DataTypeCodecUtils::decodeCgiFieldArray64(buffer, data.cgiss, lengthLeft, 0)))
363 {
364 errorStream.add((char *)"Failed to decode: cgiss\n");
365 return false;
366 }
367 }
368 buffer.skipBits(2);
369 if (buffer.getCurrentIndex() > ieBoundary)
370 {
371 errorStream.add((char *)"Attempt to read beyond IE boundary: \n");
372 return false;
373 }
374
375 data.numberOfExtendedMacroeNodeB = buffer.readBits(6);
376 // confirm that we are not reading beyond the IE boundary
377 if (buffer.getCurrentIndex() > ieBoundary)
378 {
379 errorStream.add((char *)"Attempt to read beyond IE boundary: numberOfExtendedMacroeNodeB\n");
380 return false;
381 }
382
383 if (data.numberOfExtendedMacroeNodeB !=0)
384 {
385
386 buffer.readUint8(data.extendedMacroeNBIds);
387 if (buffer.getCurrentIndex() > ieBoundary)
388 {
389 errorStream.add((char *)"Attempt to read beyond IE boundary: extendedMacroeNBIds\n");
390 return false;
391 }
392 }
393
394 // The IE is decoded now. The buffer index should be pointing to the
395 // IE Boundary. If not, we have some more data left for the IE which we don't know
396 // how to decode
397 if (ieBoundary == buffer.getCurrentIndex())
398 {
399 return true;
400 }
401 else
402 {
403 errorStream.add((char *)"Unable to decode IE PresenceReportingAreaActionIe\n");
404 return false;
405 }
406}
407void PresenceReportingAreaActionIe::displayPresenceReportingAreaActionIe_v(PresenceReportingAreaActionIeData const &data, Debug &stream)
408{
409 stream.incrIndent();
410 stream.add((char *)"PresenceReportingAreaActionIeData:");
411 stream.incrIndent();
412 stream.endOfLine();
413
414 stream.add( (char *)"inapra: ");
415 stream.add((Uint8)data.inapra);
416 stream.endOfLine();
417
418 stream.add( (char *)"action: ");
419 stream.add((Uint8)data.action);
420 stream.endOfLine();
421
422 stream.add((char *)"presenceReportingAreaIdentifier: ");
423 stream.add(data.presenceReportingAreaIdentifier);
424 stream.endOfLine();
425
426 stream.add( (char *)"numberOfTAI: ");
427 stream.add((Uint8)data.numberOfTAI);
428 stream.endOfLine();
429
430 stream.add( (char *)"numberOfRAI: ");
431 stream.add((Uint8)data.numberOfRAI);
432 stream.endOfLine();
433
434 stream.add( (char *)"numberOfMacroeNodeB: ");
435 stream.add((Uint8)data.numberOfMacroeNodeB);
436 stream.endOfLine();
437
438 stream.add( (char *)"numberOfHomeeNodeB: ");
439 stream.add((Uint8)data.numberOfHomeeNodeB);
440 stream.endOfLine();
441
442 stream.add( (char *)"numberOfECGI: ");
443 stream.add((Uint8)data.numberOfECGI);
444 stream.endOfLine();
445
446 stream.add( (char *)"numberOfSAI: ");
447 stream.add((Uint8)data.numberOfSAI);
448 stream.endOfLine();
449
450 stream.add( (char *)"numberOfCGI: ");
451 stream.add((Uint8)data.numberOfCGI);
452 stream.endOfLine();
453
454 if (data.numberOfTAI !=0)
455 {
456 stream.add((char *)"tais:");
457 stream.endOfLine();
458 DataTypeCodecUtils::displayTaiFieldArray15_v(data.tais, stream);
459 }
460
461 if (data.numberOfMacroeNodeB !=0)
462 {
463 stream.add((char *)"macroeNBIds: ");
464 stream.add(data.macroeNBIds);
465 stream.endOfLine();
466 }
467
468 if (data.numberOfHomeeNodeB !=0)
469 {
470 stream.add((char *)"homeeNBIds: ");
471 stream.add(data.homeeNBIds);
472 stream.endOfLine();
473 }
474
475 if (data.numberOfECGI !=0)
476 {
477 stream.add((char *)"ecgis:");
478 stream.endOfLine();
479 DataTypeCodecUtils::displayEcgiFieldArray64_v(data.ecgis, stream);
480 }
481
482 if (data.numberOfRAI !=0)
483 {
484 stream.add((char *)"raiss:");
485 stream.endOfLine();
486 DataTypeCodecUtils::displayRaiFieldArray15_v(data.raiss, stream);
487 }
488
489 if (data.numberOfSAI !=0)
490 {
491 stream.add((char *)"saiss:");
492 stream.endOfLine();
493 DataTypeCodecUtils::displaySaiFieldArray64_v(data.saiss, stream);
494 }
495
496 if (data.numberOfCGI !=0)
497 {
498 stream.add((char *)"cgiss:");
499 stream.endOfLine();
500 DataTypeCodecUtils::displayCgiFieldArray64_v(data.cgiss, stream);
501 }
502
503 stream.add( (char *)"numberOfExtendedMacroeNodeB: ");
504 stream.add((Uint8)data.numberOfExtendedMacroeNodeB);
505 stream.endOfLine();
506
507 if (data.numberOfExtendedMacroeNodeB !=0)
508 {
509 stream.add((char *)"extendedMacroeNBIds: ");
510 stream.add(data.extendedMacroeNBIds);
511 stream.endOfLine();
512 }
513 stream.decrIndent();
514 stream.decrIndent();
515}