Buttplug sex toy control library
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