Compare commits
No commits in common. "next" and "main" have entirely different histories.
16
Cargo.lock
generated
16
Cargo.lock
generated
|
@ -187,6 +187,17 @@ dependencies = [
|
|||
"wasi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "inherent"
|
||||
version = "1.0.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6c38228f24186d9cc68c729accb4d413be9eaed6ad07ff79e0270d9e56f3de13"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "is_terminal_polyfill"
|
||||
version = "1.70.1"
|
||||
|
@ -384,13 +395,14 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "servicepoint"
|
||||
version = "0.16.0"
|
||||
version = "0.15.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b04582e916474f1bc1605cad3773262c425d9062b487e49a0df59662f2cca8d"
|
||||
checksum = "2800caad491cb44f67e5dd5b8c61ece368eecfe588155d03c7d9864acbad6919"
|
||||
dependencies = [
|
||||
"bitvec",
|
||||
"bzip2",
|
||||
"flate2",
|
||||
"inherent",
|
||||
"log",
|
||||
"once_cell",
|
||||
"rust-lzma",
|
||||
|
|
|
@ -14,7 +14,7 @@ keywords = ["cccb", "cccb-servicepoint", "cbindgen"]
|
|||
crate-type = ["staticlib", "cdylib", "rlib"]
|
||||
|
||||
[dependencies.servicepoint]
|
||||
version = "0.16.0"
|
||||
version = "0.15.1"
|
||||
default-features = false
|
||||
|
||||
[dependencies.env_logger]
|
||||
|
|
27
README.md
27
README.md
|
@ -1,11 +1,11 @@
|
|||
# servicepoint_binding_c
|
||||
|
||||
[](https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c/releases)
|
||||
[](https://git.berlin.ccc.de/servicepoint/servicepoint_binding_c/releases)
|
||||
[](https://crates.io/crates/servicepoint)
|
||||
[](https://crates.io/crates/servicepoint)
|
||||
[](https://docs.rs/servicepoint/latest/servicepoint/)
|
||||
[](./LICENSE)
|
||||
[](https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c)
|
||||
[](https://git.berlin.ccc.de/servicepoint/servicepoint_binding_c)
|
||||
|
||||
In [CCCB](https://berlin.ccc.de/), there is a big pixel matrix hanging on the wall.
|
||||
It is called "Service Point Display" or "Airport Display".
|
||||
|
@ -19,22 +19,18 @@ This crate contains C bindings for the [servicepoint](https://git.berlin.ccc.de/
|
|||
#include "servicepoint.h"
|
||||
|
||||
int main(void) {
|
||||
UdpSocket *connection = sp_udp_socket_open("172.23.42.29:2342");
|
||||
SPConnection *connection = sp_connection_open("172.23.42.29:2342");
|
||||
if (connection == NULL)
|
||||
return 1;
|
||||
|
||||
Bitmap *pixels = sp_bitmap_new(PIXEL_WIDTH, PIXEL_HEIGHT);
|
||||
SPBitmap *pixels = sp_bitmap_new(SP_PIXEL_WIDTH, SP_PIXEL_HEIGHT);
|
||||
sp_bitmap_fill(pixels, true);
|
||||
|
||||
BitmapCommand *command = sp_bitmap_command_new(pixels, 0, 0, COMPRESSION_CODE_LZMA);
|
||||
Packet *packet = sp_bitmap_command_try_into_packet(command);
|
||||
if (packet == NULL)
|
||||
return 1;
|
||||
SPCommand *command = sp_command_bitmap_linear_win(0, 0, pixels, Uncompressed);
|
||||
while (sp_connection_send_command(connection, sp_command_clone(command)));
|
||||
|
||||
if (!sp_udp_socket_send_packet(connection, packet))
|
||||
return 1;
|
||||
|
||||
sp_udp_socket_free(connection);
|
||||
sp_command_free(command);
|
||||
sp_connection_free(connection);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
@ -45,9 +41,7 @@ A full example including Makefile is available as part of this crate.
|
|||
|
||||
This library is still in early development.
|
||||
You can absolutely use it, and it works, but expect minor breaking changes with every version bump.
|
||||
Pin a specific version until 1.0 is released.
|
||||
|
||||
Release notes are published [here](https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c/releases).
|
||||
Please specify the full version including patch in your Cargo.toml until 1.0 is released.
|
||||
|
||||
## Installation
|
||||
|
||||
|
@ -83,9 +77,6 @@ When linked dynamically, you have to provide the `cdylib` at runtime in the _sam
|
|||
guarantees yet.
|
||||
The Makefile in the example directory contains a bunch of additional compiler flags you might want to add depending on your use case.
|
||||
|
||||
The nix flake provides a package for referencing in your flake.
|
||||
The package provides a pkg-config file for automatic linking.
|
||||
|
||||
## Notes on differences to rust library
|
||||
|
||||
- function names are: `sp_` \<struct_name\> \<rust name\>.
|
||||
|
|
|
@ -96,7 +96,7 @@ endif
|
|||
|
||||
# ADD NEW EXAMPLES HERE
|
||||
_c_src := src/announce.c src/brightness_tester.c src/header_logger.c \
|
||||
src/moving_line.c src/random_stuff.c src/wiping_clear.c src/undefined.c src/flut.c
|
||||
src/moving_line.c src/random_stuff.c src/wiping_clear.c src/undefined.c
|
||||
_programs := $(basename $(notdir $(_c_src)))
|
||||
_bins := $(_programs)
|
||||
_unstripped_bins := $(addsuffix _unstripped, $(_bins))
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include "servicepoint.h"
|
||||
|
||||
volatile bool aborted = false;
|
||||
|
||||
void handle_sigint(int sig) {
|
||||
(void)sig; // suppress unused warning
|
||||
aborted = true;
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
UdpSocket *connection = sp_udp_socket_open("172.23.42.29:2342");
|
||||
if (connection == NULL)
|
||||
return 1;
|
||||
|
||||
Bitmap *pixels = sp_bitmap_new(PIXEL_WIDTH, PIXEL_HEIGHT);
|
||||
sp_bitmap_fill(pixels, true);
|
||||
|
||||
BitmapCommand *command = sp_bitmap_command_new(pixels, 0, 0, COMPRESSION_CODE_LZMA);
|
||||
Packet *packet = sp_bitmap_command_try_into_packet(command);
|
||||
|
||||
signal(SIGINT, handle_sigint);
|
||||
size_t packets_sent = 0;
|
||||
while (!aborted && sp_udp_socket_send_packet(connection, sp_packet_clone(packet))) {
|
||||
++packets_sent;
|
||||
}
|
||||
|
||||
printf("packets sent: %zu\n", packets_sent);
|
||||
sp_packet_free(packet);
|
||||
sp_udp_socket_free(connection);
|
||||
return 0;
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
use crate::{containers::ByteSlice, macros::wrap};
|
||||
use servicepoint::{
|
||||
Bitmap, BitmapCommand, CompressionCode, DataRef, DisplayBitVec, Grid,
|
||||
GridMut, Origin, Packet,
|
||||
Origin, Packet,
|
||||
};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::{containers::ByteSlice, macros::wrap};
|
||||
use servicepoint::{
|
||||
Brightness, BrightnessGrid, BrightnessGridCommand, ByteGrid, DataRef, Grid,
|
||||
GridMut, Origin, Packet,
|
||||
Origin, Packet,
|
||||
};
|
||||
use std::{mem::transmute, ptr::NonNull};
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
use crate::{containers::ByteSlice, macros::wrap};
|
||||
use servicepoint::{CharGrid, CharGridCommand, Grid, GridMut, Origin, Packet};
|
||||
use servicepoint::{CharGrid, CharGridCommand, Grid, Origin, Packet};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
wrap! {
|
||||
|
@ -25,9 +25,8 @@ wrap! {
|
|||
/// Loads a [CharGrid] with the specified dimensions from the provided data.
|
||||
///
|
||||
/// returns: new CharGrid or NULL in case of an error
|
||||
fn load(width: val usize, height: val usize, data: slice ByteSlice) -> move_some *mut CharGrid {
|
||||
String::from_utf8(data.to_vec()).ok()
|
||||
.and_then(|s| CharGrid::load(width, height, &*s.chars().collect::<Vec<_>>()))
|
||||
fn load(width: val usize, height: val usize, data: slice ByteSlice) -> move_ok *mut CharGrid {
|
||||
CharGrid::load_utf8(width, height, data.to_vec())
|
||||
};
|
||||
methods:
|
||||
/// Returns the current value at the specified position.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::{containers::ByteSlice, macros::wrap};
|
||||
use servicepoint::{
|
||||
Cp437Grid, Cp437GridCommand, DataRef, Grid, GridMut, Origin, Packet,
|
||||
Cp437Grid, Cp437GridCommand, DataRef, Grid, Origin, Packet,
|
||||
};
|
||||
use std::ptr::NonNull;
|
||||
|
||||
|
|
Loading…
Reference in a new issue