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.
Files changed (154) hide show
  1. data/MIT-LICENSE +21 -0
  2. data/README +30 -0
  3. data/anthill_smpp_ruby.gemspec +18 -0
  4. data/changelog +43 -0
  5. data/data/dumps/random_command.dump +1 -0
  6. data/data/dumps/smpp_alert_notification.dump +1 -0
  7. data/data/dumps/smpp_bind_receiver.dump +1 -0
  8. data/data/dumps/smpp_bind_receiver_resp.dump +1 -0
  9. data/data/dumps/smpp_bind_transceiver.dump +1 -0
  10. data/data/dumps/smpp_bind_transceiver_1.dump +2 -0
  11. data/data/dumps/smpp_bind_transceiver_resp.dump +1 -0
  12. data/data/dumps/smpp_bind_transmitter.dump +1 -0
  13. data/data/dumps/smpp_bind_transmitter_resp.dump +1 -0
  14. data/data/dumps/smpp_broadcast_sm.dump +1 -0
  15. data/data/dumps/smpp_broadcast_sm_resp.dump +1 -0
  16. data/data/dumps/smpp_cancel_broadcast_sm.dump +1 -0
  17. data/data/dumps/smpp_cancel_broadcast_sm_resp.dump +1 -0
  18. data/data/dumps/smpp_cancel_sm.dump +1 -0
  19. data/data/dumps/smpp_cancel_sm_resp.dump +1 -0
  20. data/data/dumps/smpp_data_sm.dump +1 -0
  21. data/data/dumps/smpp_data_sm_resp.dump +1 -0
  22. data/data/dumps/smpp_deliver_sm.dump +1 -0
  23. data/data/dumps/smpp_deliver_sm_resp.dump +1 -0
  24. data/data/dumps/smpp_enquire_link.dump +1 -0
  25. data/data/dumps/smpp_enquire_link_resp.dump +1 -0
  26. data/data/dumps/smpp_generic_nack.dump +1 -0
  27. data/data/dumps/smpp_outbind.dump +1 -0
  28. data/data/dumps/smpp_query_broadcast_sm.dump +1 -0
  29. data/data/dumps/smpp_query_broadcast_sm_resp.dump +1 -0
  30. data/data/dumps/smpp_query_broadcast_sm_resp_1.dump +1 -0
  31. data/data/dumps/smpp_query_sm.dump +1 -0
  32. data/data/dumps/smpp_query_sm_resp.dump +1 -0
  33. data/data/dumps/smpp_replace_sm.dump +1 -0
  34. data/data/dumps/smpp_replace_sm_resp.dump +1 -0
  35. data/data/dumps/smpp_submit_multi.dump +1 -0
  36. data/data/dumps/smpp_submit_multi_resp.dump +1 -0
  37. data/data/dumps/smpp_submit_sm.dump +1 -0
  38. data/data/dumps/smpp_submit_sm_resp.dump +1 -0
  39. data/data/dumps/smpp_unbind.dump +1 -0
  40. data/data/dumps/smpp_unbind_resp.dump +1 -0
  41. data/data/pdus/random_command.xml +35 -0
  42. data/data/pdus/smpp_alert_notification.xml +14 -0
  43. data/data/pdus/smpp_alert_notification_no_optional.xml +13 -0
  44. data/data/pdus/smpp_bind_receiver.xml +17 -0
  45. data/data/pdus/smpp_bind_receiver_resp.xml +12 -0
  46. data/data/pdus/smpp_bind_receiver_resp_no_optional.xml +11 -0
  47. data/data/pdus/smpp_bind_transceiver.xml +17 -0
  48. data/data/pdus/smpp_bind_transceiver_resp.xml +12 -0
  49. data/data/pdus/smpp_bind_transceiver_resp_no_optional.xml +11 -0
  50. data/data/pdus/smpp_bind_transmitter.xml +17 -0
  51. data/data/pdus/smpp_bind_transmitter_resp.xml +12 -0
  52. data/data/pdus/smpp_bind_transmitter_resp_no_optional.xml +11 -0
  53. data/data/pdus/smpp_broadcast_sm.xml +47 -0
  54. data/data/pdus/smpp_broadcast_sm_no_optional.xml +26 -0
  55. data/data/pdus/smpp_broadcast_sm_resp.xml +14 -0
  56. data/data/pdus/smpp_broadcast_sm_resp_no_optional.xml +8 -0
  57. data/data/pdus/smpp_cancel_broadcast_sm.xml +17 -0
  58. data/data/pdus/smpp_cancel_broadcast_sm_no_optional.xml +15 -0
  59. data/data/pdus/smpp_cancel_broadcast_sm_resp.xml +7 -0
  60. data/data/pdus/smpp_cancel_sm.xml +18 -0
  61. data/data/pdus/smpp_cancel_sm_resp.xml +10 -0
  62. data/data/pdus/smpp_commands.xsd +914 -0
  63. data/data/pdus/smpp_data_sm.xml +58 -0
  64. data/data/pdus/smpp_data_sm_no_optional.xml +17 -0
  65. data/data/pdus/smpp_data_sm_resp.xml +15 -0
  66. data/data/pdus/smpp_data_sm_resp_no_optional.xml +8 -0
  67. data/data/pdus/smpp_deliver_sm.xml +46 -0
  68. data/data/pdus/smpp_deliver_sm_no_optional.xml +25 -0
  69. data/data/pdus/smpp_deliver_sm_resp.xml +14 -0
  70. data/data/pdus/smpp_deliver_sm_resp_no_optional.xml +8 -0
  71. data/data/pdus/smpp_enquire_link.xml +10 -0
  72. data/data/pdus/smpp_enquire_link_resp.xml +10 -0
  73. data/data/pdus/smpp_generic_nack.xml +10 -0
  74. data/data/pdus/smpp_outbind.xml +12 -0
  75. data/data/pdus/smpp_query_broadcast_sm.xml +12 -0
  76. data/data/pdus/smpp_query_broadcast_sm_no_optional.xml +11 -0
  77. data/data/pdus/smpp_query_broadcast_sm_resp.xml +17 -0
  78. data/data/pdus/smpp_query_broadcast_sm_resp_no_optional.xml +15 -0
  79. data/data/pdus/smpp_query_sm.xml +11 -0
  80. data/data/pdus/smpp_query_sm_resp.xml +11 -0
  81. data/data/pdus/smpp_replace_sm.xml +18 -0
  82. data/data/pdus/smpp_replace_sm_no_optional.xml +17 -0
  83. data/data/pdus/smpp_replace_sm_resp.xml +7 -0
  84. data/data/pdus/smpp_submit_multi.xml +73 -0
  85. data/data/pdus/smpp_submit_multi_no_optional.xml +51 -0
  86. data/data/pdus/smpp_submit_multi_resp.xml +35 -0
  87. data/data/pdus/smpp_submit_sm.xml +57 -0
  88. data/data/pdus/smpp_submit_sm_no_optional.xml +28 -0
  89. data/data/pdus/smpp_submit_sm_resp.xml +8 -0
  90. data/data/pdus/smpp_unbind.xml +10 -0
  91. data/data/pdus/smpp_unbind_resp.xml +10 -0
  92. data/examples/dump_viewer.rb +298 -0
  93. data/examples/pdu_composer.rb +1331 -0
  94. data/knownbugs +24 -0
  95. data/lib/anthill_smpp_ruby.rb +83 -0
  96. data/lib/i_smpp_outputter.rb +425 -0
  97. data/lib/pdu/smpp_alert_notification.rb +132 -0
  98. data/lib/pdu/smpp_bind.rb +102 -0
  99. data/lib/pdu/smpp_bind_receiver.rb +29 -0
  100. data/lib/pdu/smpp_bind_receiver_resp.rb +30 -0
  101. data/lib/pdu/smpp_bind_resp.rb +100 -0
  102. data/lib/pdu/smpp_bind_transceiver.rb +29 -0
  103. data/lib/pdu/smpp_bind_transceiver_resp.rb +31 -0
  104. data/lib/pdu/smpp_bind_transmitter.rb +29 -0
  105. data/lib/pdu/smpp_bind_transmitter_resp.rb +30 -0
  106. data/lib/pdu/smpp_broadcast_sm.rb +566 -0
  107. data/lib/pdu/smpp_broadcast_sm_resp.rb +130 -0
  108. data/lib/pdu/smpp_cancel_broadcast_sm.rb +143 -0
  109. data/lib/pdu/smpp_cancel_broadcast_sm_resp.rb +60 -0
  110. data/lib/pdu/smpp_cancel_sm.rb +110 -0
  111. data/lib/pdu/smpp_cancel_sm_resp.rb +60 -0
  112. data/lib/pdu/smpp_data_sm.rb +679 -0
  113. data/lib/pdu/smpp_data_sm_resp.rb +148 -0
  114. data/lib/pdu/smpp_deliver_sm.rb +458 -0
  115. data/lib/pdu/smpp_deliver_sm_resp.rb +137 -0
  116. data/lib/pdu/smpp_enquire_link.rb +59 -0
  117. data/lib/pdu/smpp_enquire_link_resp.rb +61 -0
  118. data/lib/pdu/smpp_generic_nack.rb +61 -0
  119. data/lib/pdu/smpp_outbind.rb +71 -0
  120. data/lib/pdu/smpp_pdu.rb +90 -0
  121. data/lib/pdu/smpp_query_broadcast_sm.rb +120 -0
  122. data/lib/pdu/smpp_query_broadcast_sm_resp.rb +192 -0
  123. data/lib/pdu/smpp_query_sm.rb +92 -0
  124. data/lib/pdu/smpp_query_sm_resp.rb +92 -0
  125. data/lib/pdu/smpp_replace_sm.rb +172 -0
  126. data/lib/pdu/smpp_replace_sm_resp.rb +61 -0
  127. data/lib/pdu/smpp_resp.rb +40 -0
  128. data/lib/pdu/smpp_submit_multi.rb +517 -0
  129. data/lib/pdu/smpp_submit_multi_resp.rb +90 -0
  130. data/lib/pdu/smpp_submit_sm.rb +591 -0
  131. data/lib/pdu/smpp_submit_sm_resp.rb +72 -0
  132. data/lib/pdu/smpp_unbind.rb +60 -0
  133. data/lib/pdu/smpp_unbind_resp.rb +61 -0
  134. data/lib/smpp_constants.rb +917 -0
  135. data/lib/smpp_csv_outputter.rb +1601 -0
  136. data/lib/smpp_datatypes.rb +89 -0
  137. data/lib/smpp_decoder.rb +627 -0
  138. data/lib/smpp_encoder.rb +495 -0
  139. data/lib/smpp_hex_outputter.rb +36 -0
  140. data/lib/smpp_outputter_base.rb +315 -0
  141. data/lib/smpp_structures.rb +98 -0
  142. data/lib/smpp_txt_outputter.rb +1895 -0
  143. data/lib/smpp_validator.rb +373 -0
  144. data/lib/smpp_xml_outputter.rb +34 -0
  145. data/roadmap +18 -0
  146. data/setup.rb +1585 -0
  147. data/test/anthill_smpp_test.rb +29 -0
  148. data/test/smpp_codec_test.rb +30 -0
  149. data/test/smpp_datatypes_test.rb +69 -0
  150. data/test/smpp_outputter_test.rb +1261 -0
  151. data/test/smpp_parsing_test.rb +1758 -0
  152. data/test/smpp_rawdump_test.rb +2095 -0
  153. data/test/smpp_validator_test.rb +441 -0
  154. metadata +206 -0
@@ -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