Buttplug sex toy control library
at dev 1.4 kB view raw
1// Buttplug Rust Source Code File - See https://buttplug.io for more info. 2// 3// Copyright 2016-2024 Nonpolynomial Labs LLC. All rights reserved. 4// 5// Licensed under the BSD 3-Clause license. See LICENSE file in the project root 6// for full license information. 7 8use buttplug_core::{ 9 errors::ButtplugMessageError, 10 message::{ButtplugMessage, ButtplugMessageFinalizer, ButtplugMessageValidator}, 11}; 12use getset::{CopyGetters, Getters}; 13use serde::{Deserialize, Serialize}; 14 15use super::spec_enums::ButtplugDeviceMessageNameV0; 16 17#[derive( 18 Default, 19 ButtplugMessage, 20 Clone, 21 Debug, 22 PartialEq, 23 Eq, 24 Getters, 25 CopyGetters, 26 Serialize, 27 Deserialize, 28)] 29pub struct DeviceAddedV0 { 30 #[serde(rename = "Id")] 31 pub(in crate::message) id: u32, 32 #[serde(rename = "DeviceIndex")] 33 #[getset(get_copy = "pub")] 34 pub(in crate::message) device_index: u32, 35 #[serde(rename = "DeviceName")] 36 #[getset(get = "pub")] 37 pub(in crate::message) device_name: String, 38 #[serde(rename = "DeviceMessages")] 39 #[getset(get = "pub")] 40 pub(in crate::message) device_messages: Vec<ButtplugDeviceMessageNameV0>, 41} 42 43impl ButtplugMessageValidator for DeviceAddedV0 { 44 fn is_valid(&self) -> Result<(), ButtplugMessageError> { 45 self.is_system_id(self.id) 46 } 47} 48 49impl ButtplugMessageFinalizer for DeviceAddedV0 { 50} 51 52// TODO Test repeated message type in attributes in JSON