//! C API wrapper for the [servicepoint](https://docs.rs/servicepoint/latest/servicepoint/) crate. //! //! # Examples //! //! Make sure to check out [this GitHub repo](https://github.com/arfst23/ServicePoint) as well! //! //! ```C //! #include //! #include "servicepoint.h" //! //! int main(void) { //! UdpConnection *connection = sp_connection_open("172.23.42.29:2342"); //! if (connection == NULL) //! return 1; //! //! Bitmap *pixels = sp_bitmap_new(SP_PIXEL_WIDTH, SP_PIXEL_HEIGHT); //! sp_bitmap_fill(pixels, true); //! //! TypedCommand *command = sp_command_bitmap_linear_win(0, 0, pixels, Uncompressed); //! while (sp_connection_send_command(connection, sp_command_clone(command))); //! //! sp_command_free(command); //! sp_connection_free(connection); //! return 0; //! } //! ``` pub use crate::bitmap::*; pub use crate::bitvec::*; pub use crate::brightness_grid::*; pub use crate::byte_slice::*; pub use crate::char_grid::*; pub use crate::command::*; pub use crate::connection::*; pub use crate::cp437_grid::*; pub use crate::packet::*; use std::ptr::NonNull; mod bitmap; mod bitvec; mod brightness_grid; mod byte_slice; mod char_grid; mod command; mod connection; mod cp437_grid; mod packet; use std::time::Duration; /// Actual hardware limit is around 28-29ms/frame. Rounded up for less dropped packets. pub const SP_FRAME_PACING_MS: u128 = Duration::from_millis(30).as_millis(); pub(crate) fn heap_move(x: T) -> *mut T { Box::into_raw(Box::new(x)) } pub(crate) fn heap_move_nonnull(x: T) -> NonNull { NonNull::from(Box::leak(Box::new(x))) } pub(crate) unsafe fn heap_drop(x: NonNull) { drop(unsafe { Box::from_raw(x.as_ptr()) }); }