anthill_smpp_ruby 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +21 -0
- data/README +30 -0
- data/anthill_smpp_ruby.gemspec +18 -0
- data/changelog +43 -0
- data/data/dumps/random_command.dump +1 -0
- data/data/dumps/smpp_alert_notification.dump +1 -0
- data/data/dumps/smpp_bind_receiver.dump +1 -0
- data/data/dumps/smpp_bind_receiver_resp.dump +1 -0
- data/data/dumps/smpp_bind_transceiver.dump +1 -0
- data/data/dumps/smpp_bind_transceiver_1.dump +2 -0
- data/data/dumps/smpp_bind_transceiver_resp.dump +1 -0
- data/data/dumps/smpp_bind_transmitter.dump +1 -0
- data/data/dumps/smpp_bind_transmitter_resp.dump +1 -0
- data/data/dumps/smpp_broadcast_sm.dump +1 -0
- data/data/dumps/smpp_broadcast_sm_resp.dump +1 -0
- data/data/dumps/smpp_cancel_broadcast_sm.dump +1 -0
- data/data/dumps/smpp_cancel_broadcast_sm_resp.dump +1 -0
- data/data/dumps/smpp_cancel_sm.dump +1 -0
- data/data/dumps/smpp_cancel_sm_resp.dump +1 -0
- data/data/dumps/smpp_data_sm.dump +1 -0
- data/data/dumps/smpp_data_sm_resp.dump +1 -0
- data/data/dumps/smpp_deliver_sm.dump +1 -0
- data/data/dumps/smpp_deliver_sm_resp.dump +1 -0
- data/data/dumps/smpp_enquire_link.dump +1 -0
- data/data/dumps/smpp_enquire_link_resp.dump +1 -0
- data/data/dumps/smpp_generic_nack.dump +1 -0
- data/data/dumps/smpp_outbind.dump +1 -0
- data/data/dumps/smpp_query_broadcast_sm.dump +1 -0
- data/data/dumps/smpp_query_broadcast_sm_resp.dump +1 -0
- data/data/dumps/smpp_query_broadcast_sm_resp_1.dump +1 -0
- data/data/dumps/smpp_query_sm.dump +1 -0
- data/data/dumps/smpp_query_sm_resp.dump +1 -0
- data/data/dumps/smpp_replace_sm.dump +1 -0
- data/data/dumps/smpp_replace_sm_resp.dump +1 -0
- data/data/dumps/smpp_submit_multi.dump +1 -0
- data/data/dumps/smpp_submit_multi_resp.dump +1 -0
- data/data/dumps/smpp_submit_sm.dump +1 -0
- data/data/dumps/smpp_submit_sm_resp.dump +1 -0
- data/data/dumps/smpp_unbind.dump +1 -0
- data/data/dumps/smpp_unbind_resp.dump +1 -0
- data/data/pdus/random_command.xml +35 -0
- data/data/pdus/smpp_alert_notification.xml +14 -0
- data/data/pdus/smpp_alert_notification_no_optional.xml +13 -0
- data/data/pdus/smpp_bind_receiver.xml +17 -0
- data/data/pdus/smpp_bind_receiver_resp.xml +12 -0
- data/data/pdus/smpp_bind_receiver_resp_no_optional.xml +11 -0
- data/data/pdus/smpp_bind_transceiver.xml +17 -0
- data/data/pdus/smpp_bind_transceiver_resp.xml +12 -0
- data/data/pdus/smpp_bind_transceiver_resp_no_optional.xml +11 -0
- data/data/pdus/smpp_bind_transmitter.xml +17 -0
- data/data/pdus/smpp_bind_transmitter_resp.xml +12 -0
- data/data/pdus/smpp_bind_transmitter_resp_no_optional.xml +11 -0
- data/data/pdus/smpp_broadcast_sm.xml +47 -0
- data/data/pdus/smpp_broadcast_sm_no_optional.xml +26 -0
- data/data/pdus/smpp_broadcast_sm_resp.xml +14 -0
- data/data/pdus/smpp_broadcast_sm_resp_no_optional.xml +8 -0
- data/data/pdus/smpp_cancel_broadcast_sm.xml +17 -0
- data/data/pdus/smpp_cancel_broadcast_sm_no_optional.xml +15 -0
- data/data/pdus/smpp_cancel_broadcast_sm_resp.xml +7 -0
- data/data/pdus/smpp_cancel_sm.xml +18 -0
- data/data/pdus/smpp_cancel_sm_resp.xml +10 -0
- data/data/pdus/smpp_commands.xsd +914 -0
- data/data/pdus/smpp_data_sm.xml +58 -0
- data/data/pdus/smpp_data_sm_no_optional.xml +17 -0
- data/data/pdus/smpp_data_sm_resp.xml +15 -0
- data/data/pdus/smpp_data_sm_resp_no_optional.xml +8 -0
- data/data/pdus/smpp_deliver_sm.xml +46 -0
- data/data/pdus/smpp_deliver_sm_no_optional.xml +25 -0
- data/data/pdus/smpp_deliver_sm_resp.xml +14 -0
- data/data/pdus/smpp_deliver_sm_resp_no_optional.xml +8 -0
- data/data/pdus/smpp_enquire_link.xml +10 -0
- data/data/pdus/smpp_enquire_link_resp.xml +10 -0
- data/data/pdus/smpp_generic_nack.xml +10 -0
- data/data/pdus/smpp_outbind.xml +12 -0
- data/data/pdus/smpp_query_broadcast_sm.xml +12 -0
- data/data/pdus/smpp_query_broadcast_sm_no_optional.xml +11 -0
- data/data/pdus/smpp_query_broadcast_sm_resp.xml +17 -0
- data/data/pdus/smpp_query_broadcast_sm_resp_no_optional.xml +15 -0
- data/data/pdus/smpp_query_sm.xml +11 -0
- data/data/pdus/smpp_query_sm_resp.xml +11 -0
- data/data/pdus/smpp_replace_sm.xml +18 -0
- data/data/pdus/smpp_replace_sm_no_optional.xml +17 -0
- data/data/pdus/smpp_replace_sm_resp.xml +7 -0
- data/data/pdus/smpp_submit_multi.xml +73 -0
- data/data/pdus/smpp_submit_multi_no_optional.xml +51 -0
- data/data/pdus/smpp_submit_multi_resp.xml +35 -0
- data/data/pdus/smpp_submit_sm.xml +57 -0
- data/data/pdus/smpp_submit_sm_no_optional.xml +28 -0
- data/data/pdus/smpp_submit_sm_resp.xml +8 -0
- data/data/pdus/smpp_unbind.xml +10 -0
- data/data/pdus/smpp_unbind_resp.xml +10 -0
- data/examples/dump_viewer.rb +298 -0
- data/examples/pdu_composer.rb +1331 -0
- data/knownbugs +24 -0
- data/lib/anthill_smpp_ruby.rb +83 -0
- data/lib/i_smpp_outputter.rb +425 -0
- data/lib/pdu/smpp_alert_notification.rb +132 -0
- data/lib/pdu/smpp_bind.rb +102 -0
- data/lib/pdu/smpp_bind_receiver.rb +29 -0
- data/lib/pdu/smpp_bind_receiver_resp.rb +30 -0
- data/lib/pdu/smpp_bind_resp.rb +100 -0
- data/lib/pdu/smpp_bind_transceiver.rb +29 -0
- data/lib/pdu/smpp_bind_transceiver_resp.rb +31 -0
- data/lib/pdu/smpp_bind_transmitter.rb +29 -0
- data/lib/pdu/smpp_bind_transmitter_resp.rb +30 -0
- data/lib/pdu/smpp_broadcast_sm.rb +566 -0
- data/lib/pdu/smpp_broadcast_sm_resp.rb +130 -0
- data/lib/pdu/smpp_cancel_broadcast_sm.rb +143 -0
- data/lib/pdu/smpp_cancel_broadcast_sm_resp.rb +60 -0
- data/lib/pdu/smpp_cancel_sm.rb +110 -0
- data/lib/pdu/smpp_cancel_sm_resp.rb +60 -0
- data/lib/pdu/smpp_data_sm.rb +679 -0
- data/lib/pdu/smpp_data_sm_resp.rb +148 -0
- data/lib/pdu/smpp_deliver_sm.rb +458 -0
- data/lib/pdu/smpp_deliver_sm_resp.rb +137 -0
- data/lib/pdu/smpp_enquire_link.rb +59 -0
- data/lib/pdu/smpp_enquire_link_resp.rb +61 -0
- data/lib/pdu/smpp_generic_nack.rb +61 -0
- data/lib/pdu/smpp_outbind.rb +71 -0
- data/lib/pdu/smpp_pdu.rb +90 -0
- data/lib/pdu/smpp_query_broadcast_sm.rb +120 -0
- data/lib/pdu/smpp_query_broadcast_sm_resp.rb +192 -0
- data/lib/pdu/smpp_query_sm.rb +92 -0
- data/lib/pdu/smpp_query_sm_resp.rb +92 -0
- data/lib/pdu/smpp_replace_sm.rb +172 -0
- data/lib/pdu/smpp_replace_sm_resp.rb +61 -0
- data/lib/pdu/smpp_resp.rb +40 -0
- data/lib/pdu/smpp_submit_multi.rb +517 -0
- data/lib/pdu/smpp_submit_multi_resp.rb +90 -0
- data/lib/pdu/smpp_submit_sm.rb +591 -0
- data/lib/pdu/smpp_submit_sm_resp.rb +72 -0
- data/lib/pdu/smpp_unbind.rb +60 -0
- data/lib/pdu/smpp_unbind_resp.rb +61 -0
- data/lib/smpp_constants.rb +917 -0
- data/lib/smpp_csv_outputter.rb +1601 -0
- data/lib/smpp_datatypes.rb +89 -0
- data/lib/smpp_decoder.rb +627 -0
- data/lib/smpp_encoder.rb +495 -0
- data/lib/smpp_hex_outputter.rb +36 -0
- data/lib/smpp_outputter_base.rb +315 -0
- data/lib/smpp_structures.rb +98 -0
- data/lib/smpp_txt_outputter.rb +1895 -0
- data/lib/smpp_validator.rb +373 -0
- data/lib/smpp_xml_outputter.rb +34 -0
- data/roadmap +18 -0
- data/setup.rb +1585 -0
- data/test/anthill_smpp_test.rb +29 -0
- data/test/smpp_codec_test.rb +30 -0
- data/test/smpp_datatypes_test.rb +69 -0
- data/test/smpp_outputter_test.rb +1261 -0
- data/test/smpp_parsing_test.rb +1758 -0
- data/test/smpp_rawdump_test.rb +2095 -0
- data/test/smpp_validator_test.rb +441 -0
- metadata +206 -0
data/lib/smpp_encoder.rb
ADDED
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright 2007 Majoron.com (developers@majoron.com)
|
|
3
|
+
# Original sources are available at www.majoron.com
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
module Majoron
|
|
19
|
+
|
|
20
|
+
module AntHill
|
|
21
|
+
module SMPP
|
|
22
|
+
class SMPPEncoder < AntHill::BinaryEncoder
|
|
23
|
+
|
|
24
|
+
# Constructor
|
|
25
|
+
def initialize()
|
|
26
|
+
super()
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
#std::vector<unsigned char>& encodePacket(SMPPPDU* poPDU)
|
|
30
|
+
|
|
31
|
+
# A methods to encode header
|
|
32
|
+
def encode_header(header)
|
|
33
|
+
encode_unsigned32(header.command_length)
|
|
34
|
+
encode_unsigned32(header.command_id)
|
|
35
|
+
encode_unsigned32(header.command_status)
|
|
36
|
+
encode_unsigned32(header.sequence_number)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# A methods to encode mandatory fields
|
|
40
|
+
def encode_system_id(system_id)
|
|
41
|
+
encode_cstring(system_id)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def encode_password(password)
|
|
45
|
+
encode_cstring(password)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def encode_system_type(system_type)
|
|
49
|
+
encode_cstring(system_type)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def encode_interface_version(interface_version)
|
|
53
|
+
encode_uchar(interface_version)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def encode_addr_ton(addr_ton)
|
|
57
|
+
encode_uchar(addr_ton)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def encode_addr_npi(addr_npi)
|
|
61
|
+
encode_uchar(addr_npi)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def encode_address_range(address_range)
|
|
65
|
+
encode_cstring(address_range)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def encode_service_type(service_type)
|
|
69
|
+
encode_cstring(service_type)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def encode_source_addr_ton(source_addr_ton)
|
|
73
|
+
encode_uchar(source_addr_ton)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def encode_source_addr_npi(source_addr_npi)
|
|
77
|
+
encode_uchar(source_addr_npi)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def encode_source_addr21(source_addr)
|
|
81
|
+
encode_cstring(source_addr)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def encode_source_addr65(source_addr)
|
|
85
|
+
encode_cstring(source_addr)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def encode_dest_addr_ton(dest_addr_ton)
|
|
89
|
+
encode_uchar(dest_addr_ton)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def encode_dest_addr_npi(dest_addr_npi)
|
|
93
|
+
encode_uchar(dest_addr_npi)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def encode_dest_addr21(dest_addr)
|
|
97
|
+
encode_cstring(dest_addr)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def encode_dest_addr65(dest_addr)
|
|
101
|
+
encode_cstring(dest_addr)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def encode_esm_class(esm_class)
|
|
105
|
+
encode_uchar(esm_class)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def encode_protocol_id(protocol_id)
|
|
109
|
+
encode_uchar(protocol_id)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def encode_priority_flag(priority_flag)
|
|
113
|
+
encode_uchar(priority_flag)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def encode_schedule_delivery_time(schedule_delivery_time)
|
|
117
|
+
encode_cstring(schedule_delivery_time)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def encode_validity_period(validity_period)
|
|
121
|
+
encode_cstring(validity_period)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def encode_registered_delivery(registered_delivery)
|
|
125
|
+
encode_uchar(registered_delivery)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def encode_replace_if_present_flag(replace_if_present_flag)
|
|
129
|
+
encode_uchar(replace_if_present_flag)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def encode_data_coding(data_coding)
|
|
133
|
+
encode_uchar(data_coding)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def encode_sm_default_msg_id(sm_default_msg_id)
|
|
137
|
+
encode_uchar(sm_default_msg_id)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def encode_sm_length(sm_length)
|
|
141
|
+
encode_uchar(sm_length)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def encode_short_message(short_message)
|
|
145
|
+
encode_binary(short_message)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def encode_message_id(message_id)
|
|
149
|
+
encode_cstring(message_id)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def encode_esme_addr_ton(esme_addr_ton)
|
|
153
|
+
encode_uchar(esme_addr_ton)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def encode_esme_addr_npi(esme_addr_npi)
|
|
157
|
+
encode_uchar(esme_addr_npi)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def encode_esme_addr(esme_addr)
|
|
161
|
+
encode_cstring(esme_addr)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def encode_number_of_dest(number_of_dest)
|
|
165
|
+
encode_uchar(number_of_dest)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def encode_dest_addresses(dest_addresses)
|
|
169
|
+
0.upto(dest_addresses.size() - 1) do |i|
|
|
170
|
+
encode_uchar(dest_addresses[i].dest_flag)
|
|
171
|
+
if dest_addresses[i].dest_flag == DestFlag::SME_ADDRESS
|
|
172
|
+
encode_uchar(dest_addresses[i].address().ton())
|
|
173
|
+
encode_uchar(dest_addresses[i].address().npi())
|
|
174
|
+
encode_cstring(dest_addresses[i].address().address())
|
|
175
|
+
elsif dest_addresses[i].dest_flag == DestFlag::DISTR_LIST_NAME
|
|
176
|
+
encode_cstring(dest_addresses[i].distr_list_name())
|
|
177
|
+
else
|
|
178
|
+
raise sprintf(CodecErrors::ENCODER_INV_DSTFLAG, @offset, dest_addresses[i].dest_flag())
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def encode_no_unsuccess(no_unsuccess)
|
|
184
|
+
encode_uchar(no_unsuccess)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def encode_unsuccess_smes(unsuccess_smes)
|
|
188
|
+
0.upto(unsuccess_smes.size() - 1) do |i|
|
|
189
|
+
encode_uchar(unsuccess_smes[i].sme_address().ton())
|
|
190
|
+
encode_uchar(unsuccess_smes[i].sme_address().npi())
|
|
191
|
+
encode_cstring(unsuccess_smes[i].sme_address().address())
|
|
192
|
+
encode_unsigned32(unsuccess_smes[i].error_status_code())
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def encode_final_date(final_date)
|
|
197
|
+
encode_cstring(final_date)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def encode_error_code(error_code)
|
|
201
|
+
encode_uchar(error_code)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def encode_message_state(message_state)
|
|
205
|
+
encode_uchar(message_state)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def encode_broadcast_area_identifier(broadcast_area_identifier, len)
|
|
209
|
+
0.upto(broadcast_area_identifier.size() - 1) do |i|
|
|
210
|
+
encode_binary_tlv(OptTags::TAG_BROADCAST_AREA_IDENTIFIER, broadcast_area_identifier[i].value(), len[i])
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def encode_broadcast_area_identifier_single(broadcast_area_identifier, len)
|
|
215
|
+
encode_binary_tlv(OptTags::TAG_BROADCAST_AREA_IDENTIFIER, broadcast_area_identifier.value(), len)
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def encode_broadcast_rep_num(broadcast_rep_num, len)
|
|
219
|
+
encode_uint16_tlv(OptTags::TAG_BROADCAST_REP_NUM, broadcast_rep_num, len)
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def encode_broadcast_frequency_interval(broadcast_frequency_interval, len)
|
|
223
|
+
encode_binary_tlv(OptTags::TAG_BROADCAST_FREQUENCY_INTERVAL, broadcast_frequency_interval, len)
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def encode_broadcast_area_success(broadcast_area_success, len)
|
|
227
|
+
encode_uchar_tlv(OptTags::TAG_BROADCAST_AREA_SUCCESS, broadcast_area_success, len)
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# A methods to encode optional fields
|
|
231
|
+
def encode_sc_interface_version(sc_interface_version, len)
|
|
232
|
+
encode_uchar_tlv(OptTags::TAG_SC_INTERFACE_VERSION, sc_interface_version, len)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def encode_ms_availability_status(ms_availability_status, len)
|
|
236
|
+
encode_uchar_tlv(OptTags::TAG_MS_AVAILABILITY_STATUS, ms_availability_status, len)
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def encode_alert_on_msg_delivery(alert_on_msg_delivery, len)
|
|
240
|
+
encode_uchar_tlv(OptTags::TAG_ALERT_ON_MESSAGE_DELIVERY, alert_on_msg_delivery, len)
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def encode_broadcast_channel_indicator(broadcast_channel_indicator, len)
|
|
244
|
+
encode_uchar_tlv(OptTags::TAG_BROADCAST_CHANNEL_INDICATOR, broadcast_channel_indicator, len)
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
def encode_broadcast_content_type_info(broadcast_content_type_info, len)
|
|
248
|
+
encode_binary_tlv(OptTags::TAG_BROADCAST_CONTENT_TYPE_INFO, broadcast_content_type_info, len)
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def encode_broadcast_message_class(broadcast_message_class, len)
|
|
252
|
+
encode_uchar_tlv(OptTags::TAG_BROADCAST_MESSAGE_CLASS, broadcast_message_class, len)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
def encode_broadcast_service_group(broadcast_service_group, len)
|
|
256
|
+
encode_binary_tlv(OptTags::TAG_BROADCAST_SERVICE_GROUP, broadcast_service_group, len)
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def encode_callback_num(callback_num, len)
|
|
260
|
+
encode_binary_tlv(OptTags::TAG_CALLBACK_NUM, callback_num, len)
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def encode_callback_num_atag(callback_num_atag, len)
|
|
264
|
+
encode_binary_tlv(OptTags::TAG_CALLBACK_NUM_ATAG, callback_num_atag, len)
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
def encode_callback_num_pres_ind(callback_num_pres_ind, len)
|
|
268
|
+
encode_uchar_tlv(OptTags::TAG_CALLBACK_NUM_PRES_IND, callback_num_pres_ind, len)
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
def encode_dest_addr_subunit(dest_addr_subunit, len)
|
|
272
|
+
encode_uchar_tlv(OptTags::TAG_DEST_ADDR_SUBUNIT, dest_addr_subunit, len)
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
def encode_dest_subaddress(dest_subaddress, len)
|
|
276
|
+
encode_binary_tlv(OptTags::TAG_DEST_SUBADDRESS, dest_subaddress, len)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def encode_display_time(display_time, len)
|
|
280
|
+
encode_uchar_tlv(OptTags::TAG_DISPLAY_TIME, display_time, len)
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
def encode_language_indicator(language_indicator, len)
|
|
284
|
+
encode_uchar_tlv(OptTags::TAG_LANGUAGE_INDICATOR, language_indicator, len)
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def encode_message_payload(message_payload, len)
|
|
288
|
+
encode_binary_tlv(OptTags::TAG_MESSAGE_PAYLOAD, message_payload, len)
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def encode_ms_validity(ms_validity, len)
|
|
292
|
+
encode_uchar_tlv(OptTags::TAG_MS_VALIDITY, ms_validity, len)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def encode_payload_type(payload_type, len)
|
|
296
|
+
encode_uchar_tlv(OptTags::TAG_PAYLOAD_TYPE, payload_type, len)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def encode_privacy_indicator(privacy_indicator, len)
|
|
300
|
+
encode_uchar_tlv(OptTags::TAG_PRIVACY_INDICATOR, privacy_indicator, len)
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
def encode_sms_signal(sms_signal, len)
|
|
304
|
+
encode_uint16_tlv(OptTags::TAG_SMS_SIGNAL, sms_signal, len)
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def encode_source_addr_subunit(source_addr_subunit, len)
|
|
308
|
+
encode_uchar_tlv(OptTags::TAG_SOURCE_ADDR_SUBUNIT, source_addr_subunit, len)
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def encode_source_port(source_port, len)
|
|
312
|
+
encode_uint16_tlv(OptTags::TAG_SOURCE_PORT, source_port, len)
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
def encode_source_subaddress(source_subaddress, len)
|
|
316
|
+
encode_binary_tlv(OptTags::TAG_SOURCE_SUBADDRESS, source_subaddress, len)
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
def encode_user_message_reference(user_message_reference, len)
|
|
320
|
+
encode_uint16_tlv(OptTags::TAG_USER_MESSAGE_REFERENCE, user_message_reference, len)
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
def encode_broadcast_error_status(broadcast_error_status, len)
|
|
324
|
+
encode_uint32_tlv(OptTags::TAG_BROADCAST_ERROR_STATUS, broadcast_error_status, len)
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
def encode_failed_broadcast_area_identifier(failed_broadcast_area_identifier, len)
|
|
328
|
+
0.upto(failed_broadcast_area_identifier.size() - 1) do |i|
|
|
329
|
+
encode_binary_tlv(OptTags::TAG_BROADCAST_AREA_IDENTIFIER, failed_broadcast_area_identifier[i].value(), len[i])
|
|
330
|
+
end
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
def encode_failed_broadcast_area_identifier_single(failed_broadcast_area_identifier, len)
|
|
334
|
+
encode_binary_tlv(OptTags::TAG_BROADCAST_AREA_IDENTIFIER, failed_broadcast_area_identifier.value(), len)
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
def encode_broadcast_content_type(broadcast_content_type, len)
|
|
338
|
+
encode_binary_tlv(OptTags::TAG_BROADCAST_CONTENT_TYPE, broadcast_content_type, len)
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
def encode_source_network_type(source_network_type, len)
|
|
342
|
+
encode_uchar_tlv(OptTags::TAG_SOURCE_NETWORK_TYPE, source_network_type, len)
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def encode_source_bearer_type(source_bearer_type, len)
|
|
346
|
+
encode_uchar_tlv(OptTags::TAG_SOURCE_BEARER_TYPE, source_bearer_type, len)
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
def encode_source_telematics_id(source_telematics_id, len)
|
|
350
|
+
encode_uchar_tlv(OptTags::TAG_SOURCE_TELEMATICS_ID, source_telematics_id, len)
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
def encode_destination_port(destination_port, len)
|
|
354
|
+
encode_uint16_tlv(OptTags::TAG_DESTINATION_PORT, destination_port, len)
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
def encode_dest_network_type(dest_network_type, len)
|
|
358
|
+
encode_uchar_tlv(OptTags::TAG_DEST_NETWORK_TYPE, dest_network_type, len)
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
def encode_dest_bearer_type(dest_bearer_type, len)
|
|
362
|
+
encode_uchar_tlv(OptTags::TAG_DEST_BEARER_TYPE, dest_bearer_type, len)
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
def encode_dest_telematics_id(dest_telematics_id, len)
|
|
366
|
+
encode_uchar_tlv(OptTags::TAG_DEST_TELEMATICS_ID, dest_telematics_id, len)
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
def encode_sar_msg_ref_num(sar_msg_ref_num, len)
|
|
370
|
+
encode_uint16_tlv(OptTags::TAG_SAR_MSG_REF_NUM, sar_msg_ref_num, len)
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
def encode_sar_total_segments(sar_total_segments, len)
|
|
374
|
+
encode_uchar_tlv(OptTags::TAG_SAR_TOTAL_SEGMENTS, sar_total_segments, len)
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
def encode_sar_segment_seqnum(sar_segment_seqnum, len)
|
|
378
|
+
encode_uchar_tlv(OptTags::TAG_SAR_SEGMENT_SEQNUM, sar_segment_seqnum, len)
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
def encode_more_messages_to_send(more_messages_to_send, len)
|
|
382
|
+
encode_uchar_tlv(OptTags::TAG_MORE_MESSAGES_TO_SEND, more_messages_to_send, len)
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
def encode_qos_time_to_live(qos_time_to_live, len)
|
|
386
|
+
encode_uint32_tlv(OptTags::TAG_QOS_TIME_TO_LIVE, qos_time_to_live, len)
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
def encode_set_dpf(set_dpf, len)
|
|
390
|
+
encode_uchar_tlv(OptTags::TAG_SET_DPF, set_dpf, len)
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
def encode_receipted_message_id(receipted_message_id, len)
|
|
394
|
+
encode_cstring_tlv(OptTags::TAG_RECEIPTED_MESSAGE_ID, receipted_message_id, len)
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
def encode_message_state_tlv(message_state_tlv, len)
|
|
398
|
+
encode_uchar_tlv(OptTags::TAG_MESSAGE_STATE, message_state_tlv, len)
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
def encode_network_error_code(network_error_code, len)
|
|
402
|
+
encode_unsigned16(OptTags::TAG_NETWORK_ERROR_CODE)
|
|
403
|
+
encode_unsigned16(len)
|
|
404
|
+
encode_uchar(network_error_code.network_code())
|
|
405
|
+
encode_unsigned16(network_error_code.error_code())
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
def encode_ms_msg_wait_facilities(ms_msg_wait_facilities, len)
|
|
409
|
+
encode_uchar_tlv(OptTags::TAG_MS_MSG_WAIT_FACILITIES, ms_msg_wait_facilities, len)
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
def encode_number_of_messages(number_of_messages, len)
|
|
413
|
+
encode_uchar_tlv(OptTags::TAG_NUMBER_OF_MESSAGES, number_of_messages, len)
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
def encode_its_reply_type(its_reply_type, len)
|
|
417
|
+
encode_uchar_tlv(OptTags::TAG_ITS_REPLY_TYPE, its_reply_type, len)
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
def encode_its_session_info(its_session_info, len)
|
|
421
|
+
encode_uint16_tlv(OptTags::TAG_ITS_SESSION_INFO, its_session_info, len)
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
def encode_user_response_code(user_response_code, len)
|
|
425
|
+
encode_uchar_tlv(OptTags::TAG_USER_RESPONSE_CODE, user_response_code, len)
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
def encode_delivery_failure_reason(delivery_failure_reason, len)
|
|
429
|
+
encode_uchar_tlv(OptTags::TAG_DELIVERY_FAILURE_REASON, delivery_failure_reason, len)
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
def encode_additional_status_info_text(additional_status_info_text, len)
|
|
433
|
+
encode_binary_tlv(OptTags::TAG_ADDITIONAL_STATUS_INFO_TEXT, additional_status_info_text, len)
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
def encode_dpf_result(dpf_result, len)
|
|
437
|
+
encode_uchar_tlv(OptTags::TAG_DPF_RESULT, dpf_result, len)
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
def encode_broadcast_end_time(broadcast_end_time, len)
|
|
441
|
+
encode_cstring_tlv(OptTags::TAG_BROADCAST_END_TIME, broadcast_end_time, len)
|
|
442
|
+
end
|
|
443
|
+
|
|
444
|
+
def encode_ussd_service_op(ussd_service_op, len)
|
|
445
|
+
encode_uchar_tlv(OptTags::TAG_USSD_SERVICE_OP, ussd_service_op, len)
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
# Method to encode command length for pdu
|
|
449
|
+
def encode_command_length()
|
|
450
|
+
sizeof = 4
|
|
451
|
+
shift = SMPPOffset::COMMAND_LENGTH_POS
|
|
452
|
+
len = sprintf("%c%c%c%c", @offset >> 24, @offset >> 16, @offset >> 8, @offset & 0xff)
|
|
453
|
+
|
|
454
|
+
0.upto(sizeof - 1) do |i|
|
|
455
|
+
@buffer[shift + i] = len[i]
|
|
456
|
+
end
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
private
|
|
461
|
+
# Auxiliary methods to encode
|
|
462
|
+
def encode_uchar_tlv(tag, value, len)
|
|
463
|
+
encode_unsigned16(tag)
|
|
464
|
+
encode_unsigned16(len)
|
|
465
|
+
encode_uchar(value)
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
def encode_uint16_tlv(tag, value, len)
|
|
469
|
+
encode_unsigned16(tag)
|
|
470
|
+
encode_unsigned16(len)
|
|
471
|
+
encode_unsigned16(value)
|
|
472
|
+
end
|
|
473
|
+
|
|
474
|
+
def encode_uint32_tlv(tag, value, len)
|
|
475
|
+
encode_unsigned16(tag)
|
|
476
|
+
encode_unsigned16(len)
|
|
477
|
+
encode_unsigned32(value)
|
|
478
|
+
end
|
|
479
|
+
|
|
480
|
+
def encode_cstring_tlv(tag, value, len)
|
|
481
|
+
encode_unsigned16(tag)
|
|
482
|
+
encode_unsigned16(len)
|
|
483
|
+
encode_cstring(value)
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
def encode_binary_tlv(tag, value, len)
|
|
487
|
+
encode_unsigned16(tag)
|
|
488
|
+
encode_unsigned16(len)
|
|
489
|
+
encode_binary(value)
|
|
490
|
+
end
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
end
|
|
494
|
+
end
|
|
495
|
+
end
|