seos_hci.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #pragma once
  2. #include <furi.h>
  3. #include "seos_hci_h5.h"
  4. #include "seos_common.h"
  5. typedef void (
  6. *SeosHciReceiveCallback)(void* context, uint16_t handle, uint8_t flags, BitBuffer* pdu);
  7. typedef void (*SeosHciCompletedPacketsCallback)(void* context);
  8. typedef void (*SeosHciCentralConnectionCallback)(void* context);
  9. typedef struct {
  10. Seos* seos;
  11. SeosHciH5* seos_hci_h5;
  12. uint16_t connection_handle;
  13. SeosHciReceiveCallback receive_callback;
  14. void* receive_callback_context;
  15. SeosHciCompletedPacketsCallback completed_packets_callback;
  16. void* completed_packets_context;
  17. SeosHciCentralConnectionCallback central_connection_callback;
  18. void* central_connection_context;
  19. BleMode mode;
  20. FlowMode flow_mode;
  21. bool scan_status;
  22. bool adv_status;
  23. uint8_t address[6];
  24. uint8_t address_type;
  25. size_t adv_report_count;
  26. bool device_found;
  27. FuriTimer* timer;
  28. } SeosHci;
  29. SeosHci* seos_hci_alloc(Seos* seos);
  30. void seos_hci_free(SeosHci* seos_hci);
  31. void seos_hci_start(SeosHci* seos_hci, BleMode mode, FlowMode flow_mode);
  32. void seos_hci_stop(SeosHci* seos_hci);
  33. size_t seos_hci_recv(void* context, BitBuffer* frame);
  34. void seos_hci_acldata_send(SeosHci* seos_hci, uint8_t flags, BitBuffer* tx);
  35. void seos_hci_init(void* context);
  36. void seos_hci_set_receive_callback(
  37. SeosHci* seos_hci,
  38. SeosHciReceiveCallback callback,
  39. void* context);
  40. void seos_hci_set_completed_packets_callback(
  41. SeosHci* seos_hci,
  42. SeosHciCompletedPacketsCallback callback,
  43. void* context);
  44. void seos_hci_set_central_connection_callback(
  45. SeosHci* seos_hci,
  46. SeosHciCentralConnectionCallback callback,
  47. void* context);
  48. void seos_hci_set_scan(SeosHci* seos_hci, bool enable);
  49. void seos_hci_enable_advertising(SeosHci* seos_hci, bool enable);
  50. void seos_hci_send_scan_params(SeosHci* seos_hci);
  51. void seos_hci_connect(SeosHci* seos_hci);