Refactor pdus into many files
This commit is contained in:
6
pdu/alert.go
Normal file
6
pdu/alert.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package pdu
|
||||||
|
|
||||||
|
type (
|
||||||
|
ALERT_NOTIFICATION struct{}
|
||||||
|
ALERT_NOTIFICATION_RESP struct{}
|
||||||
|
)
|
44
pdu/bind.go
Normal file
44
pdu/bind.go
Normal file
@@ -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
|
||||||
|
}
|
||||||
|
)
|
18
pdu/cancel.go
Normal file
18
pdu/cancel.go
Normal file
@@ -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
|
||||||
|
}
|
||||||
|
)
|
159
pdu/const.go
Normal file
159
pdu/const.go
Normal file
@@ -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
|
||||||
|
}
|
6
pdu/data.go
Normal file
6
pdu/data.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package pdu
|
||||||
|
|
||||||
|
type (
|
||||||
|
DATA_SM struct{}
|
||||||
|
DATA_SM_RESP struct{}
|
||||||
|
)
|
12
pdu/deliver.go
Normal file
12
pdu/deliver.go
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package pdu
|
||||||
|
|
||||||
|
type (
|
||||||
|
DELIVER_SM struct {
|
||||||
|
PDU_HEADER
|
||||||
|
SUBMIT_SM
|
||||||
|
}
|
||||||
|
DELIVER_SM_RESP struct {
|
||||||
|
PDU_HEADER
|
||||||
|
SUBMIT_SM_RESP
|
||||||
|
}
|
||||||
|
)
|
10
pdu/enquire.go
Normal file
10
pdu/enquire.go
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package pdu
|
||||||
|
|
||||||
|
type (
|
||||||
|
ENQUIRE_LINK struct {
|
||||||
|
PDU_HEADER
|
||||||
|
}
|
||||||
|
ENQUIRE_LINK_RESP struct {
|
||||||
|
PDU_HEADER
|
||||||
|
}
|
||||||
|
)
|
314
pdu/pdu.go
314
pdu/pdu.go
@@ -1,164 +1,11 @@
|
|||||||
package pdu
|
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 (
|
type (
|
||||||
|
PDU interface {
|
||||||
|
Encode() []byte
|
||||||
|
Decode([]byte)
|
||||||
|
}
|
||||||
|
|
||||||
PDU_HEADER struct {
|
PDU_HEADER struct {
|
||||||
command_length uint32
|
command_length uint32
|
||||||
command_id uint32
|
command_id uint32
|
||||||
@@ -166,147 +13,18 @@ type (
|
|||||||
sequence_number 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 {
|
GENERIC_NACK struct {
|
||||||
PDU_HEADER
|
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
|
||||||
|
}
|
||||||
|
6
pdu/query.go
Normal file
6
pdu/query.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package pdu
|
||||||
|
|
||||||
|
type (
|
||||||
|
QUERY_SM struct{}
|
||||||
|
QUERY_SM_RESP struct{}
|
||||||
|
)
|
6
pdu/replace.go
Normal file
6
pdu/replace.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package pdu
|
||||||
|
|
||||||
|
type (
|
||||||
|
REPLACE_SM struct{}
|
||||||
|
REPLACE_SM_RESP struct{}
|
||||||
|
)
|
59
pdu/submit.go
Normal file
59
pdu/submit.go
Normal file
@@ -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{}
|
||||||
|
)
|
1
pdu/util.go
Normal file
1
pdu/util.go
Normal file
@@ -0,0 +1 @@
|
|||||||
|
package pdu
|
Reference in New Issue
Block a user