Skip to content

Implement SSDV - #1791

Open
StevenCellist wants to merge 15 commits into
masterfrom
ssdv
Open

Implement SSDV#1791
StevenCellist wants to merge 15 commits into
masterfrom
ssdv

Conversation

@StevenCellist

@StevenCellist StevenCellist commented May 28, 2026

Copy link
Copy Markdown
Collaborator

See the pictures at https://ssdv.habhub.org/
The included image.h is the 256×256 RadioLib logo.

Reception is not implemented. I have a file that receives the LoRa packets and parses the contents. It should be possible to reconstruct the image on-device but I have no incentive to implement this. But happy to add a function and example that returns a struct with the parsed info when supplied with a LoRa packet.

Please have a look at the licensing of the included files. And maybe Reed-Solomon should live in the utils directory?

Closes #129.

@StevenCellist StevenCellist changed the title Implement SSDV (transmission) Implement SSDV May 28, 2026
@StevenCellist

Copy link
Copy Markdown
Collaborator Author

With the power of an LLM there is now also an example that receives and decodes the JPEGs. LLMs are stupid and had to correct some very weird stuff and reduce lotsss of comments. But hey, otherwise we wouldn't have had this example.

@StevenCellist
StevenCellist requested a review from jgromes May 28, 2026 19:55

@jgromes jgromes left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, I only have two comments to the code. Also one general comment - I would really prefer to have the portions of AI-geenrated code marked in some way (e.g. as a comment or note in the doxygen method description).

// Heap-allocate the ssdv_t decoder state.
// ssdv_t is a large struct (~2 KB) containing Huffman and quantisation
// table arrays; heap allocation avoids blowing the stack.
this->decoder = reinterpret_cast<ssdv_t*>(malloc(sizeof(ssdv_t)));

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C++ new/delete should really by used here and elsewehre in the file instead of C malloc/free

Comment thread src/TypeDef.h
/*!
\brief malloc() returned NULL while allocating the packet buffer.
*/
#define RADIOLIB_ERR_SSDV_ALLOC_FAILED (-1506)

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We ahve a generic error code for failed memory allocations, RADIOLIB_ERR_MEMORY_ALLOCATION_FAILED - I think a new error code is not needed.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Additon of SSDV protocol

2 participants