Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: release version 0.2.0 #72

Merged
merged 32 commits into from
Jan 5, 2024
Merged

feat: release version 0.2.0 #72

merged 32 commits into from
Jan 5, 2024

Conversation

90degs2infty
Copy link
Owner

No description provided.

90degs2infty and others added 30 commits November 18, 2023 17:35
The merged code requires some refactoring after implementing the game
observer from #7 .
Closes #17 

Note that this commit also includes a minor refactoring, moving the
transition between different `State`s from `GameDriver::run` to
`State::tick`.
This commit condenses the `GameDriver` to its bare minimum.
Timer tick handling is now done in `GameTickDriver`

Closes #10
This commit makes `GameTickDriver` expose a `Started` and `Stopped` state.

Closes #25
This commit makes the `GameTickDriver` skip every other timer tick, unless button A is pressed.
To match the previous game tick frequency, the timer tick frequency is doubled.

Closes #26
Summary of implemented components:

- `RotationDriver` alongside `GpioResources` to bridge between
  peripherals and `GameDriver`
- `State::rotate` to bridge between `GameDriver` and game engine
- boilerplate in application to setup the `RotationDriver`

Closes #27
This commit drops `Message::BtnAPress`, as button A is not required to trigger interrupts.
Instead, it is queried upon timer tick.

Closes #38
Summary of what is implemented in this commit:

- setup of CI/CD pipeline consisting of jobs to
  - check,
  - format,
  - lint and
  - build
  the code.
- store built binaries as artifacts (currently accessible via the
  workflow only, i.e. no release generation or similar).
- move configuration of `clippy` lints to `Cargo.toml`
- resolve open lints

Note that as of now, documentation related lints are kept
`allow`ed. This is because of time constraints and source
code documentation not being required for hand-in.

Closes #45, closes #44, closes #36
Summary of changes implemented in this commit:

- implement driver to move tile horizontally up to the point that
  accelerometer data is read from the sensor
- work around known bug in interface MCU firmware to clear the
  internal I2C's interrupt line

Note that stopping the driver remains untested for the
moment.

Closes #42
Summary of changes implemented in this commit:

- move tile horizontally according to data read from accelerometer
- minor refactoring of Jone's trick

Closes #51, closes #29
Summary of what is implemented in this PR:

- make `GameDriver` (and in turn `State`) generic wrt. the
  methodology of generating `BasicTile`s.
  Different methodologies are abstracted by means of the
  `TileProducer` trait.
- implement producer looping through all available `BasicTiles`
- refactoring of the `game` module into smaller submodules

Closes #31
Summary of changes implemented in this PR:

- write up a module `cli` containing drivers to drive the processing of
commands
- `DownlinkDriver` takes care of consuming serial data coming from the
host,
    mapping byte-strings to commands
  - `CommandReceiver` drives execution of commands
- `UplinkDriver` takes care of sending strings back to the host by means
of the
    serial interface
- write up a `util` module featuring several helpers
- `nb_async` to bridge between `nb::Result` and `async` Rust by means of
busy
    waiting
  - `StringIter` to aid conversion from `&str` to message-passable
    `heapless::String`s
- "serial" commands `help` and `ver` to print a help string and VCS
information
  respectively

Closes #28
This commit streamlines issued calls to
`demft`-based logging macros.

Closes #55
Summary of what is implemented in this commit:

- demote warning in `GameDriver` when having multiple
  messages pending to debug print, as the condition of
  having multiple messages pending is not inherently
  problematic
- raise frame update task priority from 1 to 2 to allow for
  preemption (frame update preempting the surrounding
  `GameDriver` logic) and avoid frame updates getting
  dropped
- raise soft-drop frequency from 2Hz to 3Hz to make the
  change in speed more obvious to the user
- raise high-level display toggle frequency from 5Hz to 6Hz
  to have at least one blink per soft-drop interval

Closes #59
With this commit, a ready to use debug task for `vscode` is set up.

Closes #65
@90degs2infty 90degs2infty added the enhancement New feature or request label Jan 5, 2024
@90degs2infty 90degs2infty added this to the mvp milestone Jan 5, 2024
@90degs2infty 90degs2infty self-assigned this Jan 5, 2024
@90degs2infty 90degs2infty merged commit 5669749 into main Jan 5, 2024
15 checks passed
@90degs2infty 90degs2infty deleted the 69-release-version-020 branch January 5, 2024 13:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant