bnr_xfs/xfs/
operation_id.rs

1use std::fmt;
2
3use crate::impl_xfs_enum;
4
5const OFFSET: u32 = 6106;
6const DENOMINATE: u32 = 6107;
7const DISPENSE: u32 = 6108;
8const QUERY_CASH_UNIT: u32 = 6114;
9const RESET: u32 = 6117;
10const UPDATE_CASH_UNIT: u32 = 6118;
11const GET_DATE_TIME: u32 = 6119;
12const SET_DATE_TIME: u32 = 6120;
13const QUERY_DENOMINATIONS: u32 = 6181;
14const UPDATE_DENOMINATIONS: u32 = 6182;
15const CASH_IN_START: u32 = 6121;
16const CASH_IN: u32 = 6122;
17const CASH_IN_END: u32 = 6123;
18const CASH_IN_ROLLBACK: u32 = 6124;
19const EMPTY: u32 = 6125;
20const PRESENT: u32 = 6126;
21const REJECT: u32 = 6127;
22const RETRACT: u32 = 6128;
23const CASHUNIT_CHANGED: u32 = 6153;
24const CASHUNIT_THRESHOLD: u32 = 6155;
25
26/// Represents an XFS operation ID.
27#[repr(u32)]
28#[derive(Clone, Copy, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)]
29pub enum OperationId {
30    #[default]
31    Offset = OFFSET,
32    Denominate = DENOMINATE,
33    Dispense = DISPENSE,
34    QueryCashUnit = QUERY_CASH_UNIT,
35    Reset = RESET,
36    UpdateCashUnit = UPDATE_CASH_UNIT,
37    GetDateTime = GET_DATE_TIME,
38    SetDateTime = SET_DATE_TIME,
39    QueryDenominations = QUERY_DENOMINATIONS,
40    UpdateDenominations = UPDATE_DENOMINATIONS,
41    CashInStart = CASH_IN_START,
42    CashIn = CASH_IN,
43    CashInEnd = CASH_IN_END,
44    CashInRollback = CASH_IN_ROLLBACK,
45    Empty = EMPTY,
46    Present = PRESENT,
47    Reject = REJECT,
48    Retract = RETRACT,
49    CashUnitChanged = CASHUNIT_CHANGED,
50    CashUnitThreshold = CASHUNIT_THRESHOLD,
51}
52
53impl OperationId {
54    /// Creates a new [OperationId].
55    pub const fn new() -> Self {
56        Self::Offset
57    }
58
59    /// Creates a new [OperationId] from the provided parameter.
60    pub const fn create(val: u32) -> Self {
61        match val {
62            OFFSET => Self::Offset,
63            DENOMINATE => Self::Denominate,
64            DISPENSE => Self::Dispense,
65            QUERY_CASH_UNIT => Self::QueryCashUnit,
66            RESET => Self::Reset,
67            UPDATE_CASH_UNIT => Self::UpdateCashUnit,
68            GET_DATE_TIME => Self::GetDateTime,
69            SET_DATE_TIME => Self::SetDateTime,
70            QUERY_DENOMINATIONS => Self::QueryDenominations,
71            UPDATE_DENOMINATIONS => Self::UpdateDenominations,
72            CASH_IN_START => Self::CashInStart,
73            CASH_IN => Self::CashIn,
74            CASH_IN_END => Self::CashInEnd,
75            CASH_IN_ROLLBACK => Self::CashInRollback,
76            EMPTY => Self::Empty,
77            PRESENT => Self::Present,
78            REJECT => Self::Reject,
79            RETRACT => Self::Retract,
80            CASHUNIT_CHANGED => Self::CashUnitChanged,
81            CASHUNIT_THRESHOLD => Self::CashUnitThreshold,
82            _ => Self::Offset,
83        }
84    }
85}
86
87impl fmt::Display for OperationId {
88    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
89        write!(f, "{}", self.inner())
90    }
91}
92
93impl_xfs_enum!(OperationId, "operationId");