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