diff --git a/pdu/pdu.go b/pdu/pdu.go index dc6ff6e..39cba98 100644 --- a/pdu/pdu.go +++ b/pdu/pdu.go @@ -1 +1,312 @@ -package pdu \ No newline at end of file +package pdu + +var COMMAND_ID = struct { + GENERIC_NACK_ID uint32 + BIND_RECEIVER_ID uint32 + BIND_RECEIVER_RESP_ID uint32 + BIND_TRANSMITTER_ID uint32 + BIND_TRANSMITTER_RESP_ID uint32 + QUERY_SM_ID uint32 + QUERY_SM_RESP_ID uint32 + SUBMIT_SM_ID uint32 + SUBMIT_SM_RESP_ID uint32 + DELIVER_SM_ID uint32 + DELIVER_SM_RESP_ID uint32 + UNBIND_ID uint32 + UNBIND_RESP_ID uint32 + REPLACE_SM_ID uint32 + REPLACE_SM_RESP_ID uint32 + CANCEL_SM_ID uint32 + CANCEL_SM_RESP_ID uint32 + BIND_TRANSCIEVER_ID uint32 + BIND_TRANSCIEVER_RESP_ID uint32 + OUTBIND_ID uint32 + ENQUIRE_LINK_ID uint32 + ENQUIRE_LINK_RESP_ID uint32 + SUBMIT_MULTI_ID uint32 + SUBMIT_MULTI_RESP_ID uint32 + ALERT_NOTIFICATION_ID uint32 + DATA_SM_ID uint32 + DATA_SM_RESP_ID uint32 +}{ + GENERIC_NACK_ID: 0x80000000, + BIND_RECEIVER_ID: 0x00000001, + BIND_RECEIVER_RESP_ID: 0x80000001, + BIND_TRANSMITTER_ID: 0x00000002, + BIND_TRANSMITTER_RESP_ID: 0x80000002, + QUERY_SM_ID: 0x00000003, + QUERY_SM_RESP_ID: 0x80000003, + SUBMIT_SM_ID: 0x00000004, + SUBMIT_SM_RESP_ID: 0x80000004, + DELIVER_SM_ID: 0x00000005, + DELIVER_SM_RESP_ID: 0x80000005, + UNBIND_ID: 0x00000006, + UNBIND_RESP_ID: 0x80000006, + REPLACE_SM_ID: 0x00000007, + REPLACE_SM_RESP_ID: 0x80000007, + CANCEL_SM_ID: 0x00000008, + CANCEL_SM_RESP_ID: 0x80000008, + BIND_TRANSCIEVER_ID: 0x00000009, + BIND_TRANSCIEVER_RESP_ID: 0x80000009, + OUTBIND_ID: 0x0000000B, + ENQUIRE_LINK_ID: 0x00000015, + ENQUIRE_LINK_RESP_ID: 0x80000015, + SUBMIT_MULTI_ID: 0x00000021, + SUBMIT_MULTI_RESP_ID: 0x80000021, + ALERT_NOTIFICATION_ID: 0x00000102, + DATA_SM_ID: 0x00000103, + DATA_SM_RESP_ID: 0x80000103, +} + +var COMMAND_STATUS = struct { + ESME_ROK uint32 + ESME_RINVMSGLEN uint32 + ESME_RINVCMDLEN uint32 + ESME_RINVCMDID uint32 + ESME_RINVBNDSTS uint32 + ESME_RALYBND uint32 + ESME_RINVPRTFLG uint32 + ESME_RINVREGDLVFLG uint32 + ESME_RSYSERR uint32 + ESME_RINVSRCADR uint32 + ESME_RINVDSTADR uint32 + ESME_RINVMSGID uint32 + ESME_RBINDFAIL uint32 + ESME_RINVPASWD uint32 + ESME_RINVSYSID uint32 + ESME_RCANCELFAIL uint32 + ESME_RREPLACEFAIL uint32 + ESME_RMSGQFUL uint32 + ESME_RINVSERTYP uint32 + ESME_RINVNUMDESTS uint32 + ESME_RINVDLNAME uint32 + ESME_RINVDESTFLAG uint32 + ESME_RINVSUBREP uint32 + ESME_RINVESMCLASS uint32 + ESME_RCNTSUBDL uint32 + ESME_RSUBMITFAIL uint32 + ESME_RINVSRCTON uint32 + ESME_RINVSRCNPI uint32 + ESME_RINVDSTTON uint32 + ESME_RINVDSTNPI uint32 + ESME_RINVSYSTYP uint32 + ESME_RINVREPFLAG uint32 + ESME_RINVNUMMSGS uint32 + ESME_RTHROTTLED uint32 + ESME_RINVSCHED uint32 + ESME_RINVEXPIRY uint32 + ESME_RINVDFTMSGID uint32 + ESME_RX_T_APPN uint32 + ESME_RX_P_APPN uint32 + ESME_RX_R_APPN uint32 + ESME_RQUERYFAIL uint32 + ESME_RINVOPTPARSTREAM uint32 + ESME_ROPTPARNOTALLWD uint32 + ESME_RINVPARLEN uint32 + ESME_RMISSINGOPTPARAM uint32 + ESME_RINVOPTPARAMVAL uint32 + ESME_RDELIVERYFAILURE uint32 + ESME_RUNKNOWNERR uint32 +}{ + ESME_ROK: 0x00000000, // No Error + ESME_RINVMSGLEN: 0x00000001, // Message Length is invalid + ESME_RINVCMDLEN: 0x00000002, // Command Length is invalid + ESME_RINVCMDID: 0x00000003, // Invalid Command ID + ESME_RINVBNDSTS: 0x00000004, // Incorrect BIND Status for given command + ESME_RALYBND: 0x00000005, // ESME Already in Bound State + ESME_RINVPRTFLG: 0x00000006, // Invalid Priority Flag + ESME_RINVREGDLVFLG: 0x00000007, // Invalid Registered Delivery Flag + ESME_RSYSERR: 0x00000008, // System Error + ESME_RINVSRCADR: 0x0000000A, // Invalid Source Address + ESME_RINVDSTADR: 0x0000000B, // Invalid Dest Addr + ESME_RINVMSGID: 0x0000000C, // Message ID is invalid + ESME_RBINDFAIL: 0x0000000D, // Bind Failed + ESME_RINVPASWD: 0x0000000E, // Invalid Password + ESME_RINVSYSID: 0x0000000F, // Invalid System ID + ESME_RCANCELFAIL: 0x00000011, // Cancel SM Failed + ESME_RREPLACEFAIL: 0x00000013, // Replace SM Failed + ESME_RMSGQFUL: 0x00000014, // Message Queue Full + ESME_RINVSERTYP: 0x00000015, // Invalid Service Type + ESME_RINVNUMDESTS: 0x00000033, // Invalid number of destinations + ESME_RINVDLNAME: 0x00000034, // Invalid Distribution List name + ESME_RINVDESTFLAG: 0x00000040, // Destination flag is invalid + ESME_RINVSUBREP: 0x00000042, // Invalid ‘submit with replace’ request + ESME_RINVESMCLASS: 0x00000043, // Invalid esm_class field data + ESME_RCNTSUBDL: 0x00000044, // Cannot Submit to Distribution List + ESME_RSUBMITFAIL: 0x00000045, // submit_sm or submit_multi failed + ESME_RINVSRCTON: 0x00000048, // Invalid Source address TON + ESME_RINVSRCNPI: 0x00000049, // Invalid Source address NPI + ESME_RINVDSTTON: 0x00000050, // Invalid Destination address TON + ESME_RINVDSTNPI: 0x00000051, // Invalid Destination address NPI + ESME_RINVSYSTYP: 0x00000053, // Invalid system_type field + ESME_RINVREPFLAG: 0x00000054, // Invalid replace_if_present flag + ESME_RINVNUMMSGS: 0x00000055, // Invalid number of messages + ESME_RTHROTTLED: 0x00000058, // Throttling error (ESME has exceeded allowed message limits) + ESME_RINVSCHED: 0x00000061, // Invalid Scheduled Delivery Time + ESME_RINVEXPIRY: 0x00000062, // Invalid message validity period + ESME_RINVDFTMSGID: 0x00000063, // Predefined Message Invalid or Not Found + ESME_RX_T_APPN: 0x00000064, // ESME Receiver Temporary App Error Code + ESME_RX_P_APPN: 0x00000065, // ESME Receiver Permanent App Error Code + ESME_RX_R_APPN: 0x00000066, // ESME Receiver Reject Message Error Code + ESME_RQUERYFAIL: 0x00000067, // query_sm request failed + ESME_RINVOPTPARSTREAM: 0x000000C0, // Error in the optional part of the PDU + ESME_ROPTPARNOTALLWD: 0x000000C1, // Optional Parameter not allowed + ESME_RINVPARLEN: 0x000000C2, // Invalid Parameter Length. + ESME_RMISSINGOPTPARAM: 0x000000C3, // Expected Optional Parameter missing + ESME_RINVOPTPARAMVAL: 0x000000C4, // Invalid Optional Parameter Value + ESME_RDELIVERYFAILURE: 0x000000FE, // Delivery Failure (used for + ESME_RUNKNOWNERR: 0x000000FF, // Unknown Error +} + +type ( + PDU_HEADER struct { + command_length uint32 + command_id uint32 + command_status uint32 + sequence_number uint32 + } + + BIND struct { + PDU_HEADER + system_id string + password string + system_type string + interface_version uint8 + addr_ton uint8 + addr_npi uint8 + address_range string + } + BIND_RESP struct { + PDU_HEADER + system_id string + sc_interface_version uint8 + } + BIND_RECVEIVER struct { + BIND + } + BIND_RECEIVER_RESP struct { + BIND_RESP + } + BIND_TRANSMITTER struct { + BIND + } + BIND_TRANSMITTER_RESP struct { + BIND_RESP + } + BIND_TRANSCIEVER struct { + BIND + } + BIND_TRANSCIEVER_RESP struct { + BIND_RESP + } + + UNBIND struct { + PDU_HEADER + } + UNBIND_RESP struct { + PDU_HEADER + } + + GENERIC_NACK struct { + PDU_HEADER + } + + SUBMIT_SM struct { + PDU_HEADER + service_type string + source_addr_ton uint8 + source_addr_npi uint8 + source_addr string + dest_addr_ton uint8 + dest_addr_npi uint8 + destination_addr string + esm_class uint8 + protocol_id uint8 + priority_flag uint8 + schedule_delivery_time string + validity_period string + registered_delivery uint8 + replace_if_present uint8 + data_coding uint8 + sm_default_msg_id uint8 + sm_length uint8 + short_message string + // user_message_reference uint16 + // source_port uint16 + // source_addr_subunit uint8 + // destination_port uint16 + // dest_addr_subunit uint8 + // sar_msg_ref_num uint16 + // sar_total_segments uint8 + // sar_segment_seqnum uint8 + // more_messages_to_send uint8 + // payload_type uint8 + // message_payload string + // privacy_indicator uint8 + // callback_num string + // callback_num_pres uint8 + // callback_num_atag string + // source_subaddress string + // dest_subaddress string + // user_response_code uint8 + // display_time uint8 + // sms_signal uint8 + // ms_validity uint8 + // ms_msg_wait_facilities uint8 + // number_of_messages uint8 + // alert_on_message_delivery uint8 + // language_indicator uint8 + // its_reply_type uint8 + // its_session_info uint8 + // ussd_service_op uint8 + } + SUBMIT_SM_RESP struct { + PDU_HEADER + message_id string + } + SUBMIT_MULTI struct{} + SUBMIT_MULTI_RESP struct{} + + DELIVER_SM struct { + PDU_HEADER + SUBMIT_SM + } + DELIVER_SM_RESP struct { + PDU_HEADER + SUBMIT_SM_RESP + } + + DATA_SM struct{} + DATA_SM_RESP struct{} + + QUERY_SM struct{} + QUERY_SM_RESP struct{} + + CANCEL_SM struct { + PDU_HEADER + service_type string + message_id string + source_addr_ton uint8 + source_addr_npi uint8 + source_addr string + dest_addr_ton uint8 + dest_addr_npi uint8 + destination_addr string + } + CANCEL_SM_RESP struct { + PDU_HEADER + } + + REPLACE_SM struct{} + REPLACE_SM_RESP struct{} + + ENQUIRE_LINK struct { + PDU_HEADER + } + ENQUIRE_LINK_RESP struct { + PDU_HEADER + } + + ALERT_NOTIFICATION struct{} + ALERT_NOTIFICATION_RESP struct{} +)