diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 24734a2..d966c6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,3 +117,36 @@ jobs: override: true - name: Build run: cargo build --release + + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Install Linux build dependencies + shell: bash + run: | + apt-get update && apt-get install sudo + sudo apt update -y -qq && sudo apt install -y -qq llvm libc6-dev-i386 libclang-dev build-essential clang + - uses: fiam/arm-none-eabi-gcc@v1.0.4 + with: + release: "9-2020-q2" + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: "1.94" + target: thumbv8m.main-none-eabi + override: true + components: rustfmt, clippy + - name: cargo fmt --check + run: cargo fmt --all --check + - name: cargo clippy (host) + run: cargo clippy --all-targets -- -D warnings + - name: cargo clippy (lpc55, board-lpcxpresso55) + working-directory: runners/lpc55 + run: cargo clippy --release --features board-lpcxpresso55 + - name: cargo clippy (lpc55, board-solo2) + working-directory: runners/lpc55 + run: cargo clippy --release --features board-solo2 + - name: cargo clippy (lpc55, provisioner) + working-directory: runners/lpc55 + run: cargo clippy --release --features board-lpcxpresso55,provisioner-app,admin-app,provisioner-app/test-attestation diff --git a/components/fm11nc08/src/device.rs b/components/fm11nc08/src/device.rs index 73aba77..b08e13b 100644 --- a/components/fm11nc08/src/device.rs +++ b/components/fm11nc08/src/device.rs @@ -1,13 +1,13 @@ use nb::block; -use embedded_time::duration::{Extensions, Microseconds}; use embedded_hal as hal; +use embedded_time::duration::{Extensions, Microseconds}; use defmt::info; use hal::{ - spi::FullDuplex, digital::v2::{InputPin, OutputPin}, + spi::FullDuplex, timer::CountDown, }; @@ -61,19 +61,15 @@ pub enum FifoInterrupt { WaterLevel = 1 << 3, } - - macro_rules! FM11_CMD { ($mode:expr, $addr:expr) => { match $mode { - Mode::WriteEeprom | Mode::ReadEeprom=> { - (( ($mode as u8) & 0x07) << 5) | (((($addr as u16) & 0x300) >> 8) as u8) - } - _ => { - (( ($mode as u8) & 0x07) << 5) | (($addr as u8) & 0x0f) + Mode::WriteEeprom | Mode::ReadEeprom => { + ((($mode as u8) & 0x07) << 5) | (((($addr as u16) & 0x300) >> 8) as u8) } + _ => ((($mode as u8) & 0x07) << 5) | (($addr as u8) & 0x0f), } - } + }; } pub struct Configuration { @@ -89,7 +85,7 @@ pub struct Configuration { pub nfc: u8, } -pub struct FM11NC08 +pub struct FM11NC08 where SPI: FullDuplex, CS: OutputPin, @@ -117,8 +113,7 @@ fn fsdi_to_frame_size(fsdi: u8) -> usize { } } - -impl FM11NC08 +impl FM11NC08 where SPI: FullDuplex, CS: OutputPin, @@ -126,9 +121,9 @@ where { pub fn new(spi: SPI, cs: CS, int: INT) -> Self { Self { - spi: spi, - cs: cs, - int: int, + spi, + cs, + int, packet: [0u8; 256], offset: 0usize, current_frame_size: 128, @@ -138,11 +133,11 @@ where pub fn write_reg(&mut self, addr: Register, data: u8) { self.cs.set_low().ok(); - block!( self.spi.send(FM11_CMD!(Mode::Write, addr)) ).ok(); - block!( self.spi.send(data) ).ok(); + block!(self.spi.send(FM11_CMD!(Mode::Write, addr))).ok(); + block!(self.spi.send(data)).ok(); - block!( self.spi.read() ).ok(); - block!( self.spi.read() ).ok(); + block!(self.spi.read()).ok(); + block!(self.spi.read()).ok(); self.cs.set_high().ok(); } @@ -150,11 +145,11 @@ where pub fn read_reg(&mut self, addr: Register) -> u8 { self.cs.set_low().ok(); - block!( self.spi.send(FM11_CMD!(Mode::Read, addr)) ).ok(); - block!( self.spi.send(0) ).ok(); + block!(self.spi.send(FM11_CMD!(Mode::Read, addr))).ok(); + block!(self.spi.send(0)).ok(); - block!( self.spi.read() ).ok(); - let data = block!( self.spi.read() ).ok().unwrap(); + block!(self.spi.read()).ok(); + let data = block!(self.spi.read()).ok().unwrap(); self.cs.set_high().ok(); @@ -164,45 +159,47 @@ where pub fn read_reg_raw(&mut self, addr: u8) -> u8 { self.cs.set_low().ok(); - block!( self.spi.send(FM11_CMD!(Mode::Read, addr)) ).ok(); - block!( self.spi.send(0) ).ok(); + block!(self.spi.send(FM11_CMD!(Mode::Read, addr))).ok(); + block!(self.spi.send(0)).ok(); - block!( self.spi.read() ).ok(); - let data = block!( self.spi.read() ).ok().unwrap(); + block!(self.spi.read()).ok(); + let data = block!(self.spi.read()).ok().unwrap(); self.cs.set_high().ok(); data } - - - fn start_write(&mut self, addr: u16){ - - let cmd : u8 = FM11_CMD!(Mode::WriteEeprom, addr); + fn start_write(&mut self, addr: u16) { + let cmd: u8 = FM11_CMD!(Mode::WriteEeprom, addr); self.cs.set_low().ok(); // Write EEPROM magic enable sequence - block!( self.spi.send( 0b11001110u8 )).ok(); - block!( self.spi.send( 0b01010101u8 )).ok(); + block!(self.spi.send(0b11001110u8)).ok(); + block!(self.spi.send(0b01010101u8)).ok(); - for _ in 0 .. 2 { block!( self.spi.read( )).ok().unwrap(); } + for _ in 0..2 { + block!(self.spi.read()).ok().unwrap(); + } self.cs.set_high().ok(); self.cs.set_low().ok(); - block!( self.spi.send( cmd )).ok(); - block!( self.spi.send( addr as u8)).ok(); + block!(self.spi.send(cmd)).ok(); + block!(self.spi.send(addr as u8)).ok(); - for _ in 0 .. 2 { block!( self.spi.read( )).ok().unwrap(); } + for _ in 0..2 { + block!(self.spi.read()).ok().unwrap(); + } } - fn end_write(&mut self, timer: &mut impl CountDown) -> Result<(),()> { + fn end_write(&mut self, timer: &mut impl CountDown