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

Implement telemetry memory #179

Open
Tracked by #198
PatrickKa opened this issue Dec 13, 2023 · 7 comments
Open
Tracked by #198

Implement telemetry memory #179

PatrickKa opened this issue Dec 13, 2023 · 7 comments

Comments

@PatrickKa
Copy link
Contributor

PatrickKa commented Dec 13, 2023

Description

The telemetry memory is a ring buffer on the FRAM that stores the telemetry data of the last few weeks. I am not sure about the exact amount of time, but basically we use as much of the FRAM as possible.

The telemetry memory needs to support the following operations:

  • adding/storing new telemetry data (e.g. Store(TelemetryRecord const & telemetryRecord) -> Result<void>)
  • getting/loading one of the entries (e.g. LoadTelemetryRecord(int index ) -> Result<TelemetryRecord>)
@PatrickKa
Copy link
Contributor Author

Blocked by #185 and #192

@PatrickKa PatrickKa changed the title Implement the telemetry memory Add the telemetry memory Dec 15, 2023
@PatrickKa PatrickKa changed the title Add the telemetry memory Implement the telemetry memory Dec 15, 2023
@PatrickKa PatrickKa changed the title Implement the telemetry memory Implement telemetry memory Dec 15, 2023
@PatrickKa
Copy link
Contributor Author

PatrickKa commented Dec 18, 2023

The EDU program status history is also a ring buffer stored on the FRAM, so I guess it makes sense to implement a general ring buffer abstraction for the FRAM (see #204).

Edit: Implementing a general FRAM ring array is now tracked separatly in #323.

@PatrickKa
Copy link
Contributor Author

I think it would be good if we employed some form of error detection and correction (EDAC) for the telemetry memory. Hamming or Reed–Solomon codes are the first that come to mind, but there are many more options to choose from.

@PatrickKa
Copy link
Contributor Author

Also blocked by #207 because we need tests.

@PatrickKa
Copy link
Contributor Author

PatrickKa commented Apr 8, 2024

Blocked by #239 We will not implement #239 now due to a lack of resources. Maybe we'll come back to it later.

@PatrickKa
Copy link
Contributor Author

As explained in #294, we need a fallback mechanism in case the FRAM does not work. This means that the Telemetry Memory needs to be cached in RAM (with a smaller size, though). If the FRAM works, records are read from and written to it. Records are also always written to the cache, but only when the FRAM doesn't work are they also read from the cache.

@PatrickKa
Copy link
Contributor Author

Blocked by #323

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants