When a NTP request is sent, it may take several milliseconds to retrieve
the response. This commit changes the NTPClient::update() behaviour to
asynchronous allowing a NTP request to be sent with one update() call
and handle the response when it's available, in another call eliminating
active waiting.
This commit also changes the NTPClient::forceUpdate() implementation to
rely on the logic in NTPClient::update(). However, the behaviour of
this function does not change from the API user's perspective. It is
still synchronous, it only returns when all processing is complete.
The `carlosperate/download-file-action` action is used in the GitHub Actions workflows as a convenient way to download
external resources.
A major version ref has been added to that repository. It will always point to the latest release of the "1" major
version series. This means it is no longer necessary to do a full pin of the action version in use as before.
Use of the major version ref will cause the workflow to use a stable version of the action, while also benefiting from
ongoing development to the action up until such time as a new major release of an action is made. At that time we would
need to evaluate whether any changes to the workflow are required by the breaking change that triggered the major
release before manually updating the major ref (e.g., uses: `carlosperate/download-file-action@v2`). I think this
approach strikes the right balance between stability and maintainability for these workflows.
The comment directs the reader to find a URL "above" for more information, but there is no such URL anywhere in the source code, and never was even when the comment was introduced to the repository on the first commit.
On every push, pull request, and periodically, use the codespell-project/actions-codespell action to check for commonly
misspelled words.
In the event of a false positive, the problematic word should be added, in all lowercase, to the ignore-words-list field
of ./.codespellrc. Regardless of the case of the word in the false positive, it must be in all lowercase in the ignore
list. The ignore list is comma-separated with no spaces.
Dependabot will periodically check the versions of all actions used in the repository's workflows. If any are found to
be outdated, it will submit a pull request to update them.
NOTE: Dependabot's PRs will sometimes try to pin to the patch version of the action (e.g., updating `uses: foo/bar@v1`
to `uses: foo/bar@v2.3.4`). When the action author has provided a major version ref, use that instead
(e.g., `uses: foo/bar@v2`). Dependabot will automatically close its PR once the workflow has been updated.
More information:
https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot
library.json is PlatformIO's native library manifest file but library.properties is also supported:
https://docs.platformio.org/en/latest/librarymanager/creating.html
The library.json file has not been maintained. The version is outdated and it also has an incorrect `platforms` value. So the evidence makes it obvious that having two metadata files in this project has a harmful effect. Since the Arduino development software requires library.properties, the choice of keeping library.properties and removing library.json is clear.
The NTPClient method update() has been changed to only return "TRUE" after a successful update. The following conditions return "FALSE":
- Interval duration requirement not met
- forceUpdate() times out