Skip to content

Commit

Permalink
Add content to README.md (#9)
Browse files Browse the repository at this point in the history
  • Loading branch information
aggarw13 authored Apr 30, 2021
1 parent e48773b commit ec80f3a
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 19 deletions.
15 changes: 15 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,3 +76,18 @@ jobs:
run: |
git-secrets --register-aws
git-secrets --scan
link-verifier:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup Python for link verifier action
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Check Links
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: FreeRTOS/CI-CD-GitHub-Actions/link-verifier@main
with:
path: ./
include-file-types: .c,.h,.dox
61 changes: 42 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,67 @@
## coreSNTP Library

This repository contains the coreSNTP library, a client library to use the Simple Network Time Protocol (SNTP), that is specified in [RFC 4330](https://tools.ietf.org/html/rfc4330), to synchronize client devices with network time.
According to the SNTPv4 specification, "_To an NTP or SNTP server, NTP and SNTP clients are indistinguishable; to an NTP or SNTP client, NTP and SNTP servers are indistinguishable._", thereby, allowing SNTP clients to request time from NTP servers.
**Note:** This library is under development.

## Reference example
This repository contains the coreSNTP library, a client library to use Simple Network Time Protocol (SNTP) to synchronize device clocks with internet time. This library implements the SNTPv4 specification defined in [RFC 4330](https://tools.ietf.org/html/rfc4330).

An SNTP client can request time from both NTP and SNTP servers. According to the SNTPv4 specification, "_To an NTP or SNTP server, NTP and SNTP clients are indistinguishable; to an NTP or SNTP client, NTP and SNTP servers are indistinguishable._", thereby, allowing SNTP clients to request time from NTP servers.

## Cloning this repository
This repo uses [Git Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) to bring in dependent components.

To clone using HTTPS:
```
git clone https://github.com/FreeRTOS/coreSNTP.git --recurse-submodules
```
Using SSH:
```
git clone [email protected]:FreeRTOS/coreSNTP.git --recurse-submodules
```

If you have downloaded the repo without using the `--recurse-submodules` argument, you need to run:
```
git submodule update --init --recursive
```

## Building the library

## Building unit tests
You can build the coreSNTP source files that are in the [source](source/) directory, and add [source/include](source/include) to your compiler's include path.

If using CMake, the [coreSntpFilePaths.cmake](coreSntpFilePaths.cmake) file contains the above information of the source files and the header include path from this repository.

## Building Unit Tests

### Checkout Unity Submodule
By default, the submodules in this repository are configured with `update=none` in [.gitmodules](.gitmodules), to avoid increasing clone time and disk space usage of other repositories (like [amazon-freertos](https://github.com/aws/amazon-freertos) that submodules this repository).
### Checkout CMock Submodule

To build unit tests, the submodule dependency of Unity is required. Use the following command to clone the submodule:
To build unit tests, the submodule dependency of CMock is required. Use the following command to clone the submodule:
```
git submodule update --checkout --init --recursive --test/unit-test/Unity
git submodule update --checkout --init --recursive test/unit-test/CMock
```

### Platform Prerequisites
### Unit Test Platform Prerequisites

- For running unit tests
- C89 or later compiler like gcc
- CMake 3.13.0 or later
- For running the coverage target, gcov is additionally required.
- **C90 compiler** like gcc
- **CMake 3.13.0 or later**
- **Ruby 2.0.0 or later** is additionally required for the CMock test framework (that we use).
- For running the coverage target, **gcov** and **lcov** are additionally required.

### Steps to build Unit Tests
### Steps to build **Unit Tests**

1. Go to the root directory of this repository. (Make sure that the **Unity** submodule is cloned as described [above](#checkout-unity-submodule).)
1. Go to the root directory of this repository. (Make sure that the **CMock** submodule is cloned as described [above](#checkout-cmock-submodule))

1. Create build directory: `mkdir build && cd build`
1. Run the *cmake* command: `cmake -S test -B build`

1. Run *cmake* while inside build directory: `cmake -S ../test`

1. Run this command to build the library and unit tests: `make all`
1. Run this command to build the library and unit tests: `make -C build all`

1. The generated test executables will be present in `build/bin/tests` folder.

1. Run `ctest` to execute all tests and view the test run summary.
1. Run `cd build && ctest` to execute all tests and view the test run summary.

## Contributing

See [CONTRIBUTING.md](./.github/CONTRIBUTING.md) for information on contributing.

## License

This library is licensed under the MIT License. See the [LICENSE](LICENSE) file.

0 comments on commit ec80f3a

Please sign in to comment.