65 lines
1.7 KiB
Rust
65 lines
1.7 KiB
Rust
//! 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 <stdio.h>
|
|
//! #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<T>(x: T) -> *mut T {
|
|
Box::into_raw(Box::new(x))
|
|
}
|
|
|
|
pub(crate) fn heap_move_nonnull<T>(x: T) -> NonNull<T> {
|
|
NonNull::from(Box::leak(Box::new(x)))
|
|
}
|
|
|
|
pub(crate) unsafe fn heap_drop<T>(x: NonNull<T>) {
|
|
drop(unsafe { Box::from_raw(x.as_ptr()) });
|
|
}
|