#[derive(Clone, Copy, PartialEq, PartialOrd, Ord, Eq, Hash, Debug, Default)]
#[non_exhaustive]
#[repr(u16)]
pub enum TelephonyDeviceUsage {
#[default]
Undefined,
Phone,
AnsweringMachine,
MessageControls,
Handset,
Headset,
TelephonyKeyPad,
ProgrammableButton,
Reserved08_1F(u16),
HookSwitch = 32,
Flash,
Feature,
Hold,
Redial,
Transfer,
Drop,
Park,
ForwardCalls,
AlternateFunction,
Line,
SpeakerPhone,
Conference,
RingEnable,
RingSelect,
PhoneMute,
CallerID,
Send,
Reserved32_4F(u16),
SpeedDial = 80,
StoreNumber,
RecallNumber,
PhoneDirectory,
Reserved54_6F(u16),
VoiceMail = 112,
ScreenCalls,
DoNotDisturb,
Message,
AnswerOn_Off,
Reserved75_8F(u16),
InsideDialTone = 144,
OutsideDialTone,
InsideRingTone,
OutsideRingTone,
PriorityRingTone,
InsideRingback,
PriorityRingback,
LineBusyTone,
ReorderTone,
CallWaitingTone,
ConfirmationTone1,
ConfirmationTone2,
TonesOff,
OutsideRingback,
Ringer,
Reserved9F_AF(u16),
PhoneKey0 = 176,
PhoneKey1,
PhoneKey2,
PhoneKey3,
PhoneKey4,
PhoneKey5,
PhoneKey6,
PhoneKey7,
PhoneKey8,
PhoneKey9,
PhoneKeyStar,
PhoneKeyPound,
PhoneKeyA,
PhoneKeyB,
PhoneKeyC,
PhoneKeyD,
PhoneCallHistoryKey,
PhoneCallerIDKey,
PhoneSettingsKey,
ReservedC3_EF(u16),
HostControl = 240,
HostAvailable,
HostCallActive,
ActivateHandsetAudio,
RingType,
Re_dialablePhoneNumber,
ReservedF6_F7(u16),
StopRingTone = 248,
PSTNRingTone,
HostRingTone,
AlertSoundError,
AlertSoundConfirm,
AlertSoundNotification,
SilentRing,
ReservedFF_107(u16),
EmailMessageWaiting = 264,
VoicemailMessageWaiting,
HostHold,
Reserved10B_10F(u16),
IncomingCallHistoryCount = 272,
OutgoingCallHistoryCount,
IncomingCallHistory,
OutgoingCallHistory,
PhoneLocale,
Reserved115_13F(u16),
PhoneTimeSecond = 320,
PhoneTimeMinute,
PhoneTimeHour,
PhoneDateDay,
PhoneDateMonth,
PhoneDateYear,
HandsetNickname,
AddressBookID,
Reserved148_149(u16),
CallDuration = 330,
DualModePhone,
Reserved14C_FFFF(u16),
}
impl<T> From<T> for TelephonyDeviceUsage
where
T: TryInto<u16>,
{
fn from(value: T) -> Self {
let value = value.try_into().unwrap_or(0);
match value {
0 => Self::Undefined,
1 => Self::Phone,
2 => Self::AnsweringMachine,
3 => Self::MessageControls,
4 => Self::Handset,
5 => Self::Headset,
6 => Self::TelephonyKeyPad,
7 => Self::ProgrammableButton,
8..32 => Self::Reserved08_1F(value),
32 => Self::HookSwitch,
33 => Self::Flash,
34 => Self::Feature,
35 => Self::Hold,
36 => Self::Redial,
37 => Self::Transfer,
38 => Self::Drop,
39 => Self::Park,
40 => Self::ForwardCalls,
41 => Self::AlternateFunction,
42 => Self::Line,
43 => Self::SpeakerPhone,
44 => Self::Conference,
45 => Self::RingEnable,
46 => Self::RingSelect,
47 => Self::PhoneMute,
48 => Self::CallerID,
49 => Self::Send,
50..80 => Self::Reserved32_4F(value),
80 => Self::SpeedDial,
81 => Self::StoreNumber,
82 => Self::RecallNumber,
83 => Self::PhoneDirectory,
84..112 => Self::Reserved54_6F(value),
112 => Self::VoiceMail,
113 => Self::ScreenCalls,
114 => Self::DoNotDisturb,
115 => Self::Message,
116 => Self::AnswerOn_Off,
117..144 => Self::Reserved75_8F(value),
144 => Self::InsideDialTone,
145 => Self::OutsideDialTone,
146 => Self::InsideRingTone,
147 => Self::OutsideRingTone,
148 => Self::PriorityRingTone,
149 => Self::InsideRingback,
150 => Self::PriorityRingback,
151 => Self::LineBusyTone,
152 => Self::ReorderTone,
153 => Self::CallWaitingTone,
154 => Self::ConfirmationTone1,
155 => Self::ConfirmationTone2,
156 => Self::TonesOff,
157 => Self::OutsideRingback,
158 => Self::Ringer,
159..176 => Self::Reserved9F_AF(value),
176 => Self::PhoneKey0,
177 => Self::PhoneKey1,
178 => Self::PhoneKey2,
179 => Self::PhoneKey3,
180 => Self::PhoneKey4,
181 => Self::PhoneKey5,
182 => Self::PhoneKey6,
183 => Self::PhoneKey7,
184 => Self::PhoneKey8,
185 => Self::PhoneKey9,
186 => Self::PhoneKeyStar,
187 => Self::PhoneKeyPound,
188 => Self::PhoneKeyA,
189 => Self::PhoneKeyB,
190 => Self::PhoneKeyC,
191 => Self::PhoneKeyD,
192 => Self::PhoneCallHistoryKey,
193 => Self::PhoneCallerIDKey,
194 => Self::PhoneSettingsKey,
195..240 => Self::ReservedC3_EF(value),
240 => Self::HostControl,
241 => Self::HostAvailable,
242 => Self::HostCallActive,
243 => Self::ActivateHandsetAudio,
244 => Self::RingType,
245 => Self::Re_dialablePhoneNumber,
246..248 => Self::ReservedF6_F7(value),
248 => Self::StopRingTone,
249 => Self::PSTNRingTone,
250 => Self::HostRingTone,
251 => Self::AlertSoundError,
252 => Self::AlertSoundConfirm,
253 => Self::AlertSoundNotification,
254 => Self::SilentRing,
255..264 => Self::ReservedFF_107(value),
264 => Self::EmailMessageWaiting,
265 => Self::VoicemailMessageWaiting,
266 => Self::HostHold,
267..272 => Self::Reserved10B_10F(value),
272 => Self::IncomingCallHistoryCount,
273 => Self::OutgoingCallHistoryCount,
274 => Self::IncomingCallHistory,
275 => Self::OutgoingCallHistory,
276 => Self::PhoneLocale,
277..320 => Self::Reserved115_13F(value),
320 => Self::PhoneTimeSecond,
321 => Self::PhoneTimeMinute,
322 => Self::PhoneTimeHour,
323 => Self::PhoneDateDay,
324 => Self::PhoneDateMonth,
325 => Self::PhoneDateYear,
326 => Self::HandsetNickname,
327 => Self::AddressBookID,
328..330 => Self::Reserved148_149(value),
330 => Self::CallDuration,
331 => Self::DualModePhone,
332..=65535 => Self::Reserved14C_FFFF(value),
}
}
}