retire work around for rust issue 90195 in I2C

This commit is contained in:
bunnie 2022-03-29 16:24:14 +08:00
parent b32cde6870
commit da89a61a28

View file

@ -33,17 +33,14 @@ pub(crate) enum I2cCallback {
// and create a "public" version for return values via callbacks. But for now, it's pretty
// convenient to reach into the state of the I2C machine to debug problems in the callbacks.
#[allow(dead_code)]
pub (crate) const I2C_MAX_LEN: usize = 33; // note: due to a regression in Rust 1.56, we can't use the I2C_MAX_LEN symbol in the structure below. So you must manually update that if you change it here.
// pending https://github.com/rust-lang/rust/issues/90195
pub (crate) const I2C_MAX_LEN: usize = 33;
#[derive(Debug, Copy, Clone, Archive, Serialize, Deserialize)]
pub struct I2cTransaction {
pub bus_addr: u8,
// write address and read address are encoded in the packet field below
// NOTE: the number 33 that appears twice below mirrors I2C_MAX_LEN; due to a regression in Rust 1.56 we can't use constants in array types
// pending https://github.com/rust-lang/rust/issues/90195
pub txbuf: Option<[u8; 33]>,
pub txbuf: Option<[u8; I2C_MAX_LEN]>,
pub txlen: u32,
pub rxbuf: Option<[u8; 33]>,
pub rxbuf: Option<[u8; I2C_MAX_LEN]>,
pub rxlen: u32,
pub listener: Option<(u32, u32, u32, u32)>, // where Rx split transactions should be routed to
pub timeout_ms: u32,
@ -78,7 +75,7 @@ pub struct I2cAsyncReadHook {
/// The data reported by an I2cAsycReadHook message
#[derive(Debug, Copy, Clone, Archive, Serialize, Deserialize)]
pub struct I2cReadResult {
pub rxbuf: [u8; 33],
pub rxbuf: [u8; I2C_MAX_LEN],
pub rxlen: u32,
pub status: I2cStatus,
}