ISSUE ID:- RICAPP-216
This bouncer is written using C++ xApp framework functionality and have E2AP 2.0 , E2SM KPM 2.0 , E2SM RC 1.0.3 support.

Change-Id: Ie5ec50165dc71cabf1b451858a06a2b500f6a4a3
Signed-off-by: sandeepindia <kumar.sandeep3@hcl.com>
diff --git a/Bouncer/e2ap/wrapper.h b/Bouncer/e2ap/wrapper.h
new file mode 100644
index 0000000..49e5e2e
--- /dev/null
+++ b/Bouncer/e2ap/wrapper.h
@@ -0,0 +1,136 @@
+#ifndef	_WRAPPER_E2AP_H_
+#define	_WRAPPER_E2AP_H_
+#include <stdio.h>
+#include <stdlib.h>
+#include "RICsubscriptionRequest.h"
+#include "RICsubscriptionResponse.h"
+#include "RICsubscriptionDeleteRequest.h"
+#include "RICsubscriptionDeleteResponse.h"
+#include "RICcontrolRequest.h"
+#include "RICindication.h"
+#include "E2AP-PDU.h"
+#include "InitiatingMessage.h"
+#include "SuccessfulOutcome.h"
+#include "UnsuccessfulOutcome.h"
+#include "ProtocolIE-Container.h"
+#include "ProtocolIE-Field.h"
+#include "RICactionDefinition.h"
+#include "RICsubsequentAction.h"
+#include "CauseRIC.h"
+
+typedef struct RICControlAcknowledgeMsg {
+        long requestorID;
+        long instanceID;
+        long ranfunctionID;
+        uint8_t *callProcessID;
+        size_t callProcessIDSize;
+        uint8_t *ricControlOutCome;
+        size_t ricControlOutComeSize;
+}RICControlAcknowledge;
+
+typedef struct RICControlFailureMsg {
+        long requestorID;
+        long instanceID;
+        long ranfunctionID;
+        uint8_t *callProcessID;
+        size_t callProcessIDSize;
+        uint8_t *ricControlOutCome;
+        size_t ricControlOutComeSize;
+        int     causeType;
+        long    causeValue;
+
+}RICControlFailure;
+
+typedef struct RICindicationMessage {
+	long requestorID;
+	long requestSequenceNumber;
+	long ranfunctionID;
+	long actionID;
+	long indicationSN;
+	long indicationType;
+	uint8_t *indicationHeader;
+	size_t indicationHeaderSize;
+	uint8_t *indicationMessage;
+	size_t indicationMessageSize;
+	uint8_t *callProcessID;
+	size_t callProcessIDSize;
+} RICindicationMsg;
+
+typedef struct RICcauseItem {
+	int ricCauseType;
+	long ricCauseID;
+} RICcauseItem;
+
+typedef struct RICactionAdmittedList {
+	long ricActionID[16];
+	int count;
+} RICactionAdmittedList;
+
+typedef struct RICactionNotAdmittedList {
+	long ricActionID[16];
+	RICcauseItem ricCause[16];
+	int count;
+} RICactionNotAdmittedList;
+
+typedef struct RICsubscriptionResponseMessage {
+	long requestorID;
+	long requestSequenceNumber;
+	long ranfunctionID;
+	RICactionAdmittedList ricActionAdmittedList;
+	RICactionNotAdmittedList ricActionNotAdmittedList;
+} RICsubscriptionResponseMsg;
+
+typedef struct RICactionDefinition {
+	uint8_t *actionDefinition;
+	int size;
+} RICactionDefinition;
+
+typedef struct RICSubsequentAction {
+	int isValid;
+	long subsequentActionType;
+	long timeToWait;
+} RICSubsequentAction;
+
+size_t encode_E2AP_PDU(E2AP_PDU_t* pdu, void* buffer, size_t buf_size);
+E2AP_PDU_t* decode_E2AP_PDU(const void* buffer, size_t buf_size);
+
+/* RICsubscriptionRequest */
+long e2ap_get_ric_subscription_request_sequence_number(void *buffer, size_t buf_size);
+ssize_t  e2ap_set_ric_subscription_request_sequence_number(void *buffer, size_t buf_size, long sequence_number);
+ssize_t e2ap_encode_ric_subscription_request_message(void *buffer, size_t buf_size, long ricRequestorID, long ricRequestSequenceNumber, long ranFunctionID, void *eventTriggerDefinition, size_t eventTriggerDefinitionSize, int actionCount, long *actionIds, long* actionTypes, RICactionDefinition *actionDefinitions, RICSubsequentAction *subsequentActionTypes);
+
+/* RICsubscriptionResponse */
+long e2ap_get_ric_subscription_response_sequence_number(void *buffer, size_t buf_size);
+ssize_t  e2ap_set_ric_subscription_response_sequence_number(void *buffer, size_t buf_size, long sequence_number);
+RICsubscriptionResponseMsg* e2ap_decode_ric_subscription_response_message(void *buffer, size_t buf_size);
+
+/* RICsubscriptionFailure */
+long e2ap_get_ric_subscription_failure_sequence_number(void *buffer, size_t buf_size);
+
+/* RICsubscriptionDeleteRequest */
+long e2ap_get_ric_subscription_delete_request_sequence_number(void *buffer, size_t buf_size);
+ssize_t  e2ap_set_ric_subscription_delete_request_sequence_number(void *buffer, size_t buf_size, long sequence_number);
+ssize_t e2ap_encode_ric_subscription_delete_request_message(void *buffer, size_t buf_size, long ricRequestorID, long ricRequestSequenceNumber, long ranFunctionID);
+
+/* RICsubscriptionDeleteResponse */
+long e2ap_get_ric_subscription_delete_response_sequence_number(void *buffer, size_t buf_size);
+ssize_t  e2ap_set_ric_subscription_delete_response_sequence_number(void *buffer, size_t buf_size, long sequence_number);
+
+/* RICsubscriptionDeleteFailure */
+long e2ap_get_ric_subscription_delete_failure_sequence_number(void *buffer, size_t buf_size);
+
+/* RICindication */
+RICindicationMsg* e2ap_decode_ric_indication_message(void *buffer, size_t buf_size);
+RICindicationMsg* e2ap_decode_ric_indication_m();
+void e2ap_free_decoded_ric_indication_message(RICindicationMsg* msg);
+
+/* RICcontrol */
+ssize_t e2ap_encode_ric_control_request_message(void *buffer, size_t buf_size, long ricRequestorID, long ricRequestSequenceNumber, long ranFunctionID, void *ricControlHdr, size_t ricControlHdrSize, void *ricControlMsg, size_t ricControlMsgSize);
+
+RICControlAcknowledge* e2ap_decode_ric_control_acknowledge_message(void *buffer, size_t buf_size);
+void e2ap_free_decoded_ric_control_ack(RICControlAcknowledge* msg);
+
+RICControlFailure* e2ap_decode_ric_control_failure_message(void *buffer, size_t buf_size);
+void e2ap_free_decoded_ric_control_failure(RICControlFailure* msg);
+
+#endif /* _WRAPPER_E2AP_H_ */