ssp/last_reject_code/
response.rs1use crate::{
2 impl_default, impl_message_from_buf, impl_message_ops, impl_response_ops,
3 len::LAST_REJECT_CODE_RESPONSE, std::fmt, LastRejectCode, MessageOps, MessageType, ResponseOps,
4};
5
6mod index {
7 pub const REJECT_CODE: usize = 4;
8}
9
10#[repr(C)]
14#[derive(Clone, Copy, Debug, PartialEq)]
15pub struct LastRejectCodeResponse {
16 buf: [u8; LAST_REJECT_CODE_RESPONSE],
17}
18
19impl LastRejectCodeResponse {
20 pub fn new() -> Self {
22 let mut msg = Self {
23 buf: [0u8; LAST_REJECT_CODE_RESPONSE],
24 };
25
26 msg.init();
27
28 msg
29 }
30
31 pub fn reject_code(&self) -> LastRejectCode {
33 self.buf[index::REJECT_CODE].into()
34 }
35
36 pub fn set_reject_code(&mut self, code: LastRejectCode) {
38 self.buf[index::REJECT_CODE] = code.into();
39 }
40}
41
42impl_default!(LastRejectCodeResponse);
43impl_message_from_buf!(LastRejectCodeResponse);
44impl_message_ops!(LastRejectCodeResponse, MessageType::LastRejectCode);
45impl_response_ops!(LastRejectCodeResponse);
46
47impl fmt::Display for LastRejectCodeResponse {
48 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
49 let stx = self.stx();
50 let seqid = self.sequence_id();
51 let len = self.data_len();
52 let status = self.response_status();
53 let code = self.reject_code();
54 let crc = self.checksum();
55
56 write!(f, "STX: 0x{stx:02x} | SEQID: {seqid} | LEN: 0x{len:02x} | Response status: {status} | Last reject code: {code} | CRC-16: 0x{crc:04x}")
57 }
58}