time.c 732 B

1234567891011121314151617181920212223242526
  1. #include <zivuos.h>
  2. void zv_time_ticks_delay(zv_ticks_t delay) {
  3. zv_ticks_t start_time = zv_time_get_ticks();
  4. zv_ticks_t end_time = start_time + delay;
  5. while (zv_time_get_ticks() < end_time) ;
  6. while (zv_time_get_ticks() >= end_time) ;
  7. }
  8. void __zv_time_process_timer(zv_event_t *target) {
  9. zv_time_t current_time = zv_time_get_time();
  10. zv_time_t end_time = target->content.time;
  11. if (target->type == ZV_EVENT_TIMER_PHRASE_FIRST) {
  12. if (current_time < end_time) {
  13. target->type = ZV_EVENT_TIMER_PHRASE_SECOND;
  14. }
  15. }
  16. if (target->type == ZV_EVENT_TIMER_PHRASE_SECOND) {
  17. if (current_time >= end_time) {
  18. target->type = ZV_EVENT_TIMER;
  19. }
  20. }
  21. }