wrap_function without defined signature
This commit is contained in:
parent
bf4e351514
commit
27f231eba0
14 changed files with 630 additions and 519 deletions
|
@ -1,49 +1,50 @@
|
|||
use crate::{
|
||||
macros::{wrap_clone, wrap_fields, wrap_free},
|
||||
macros::{wrap_clone, wrap_fields, wrap_free, wrap_functions},
|
||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||
};
|
||||
use servicepoint::{Bitmap, BitmapCommand, CompressionCode, Origin, Packet};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
/// Sets a window of pixels to the specified values.
|
||||
///
|
||||
/// The passed [Bitmap] gets consumed.
|
||||
///
|
||||
/// Returns: a new [BitmapCommand] instance.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_bitmap_new(
|
||||
bitmap: NonNull<Bitmap>,
|
||||
origin_x: usize,
|
||||
origin_y: usize,
|
||||
compression: CompressionCode,
|
||||
) -> NonNull<BitmapCommand> {
|
||||
heap_move_nonnull(BitmapCommand {
|
||||
bitmap: unsafe { heap_remove(bitmap) },
|
||||
origin: Origin::new(origin_x, origin_y),
|
||||
compression,
|
||||
})
|
||||
}
|
||||
wrap_functions!(sp_cmd_bitmap;
|
||||
|
||||
/// Move the provided [Bitmap] into a new [BitmapCommand],
|
||||
/// leaving other fields as their default values.
|
||||
///
|
||||
/// Rust equivalent: `BitmapCommand::from(bitmap)`
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_bitmap_from_bitmap(
|
||||
bitmap: NonNull<Bitmap>,
|
||||
) -> NonNull<BitmapCommand> {
|
||||
heap_move_nonnull(unsafe { heap_remove(bitmap) }.into())
|
||||
}
|
||||
/// Sets a window of pixels to the specified values.
|
||||
///
|
||||
/// The passed [Bitmap] gets consumed.
|
||||
///
|
||||
/// Returns: a new [BitmapCommand] instance.
|
||||
fn new(
|
||||
bitmap: NonNull<Bitmap>,
|
||||
origin_x: usize,
|
||||
origin_y: usize,
|
||||
compression: CompressionCode,
|
||||
) -> NonNull<BitmapCommand> {
|
||||
heap_move_nonnull(BitmapCommand {
|
||||
bitmap: unsafe { heap_remove(bitmap) },
|
||||
origin: Origin::new(origin_x, origin_y),
|
||||
compression,
|
||||
})
|
||||
}
|
||||
|
||||
/// Tries to turn a [BitmapCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_bitmap_try_into_packet(
|
||||
command: NonNull<BitmapCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
/// Move the provided [Bitmap] into a new [BitmapCommand],
|
||||
/// leaving other fields as their default values.
|
||||
///
|
||||
/// Rust equivalent: `BitmapCommand::from(bitmap)`
|
||||
fn from_bitmap(
|
||||
bitmap: NonNull<Bitmap>,
|
||||
) -> NonNull<BitmapCommand> {
|
||||
heap_move_nonnull(unsafe { heap_remove(bitmap) }.into())
|
||||
}
|
||||
|
||||
/// Tries to turn a [BitmapCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
fn try_into_packet(
|
||||
command: NonNull<BitmapCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
wrap_clone!(sp_cmd_bitmap::BitmapCommand);
|
||||
wrap_free!(sp_cmd_bitmap::BitmapCommand);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use crate::{
|
||||
macros::{wrap_clone, wrap_fields, wrap_free},
|
||||
macros::{wrap_clone, wrap_fields, wrap_free, wrap_functions},
|
||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||
};
|
||||
use servicepoint::{
|
||||
|
@ -8,42 +8,44 @@ use servicepoint::{
|
|||
};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
/// Set pixel data starting at the pixel offset on screen.
|
||||
///
|
||||
/// The screen will continuously overwrite more pixel data without regarding the offset, meaning
|
||||
/// once the starting row is full, overwriting will continue on column 0.
|
||||
///
|
||||
/// The [`BinaryOperation`] will be applied on the display comparing old and sent bit.
|
||||
///
|
||||
/// `new_bit = old_bit op sent_bit`
|
||||
///
|
||||
/// For example, [`BinaryOperation::Or`] can be used to turn on some pixels without affecting other pixels.
|
||||
///
|
||||
/// The contained [`DisplayBitVec`] is always uncompressed.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_bitvec_new(
|
||||
bitvec: NonNull<DisplayBitVec>,
|
||||
offset: usize,
|
||||
operation: BinaryOperation,
|
||||
compression: CompressionCode,
|
||||
) -> NonNull<BitVecCommand> {
|
||||
heap_move_nonnull(BitVecCommand {
|
||||
bitvec: unsafe { heap_remove(bitvec) },
|
||||
offset,
|
||||
operation,
|
||||
compression,
|
||||
})
|
||||
}
|
||||
wrap_functions!(sp_cmd_bitvec;
|
||||
|
||||
/// Tries to turn a [BitVecCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_bitvec_try_into_packet(
|
||||
command: NonNull<BitVecCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
/// Set pixel data starting at the pixel offset on screen.
|
||||
///
|
||||
/// The screen will continuously overwrite more pixel data without regarding the offset, meaning
|
||||
/// once the starting row is full, overwriting will continue on column 0.
|
||||
///
|
||||
/// The [`BinaryOperation`] will be applied on the display comparing old and sent bit.
|
||||
///
|
||||
/// `new_bit = old_bit op sent_bit`
|
||||
///
|
||||
/// For example, [`BinaryOperation::Or`] can be used to turn on some pixels without affecting other pixels.
|
||||
///
|
||||
/// The contained [`DisplayBitVec`] is always uncompressed.
|
||||
fn new(
|
||||
bitvec: NonNull<DisplayBitVec>,
|
||||
offset: usize,
|
||||
operation: BinaryOperation,
|
||||
compression: CompressionCode,
|
||||
) -> NonNull<BitVecCommand> {
|
||||
heap_move_nonnull(BitVecCommand {
|
||||
bitvec: unsafe { heap_remove(bitvec) },
|
||||
offset,
|
||||
operation,
|
||||
compression,
|
||||
})
|
||||
}
|
||||
|
||||
/// Tries to turn a [BitVecCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
fn try_into_packet(
|
||||
command: NonNull<BitVecCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
wrap_clone!(sp_cmd_bitvec::BitVecCommand);
|
||||
wrap_free!(sp_cmd_bitvec::BitVecCommand);
|
||||
|
|
|
@ -1,45 +1,46 @@
|
|||
use crate::{
|
||||
macros::{wrap_clone, wrap_free},
|
||||
macros::{wrap_clone, wrap_free, wrap_functions},
|
||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||
};
|
||||
use servicepoint::{BrightnessGrid, BrightnessGridCommand, Origin, Packet};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
/// Set the brightness of individual tiles in a rectangular area of the display.
|
||||
///
|
||||
/// The passed [BrightnessGrid] gets consumed.
|
||||
///
|
||||
/// Returns: a new [BrightnessGridCommand] instance.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_brightness_grid_new(
|
||||
grid: NonNull<BrightnessGrid>,
|
||||
origin_x: usize,
|
||||
origin_y: usize,
|
||||
) -> NonNull<BrightnessGridCommand> {
|
||||
heap_move_nonnull(BrightnessGridCommand {
|
||||
grid: unsafe { heap_remove(grid) },
|
||||
origin: Origin::new(origin_x, origin_y),
|
||||
})
|
||||
}
|
||||
wrap_functions!(sp_cmd_brightness_grid;
|
||||
|
||||
/// Moves the provided [BrightnessGrid] into a new [BrightnessGridCommand],
|
||||
/// leaving other fields as their default values.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_brightness_grid_from_grid(
|
||||
grid: NonNull<BrightnessGrid>,
|
||||
) -> NonNull<BrightnessGridCommand> {
|
||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||
}
|
||||
/// Set the brightness of individual tiles in a rectangular area of the display.
|
||||
///
|
||||
/// The passed [BrightnessGrid] gets consumed.
|
||||
///
|
||||
/// Returns: a new [BrightnessGridCommand] instance.
|
||||
fn new(
|
||||
grid: NonNull<BrightnessGrid>,
|
||||
origin_x: usize,
|
||||
origin_y: usize,
|
||||
) -> NonNull<BrightnessGridCommand> {
|
||||
heap_move_nonnull(BrightnessGridCommand {
|
||||
grid: unsafe { heap_remove(grid) },
|
||||
origin: Origin::new(origin_x, origin_y),
|
||||
})
|
||||
}
|
||||
|
||||
/// Tries to turn a [BrightnessGridCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_brightness_grid_into_packet(
|
||||
command: NonNull<BrightnessGridCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
/// Moves the provided [BrightnessGrid] into a new [BrightnessGridCommand],
|
||||
/// leaving other fields as their default values.
|
||||
fn from_grid(
|
||||
grid: NonNull<BrightnessGrid>,
|
||||
) -> NonNull<BrightnessGridCommand> {
|
||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||
}
|
||||
|
||||
/// Tries to turn a [BrightnessGridCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
fn into_packet(
|
||||
command: NonNull<BrightnessGridCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
wrap_clone!(sp_cmd_brightness_grid::BrightnessGridCommand);
|
||||
wrap_free!(sp_cmd_brightness_grid::BrightnessGridCommand);
|
||||
|
|
|
@ -1,37 +1,43 @@
|
|||
use crate::{macros::wrap_free, mem::heap_move_nonnull};
|
||||
use crate::{
|
||||
macros::{wrap_free, wrap_functions},
|
||||
mem::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)
|
||||
}
|
||||
wrap_functions!(sp_cmd_clear;
|
||||
/// Set all pixels to the off state.
|
||||
///
|
||||
/// Does not affect brightness.
|
||||
///
|
||||
/// Returns: a new [ClearCommand] instance.
|
||||
fn new() -> NonNull<ClearCommand> {
|
||||
heap_move_nonnull(ClearCommand)
|
||||
}
|
||||
);
|
||||
|
||||
wrap_free!(sp_cmd_clear::ClearCommand);
|
||||
|
||||
/// 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)
|
||||
}
|
||||
wrap_functions!(sp_cmd_hard_reset;
|
||||
/// 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.
|
||||
fn new() -> NonNull<HardResetCommand> {
|
||||
heap_move_nonnull(HardResetCommand)
|
||||
}
|
||||
);
|
||||
|
||||
wrap_free!(sp_cmd_hard_reset::HardResetCommand);
|
||||
|
||||
/// 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)
|
||||
}
|
||||
wrap_functions!(sp_cmd_fade_out;
|
||||
/// A yet-to-be-tested command.
|
||||
///
|
||||
/// Returns: a new [FadeOutCommand] instance.
|
||||
fn new() -> NonNull<FadeOutCommand> {
|
||||
heap_move_nonnull(FadeOutCommand)
|
||||
}
|
||||
);
|
||||
|
||||
wrap_free!(sp_cmd_fade_out::FadeOutCommand);
|
||||
|
|
|
@ -1,45 +1,46 @@
|
|||
use crate::{
|
||||
macros::{wrap_clone, wrap_free},
|
||||
macros::{wrap_clone, wrap_free, wrap_functions},
|
||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||
};
|
||||
use servicepoint::{CharGrid, CharGridCommand, Origin, Packet};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
/// Show UTF-8 encoded text on the screen.
|
||||
///
|
||||
/// The passed [CharGrid] gets consumed.
|
||||
///
|
||||
/// Returns: a new [CharGridCommand] instance.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_char_grid_new(
|
||||
grid: NonNull<CharGrid>,
|
||||
origin_x: usize,
|
||||
origin_y: usize,
|
||||
) -> NonNull<CharGridCommand> {
|
||||
heap_move_nonnull(CharGridCommand {
|
||||
grid: unsafe { heap_remove(grid) },
|
||||
origin: Origin::new(origin_x, origin_y),
|
||||
})
|
||||
}
|
||||
wrap_functions!(sp_cmd_char_grid;
|
||||
|
||||
/// Moves the provided [CharGrid] into a new [CharGridCommand],
|
||||
/// leaving other fields as their default values.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_char_grid_from_grid(
|
||||
grid: NonNull<CharGrid>,
|
||||
) -> NonNull<CharGridCommand> {
|
||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||
}
|
||||
/// Show UTF-8 encoded text on the screen.
|
||||
///
|
||||
/// The passed [CharGrid] gets consumed.
|
||||
///
|
||||
/// Returns: a new [CharGridCommand] instance.
|
||||
fn new(
|
||||
grid: NonNull<CharGrid>,
|
||||
origin_x: usize,
|
||||
origin_y: usize,
|
||||
) -> NonNull<CharGridCommand> {
|
||||
heap_move_nonnull(CharGridCommand {
|
||||
grid: unsafe { heap_remove(grid) },
|
||||
origin: Origin::new(origin_x, origin_y),
|
||||
})
|
||||
}
|
||||
|
||||
/// Tries to turn a [CharGridCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_char_grid_try_into_packet(
|
||||
command: NonNull<CharGridCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
/// Moves the provided [CharGrid] into a new [CharGridCommand],
|
||||
/// leaving other fields as their default values.
|
||||
fn from_grid(
|
||||
grid: NonNull<CharGrid>,
|
||||
) -> NonNull<CharGridCommand> {
|
||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||
}
|
||||
|
||||
/// Tries to turn a [CharGridCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
fn try_into_packet(
|
||||
command: NonNull<CharGridCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
wrap_clone!(sp_cmd_char_grid::CharGridCommand);
|
||||
wrap_free!(sp_cmd_char_grid::CharGridCommand);
|
||||
|
@ -59,8 +60,8 @@ pub unsafe extern "C" fn sp_cmd_char_grid_set(
|
|||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_char_grid_get(
|
||||
mut command: NonNull<CharGridCommand>,
|
||||
) -> *mut CharGrid {
|
||||
unsafe { &mut command.as_mut().grid }
|
||||
) -> NonNull<CharGrid> {
|
||||
unsafe { NonNull::from(&mut command.as_mut().grid) }
|
||||
}
|
||||
|
||||
/// Reads the origin field of the [CharGridCommand].
|
||||
|
|
|
@ -1,45 +1,46 @@
|
|||
use crate::{
|
||||
macros::{wrap_clone, wrap_free},
|
||||
macros::{wrap_clone, wrap_free, wrap_functions},
|
||||
mem::{heap_move_nonnull, heap_move_ok, heap_remove},
|
||||
};
|
||||
use servicepoint::{Cp437Grid, Cp437GridCommand, Origin, Packet};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
/// Show text on the screen.
|
||||
///
|
||||
/// The text is sent in the form of a 2D grid of [CP-437] encoded characters.
|
||||
///
|
||||
/// The origin is relative to the top-left of the display.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_cp437_grid_new(
|
||||
grid: NonNull<Cp437Grid>,
|
||||
origin_x: usize,
|
||||
origin_y: usize,
|
||||
) -> NonNull<Cp437GridCommand> {
|
||||
heap_move_nonnull(Cp437GridCommand {
|
||||
grid: unsafe { heap_remove(grid) },
|
||||
origin: Origin::new(origin_x, origin_y),
|
||||
})
|
||||
}
|
||||
wrap_functions!(sp_cmd_cp437_grid;
|
||||
|
||||
/// Moves the provided [Cp437Grid] into a new [Cp437GridCommand],
|
||||
/// leaving other fields as their default values.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_cp437_grid_from_grid(
|
||||
grid: NonNull<Cp437Grid>,
|
||||
) -> NonNull<Cp437GridCommand> {
|
||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||
}
|
||||
/// Show text on the screen.
|
||||
///
|
||||
/// The text is sent in the form of a 2D grid of [CP-437] encoded characters.
|
||||
///
|
||||
/// The origin is relative to the top-left of the display.
|
||||
fn new(
|
||||
grid: NonNull<Cp437Grid>,
|
||||
origin_x: usize,
|
||||
origin_y: usize,
|
||||
) -> NonNull<Cp437GridCommand> {
|
||||
heap_move_nonnull(Cp437GridCommand {
|
||||
grid: unsafe { heap_remove(grid) },
|
||||
origin: Origin::new(origin_x, origin_y),
|
||||
})
|
||||
}
|
||||
|
||||
/// Tries to turn a [Cp437GridCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_cp437_grid_try_into_packet(
|
||||
command: NonNull<Cp437GridCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
/// Moves the provided [Cp437Grid] into a new [Cp437GridCommand],
|
||||
/// leaving other fields as their default values.
|
||||
fn from_grid(
|
||||
grid: NonNull<Cp437Grid>,
|
||||
) -> NonNull<Cp437GridCommand> {
|
||||
heap_move_nonnull(unsafe { heap_remove(grid) }.into())
|
||||
}
|
||||
|
||||
/// Tries to turn a [Cp437GridCommand] into a [Packet].
|
||||
///
|
||||
/// Returns: NULL or a [Packet] containing the command.
|
||||
fn try_into_packet(
|
||||
command: NonNull<Cp437GridCommand>,
|
||||
) -> *mut Packet {
|
||||
heap_move_ok(unsafe { heap_remove(command) }.try_into())
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
wrap_clone!(sp_cmd_cp437_grid::Cp437GridCommand);
|
||||
wrap_free!(sp_cmd_cp437_grid::Cp437GridCommand);
|
||||
|
|
|
@ -1,26 +1,25 @@
|
|||
use crate::{
|
||||
macros::{wrap_clone, wrap_fields, wrap_free},
|
||||
macros::{wrap_clone, wrap_fields, wrap_free, wrap_functions},
|
||||
mem::{heap_move_nonnull, heap_remove},
|
||||
};
|
||||
use servicepoint::{Brightness, GlobalBrightnessCommand, Packet};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
/// Set the brightness of all tiles to the same value.
|
||||
///
|
||||
/// Returns: a new [GlobalBrightnessCommand] instance.
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_brightness_global_new(
|
||||
brightness: Brightness,
|
||||
) -> NonNull<GlobalBrightnessCommand> {
|
||||
heap_move_nonnull(GlobalBrightnessCommand::from(brightness))
|
||||
}
|
||||
wrap_functions!(sp_cmd_brightness_global;
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn sp_cmd_brightness_global_into_packet(
|
||||
command: NonNull<GlobalBrightnessCommand>,
|
||||
) -> NonNull<Packet> {
|
||||
heap_move_nonnull(unsafe { heap_remove(command) }.into())
|
||||
}
|
||||
/// Set the brightness of all tiles to the same value.
|
||||
///
|
||||
/// Returns: a new [GlobalBrightnessCommand] instance.
|
||||
fn new(brightness: Brightness) -> NonNull<GlobalBrightnessCommand> {
|
||||
heap_move_nonnull(GlobalBrightnessCommand::from(brightness))
|
||||
}
|
||||
|
||||
/// Turns the command into a packet
|
||||
fn into_packet(command: NonNull<GlobalBrightnessCommand>) -> NonNull<Packet> {
|
||||
heap_move_nonnull(unsafe { heap_remove(command) }.into())
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
wrap_clone!(sp_cmd_brightness_global::GlobalBrightnessCommand);
|
||||
wrap_free!(sp_cmd_brightness_global::GlobalBrightnessCommand);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue