Remove swift source, update esp32 usb servo to share serial port

This commit is contained in:
Piv
2023-01-22 14:20:36 +10:30
parent b56467dd1c
commit 40e5269c35
14 changed files with 17 additions and 492 deletions

View File

@@ -1,3 +1,5 @@
use std::sync::{Arc, Mutex};
use serialport::SerialPort;
// TODO: Should be returning results in these traits
@@ -89,14 +91,14 @@ pub mod rppal {
}
pub struct Esp32SerialPwmServo<T: SerialPort> {
serial_port: T,
serial_port: Arc<Mutex<T>>,
value: f64,
channel: u8,
pin: u8,
}
impl<T: SerialPort> Esp32SerialPwmServo<T> {
pub fn new(serial_port: T, channel: u8, pin: u8) -> Esp32SerialPwmServo<T> {
pub fn new(serial_port: Arc<Mutex<T>>, channel: u8, pin: u8) -> Esp32SerialPwmServo<T> {
Esp32SerialPwmServo {
serial_port,
value: 0.,
@@ -108,7 +110,11 @@ impl<T: SerialPort> Esp32SerialPwmServo<T> {
impl<T: SerialPort> Esp32SerialPwmServo<T> {
fn init_pwm(&mut self) {
let bytes_written = self.serial_port.write(&[0, 1, self.channel, self.pin]);
let bytes_written = self
.serial_port
.lock()
.unwrap()
.write(&[0, 1, self.channel, self.pin]);
// TODO: Better error handling
match bytes_written {
Ok(size) => println!("{}", size),
@@ -133,6 +139,8 @@ impl<T: SerialPort> Servo for Esp32SerialPwmServo<T> {
self.value = temp_value;
let bytes_written = self
.serial_port
.lock()
.unwrap()
.write(&[self.channel, ((value + 1.) / 2. * 255.) as u8]);
// TODO: Better error handling
match bytes_written {