esp_event_api.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include "esp_event.h"
  2. #include "esp_event_cxx.hpp"
  3. #include "esp_event_api.hpp"
  4. #ifdef __cpp_exceptions
  5. namespace idf {
  6. namespace event {
  7. ESPEventAPIDefault::ESPEventAPIDefault()
  8. {
  9. esp_err_t res = esp_event_loop_create_default();
  10. if (res != ESP_OK) {
  11. throw idf::event::EventException(res);
  12. }
  13. }
  14. ESPEventAPIDefault::~ESPEventAPIDefault()
  15. {
  16. esp_event_loop_delete_default();
  17. }
  18. esp_err_t ESPEventAPIDefault::handler_register(esp_event_base_t event_base,
  19. int32_t event_id,
  20. esp_event_handler_t event_handler,
  21. void *event_handler_arg,
  22. esp_event_handler_instance_t *instance)
  23. {
  24. return esp_event_handler_instance_register(event_base,
  25. event_id,
  26. event_handler,
  27. event_handler_arg,
  28. instance);
  29. }
  30. esp_err_t ESPEventAPIDefault::handler_unregister(esp_event_base_t event_base,
  31. int32_t event_id,
  32. esp_event_handler_instance_t instance)
  33. {
  34. return esp_event_handler_instance_unregister(event_base, event_id, instance);
  35. }
  36. esp_err_t ESPEventAPIDefault::post(esp_event_base_t event_base,
  37. int32_t event_id,
  38. void* event_data,
  39. size_t event_data_size,
  40. TickType_t ticks_to_wait)
  41. {
  42. return esp_event_post(event_base,
  43. event_id,
  44. event_data,
  45. event_data_size,
  46. ticks_to_wait);
  47. }
  48. ESPEventAPICustom::ESPEventAPICustom(const esp_event_loop_args_t &event_loop_args)
  49. {
  50. esp_err_t res = esp_event_loop_create(&event_loop_args, &event_loop);
  51. if (res != ESP_OK) {
  52. throw idf::event::EventException(res);
  53. }
  54. }
  55. ESPEventAPICustom::~ESPEventAPICustom()
  56. {
  57. esp_event_loop_delete(event_loop);
  58. }
  59. esp_err_t ESPEventAPICustom::handler_register(esp_event_base_t event_base,
  60. int32_t event_id,
  61. esp_event_handler_t event_handler,
  62. void *event_handler_arg,
  63. esp_event_handler_instance_t *instance)
  64. {
  65. return esp_event_handler_instance_register_with(event_loop,
  66. event_base,
  67. event_id,
  68. event_handler,
  69. event_handler_arg,
  70. instance);
  71. }
  72. esp_err_t ESPEventAPICustom::handler_unregister(esp_event_base_t event_base,
  73. int32_t event_id,
  74. esp_event_handler_instance_t instance)
  75. {
  76. return esp_event_handler_instance_unregister_with(event_loop, event_base, event_id, instance);
  77. }
  78. esp_err_t ESPEventAPICustom::post(esp_event_base_t event_base,
  79. int32_t event_id,
  80. void* event_data,
  81. size_t event_data_size,
  82. TickType_t ticks_to_wait)
  83. {
  84. return esp_event_post_to(event_loop,
  85. event_base,
  86. event_id,
  87. event_data,
  88. event_data_size,
  89. ticks_to_wait);
  90. }
  91. esp_err_t ESPEventAPICustom::run(TickType_t ticks_to_run)
  92. {
  93. return esp_event_loop_run(event_loop, ticks_to_run);
  94. }
  95. } // event
  96. } // idf
  97. #endif // __cpp_exceptions