bnr_xfs/cash_unit/
counters.rs1use 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 {}