WIP: next #4

Draft
vinzenz wants to merge 12 commits from next into main
11 changed files with 55 additions and 50 deletions
Showing only changes of commit 32d39f8006 - Show all commits

View file

@ -845,15 +845,15 @@ BrightnessGrid *sp_brightness_grid_load(size_t width,
* *
* # Examples * # Examples
* ```C * ```C
* UdpConnection connection = sp_udp_open("127.0.0.1:2342"); * UdpSocket *connection = sp_udp_open("127.0.0.1:2342");
* if (connection == NULL) * if (connection == NULL)
* return 1; * return 1;
* *
* BrightnessGrid grid = sp_brightness_grid_new(2, 2); * BrightnessGrid *grid = sp_brightness_grid_new(2, 2);
* sp_brightness_grid_set(grid, 0, 0, 0); * sp_brightness_grid_set(grid, 0, 0, 0);
* sp_brightness_grid_set(grid, 1, 1, 10); * sp_brightness_grid_set(grid, 1, 1, 10);
* *
* TypedCommand command = sp_command_char_brightness(grid); * TypedCommand *command = sp_command_char_brightness(grid);
* sp_udp_free(connection); * sp_udp_free(connection);
* ``` * ```
*/ */
@ -1013,6 +1013,12 @@ BitmapCommand */*notnull*/ sp_cmd_bitmap_clone(BitmapCommand */*notnull*/ comman
void sp_cmd_bitmap_free(BitmapCommand */*notnull*/ command); void sp_cmd_bitmap_free(BitmapCommand */*notnull*/ command);
/**
* Move the provided [Bitmap] into a new [BitmapCommand],
* leaving other fields as their default values.
*
* Rust equivalent: [`<BitmapCommand as From<Bitmap>>::from`]
*/
BitmapCommand */*notnull*/ sp_cmd_bitmap_from_bitmap(Bitmap */*notnull*/ bitmap); BitmapCommand */*notnull*/ sp_cmd_bitmap_from_bitmap(Bitmap */*notnull*/ bitmap);
/** /**
@ -1475,19 +1481,19 @@ bool sp_u16_to_command_code(uint16_t code,
CommandCode *result); CommandCode *result);
/** /**
* Closes and deallocates a [UdpConnection]. * Closes and deallocates a [UdpSocket].
*/ */
void sp_udp_free(UdpSocket */*notnull*/ connection); void sp_udp_free(UdpSocket */*notnull*/ connection);
/** /**
* Creates a new instance of [UdpConnection]. * Creates a new instance of [UdpSocket].
* *
* returns: NULL if connection fails, or connected instance * returns: NULL if connection fails, or connected instance
* *
* # Examples * # Examples
* *
* ```C * ```C
* UdpConnection connection = sp_udp_open("172.23.42.29:2342"); * UdpSocket connection = sp_udp_open("172.23.42.29:2342");
* if (connection != NULL) * if (connection != NULL)
* sp_udp_send_command(connection, sp_command_clear()); * sp_udp_send_command(connection, sp_command_clear());
* ``` * ```
@ -1495,14 +1501,14 @@ void sp_udp_free(UdpSocket */*notnull*/ connection);
UdpSocket *sp_udp_open(char */*notnull*/ host); UdpSocket *sp_udp_open(char */*notnull*/ host);
/** /**
* Creates a new instance of [UdpConnection]. * Creates a new instance of [UdpSocket].
* *
* returns: NULL if connection fails, or connected instance * returns: NULL if connection fails, or connected instance
* *
* # Examples * # Examples
* *
* ```C * ```C
* UdpConnection connection = sp_udp_open_ipv4(172, 23, 42, 29, 2342); * UdpSocket connection = sp_udp_open_ipv4(172, 23, 42, 29, 2342);
* if (connection != NULL) * if (connection != NULL)
* sp_udp_send_command(connection, sp_command_clear()); * sp_udp_send_command(connection, sp_command_clear());
* ``` * ```
@ -1514,7 +1520,7 @@ UdpSocket *sp_udp_open_ipv4(uint8_t ip1,
uint16_t port); uint16_t port);
/** /**
* Sends a [TypedCommand] to the display using the [UdpConnection]. * Sends a [TypedCommand] to the display using the [UdpSocket].
* *
* The passed `command` gets consumed. * The passed `command` gets consumed.
* *
@ -1530,7 +1536,7 @@ bool sp_udp_send_command(UdpSocket */*notnull*/ connection,
TypedCommand */*notnull*/ command); TypedCommand */*notnull*/ command);
/** /**
* Sends a [Header] to the display using the [UdpConnection]. * Sends a [Header] to the display using the [UdpSocket].
* *
* returns: true in case of success * returns: true in case of success
* *
@ -1543,7 +1549,7 @@ bool sp_udp_send_command(UdpSocket */*notnull*/ connection,
bool sp_udp_send_header(UdpSocket */*notnull*/ udp_connection, Header header); bool sp_udp_send_header(UdpSocket */*notnull*/ udp_connection, Header header);
/** /**
* Sends a [Packet] to the display using the [UdpConnection]. * Sends a [Packet] to the display using the [UdpSocket].
* *
* The passed `packet` gets consumed. * The passed `packet` gets consumed.
* *

View file

@ -1,7 +1,6 @@
use crate::byte_slice::ByteSlice;
use crate::{ use crate::{
heap_drop, heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove, heap_drop, heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove,
SPBitVec, byte_slice::ByteSlice, bitvec::SPBitVec,
}; };
use servicepoint::{ use servicepoint::{
Bitmap, BitmapCommand, CompressionCode, DataRef, Grid, Origin, Packet, Bitmap, BitmapCommand, CompressionCode, DataRef, Grid, Origin, Packet,

View file

@ -1,5 +1,5 @@
use crate::{ use crate::{
heap_drop, heap_move_nonnull, heap_move_ok, heap_remove, ByteSlice, heap_drop, heap_move_nonnull, heap_move_ok, heap_remove, byte_slice::ByteSlice,
}; };
use servicepoint::{ use servicepoint::{
BinaryOperation, BitVecCommand, CompressionCode, DisplayBitVec, Packet, BinaryOperation, BitVecCommand, CompressionCode, DisplayBitVec, Packet,

View file

@ -1,6 +1,6 @@
use crate::{ use crate::{
heap_drop, heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove, heap_drop, heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove,
ByteSlice, byte_slice::ByteSlice,
}; };
use servicepoint::{ use servicepoint::{
Brightness, BrightnessGrid, BrightnessGridCommand, ByteGrid, DataRef, Grid, Brightness, BrightnessGrid, BrightnessGridCommand, ByteGrid, DataRef, Grid,
@ -15,15 +15,15 @@ use std::ptr::NonNull;
/// ///
/// # Examples /// # Examples
/// ```C /// ```C
/// UdpConnection connection = sp_udp_open("127.0.0.1:2342"); /// UdpSocket *connection = sp_udp_open("127.0.0.1:2342");
/// if (connection == NULL) /// if (connection == NULL)
/// return 1; /// return 1;
/// ///
/// BrightnessGrid grid = sp_brightness_grid_new(2, 2); /// BrightnessGrid *grid = sp_brightness_grid_new(2, 2);
/// sp_brightness_grid_set(grid, 0, 0, 0); /// sp_brightness_grid_set(grid, 0, 0, 0);
/// sp_brightness_grid_set(grid, 1, 1, 10); /// sp_brightness_grid_set(grid, 1, 1, 10);
/// ///
/// TypedCommand command = sp_command_char_brightness(grid); /// TypedCommand *command = sp_command_char_brightness(grid);
/// sp_udp_free(connection); /// sp_udp_free(connection);
/// ``` /// ```
#[no_mangle] #[no_mangle]

View file

@ -1,5 +1,5 @@
use crate::{ use crate::{
heap_drop, heap_move_nonnull, heap_move_ok, heap_remove, ByteSlice, heap_drop, heap_move_nonnull, heap_move_ok, heap_remove, byte_slice::ByteSlice,
}; };
use servicepoint::{CharGrid, CharGridCommand, Grid, Origin, Packet}; use servicepoint::{CharGrid, CharGridCommand, Grid, Origin, Packet};
use std::ptr::NonNull; use std::ptr::NonNull;

View file

@ -23,6 +23,10 @@ pub unsafe extern "C" fn sp_cmd_bitmap_new(
}) })
} }
/// Move the provided [Bitmap] into a new [BitmapCommand],
/// leaving other fields as their default values.
///
/// Rust equivalent: [`<BitmapCommand as From<Bitmap>>::from`]
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn sp_cmd_bitmap_from_bitmap( pub unsafe extern "C" fn sp_cmd_bitmap_from_bitmap(
bitmap: NonNull<Bitmap>, bitmap: NonNull<Bitmap>,

View file

@ -3,3 +3,9 @@ mod bitvec_command;
mod brightness_grid_command; mod brightness_grid_command;
mod char_grid_command; mod char_grid_command;
mod cp437_grid_command; mod cp437_grid_command;
pub use bitmap_command::*;
pub use bitvec_command::*;
pub use brightness_grid_command::*;
pub use char_grid_command::*;
pub use cp437_grid_command::*;

View file

@ -1,6 +1,6 @@
use crate::{ use crate::{
heap_drop, heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove, heap_drop, heap_move_nonnull, heap_move_ok, heap_move_some, heap_remove,
ByteSlice, byte_slice::ByteSlice,
}; };
use servicepoint::{ use servicepoint::{
Cp437Grid, Cp437GridCommand, DataRef, Grid, Origin, Packet, Cp437Grid, Cp437GridCommand, DataRef, Grid, Origin, Packet,

View file

@ -9,7 +9,7 @@
//! #include "servicepoint.h" //! #include "servicepoint.h"
//! //!
//! int main(void) { //! int main(void) {
//! UdpConnection *connection = sp_udp_open("172.23.42.29:2342"); //! UdpSocket *connection = sp_udp_open("172.23.42.29:2342");
//! if (connection == NULL) //! if (connection == NULL)
//! return 1; //! return 1;
//! //!
@ -25,28 +25,18 @@
//! } //! }
//! ``` //! ```
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::cp437_grid::*;
pub use crate::packet::*;
pub use crate::typed_command::*;
pub use crate::udp::*;
pub use servicepoint::CommandCode;
use std::ptr::NonNull; use std::ptr::NonNull;
mod bitmap; pub mod bitmap;
mod bitvec; pub mod bitvec;
mod brightness_grid; pub mod brightness_grid;
mod byte_slice; pub mod byte_slice;
mod char_grid; pub mod char_grid;
mod commands; pub mod commands;
mod cp437_grid; pub mod cp437_grid;
mod packet; pub mod packet;
mod typed_command; pub mod typed_command;
mod udp; pub mod udp;
use std::time::Duration; use std::time::Duration;

View file

@ -1,5 +1,5 @@
use crate::{ use crate::{
heap_drop, heap_move_nonnull, heap_move_ok, heap_remove, ByteSlice, heap_drop, heap_move_nonnull, heap_move_ok, heap_remove, byte_slice::ByteSlice,
}; };
use servicepoint::{CommandCode, Header, Packet, TypedCommand}; use servicepoint::{CommandCode, Header, Packet, TypedCommand};
use std::ptr::NonNull; use std::ptr::NonNull;

View file

@ -4,14 +4,14 @@ use std::ffi::{c_char, CStr};
use std::net::{Ipv4Addr, SocketAddrV4, UdpSocket}; use std::net::{Ipv4Addr, SocketAddrV4, UdpSocket};
use std::ptr::NonNull; use std::ptr::NonNull;
/// Creates a new instance of [UdpConnection]. /// Creates a new instance of [UdpSocket].
/// ///
/// returns: NULL if connection fails, or connected instance /// returns: NULL if connection fails, or connected instance
/// ///
/// # Examples /// # Examples
/// ///
/// ```C /// ```C
/// UdpConnection connection = sp_udp_open("172.23.42.29:2342"); /// UdpSocket connection = sp_udp_open("172.23.42.29:2342");
/// if (connection != NULL) /// if (connection != NULL)
/// sp_udp_send_command(connection, sp_command_clear()); /// sp_udp_send_command(connection, sp_command_clear());
/// ``` /// ```
@ -24,14 +24,14 @@ pub unsafe extern "C" fn sp_udp_open(host: NonNull<c_char>) -> *mut UdpSocket {
heap_move_ok(UdpSocket::bind_connect(host)) heap_move_ok(UdpSocket::bind_connect(host))
} }
/// Creates a new instance of [UdpConnection]. /// Creates a new instance of [UdpSocket].
/// ///
/// returns: NULL if connection fails, or connected instance /// returns: NULL if connection fails, or connected instance
/// ///
/// # Examples /// # Examples
/// ///
/// ```C /// ```C
/// UdpConnection connection = sp_udp_open_ipv4(172, 23, 42, 29, 2342); /// UdpSocket connection = sp_udp_open_ipv4(172, 23, 42, 29, 2342);
/// if (connection != NULL) /// if (connection != NULL)
/// sp_udp_send_command(connection, sp_command_clear()); /// sp_udp_send_command(connection, sp_command_clear());
/// ``` /// ```
@ -47,7 +47,7 @@ pub unsafe extern "C" fn sp_udp_open_ipv4(
heap_move_ok(UdpSocket::bind_connect(addr)) heap_move_ok(UdpSocket::bind_connect(addr))
} }
/// Sends a [Packet] to the display using the [UdpConnection]. /// Sends a [Packet] to the display using the [UdpSocket].
/// ///
/// The passed `packet` gets consumed. /// The passed `packet` gets consumed.
/// ///
@ -61,7 +61,7 @@ pub unsafe extern "C" fn sp_udp_send_packet(
unsafe { connection.as_ref().send(&Vec::from(packet)) }.is_ok() unsafe { connection.as_ref().send(&Vec::from(packet)) }.is_ok()
} }
/// Sends a [TypedCommand] to the display using the [UdpConnection]. /// Sends a [TypedCommand] to the display using the [UdpSocket].
/// ///
/// The passed `command` gets consumed. /// The passed `command` gets consumed.
/// ///
@ -81,7 +81,7 @@ pub unsafe extern "C" fn sp_udp_send_command(
unsafe { connection.as_ref().send_command(command) }.is_some() unsafe { connection.as_ref().send_command(command) }.is_some()
} }
/// Sends a [Header] to the display using the [UdpConnection]. /// Sends a [Header] to the display using the [UdpSocket].
/// ///
/// returns: true in case of success /// returns: true in case of success
/// ///
@ -104,7 +104,7 @@ pub unsafe extern "C" fn sp_udp_send_header(
.is_ok() .is_ok()
} }
/// Closes and deallocates a [UdpConnection]. /// Closes and deallocates a [UdpSocket].
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn sp_udp_free(connection: NonNull<UdpSocket>) { pub unsafe extern "C" fn sp_udp_free(connection: NonNull<UdpSocket>) {
unsafe { heap_drop(connection) } unsafe { heap_drop(connection) }