diff --git a/src/s1ap/asn1c/asnGenFiles/SuccessfulOutcome.h b/src/s1ap/asn1c/asnGenFiles/SuccessfulOutcome.h
new file mode 100644
index 0000000..08a069d
--- /dev/null
+++ b/src/s1ap/asn1c/asnGenFiles/SuccessfulOutcome.h
@@ -0,0 +1,194 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "S1AP-PDU-Descriptions"
+ * 	found in "./asn1c/S1AP-PDU-Descriptions.asn"
+ * 	`asn1c -fcompound-names -fno-include-deps -gen-PER -findirect-choice -pdu=S1AP-PDU`
+ */
+
+#ifndef	_SuccessfulOutcome_H_
+#define	_SuccessfulOutcome_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ProcedureCode.h"
+#include "Criticality.h"
+#include <ANY.h>
+#include <asn_ioc.h>
+#include "HandoverRequired.h"
+#include "HandoverCommand.h"
+#include "HandoverPreparationFailure.h"
+#include "HandoverRequest.h"
+#include "HandoverRequestAcknowledge.h"
+#include "HandoverFailure.h"
+#include "PathSwitchRequest.h"
+#include "PathSwitchRequestAcknowledge.h"
+#include "PathSwitchRequestFailure.h"
+#include "E-RABSetupRequest.h"
+#include "E-RABSetupResponse.h"
+#include "E-RABModifyRequest.h"
+#include "E-RABModifyResponse.h"
+#include "E-RABReleaseCommand.h"
+#include "E-RABReleaseResponse.h"
+#include "InitialContextSetupRequest.h"
+#include "InitialContextSetupResponse.h"
+#include "InitialContextSetupFailure.h"
+#include "HandoverCancel.h"
+#include "HandoverCancelAcknowledge.h"
+#include "KillRequest.h"
+#include "KillResponse.h"
+#include "Reset.h"
+#include "ResetAcknowledge.h"
+#include "S1SetupRequest.h"
+#include "S1SetupResponse.h"
+#include "S1SetupFailure.h"
+#include "UEContextModificationRequest.h"
+#include "UEContextModificationResponse.h"
+#include "UEContextModificationFailure.h"
+#include "UEContextReleaseCommand.h"
+#include "UEContextReleaseComplete.h"
+#include "ENBConfigurationUpdate.h"
+#include "ENBConfigurationUpdateAcknowledge.h"
+#include "ENBConfigurationUpdateFailure.h"
+#include "MMEConfigurationUpdate.h"
+#include "MMEConfigurationUpdateAcknowledge.h"
+#include "MMEConfigurationUpdateFailure.h"
+#include "WriteReplaceWarningRequest.h"
+#include "WriteReplaceWarningResponse.h"
+#include "UERadioCapabilityMatchRequest.h"
+#include "UERadioCapabilityMatchResponse.h"
+#include "E-RABModificationIndication.h"
+#include "E-RABModificationConfirm.h"
+#include "UEContextModificationIndication.h"
+#include "UEContextModificationConfirm.h"
+#include "UEContextSuspendRequest.h"
+#include "UEContextSuspendResponse.h"
+#include "UEContextResumeRequest.h"
+#include "UEContextResumeResponse.h"
+#include "UEContextResumeFailure.h"
+#include "HandoverNotify.h"
+#include "E-RABReleaseIndication.h"
+#include "Paging.h"
+#include "DownlinkNASTransport.h"
+#include "InitialUEMessage.h"
+#include "UplinkNASTransport.h"
+#include "ErrorIndication.h"
+#include "NASNonDeliveryIndication.h"
+#include "UEContextReleaseRequest.h"
+#include "DownlinkS1cdma2000tunnelling.h"
+#include "UplinkS1cdma2000tunnelling.h"
+#include "UECapabilityInfoIndication.h"
+#include "ENBStatusTransfer.h"
+#include "MMEStatusTransfer.h"
+#include "DeactivateTrace.h"
+#include "TraceStart.h"
+#include "TraceFailureIndication.h"
+#include "CellTrafficTrace.h"
+#include "LocationReportingControl.h"
+#include "LocationReportingFailureIndication.h"
+#include "LocationReport.h"
+#include "OverloadStart.h"
+#include "OverloadStop.h"
+#include "ENBDirectInformationTransfer.h"
+#include "MMEDirectInformationTransfer.h"
+#include "ENBConfigurationTransfer.h"
+#include "MMEConfigurationTransfer.h"
+#include "PrivateMessage.h"
+#include "DownlinkUEAssociatedLPPaTransport.h"
+#include "UplinkUEAssociatedLPPaTransport.h"
+#include "DownlinkNonUEAssociatedLPPaTransport.h"
+#include "UplinkNonUEAssociatedLPPaTransport.h"
+#include "PWSRestartIndication.h"
+#include "RerouteNASRequest.h"
+#include "PWSFailureIndication.h"
+#include "ConnectionEstablishmentIndication.h"
+#include "NASDeliveryIndication.h"
+#include "RetrieveUEInformation.h"
+#include "UEInformationTransfer.h"
+#include "ENBCPRelocationIndication.h"
+#include "MMECPRelocationIndication.h"
+#include "SecondaryRATDataUsageReport.h"
+#include <OPEN_TYPE.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SuccessfulOutcome__value_PR {
+	SuccessfulOutcome__value_PR_NOTHING,	/* No components present */
+	SuccessfulOutcome__value_PR_HandoverCommand,
+	SuccessfulOutcome__value_PR_HandoverRequestAcknowledge,
+	SuccessfulOutcome__value_PR_PathSwitchRequestAcknowledge,
+	SuccessfulOutcome__value_PR_E_RABSetupResponse,
+	SuccessfulOutcome__value_PR_E_RABModifyResponse,
+	SuccessfulOutcome__value_PR_E_RABReleaseResponse,
+	SuccessfulOutcome__value_PR_InitialContextSetupResponse,
+	SuccessfulOutcome__value_PR_HandoverCancelAcknowledge,
+	SuccessfulOutcome__value_PR_KillResponse,
+	SuccessfulOutcome__value_PR_ResetAcknowledge,
+	SuccessfulOutcome__value_PR_S1SetupResponse,
+	SuccessfulOutcome__value_PR_UEContextModificationResponse,
+	SuccessfulOutcome__value_PR_UEContextReleaseComplete,
+	SuccessfulOutcome__value_PR_ENBConfigurationUpdateAcknowledge,
+	SuccessfulOutcome__value_PR_MMEConfigurationUpdateAcknowledge,
+	SuccessfulOutcome__value_PR_WriteReplaceWarningResponse,
+	SuccessfulOutcome__value_PR_UERadioCapabilityMatchResponse,
+	SuccessfulOutcome__value_PR_E_RABModificationConfirm,
+	SuccessfulOutcome__value_PR_UEContextModificationConfirm,
+	SuccessfulOutcome__value_PR_UEContextSuspendResponse,
+	SuccessfulOutcome__value_PR_UEContextResumeResponse
+} SuccessfulOutcome__value_PR;
+
+/* SuccessfulOutcome */
+typedef struct SuccessfulOutcome {
+	ProcedureCode_t	 procedureCode;
+	Criticality_t	 criticality;
+	struct SuccessfulOutcome__value {
+		SuccessfulOutcome__value_PR present;
+		union SuccessfulOutcome__value_u {
+			HandoverCommand_t	 HandoverCommand;
+			HandoverRequestAcknowledge_t	 HandoverRequestAcknowledge;
+			PathSwitchRequestAcknowledge_t	 PathSwitchRequestAcknowledge;
+			E_RABSetupResponse_t	 E_RABSetupResponse;
+			E_RABModifyResponse_t	 E_RABModifyResponse;
+			E_RABReleaseResponse_t	 E_RABReleaseResponse;
+			InitialContextSetupResponse_t	 InitialContextSetupResponse;
+			HandoverCancelAcknowledge_t	 HandoverCancelAcknowledge;
+			KillResponse_t	 KillResponse;
+			ResetAcknowledge_t	 ResetAcknowledge;
+			S1SetupResponse_t	 S1SetupResponse;
+			UEContextModificationResponse_t	 UEContextModificationResponse;
+			UEContextReleaseComplete_t	 UEContextReleaseComplete;
+			ENBConfigurationUpdateAcknowledge_t	 ENBConfigurationUpdateAcknowledge;
+			MMEConfigurationUpdateAcknowledge_t	 MMEConfigurationUpdateAcknowledge;
+			WriteReplaceWarningResponse_t	 WriteReplaceWarningResponse;
+			UERadioCapabilityMatchResponse_t	 UERadioCapabilityMatchResponse;
+			E_RABModificationConfirm_t	 E_RABModificationConfirm;
+			UEContextModificationConfirm_t	 UEContextModificationConfirm;
+			UEContextSuspendResponse_t	 UEContextSuspendResponse;
+			UEContextResumeResponse_t	 UEContextResumeResponse;
+		} choice;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} value;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SuccessfulOutcome_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome;
+extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1;
+extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SuccessfulOutcome_H_ */
+#include <asn_internal.h>
