From 0344c0bdcfff3b042c7f54ef9085ddb233b085ca Mon Sep 17 00:00:00 2001 From: Vinzenz Schroeter Date: Sat, 28 Jun 2025 20:23:23 +0200 Subject: [PATCH] fix readme --- README.md | 20 ++++++++++++-------- example/Makefile | 2 +- example/src/flut.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 example/src/flut.c diff --git a/README.md b/README.md index fa0a49b..e5a3249 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # servicepoint_binding_c -[![Release](https://git.berlin.ccc.de/servicepoint/servicepoint_binding_c/badges/release.svg)](https://git.berlin.ccc.de/servicepoint/servicepoint_binding_c/releases) +[![Release](https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c/badges/release.svg)](https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c/releases) [![crates.io](https://img.shields.io/crates/v/servicepoint_binding_c.svg)](https://crates.io/crates/servicepoint) [![Crates.io Total Downloads](https://img.shields.io/crates/d/servicepoint_binding_c)](https://crates.io/crates/servicepoint) [![docs.rs](https://img.shields.io/docsrs/servicepoint_binding_c)](https://docs.rs/servicepoint/latest/servicepoint/) [![GPLv3 licensed](https://img.shields.io/crates/l/servicepoint_binding_c)](./LICENSE) -[![CI](https://git.berlin.ccc.de/servicepoint/servicepoint_binding_c/badges/workflows/rust.yml/badge.svg)](https://git.berlin.ccc.de/servicepoint/servicepoint_binding_c) +[![CI](https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c/badges/workflows/rust.yml/badge.svg)](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,18 +19,22 @@ This crate contains C bindings for the [servicepoint](https://git.berlin.ccc.de/ #include "servicepoint.h" int main(void) { - SPConnection *connection = sp_connection_open("172.23.42.29:2342"); + UdpSocket *connection = sp_udp_socket_open("172.23.42.29:2342"); if (connection == NULL) return 1; - SPBitmap *pixels = sp_bitmap_new(SP_PIXEL_WIDTH, SP_PIXEL_HEIGHT); + Bitmap *pixels = sp_bitmap_new(PIXEL_WIDTH, PIXEL_HEIGHT); sp_bitmap_fill(pixels, true); - SPCommand *command = sp_command_bitmap_linear_win(0, 0, pixels, Uncompressed); - while (sp_connection_send_command(connection, sp_command_clone(command))); + 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; + + if (!sp_udp_socket_send_packet(connection, packet)) + return 1; - sp_command_free(command); - sp_connection_free(connection); + sp_udp_socket_free(connection); return 0; } ``` diff --git a/example/Makefile b/example/Makefile index 15e53d1..a3c0df4 100644 --- a/example/Makefile +++ b/example/Makefile @@ -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/moving_line.c src/random_stuff.c src/wiping_clear.c src/undefined.c src/flut.c _programs := $(basename $(notdir $(_c_src))) _bins := $(_programs) _unstripped_bins := $(addsuffix _unstripped, $(_bins)) diff --git a/example/src/flut.c b/example/src/flut.c new file mode 100644 index 0000000..9f7534f --- /dev/null +++ b/example/src/flut.c @@ -0,0 +1,33 @@ +#include +#include +#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; +}