Implemented basic connection logic

This commit is contained in:
Nikita Tyukalov, ASUS, Linux
2026-03-25 00:25:47 +03:00
parent 7eaf35ea4c
commit 8e90c4c152
6 changed files with 572 additions and 1 deletions

92
ring_buffer.h Normal file
View File

@@ -0,0 +1,92 @@
#ifndef __RING_BUFFER_H
#define __RING_BUFFER_H
#include <stdint.h>
/*
* Type definitions
*/
typedef void* rb_handle_t;
/*
* Public API
*/
// Allocate a new ring buffer.
// Parameters:
// - size - size of buffer in bytes
// Returns:
// - ring buffer handle on success
// - NULL on out-of-memory
rb_handle_t rb_allocate(uint32_t size);
// Free ring buffer.
// Parameters:
// - rb - ring buffer
// Remarks:
// - no-op if rb is NULL
void rb_free(rb_handle_t rb);
// Get free size of ring buffer.
// Parameters:
// - rb - ring buffer
// Returns:
// - count of free bytes in ring buffer
uint32_t rb_get_free_bytes(rb_handle_t rb);
// RAW ACCESS. Get count of bytes you can read in one call.
// Parameters:
// - rb - ring buffer
// Returns:
// - count of bytes you can copy from rb_raw_read_ptr()
// Remarks:
// - you may read until this function returns zero
uint32_t rb_raw_read_size(rb_handle_t rb);
// RAW ACCESS. Get pointer to the area you can read from.
// Parameters:
// - rb - ring buffer
// Returns:
// - memory you can read from (use rb_raw_read_size to get max read size)
const void *rb_raw_read_ptr(rb_handle_t rb);
// RAW ACCESS. Notify the ring buffer that a read has happened.
// Parameters:
// - rb - ring buffer
// - size - how much bytes were read
// Returns:
// - count of bytes you can still read
// Remarks:
// - no-op if size == 0 (but return value is still valid)
// - this function will not check for overflow
uint32_t rb_raw_read_advance(rb_handle_t rb, uint32_t size);
// RAW ACCESS. Get count of bytes you can write in one call.
// Parameters:
// - rb - ring buffer
// Returns:
// - count of bytes you can write to rb_raw_write_ptr()
// Remarks:
// - you may write until this function returns zero
uint32_t rb_raw_write_size(rb_handle_t rb);
// RAW ACCESS. Get pointer to the area you can write to.
// Parameters:
// - rb - ring buffer
// Returns:
// - memory you can write to (use rb_raw_write_size to get max write size)
void *rb_raw_write_ptr(rb_handle_t rb);
// RAW ACCESS. Notify the ring buffer that a write has happened.
// Parameters:
// - rb - ring buffer
// - size - how much bytes were written
// Returns:
// - count of bytes you can still write
// Remarks:
// - no-op if size == 0 (but return value is still valid)
// - this function will not check for overflow
uint32_t rb_raw_write_advance(rb_handle_t rb, uint32_t size);
#endif