Skip to main content

psdk_fruit_emapi/
models.rs

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}