1use bytes::BytesMut;
2
3use crate::{
4 CommandStatus,
5 decode::{
6 DecodeError, DecodeResultExt,
7 owned::{Decode, DecodeWithKey, DecodeWithLength},
8 },
9 encode::Length,
10 tlvs::TlvTag,
11 types::owned::{AnyOctetString, COctetString, OctetString},
12 values::{owned::*, *},
13};
14
15#[non_exhaustive]
17#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
18#[cfg_attr(feature = "arbitrary", derive(::arbitrary::Arbitrary))]
19#[cfg_attr(feature = "serde", derive(::serde::Serialize))]
20#[cfg_attr(feature = "serde-deserialize-unchecked", derive(::serde::Deserialize))]
21pub enum TlvValue {
22 AdditionalStatusInfoText(COctetString<1, 256>),
23 AlertOnMessageDelivery(AlertOnMessageDelivery),
24 BillingIdentification(OctetString<0, 1024>),
25 BroadcastAreaIdentifier(BroadcastAreaIdentifier),
32 BroadcastAreaSuccess(BroadcastAreaSuccess),
37 BroadcastContentTypeInfo(OctetString<0, 255>),
38 BroadcastChannelIndicator(BroadcastChannelIndicator),
39 BroadcastContentType(BroadcastContentType),
41 BroadcastEndTime(OctetString<0, 17>),
56 BroadcastErrorStatus(CommandStatus),
57 BroadcastFrequencyInterval(BroadcastFrequencyInterval),
60 BroadcastMessageClass(BroadcastMessageClass),
61 BroadcastRepNum(BroadcastRepNum),
64 BroadcastServiceGroup(OctetString<1, 255>),
65 CallbackNum(OctetString<4, 19>),
66 CallbackNumAtag(OctetString<0, 65>),
67 CallbackNumPresInd(CallbackNumPresInd),
68 CongestionState(CongestionState),
69 DeliveryFailureReason(DeliveryFailureReason),
70 DestAddrNpCountry(OctetString<1, 5>),
71 DestAddrNpInformation(OctetString<0, 10>),
72 DestAddrNpResolution(DestAddrNpResolution),
73 DestAddrSubunit(AddrSubunit),
74 DestBearerType(BearerType),
75 DestNetworkId(COctetString<7, 66>),
76 DestNetworkType(NetworkType),
77 DestNodeId(OctetString<6, 6>),
78 DestSubaddress(Subaddress),
79 DestTelematicsId(u16),
80 DestPort(u16),
81 DisplayTime(DisplayTime),
82 DpfResult(DpfResult),
83 ItsReplyType(ItsReplyType),
84 ItsSessionInfo(ItsSessionInfo),
85 LanguageIndicator(LanguageIndicator),
86 MessagePayload(MessagePayload),
87 MessageState(MessageState),
89 MoreMessagesToSend(MoreMessagesToSend),
90 MsAvailabilityStatus(MsAvailabilityStatus),
91 MsMsgWaitFacilities(MsMsgWaitFacilities),
92 MsValidity(MsValidity),
93 NetworkErrorCode(NetworkErrorCode),
94 NumberOfMessages(NumberOfMessages),
95 PayloadType(PayloadType),
96 PrivacyIndicator(PrivacyIndicator),
97 QosTimeToLive(u32),
98 ReceiptedMessageId(COctetString<1, 65>),
99 SarMsgRefNum(u16),
100 SarSegmentSeqnum(u8),
101 SarTotalSegments(u8),
102 ScInterfaceVersion(InterfaceVersion),
103 SetDpf(SetDpf),
104 SmsSignal(u16),
106 SourceAddrSubunit(AddrSubunit),
107 SourceBearerType(BearerType),
108 SourceNetworkId(COctetString<7, 66>),
109 SourceNetworkType(NetworkType),
110 SourceNodeId(OctetString<6, 6>),
111 SourcePort(u16),
112 SourceSubaddress(Subaddress),
113 SourceTelematicsId(u16),
114 UserMessageReference(UserMessageReference),
115 UserResponseCode(u8),
116 UssdServiceOp(UssdServiceOp),
117 Other {
118 tag: TlvTag,
119 value: AnyOctetString,
120 },
121}
122
123impl TlvValue {
124 pub const fn tag(&self) -> TlvTag {
125 match self {
126 TlvValue::AdditionalStatusInfoText(_) => TlvTag::AdditionalStatusInfoText,
127 TlvValue::AlertOnMessageDelivery(_) => TlvTag::AlertOnMessageDelivery,
128 TlvValue::BillingIdentification(_) => TlvTag::BillingIdentification,
129 TlvValue::BroadcastAreaIdentifier(_) => TlvTag::BroadcastAreaIdentifier,
130 TlvValue::BroadcastAreaSuccess(_) => TlvTag::BroadcastAreaSuccess,
131 TlvValue::BroadcastContentTypeInfo(_) => TlvTag::BroadcastContentTypeInfo,
132 TlvValue::BroadcastChannelIndicator(_) => TlvTag::BroadcastChannelIndicator,
133 TlvValue::BroadcastContentType(_) => TlvTag::BroadcastContentType,
134 TlvValue::BroadcastEndTime(_) => TlvTag::BroadcastEndTime,
135 TlvValue::BroadcastErrorStatus(_) => TlvTag::BroadcastErrorStatus,
136 TlvValue::BroadcastFrequencyInterval(_) => TlvTag::BroadcastFrequencyInterval,
137 TlvValue::BroadcastMessageClass(_) => TlvTag::BroadcastMessageClass,
138 TlvValue::BroadcastRepNum(_) => TlvTag::BroadcastRepNum,
139 TlvValue::BroadcastServiceGroup(_) => TlvTag::BroadcastServiceGroup,
140 TlvValue::CallbackNum(_) => TlvTag::CallbackNum,
141 TlvValue::CallbackNumAtag(_) => TlvTag::CallbackNumAtag,
142 TlvValue::CallbackNumPresInd(_) => TlvTag::CallbackNumPresInd,
143 TlvValue::CongestionState(_) => TlvTag::CongestionState,
144 TlvValue::DeliveryFailureReason(_) => TlvTag::DeliveryFailureReason,
145 TlvValue::DestAddrNpCountry(_) => TlvTag::DestAddrNpCountry,
146 TlvValue::DestAddrNpInformation(_) => TlvTag::DestAddrNpInformation,
147 TlvValue::DestAddrNpResolution(_) => TlvTag::DestAddrNpResolution,
148 TlvValue::DestAddrSubunit(_) => TlvTag::DestAddrSubunit,
149 TlvValue::DestBearerType(_) => TlvTag::DestBearerType,
150 TlvValue::DestNetworkId(_) => TlvTag::DestNetworkId,
151 TlvValue::DestNetworkType(_) => TlvTag::DestNetworkType,
152 TlvValue::DestNodeId(_) => TlvTag::DestNodeId,
153 TlvValue::DestSubaddress(_) => TlvTag::DestSubaddress,
154 TlvValue::DestTelematicsId(_) => TlvTag::DestTelematicsId,
155 TlvValue::DestPort(_) => TlvTag::DestPort,
156 TlvValue::DisplayTime(_) => TlvTag::DisplayTime,
157 TlvValue::DpfResult(_) => TlvTag::DpfResult,
158 TlvValue::ItsReplyType(_) => TlvTag::ItsReplyType,
159 TlvValue::ItsSessionInfo(_) => TlvTag::ItsSessionInfo,
160 TlvValue::LanguageIndicator(_) => TlvTag::LanguageIndicator,
161 TlvValue::MessagePayload(_) => TlvTag::MessagePayload,
162 TlvValue::MessageState(_) => TlvTag::MessageState,
163 TlvValue::MoreMessagesToSend(_) => TlvTag::MoreMessagesToSend,
164 TlvValue::MsAvailabilityStatus(_) => TlvTag::MsAvailabilityStatus,
165 TlvValue::MsMsgWaitFacilities(_) => TlvTag::MsMsgWaitFacilities,
166 TlvValue::MsValidity(_) => TlvTag::MsValidity,
167 TlvValue::NetworkErrorCode(_) => TlvTag::NetworkErrorCode,
168 TlvValue::NumberOfMessages(_) => TlvTag::NumberOfMessages,
169 TlvValue::PayloadType(_) => TlvTag::PayloadType,
170 TlvValue::PrivacyIndicator(_) => TlvTag::PrivacyIndicator,
171 TlvValue::QosTimeToLive(_) => TlvTag::QosTimeToLive,
172 TlvValue::ReceiptedMessageId(_) => TlvTag::ReceiptedMessageId,
173 TlvValue::SarMsgRefNum(_) => TlvTag::SarMsgRefNum,
174 TlvValue::SarSegmentSeqnum(_) => TlvTag::SarSegmentSeqnum,
175 TlvValue::SarTotalSegments(_) => TlvTag::SarTotalSegments,
176 TlvValue::ScInterfaceVersion(_) => TlvTag::ScInterfaceVersion,
177 TlvValue::SetDpf(_) => TlvTag::SetDpf,
178 TlvValue::SmsSignal(_) => TlvTag::SmsSignal,
179 TlvValue::SourceAddrSubunit(_) => TlvTag::SourceAddrSubunit,
180 TlvValue::SourceBearerType(_) => TlvTag::SourceBearerType,
181 TlvValue::SourceNetworkId(_) => TlvTag::SourceNetworkId,
182 TlvValue::SourceNetworkType(_) => TlvTag::SourceNetworkType,
183 TlvValue::SourceNodeId(_) => TlvTag::SourceNodeId,
184 TlvValue::SourcePort(_) => TlvTag::SourcePort,
185 TlvValue::SourceSubaddress(_) => TlvTag::SourceSubaddress,
186 TlvValue::SourceTelematicsId(_) => TlvTag::SourceTelematicsId,
187 TlvValue::UserMessageReference(_) => TlvTag::UserMessageReference,
188 TlvValue::UserResponseCode(_) => TlvTag::UserResponseCode,
189 TlvValue::UssdServiceOp(_) => TlvTag::UssdServiceOp,
190 TlvValue::Other { tag, .. } => *tag,
191 }
192 }
193}
194
195impl Length for TlvValue {
196 fn length(&self) -> usize {
197 match self {
198 TlvValue::AdditionalStatusInfoText(value) => value.length(),
199 TlvValue::AlertOnMessageDelivery(value) => value.length(),
200 TlvValue::BillingIdentification(value) => value.length(),
201 TlvValue::BroadcastAreaIdentifier(value) => value.length(),
202 TlvValue::BroadcastAreaSuccess(value) => value.length(),
203 TlvValue::BroadcastContentTypeInfo(value) => value.length(),
204 TlvValue::BroadcastChannelIndicator(value) => value.length(),
205 TlvValue::BroadcastContentType(value) => value.length(),
206 TlvValue::BroadcastEndTime(value) => value.length(),
207 TlvValue::BroadcastErrorStatus(value) => value.length(),
208 TlvValue::BroadcastFrequencyInterval(value) => value.length(),
209 TlvValue::BroadcastMessageClass(value) => value.length(),
210 TlvValue::BroadcastRepNum(value) => value.length(),
211 TlvValue::BroadcastServiceGroup(value) => value.length(),
212 TlvValue::CallbackNum(value) => value.length(),
213 TlvValue::CallbackNumAtag(value) => value.length(),
214 TlvValue::CallbackNumPresInd(value) => value.length(),
215 TlvValue::CongestionState(value) => value.length(),
216 TlvValue::DeliveryFailureReason(value) => value.length(),
217 TlvValue::DestAddrNpCountry(value) => value.length(),
218 TlvValue::DestAddrNpInformation(value) => value.length(),
219 TlvValue::DestAddrNpResolution(value) => value.length(),
220 TlvValue::DestAddrSubunit(value) => value.length(),
221 TlvValue::DestBearerType(value) => value.length(),
222 TlvValue::DestNetworkId(value) => value.length(),
223 TlvValue::DestNetworkType(value) => value.length(),
224 TlvValue::DestNodeId(value) => value.length(),
225 TlvValue::DestSubaddress(value) => value.length(),
226 TlvValue::DestTelematicsId(value) => value.length(),
227 TlvValue::DestPort(value) => value.length(),
228 TlvValue::DisplayTime(value) => value.length(),
229 TlvValue::DpfResult(value) => value.length(),
230 TlvValue::ItsReplyType(value) => value.length(),
231 TlvValue::ItsSessionInfo(value) => value.length(),
232 TlvValue::LanguageIndicator(value) => value.length(),
233 TlvValue::MessagePayload(value) => value.length(),
234 TlvValue::MessageState(value) => value.length(),
235 TlvValue::MoreMessagesToSend(value) => value.length(),
236 TlvValue::MsAvailabilityStatus(value) => value.length(),
237 TlvValue::MsMsgWaitFacilities(value) => value.length(),
238 TlvValue::MsValidity(value) => value.length(),
239 TlvValue::NetworkErrorCode(value) => value.length(),
240 TlvValue::NumberOfMessages(value) => value.length(),
241 TlvValue::PayloadType(value) => value.length(),
242 TlvValue::PrivacyIndicator(value) => value.length(),
243 TlvValue::QosTimeToLive(value) => value.length(),
244 TlvValue::ReceiptedMessageId(value) => value.length(),
245 TlvValue::SarMsgRefNum(value) => value.length(),
246 TlvValue::SarSegmentSeqnum(value) => value.length(),
247 TlvValue::SarTotalSegments(value) => value.length(),
248 TlvValue::ScInterfaceVersion(value) => value.length(),
249 TlvValue::SetDpf(value) => value.length(),
250 TlvValue::SmsSignal(value) => value.length(),
251 TlvValue::SourceAddrSubunit(value) => value.length(),
252 TlvValue::SourceBearerType(value) => value.length(),
253 TlvValue::SourceNetworkId(value) => value.length(),
254 TlvValue::SourceNetworkType(value) => value.length(),
255 TlvValue::SourceNodeId(value) => value.length(),
256 TlvValue::SourcePort(value) => value.length(),
257 TlvValue::SourceSubaddress(value) => value.length(),
258 TlvValue::SourceTelematicsId(value) => value.length(),
259 TlvValue::UserMessageReference(value) => value.length(),
260 TlvValue::UserResponseCode(value) => value.length(),
261 TlvValue::UssdServiceOp(value) => value.length(),
262 TlvValue::Other { value, .. } => value.length(),
263 }
264 }
265}
266
267impl crate::encode::Encode for TlvValue {
268 fn encode(&self, dst: &mut [u8]) -> usize {
269 match self {
270 TlvValue::AdditionalStatusInfoText(value) => value.encode(dst),
271 TlvValue::AlertOnMessageDelivery(value) => value.encode(dst),
272 TlvValue::BillingIdentification(value) => value.encode(dst),
273 TlvValue::BroadcastAreaIdentifier(value) => value.encode(dst),
274 TlvValue::BroadcastAreaSuccess(value) => value.encode(dst),
275 TlvValue::BroadcastContentTypeInfo(value) => value.encode(dst),
276 TlvValue::BroadcastChannelIndicator(value) => value.encode(dst),
277 TlvValue::BroadcastContentType(value) => value.encode(dst),
278 TlvValue::BroadcastEndTime(value) => value.encode(dst),
279 TlvValue::BroadcastErrorStatus(value) => value.encode(dst),
280 TlvValue::BroadcastFrequencyInterval(value) => value.encode(dst),
281 TlvValue::BroadcastMessageClass(value) => value.encode(dst),
282 TlvValue::BroadcastRepNum(value) => value.encode(dst),
283 TlvValue::BroadcastServiceGroup(value) => value.encode(dst),
284 TlvValue::CallbackNum(value) => value.encode(dst),
285 TlvValue::CallbackNumAtag(value) => value.encode(dst),
286 TlvValue::CallbackNumPresInd(value) => value.encode(dst),
287 TlvValue::CongestionState(value) => value.encode(dst),
288 TlvValue::DeliveryFailureReason(value) => value.encode(dst),
289 TlvValue::DestAddrNpCountry(value) => value.encode(dst),
290 TlvValue::DestAddrNpInformation(value) => value.encode(dst),
291 TlvValue::DestAddrNpResolution(value) => value.encode(dst),
292 TlvValue::DestAddrSubunit(value) => value.encode(dst),
293 TlvValue::DestBearerType(value) => value.encode(dst),
294 TlvValue::DestNetworkId(value) => value.encode(dst),
295 TlvValue::DestNetworkType(value) => value.encode(dst),
296 TlvValue::DestNodeId(value) => value.encode(dst),
297 TlvValue::DestSubaddress(value) => value.encode(dst),
298 TlvValue::DestTelematicsId(value) => value.encode(dst),
299 TlvValue::DestPort(value) => value.encode(dst),
300 TlvValue::DisplayTime(value) => value.encode(dst),
301 TlvValue::DpfResult(value) => value.encode(dst),
302 TlvValue::ItsReplyType(value) => value.encode(dst),
303 TlvValue::ItsSessionInfo(value) => value.encode(dst),
304 TlvValue::LanguageIndicator(value) => value.encode(dst),
305 TlvValue::MessagePayload(value) => value.encode(dst),
306 TlvValue::MessageState(value) => value.encode(dst),
307 TlvValue::MoreMessagesToSend(value) => value.encode(dst),
308 TlvValue::MsAvailabilityStatus(value) => value.encode(dst),
309 TlvValue::MsMsgWaitFacilities(value) => value.encode(dst),
310 TlvValue::MsValidity(value) => value.encode(dst),
311 TlvValue::NetworkErrorCode(value) => value.encode(dst),
312 TlvValue::NumberOfMessages(value) => value.encode(dst),
313 TlvValue::PayloadType(value) => value.encode(dst),
314 TlvValue::PrivacyIndicator(value) => value.encode(dst),
315 TlvValue::QosTimeToLive(value) => value.encode(dst),
316 TlvValue::ReceiptedMessageId(value) => value.encode(dst),
317 TlvValue::SarMsgRefNum(value) => value.encode(dst),
318 TlvValue::SarSegmentSeqnum(value) => value.encode(dst),
319 TlvValue::SarTotalSegments(value) => value.encode(dst),
320 TlvValue::ScInterfaceVersion(value) => value.encode(dst),
321 TlvValue::SetDpf(value) => value.encode(dst),
322 TlvValue::SmsSignal(value) => value.encode(dst),
323 TlvValue::SourceAddrSubunit(value) => value.encode(dst),
324 TlvValue::SourceBearerType(value) => value.encode(dst),
325 TlvValue::SourceNetworkId(value) => value.encode(dst),
326 TlvValue::SourceNetworkType(value) => value.encode(dst),
327 TlvValue::SourceNodeId(value) => value.encode(dst),
328 TlvValue::SourcePort(value) => value.encode(dst),
329 TlvValue::SourceSubaddress(value) => value.encode(dst),
330 TlvValue::SourceTelematicsId(value) => value.encode(dst),
331 TlvValue::UserMessageReference(value) => value.encode(dst),
332 TlvValue::UserResponseCode(value) => value.encode(dst),
333 TlvValue::UssdServiceOp(value) => value.encode(dst),
334 TlvValue::Other { value, .. } => value.encode(dst),
335 }
336 }
337}
338
339impl crate::encode::owned::Encode for TlvValue {
340 fn encode(&self, dst: &mut bytes::BytesMut) {
341 match self {
342 TlvValue::AdditionalStatusInfoText(value) => value.encode(dst),
343 TlvValue::AlertOnMessageDelivery(value) => value.encode(dst),
344 TlvValue::BillingIdentification(value) => value.encode(dst),
345 TlvValue::BroadcastAreaIdentifier(value) => value.encode(dst),
346 TlvValue::BroadcastAreaSuccess(value) => value.encode(dst),
347 TlvValue::BroadcastContentTypeInfo(value) => value.encode(dst),
348 TlvValue::BroadcastChannelIndicator(value) => value.encode(dst),
349 TlvValue::BroadcastContentType(value) => value.encode(dst),
350 TlvValue::BroadcastEndTime(value) => value.encode(dst),
351 TlvValue::BroadcastErrorStatus(value) => value.encode(dst),
352 TlvValue::BroadcastFrequencyInterval(value) => value.encode(dst),
353 TlvValue::BroadcastMessageClass(value) => value.encode(dst),
354 TlvValue::BroadcastRepNum(value) => value.encode(dst),
355 TlvValue::BroadcastServiceGroup(value) => value.encode(dst),
356 TlvValue::CallbackNum(value) => value.encode(dst),
357 TlvValue::CallbackNumAtag(value) => value.encode(dst),
358 TlvValue::CallbackNumPresInd(value) => value.encode(dst),
359 TlvValue::CongestionState(value) => value.encode(dst),
360 TlvValue::DeliveryFailureReason(value) => value.encode(dst),
361 TlvValue::DestAddrNpCountry(value) => value.encode(dst),
362 TlvValue::DestAddrNpInformation(value) => value.encode(dst),
363 TlvValue::DestAddrNpResolution(value) => value.encode(dst),
364 TlvValue::DestAddrSubunit(value) => value.encode(dst),
365 TlvValue::DestBearerType(value) => value.encode(dst),
366 TlvValue::DestNetworkId(value) => value.encode(dst),
367 TlvValue::DestNetworkType(value) => value.encode(dst),
368 TlvValue::DestNodeId(value) => value.encode(dst),
369 TlvValue::DestSubaddress(value) => value.encode(dst),
370 TlvValue::DestTelematicsId(value) => value.encode(dst),
371 TlvValue::DestPort(value) => value.encode(dst),
372 TlvValue::DisplayTime(value) => value.encode(dst),
373 TlvValue::DpfResult(value) => value.encode(dst),
374 TlvValue::ItsReplyType(value) => value.encode(dst),
375 TlvValue::ItsSessionInfo(value) => value.encode(dst),
376 TlvValue::LanguageIndicator(value) => value.encode(dst),
377 TlvValue::MessagePayload(value) => value.encode(dst),
378 TlvValue::MessageState(value) => value.encode(dst),
379 TlvValue::MoreMessagesToSend(value) => value.encode(dst),
380 TlvValue::MsAvailabilityStatus(value) => value.encode(dst),
381 TlvValue::MsMsgWaitFacilities(value) => value.encode(dst),
382 TlvValue::MsValidity(value) => value.encode(dst),
383 TlvValue::NetworkErrorCode(value) => value.encode(dst),
384 TlvValue::NumberOfMessages(value) => value.encode(dst),
385 TlvValue::PayloadType(value) => value.encode(dst),
386 TlvValue::PrivacyIndicator(value) => value.encode(dst),
387 TlvValue::QosTimeToLive(value) => value.encode(dst),
388 TlvValue::ReceiptedMessageId(value) => value.encode(dst),
389 TlvValue::SarMsgRefNum(value) => value.encode(dst),
390 TlvValue::SarSegmentSeqnum(value) => value.encode(dst),
391 TlvValue::SarTotalSegments(value) => value.encode(dst),
392 TlvValue::ScInterfaceVersion(value) => value.encode(dst),
393 TlvValue::SetDpf(value) => value.encode(dst),
394 TlvValue::SmsSignal(value) => value.encode(dst),
395 TlvValue::SourceAddrSubunit(value) => value.encode(dst),
396 TlvValue::SourceBearerType(value) => value.encode(dst),
397 TlvValue::SourceNetworkId(value) => value.encode(dst),
398 TlvValue::SourceNetworkType(value) => value.encode(dst),
399 TlvValue::SourceNodeId(value) => value.encode(dst),
400 TlvValue::SourcePort(value) => value.encode(dst),
401 TlvValue::SourceSubaddress(value) => value.encode(dst),
402 TlvValue::SourceTelematicsId(value) => value.encode(dst),
403 TlvValue::UserMessageReference(value) => value.encode(dst),
404 TlvValue::UserResponseCode(value) => value.encode(dst),
405 TlvValue::UssdServiceOp(value) => value.encode(dst),
406 TlvValue::Other { value, .. } => value.encode(dst),
407 }
408 }
409}
410
411impl DecodeWithKey for TlvValue {
412 type Key = TlvTag;
413
414 fn decode(
415 key: Self::Key,
416 src: &mut BytesMut,
417 length: usize,
418 ) -> Result<(Self, usize), DecodeError> {
419 let (value, size) = match key {
420 TlvTag::AdditionalStatusInfoText => {
421 Decode::decode(src).map_decoded(Self::AdditionalStatusInfoText)?
422 }
423 TlvTag::AlertOnMessageDelivery => {
424 Decode::decode(src).map_decoded(Self::AlertOnMessageDelivery)?
425 }
426 TlvTag::BillingIdentification => {
427 DecodeWithLength::decode(src, length).map_decoded(Self::BillingIdentification)?
428 }
429 TlvTag::BroadcastAreaIdentifier => {
430 DecodeWithLength::decode(src, length).map_decoded(Self::BroadcastAreaIdentifier)?
431 }
432 TlvTag::BroadcastAreaSuccess => {
433 Decode::decode(src).map_decoded(Self::BroadcastAreaSuccess)?
434 }
435 TlvTag::BroadcastContentTypeInfo => {
436 DecodeWithLength::decode(src, length).map_decoded(Self::BroadcastContentTypeInfo)?
437 }
438 TlvTag::BroadcastChannelIndicator => {
439 Decode::decode(src).map_decoded(Self::BroadcastChannelIndicator)?
440 }
441 TlvTag::BroadcastContentType => {
442 Decode::decode(src).map_decoded(Self::BroadcastContentType)?
443 }
444 TlvTag::BroadcastEndTime => {
445 DecodeWithLength::decode(src, length).map_decoded(Self::BroadcastEndTime)?
446 }
447 TlvTag::BroadcastErrorStatus => {
448 Decode::decode(src).map_decoded(Self::BroadcastErrorStatus)?
449 }
450 TlvTag::BroadcastFrequencyInterval => {
451 Decode::decode(src).map_decoded(Self::BroadcastFrequencyInterval)?
452 }
453 TlvTag::BroadcastMessageClass => {
454 Decode::decode(src).map_decoded(Self::BroadcastMessageClass)?
455 }
456 TlvTag::BroadcastRepNum => Decode::decode(src).map_decoded(Self::BroadcastRepNum)?,
457 TlvTag::BroadcastServiceGroup => {
458 DecodeWithLength::decode(src, length).map_decoded(Self::BroadcastServiceGroup)?
459 }
460 TlvTag::CallbackNum => {
461 DecodeWithLength::decode(src, length).map_decoded(Self::CallbackNum)?
462 }
463 TlvTag::CallbackNumAtag => {
464 DecodeWithLength::decode(src, length).map_decoded(Self::CallbackNumAtag)?
465 }
466 TlvTag::CallbackNumPresInd => {
467 Decode::decode(src).map_decoded(Self::CallbackNumPresInd)?
468 }
469 TlvTag::CongestionState => Decode::decode(src).map_decoded(Self::CongestionState)?,
470 TlvTag::DeliveryFailureReason => {
471 Decode::decode(src).map_decoded(Self::DeliveryFailureReason)?
472 }
473 TlvTag::DestAddrNpCountry => {
474 DecodeWithLength::decode(src, length).map_decoded(Self::DestAddrNpCountry)?
475 }
476 TlvTag::DestAddrNpInformation => {
477 DecodeWithLength::decode(src, length).map_decoded(Self::DestAddrNpInformation)?
478 }
479 TlvTag::DestAddrNpResolution => {
480 Decode::decode(src).map_decoded(Self::DestAddrNpResolution)?
481 }
482 TlvTag::DestAddrSubunit => Decode::decode(src).map_decoded(Self::DestAddrSubunit)?,
483 TlvTag::DestBearerType => Decode::decode(src).map_decoded(Self::DestBearerType)?,
484 TlvTag::DestNetworkId => Decode::decode(src).map_decoded(Self::DestNetworkId)?,
485 TlvTag::DestNetworkType => Decode::decode(src).map_decoded(Self::DestNetworkType)?,
486 TlvTag::DestNodeId => {
487 DecodeWithLength::decode(src, length).map_decoded(Self::DestNodeId)?
488 }
489 TlvTag::DestSubaddress => {
490 DecodeWithLength::decode(src, length).map_decoded(Self::DestSubaddress)?
491 }
492 TlvTag::DestTelematicsId => Decode::decode(src).map_decoded(Self::DestTelematicsId)?,
493 TlvTag::DestPort => Decode::decode(src).map_decoded(Self::DestPort)?,
494 TlvTag::DisplayTime => Decode::decode(src).map_decoded(Self::DisplayTime)?,
495 TlvTag::DpfResult => Decode::decode(src).map_decoded(Self::DpfResult)?,
496 TlvTag::ItsReplyType => Decode::decode(src).map_decoded(Self::ItsReplyType)?,
497 TlvTag::ItsSessionInfo => Decode::decode(src).map_decoded(Self::ItsSessionInfo)?,
498 TlvTag::LanguageIndicator => {
499 Decode::decode(src).map_decoded(Self::LanguageIndicator)?
500 }
501 TlvTag::MessagePayload => {
502 DecodeWithLength::decode(src, length).map_decoded(Self::MessagePayload)?
503 }
504 TlvTag::MessageState => Decode::decode(src).map_decoded(Self::MessageState)?,
505 TlvTag::MoreMessagesToSend => {
506 Decode::decode(src).map_decoded(Self::MoreMessagesToSend)?
507 }
508 TlvTag::MsAvailabilityStatus => {
509 Decode::decode(src).map_decoded(Self::MsAvailabilityStatus)?
510 }
511 TlvTag::MsMsgWaitFacilities => {
512 Decode::decode(src).map_decoded(Self::MsMsgWaitFacilities)?
513 }
514 TlvTag::MsValidity => {
515 DecodeWithLength::decode(src, length).map_decoded(Self::MsValidity)?
516 }
517 TlvTag::NetworkErrorCode => Decode::decode(src).map_decoded(Self::NetworkErrorCode)?,
518 TlvTag::NumberOfMessages => Decode::decode(src).map_decoded(Self::NumberOfMessages)?,
519 TlvTag::PayloadType => Decode::decode(src).map_decoded(Self::PayloadType)?,
520 TlvTag::PrivacyIndicator => Decode::decode(src).map_decoded(Self::PrivacyIndicator)?,
521 TlvTag::QosTimeToLive => Decode::decode(src).map_decoded(Self::QosTimeToLive)?,
522 TlvTag::ReceiptedMessageId => {
523 Decode::decode(src).map_decoded(Self::ReceiptedMessageId)?
524 }
525 TlvTag::SarMsgRefNum => Decode::decode(src).map_decoded(Self::SarMsgRefNum)?,
526 TlvTag::SarSegmentSeqnum => Decode::decode(src).map_decoded(Self::SarSegmentSeqnum)?,
527 TlvTag::SarTotalSegments => Decode::decode(src).map_decoded(Self::SarTotalSegments)?,
528 TlvTag::ScInterfaceVersion => {
529 Decode::decode(src).map_decoded(Self::ScInterfaceVersion)?
530 }
531 TlvTag::SetDpf => Decode::decode(src).map_decoded(Self::SetDpf)?,
532 TlvTag::SmsSignal => Decode::decode(src).map_decoded(Self::SmsSignal)?,
533 TlvTag::SourceAddrSubunit => {
534 Decode::decode(src).map_decoded(Self::SourceAddrSubunit)?
535 }
536 TlvTag::SourceBearerType => Decode::decode(src).map_decoded(Self::SourceBearerType)?,
537 TlvTag::SourceNetworkId => Decode::decode(src).map_decoded(Self::SourceNetworkId)?,
538 TlvTag::SourceNetworkType => {
539 Decode::decode(src).map_decoded(Self::SourceNetworkType)?
540 }
541 TlvTag::SourceNodeId => {
542 DecodeWithLength::decode(src, length).map_decoded(Self::SourceNodeId)?
543 }
544 TlvTag::SourcePort => Decode::decode(src).map_decoded(Self::SourcePort)?,
545 TlvTag::SourceSubaddress => {
546 DecodeWithLength::decode(src, length).map_decoded(Self::SourceSubaddress)?
547 }
548 TlvTag::SourceTelematicsId => {
549 Decode::decode(src).map_decoded(Self::SourceTelematicsId)?
550 }
551 TlvTag::UserMessageReference => {
552 Decode::decode(src).map_decoded(Self::UserMessageReference)?
553 }
554 TlvTag::UserResponseCode => Decode::decode(src).map_decoded(Self::UserResponseCode)?,
555 TlvTag::UssdServiceOp => Decode::decode(src).map_decoded(Self::UssdServiceOp)?,
556 TlvTag::Other(other) => {
557 DecodeWithLength::decode(src, length).map_decoded(|value| TlvValue::Other {
558 tag: TlvTag::Other(other),
559 value,
560 })?
561 }
562 };
563
564 Ok((value, size))
565 }
566}