homework done
This commit is contained in:
9
smart-house/power_socket_lib/Cargo.toml
Normal file
9
smart-house/power_socket_lib/Cargo.toml
Normal file
@@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "power_socket_lib"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[lib]
|
||||
crate-type = ["rlib", "staticlib", "cdylib"]
|
||||
|
||||
[dependencies]
|
||||
45
smart-house/power_socket_lib/src/lib.rs
Normal file
45
smart-house/power_socket_lib/src/lib.rs
Normal file
@@ -0,0 +1,45 @@
|
||||
#[repr(C)]
|
||||
pub struct PowerSocket {
|
||||
power_rate: f32,
|
||||
on: bool,
|
||||
}
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "C" fn power_socket_new(power_rate: f32, on: bool) -> PowerSocket {
|
||||
PowerSocket { power_rate, on }
|
||||
}
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "C" fn power_socket_is_on(power_socket: &PowerSocket) -> bool {
|
||||
power_socket.on
|
||||
}
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "C" fn power_socket_set_on(power_socket: &mut PowerSocket, on: bool) {
|
||||
power_socket.on = on
|
||||
}
|
||||
|
||||
#[unsafe(no_mangle)]
|
||||
pub extern "C" fn power_socket_get_power(power_socket: &PowerSocket) -> f32 {
|
||||
if power_socket.on { power_socket.power_rate } else { 0.0 }
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn it_works() {
|
||||
let mut power_socket = power_socket_new(12.0, false);
|
||||
assert_eq!(power_socket.power_rate, 12.0);
|
||||
assert_eq!(power_socket.on, false);
|
||||
|
||||
assert_eq!(power_socket_is_on(&power_socket), false);
|
||||
assert_eq!(power_socket_get_power(&power_socket), 0.0);
|
||||
|
||||
power_socket_set_on(&mut power_socket, true);
|
||||
|
||||
assert_eq!(power_socket_is_on(&power_socket), true);
|
||||
assert_eq!(power_socket_get_power(&power_socket), 12.0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user