seos_l2cap.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include <furi.h>
  3. #include <lib/toolbox/bit_buffer.h>
  4. #include "seos_hci.h"
  5. #include "seos_common.h"
  6. typedef void (*SeosL2CapReceiveCallback)(void* context, BitBuffer* payload);
  7. typedef void (*SeosL2CapCentralConnectionCallback)(void* context);
  8. typedef struct {
  9. Seos* seos;
  10. SeosHci* seos_hci;
  11. // Where to collect up data
  12. BitBuffer* tx_accumulator;
  13. BitBuffer* rx_accumulator;
  14. uint16_t pdu_len;
  15. uint16_t handle;
  16. SeosL2CapReceiveCallback receive_callback;
  17. void* receive_callback_context;
  18. SeosL2CapCentralConnectionCallback central_connection_callback;
  19. void* central_connection_context;
  20. } SeosL2Cap;
  21. SeosL2Cap* seos_l2cap_alloc(Seos* seos);
  22. void seos_l2cap_free(SeosL2Cap* seos_l2cap);
  23. void seos_l2cap_start(SeosL2Cap* seos_l2cap, BleMode mode, FlowMode flow_mode);
  24. void seos_l2cap_stop(SeosL2Cap* seos_l2cap);
  25. void seos_l2cap_recv(void* context, uint16_t handle, uint8_t flags, BitBuffer* pdu);
  26. void seos_l2cap_send_next_chunk(void* context);
  27. void seos_l2cap_send(SeosL2Cap* seos_l2cap, BitBuffer* content);
  28. void seos_l2cap_central_connection(void* context);
  29. void seos_l2cap_set_receive_callback(
  30. SeosL2Cap* seos_l2cap,
  31. SeosL2CapReceiveCallback callback,
  32. void* context);
  33. void seos_l2cap_set_central_connection_callback(
  34. SeosL2Cap* seos_l2cap,
  35. SeosL2CapCentralConnectionCallback callback,
  36. void* context);