[PATCH] osmo-ttcn3-hacks[master]: WIP: SMPP codec for TITAN

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Mon Apr 9 18:15:57 UTC 2018


Review at  https://gerrit.osmocom.org/7695

WIP: SMPP codec for TITAN

Change-Id: Ib1952ffa0cbc915ab4c088da03fec2da4258b47c
---
A library/SMPP_Types.ttcn
1 file changed, 520 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/95/7695/1

diff --git a/library/SMPP_Types.ttcn b/library/SMPP_Types.ttcn
new file mode 100644
index 0000000..45bca92
--- /dev/null
+++ b/library/SMPP_Types.ttcn
@@ -0,0 +1,520 @@
+module SMPP_Types {
+
+import from General_Types all;
+import from Osmocom_Types all;
+
+type record SMPP_PDU {
+	/* Header */
+	uint32_t	cmd_len,
+	OCT4		cmd_id,
+	SMPP_CmdStatus	cmd_status,
+	uint32_t	seq_nr,
+	/* Mandatory part (non-TLV) */
+	SMPP_MandPars	mand optional,
+	/* Optional part (TLV) */
+	SMPP_TLVs	opt optional
+} with {
+	variant (cmd_len) "LENGTHTO(cmd_len,cmd_id,cmd_status,seq_nr,mand,opt)"
+	variant (mand) "CROSSTAG(
+				bind_transmitter, cmd_id = SMPP_CMD_BIND_TRANSMITTER;
+				bind_transmitter_resp, cmd_id = SMPP_CMD_BIND_TRANSMITTER_RESP;
+				bind_receiver, cmd_id = SMPP_CMD_BIND_RECEIVER;
+				bind_receiver_resp, cmd_id = SMPP_CMD_BIND_RECEIVER_RESP;
+				bind_transceiver, cmd_id = SMPP_CMD_BIND_TRANSCEIVER;
+				bind_transceiver_resp, cmd_id = SMPP_CMD_BIND_TRANSCEIVER_RESP;
+				outbind, cmd_id = SMPP_CMD_OUTBIND;
+				submit_sm, cmd_id = SMPP_CMD_SUBMIT_SM;
+				submit_sm_resp, cmd_id = SMPP_CMD_SUBMIT_SM_RESP;
+				deliver_sm, cmd_id = SMPP_CMD_DELIVER_SM;
+				deliver_sm_resp, cmd_id = SMPP_CMD_DELIVER_SM_RESP;
+				alert_notif, cmd_id = SMPP_CMD_ALERT_NOTIFICATION;
+			)"
+}
+
+
+type union SMPP_MandPars {
+	SMPP_Bind_MandPars			bind_transmitter,
+	SMPP_BindResp_MandPars			bind_transmitter_resp,
+	SMPP_Bind_MandPars			bind_receiver,
+	SMPP_BindResp_MandPars			bind_receiver_resp,
+	SMPP_Bind_MandPars			bind_transceiver,
+	SMPP_BindResp_MandPars			bind_transceiver_resp,
+	SMPP_Outbind_MandPars			outbind,
+	SMPP_SubmitSM_MandPars			submit_sm,
+	SMPP_SubmitSMResp_MandPars		submit_sm_resp,
+	/* FIXME */
+	SMPP_DeliverSM_MandPars			deliver_sm,
+	SMPP_DeliverSMResp_MandPars		deliver_sm_resp,
+	/* FIXME */
+	SMPP_AlertNotif_MandPars		alert_notif
+};
+
+/* 4.1.1, 4.1.3, 4.1.5 */
+type record SMPP_Bind_MandPars {
+	COctetString	system_id,
+	COctetString	password,
+	COctetString	system_type,
+	OCT1		interface_version,
+	SMPP_TON	addr_ton,
+	SMPP_NPI	addr_npi,
+	COctetString	addr_range
+}
+
+/* 4.1.2, 4.1.4, 4.1.6 */
+type record SMPP_BindResp_MandPars {
+	COctetString	system_id
+}
+
+/* 4.1.7 */
+type record SMPP_Outbind_MandPars {
+	COctetString	system_id,
+	COctetString	password
+}
+
+/* 4.4.1 Submit SM */
+type record SMPP_SubmitSM_MandPars {
+	COctetString	service_type,
+	SMPP_TON	source_addr_ton,
+	SMPP_NPI	source_addr_npi,
+	COctetString	source_addr,
+	SMPP_TON	dest_addr_ton,
+	SMPP_NPI	dest_addr_npi,
+	COctetString	dest_addr,
+	OCT1		esm_class,
+	OCT1		protocol_id,
+	OCT1		priority_flag,
+	COctetString	schedule_delivery_time,
+	COctetString	validity_period,
+	OCT1		registered_delivery,
+	SMPP_DCS	data_coding,
+	OCT1		sm_default_msg_id,
+	uint8_t		sm_length,
+	octetstring	short_message
+} with { variant (sm_length) "LENGTHTO(short_message)" };
+
+/* 4.4.2 */
+type record SMPP_SubmitSMResp_MandPars {
+	COctetString	message_id
+}
+
+/* 4.6.1 */
+type record SMPP_DeliverSM_MandPars {
+	COctetString	service_type,
+	SMPP_TON	source_addr_ton,
+	SMPP_NPI	source_addr_npi,
+	COctetString	source_addr,
+	SMPP_TON	dest_addr_ton,
+	SMPP_NPI	dest_addr_npi,
+	COctetString	dest_addr,
+	OCT1		esm_class,
+	OCT1		protocol_id,
+	OCT1		priority_flag,
+	COctetString	schedule_delivery_time,
+	COctetString	validity_period,
+	OCT1		registered_delivery,
+	OCT1		replace_if_present_flag,
+	SMPP_DCS	data_coding,
+	OCT1		sm_default_msg_id,
+	uint8_t		sm_length,
+	octetstring	short_message
+} with { variant (sm_length) "LENGTHTO(short_message)" };
+
+/* 4.6.2 */
+type record SMPP_DeliverSMResp_MandPars {
+	COctetString	message_id
+}
+
+/* 4.12.1 */
+type record SMPP_AlertNotif_MandPars {
+	SMPP_TON	source_addr_ton,
+	SMPP_NPI	source_addr_npi,
+	COctetString	source_addr,
+	SMPP_TON	esme_addr_ton,
+	SMPP_NPI	esme_addr_npi,
+	COctetString	esme_addr
+}
+
+
+/* 5.1.2.1 */
+/*
+type enumerated SMPP_CmdId {
+	SMPP_CMD_GENERIC_NACK		('00000000'O),
+	SMPP_CMD_BIND_RECEIVER		('00000001'O),
+	SMPP_CMD_BIND_RECEIVER_RESP	('80000001'O),
+	SMPP_CMD_BIND_TRANSMITTER	('00000002'O),
+	SMPP_CMD_BIND_TRANSMITTER_RESP	('80000002'O),
+	SMPP_CMD_QUERY_SM		('00000003'O),
+	SMPP_CMD_QUERY_SM_RESP		('80000003'O),
+	SMPP_CMD_SUBMIT_SM		('00000004'O),
+	SMPP_CMD_SUBMIT_SM_RESP		('80000004'O),
+	SMPP_CMD_DELIVER_SM		('00000005'O),
+	SMPP_CMD_DELIVER_SM_RESP	('80000005'O),
+	SMPP_CMD_UNBIND			('00000006'O),
+	SMPP_CMD_UNBIND_RESP		('80000006'O),
+	SMPP_CMD_REPLACE_SM		('00000007'O),
+	SMPP_CMD_REPLACE_SM_RESP	('80000007'O),
+	SMPP_CMD_CANCEL_SM		('00000008'O),
+	SMPP_CMD_CANCEL_SM_RESP		('80000008'O),
+	SMPP_CMD_BIND_TRANSCEIVER	('00000009'O),
+	SMPP_CMD_BIND_TRANSCEIVER_RESP	('80000009'O),
+
+	SMPP_CMD_OUTBIND		('0000000B'O),
+
+	SMPP_CMD_BIND_ENQUIRE_LINK	('00000015'O),
+	SMPP_CMD_BIND_ENQUIRE_LINK_RESP	('80000015'O),
+
+	SMPP_CMD_SUBMIT_MULTI		('00000021'O),
+	SMPP_CMD_SUBMIT_MULTI_RESP	('80000021'O),
+
+	SMPP_CMD_ALERT_NOTIFICATION	('00000102'O),
+
+	SMPP_CMD_DATA_SM		('00000103'O),
+	SMPP_CMD_DATA_SM_RESP		('80000103'O)
+} with { variant "FIELDLENGTH(32)" };
+*/
+const OCT4 SMPP_CMD_GENERIC_NACK 		:= '80000000'O;
+const OCT4 SMPP_CMD_BIND_RECEIVER		:= '00000001'O;
+const OCT4 SMPP_CMD_BIND_RECEIVER_RESP		:= '80000001'O;
+const OCT4 SMPP_CMD_BIND_TRANSMITTER		:= '00000002'O;
+const OCT4 SMPP_CMD_BIND_TRANSMITTER_RESP	:= '80000002'O;
+const OCT4 SMPP_CMD_QUERY_SM			:= '00000003'O;
+const OCT4 SMPP_CMD_QUERY_SM_RESP		:= '80000003'O;
+const OCT4 SMPP_CMD_SUBMIT_SM			:= '00000004'O;
+const OCT4 SMPP_CMD_SUBMIT_SM_RESP		:= '80000004'O;
+const OCT4 SMPP_CMD_DELIVER_SM			:= '00000005'O;
+const OCT4 SMPP_CMD_DELIVER_SM_RESP		:= '80000005'O;
+const OCT4 SMPP_CMD_UNBIND			:= '00000006'O;
+const OCT4 SMPP_CMD_UNBIND_RESP			:= '80000006'O;
+const OCT4 SMPP_CMD_REPLACE_SM			:= '00000007'O;
+const OCT4 SMPP_CMD_REPLACE_SM_RESP		:= '80000007'O;
+const OCT4 SMPP_CMD_CANCEL_SM			:= '00000008'O;
+const OCT4 SMPP_CMD_CANCEL_SM_RESP		:= '00000008'O;
+const OCT4 SMPP_CMD_BIND_TRANSCEIVER		:= '00000009'O;
+const OCT4 SMPP_CMD_BIND_TRANSCEIVER_RESP	:= '80000009'O;
+const OCT4 SMPP_CMD_OUTBIND			:= '0000000B'O;
+const OCT4 SMPP_CMD_ENQUIRE_LINK		:= '00000015'O;
+const OCT4 SMPP_CMD_ENQUIRE_LINK_RESP		:= '80000015'O;
+const OCT4 SMPP_CMD_SUBMIT_MULTI		:= '00000021'O;
+const OCT4 SMPP_CMD_SUBMIT_MULTI_RESP		:= '80000021'O;
+const OCT4 SMPP_CMD_ALERT_NOTIFICATION		:= '00000102'O;
+const OCT4 SMPP_CMD_DATA_SM			:= '00000103'O;
+const OCT4 SMPP_CMD_DATA_SM_RESP		:= '80000103'O;
+
+/* 5.1.3 */
+type enumerated SMPP_CmdStatus {
+	ESME_ROK			('00000000'O),
+	ESME_RINVMSGLEN			('00000001'O),
+	ESME_RINVCMDLEN			('00000002'O),
+	ESME_RINVCMDID			('00000003'O),
+	ESME_RINVBNDSTS			('00000004'O),
+	ESME_RALYBND			('00000005'O),
+	ESME_RINVPRTFLG			('00000006'O),
+	ESME_RINVREGDLVFLG		('00000007'O),
+	ESME_RSYSERR			('00000008'O),
+	ESME_RINVSRCADR			('0000000A'O),
+	ESME_RINVDSTADR			('0000000B'O),
+	ESME_RINVMSGID			('0000000C'O),
+	ESME_RBINDFAIL			('0000000D'O),
+	ESME_RINVPASWD			('0000000E'O),
+	ESME_RINVSYSID			('0000000F'O),
+	ESME_RCANCELFAIL		('00000011'O),
+	ESME_RREPLACEFAIL		('00000013'O),
+	ESME_RMSGQFUL			('00000014'O),
+	ESME_RINVSERTYP			('00000015'O),
+	ESME_RINVNUMDESTS		('00000033'O),
+	ESME_RINVDLNAME			('00000034'O),
+	ESME_RINVDESTFLAG		('00000040'O),
+	ESME_RINVSUBREP			('00000042'O),
+	ESME_RINVESMCLASS		('00000043'O),
+	ESME_RCNTSUBDL			('00000044'O),
+	ESME_RSUBMITFAIL		('00000045'O),
+	ESME_RINVSRCTON			('00000048'O),
+	ESME_RINVSRCNPI			('00000049'O),
+	ESME_RINVDSTTON			('00000050'O),
+	ESME_RINVDSTNPI			('00000051'O),
+	ESME_RINVSYSTYP			('00000053'O),
+	ESME_RINVREPFLAG		('00000054'O),
+	ESME_RINVNUMMSGS		('00000055'O),
+	ESME_RTHROTTLED			('00000058'O),
+	ESME_RINVSCHED			('00000061'O),
+	ESME_RINVEXPIRY			('00000062'O),
+	ESME_RINVDFTMSGID		('00000063'O),
+	ESME_RX_T_APPN			('00000064'O),
+	ESME_RX_P_APPN			('00000065'O),
+	ESME_RX_R_APPN			('00000066'O),
+	ESME_RQUERYFAIL			('00000067'O),
+	ESME_RINVOPTPARSTREAM		('000000C0'O),
+	ESME_ROPTPARNOTALLWD		('000000C1'O),
+	ESME_RINVPARLEN			('000000C2'O),
+	ESME_RMISSINGOPTPARAM		('000000C3'O),
+	ESME_RINVOPTPARAMVAL		('000000C4'O),
+	ESME_RDELIVERYFAILURE		('000000FE'O),
+	ESME_RUNKNOWNERR		('000000FF'O)
+
+} with { variant "FIELDLENGTH(32)" };
+
+/* 5.2.4 */
+const OCT1 SMPP_VERSION_34 :=	'34'O;
+
+/* 5.2.5 */
+type enumerated SMPP_TON {
+	SMPP_TON_UNKNOWN		('00000000'B),
+	SMPP_TON_INTERNATIONAL		('00000001'O),
+	SMPP_TON_NATIONAL		('00000010'O),
+	SMPP_TON_NETWORK_SPECIFIC	('00000011'O),
+	SMPP_TON_SUBSCRIBER_NUMBER	('00000100'O),
+	SMPP_TON_ABBREVIATED		('00000110'O)
+} with { variant "FIELDLENGTH(8)" };
+
+/* 5.2.6 */
+type enumerated SMPP_NPI {
+	SMPP_NPI_UNKNOWN		('00000000'O),
+	SMPP_NPI_ISDN_E164		('00000001'O),
+	SMPP_NPI_DATA_X121		('00000011'O),
+	SMPP_NPI_TELEX_F69		('00000100'O),
+	SMPP_NPI_MOBILE_E212		('00000110'O),
+	SMPP_NPI_NATIONAL		('00001000'O),
+	SMPP_NPI_PRIVATE		('00001001'O),
+	SMPP_NPI_ERMES			('00001010'O),
+	SMPP_NPI_INTERNET		('00001110'O),
+	SMPP_NPI_WAP_CLIENT_ID		('00010010'O)
+} with { variant "FIELDLENGTH(8)" };
+
+/* 5.2.19 */
+type enumerated SMPP_DCS {
+	SMPP_DCS_SMSC_DEFAULT		('00000000'O),
+	SMPP_DCS_IA5_ASCII		('00000001'O),
+	SMPP_DCS_OCTET_UNSPEC_2		('00000010'O),
+	SMPP_DCS_LATIN1_8859_1		('00000011'O),
+	SMPP_DCS_OCTET_UNSPEC_4		('00000100'O),
+	SMPP_DCS_JIS_X0208		('00000101'O),
+	SMPP_DCS_CYRILLIC_8859_5	('00000110'O),
+	SMPP_DCS_HEBREW_8859_8		('00000111'O),
+	SMPP_DCS_UCS2_IEC10646		('00001000'O),
+	SMPP_DCS_PICTOGRAM		('00001001'O),
+	SMPP_DCS_ISO_2022_JP		('00001010'O),
+	SMPP_DCS_EXT_KANJI_JIS_X0212	('00001101'O),
+	SMPP_DCS_KS_C_5601		('00001110'O)
+	/* FIXME: GSM MWI / message class */
+} with { variant "FIELDLENGTH(8)" };
+
+
+/* 5.2.28 */
+type enumerated SMPP_MessageState {
+	SMPP_MSTATE_ENROUTE		(1),
+	SMPP_MSTATE_DELIVERED		(2),
+	SMPP_MSTATE_EXPIRED		(3),
+	SMPP_MSTATE_DELETED		(4),
+	SMPP_MSTATE_UNDELIVERABLE	(5),
+	SMPP_MSTATE_ACCEPTED		(6),
+	SMPP_MSTATE_UNKNOWN		(7),
+	SMPP_MSTATE_REJECTED		(8)
+} with { variant "FIELDLENGTH(8)" };
+
+/* 5.3.2 */
+type enumerated SMPP_IEI {
+	SMPP_IEI_dest_addr_subunit		('0005'O),
+	SMPP_IEI_dest_network_type		('0006'O),
+	SMPP_IEI_dest_bearer_type		('0007'O),
+	SMPP_IEI_dest_telematics_id		('0008'O),
+	SMPP_IEI_source_addr_subunit		('000D'O),
+	SMPP_IEI_source_network_type		('000E'O),
+	SMPP_IEI_source_bearer_type		('000F'O),
+	SMPP_IEI_source_telematics_id		('0010'O),
+	SMPP_IEI_qos_time_to_live		('0017'O),
+	SMPP_IEI_payload_type			('0019'O),
+	SMPP_IEI_additional_status_info_text	('001D'O),
+	SMPP_IEI_receipted_message_id		('001E'O),
+	SMPP_IEI_ms_msg_wait_facilities		('0030'O),
+	SMPP_IEI_privacy_indicator		('0201'O),
+	SMPP_IEI_source_subaddress		('0202'O),
+	SMPP_IEI_dest_subaddress		('0203'O),
+	SMPP_IEI_user_message_reference		('0204'O),
+	SMPP_IEI_user_response_code		('0205'O),
+	SMPP_IEI_source_port			('020A'O),
+	SMPP_IEI_destination_port		('020B'O),
+	SMPP_IEI_sar_msg_ref_num		('020C'O),
+	SMPP_IEI_language_indicator		('020D'O),
+	SMPP_IEI_sar_total_segments		('020E'O),
+	SMPP_IEI_sar_segment_seqnum		('020F'O),
+	SMPP_IEI_SC_interface_version		('0210'O),
+	SMPP_IEI_callback_num_pres_ind		('0302'O),
+	SMPP_IEI_callback_num_atag		('0303'O),
+	SMPP_IEI_number_of_messages		('0304'O),
+	SMPP_IEI_callback_num			('0381'O),
+	SMPP_IEI_dpf_result			('0420'O),
+	SMPP_IEI_set_dpf			('0421'O),
+	SMPP_IEI_ms_availability_status		('0422'O),
+	SMPP_IEI_network_error_code		('0423'O),
+	SMPP_IEI_message_payload		('0424'O),
+	SMPP_IEI_delivery_failure_reason	('0425'O),
+	SMPP_IEI_more_messages_to_send		('0426'O),
+	SMPP_IEI_message_state			('0427'O),
+	SMPP_IEI_ussd_service_op		('0501'O),
+	SMPP_IEI_display_time			('1201'O),
+	SMPP_IEI_sms_signal			('1203'O),
+	SMPP_IEI_ms_validity			('1204'O),
+	SMPP_IEI_alert_on_message_delivery	('130C'O),
+	SMPP_IEI_its_reply_type			('1380'O),
+	SMPP_IEI_its_session_info		('1383'O)
+} with { variant "FIELDLENGTH(16)" };
+
+type record of SMPP_TLV SMPP_TLVs;
+
+type record SMPP_TLV {
+	SMPP_IEI	tag,
+	uint16_t	len,
+	SMPP_IE_Body	val
+} with {
+	variant (len) "LENGTHTO(val)"
+	variant (val) "CROSSTAG(
+			dest_addr_subunit,		tag = SMPP_IEI_dest_addr_subunit;
+			source_addr_subunit,		tag = SMPP_IEI_source_addr_subunit;
+			dest_network_type,		tag = SMPP_IEI_dest_network_type;
+			source_network_type,		tag = SMPP_IEI_source_network_type;
+			dest_bearer_type,		tag = SMPP_IEI_dest_bearer_type;
+			source_bearer_type,		tag = SMPP_IEI_source_bearer_type;
+			dest_telematics_id,		tag = SMPP_IEI_dest_telematics_id;
+			source_telematics_id,		tag = SMPP_IEI_source_telematics_id;
+			qos_time_to_live,		tag = SMPP_IEI_qos_time_to_live;
+			payload_type,			tag = SMPP_IEI_payload_type;
+			additional_status_info_text,	tag = SMPP_IEI_additional_status_info_text;
+			receipted_message_id,		tag = SMPP_IEI_receipted_message_id;
+			ms_msg_wait_facilities,		tag = SMPP_IEI_ms_msg_wait_facilities;
+			privacy_indicator,		tag = SMPP_IEI_privacy_indicator;
+			source_subaddress,		tag = SMPP_IEI_source_subaddress;
+			dest_subaddress,		tag = SMPP_IEI_dest_subaddress;
+			user_message_reference,		tag = SMPP_IEI_user_message_reference;
+			user_response_code,		tag = SMPP_IEI_user_response_code;
+			language_indicator,		tag = SMPP_IEI_language_indicator;
+			source_port,			tag = SMPP_IEI_source_port;
+			destination_port,		tag = SMPP_IEI_destination_port;
+			sar_msg_ref_num,		tag = SMPP_IEI_sar_msg_ref_num;
+			sar_total_segments,		tag = SMPP_IEI_sar_total_segments;
+			sc_interface_version,		tag = SMPP_IEI_SC_interface_version;
+			display_time,			tag = SMPP_IEI_display_time;
+			ms_validity,			tag = SMPP_IEI_ms_validity;
+			dpf_result,			tag = SMPP_IEI_dpf_result;
+			set_dpf,			tag = SMPP_IEI_set_dpf;
+			ms_availability_status,		tag = SMPP_IEI_ms_availability_status;
+			message_payload,		tag = SMPP_IEI_message_payload;
+			delivery_failure_reason	,	tag = SMPP_IEI_delivery_failure_reason;
+			more_messages_to_send,		tag = SMPP_IEI_more_messages_to_send;
+			message_state,			tag = SMPP_IEI_message_state;
+			callback_num,			tag = SMPP_IEI_callback_num;
+			callback_num_pres_ind,		tag = SMPP_IEI_callback_num_pres_ind;
+			callback_num_atag,		tag = SMPP_IEI_callback_num_atag;
+			number_of_messages,		tag = SMPP_IEI_number_of_messages;
+			sms_signal,			tag = SMPP_IEI_sms_signal;
+			its_reply_type,			tag = SMPP_IEI_its_reply_type;
+			its_session_info,		tag = SMPP_IEI_its_session_info;
+			ussd_service_op,		tag = SMPP_IEI_ussd_service_op;
+			other,				OTHERWISE;
+		)"
+};
+
+type union SMPP_IE_Body {
+	SMPP_Subunit		dest_addr_subunit,
+	SMPP_Subunit		source_addr_subunit,
+	SMPP_NetworkType	dest_network_type,
+	SMPP_NetworkType	source_network_type,
+	SMPP_BearerType		dest_bearer_type,
+	SMPP_BearerType		source_bearer_type,
+	uint16_t		dest_telematics_id,
+	uint16_t		source_telematics_id,
+	uint32_t		qos_time_to_live,
+	uint8_t			payload_type,
+	COctetString		additional_status_info_text,
+	COctetString		receipted_message_id,
+	BIT8			ms_msg_wait_facilities,
+	uint8_t			privacy_indicator,
+	octetstring		source_subaddress,
+	octetstring		dest_subaddress,
+	uint16_t		user_message_reference,
+	uint8_t			user_response_code,
+	uint8_t			language_indicator,
+	uint16_t		source_port,
+	uint16_t		destination_port,
+	uint16_t		sar_msg_ref_num,
+	uint8_t			sar_total_segments,
+	OCT1			sc_interface_version,
+	uint8_t			display_time,
+	uint8_t			ms_validity,
+	uint8_t			dpf_result,
+	uint8_t			set_dpf,
+	SMPP_MsAvailStatus	ms_availability_status,
+	octetstring		message_payload,
+	uint8_t			delivery_failure_reason,
+	uint8_t			more_messages_to_send,
+	SMPP_MessageState	message_state,
+	octetstring		callback_num,
+	BIT8			callback_num_pres_ind,
+	octetstring		callback_num_atag,
+	uint8_t			number_of_messages,
+	uint16_t		sms_signal,
+	uint8_t			its_reply_type,
+	OCT2			its_session_info,
+	OCT1			ussd_service_op,
+	octetstring		other
+}
+
+/* 5.3.2.1 */
+type enumerated SMPP_Subunit {
+	SMPP_SUBUNIT_UNKNOWN		('00'O),
+	SMPP_SUBUNIT_MS_DISPLAY		('01'O),
+	SMPP_SUBUNIT_MOBILE_EQUIPMENT	('02'O),
+	SMPP_SUBUNIT_SMART_CARD_1	('03'O),
+	SMPP_SUBINIT_EXTERNAL_1		('04'O)
+} with { variant "FIELDLENGTH(8)" };
+
+/*5.3.2.3 */
+type enumerated SMPP_NetworkType {
+	SMPP_NETT_UNKNOWN		('00'O),
+	SMPP_NETT_GSM			('01'O),
+	SMPP_NETT_ANSI136_TDMA		('02'O),
+	SMPP_NETT_IS95_CDMA		('03'O),
+	SMPP_NETT_PDC			('04'O),
+	SMPP_NETT_PHS			('05'O),
+	SMPP_NETT_IDEN			('06'O),
+	SMPP_NETT_AMPS			('07'O),
+	SMPP_NETT_PAGING		('08'O)
+} with { variant "FIELDLENGTH(8)" };
+
+/* 6.3.2.5 */
+type enumerated SMPP_BearerType {
+	SMPP_BEART_UNKNOWN		('00'O),
+	SMPP_BEART_SMS			('01'O),
+	SMPP_BEART_CSD			('02'O),
+	SMPP_BEART_PACKET_DATA		('03'O),
+	SMPP_BEART_USSD			('04'O),
+	SMPP_BEART_CDPD			('05'O),
+	SMPP_BEART_DATATAC		('06'O),
+	SMPP_BEART_FLEX			('07'O),
+	SMPP_BEART_CELL_BROADCAST	('08'O)
+} with { variant "FIELDLENGTH(8)" };
+
+
+/* 5.3.2.30 */
+type enumerated SMPP_MsAvailStatus {
+	SMPP_MS_AVAIL_AVAILABLE		('00'O),
+	SMPP_MS_AVAIL_DENIED		('01'O),
+	SMPP_MS_AVAIL_UNAVAILABLE	('02'O)
+} with { variant "FIELDLENGTH(8)" };
+
+/* 5.3.2.31 */
+type record SMPP_NetErrCode {
+	SMPP_NetErrCodeType	net_type,
+	uint16_t		err_code
+} with { variant "" };
+type enumerated SMPP_NetErrCodeType {
+	SMPP_ERR_NETT_ANSI136		('01'O),
+	SMPP_ERR_NETT_IS95		('02'O),
+	SMPP_ERR_NETT_GSM		('03'O),
+	SMPP_ERR_NETT_RESERVED		('04'O)
+} with { variant "FIELDLENGTH(8)" };
+
+
+type octetstring COctetString; /* FIXME: How to express this in "RAW" syntax? */
+
+
+} with { encode "RAW" };

-- 
To view, visit https://gerrit.osmocom.org/7695
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib1952ffa0cbc915ab4c088da03fec2da4258b47c
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>



More information about the gerrit-log mailing list