1use crate::{
2 impl_default, impl_message_from_buf, impl_message_ops, impl_response_display,
3 impl_response_ops, len::PROGRAM_FIRMWARE_RESPONSE, message::MessageOps, MessageType,
4};
5
6mod index {
7 pub const BLOCK_LEN: usize = 4;
8 pub const BLOCK_LEN_END: usize = 5;
9}
10
11#[repr(C)]
15#[derive(Clone, Copy, Debug, PartialEq)]
16pub struct ProgramFirmwareResponse {
17 buf: [u8; PROGRAM_FIRMWARE_RESPONSE],
18}
19
20impl ProgramFirmwareResponse {
21 pub fn new() -> Self {
23 let mut msg = Self {
24 buf: [0u8; PROGRAM_FIRMWARE_RESPONSE],
25 };
26
27 msg.init();
28
29 msg
30 }
31
32 pub fn block_len(&self) -> u16 {
42 u16::from_le_bytes([self.buf[index::BLOCK_LEN], self.buf[index::BLOCK_LEN_END]])
43 }
44
45 pub fn set_block_len(&mut self, len: u16) {
56 self.buf[index::BLOCK_LEN..=index::BLOCK_LEN_END].copy_from_slice(&len.to_le_bytes());
57 }
58}
59
60impl_default!(ProgramFirmwareResponse);
61impl_message_from_buf!(ProgramFirmwareResponse);
62impl_message_ops!(ProgramFirmwareResponse, MessageType::ProgramFirmware);
63impl_response_ops!(ProgramFirmwareResponse);
64impl_response_display!(ProgramFirmwareResponse);