cmd_handler: Add new cmd to for commit hash

This commit is contained in:
linuswck 2025-01-22 12:59:57 +08:00
parent 1b7f5bc3e4
commit c2806aee27

View File

@ -1,4 +1,4 @@
use core::{fmt::Debug, marker::PhantomData}; use core::{fmt::Debug, marker::PhantomData, env};
use log::{debug, info}; use log::{debug, info};
use miniconf::{JsonCoreSlash, Tree}; use miniconf::{JsonCoreSlash, Tree};
@ -27,6 +27,7 @@ pub enum ResponseEnum {
Settings, Settings,
Report, Report,
HwRev, HwRev,
FirmwareRev,
Interval, Interval,
Acknowledge, Acknowledge,
InvalidDatatype, InvalidDatatype,
@ -60,11 +61,33 @@ pub struct ResponseObj<'a> {
json: Response<'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)] #[derive(Deserialize, Serialize, Copy, Clone, Default, Debug)]
enum DeviceCmd { enum DeviceCmd {
#[default] #[default]
Reserved, Reserved,
GetHwRev, GetHwRev,
GetFirmwareRev,
SetIPSettings, SetIPSettings,
SetPdFinGain, SetPdFinGain,
SetPdTransconductance, SetPdTransconductance,
@ -258,6 +281,20 @@ pub fn send_status_report(
net::eth_send(buffer, num_bytes, *socket); 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) { pub fn send_hw_rev(buffer: &mut [u8], hw_rev_o: &mut HWRev, socket: &mut SocketHandle) {
let hw_rev = HwRevObj { let hw_rev = HwRevObj {
json: HwRevType { json: HwRevType {
@ -395,6 +432,9 @@ pub fn execute_cmd(
Some(DeviceCmd::GetHwRev) => { Some(DeviceCmd::GetHwRev) => {
send_hw_rev(buffer, hw_rev, socket); send_hw_rev(buffer, hw_rev, socket);
} }
Some(DeviceCmd::GetFirmwareRev) => {
send_firmware_rev(buffer, socket);
}
Some(DeviceCmd::GetStatusReport) => { Some(DeviceCmd::GetStatusReport) => {
send_status_report(buffer, laser, thermostat, socket); send_status_report(buffer, laser, thermostat, socket);
} }