GNU Radio's SATNOGS Package
|
A generic frame acquisition block. More...
#include <frame_acquisition.h>
Public Types | |
enum | variant_t { GENERIC_CONSTANT_FRAME_LEN = 0, GENERIC_VAR_FRAME_LEN, GOLAY24_CODED_FRAME_LEN } |
enum | checksum_t { CRC_NONE = 0, CRC16_CCITT, CRC16_CCITT_REVERSED, CRC16_IBM, CRC32 } |
typedef boost::shared_ptr< frame_acquisition > | sptr |
Static Public Member Functions | |
static sptr | make (variant_t variant, const std::vector< uint8_t > &preamble, size_t preamble_threshold, const std::vector< uint8_t > &sync, size_t sync_threshold, size_t frame_size_field_len, size_t frame_len, checksum_t crc=CRC_NONE, whitening::whitening_sptr descrambler=nullptr, size_t max_frame_len=2048) |
A generic frame acquisition block.
A generic frame acquisition block trying to cover a variaty of different framing schemes.
The goal of this block is to provide a unified way to acquire the frame from different satellites with different but closely related framing schemes. To keep the logic inside the block simple, it assumes that the received bit stream is ready for framing extraction. Any bit stream coding, like NRZI, Manchester, etc should be done prior this block.
Currently the supported are:
The block supports also an arbitrary descrambler (if provided) using the satnogs::whitening claass.
For the CRC calculation (if any) the currently supported schemes are:
typedef boost::shared_ptr<frame_acquisition> gr::satnogs::frame_acquisition::sptr |
|
static |
A generic frame acquisition block trying to cover a variaty of different framing schemes.
The goal of this block is to provide a unified way to acquire the frame from different satellites with different but closely related framing schemes. To keep the logic inside the block simple, it assumes that the received bit stream is ready for framing extraction. Any bit stream coding, like NRZI, Manchester, etc should be done prior this block.
variant | the framing variant |
preamble | the preamble should be a repeated word. Note that due to AGC settling, the receiver may not receive the whole preamble. If the preamble is indeed a repeated pattern, a portion of it can be given as parameter. The block should be able to deal with this. However, a quite small subset may lead to a larger number of false alarms. |
preamble_threshold | the maximum number of bits that are allowed to be wrong at the preamble |
sync | the sysnchronization work following the preamble |
sync_threshold | the maximum number of bits that are allowed to be wrong at the synchronization word |
frame_size_field_len | the length of the field describing the frame length. I most cases should be 1 or 2. |
frame_len | if the variant dictates a constant frame length, this parameter provides the length of the frame |
crc | the CRC scheme to use |
descrambler | the descramble used |
max_frame_len | the maximum allowed frame length |