Skip to content

Latest commit

 

History

History
235 lines (161 loc) · 7.14 KB

CHANGELOG.md

File metadata and controls

235 lines (161 loc) · 7.14 KB

Changelog

All notable changes to the crates in this workspace will be documented in this file.

The format is based on Keep a Changelog.

Added

  • flipperzero::gpio::i2c, providing a Rust interface to the external 3.3V I2C bus over GPIO pins C0 and C1, as well as the internal (power) I2C bus.
  • flipperzero::furi::string::FuriString::into_raw, allowing ownership of the string to be able to be handed over to C code.

Changed

  • Migrated to SDK 62.3 (firmware 0.102.3).
  • Bumped pinned nightly Rust version to nightly-2024-04-17.
  • flipperzero_rt::entry macro now requires a function with type signature fn(Option<&CStr>) -> i32 instead of fn(*mut u8) -> i32.
  • flipperzero::furi::string::FuriString::as_mut_ptr is now public to allow for it to be used with low-level C APIs (e.g. furi_string_printf).

Removed

  • flipperzero::toolbox::{Md5, Sha256} (due to their removal from the Flipper Zero SDK API).
  • flipperzero_sys::c_string!, since CStr literals are stable now and the macro did not provide any validations.

Added

  • flipperzero::furi::time::{Duration, Instant} implementations.
  • impl Default for flipperzero::dialogs::DialogMessage
  • impl Default for flipperzero::toolbox::Crc32

Changed

  • Migrated to SDK API 35.0 (firmware 0.89.0).
  • flipperzero_test::tests now allows #[cfg(..)] attributes on test methods.

Documentation

  • Feature flags are now documented and the items guarded by them are now annotated.

Added

  • flipperzero::format macro.
  • flipperzero::furi::sync::FuriMutex
  • flipperzero::furi::time, containing the currently unusable placeholder types Duration and Instant.

Changed

  • Migrated to SDK API 28.2 (firmware 0.84.1).
  • flipperzero::furi::sync has been rewritten using the lock_api crate.
    • Mutex<T> is now a type alias for lock_api::Mutex<FuriMutex, T>.
    • MutexGuard<'a, T> is now a type alias for lock_api::MutexGuard<'a, FuriMutex, T>.
  • flipperzero::{print, println} macros now panic if they cannot write to stdout.

Added

  • flipperzero::{log, error, warn, info, debug, trace} logging macros.
  • flipperzero::furi::log, providing the Level and LevelFilter types for use with the logging macros.
  • flipperzero::furi::rng, providing the HwRng type compatible with the rand crate.
  • flipperzero::furi::string, providing the FuriString type that implements a CString-like string with a String-like API.
  • In flipperzero::furi::thread:
    • Builder, Thread, ThreadId, JoinHandle
    • spawn, current, yield_now
  • In flipperzero::io:
    • Error::description
    • impl ufmt::uDisplay for Error
  • flipperzero::notification, providing constants for standard notification sequences, and APIs for running them.
  • flipperzero::toolbox, providing wrapper types around several tools from the Flipper Zero SDK.
  • flipperzero-test crate, providing a test harness for running tests directly on a Flipper Zero.

Changed

  • Migrated to SDK API 23.0 (firmware 0.82.3).
  • MSRV is now 1.70.
  • Bumped pinned nightly Rust version to nightly-2023-05-03.
  • flipperzero_rt::entry! now waits for threads with the same app ID to finish. This prevents crashes when a JoinHandle is dropped instead of joined, and would outlive the main function.

Added

  • flipperzero::io, providing Read, Write, Seek traits similar to the ones in std::io.
  • flipperzero::storage, providing OpenOptions and File structs similar to the ones in std::fs.
  • impl ufmt::{uDebug, uDisplay} for flipperzero_sys::furi::Status

Changed

  • Migrated to SDK API 20.0 (firmware 0.80.1).
  • MSRV is now 1.64.
  • Bumped pinned nightly Rust version to nightly-2023-03-10.
  • flipperzero::{print, println} macros now use the ufmt crate, and are restricted to its supported argument syntax.

Fixed

  • Removed unintended prefix from all bindings documentation.

Added

  • flipperzero::dolphin, providing types for interacting with the dolphin.

Changed

  • flipperzero_sys bindings documentation is now transformed from Doxygen.

Changed

  • Migrated to SDK API 14.0 (firmware 0.77.1).

Added

  • flipperzero/alloc feature flag.
  • flipperzero::dialogs, providing the DialogsApp and DialogMessage types for creating simple dialogs.
  • flipperzero::gui::canvas:Align enum, used by DialogMessage.
  • flipperzero_sys::furi::UnsafeRecord
  • Inline functions required to use the Furi HAL GPIO interface.

Changed

  • Migrated to SDK API 11.2 (firmware 0.74.2).
  • Macros now allow trailing commas.

Changed

  • Migrated to SDK API 10.1 (firmware 0.73.1).

Added

  • Custom icon support to flipperzero_rt::manifest! macro.

Changed

  • Migrated to SDK API 7.5 (firmware 0.71.1).
  • flipperzero_rt::manifest::ManifestBase fields api_version_major and api_version_minor have been combined into an api_version field.

Fixed

  • flipperzero-sys bindings now use short enums as required.

Added

  • flipperzero-rt crate, enabling standalone app binaries to be built.

Changed

  • Hand-written bindings are replaced by generated bindings from SDK API 2.2 (firmware 0.69).

Removed

  • flipperzero::panic_handler (moved to flipperzero_rt::panic_handler).

Added

  • flipperzero::{print, println} macros.
  • flipperzero::furi::{message_queue, sync} modules.
  • flipperzero::furi::{Result, Error} type aliases.
  • flipperzero-alloc crate, providing global allocator support.
  • flipperzero-sys crate has more hand-written bindings.

Changed

  • MSRV is now 1.64.
  • flipperzero::furi::Stdout moved into flipperzero::furi::io module.
  • flipperzero::furi::sleep moved into flipperzero::furi::thread module.

Initial release!