Skip to content

Commit

Permalink
remove length from read_raw return value, fix metadata check
Browse files Browse the repository at this point in the history
  • Loading branch information
Univa committed Dec 23, 2024
1 parent f083bc2 commit d73468f
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 16 deletions.
6 changes: 3 additions & 3 deletions rumcake/src/storage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ where
.await
{
(Ok(_), Some(buf), len) => {
let changed = current_metadata.len() != len || *current_metadata != *buf;
let changed = *current_metadata != buf[..len];
if changed {
warn!(
"[STORAGE] Metadata for {} has changed.",
Expand Down Expand Up @@ -238,7 +238,7 @@ where

/// Read data from the storage peripheral, using the given key to look it up. This skips the
/// deserialization step, returning raw bytes.
pub async fn read_raw(&self, key: StorageKey) -> Result<(&[u8], usize), ()> {
pub async fn read_raw(&self, key: StorageKey) -> Result<&[u8], ()> {
let mut database = self.get_database().await;
let buffer = S::get_storage_buffer();

Expand All @@ -262,7 +262,7 @@ where
Debug2Format(&error)
);
})
.map(|_code| (&*buf.unwrap(), len))
.map(|_code| &buf.unwrap()[..len])
}

/// Write data to the storage peripheral, at the given key. This will serialize the given data
Expand Down
15 changes: 8 additions & 7 deletions rumcake/src/via/handlers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,8 @@ pub async fn dynamic_keymap_macro_set_buffer<K: ViaKeyboard + 'static>(

// Read data
let stored_len = match database.read_raw(StorageKey::DynamicKeymapMacro).await {
Ok((stored_data, stored_len)) => {
Ok(stored_data) => {
let stored_len = stored_data.len();
buf[..stored_len].copy_from_slice(stored_data);
stored_len
}
Expand Down Expand Up @@ -276,8 +277,8 @@ pub async fn dynamic_keymap_set_keycode<K: ViaKeyboard + 'static>(

// Read data
match database.read_raw(StorageKey::DynamicKeymap).await {
Ok((stored_data, stored_len)) => {
buf[..stored_len].copy_from_slice(stored_data);
Ok(stored_data) => {
buf[..stored_data.len()].copy_from_slice(stored_data);
}
Err(()) => {
warn!("[VIA] Could not read dynamic keymap buffer.");
Expand Down Expand Up @@ -342,8 +343,8 @@ pub async fn dynamic_keymap_set_encoder<K: ViaKeyboard + 'static>(

// Read data
match database.read_raw(StorageKey::DynamicKeymapEncoder).await {
Ok((stored_data, stored_len)) => {
buf[..stored_len].copy_from_slice(stored_data);
Ok(stored_data) => {
buf[..stored_data.len()].copy_from_slice(stored_data);
}
Err(()) => {
warn!("[VIA] Could not read dynamic keymap encoder.");
Expand Down Expand Up @@ -470,8 +471,8 @@ pub async fn dynamic_keymap_set_buffer<K: ViaKeyboard + 'static>(

// Read data
match database.read_raw(StorageKey::DynamicKeymap).await {
Ok((stored_data, stored_len)) => {
buf[..stored_len].copy_from_slice(stored_data);
Ok(stored_data) => {
buf[..stored_data.len()].copy_from_slice(stored_data);
}
Err(()) => {
warn!("[VIA] Could not read dynamic keymap buffer.");
Expand Down
12 changes: 6 additions & 6 deletions rumcake/src/via/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -244,12 +244,12 @@ where
let _ = database
.check_metadata(crate::storage::StorageKey::LayoutOptions, &options_metadata)
.await;
if let Ok((stored_data, stored_len)) = database
if let Ok(stored_data) = database
.read_raw(crate::storage::StorageKey::LayoutOptions)
.await
{
let mut bytes = [0; 4];
bytes[(4 - stored_len)..].copy_from_slice(&stored_data[..stored_len]);
bytes[(4 - stored_data.len())..].copy_from_slice(stored_data);
VIA_LAYOUT_OPTIONS.signal(u32::from_be_bytes(bytes))
};

Expand All @@ -262,13 +262,13 @@ where
let _ = database
.check_metadata(crate::storage::StorageKey::DynamicKeymap, &layout_metadata)
.await;
if let Ok((stored_data, stored_len)) = database
if let Ok(stored_data) = database
.read_raw(crate::storage::StorageKey::DynamicKeymap)
.await
{
// Load layout from flash
let mut layout = V::Layout::get_layout().layout.lock().await;
for byte in (0..stored_len).step_by(2) {
for byte in (0..stored_data.len()).step_by(2) {
if let Some(action) = protocol::keycodes::convert_keycode_to_action::<V>(
u16::from_be_bytes(stored_data[byte..byte + 2].try_into().unwrap()),
) {
Expand Down Expand Up @@ -322,12 +322,12 @@ where
&layout_metadata,
)
.await;
if let Ok((stored_data, stored_len)) = database
if let Ok(stored_data) = database
.read_raw(crate::storage::StorageKey::DynamicKeymapMacro)
.await
{
if let Some(macro_data) = V::get_macro_buffer() {
macro_data.update_buffer(0, &stored_data[..stored_len])
macro_data.update_buffer(0, stored_data)
}
};
}
Expand Down

0 comments on commit d73468f

Please sign in to comment.