use crate::impl_enum_discriminant;
#[derive(PartialEq, Debug, Copy, Clone)]
pub(crate) enum PacketId {
RequestControllerCount = 0,
RequestControllerData = 1,
RequestProtocolVersion = 40,
SetClientName = 50,
DeviceListUpdated = 100,
RequestDeviceRescan = 140,
RequestProfileList = 150,
RequestSaveProfile = 151,
RequestLoadProfile = 152,
RequestDeleteProfile = 153,
RequestPluginList = 200,
PluginSpecific = 201,
RGBControllerResizeZone = 1000,
RgbControllerClearSegments = 1001,
RGBControllerAddSegment = 1002,
RGBControllerUpdateLeds = 1050,
RGBControllerUpdateZoneLeds = 1051,
RGBControllerUpdateSingleLed = 1052,
RGBControllerSetCustomMode = 1100,
RGBControllerUpdateMode = 1101,
RGBControllerSaveMode = 1102,
}
impl_enum_discriminant!(
PacketId,
RequestControllerCount: 0,
RequestControllerData: 1,
RequestProtocolVersion: 40,
SetClientName: 50,
DeviceListUpdated: 100,
RequestDeviceRescan: 140,
RequestProfileList: 150,
RequestSaveProfile: 151,
RequestLoadProfile: 152,
RequestDeleteProfile: 153,
RequestPluginList: 200,
PluginSpecific: 201,
RGBControllerResizeZone: 1000,
RgbControllerClearSegments: 1001,
RGBControllerAddSegment: 1002,
RGBControllerUpdateLeds: 1050,
RGBControllerUpdateZoneLeds: 1051,
RGBControllerUpdateSingleLed: 1052,
RGBControllerSetCustomMode: 1100,
RGBControllerUpdateMode: 1101,
RGBControllerSaveMode: 1102
);
#[cfg(test)]
mod tests {
use std::error::Error;
use crate::{PacketId, WriteMessage};
#[tokio::test]
async fn test_read_001() -> Result<(), Box<dyn Error>> {
let mut buf = WriteMessage::new(crate::DEFAULT_PROTOCOL);
let mut msg = buf.push_value(&152_u32)?.to_received_msg();
assert_eq!(msg.read_value::<PacketId>()?, PacketId::RequestLoadProfile);
Ok(())
}
#[tokio::test]
async fn test_write_001() -> Result<(), Box<dyn Error>> {
let mut buf = WriteMessage::new(crate::DEFAULT_PROTOCOL);
let mut msg = buf
.push_value(&PacketId::RequestLoadProfile)?
.to_received_msg();
assert_eq!(msg.read_value::<u32>()?, 152);
Ok(())
}
}