pw_chrono: Adds SystemClock helper to compute deadlines

Adds SystemClock::TimePointAfterAtLeast to compute the nearest
time_point after the specified duration has fully elapsed.

This adds in a single tick to handle the partial tick problem
where for example a timeout of 1 tick can result in anything from
non-blocking to the actual requested tick [0,1]. Instead this
adds a singular tick resulting in at most 1 added tick where the
timeout is instead [1,2].

No-Docs-Update-Reason: Trivial helper, full docs are coming soon.
Change-Id: Ica29a6bbd30133b3d9dfc43333c3fe6fff49ea74
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/42934
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
1 file changed
tree: 0e4b1faf71d70f9bdf8d01d12b9b94228e3d6621
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_arduino_build/
  6. pw_assert/
  7. pw_assert_basic/
  8. pw_assert_log/
  9. pw_base64/
  10. pw_bloat/
  11. pw_blob_store/
  12. pw_boot_armv7m/
  13. pw_build/
  14. pw_bytes/
  15. pw_checksum/
  16. pw_chrono/
  17. pw_chrono_embos/
  18. pw_chrono_freertos/
  19. pw_chrono_stl/
  20. pw_chrono_threadx/
  21. pw_cli/
  22. pw_containers/
  23. pw_cpu_exception/
  24. pw_cpu_exception_cortex_m/
  25. pw_docgen/
  26. pw_doctor/
  27. pw_env_setup/
  28. pw_fuzzer/
  29. pw_hdlc/
  30. pw_hex_dump/
  31. pw_i2c/
  32. pw_interrupt/
  33. pw_interrupt_cortex_m/
  34. pw_kvs/
  35. pw_log/
  36. pw_log_basic/
  37. pw_log_multisink/
  38. pw_log_null/
  39. pw_log_rpc/
  40. pw_log_sink/
  41. pw_log_tokenized/
  42. pw_malloc/
  43. pw_malloc_freelist/
  44. pw_metric/
  45. pw_minimal_cpp_stdlib/
  46. pw_module/
  47. pw_multisink/
  48. pw_package/
  49. pw_persistent_ram/
  50. pw_polyfill/
  51. pw_preprocessor/
  52. pw_presubmit/
  53. pw_protobuf/
  54. pw_protobuf_compiler/
  55. pw_random/
  56. pw_result/
  57. pw_ring_buffer/
  58. pw_router/
  59. pw_rpc/
  60. pw_span/
  61. pw_status/
  62. pw_stream/
  63. pw_string/
  64. pw_sync/
  65. pw_sync_baremetal/
  66. pw_sync_embos/
  67. pw_sync_freertos/
  68. pw_sync_stl/
  69. pw_sync_threadx/
  70. pw_sys_io/
  71. pw_sys_io_arduino/
  72. pw_sys_io_baremetal_lm3s6965evb/
  73. pw_sys_io_baremetal_stm32f429/
  74. pw_sys_io_stdio/
  75. pw_target_runner/
  76. pw_thread/
  77. pw_thread_embos/
  78. pw_thread_freertos/
  79. pw_thread_stl/
  80. pw_thread_threadx/
  81. pw_tokenizer/
  82. pw_tool/
  83. pw_toolchain/
  84. pw_trace/
  85. pw_trace_tokenized/
  86. pw_unit_test/
  87. pw_varint/
  88. pw_watch/
  89. pw_web_ui/
  90. targets/
  91. third_party/
  92. .bazelignore
  93. .bazelrc
  94. .clang-format
  95. .eslintrc.json
  96. .gitattributes
  97. .gitignore
  98. .gn
  99. .prettierrc.js
  100. .pylintrc
  101. activate.bat
  102. AUTHORS
  103. bootstrap.bat
  104. bootstrap.sh
  105. BUILD
  106. BUILD.gn
  107. BUILDCONFIG.gn
  108. CMakeLists.txt
  109. LICENSE
  110. modules.gni
  111. OWNERS
  112. package.json
  113. PW_PLUGINS
  114. README.md
  115. tsconfig.json
  116. WORKSPACE
  117. yarn.lock
README.md

See our website: http://pigweed.dev