Files
e36/readme.md

119 lines
3.7 KiB
Markdown

# sstv e36 encoder
This is a SSTV "encoder", currently it is in work, but it has some modes already: (update of 09.04.26 - We now have a component with miniaudio which is able to stream in live microphone data)
Future plans for a decoder have been made. I do not plan to do any decoding
soon. Wayy to much of a workload, high cortisol!
## Support Table:
|Support?|Mode | Encode | Decode |
|--------|------------|--------|--------|
|[x] |Martin 1 |[x] |[] |
|[x] |Martin 2 |[x] |[] |
|[x] |Robot 36 |[x] |[] |
|[x] |Scottie 1 |[x] |[] |
|[x] |Scottie 2 |[x] |[] |
|[x] |ScottieD(S)X|[x] |[] |
Written in _pure_ **C** with some _Makefiles_ to pull it together
## Changes:
- 09.04.26
- Added Audio stream provider ([.c](/src/decoder/provider/audio_in_provider.c), [.h](/include/decoder/provider/audio_in_provider.h), [test](/src/decoder/test/audio_in_provider_test.c))
- Added Licenses to [third party](/third_party/license/)
- Added a few things to the [gitignore](.gitignore)
- Added new [AP_TEST](/include/decoder/provider/audio_in_provider.h) to [Makefile](Makefile)
- Added [miniaudio.h](https://miniaud.io/)
### For developing or adding to the source code:
_**This is just standard C17 Standard**_
Compilation is done via the gcc compiler, we do NOT allow MSVC here.
If you are on Windows then i suggest to use the WSL.
Be sure to follow this style of code, it is not that complex,
and some parts you can even tell Vim or Emacs or whatever you use to automate it,
like the header definitions (default i think on vs and some others).
#### Defining Headers:
Try to follow this general pattern.
In of itself it is relativley easy to maintain this structure.
And it is also relativley easy to write in this style!
_**This is just standard C17 Standard**_
```h
#ifndef HEADER_H
#define HEADER_H
#include <stdint.h> // <> is for "glibc" stuff
#include "encoder/sound/wav.h" // "" for local stuff. which isnt "glibc"
typedef struct {
uint8_t type;
} mystruct_t;
int method_to_use(mystruct_t type);
#endif // !HEADER_H
```
Refer to "[Using Headers](#using-headers)" for how to use Headers!
#### Using Headers:
You may define your Header files as module like structures! Like in Java!
This is nicer to work with cause you dont need to then dump everything into the project root!
In you C File:
```c
#include "decoder/modes/martin.h" // for example
```
#### C Files:
For a real implementation this stub below would make 0 sense,
but this is the general style you should follow, it includes CAPITAL definitions,
local imports in "" and at the top, others below.
Try to comment your code if it does not make sense.
If you encounter something like `Q_rsqrt` (The Quake inverse square root), then you are
permitted to comment some swear words.
Great example of commenting : "robot36.c"
```c
#include "header.h" // Refer to Using Headers
#define PI 3
#define SOME_DEF 67
int method_to_use(mystruct_t type) {
return 67 * type;
}
```
References:
- [Using Headers](#using-headers)
- [Defining Headers](#defining-headers)
#### Defining new Modes:
If you have the balls to define a new Mode, then refer to the Dayton Papers!
And when your done make this [Table](#support-table) complete!
#### Defining Stuff in the Makefile:
If you were to add new Modules then add them to the makefile.
As a Example are our CFLAGS. which define which include directories to use! Currently it is just include and third_party (for stbi)
### Licensing:
All Third-Party Licenses are available under *[./third_party/license/](./third_party/license/)*
Our Licenses is a MIT License is available under [*./LICENSE*](./LICENSE)