diff --git a/pdu/alert.go b/pdu/alert.go new file mode 100644 index 0000000..31b1701 --- /dev/null +++ b/pdu/alert.go @@ -0,0 +1,6 @@ +package pdu + +type ( + ALERT_NOTIFICATION struct{} + ALERT_NOTIFICATION_RESP struct{} +) \ No newline at end of file diff --git a/pdu/bind.go b/pdu/bind.go new file mode 100644 index 0000000..7a5cb97 --- /dev/null +++ b/pdu/bind.go @@ -0,0 +1,44 @@ +package pdu + +type ( + 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 + } +) \ No newline at end of file diff --git a/pdu/cancel.go b/pdu/cancel.go new file mode 100644 index 0000000..9c2d69c --- /dev/null +++ b/pdu/cancel.go @@ -0,0 +1,18 @@ +package pdu + +type ( + 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 + } +) \ No newline at end of file diff --git a/pdu/const.go b/pdu/const.go new file mode 100644 index 0000000..1429198 --- /dev/null +++ b/pdu/const.go @@ -0,0 +1,159 @@ +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 +} \ No newline at end of file diff --git a/pdu/data.go b/pdu/data.go new file mode 100644 index 0000000..2e9acb5 --- /dev/null +++ b/pdu/data.go @@ -0,0 +1,6 @@ +package pdu + +type ( + DATA_SM struct{} + DATA_SM_RESP struct{} +) \ No newline at end of file diff --git a/pdu/deliver.go b/pdu/deliver.go new file mode 100644 index 0000000..b6b3cf7 --- /dev/null +++ b/pdu/deliver.go @@ -0,0 +1,12 @@ +package pdu + +type ( + DELIVER_SM struct { + PDU_HEADER + SUBMIT_SM + } + DELIVER_SM_RESP struct { + PDU_HEADER + SUBMIT_SM_RESP + } +) \ No newline at end of file diff --git a/pdu/enquire.go b/pdu/enquire.go new file mode 100644 index 0000000..66afa09 --- /dev/null +++ b/pdu/enquire.go @@ -0,0 +1,10 @@ +package pdu + +type ( + ENQUIRE_LINK struct { + PDU_HEADER + } + ENQUIRE_LINK_RESP struct { + PDU_HEADER + } +) \ No newline at end of file diff --git a/pdu/pdu.go b/pdu/pdu.go index 39cba98..41be703 100644 --- a/pdu/pdu.go +++ b/pdu/pdu.go @@ -1,164 +1,11 @@ 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 interface { + Encode() []byte + Decode([]byte) + } + PDU_HEADER struct { command_length uint32 command_id uint32 @@ -166,147 +13,18 @@ type ( 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{} ) + +func (p *PDU_HEADER) Encode() []byte { + // Encode PDU_HEADER fields to byte slice + // (For simplicity, we assume little-endian encoding) + buf := make([]byte, 16) + encodeUint32(buf[0:4], p.command_length) + encodeUint32(buf[4:8], p.command_id) + encodeUint32(buf[8:12], p.command_status) + encodeUint32(buf[12:16], p.sequence_number) + return buf +} diff --git a/pdu/query.go b/pdu/query.go new file mode 100644 index 0000000..d680fa2 --- /dev/null +++ b/pdu/query.go @@ -0,0 +1,6 @@ +package pdu + +type ( + QUERY_SM struct{} + QUERY_SM_RESP struct{} +) \ No newline at end of file diff --git a/pdu/replace.go b/pdu/replace.go new file mode 100644 index 0000000..115897e --- /dev/null +++ b/pdu/replace.go @@ -0,0 +1,6 @@ +package pdu + +type ( + REPLACE_SM struct{} + REPLACE_SM_RESP struct{} +) \ No newline at end of file diff --git a/pdu/submit.go b/pdu/submit.go new file mode 100644 index 0000000..a2aa012 --- /dev/null +++ b/pdu/submit.go @@ -0,0 +1,59 @@ +package pdu + +type ( + 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{} +) diff --git a/pdu/util.go b/pdu/util.go new file mode 100644 index 0000000..2d79d95 --- /dev/null +++ b/pdu/util.go @@ -0,0 +1 @@ +package pdu