diff --git a/drv/transceivers-server/src/main.rs b/drv/transceivers-server/src/main.rs index 863b097f7..55067b38a 100644 --- a/drv/transceivers-server/src/main.rs +++ b/drv/transceivers-server/src/main.rs @@ -15,12 +15,9 @@ use drv_sidecar_front_io::{ }; use drv_sidecar_seq_api::{SeqError, Sequencer}; use drv_transceivers_api::{ - ModuleStatus, TransceiversError, NUM_PORTS, PAGE_SIZE_BYTES, - TRANSCEIVER_TEMPERATURE_SENSORS, -}; -use idol_runtime::{ - ClientError, Leased, NotificationHandler, RequestError, R, W, + ModuleStatus, TransceiversError, NUM_PORTS, TRANSCEIVER_TEMPERATURE_SENSORS, }; +use idol_runtime::{NotificationHandler, RequestError}; use ringbuf::*; use task_sensor_api::{NoData, Sensor, SensorError}; use task_thermal_api::{Thermal, ThermalError, ThermalProperties}; @@ -440,217 +437,6 @@ impl idl::InOrderTransceiversImpl for ServerImpl { } } - fn port_enable_power( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.enable_power(mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn port_disable_power( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.disable_power(mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn port_assert_reset( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.assert_reset(mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn port_deassert_reset( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.deassert_reset(mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn port_assert_lpmode( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.assert_lpmode(mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn port_deassert_lpmode( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.deassert_lpmode(mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn clear_power_fault( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.clear_power_fault(mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn setup_i2c_read( - &mut self, - _msg: &userlib::RecvMessage, - reg: u8, - num_bytes: u8, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - if usize::from(num_bytes) > PAGE_SIZE_BYTES { - return Err(TransceiversError::InvalidNumberOfBytes.into()); - } - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.setup_i2c_read(reg, num_bytes, mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn setup_i2c_write( - &mut self, - _msg: &userlib::RecvMessage, - reg: u8, - num_bytes: u8, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - if usize::from(num_bytes) > PAGE_SIZE_BYTES { - return Err(TransceiversError::InvalidNumberOfBytes.into()); - } - let mask = LogicalPortMask(logical_port_mask); - let result = self.transceivers.setup_i2c_write(reg, num_bytes, mask); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn get_i2c_read_buffer( - &mut self, - _msg: &userlib::RecvMessage, - logical_port: u8, - dest: Leased, - ) -> Result<(), idol_runtime::RequestError> { - if logical_port >= NUM_PORTS { - return Err(TransceiversError::InvalidPortNumber.into()); - } - let port = LogicalPort(logical_port); - - if dest.len() > PAGE_SIZE_BYTES { - return Err(TransceiversError::InvalidNumberOfBytes.into()); - } - - let mut buf = [0u8; PAGE_SIZE_BYTES]; - - self.transceivers - .get_i2c_read_buffer(port, &mut buf[..dest.len()]) - .map_err(TransceiversError::from)?; - - dest.write_range(0..dest.len(), &buf[..dest.len()]) - .map_err(|_| RequestError::Fail(ClientError::WentAway))?; - Ok(()) - } - - fn set_i2c_write_buffer( - &mut self, - _msg: &userlib::RecvMessage, - data: Leased, - ) -> Result<(), idol_runtime::RequestError> { - if data.len() > PAGE_SIZE_BYTES { - return Err(TransceiversError::InvalidNumberOfBytes.into()); - } - - let mut buf = [0u8; PAGE_SIZE_BYTES]; - - data.read_range(0..data.len(), &mut buf[..data.len()]) - .map_err(|_| RequestError::Fail(ClientError::WentAway))?; - - let result = self.transceivers.set_i2c_write_buffer(&buf[..data.len()]); - if result.error().is_empty() { - Ok(()) - } else { - Err(RequestError::from(TransceiversError::FpgaError)) - } - } - - fn set_port_led_on( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - self.set_led_state(LogicalPortMask(logical_port_mask), LedState::On); - Ok(()) - } - - fn set_port_led_off( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - self.set_led_state(LogicalPortMask(logical_port_mask), LedState::Off); - Ok(()) - } - - fn set_port_led_blink( - &mut self, - _msg: &userlib::RecvMessage, - logical_port_mask: u32, - ) -> Result<(), idol_runtime::RequestError> { - self.set_led_state(LogicalPortMask(logical_port_mask), LedState::Blink); - Ok(()) - } - fn set_system_led_on( &mut self, _msg: &userlib::RecvMessage, @@ -674,25 +460,6 @@ impl idl::InOrderTransceiversImpl for ServerImpl { self.set_system_led_state(LedState::Blink); Ok(()) } - - fn set_led_current( - &mut self, - _msg: &userlib::RecvMessage, - value: u8, - ) -> Result<(), idol_runtime::RequestError> { - self.leds - .set_current(value) - .map_err(|_| RequestError::from(TransceiversError::LedI2cError)) - } - - fn set_led_pwm( - &mut self, - _msg: &userlib::RecvMessage, - value: u8, - ) -> Result<(), idol_runtime::RequestError> { - self.leds.set_pwm(value); - Ok(()) - } } impl NotificationHandler for ServerImpl { diff --git a/idl/transceivers.idol b/idl/transceivers.idol index d91abdacb..0497e5aad 100644 --- a/idl/transceivers.idol +++ b/idl/transceivers.idol @@ -11,167 +11,6 @@ Interface( ), ), - "port_enable_power": ( - doc: "Enable the hot swap controller for each port in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "port_disable_power": ( - doc: "Disable the hot swap controller for each port in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "port_assert_reset": ( - doc: "Assert ResetL for each port in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "port_deassert_reset": ( - doc: "Deassert ResetL for each port in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "port_assert_lpmode": ( - doc: "Assert LpMode for each port in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "port_deassert_lpmode": ( - doc: "Deassert LpMode for each port in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "clear_power_fault": ( - doc: "Clear the fault for each port in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "setup_i2c_read": ( - doc: "Setup a read operation over I2C to all modules whose bit is set in the mask", - args: { - "reg": "u8", - "num_bytes": "u8", - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "setup_i2c_write": ( - doc: "Setup a write operation over I2C to all modules whose bit is set in the mask", - args: { - "reg": "u8", - "num_bytes": "u8", - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "get_i2c_read_buffer": ( - doc: "Get up to 128 bytes from the I2C read buffer for a given port number (0 to 31)", - args: { - "logical_port": "u8", - }, - leases: { - "dest": (type: "[u8]", write: true), - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "set_i2c_write_buffer": ( - doc: "Set up to 128 bytes in the I2C write buffer of all modules. Note that these will not be written without a call to setup_i2c_op.", - leases: { - "data": (type: "[u8]", read: true), - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "set_port_led_on": ( - doc: "Turn on the LEDs for each port as set in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "set_port_led_off": ( - doc: "Turn off the LEDs for each port as set in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "set_port_led_blink": ( - doc: "Blink the LEDs for each port as set in the mask", - args: { - "logical_port_mask": "u32", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - "set_system_led_on": ( doc: "Turn on the System LED.", reply: Result( @@ -195,27 +34,5 @@ Interface( err: CLike("TransceiversError"), ), ), - - "set_led_current": ( - doc: "Sets the internal state which is written to the PCA9956B's IREFALL register", - args: { - "value": "u8", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), - - "set_led_pwm": ( - doc: "Sets the internal state which is written to the PCA9956B's PWMx registers", - args: { - "value": "u8", - }, - reply: Result( - ok: "()", - err: CLike("TransceiversError"), - ), - ), } ) diff --git a/task/thermal/src/control.rs b/task/thermal/src/control.rs index 99d923620..0a4d0da79 100644 --- a/task/thermal/src/control.rs +++ b/task/thermal/src/control.rs @@ -226,6 +226,7 @@ pub struct ThermalSensorErrors { } impl ThermalSensorErrors { + #[allow(dead_code)] pub fn is_empty(&self) -> bool { self.next == 0 }