bnr_xfs/cash_unit/
counters.rs

1use crate::create_xfs_struct;
2use crate::{
3    DepositCount, DisappearedCount, DispenseCount, EmptiedCount, ForgeryCount, RejectCount,
4    RetractedCount,
5};
6
7create_xfs_struct!(
8    DepositCounters,
9    "depositCounters",
10    [
11        deposit_count: DepositCount,
12        retracted_count: RetractedCount,
13        emptied_count: EmptiedCount,
14        forgery_count: ForgeryCount,
15        disappeared_count: DisappearedCount
16    ],
17    "Represents counters for deposits."
18);
19
20impl Copy for DepositCounters {}
21
22create_xfs_struct!(
23    DispenseCounters,
24    "dispenseCounters",
25    [dispense_count: DispenseCount, reject_count: RejectCount],
26    "Represents counters for dispensed notes."
27);
28
29impl Copy for DispenseCounters {}
30
31create_xfs_struct!(
32    ExtendedCounters,
33    "extendedCounters",
34    [deposit: DepositCounters, dispense: DispenseCounters],
35    "Represents extended counters for a cash unit."
36);
37
38impl From<DepositCounters> for ExtendedCounters {
39    fn from(val: DepositCounters) -> Self {
40        Self {
41            deposit: val,
42            dispense: DispenseCounters::new(),
43        }
44    }
45}
46
47impl From<&DepositCounters> for ExtendedCounters {
48    fn from(val: &DepositCounters) -> Self {
49        (*val).into()
50    }
51}
52
53impl From<DispenseCounters> for ExtendedCounters {
54    fn from(val: DispenseCounters) -> Self {
55        Self {
56            deposit: DepositCounters::new(),
57            dispense: val,
58        }
59    }
60}
61
62impl From<&DispenseCounters> for ExtendedCounters {
63    fn from(val: &DispenseCounters) -> Self {
64        (*val).into()
65    }
66}
67
68impl Copy for ExtendedCounters {}