Buttplug sex toy control library
at dev 1.8 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 super::{ClientDeviceMessageAttributesV2, device_message_info::DeviceMessageInfoV2}; 9use crate::message::v1::{DeviceAddedV1, DeviceMessageInfoV1}; 10use buttplug_core::{ 11 errors::ButtplugMessageError, 12 message::{ButtplugMessage, ButtplugMessageFinalizer, ButtplugMessageValidator}, 13}; 14 15use getset::{CopyGetters, Getters}; 16 17use serde::{Deserialize, Serialize}; 18 19#[derive( 20 ButtplugMessage, Clone, Debug, PartialEq, Eq, Getters, CopyGetters, Serialize, Deserialize, 21)] 22pub struct DeviceAddedV2 { 23 #[serde(rename = "Id")] 24 pub(in crate::message) id: u32, 25 #[serde(rename = "DeviceIndex")] 26 #[getset(get_copy = "pub")] 27 pub(in crate::message) device_index: u32, 28 #[serde(rename = "DeviceName")] 29 #[getset(get = "pub")] 30 pub(in crate::message) device_name: String, 31 #[serde(rename = "DeviceMessages")] 32 #[getset(get = "pub")] 33 pub(in crate::message) device_messages: ClientDeviceMessageAttributesV2, 34} 35 36impl From<DeviceAddedV2> for DeviceAddedV1 { 37 fn from(msg: DeviceAddedV2) -> Self { 38 let id = msg.id(); 39 let dmiv2 = DeviceMessageInfoV2::from(msg); 40 let dmiv1 = DeviceMessageInfoV1::from(dmiv2); 41 42 Self { 43 id, 44 device_index: dmiv1.device_index(), 45 device_name: dmiv1.device_name().clone(), 46 device_messages: dmiv1.device_messages().clone(), 47 } 48 } 49} 50 51impl ButtplugMessageValidator for DeviceAddedV2 { 52 fn is_valid(&self) -> Result<(), ButtplugMessageError> { 53 self.is_system_id(self.id) 54 } 55} 56 57impl ButtplugMessageFinalizer for DeviceAddedV2 { 58}