Skip to content

Commit 7be86ae

Browse files
committed
Release v0.0.0
0 parents  commit 7be86ae

13 files changed

Lines changed: 412 additions & 0 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Python
2+
p3-env/

CHANGELOG.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Change log
2+
3+
All notable changes to the TAB repository are documented in this file. See the
4+
bottom of the file for a change log entry template.
5+
6+
## Overview
7+
8+
* [Unreleased](#unreleased)
9+
* [0.0.0](#0.0.0)
10+
* [Template](#template)
11+
* [License](#license)
12+
13+
## <a name="unreleased"></a> Unreleased
14+
15+
* No unreleased changes have been recorded
16+
17+
## <a name="0.0.0"></a> 0.0.0
18+
19+
### Added
20+
* Documentation, change log, contribution guide, license, README, and .gitignore
21+
* Directories and READMEs for C and Python examples and implementations, images
22+
23+
## <a name="template"></a> Template
24+
25+
### Added
26+
* New features
27+
28+
### Changed
29+
* Changes to existing functionality
30+
31+
### Deprecated
32+
* Stable features being removed in an upcoming release
33+
34+
### Removed
35+
* Depreated features removed in this release
36+
37+
### Fixed
38+
* Fixes
39+
40+
### Security
41+
* Upgrade recommendations as a result of removed vulnerabilities
42+
43+
## <a name="license"></a> License
44+
45+
Written by Bradley Denby
46+
Other contributors: None
47+
48+
See the top-level LICENSE file for the license.

CONTRIBUTING.md

Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
# For Contributors
2+
3+
If you are interested in contributing to this repository, please read and follow
4+
these guidelines.
5+
6+
## Contents
7+
8+
* [Design](#design): An overview of the repository and its structure
9+
* [Workflow Conventions](#workflow-conventions): Git workflow conventions that
10+
contributors must follow in order to contribute to the project
11+
* [Forking Workflow](#forking-workflow): The macro level workflow convention
12+
* [Gitflow Workflow](#gitflow-workflow): The micro level workflow convention
13+
* [Style Guide](#style-guide): Text and coding conventions that contributors
14+
must follow in order to contribute to the project
15+
* [License](#license)
16+
17+
## <a name="design"></a> Design
18+
19+
There is a README file in pretty much every directory. The repository is
20+
designed to be more or less self-documenting, with any questions that may arise
21+
answered in a nearby README file or, in the case of software and scripts,
22+
in-file comments.
23+
24+
The [c-implementation](c-implementation/README.md) and
25+
[python-implementation](python-implementation/README.md) directories contain TAB
26+
implementations in C and Python. The [c-examples](c-examples/README.md) and
27+
[python-examples](python-examples/README.md) directories contain examples that
28+
use the C and Python implementations of TAB. The [images](images/README.md)
29+
directory contains image files used for documentation or other purposes.
30+
31+
## <a name="workflow-conventions"></a> Workflow Conventions
32+
33+
At a macro level, development follows the [Forking Workflow](#forking-workflow).
34+
This level of development consists of interactions between contributors (e.g.
35+
pull/merge requests, forks/clones, etc). At a micro level, development follows
36+
the [Gitflow Workflow](#gitflow-workflow). This level of development consists of
37+
actions by a single contributor (e.g. branching, commits, etc).
38+
39+
### <a name="forking-workflow"></a> Forking Workflow
40+
41+
The Forking Workflow consists of three initialization steps and six iterative
42+
steps. This project's macro workflow is based on the Forking Workflow described
43+
at [https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow).
44+
45+
![Forking Workflow](images/forking-workflow.png)
46+
47+
**Initialization steps**
48+
49+
i) User A initializes Local Repository A and pushes it to Remote Repository A.
50+
```bash
51+
usera$ mkdir /path/to/repository/ && cd /path/to/repository/
52+
usera$ git init
53+
usera$ git config user.name "User A"
54+
usera$ git config user.email "[email protected]"
55+
usera$ git remote add origin https://[email protected]/usera/repository.git
56+
# Create a README file
57+
usera$ git add README.md
58+
usera$ git commit -m "Adds README"
59+
usera$ git push -u origin master
60+
```
61+
62+
ii) User B forks Remote Repository A in order to create Remote Repository B.
63+
64+
iii) User B clones Remote Repository B in order to create Local Repository B.
65+
```bash
66+
userb$ git clone https://[email protected]/userb/repository.git
67+
userb$ cd repository/
68+
userb$ git config user.name "User B"
69+
userb$ git config user.email "[email protected]"
70+
userb$ git remote add upstream https://[email protected]/usera/repository.git
71+
```
72+
73+
**Iterative Sequence**
74+
75+
0) User B fetches and merges upstream changes and makes changes according to
76+
the [Gitflow Workflow](#gitflow-workflow).
77+
78+
1) User B pushes changes made to Local Repository B to Remote Repository B.
79+
```bash
80+
userb$ git push origin branch-name
81+
```
82+
83+
2) User B submits a pull request from the updated branch in Remote Repository B
84+
to an appropriate target branch in Remote Repository A. See the
85+
[Gitflow Workflow](#gitflow-workflow) section for a list of appropriate
86+
merges.
87+
88+
3) User A fetches the changes submitted by User B from Remote Repository B to
89+
Local Repository A.
90+
```bash
91+
usera$ git fetch https://[email protected]/userb/repository.git branch-name
92+
usera$ git checkout FETCH_HEAD
93+
```
94+
User A tests the code for acceptability. Upon a successful test, the changes
95+
are merged into the indicated target branch in Local Repository A.
96+
```bash
97+
usera$ git checkout target-branch
98+
usera$ git merge --no-ff FETCH_HEAD
99+
# omit --no-ff if merging develop into develop
100+
```
101+
102+
4) User A pushes the merged changes from Local Repository A to Remote
103+
Repository A.
104+
```bash
105+
usera$ git push origin target-branch
106+
```
107+
108+
5) User B pulls the merged changes from Remote Repository A to Local
109+
Repository A.
110+
```bash
111+
userb$ git checkout target-branch
112+
userb$ git pull upstream target-branch
113+
```
114+
115+
6) User B pushes the merged changes from Local Repository B to Remote
116+
Repository B.
117+
```bash
118+
userb$ git push origin target-branch
119+
```
120+
If the original branch is not a permanent branch (i.e. the original branch is
121+
not the develop of master branch), then it should be removed.
122+
```bash
123+
userb$ git branch -d branch-name
124+
userb$ git push origin --delete branch-name
125+
```
126+
127+
### <a name="gitflow-workflow"></a> Gitflow Workflow
128+
129+
The Gitflow Workflow is a set of rules that describe how branches, merges, and
130+
commits should be made. This project's micro workflow is based on the Gitflow
131+
Workflow described at
132+
[https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow).
133+
134+
![Gitflow Workflow](images/gitflow-workflow.png)
135+
136+
In the Gitflow Workflow, there are two permanent branches: master and develop.
137+
All other branches have a limited lifespan and belong to one of three
138+
categories: features, fixes, and releases.
139+
140+
* **master**: The master branch consists only of release commits (e.g. 1.0.0,
141+
1.1.0, 1.2.1, etc). All commits are merges from a fix branch or a release
142+
branch. All commits are made by the repository maintainer. Contributors
143+
cannot commit to or merge into the master branch.
144+
* **develop**: The develop branch consists of development commits and merges
145+
from feature, fix, or release branches. Contributors should either branch
146+
from develop in order to work on a feature or commit changes to the develop
147+
branch in order to improve existing features.
148+
* **feature branches**: All feature branches must branch from the develop
149+
branch and merge into the develop branch. Feature branches may have any name.
150+
For this project, feature branches contain lowercase letters and dashes by
151+
convention.
152+
* **release branches**: All release branches must branch from the develop
153+
branch and merge into both the master branch and then the develop branch.
154+
Release branches are named "release-X.Y.0", where X and Y are integers and
155+
X.Y.0 is the upcoming release version. The project maintainer creates and
156+
merges release branches, and contributors may make commits to a release
157+
branch while it exists. Merges into a release branch generally are not
158+
allowed.
159+
* **fix branches**: All fix branches must branch from the master branch and
160+
merge into both the master branch and then the develop branch. Fix branches
161+
are named "fix-X.Y.Z", where X, Y, and Z are integers, X.Y is the current
162+
release version, and Z is the fix number. Fix branches are created to address
163+
pressing issues in the master branch code. Contributors may make commits to a
164+
fix branch while it exists, but merges into a fix branch are not allowed.
165+
166+
The following example illustrates a contributor creating a feature branch.
167+
```bash
168+
userb$ git checkout -b feature-a develop
169+
```
170+
171+
Note that the Gitflow Workflow does not tolerate rebasing, cherry picking,
172+
forced pushes, or any other commands that corrupt the commit history. **It is
173+
the responsibility of the contributor to `git fetch` changes from upstream
174+
target branches and to `git merge --ff-only` these changes into local branches
175+
before making commits or submitting pull or merge requests.**
176+
177+
## <a name="style-guide"></a> Style Guide
178+
179+
Code should adhere to the following guidelines before being sumbitted through a
180+
pull or merge request.
181+
182+
* Use two space characters instead of tab characters. Do not use tabs, and do
183+
not use four space characters for a tab.
184+
* The `{` character should always be preceded by a space character and,
185+
preceding the space character, the associated code. The `{` character should
186+
not be the first character of a line, and it should not be the first character
187+
of a line after excluding whitespace.
188+
* Text should be wrapped at 80 characters.
189+
* If wrapping a line of text, the new line of text should have the same amount
190+
of indentation as the wrapped line, plus one additional space character. E.g.
191+
do not inflate indentation to match an opening parenthesis on the wrapped
192+
line; instead, wrap the entire contents of the parentheses with the same
193+
indentation plus one additional space character. If wrapping a line multiple
194+
times, all wrapped lines have the same indentation as the first wrapped line.
195+
196+
## <a name="license"></a> License
197+
198+
Written by Bradley Denby
199+
Other contributors: None
200+
201+
See the top-level LICENSE file for the license.

DOCUMENTATION.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# TAB Documentation
2+
3+
If you are interested in using and understanding TAB, refer to this document.
4+
5+
## Overview
6+
7+
* [Commands](#commands): TAB commands
8+
* [Protocol](#protocol): TAB protocol
9+
* [License](#license)
10+
11+
## <a name="commands"></a> Commands
12+
13+
TODO
14+
15+
## <a name="protocol"></a> Protocol
16+
17+
TODO
18+
19+
## <a name="license"></a> License
20+
21+
Written by Bradley Denby
22+
Other contributors: None
23+
24+
See the top-level LICENSE file for the license.

LICENSE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
TBD

README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# TAB
2+
3+
This repository includes documentation and reference implementations for TAB,
4+
which is a serial communication protocol for satellite commands and data. TAB is
5+
inspired by, and largely compatible with, the
6+
[OpenLST](https://github.com/OpenLST/openlst) serial communication protocol for
7+
satellites. The
8+
[Tartan Artibeus Smallsat'22 paper](https://digitalcommons.usu.edu/smallsat/2022/all2022/54/)
9+
describes the origins and goals of TAB, which stands for "Tartan Artibeus Bus."
10+
TAB allows research satellites to accomplish three goals:
11+
* TAB supports deployment of research concepts to satellites in orbit. Because
12+
TAB provides a means to remotely command and control satellites, an operator
13+
can use TAB to instruct satellites in space to act out research concepts and
14+
report the results for evaluation. Thus, TAB supports *accessibility* via
15+
ground control of deployed satellites.
16+
* TAB supports hardware-in-the-loop mission simulation with flight hardware.
17+
Using TAB, mission simulation software sends commands and data to a test
18+
satellite (hardware-in-the-loop). Also using TAB, the test satellite generates
19+
replies and sends these replies to the mission simulation software in real
20+
time. Thus, TAB supports *compatibility* with hardware-in-the-loop simulation.
21+
* TAB supports intermodule communication and easy integration of third-party
22+
modules. By including the TAB reference implementation, a third-party module
23+
or custom payload immediately gains the ability to interact with the rest of
24+
the satellite. Thus, TAB supports *extensibility* via straightforward
25+
communication among independently-designed modules.
26+
27+
**Current version**: 0.0.0
28+
29+
* This software uses [semantic versioning](http://semver.org).
30+
31+
**Dependencies**
32+
33+
* The Python implementation has been tested for Python version 3.8.10. This
34+
implementation makes use of the Python serial module, which is installed via a
35+
Python virtual environment. Thus, the user must have Python virtual
36+
environment support installed: `sudo apt install python3-venv`.
37+
* The C implementation has been tested on ARM MCUs (microcontroller units).
38+
39+
## Directory Contents
40+
41+
* [c-examples](c-examples/README.md): TAB examples using the C implementation
42+
* [c-implementation](c-implementation/README.md): C implementation of TAB
43+
* [images](images/README.md): Contains image files used for documentation or
44+
other purposes
45+
* [python-examples](python-examples/README.md): TAB examples using the Python
46+
implementation
47+
* [python-implementation](python-implementation/README.md): Python
48+
implementation of TAB
49+
* [CHANGELOG.md](CHANGELOG.md): A log of changes made to the repository
50+
* [CONTRIBUTING.md](CONTRIBUTING.md): Rules for contributing to the repository
51+
* [DOCUMENTATION.md](DOCUMENTATION.md): TAB documentation
52+
* [LICENSE](LICENSE): License
53+
* [README.md](README.md): This document
54+
55+
## License
56+
57+
Written by Bradley Denby
58+
Other contributors: None
59+
60+
See the top-level LICENSE file for the license.

c-examples/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# C Examples
2+
3+
TAB examples using the C implementation
4+
5+
## Directory Contents
6+
7+
* [README.md](README.md): This document
8+
9+
## License
10+
11+
Written by Bradley Denby
12+
Other contributors: None
13+
14+
See the top-level LICENSE file for the license.

c-implementation/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# C Implementation
2+
3+
C implementation of TAB
4+
5+
## Directory Contents
6+
7+
* [README.md](README.md): This document
8+
9+
## License
10+
11+
Written by Bradley Denby
12+
Other contributors: None
13+
14+
See the top-level LICENSE file for the license.

images/README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Repository Images
2+
3+
This folder contains images used by the repository. Unless otherwise indicated,
4+
the author(s) have dedicated all copyright and related and neighboring rights to
5+
these images to the public domain worldwide to the extent possible under law
6+
under the CC0 Public Domain Dedication. These works are distributed without any
7+
warranty.
8+
9+
## Images
10+
11+
* [forking-workflow.png](forking-workflow.png)
12+
* [gitflow-workflow.png](gitflow-workflow.png): CC BY-SA 4.0 Vincent Driessen;
13+
Modified by Bradley Denby
14+
15+
## License
16+
17+
Written by Bradley Denby
18+
Other contributors: None
19+
20+
See the top-level LICENSE file for the license.

images/forking-workflow.png

29.6 KB
Loading

0 commit comments

Comments
 (0)