driver, firmware: Rm active report mode & cmd
This commit is contained in:
parent
85f81ee8e4
commit
cd3347798c
@ -11,14 +11,6 @@ async def enter_dfu_mode(kirdy: Kirdy):
|
|||||||
"""
|
"""
|
||||||
await kirdy.device.dfu()
|
await kirdy.device.dfu()
|
||||||
|
|
||||||
async def active_report(kirdy: Kirdy):
|
|
||||||
"""
|
|
||||||
Configure Kirdy to actively report status to connected socket
|
|
||||||
Press Ctrl + C to exit active report mode
|
|
||||||
"""
|
|
||||||
async for data in kirdy.report_mode():
|
|
||||||
pp(data)
|
|
||||||
|
|
||||||
async def device_cfg(kirdy: Kirdy):
|
async def device_cfg(kirdy: Kirdy):
|
||||||
"""
|
"""
|
||||||
Configure Kirdy's network and board specific transconductance settings.
|
Configure Kirdy's network and board specific transconductance settings.
|
||||||
@ -127,7 +119,6 @@ async def main():
|
|||||||
await kirdy.wait_until_connected()
|
await kirdy.wait_until_connected()
|
||||||
|
|
||||||
await ld_thermostat_cfg(kirdy)
|
await ld_thermostat_cfg(kirdy)
|
||||||
# await active_report(kirdy)
|
|
||||||
# await device_cfg(kirdy)
|
# await device_cfg(kirdy)
|
||||||
# await enter_dfu_mode(kirdy)
|
# await enter_dfu_mode(kirdy)
|
||||||
|
|
||||||
|
@ -25,7 +25,6 @@ class CmdList:
|
|||||||
SetIPSettings = _dt.ip_settings
|
SetIPSettings = _dt.ip_settings
|
||||||
SetPdFinGain = _dt.f32
|
SetPdFinGain = _dt.f32
|
||||||
SetPdTransconductance = _dt.f32
|
SetPdTransconductance = _dt.f32
|
||||||
SetActiveReportMode = _dt.bool
|
|
||||||
GetHwRev = _dt.none
|
GetHwRev = _dt.none
|
||||||
GetStatusReport = _dt.none
|
GetStatusReport = _dt.none
|
||||||
GetSettingsSummary = _dt.none
|
GetSettingsSummary = _dt.none
|
||||||
@ -209,13 +208,6 @@ class Device:
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
async def set_active_report_mode(self, on):
|
|
||||||
"""
|
|
||||||
Set active report to be on. If it is on, Kirdy will send status report
|
|
||||||
to the client socket according to the temperature polling rate set.
|
|
||||||
"""
|
|
||||||
return await self._send_cmd(self._cmd._target, self._cmd.SetActiveReportMode, on)
|
|
||||||
|
|
||||||
async def set_pd_mon_fin_gain(self, gain):
|
async def set_pd_mon_fin_gain(self, gain):
|
||||||
"""
|
"""
|
||||||
Configure the photodiode monitor final analog front-end stage gain.
|
Configure the photodiode monitor final analog front-end stage gain.
|
||||||
@ -657,7 +649,6 @@ class Kirdy:
|
|||||||
self._event_loop = None
|
self._event_loop = None
|
||||||
|
|
||||||
self._msg_queue_get_report = False
|
self._msg_queue_get_report = False
|
||||||
self._report_mode_on = False
|
|
||||||
self._state = State.disconnected
|
self._state = State.disconnected
|
||||||
|
|
||||||
self.read_response_task, self.handler_task = None, None
|
self.read_response_task, self.handler_task = None, None
|
||||||
@ -675,7 +666,7 @@ class Kirdy:
|
|||||||
|
|
||||||
def set_report_sig(self, sig):
|
def set_report_sig(self, sig):
|
||||||
"""
|
"""
|
||||||
Connect a PyQt Signal to the active report output(dict). This should be configured before the session is started.
|
Connect a PyQt Signal to the status report output(dict). This should be configured before the session is started.
|
||||||
"""
|
"""
|
||||||
self._report_sig = sig
|
self._report_sig = sig
|
||||||
|
|
||||||
@ -749,30 +740,6 @@ class Kirdy:
|
|||||||
if not(self.connected()):
|
if not(self.connected()):
|
||||||
await self.connected_event.wait()
|
await self.connected_event.wait()
|
||||||
|
|
||||||
async def report_mode(self):
|
|
||||||
"""
|
|
||||||
Enable and retrieve active report from Kirdy
|
|
||||||
"""
|
|
||||||
if self.connected():
|
|
||||||
self._report_mode_on = True
|
|
||||||
await self.device.set_active_report_mode(True)
|
|
||||||
report = None
|
|
||||||
|
|
||||||
while self._report_mode_on:
|
|
||||||
report = await self._report_queue.get()
|
|
||||||
if not(isinstance(report, dict)):
|
|
||||||
self.stop_active_report()
|
|
||||||
else:
|
|
||||||
yield report
|
|
||||||
|
|
||||||
if isinstance(report, dict):
|
|
||||||
await self.device.set_active_report_mode(False)
|
|
||||||
else:
|
|
||||||
raise ConnectionError
|
|
||||||
|
|
||||||
def stop_report_mode(self):
|
|
||||||
self._report_mode_on = False
|
|
||||||
|
|
||||||
def task_dispatcher(self, awaitable_fn):
|
def task_dispatcher(self, awaitable_fn):
|
||||||
"""
|
"""
|
||||||
Enqueue a task to be handled by the handler.
|
Enqueue a task to be handled by the handler.
|
||||||
@ -859,10 +826,7 @@ class Kirdy:
|
|||||||
async def _read_response_handler(self):
|
async def _read_response_handler(self):
|
||||||
try:
|
try:
|
||||||
while True:
|
while True:
|
||||||
if self._report_mode_on:
|
response = await self._read_response()
|
||||||
response = await asyncio.wait_for(self._read_response(), self._timeout)
|
|
||||||
else:
|
|
||||||
response = await self._read_response()
|
|
||||||
|
|
||||||
if response["msg_type"] == 'HardReset':
|
if response["msg_type"] == 'HardReset':
|
||||||
logging.warn("Kirdy is being hard reset.")
|
logging.warn("Kirdy is being hard reset.")
|
||||||
@ -891,9 +855,6 @@ class Kirdy:
|
|||||||
logging.warn("Read Response Handler experienced an error. Exiting.", exc_info=True)
|
logging.warn("Read Response Handler experienced an error. Exiting.", exc_info=True)
|
||||||
self._task_queue.put_nowait_overwrite(exec)
|
self._task_queue.put_nowait_overwrite(exec)
|
||||||
self._int_msg_queue.put_nowait_overwrite(exec)
|
self._int_msg_queue.put_nowait_overwrite(exec)
|
||||||
if self._report_mode_on:
|
|
||||||
self._report_mode_on = False
|
|
||||||
self._report_queue.put_nowait_overwrite(TimeoutError)
|
|
||||||
|
|
||||||
async def _stop_handler(self):
|
async def _stop_handler(self):
|
||||||
for task in asyncio.all_tasks():
|
for task in asyncio.all_tasks():
|
||||||
|
23
src/main.rs
23
src/main.rs
@ -77,7 +77,6 @@ fn main() -> ! {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut active_report: [bool; net::net::NUM_OF_SOCKETS] = [false; net::net::NUM_OF_SOCKETS];
|
|
||||||
|
|
||||||
let mut state = State::default();
|
let mut state = State::default();
|
||||||
|
|
||||||
@ -88,9 +87,7 @@ fn main() -> ! {
|
|||||||
loop {
|
loop {
|
||||||
wd.feed();
|
wd.feed();
|
||||||
|
|
||||||
if net::net::eth_poll_link_status_and_update_link_speed() {
|
net::net::eth_poll_link_status_and_update_link_speed();
|
||||||
active_report = [false; net::net::NUM_OF_SOCKETS];
|
|
||||||
}
|
|
||||||
|
|
||||||
match state {
|
match state {
|
||||||
State::LoadFlashSettings => {
|
State::LoadFlashSettings => {
|
||||||
@ -166,23 +163,6 @@ fn main() -> ! {
|
|||||||
thermostat.power_down();
|
thermostat.power_down();
|
||||||
}
|
}
|
||||||
|
|
||||||
net::net::for_each(|mut socket, id| {
|
|
||||||
if net::net::eth_is_socket_active(socket, true) && net::net::eth_is_socket_connected(socket) {
|
|
||||||
if active_report[id] {
|
|
||||||
if net::net::eth_can_sock_send(socket) {
|
|
||||||
net::cmd_handler::send_status_report(
|
|
||||||
eth_data_buffer,
|
|
||||||
&mut laser,
|
|
||||||
&mut thermostat,
|
|
||||||
&mut socket,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
active_report[id] = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
thermostat.start_tec_readings_conversion();
|
thermostat.start_tec_readings_conversion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +187,6 @@ fn main() -> ! {
|
|||||||
&mut thermostat,
|
&mut thermostat,
|
||||||
&mut state,
|
&mut state,
|
||||||
&mut device_settings,
|
&mut device_settings,
|
||||||
&mut active_report[id],
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,6 @@ enum DeviceCmd {
|
|||||||
Reserved,
|
Reserved,
|
||||||
GetHwRev,
|
GetHwRev,
|
||||||
SetIPSettings,
|
SetIPSettings,
|
||||||
SetActiveReportMode,
|
|
||||||
SetPdFinGain,
|
SetPdFinGain,
|
||||||
SetPdTransconductance,
|
SetPdTransconductance,
|
||||||
GetStatusReport,
|
GetStatusReport,
|
||||||
@ -308,7 +307,6 @@ pub fn execute_cmd(
|
|||||||
thermostat: &mut Thermostat,
|
thermostat: &mut Thermostat,
|
||||||
state: &mut State,
|
state: &mut State,
|
||||||
device_settings: &mut DeviceSettings,
|
device_settings: &mut DeviceSettings,
|
||||||
active_report: &mut bool,
|
|
||||||
) {
|
) {
|
||||||
let mut cmd = TecSetICmd {
|
let mut cmd = TecSetICmd {
|
||||||
json: TecSetICmdJson::default(),
|
json: TecSetICmdJson::default(),
|
||||||
@ -358,20 +356,6 @@ pub fn execute_cmd(
|
|||||||
net::eth_poll_iface();
|
net::eth_poll_iface();
|
||||||
*state = State::PrepareForDfu;
|
*state = State::PrepareForDfu;
|
||||||
}
|
}
|
||||||
Some(DeviceCmd::SetActiveReportMode) => match cmd.json.data_bool {
|
|
||||||
Some(val) => {
|
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
|
||||||
*active_report = val;
|
|
||||||
}
|
|
||||||
None => {
|
|
||||||
send_response(
|
|
||||||
buffer,
|
|
||||||
ResponseEnum::InvalidDatatype,
|
|
||||||
Some(ERR_MSG_MISSING_DATA_BOOL),
|
|
||||||
socket,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
Some(DeviceCmd::SetPdFinGain) => match cmd.json.data_f32 {
|
Some(DeviceCmd::SetPdFinGain) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
|
Loading…
Reference in New Issue
Block a user