#ifndef SERVICEPOINT_BINDINGS_C
#define SERVICEPOINT_BINDINGS_C
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#define PIXEL_COUNT (PIXEL_WIDTH * PIXEL_HEIGHT)
#define PIXEL_HEIGHT (TILE_HEIGHT * TILE_SIZE)
#define PIXEL_WIDTH (TILE_WIDTH * TILE_SIZE)
#define TILE_HEIGHT 20
#define TILE_SIZE 8
#define TILE_WIDTH 56
enum BinaryOperation
#ifdef __cplusplus
: uint8_t
#endif {
BINARY_OPERATION_OVERWRITE,
BINARY_OPERATION_AND,
BINARY_OPERATION_OR,
BINARY_OPERATION_XOR,
};
#ifndef __cplusplus
typedef uint8_t BinaryOperation;
#endif
enum CommandCode
#ifdef __cplusplus
: uint16_t
#endif {
COMMAND_CODE_CLEAR = 2,
COMMAND_CODE_CP437_DATA = 3,
COMMAND_CODE_CHAR_BRIGHTNESS = 5,
COMMAND_CODE_BRIGHTNESS = 7,
COMMAND_CODE_HARD_RESET = 11,
COMMAND_CODE_FADE_OUT = 13,
COMMAND_CODE_BITMAP_LEGACY = 16,
COMMAND_CODE_BITMAP_LINEAR = 18,
COMMAND_CODE_BITMAP_LINEAR_WIN_UNCOMPRESSED = 19,
COMMAND_CODE_BITMAP_LINEAR_AND = 20,
COMMAND_CODE_BITMAP_LINEAR_OR = 21,
COMMAND_CODE_BITMAP_LINEAR_XOR = 22,
COMMAND_CODE_BITMAP_LINEAR_WIN_ZLIB = 23,
COMMAND_CODE_BITMAP_LINEAR_WIN_BZIP2 = 24,
COMMAND_CODE_BITMAP_LINEAR_WIN_LZMA = 25,
COMMAND_CODE_UTF8_DATA = 32,
COMMAND_CODE_BITMAP_LINEAR_WIN_ZSTD = 26,
};
#ifndef __cplusplus
typedef uint16_t CommandCode;
#endif
enum CommandTag
#ifdef __cplusplus
: uint8_t
#endif {
COMMAND_TAG_INVALID = 0,
COMMAND_TAG_BITMAP,
COMMAND_TAG_BIT_VEC,
COMMAND_TAG_BRIGHTNESS_GRID,
COMMAND_TAG_CHAR_GRID,
COMMAND_TAG_CP437_GRID,
COMMAND_TAG_GLOBAL_BRIGHTNESS,
COMMAND_TAG_CLEAR,
COMMAND_TAG_HARD_RESET,
COMMAND_TAG_FADE_OUT,
COMMAND_TAG_BITMAP_LEGACY,
};
#ifndef __cplusplus
typedef uint8_t CommandTag;
#endif
enum CompressionCode
#ifdef __cplusplus
: uint16_t
#endif {
COMPRESSION_CODE_UNCOMPRESSED = 0,
COMPRESSION_CODE_ZLIB = 26490,
COMPRESSION_CODE_BZIP2 = 25210,
COMPRESSION_CODE_LZMA = 27770,
COMPRESSION_CODE_ZSTD = 31347,
};
#ifndef __cplusplus
typedef uint16_t CompressionCode;
#endif
typedef struct BitVecCommand BitVecCommand;
typedef struct Bitmap Bitmap;
typedef struct BitmapCommand BitmapCommand;
typedef struct BitmapLegacyCommand BitmapLegacyCommand;
typedef struct BrightnessGridCommand BrightnessGridCommand;
typedef struct CharGridCommand CharGridCommand;
typedef struct ClearCommand ClearCommand;
typedef struct Cp437GridCommand Cp437GridCommand;
typedef struct DisplayBitVec DisplayBitVec;
typedef struct FadeOutCommand FadeOutCommand;
typedef struct GlobalBrightnessCommand GlobalBrightnessCommand;
typedef struct HardResetCommand HardResetCommand;
typedef struct Packet Packet;
typedef struct UdpSocket UdpSocket;
typedef struct ValueGrid_Brightness ValueGrid_Brightness;
typedef struct ValueGrid_char ValueGrid_char;
typedef struct ValueGrid_u8 ValueGrid_u8;
typedef size_t Offset;
typedef struct ByteSlice {
uint8_t *start;
size_t length;
} ByteSlice;
typedef struct ValueGrid_Brightness BrightnessGrid;
typedef uint8_t Brightness;
#define Brightness_MAX 11
#define Brightness_MIN 0
typedef struct ValueGrid_char CharGrid;
typedef struct ValueGrid_u8 Cp437Grid;
typedef union CommandUnion {
uint8_t *null;
struct BitmapCommand * bitmap;
struct BitVecCommand * bit_vec;
struct BrightnessGridCommand * brightness_grid;
struct CharGridCommand * char_grid;
struct Cp437GridCommand * cp437_grid;
struct GlobalBrightnessCommand * global_brightness;
struct ClearCommand * clear;
struct BitmapLegacyCommand * bitmap_legacy;
struct HardResetCommand * hard_reset;
struct FadeOutCommand * fade_out;
} CommandUnion;
typedef struct GenericCommand {
CommandTag tag;
union CommandUnion data;
} GenericCommand;
typedef struct Header {
uint16_t command_code;
uint16_t a;
uint16_t b;
uint16_t c;
uint16_t d;
} Header;
#define SP_FRAME_PACING_MS 30
#ifdef __cplusplus
extern "C" {
#endif
struct BitVecCommand * sp_bit_vec_command_clone(struct BitVecCommand * instance);
void sp_bit_vec_command_free(struct BitVecCommand * instance);
DisplayBitVec * sp_bit_vec_command_get_bitvec_mut(struct BitVecCommand * instance);
CompressionCode sp_bit_vec_command_get_compression(struct BitVecCommand * instance);
Offset sp_bit_vec_command_get_offset(struct BitVecCommand * instance);
BinaryOperation sp_bit_vec_command_get_operation(struct BitVecCommand * instance);
struct BitVecCommand * sp_bit_vec_command_new(DisplayBitVec * bitvec,
size_t offset,
BinaryOperation operation,
CompressionCode compression);
void sp_bit_vec_command_set_bitvec(struct BitVecCommand * instance,
DisplayBitVec * value);
void sp_bit_vec_command_set_compression(struct BitVecCommand * instance,
CompressionCode value);
void sp_bit_vec_command_set_offset(struct BitVecCommand * instance,
Offset value);
void sp_bit_vec_command_set_operation(struct BitVecCommand * instance,
BinaryOperation value);
struct Packet *sp_bit_vec_command_try_into_packet(struct BitVecCommand * instance);
struct Bitmap * sp_bitmap_clone(struct Bitmap * instance);
struct BitmapCommand * sp_bitmap_command_clone(struct BitmapCommand * instance);
void sp_bitmap_command_free(struct BitmapCommand * instance);
struct BitmapCommand * sp_bitmap_command_from_bitmap(struct Bitmap * bitmap);
struct Bitmap * sp_bitmap_command_get_bitmap_mut(struct BitmapCommand * instance);
CompressionCode sp_bitmap_command_get_compression(struct BitmapCommand * instance);
void sp_bitmap_command_get_origin(struct BitmapCommand * command,
size_t * origin_x,
size_t * origin_y);
struct BitmapCommand * sp_bitmap_command_new(struct Bitmap * bitmap,
size_t origin_x,
size_t origin_y,
CompressionCode compression);
void sp_bitmap_command_set_bitmap(struct BitmapCommand * instance,
struct Bitmap * value);
void sp_bitmap_command_set_compression(struct BitmapCommand * instance,
CompressionCode value);
void sp_bitmap_command_set_origin(struct BitmapCommand * command,
size_t origin_x,
size_t origin_y);
struct Packet *sp_bitmap_command_try_into_packet(struct BitmapCommand * instance);
struct ByteSlice sp_bitmap_data_ref_mut(struct Bitmap * instance);
void sp_bitmap_fill(struct Bitmap * instance, bool value);
void sp_bitmap_free(struct Bitmap * instance);
struct Bitmap *sp_bitmap_from_bitvec(size_t width,
DisplayBitVec * bitvec);
bool sp_bitmap_get(struct Bitmap * instance, size_t x, size_t y);
size_t sp_bitmap_height(struct Bitmap * instance);
DisplayBitVec * sp_bitmap_into_bitvec(struct Bitmap * bitmap);
struct Bitmap *sp_bitmap_load(size_t width,
size_t height,
struct ByteSlice data);
struct Bitmap *sp_bitmap_new(size_t width, size_t height);
struct Bitmap * sp_bitmap_new_max_sized(void);
void sp_bitmap_set(struct Bitmap * instance,
size_t x,
size_t y,
bool value);
struct Packet *sp_bitmap_try_into_packet(struct Bitmap * bitmap,
size_t x,
size_t y,
CompressionCode compression);
size_t sp_bitmap_width(struct Bitmap * instance);
BrightnessGrid * sp_brightness_grid_clone(BrightnessGrid * instance);
struct BrightnessGridCommand * sp_brightness_grid_command_clone(struct BrightnessGridCommand * instance);
void sp_brightness_grid_command_free(struct BrightnessGridCommand * instance);
struct BrightnessGridCommand * sp_brightness_grid_command_from_grid(BrightnessGrid * grid);
BrightnessGrid * sp_brightness_grid_command_get_grid_mut(struct BrightnessGridCommand * instance);
void sp_brightness_grid_command_get_origin(struct BrightnessGridCommand * command,
size_t * origin_x,
size_t * origin_y);
struct BrightnessGridCommand * sp_brightness_grid_command_new(BrightnessGrid * grid,
size_t origin_x,
size_t origin_y);
void sp_brightness_grid_command_set_grid(struct BrightnessGridCommand * instance,
BrightnessGrid * value);
void sp_brightness_grid_command_set_origin(struct BrightnessGridCommand * command,
size_t origin_x,
size_t origin_y);
struct Packet *sp_brightness_grid_command_try_into_packet(struct BrightnessGridCommand * instance);
struct ByteSlice sp_brightness_grid_data_ref_mut(BrightnessGrid * instance);
void sp_brightness_grid_fill(BrightnessGrid * instance,
Brightness value);
void sp_brightness_grid_free(BrightnessGrid * instance);
Brightness sp_brightness_grid_get(BrightnessGrid * instance,
size_t x,
size_t y);
size_t sp_brightness_grid_height(BrightnessGrid * instance);
BrightnessGrid *sp_brightness_grid_load(size_t width,
size_t height,
struct ByteSlice data);
BrightnessGrid * sp_brightness_grid_new(size_t width, size_t height);
void sp_brightness_grid_set(BrightnessGrid * instance,
size_t x,
size_t y,
Brightness value);
struct Packet *sp_brightness_grid_try_into_packet(BrightnessGrid * grid,
size_t x,
size_t y);
size_t sp_brightness_grid_width(BrightnessGrid * instance);
CharGrid * sp_char_grid_clone(CharGrid * instance);
struct CharGridCommand * sp_char_grid_command_clone(struct CharGridCommand * instance);
void sp_char_grid_command_free(struct CharGridCommand * instance);
struct CharGridCommand * sp_char_grid_command_from_grid(CharGrid * grid);
CharGrid * sp_char_grid_command_get_grid_mut(struct CharGridCommand * instance);
void sp_char_grid_command_get_origin(struct CharGridCommand * command,
size_t * origin_x,
size_t * origin_y);
struct CharGridCommand * sp_char_grid_command_new(CharGrid * grid,
size_t origin_x,
size_t origin_y);
void sp_char_grid_command_set_grid(struct CharGridCommand * instance,
CharGrid * value);
void sp_char_grid_command_set_origin(struct CharGridCommand * command,
size_t origin_x,
size_t origin_y);
struct Packet *sp_char_grid_command_try_into_packet(struct CharGridCommand * instance);
void sp_char_grid_fill(CharGrid * instance, uint32_t value);
void sp_char_grid_free(CharGrid * instance);
uint32_t sp_char_grid_get(CharGrid * instance, size_t x, size_t y);
size_t sp_char_grid_height(CharGrid * instance);
CharGrid *sp_char_grid_load(size_t width, size_t height, struct ByteSlice data);
CharGrid * sp_char_grid_new(size_t width, size_t height);
void sp_char_grid_set(CharGrid * instance,
size_t x,
size_t y,
uint32_t value);
struct Packet *sp_char_grid_try_into_packet(CharGrid * grid,
size_t x,
size_t y);
size_t sp_char_grid_width(CharGrid * instance);
struct ClearCommand * sp_clear_command_clone(struct ClearCommand * instance);
void sp_clear_command_free(struct ClearCommand * instance);
struct ClearCommand * sp_clear_command_new(void);
struct Packet *sp_clear_command_try_into_packet(struct ClearCommand * instance);
Cp437Grid * sp_cp437_grid_clone(Cp437Grid * instance);
struct Cp437GridCommand * sp_cp437_grid_command_clone(struct Cp437GridCommand * instance);
void sp_cp437_grid_command_free(struct Cp437GridCommand * instance);
struct Cp437GridCommand * sp_cp437_grid_command_from_grid(Cp437Grid * grid);
Cp437Grid * sp_cp437_grid_command_get_grid_mut(struct Cp437GridCommand * instance);
void sp_cp437_grid_command_get_origin(struct Cp437GridCommand * command,
size_t * origin_x,
size_t * origin_y);
struct Cp437GridCommand * sp_cp437_grid_command_new(Cp437Grid * grid,
size_t origin_x,
size_t origin_y);
void sp_cp437_grid_command_set_grid(struct Cp437GridCommand * instance,
Cp437Grid * value);
void sp_cp437_grid_command_set_origin(struct Cp437GridCommand * command,
size_t origin_x,
size_t origin_y);
struct Packet *sp_cp437_grid_command_try_into_packet(struct Cp437GridCommand * instance);
struct ByteSlice sp_cp437_grid_data_ref_mut(Cp437Grid * instance);
void sp_cp437_grid_fill(Cp437Grid * instance, uint8_t value);
void sp_cp437_grid_free(Cp437Grid * instance);
uint8_t sp_cp437_grid_get(Cp437Grid * instance, size_t x, size_t y);
size_t sp_cp437_grid_height(Cp437Grid * instance);
Cp437Grid *sp_cp437_grid_load(size_t width,
size_t height,
struct ByteSlice data);
Cp437Grid * sp_cp437_grid_new(size_t width, size_t height);
void sp_cp437_grid_set(Cp437Grid * instance,
size_t x,
size_t y,
uint8_t value);
struct Packet *sp_cp437_grid_try_into_packet(Cp437Grid * grid,
size_t x,
size_t y);
size_t sp_cp437_grid_width(Cp437Grid * instance);
struct ByteSlice sp_display_bit_vec_as_raw_mut_slice(DisplayBitVec * instance);
DisplayBitVec * sp_display_bit_vec_clone(DisplayBitVec * instance);
void sp_display_bit_vec_fill(DisplayBitVec * instance, bool value);
void sp_display_bit_vec_free(DisplayBitVec * instance);
bool sp_display_bit_vec_get(DisplayBitVec * instance, size_t index);
bool sp_display_bit_vec_is_empty(DisplayBitVec * instance);
size_t sp_display_bit_vec_len(DisplayBitVec * instance);
DisplayBitVec * sp_display_bit_vec_load(struct ByteSlice data);
DisplayBitVec * sp_display_bit_vec_new(size_t size);
void sp_display_bit_vec_set(DisplayBitVec * instance,
size_t index,
bool value);
struct Packet *sp_display_bit_vec_try_into_packet(DisplayBitVec * bitvec,
size_t offset,
BinaryOperation operation,
CompressionCode compression);
void sp_envlogger_init(void);
struct FadeOutCommand * sp_fade_out_command_clone(struct FadeOutCommand * instance);
void sp_fade_out_command_free(struct FadeOutCommand * instance);
struct FadeOutCommand * sp_fade_out_command_new(void);
struct Packet *sp_fade_out_command_try_into_packet(struct FadeOutCommand * instance);
struct GenericCommand * sp_generic_command_clone(struct GenericCommand * instance);
void sp_generic_command_free(struct GenericCommand * instance);
struct GenericCommand * sp_generic_command_try_from_packet(struct Packet * packet);
struct Packet *sp_generic_command_try_into_packet(struct GenericCommand * command);
struct GlobalBrightnessCommand * sp_global_brightness_command_clone(struct GlobalBrightnessCommand * instance);
void sp_global_brightness_command_free(struct GlobalBrightnessCommand * instance);
Brightness sp_global_brightness_command_get_brightness(struct GlobalBrightnessCommand * instance);
struct GlobalBrightnessCommand * sp_global_brightness_command_new(Brightness brightness);
void sp_global_brightness_command_set_brightness(struct GlobalBrightnessCommand * instance,
Brightness value);
struct Packet *sp_global_brightness_command_try_into_packet(struct GlobalBrightnessCommand * instance);
struct HardResetCommand * sp_hard_reset_command_clone(struct HardResetCommand * instance);
void sp_hard_reset_command_free(struct HardResetCommand * instance);
struct HardResetCommand * sp_hard_reset_command_new(void);
struct Packet *sp_hard_reset_command_try_into_packet(struct HardResetCommand * instance);
struct Packet * sp_packet_clone(struct Packet * instance);
void sp_packet_free(struct Packet * instance);
struct Packet * sp_packet_from_parts(struct Header header,
struct ByteSlice payload);
struct Header sp_packet_get_header(struct Packet * instance);
struct Header * sp_packet_get_header_mut(struct Packet * instance);
struct ByteSlice sp_packet_get_payload(struct Packet * packet);
size_t sp_packet_serialize_to(struct Packet * packet,
struct ByteSlice buffer);
void sp_packet_set_header(struct Packet * instance,
struct Header value);
void sp_packet_set_payload(struct Packet * packet,
struct ByteSlice data);
struct Packet *sp_packet_try_load(struct ByteSlice data);
bool sp_sp_u16_to_command_code(uint16_t code,
CommandCode * result);
void sp_udp_socket_free(struct UdpSocket * instance);
struct UdpSocket *sp_udp_socket_open(char * host);
struct UdpSocket *sp_udp_socket_open_ipv4(uint8_t ip1,
uint8_t ip2,
uint8_t ip3,
uint8_t ip4,
uint16_t port);
bool sp_udp_socket_send_command(struct UdpSocket * connection,
struct GenericCommand * command);
bool sp_udp_socket_send_header(struct UdpSocket * udp_connection,
struct Header header);
bool sp_udp_socket_send_packet(struct UdpSocket * connection,
struct Packet * packet);
#ifdef __cplusplus
} #endif
#endif