From fe990d7295719be4cff5c1e046654a4b81502de1 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero <eldruin@gmail.com> Date: Sun, 16 Jul 2023 13:43:46 +0200 Subject: [PATCH 1/4] Avoid using deprecated methods --- README.md | 5 ++++- examples/linux.rs | 5 ++++- src/ds323x/configuration.rs | 13 ++++++------- tests/alarms.rs | 4 ++-- tests/datetime.rs | 34 +++++++++++++++++++++++----------- 5 files changed, 39 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 1db3164..8ed15bf 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,10 @@ use linux_embedded_hal::I2cdev; fn main() { let dev = I2cdev::new("/dev/i2c-1").unwrap(); let mut rtc = Ds323x::new_ds3231(dev); - let datetime = NaiveDate::from_ymd(2020, 5, 1).and_hms(19, 59, 58); + let datetime = NaiveDate::from_ymd_opt(2020, 5, 1) + .unwrap() + .and_hms_opt(19, 59, 58) + .unwrap(); rtc.set_datetime(&datetime).unwrap(); // do something else... let time = rtc.time().unwrap(); diff --git a/examples/linux.rs b/examples/linux.rs index d4653fe..2a03071 100644 --- a/examples/linux.rs +++ b/examples/linux.rs @@ -4,7 +4,10 @@ use linux_embedded_hal::I2cdev; fn main() { let dev = I2cdev::new("/dev/i2c-1").unwrap(); let mut rtc = Ds323x::new_ds3231(dev); - let datetime = NaiveDate::from_ymd(2020, 5, 1).and_hms(19, 59, 58); + let datetime = NaiveDate::from_ymd_opt(2020, 5, 1) + .unwrap() + .and_hms_opt(19, 59, 58) + .unwrap(); rtc.set_datetime(&datetime).unwrap(); // do something else... let time = rtc.time().unwrap(); diff --git a/src/ds323x/configuration.rs b/src/ds323x/configuration.rs index edfa965..1a6327e 100644 --- a/src/ds323x/configuration.rs +++ b/src/ds323x/configuration.rs @@ -84,13 +84,12 @@ where /// Set the square-wave output frequency. pub fn set_square_wave_frequency(&mut self, freq: SqWFreq) -> Result<(), Error<CommE, PinE>> { - let new_control; - match freq { - SqWFreq::_1Hz => new_control = self.control & !BitFlags::RS2 & !BitFlags::RS1, - SqWFreq::_1_024Hz => new_control = self.control & !BitFlags::RS2 | BitFlags::RS1, - SqWFreq::_4_096Hz => new_control = self.control | BitFlags::RS2 & !BitFlags::RS1, - SqWFreq::_8_192Hz => new_control = self.control | BitFlags::RS2 | BitFlags::RS1, - } + let new_control = match freq { + SqWFreq::_1Hz => self.control & !BitFlags::RS2 & !BitFlags::RS1, + SqWFreq::_1_024Hz => self.control & !BitFlags::RS2 | BitFlags::RS1, + SqWFreq::_4_096Hz => self.control | BitFlags::RS2 & !BitFlags::RS1, + SqWFreq::_8_192Hz => self.control | BitFlags::RS2 | BitFlags::RS1, + }; self.write_control(new_control) } diff --git a/tests/alarms.rs b/tests/alarms.rs index cbe349d..73224fe 100644 --- a/tests/alarms.rs +++ b/tests/alarms.rs @@ -637,7 +637,7 @@ mod alarm1_day { set_alarm1_hms, ALARM1_SECONDS, [4, 3, 2, AM | 1], - NaiveTime::from_hms(2, 3, 4) + NaiveTime::from_hms_opt(2, 3, 4).unwrap() ); set_alarm_test!( match_hms, @@ -922,7 +922,7 @@ mod alarm2_day { set_alarm2_hm, ALARM2_MINUTES, [3, 2, AM | 1], - NaiveTime::from_hms(2, 3, 0) + NaiveTime::from_hms_opt(2, 3, 0).unwrap() ); set_alarm_test!( match_hm, diff --git a/tests/datetime.rs b/tests/datetime.rs index 620356b..7012575 100644 --- a/tests/datetime.rs +++ b/tests/datetime.rs @@ -1,4 +1,5 @@ use embedded_hal_mock::{i2c::Transaction as I2cTrans, spi::Transaction as SpiTrans}; +use rtcc::NaiveDateTime; mod common; use self::common::{ destroy_ds3231, destroy_ds3232, destroy_ds3234, new_ds3231, new_ds3232, new_ds3234, Register, @@ -8,6 +9,17 @@ use self::common::{ use ds323x::Rtcc; use ds323x::{DateTimeAccess, Error, Hours, NaiveDate, NaiveTime}; +fn new_datetime(y: i32, mo: u32, d: u32, h: u32, min: u32, s: u32) -> NaiveDateTime { + NaiveDate::from_ymd_opt(y, mo, d) + .unwrap() + .and_hms_opt(h, min, s) + .unwrap() +} + +fn new_date(y: i32, mo: u32, d: u32) -> NaiveDate { + NaiveDate::from_ymd_opt(y, mo, d).unwrap() +} + macro_rules! read_set_param_write_two_test { ($name:ident, $method:ident, $value:expr, $register:ident, $binary_value1_read:expr, $bin1:expr, $bin2:expr) => { _set_param_test!( @@ -206,28 +218,28 @@ macro_rules! invalid_dt_test { use super::*; #[test] fn datetime_too_small() { - let dt = NaiveDate::from_ymd(1999, 1, 2).and_hms(3, 4, 5); + let dt = new_datetime(1999, 1, 2, 3, 4, 5); let mut dev = $create_method(&[]); assert_invalid_input_data!(dev.set_datetime(&dt)); $destroy_method(dev); } #[test] fn datetime_too_big() { - let dt = NaiveDate::from_ymd(2101, 1, 2).and_hms(3, 4, 5); + let dt = new_datetime(2101, 1, 2, 3, 4, 5); let mut dev = $create_method(&[]); assert_invalid_input_data!(dev.set_datetime(&dt)); $destroy_method(dev); } #[test] fn date_too_small() { - let d = NaiveDate::from_ymd(1999, 1, 2); + let d = new_date(1999, 1, 2); let mut dev = $create_method(&[]); assert_invalid_input_data!(dev.set_date(&d)); $destroy_method(dev); } #[test] fn date_too_big() { - let d = NaiveDate::from_ymd(2101, 1, 2); + let d = new_date(2101, 1, 2); let mut dev = $create_method(&[]); assert_invalid_input_data!(dev.set_date(&d)); $destroy_method(dev); @@ -255,7 +267,7 @@ macro_rules! dt_test { use super::*; #[test] fn get_datetime() { - let dt = NaiveDate::from_ymd(2018, 8, 13).and_hms(23, 59, 58); + let dt = new_datetime(2018, 8, 13, 23, 59, 58); let mut dev = $create_method(&$mac_trans_read!( SECONDS, [ @@ -275,7 +287,7 @@ macro_rules! dt_test { #[test] fn set_datetime() { - let dt = NaiveDate::from_ymd(2018, 8, 13).and_hms(23, 59, 58); + let dt = new_datetime(2018, 8, 13, 23, 59, 58); let mut dev = $create_method(&$mac_trans_write!( SECONDS, [ @@ -294,7 +306,7 @@ macro_rules! dt_test { #[test] fn get_date() { - let d = NaiveDate::from_ymd(2018, 8, 13); + let d = new_date(2018, 8, 13); let mut dev = $create_method(&$mac_trans_read!( DOM, [0b0001_0011, 0b0000_1000, 0b0001_1000], @@ -306,7 +318,7 @@ macro_rules! dt_test { #[test] fn set_date() { - let d = NaiveDate::from_ymd(2018, 8, 13); + let d = new_date(2018, 8, 13); let mut dev = $create_method(&$mac_trans_write!( DOW, [0b0000_0010, 0b0001_0011, 0b0000_1000, 0b0001_1000] @@ -317,7 +329,7 @@ macro_rules! dt_test { #[test] fn set_date_century() { - let d = NaiveDate::from_ymd(2100, 8, 13); + let d = new_date(2100, 8, 13); let mut dev = $create_method(&$mac_trans_write!( DOW, [0b0000_0110, 0b0001_0011, 0b1000_1000, 0] @@ -328,7 +340,7 @@ macro_rules! dt_test { #[test] fn get_time() { - let t = NaiveTime::from_hms(23, 59, 58); + let t = NaiveTime::from_hms_opt(23, 59, 58).unwrap(); let mut dev = $create_method(&$mac_trans_read!( SECONDS, [0b0101_1000, 0b0101_1001, 0b0010_0011], @@ -340,7 +352,7 @@ macro_rules! dt_test { #[test] fn set_time() { - let t = NaiveTime::from_hms(23, 59, 58); + let t = NaiveTime::from_hms_opt(23, 59, 58).unwrap(); let mut dev = $create_method(&$mac_trans_write!( SECONDS, [0b0101_1000, 0b0101_1001, 0b0010_0011] From f7d48398dc152f46d5a99ba36627ad02e30cec4e Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero <eldruin@gmail.com> Date: Sun, 16 Jul 2023 13:43:59 +0200 Subject: [PATCH 2/4] Update copyright --- LICENSE-MIT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE-MIT b/LICENSE-MIT index 0f6c02d..bf445da 100644 --- a/LICENSE-MIT +++ b/LICENSE-MIT @@ -1,4 +1,4 @@ -Copyright (C) 2018-2022 Diego Barrios Romero +Copyright (C) 2018-2023 Diego Barrios Romero Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From a8b84285700f545ab7c78cdcfe494ee29b8466bf Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero <eldruin@gmail.com> Date: Sun, 16 Jul 2023 13:44:14 +0200 Subject: [PATCH 3/4] Update dependency --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index bc53d2e..6b92d96 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ embedded-hal = "0.2.7" rtcc = "0.3" [dev-dependencies] -embedded-hal-mock = "0.8.0" +embedded-hal-mock = "0.9.0" linux-embedded-hal = "0.3.2" [profile.release] From de0231b958bd670f945fb9f44358989650c0b70a Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero <eldruin@gmail.com> Date: Sun, 16 Jul 2023 13:44:50 +0200 Subject: [PATCH 4/4] Raise MSRV and update CI --- .github/workflows/build.yml | 107 ++++++++++-------------------------- CHANGELOG.md | 3 +- README.md | 2 +- 3 files changed, 32 insertions(+), 80 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index de3e868..4385c96 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,8 +1,5 @@ -on: - push: - pull_request: - name: Build +on: [push, pull_request] env: RUSTFLAGS: '--deny warnings' @@ -13,7 +10,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - rust: [stable, beta, 1.35.0] + rust: [stable, 1.60.0] TARGET: - x86_64-unknown-linux-gnu - x86_64-unknown-linux-musl @@ -26,16 +23,14 @@ jobs: - thumbv7m-none-eabi steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master with: - profile: minimal toolchain: ${{ matrix.rust }} - target: ${{ matrix.TARGET }} - override: true + targets: ${{ matrix.TARGET }} - name: Checkout CI scripts - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: repository: 'eldruin/rust-driver-ci-scripts' ref: 'master' @@ -44,114 +39,70 @@ jobs: - run: ./ci/patch-no-std.sh if: ${{ ! contains(matrix.TARGET, 'x86_64') }} - - name: Build - uses: actions-rs/cargo@v1 - with: - command: build - args: --target=${{ matrix.TARGET }} + - run: cargo build --target=${{ matrix.TARGET }} checks: name: Checks runs-on: ubuntu-latest - strategy: - matrix: - rust: [stable, beta] - TARGET: - - x86_64-unknown-linux-gnu steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@stable with: - profile: minimal - toolchain: ${{ matrix.rust }} - target: ${{ matrix.TARGET }} - override: true + targets: x86_64-unknown-linux-gnu components: rustfmt - - name: Doc - uses: actions-rs/cargo@v1 - with: - command: doc - - - name: Formatting - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --all -- --check + - run: cargo doc + - run: cargo fmt --all -- --check clippy: name: Clippy runs-on: ubuntu-latest - strategy: - matrix: - rust: [1.58.1] - TARGET: - - x86_64-unknown-linux-gnu steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master with: - profile: minimal - toolchain: ${{ matrix.rust }} - target: ${{ matrix.TARGET }} - override: true + toolchain: 1.70.0 + targets: x86_64-unknown-linux-gnu components: clippy - - name: Clippy - uses: actions-rs/clippy-check@v1 - with: - args: --all-targets -- --allow clippy::bool_assert_comparison - token: ${{ secrets.GITHUB_TOKEN }} + - run: cargo clippy --all-targets test: name: Tests runs-on: ubuntu-latest strategy: matrix: - rust: [stable, beta] + rust: [stable] TARGET: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl] steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master with: - profile: minimal toolchain: ${{ matrix.rust }} - target: ${{ matrix.TARGET }} - override: true + targets: ${{ matrix.TARGET }} - name: Test - uses: actions-rs/cargo@v1 - with: - command: test - args: --target=${{ matrix.TARGET }} + run: cargo test --target=${{ matrix.TARGET }} - name: Build examples - uses: actions-rs/cargo@v1 - if: contains(matrix.TARGET, 'x86_64') - with: - command: build - args: --target=${{ matrix.TARGET }} --examples + run: cargo build --target=${{ matrix.TARGET }} --examples coverage: name: Coverage runs-on: ubuntu-latest + container: + image: xd009642/tarpaulin:latest + options: --security-opt seccomp=unconfined steps: - - name: Checkout repository - uses: actions/checkout@v2 - - name: Install stable toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - override: true + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@stable - name: Run cargo-tarpaulin - uses: actions-rs/tarpaulin@v0.1 - with: - args: '--out Lcov -- --test-threads 1' + run: cargo tarpaulin --out Lcov -- --test-threads 1 - name: upload to Coveralls uses: coverallsapp/github-action@master diff --git a/CHANGELOG.md b/CHANGELOG.md index 56599d4..11f8712 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -... +### Changed +- Raised MSRV to version 1.60.0 ## [0.5.0] - 2022-02-21 diff --git a/README.md b/README.md index 8ed15bf..054df82 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [](https://crates.io/crates/ds323x) [](https://docs.rs/ds323x) - + [](https://github.com/eldruin/ds323x-rs/actions?query=workflow%3ABuild) [](https://coveralls.io/r/eldruin/ds323x-rs?branch=master)