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 crate::message::v1::{ClientDeviceMessageAttributesV1, DeviceMessageInfoV1};
9
10use super::*;
11use getset::{CopyGetters, Getters};
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Debug, PartialEq, Eq, Getters, CopyGetters, Serialize, Deserialize)]
15pub struct DeviceMessageInfoV2 {
16 #[serde(rename = "DeviceIndex")]
17 #[getset(get_copy = "pub")]
18 pub(in crate::message) device_index: u32,
19 #[serde(rename = "DeviceName")]
20 #[getset(get = "pub")]
21 pub(in crate::message) device_name: String,
22 #[serde(rename = "DeviceMessages")]
23 #[getset(get = "pub")]
24 pub(in crate::message) device_messages: ClientDeviceMessageAttributesV2,
25}
26
27impl From<DeviceMessageInfoV2> for DeviceMessageInfoV1 {
28 fn from(device_message_info: DeviceMessageInfoV2) -> Self {
29 // No structural difference, it's all content changes
30 Self {
31 device_index: device_message_info.device_index(),
32 device_name: device_message_info.device_name().clone(),
33 device_messages: ClientDeviceMessageAttributesV1::from(
34 device_message_info.device_messages().clone(),
35 ),
36 }
37 }
38}
39
40impl From<DeviceAddedV2> for DeviceMessageInfoV2 {
41 fn from(device_added: DeviceAddedV2) -> Self {
42 // No structural difference, it's all content changes
43 Self {
44 device_index: device_added.device_index(),
45 device_name: device_added.device_name().clone(),
46 device_messages: device_added.device_messages().clone(),
47 }
48 }
49}