Fix TOTP paging

This commit is contained in:
FliegendeWurst 2023-10-12 15:36:56 +02:00
parent 30683b42f0
commit f4d42943af
4 changed files with 30 additions and 23 deletions

View File

@ -4,25 +4,25 @@ use linux_embedded_hal::I2cdev;
const CCS811_ADDR: u8 = 0x5A; // or 0x5B const CCS811_ADDR: u8 = 0x5A; // or 0x5B
const CCS811_STATUS: u8 = 0x00; pub const CCS811_STATUS: u8 = 0x00;
const CCS811_MEAS_MODE: u8 = 0x01; pub const CCS811_MEAS_MODE: u8 = 0x01;
const CCS811_ALG_RESULT_DATA: u8 = 0x02; pub const CCS811_ALG_RESULT_DATA: u8 = 0x02;
const CCS811_RAW_DATA: u8 = 0x03; pub const CCS811_RAW_DATA: u8 = 0x03;
const CCS811_ENV_DATA: u8 = 0x05; pub const CCS811_ENV_DATA: u8 = 0x05;
const CCS811_NTC: u8 = 0x06; pub const CCS811_NTC: u8 = 0x06;
const CCS811_THRESHOLDS: u8 = 0x10; pub const CCS811_THRESHOLDS: u8 = 0x10;
const CCS811_BASELINE: u8 = 0x11; pub const CCS811_BASELINE: u8 = 0x11;
const CCS811_HW_ID: u8 = 0x20; pub const CCS811_HW_ID: u8 = 0x20;
const CCS811_HW_VERSION: u8 = 0x21; pub const CCS811_HW_VERSION: u8 = 0x21;
const CCS811_FW_BOOT_VERSION: u8 = 0x23; pub const CCS811_FW_BOOT_VERSION: u8 = 0x23;
const CCS811_FW_APP_VERSION: u8 = 0x24; pub const CCS811_FW_APP_VERSION: u8 = 0x24;
const CCS811_ERROR_ID: u8 = 0xE0; pub const CCS811_ERROR_ID: u8 = 0xE0;
const CCS811_APP_START: u8 = 0xF4; pub const CCS811_APP_START: u8 = 0xF4;
const CCS811_SW_RESET: u8 = 0xFF; pub const CCS811_SW_RESET: u8 = 0xFF;
struct CCS811 { pub struct CCS811 {
i2c: I2cdev, i2c: I2cdev,
addr: u8, pub addr: u8,
} }
impl CCS811 { impl CCS811 {
@ -79,7 +79,7 @@ impl CCS811 {
} }
} }
enum CCS811DriveMode { pub enum CCS811DriveMode {
Idle = 0, Idle = 0,
EverySecond = 1, EverySecond = 1,
Every10Seconds = 2, Every10Seconds = 2,

View File

@ -3,7 +3,7 @@ use std::{any::Any, fs, ops::Sub, sync::atomic::AtomicBool, time::Duration};
use embedded_graphics::{ use embedded_graphics::{
image::ImageRaw, image::ImageRaw,
mono_font::{ mono_font::{
ascii::{FONT_10X20, FONT_4X6, FONT_5X8, FONT_6X9, FONT_9X15}, ascii::{FONT_4X6, FONT_5X8, FONT_6X9, FONT_9X15},
mapping::StrGlyphMapping, mapping::StrGlyphMapping,
DecorationDimensions, MonoFont, MonoTextStyleBuilder, DecorationDimensions, MonoFont, MonoTextStyleBuilder,
}, },
@ -85,7 +85,7 @@ impl<D: DrawTarget<Color = Rgb565>> Screensaver<D> for Measurements {
} }
impl<D: DrawTarget<Color = Rgb565>> Draw<D> for Measurements { impl<D: DrawTarget<Color = Rgb565>> Draw<D> for Measurements {
fn draw_with_ctx(&self, ctx: &ContextDefault<D>, disp: &mut D, rng: &mut crate::Rng) -> Result<bool, D::Error> { fn draw_with_ctx(&self, ctx: &ContextDefault<D>, disp: &mut D, _rng: &mut crate::Rng) -> Result<bool, D::Error> {
if self.drawn.load(std::sync::atomic::Ordering::Relaxed) { if self.drawn.load(std::sync::atomic::Ordering::Relaxed) {
return Ok(false); return Ok(false);
} }
@ -416,7 +416,7 @@ impl<D: DrawTarget<Color = Rgb565>> Draw<D> for Measurements {
Ok(true) Ok(true)
} }
fn draw(&self, disp: &mut D, rng: &mut crate::Rng) -> Result<bool, <D as DrawTarget>::Error> { fn draw(&self, _disp: &mut D, _rng: &mut crate::Rng) -> Result<bool, <D as DrawTarget>::Error> {
panic!("draw without ctx"); panic!("draw without ctx");
} }

View File

@ -13,7 +13,7 @@ use embedded_graphics::{
}; };
use totp_rs::TOTP; use totp_rs::TOTP;
use crate::{screensaver::Screensaver, Context, ContextDefault, Draw, BLACK}; use crate::{screensaver::Screensaver, Draw, BLACK};
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct Totp { pub struct Totp {
@ -33,6 +33,9 @@ impl Totp {
pub fn next_page(&mut self) { pub fn next_page(&mut self) {
self.page += 1; self.page += 1;
if self.secrets.len() < self.page * 6 {
self.page = 0;
}
} }
} }

View File

@ -405,7 +405,11 @@ fn main_loop(mut disp: Oled, mut ctx: ContextDefault<Oled>) {
} }
pop_last = true; pop_last = true;
}, },
[3, 2] => { [3, 2, 1] => {
enable_pwm().unwrap();
pop_last = true;
},
[3, 2, 3] => {
disable_pwm().unwrap(); disable_pwm().unwrap();
pop_last = true; pop_last = true;
}, },