use crate::mem::{heap_drop, heap_move_nonnull}; use servicepoint::{ClearCommand, FadeOutCommand, HardResetCommand}; use std::ptr::NonNull; /// Set all pixels to the off state. /// /// Does not affect brightness. /// /// Returns: a new [ClearCommand] instance. #[no_mangle] pub unsafe extern "C" fn sp_cmd_clear_new() -> NonNull<ClearCommand> { heap_move_nonnull(ClearCommand) } /// Deallocates a [ClearCommand]. #[no_mangle] pub unsafe extern "C" fn sp_cmd_clear_free(command: NonNull<ClearCommand>) { unsafe { heap_drop(command) } } /// Kills the udp daemon on the display, which usually results in a restart. /// /// Please do not send this in your normal program flow. /// /// Returns: a new [HardResetCommand] instance. #[no_mangle] pub unsafe extern "C" fn sp_cmd_hard_reset_new() -> NonNull<HardResetCommand> { heap_move_nonnull(HardResetCommand) } /// Deallocates a [HardResetCommand]. #[no_mangle] pub unsafe extern "C" fn sp_cmd_hard_reset_free( command: NonNull<ClearCommand>, ) { unsafe { heap_drop(command) } } /// A yet-to-be-tested command. /// /// Returns: a new [FadeOutCommand] instance. #[no_mangle] pub unsafe extern "C" fn sp_cmd_fade_out_new() -> NonNull<FadeOutCommand> { heap_move_nonnull(FadeOutCommand) } /// Deallocates a [FadeOutCommand]. #[no_mangle] pub unsafe extern "C" fn sp_cmd_fade_out_free(command: NonNull<ClearCommand>) { unsafe { heap_drop(command) } }