mirror of
https://git.alemi.dev/pc-monitor.git
synced 2024-11-24 16:34:48 +01:00
feat: added leds and packet for net tx/rx
This commit is contained in:
parent
def620665e
commit
0eb1ec059a
3 changed files with 29 additions and 1 deletions
|
@ -13,9 +13,14 @@ def cpu_load_serial_driver(device:str, retry_interval:float=5.0):
|
||||||
avg_usage_to_serial(port)
|
avg_usage_to_serial(port)
|
||||||
except serial.SerialException as e:
|
except serial.SerialException as e:
|
||||||
print(f"[!] Could not connect to device: {str(e)}", file=sys.stderr)
|
print(f"[!] Could not connect to device: {str(e)}", file=sys.stderr)
|
||||||
|
else:
|
||||||
|
port.close()
|
||||||
sleep(retry_interval)
|
sleep(retry_interval)
|
||||||
|
|
||||||
def avg_usage_to_serial(port:serial.Serial):
|
def avg_usage_to_serial(port:serial.Serial):
|
||||||
|
net = psutil.net_io_counters()
|
||||||
|
net_tx = net.bytes_sent
|
||||||
|
net_rx = net.bytes_recv
|
||||||
port.write(struct.pack("BB", 0, 0))
|
port.write(struct.pack("BB", 0, 0))
|
||||||
port.flush()
|
port.flush()
|
||||||
while True:
|
while True:
|
||||||
|
@ -27,6 +32,15 @@ def avg_usage_to_serial(port:serial.Serial):
|
||||||
except serial.SerialException as e:
|
except serial.SerialException as e:
|
||||||
print(f"[!] Failed writing payload to device: {str(e)}", file=sys.stderr)
|
print(f"[!] Failed writing payload to device: {str(e)}", file=sys.stderr)
|
||||||
break
|
break
|
||||||
|
net = psutil.net_io_counters()
|
||||||
|
try:
|
||||||
|
port.write(struct.pack("BBBB", 2, 2, int(net.bytes_sent > net_tx), int(net.bytes_recv > net_rx)))
|
||||||
|
port.flush()
|
||||||
|
except serial.SerialException as e:
|
||||||
|
print(f"[!] Failed writing payload to device: {str(e)}", file=sys.stderr)
|
||||||
|
break
|
||||||
|
net_rx = net.bytes_recv
|
||||||
|
net_tx = net.bytes_sent
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
12
src/main.rs
12
src/main.rs
|
@ -23,6 +23,8 @@ fn main() -> ! {
|
||||||
let timer2 = Timer2Pwm::new(dp.TC2, Prescaler::Direct);
|
let timer2 = Timer2Pwm::new(dp.TC2, Prescaler::Direct);
|
||||||
let pins = arduino_hal::pins!(dp);
|
let pins = arduino_hal::pins!(dp);
|
||||||
let mut led_load = pins.d6.into_output();
|
let mut led_load = pins.d6.into_output();
|
||||||
|
let mut led_rx = pins.d5.into_output(); // green
|
||||||
|
let mut led_tx = pins.d4.into_output(); // red
|
||||||
let button = pins.d2.into_pull_up_input();
|
let button = pins.d2.into_pull_up_input();
|
||||||
let mut cpu_leds = FourLedDisplay::new(
|
let mut cpu_leds = FourLedDisplay::new(
|
||||||
pins.d3.into_output().into_pwm(&timer2),
|
pins.d3.into_output().into_pwm(&timer2),
|
||||||
|
@ -36,6 +38,8 @@ fn main() -> ! {
|
||||||
let mut serial = arduino_hal::default_serial!(dp, pins, 57600);
|
let mut serial = arduino_hal::default_serial!(dp, pins, 57600);
|
||||||
|
|
||||||
led_load.set_high();
|
led_load.set_high();
|
||||||
|
led_rx.set_high();
|
||||||
|
led_tx.set_high();
|
||||||
|
|
||||||
// prepare display
|
// prepare display
|
||||||
let mut display: GraphicsMode<_> = Builder::new().with_size(sh1106::prelude::DisplaySize::Display128x64).connect_i2c(i2c).into();
|
let mut display: GraphicsMode<_> = Builder::new().with_size(sh1106::prelude::DisplaySize::Display128x64).connect_i2c(i2c).into();
|
||||||
|
@ -58,6 +62,8 @@ fn main() -> ! {
|
||||||
cpu_leds.set(4, 255);
|
cpu_leds.set(4, 255);
|
||||||
|
|
||||||
led_load.set_low();
|
led_load.set_low();
|
||||||
|
led_tx.set_low();
|
||||||
|
led_rx.set_low();
|
||||||
|
|
||||||
let mut pkt_builder = PacketBuilder::new();
|
let mut pkt_builder = PacketBuilder::new();
|
||||||
|
|
||||||
|
@ -83,6 +89,12 @@ fn main() -> ! {
|
||||||
cpu_leds.set_many(payload[0], payload[1], payload[2], payload[3]);
|
cpu_leds.set_many(payload[0], payload[1], payload[2], payload[3]);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
PacketId::NetStatePacket => {
|
||||||
|
if let Some(payload) = pkt.payload && payload.len() == 2 {
|
||||||
|
if payload[0] == 0 { led_tx.set_low() } else { led_tx.set_high() };
|
||||||
|
if payload[1] == 0 { led_rx.set_low() } else { led_rx.set_high() };
|
||||||
|
}
|
||||||
|
},
|
||||||
_ => {}, // TODO log it?
|
_ => {}, // TODO log it?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ pub enum PacketId {
|
||||||
Invalid = 0xFF,
|
Invalid = 0xFF,
|
||||||
Reset = 0x00,
|
Reset = 0x00,
|
||||||
SetLedsPacket = 0x01,
|
SetLedsPacket = 0x01,
|
||||||
|
NetStatePacket = 0x02,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<u8> for PacketId {
|
impl From<u8> for PacketId {
|
||||||
|
@ -12,6 +13,7 @@ impl From<u8> for PacketId {
|
||||||
match x {
|
match x {
|
||||||
0 => PacketId::Reset,
|
0 => PacketId::Reset,
|
||||||
1 => PacketId::SetLedsPacket,
|
1 => PacketId::SetLedsPacket,
|
||||||
|
2 => PacketId::NetStatePacket,
|
||||||
_ => PacketId::Invalid,
|
_ => PacketId::Invalid,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,7 +55,7 @@ impl PacketBuilder {
|
||||||
PacketBuilderStep::ID => {
|
PacketBuilderStep::ID => {
|
||||||
let id = PacketId::from(byte);
|
let id = PacketId::from(byte);
|
||||||
match id {
|
match id {
|
||||||
PacketId::SetLedsPacket | PacketId::Reset => {
|
PacketId::SetLedsPacket | PacketId::Reset | PacketId::NetStatePacket => {
|
||||||
self.id = id;
|
self.id = id;
|
||||||
self.step = PacketBuilderStep::SIZE;
|
self.step = PacketBuilderStep::SIZE;
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue