|
| | SoftCombiner () |
| | Construct a SoftCombiner with defaults.
|
| | SoftCombiner (bool enabled, bool runSelfTest=true) |
| | Construct a SoftCombiner with explicit enable flag.
|
| Key | makeKey (int mode, float f1, float dt, std::array< float, N > const &llr0, std::array< float, N > const &llr1) const |
| | Create a Key for a candidate from its parameters and LLRs.
|
| Combined | combine (Key const &key, std::array< float, N > const &llr0, std::array< float, N > const &llr1, std::chrono::seconds ttl) |
| | Attempt to combine incoming LLRs with cached repeats.
|
| void | markDecoded (Key const &key) |
| | Remove cached repeats for a candidate that has been decoded.
|
| void | flush (std::chrono::seconds ttl) |
| | Remove cached entries older than ttl.
|
template<std::size_t N>
class js8::SoftCombiner< N >
Cache and combine repeated LLR frames for the same decode candidate.
Uses a coarse freq/dt bin and a small LLR signature as the key; repeated receptions accumulate LLRs to improve decode probability without changing over-the-air behavior. The combiner is templated on the LLR length N so the caller binds it to the decoder's bit count. Typical usage:
- Call makeKey() to construct a lookup key for a candidate.
- Call combine() with the candidate's LLRs to accumulate and retrieve combined LLRs and repeat count.