#pragma once #include #include #include #include "esp_err.h" #include "freertos/FreeRTOS.h" #include "trikke_transport.h" #ifdef __cplusplus extern "C" { #endif typedef struct { uint32_t disconnect_count; uint32_t send_failure_count; uint32_t replay_count; uint32_t invalid_ack_count; } trikke_ble_transport_counters_t; typedef void (*trikke_ble_session_ready_fn)(void *context); typedef struct { portMUX_TYPE lock; bool initialized; bool connected; bool notify_enabled; bool subscribed; bool frame_active; bool frame_fully_sent_once; bool ack_received; bool session_token_valid; bool session_connection_ready; bool session_started; bool session_restart_pending; uint16_t connection_handle; uint64_t session_token; uint32_t delivery_epoch; uint32_t frame_epoch; uint32_t frame_sequence; const uint8_t *frame; size_t frame_size; size_t next_offset; int64_t ack_deadline_us; trikke_ble_session_ready_fn session_ready; void *session_ready_context; trikke_ble_transport_counters_t counters; } trikke_ble_transport_t; esp_err_t trikke_ble_transport_init( trikke_ble_transport_t *ble, trikke_transport_t *transport, trikke_ble_session_ready_fn session_ready, void *session_ready_context); void trikke_ble_transport_get_counters( trikke_ble_transport_t *ble, trikke_ble_transport_counters_t *counters); #ifdef __cplusplus } #endif