64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#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
|