blob: a387c44a12e7552c7e7f0b167ad86ca59513ea09 [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 "fContainerIe.h"
15#include "dataTypeCodecUtils.h"
16
17FContainerIe::FContainerIe()
18{
19 ieType = 118;
20 // TODO
21
22}
23
24FContainerIe::~FContainerIe() {
25 // TODO Auto-generated destructor stub
26}
27
28bool FContainerIe::encodeFContainerIe(MsgBuffer &buffer, FContainerIeData const &data)
29{
30 buffer.skipBits(4);
31
32 if (!(data.containerType<= 4))
33 {
34 errorStream.add((char *)"Data validation failure: containerType\n");
35 return false;
36 }
37 if(!(buffer.writeBits(data.containerType, 4)))
38 {
39 errorStream.add((char *)"Encoding of containerType failed\n");
40 return false;
41 }
42 if (!(buffer.writeUint8(data.fContainerField)))
43 {
44 errorStream.add((char *)"Encoding of fContainerField failed\n");
45 return false;
46 }
47
48 return true;
49}
50
51bool FContainerIe::decodeFContainerIe(MsgBuffer &buffer, FContainerIeData &data, Uint16 length)
52{
53 // TODO optimize the length checks
54
55 Uint16 ieBoundary = buffer.getCurrentIndex() + length;
56 buffer.skipBits(4);
57 if (buffer.getCurrentIndex() > ieBoundary)
58 {
59 errorStream.add((char *)"Attempt to read beyond IE boundary: \n");
60 return false;
61 }
62
63 data.containerType = buffer.readBits(4);
64 // confirm that we are not reading beyond the IE boundary
65 if (buffer.getCurrentIndex() > ieBoundary)
66 {
67 errorStream.add((char *)"Attempt to read beyond IE boundary: containerType\n");
68 return false;
69 }
70 if (!(data.containerType<= 4))
71 {
72 errorStream.add((char *)"Data validation failure : containerType\n");
73 return false; //TODO need to add validations
74 }
75
76 buffer.readUint8(data.fContainerField);
77 if (buffer.getCurrentIndex() > ieBoundary)
78 {
79 errorStream.add((char *)"Attempt to read beyond IE boundary: fContainerField\n");
80 return false;
81 }
82
83 // The IE is decoded now. The buffer index should be pointing to the
84 // IE Boundary. If not, we have some more data left for the IE which we don't know
85 // how to decode
86 if (ieBoundary == buffer.getCurrentIndex())
87 {
88 return true;
89 }
90 else
91 {
92 errorStream.add((char *)"Unable to decode IE FContainerIe\n");
93 return false;
94 }
95}
96void FContainerIe::displayFContainerIe_v(FContainerIeData const &data, Debug &stream)
97{
98 stream.incrIndent();
99 stream.add((char *)"FContainerIeData:");
100 stream.incrIndent();
101 stream.endOfLine();
102
103 stream.add( (char *)"containerType: ");
104 stream.add((Uint8)data.containerType);
105 stream.endOfLine();
106
107 stream.add((char *)"fContainerField: ");
108 stream.add(data.fContainerField);
109 stream.endOfLine();
110 stream.decrIndent();
111 stream.decrIndent();
112}