1use crate::command::EmapiCommand;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum EmapiRfidAuthFailurePolicy {
5 AllowPrint,
6 ForbidPrint,
7}
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq)]
10pub enum EmapiWifiConnectionState {
11 NotConnected,
12 HotspotConnected,
13 IotConnected,
14 Unknown,
15}
16
17#[derive(Debug, Clone, PartialEq, Eq, Default)]
18pub struct EmapiRfidCardInfo {
19 pub paper_model: Option<String>,
20 pub paper_length: Option<String>,
21 pub paper_width: Option<String>,
22 pub paper_color: Option<String>,
23 pub paper_material_number: Option<String>,
24}
25
26#[derive(Debug, Clone, PartialEq, Eq, Default)]
27pub struct EmapiWifiHotspotInfo {
28 pub ssid: Option<String>,
29 pub rssi: Option<i16>,
30 pub ip: Option<String>,
31 pub port: Option<String>,
32}
33
34#[derive(Debug, Clone, PartialEq, Eq, Default)]
35pub struct EmapiPrinterParams {
36 pub print_size: Option<u32>,
37 pub resolution: Option<u32>,
38 pub dots_per_byte: Option<u32>,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq, Default)]
42pub struct EmapiPrintStatus {
43 pub paper_status: Option<u8>,
44 pub cover_status: Option<u8>,
45 pub low_battery: Option<u8>,
46 pub overheat: Option<u8>,
47 pub battery_percent: Option<u8>,
48 pub battery_voltage: Option<u16>,
49 pub tph_temperature: Option<i8>,
50}
51
52#[derive(Debug, Clone, PartialEq, Eq)]
53pub enum EmapiReport {
54 PrintResult {
55 command: EmapiCommand,
56 result: u8,
57 },
58 PrinterStatus {
59 command: EmapiCommand,
60 paper_status: Option<u8>,
61 cover_status: Option<u8>,
62 battery_state: Option<u8>,
63 overheat: Option<u8>,
64 nfc_paper_recognition: Option<u8>,
65 },
66 FlowControl {
67 command: EmapiCommand,
68 state: u8,
69 },
70 UpgradeStatus {
71 command: EmapiCommand,
72 status: u8,
73 },
74 BluetoothConnection {
75 command: EmapiCommand,
76 state: u8,
77 },
78 WifiConfigStatus {
79 command: EmapiCommand,
80 ssid: Option<String>,
81 state: Option<u8>,
82 },
83 Unknown {
84 command: EmapiCommand,
85 },
86}
87
88impl EmapiReport {
89 pub fn command(&self) -> &EmapiCommand {
90 match self {
91 Self::PrintResult { command, .. }
92 | Self::PrinterStatus { command, .. }
93 | Self::FlowControl { command, .. }
94 | Self::UpgradeStatus { command, .. }
95 | Self::BluetoothConnection { command, .. }
96 | Self::WifiConfigStatus { command, .. }
97 | Self::Unknown { command } => command,
98 }
99 }
100
101 pub fn is_flow_busy(&self) -> bool {
102 matches!(self, Self::FlowControl { state: 1, .. })
103 }
104}