rtthread_bt_timer_impl.c 931 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include "base/byteorder.h"
  2. #include "common/timer.h"
  3. #include "host/hci_core.h"
  4. #include "logging/bt_log_impl.h"
  5. #include <stdio.h>
  6. #include <rthw.h>
  7. #include <rtthread.h>
  8. #include <rtdevice.h>
  9. // start time.
  10. rt_tick_t last_time;
  11. static void zephyr_polling_timer_timeout(void *args)
  12. {
  13. rt_tick_t cur_time = rt_tick_get();
  14. uint32_t diff = (cur_time - last_time) * (1000u / RT_TICK_PER_SECOND);
  15. sys_clock_announce(diff);
  16. #if defined(CONFIG_BT_MONITOR_SLEEP)
  17. bt_sleep_wakeup_with_timeout();
  18. #endif
  19. last_time = cur_time;
  20. }
  21. static struct rt_timer zephyr_polling_timer;
  22. void bt_timer_impl_local_init(void)
  23. {
  24. last_time = rt_tick_get();
  25. rt_timer_init(&zephyr_polling_timer
  26. , "zephyr_polling_timer"
  27. , zephyr_polling_timer_timeout
  28. , 0
  29. , rt_tick_from_millisecond(10)
  30. , RT_TIMER_FLAG_PERIODIC);
  31. rt_timer_start(&zephyr_polling_timer);
  32. sys_clock_announce(0);
  33. }