From c2806aee278873e6e8ddf2add9d7272f3338f78f Mon Sep 17 00:00:00 2001 From: linuswck Date: Wed, 22 Jan 2025 12:59:57 +0800 Subject: [PATCH] cmd_handler: Add new cmd to for commit hash --- src/net/cmd_handler.rs | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/net/cmd_handler.rs b/src/net/cmd_handler.rs index 9a12d58..cae85d0 100644 --- a/src/net/cmd_handler.rs +++ b/src/net/cmd_handler.rs @@ -1,4 +1,4 @@ -use core::{fmt::Debug, marker::PhantomData}; +use core::{fmt::Debug, marker::PhantomData, env}; use log::{debug, info}; use miniconf::{JsonCoreSlash, Tree}; @@ -27,6 +27,7 @@ pub enum ResponseEnum { Settings, Report, HwRev, + FirmwareRev, Interval, Acknowledge, InvalidDatatype, @@ -60,11 +61,33 @@ pub struct ResponseObj<'a> { json: Response<'a>, } +#[derive(Deserialize, Serialize, Copy, Clone, Debug)] +pub struct FirmwareRevType<'a> { + msg_type: ResponseEnum, + firmware_rev: Option<&'a str>, +} + +impl Default for FirmwareRevType<'static> { + fn default() -> Self { + FirmwareRevType { + msg_type: ResponseEnum::Reserved, + firmware_rev: None, + } + } +} + +#[derive(Deserialize, Serialize, Copy, Clone, Debug, Tree)] +pub struct FirmwareRevObj<'a> { + #[serde(borrow)] + json: FirmwareRevType<'a>, +} + #[derive(Deserialize, Serialize, Copy, Clone, Default, Debug)] enum DeviceCmd { #[default] Reserved, GetHwRev, + GetFirmwareRev, SetIPSettings, SetPdFinGain, SetPdTransconductance, @@ -258,6 +281,20 @@ pub fn send_status_report( net::eth_send(buffer, num_bytes, *socket); } +pub fn send_firmware_rev(buffer: &mut [u8], socket: &mut SocketHandle){ + let response = FirmwareRevObj { + json: FirmwareRevType { + msg_type: ResponseEnum::FirmwareRev, + firmware_rev: Some(env!("BUILD_REVISION")), + }, + }; + + let mut num_bytes = response.get_json("/json", buffer).unwrap(); + buffer[num_bytes] = b'\n'; + num_bytes += 1; + net::eth_send(buffer, num_bytes, *socket); +} + pub fn send_hw_rev(buffer: &mut [u8], hw_rev_o: &mut HWRev, socket: &mut SocketHandle) { let hw_rev = HwRevObj { json: HwRevType { @@ -395,6 +432,9 @@ pub fn execute_cmd( Some(DeviceCmd::GetHwRev) => { send_hw_rev(buffer, hw_rev, socket); } + Some(DeviceCmd::GetFirmwareRev) => { + send_firmware_rev(buffer, socket); + } Some(DeviceCmd::GetStatusReport) => { send_status_report(buffer, laser, thermostat, socket); }