anjana_sreekumar@infosys.com | 991c206 | 2020-01-08 11:42:57 +0530 | [diff] [blame^] | 1 | /* |
| 2 | Copyright 2019-present Infosys Limited |
| 3 | |
| 4 | SPDX-License-Identifier: Apache-2.0 |
| 5 | |
| 6 | */ |
| 7 | |
| 8 | |
| 9 | |
| 10 | #include "gtpV2Message.h" |
| 11 | |
| 12 | GtpV2Message::GtpV2Message() { |
| 13 | // TODO Auto-generated constructor stub |
| 14 | |
| 15 | } |
| 16 | |
| 17 | GtpV2Message::~GtpV2Message() { |
| 18 | // TODO Auto-generated destructor stub |
| 19 | } |
| 20 | |
| 21 | void GtpV2Message::encodeHeader(MsgBuffer& buffer, GtpV2MessageHeader& msgHeader) |
| 22 | { |
| 23 | buffer.writeBits(2, 3); // Gtpversion 2 |
| 24 | buffer.writeBits(0, 1); //Pigiback - TODO later |
| 25 | buffer.writeBits(msgHeader.teidPresent, 1); |
| 26 | buffer.skipBits(3); |
| 27 | |
| 28 | buffer.writeUint8(msgHeader.msgType); |
| 29 | buffer.writeUint16(msgHeader.msgLength); |
| 30 | |
| 31 | if (msgHeader.teidPresent) |
| 32 | { |
| 33 | buffer.writeUint32(msgHeader.teid); |
| 34 | } |
| 35 | |
| 36 | Uint32 seqNumber = msgHeader.sequenceNumber << 8; |
| 37 | std::cout << "current seq num indx is " << buffer.getCurrentIndex() << std::endl; |
| 38 | buffer.writeUint32(seqNumber); |
| 39 | |
| 40 | } |
| 41 | |
| 42 | bool GtpV2Message::decodeHeader(MsgBuffer& buffer, GtpV2MessageHeader& msgHeader) |
| 43 | { |
| 44 | buffer.skipBits(4); |
| 45 | msgHeader.teidPresent = buffer.readBit(); |
| 46 | buffer.skipBits(3); |
| 47 | |
| 48 | buffer.readUint8(msgHeader.msgType); |
| 49 | buffer.readUint16(msgHeader.msgLength); |
| 50 | |
| 51 | if (msgHeader.teidPresent) |
| 52 | { |
| 53 | buffer.readUint32(msgHeader.teid); |
| 54 | } |
| 55 | Uint32 seqNumber; |
| 56 | |
| 57 | buffer.readUint32(seqNumber); |
| 58 | msgHeader.sequenceNumber = (seqNumber >> 8); |
| 59 | |
| 60 | return true; //TODO |
| 61 | |
| 62 | } |
| 63 | |