seos_hci.h 2.1 KB

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