servicepoint_binding_c 0.15.0

C bindings for the servicepoint crate.
Documentation
#include "servicepoint.h"
#include "helpers.h"

void enable_all_pixels(void) {
    Bitmap *all_on = sp_bitmap_new_max_sized();
    sp_bitmap_fill(all_on, true);

    BitmapCommand *bitmapCommand = sp_bitmap_command_from_bitmap(all_on);
    Packet *packet = sp_bitmap_command_try_into_packet(bitmapCommand);
    if (packet != NULL)
        sp_udp_socket_send_packet(sock, packet);
}

void make_brightness_pattern(BrightnessGrid *grid) {
    ByteSlice slice = sp_brightness_grid_data_ref_mut(grid);
    for (size_t index = 0; index < slice.length; index++) {
        slice.start[index] = (uint8_t)(index % ((size_t) Brightness_MAX));
    }
}

int main(void) {
    sock_init();

    enable_all_pixels();

    BrightnessGrid *grid = sp_brightness_grid_new(TILE_WIDTH, TILE_HEIGHT);
    make_brightness_pattern(grid);

    Packet *packet = sp_brightness_grid_command_try_into_packet(sp_brightness_grid_command_from_grid(grid));
    if (packet == NULL)
        return -2;

    sp_udp_socket_send_packet(sock, packet);
    return 0;
}