1#[derive(Clone, Copy, Debug, PartialEq, Eq)]
5pub enum Command {
6 ReadCo2AndTemperature,
9 ReadCo2,
11 GetFirmwareVersion,
13 SetSelfCalibrate(bool),
15}
16
17impl Command {
18 pub fn op_code(&self) -> u8 {
20 match self {
21 Self::ReadCo2AndTemperature => 0x85,
22 Self::ReadCo2 => 0x86,
23 Self::GetFirmwareVersion => 0xA0,
24 Self::SetSelfCalibrate(_) => 0x79,
25 }
26 }
27
28 pub fn serialize(&self) -> [u8; 6] {
30 match self {
31 Self::ReadCo2AndTemperature => [self.op_code(), 0, 0, 0, 0, 0],
32 Self::ReadCo2 => [self.op_code(), 0, 0, 0, 0, 0],
33 Self::GetFirmwareVersion => [self.op_code(), 0, 0, 0, 0, 0],
34 Self::SetSelfCalibrate(true) => [self.op_code(), 0xa0, 0, 0, 0, 0],
35 Self::SetSelfCalibrate(false) => [self.op_code(), 0, 0, 0, 0, 0],
36 }
37 }
38}