forked from M-Labs/artiq
drtioaux: add default timeout
This commit is contained in:
parent
7675dd063b
commit
f58f16ccd4
|
@ -320,7 +320,8 @@ pub mod hw {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn recv_timeout(timeout_ms: u64) -> io::Result<Packet> {
|
pub fn recv_timeout(timeout_ms: Option<u64>) -> io::Result<Packet> {
|
||||||
|
let timeout_ms = timeout_ms.unwrap_or(10);
|
||||||
let limit = board::clock::get_ms() + timeout_ms;
|
let limit = board::clock::get_ms() + timeout_ms;
|
||||||
while board::clock::get_ms() < limit {
|
while board::clock::get_ms() < limit {
|
||||||
match recv() {
|
match recv() {
|
||||||
|
|
|
@ -39,7 +39,7 @@ fn read_probe_drtio(channel: u16, probe: u8) -> u32 {
|
||||||
if rtio_mgt::drtio::link_is_running() {
|
if rtio_mgt::drtio::link_is_running() {
|
||||||
let request = drtioaux::Packet::MonitorRequest { channel: channel, probe: probe };
|
let request = drtioaux::Packet::MonitorRequest { channel: channel, probe: probe };
|
||||||
drtioaux::hw::send(&request).unwrap();
|
drtioaux::hw::send(&request).unwrap();
|
||||||
match drtioaux::hw::recv_timeout(10) {
|
match drtioaux::hw::recv_timeout(None) {
|
||||||
Ok(drtioaux::Packet::MonitorReply { value }) => return value,
|
Ok(drtioaux::Packet::MonitorReply { value }) => return value,
|
||||||
Ok(_) => error!("received unexpected aux packet"),
|
Ok(_) => error!("received unexpected aux packet"),
|
||||||
Err(e) => error!("aux packet error ({})", e)
|
Err(e) => error!("aux packet error ({})", e)
|
||||||
|
@ -123,7 +123,7 @@ fn read_injection_status_drtio(channel: u16, overrd: u8) -> u8 {
|
||||||
overrd: overrd
|
overrd: overrd
|
||||||
};
|
};
|
||||||
drtioaux::hw::send(&request).unwrap();
|
drtioaux::hw::send(&request).unwrap();
|
||||||
match drtioaux::hw::recv_timeout(10) {
|
match drtioaux::hw::recv_timeout(None) {
|
||||||
Ok(drtioaux::Packet::InjectionStatusReply { value }) => return value,
|
Ok(drtioaux::Packet::InjectionStatusReply { value }) => return value,
|
||||||
Ok(_) => error!("received unexpected aux packet"),
|
Ok(_) => error!("received unexpected aux packet"),
|
||||||
Err(e) => error!("aux packet error ({})", e)
|
Err(e) => error!("aux packet error ({})", e)
|
||||||
|
|
|
@ -169,7 +169,7 @@ pub mod drtio {
|
||||||
io.sleep(200).unwrap();
|
io.sleep(200).unwrap();
|
||||||
if link_is_running() {
|
if link_is_running() {
|
||||||
drtioaux::hw::send(&drtioaux::Packet::RtioErrorRequest).unwrap();
|
drtioaux::hw::send(&drtioaux::Packet::RtioErrorRequest).unwrap();
|
||||||
match drtioaux::hw::recv_timeout(10) {
|
match drtioaux::hw::recv_timeout(None) {
|
||||||
Ok(drtioaux::Packet::RtioNoErrorReply) => (),
|
Ok(drtioaux::Packet::RtioNoErrorReply) => (),
|
||||||
Ok(drtioaux::Packet::RtioErrorCollisionReply) => error!("RTIO collision (in satellite)"),
|
Ok(drtioaux::Packet::RtioErrorCollisionReply) => error!("RTIO collision (in satellite)"),
|
||||||
Ok(drtioaux::Packet::RtioErrorBusyReply) => error!("RTIO busy (in satellite)"),
|
Ok(drtioaux::Packet::RtioErrorBusyReply) => error!("RTIO busy (in satellite)"),
|
||||||
|
|
Loading…
Reference in New Issue