module SBC_AP_Types {

	import from SBC_AP_PDU_Descriptions language "ASN.1:1997" all;

	external function enc_SBC_AP_PDU(in SBC_AP_PDU pdu) return octetstring;
	external function dec_SBC_AP_PDU(in octetstring stream) return SBC_AP_PDU;

	const integer c_SBC_AP_PPID := 24;
	const integer c_SBC_AP_PORT := 29168;

	/* 3GPP TS 29.168 4.3.4.3.2 Cause */
	type enumerated SBC_AP_Cause {
		SBC_AP_Cause_message_accepted					('00'O),
		SBcAP_Cause_parameter_not_recognised				('01'O),
		SBcAP_Cause_parameter_value_invalid				('02'O),
		SBcAP_Cause_valid_message_not_identified			('03'O),
		SBcAP_Cause_tracking_area_not_valid				('04'O),
		SBcAP_Cause_unrecognised_message				('05'O),
		SBcAP_Cause_missing_mandatory_element				('06'O),
		SBcAP_Cause_mME_capacity_exceeded				('07'O),
		SBcAP_Cause_mME_memory_exceeded					('08'O),
		SBcAP_Cause_warning_broadcast_not_supported			('09'O),
		SBcAP_Cause_warning_broadcast_not_operational			('0A'O),
		SBcAP_Cause_message_reference_already_used			('0B'O),
		SBcAP_Cause_unspecifed_error					('0C'O),
		SBcAP_Cause_transfer_syntax_error				('0D'O),
		SBcAP_Cause_semantic_error					('0E'O),
		SBcAP_Cause_message_not_compatible_with_receiver_state		('0F'O),
		SBcAP_Cause_abstract_syntax_error_reject			('10'O),
		SBcAP_Cause_abstract_syntax_error_ignore_and_notify		('11'O),
		SBcAP_Cause_abstract_syntax_error_falsely_constructed_message	('12'O)
	}
}
