Buttplug sex toy control library
at master 59 lines 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::{ 11 ButtplugDeviceMessage, 12 ButtplugMessage, 13 ButtplugMessageFinalizer, 14 ButtplugMessageValidator, 15 }, 16}; 17use getset::CopyGetters; 18use serde::{Deserialize, Serialize}; 19 20/// Battery level response 21#[derive( 22 Debug, 23 ButtplugDeviceMessage, 24 ButtplugMessageFinalizer, 25 PartialEq, 26 Clone, 27 CopyGetters, 28 Serialize, 29 Deserialize, 30)] 31pub struct BatteryLevelReadingV2 { 32 #[serde(rename = "Id")] 33 id: u32, 34 #[serde(rename = "DeviceIndex")] 35 device_index: u32, 36 #[serde(rename = "BatteryLevel")] 37 #[getset(get_copy = "pub")] 38 battery_level: f64, 39} 40 41impl BatteryLevelReadingV2 { 42 pub fn new(device_index: u32, battery_level: f64) -> Self { 43 Self { 44 id: 1, 45 device_index, 46 battery_level, 47 } 48 } 49} 50 51impl ButtplugMessageValidator for BatteryLevelReadingV2 { 52 fn is_valid(&self) -> Result<(), ButtplugMessageError> { 53 self.is_not_system_id(self.id)?; 54 self.is_in_command_range( 55 self.battery_level, 56 "BatteryLevelReading must be between 0.0 and 1.0".to_string(), 57 ) 58 } 59}