MCPcopy Create free account
hub / github.com/FrameworkComputer/framework-system / ccgx_write

Method ccgx_write

framework_lib/src/ccgx/device.rs:249–276  ·  view source on GitHub ↗
(&self, reg: ControlRegisters, data: &[u8])

Source from the content-addressed store, hash-verified

247 }
248
249 fn ccgx_write(&self, reg: ControlRegisters, data: &[u8]) -> EcResult<()> {
250 let addr = reg as u16;
251 trace!(
252 "ccgx_write(reg: {:?}, addr: {}, data.len(): {}",
253 reg,
254 addr,
255 data.len()
256 );
257 let mut data_written = 0;
258
259 while data_written < data.len() {
260 let chunk_len = std::cmp::min(MAX_I2C_CHUNK, data.len());
261 let buffer = &data[data_written..data_written + chunk_len];
262 let offset = addr + data_written as u16;
263
264 let i2c_response = self.i2c_write(offset, buffer)?;
265 if let Err(EcError::DeviceError(err)) = i2c_response.is_successful() {
266 return Err(EcError::DeviceError(format!(
267 "I2C write was not successful: {:?}",
268 err
269 )));
270 }
271
272 data_written += chunk_len;
273 }
274
275 Ok(())
276 }
277
278 pub fn get_silicon_id(&self) -> EcResult<u16> {
279 let data = self.ccgx_read(ControlRegisters::SiliconId, 2)?;

Callers 2

reset_deviceMethod · 0.80
enable_portsMethod · 0.80

Calls 2

i2c_writeMethod · 0.80
is_successfulMethod · 0.80

Tested by

no test coverage detected