GNU Radio's SATNOGS Package
|
Classes | |
union | _cnv |
class | amsat_duv_decoder |
AMSAT 8b10b + CCSDS RS DUV decoder. More... | |
class | argos_ldr_decoder |
ARGOS Low Data Rate HDLC decoder. More... | |
class | ax100_decoder |
This decoder tries to cover all the supported framing and coding schemes of the AX100 product from GOMSpace. It also supports some variants that have appear in different missions, including excet the ASM and a repeated preamble. More... | |
class | ax25_decoder |
AX.25 decoder that supports the legacy hardware radios. More... | |
class | ax25_encoder_mb |
AX.25 encoder block that supports the legacy hardware radios. More... | |
class | ax25_encoder_mb_impl |
struct | ax25_frame_t |
class | coarse_doppler_correction_cc |
This block corrects the doppler effect between the ground station and the satellite in a coarse and very simplified way. Instead of changing the hardware center frequency, we use an NCO to digitally compensate the doppler effect. More... | |
class | coarse_doppler_correction_cc_impl |
class | convolutional_deinterleaver |
<+description+> More... | |
class | crc |
class | cw_decoder |
CW decoder based on overlapping FFT. More... | |
class | cw_decoder_priv |
Helper class for the CW decoder. More... | |
class | cw_encoder |
CW encoder block, mainly for debugging and testing purposes. It accepts a CW word via a message source port and transmits the corresponding CW symbols. More... | |
class | cw_encoder_impl |
class | cw_to_symbol |
The CW to Symbol block tries to translate the input signal into Morse symbols. The input signal should have been already properly filtered and processed. A possible DSP on the input signal may be the squared magnitude or the amplitude of the autocorrelation. Proper filtering that take cares possible spikes may drastically increase the performance of this block. More... | |
class | debug_msg_source |
A block for debug reasons producing specific messages. | |
class | debug_msg_source_impl |
class | debug_msg_source_raw |
A block for debug reasons producing specific messages. The input message can be anything, opposed to the debug_msg_source() block that can accept only string messages. | |
class | debug_msg_source_raw_impl |
class | decoder |
Abstract class that provided the API for the c decoders. More... | |
class | decoder_status |
class | doppler_correction_cc |
This block corrects the doppler effect between the ground station and the satellite. It takes the input stream in baseband and applies proper corrections to keep the carrier at the desired frequency. To achieve that it uses messages containing the absolute predicted frequency of the satellite from software like Gpredict. More... | |
class | doppler_correction_cc_impl |
class | doppler_fit |
Doppler frequency fitting using Lagrange extrapolation. More... | |
class | encoder |
Abstract class defining the API of the SatNOGS Encoders. More... | |
class | frame_acquisition |
A generic frame acquisition block. More... | |
class | frame_acquisition_impl |
class | frame_decoder |
This is a generic frame decoder block. It takes as input a bit stream and produces decoded frames and their metadata. More... | |
class | frame_decoder_impl |
class | frame_encoder |
<+description of block+> More... | |
class | frame_encoder_impl |
class | frame_file_sink |
<+description of block+> More... | |
class | frame_file_sink_impl |
class | golay24 |
A binary Golay (24,12,8) encoder and decoder. More... | |
class | ieee802_15_4_encoder |
An IEEE802.15.4 frame encoder with some extended parameterization. More... | |
class | ieee802_15_4_variant_decoder |
A IEEE 802.15.4 like decoder. More... | |
class | iq_sink |
This block converts a complex float input stream to short and stores it to a file. If the value of status argument is zero the block behaves as a null sink block. More... | |
class | iq_sink_impl |
class | json_converter |
This block takes a PMT message from the SatNOGS decoders and converts it a PMT containing the same message in JSON form. This can be used for debugging and stream operations. More... | |
class | json_converter_impl |
class | lrpt_decoder |
<+description of block+> More... | |
class | lrpt_decoder_impl |
class | lrpt_sync |
<+description of block+> More... | |
class | lrpt_sync_impl |
class | metadata |
class | morse_debug_source |
A Morse debug source block that supports injection of random errors based on a Bernulli distribution with probability p. | |
class | morse_debug_source_impl |
class | morse_decoder |
Morse code decoder block. More... | |
class | morse_tree |
A Binary tree representation of the Morse coding scheme. Left transitions occur when a dot is received, whereas right transitions are performed during the reception of a dash. More... | |
class | moving_sum |
Simple moving sum template using std::deque. More... | |
class | multi_format_msg_sink |
Block accepting clear text messages from various decoders. Its purpose is to forward these messages at other services, programs, stdout, etc,. More... | |
class | multi_format_msg_sink_impl |
class | noaa_apt_sink |
class | noaa_apt_sink_impl |
class | ogg_encoder |
Ogg encoder and sink block. More... | |
class | ogg_encoder_impl |
class | ogg_source |
OGG source block. Reads a file with an OGG audio and convert it to float samples. More... | |
class | ogg_source_impl |
class | qb50_deframer |
Parses the received AX.25 and separates the telecommand and control frames from the WOD frames. More... | |
class | shift_reg |
Implements a bit shift register. More... | |
class | sstv_pd120_sink |
SSTV demodulator block. More... | |
class | sstv_pd120_sink_impl |
struct | tc_tm_pkt |
class | tcp_rigctl_msg_source |
Block that accepts TCP messages with rigctl commands. Depending the command contents this block produces an appropriate PMT message to control other blocks in the flowgraph. More... | |
class | tcp_rigctl_msg_source_impl |
class | tree_node |
Binary tree node containing the corresponding character. More... | |
class | udp_msg_sink |
<+description of block+> More... | |
class | udp_msg_sink_impl |
class | udp_msg_source |
UDP message/command accepter. More... | |
class | udp_msg_source_impl |
class | upsat_fsk_frame_encoder |
This block implements a FSK frame encoder for the UPSAT satellite. It takes as input a message containing the PDU and performs the NRZ encoding. The resulting float samples can be passed from a FM modulation block and then to the SDR device. More... | |
class | waterfall_sink |
This block computes the waterfall of the incoming signal and stores the result to a file. More... | |
class | waterfall_sink_impl |
class | whitening |
Performs data whitening and de-whitening. More... | |
Typedefs | |
typedef class decoder_status | decoder_status_t |
Enumerations | |
enum | ax25_frame_type_t { AX25_I_FRAME, AX25_S_FRAME, AX25_U_FRAME, AX25_UI_FRAME } |
enum | ax25_encode_status_t { AX25_ENC_FAIL, AX25_ENC_OK } |
enum | ax25_decode_status_t { AX25_DEC_FAIL, AX25_DEC_OK } |
enum | OBC_ret_state_t { R_OBC_PKT_ILLEGAL_APPID = 0, R_OBC_PKT_INV_LEN = 1, R_OBC_PKT_INC_CRC = 2, R_OBC_PKT_ILLEGAL_PKT_TP = 3, R_OBC_PKT_ILLEGAL_PKT_STP = 4, R_OBC_PKT_ILLEGAL_APP_DATA = 5, R_OBC_OK = 6, R_OBC_ERROR = 7, R_OBC_EOT = 8 } |
Telemetry and telecommands packet methods. More... | |
enum | noaa_apt_sync_marker { noaa_apt_sync_marker::SYNC_A, noaa_apt_sync_marker::SYNC_B, noaa_apt_sync_marker::NONE } |
Functions | |
static uint16_t | ax25_fcs (uint8_t *buffer, size_t len) |
static size_t | ax25_create_addr_field (uint8_t *out, std::string dest_addr, uint8_t dest_ssid, std::string src_addr, uint8_t src_ssid) |
static uint8_t | ax25_get_dest_ssid (const uint8_t *in) |
static size_t | ax25_prepare_frame (uint8_t *out, const uint8_t *info, size_t info_len, ax25_frame_type_t type, uint8_t *addr, size_t addr_len, uint16_t ctrl, size_t ctrl_len, size_t preamble_len, size_t postamble_len) |
static ax25_encode_status_t | ax25_nrz_bit_stuffing (float *out, size_t *out_len, const uint8_t *buffer, size_t buffer_len, size_t preamble_len, size_t postamble_len) |
static ax25_encode_status_t | ax25_bit_stuffing (uint8_t *out, size_t *out_len, const uint8_t *buffer, const size_t buffer_len, size_t preamble_len, size_t postamble_len) |
static ax25_decode_status_t | ax25_decode (uint8_t *out, size_t *out_len, const uint8_t *ax25_frame, size_t len) |
OBC_ret_state_t | verification_pack_pkt_api (uint8_t *buf, tc_tm_pkt *pkt, uint16_t *buf_pointer) |
OBC_ret_state_t | hk_pack_pkt_api (uint8_t *buf, tc_tm_pkt *pkt, uint16_t *buf_pointer) |
static uint8_t | ecss_tm_checksum (const uint8_t *data, uint16_t size) |
static OBC_ret_state_t | ecss_tm_unpack_pkt (const uint8_t *buf, tc_tm_pkt *pkt, const uint16_t size) |
static OBC_ret_state_t | ecss_tm_pack_pkt (uint8_t *buf, tc_tm_pkt *pkt, uint16_t *size) |
static OBC_ret_state_t | ecss_tm_crt_pkt (tc_tm_pkt *pkt, uint16_t app_id, uint8_t type, uint8_t ack, uint8_t ser_type, uint8_t ser_subtype, uint16_t dest_id) |
static double | mape (double ref, double estimation) |
static unsigned int | bit_count (unsigned int x) |
static uint8_t | reverse_byte (uint8_t b) |
static uint32_t | reverse_uint32_bytes (uint32_t i) |
static uint64_t | reverse_uint64_bytes (uint64_t x) |
static uint32_t | update_crc32 (uint32_t crc, const uint8_t *data, size_t len) |
static uint32_t | crc32 (const uint8_t *buf, size_t len) |
static void | print_pdu (const uint8_t *buf, size_t len) |
Variables | |
const size_t | AX25_MIN_ADDR_LEN = 14 |
const size_t | AX25_MAX_ADDR_LEN = (2 * 7 + 8 * 7) |
const size_t | AX25_MIN_CTRL_LEN = 1 |
const size_t | AX25_MAX_CTRL_LEN = 2 |
const size_t | AX25_MAX_FRAME_LEN = 256 |
const uint8_t | AX25_SYNC_FLAG = 0x7E |
const uint8_t | AX25_CALLSIGN_MAX_LEN = 6 |
const float | AX25_SYNC_FLAG_MAP [8] |
const uint8_t | AX25_SYNC_FLAG_MAP_BIN [8] |
const uint8_t | services_verification_TC_TM [MAX_SERVICES][MAX_SUBTYPES][2] |
const uint8_t | app_id_verification [MAX_APP_ID] |
const uint8_t | services_verification_OBC_TC [MAX_SERVICES][MAX_SUBTYPES] |
static const uint8_t | _bytes_reversed [256] |
typedef class decoder_status gr::satnogs::decoder_status_t |
|
strong |
Telemetry and telecommands packet methods.
Return status codes
|
inlinestatic |
Constructs an AX.25 by performing bit stuffing.
out | the output buffer to hold the frame. To keep it simple, each byte of the buffer holds only one bit. Also the size of the buffer should be enough, such that the extra stuffed bits are fitting on the allocated space. |
out_len | due to bit stuffing the output size can vary. This pointer will hold the resulting frame size after bit stuffing. |
buffer | buffer holding the data that should be encoded. Note that this buffer SHOULD contain the leading and trailing synchronization flag, all necessary headers and the CRC. |
buffer_len | the length of the input buffer. |
preamble_len | the number of consecutive AX.25 flags that will be placed in the preamble. This preamble will be NOT bit-stuffed. |
postamble_len | the number of consecutive AX.25 flags that will be placed in the postamble. This postamble will be NOT bit-stuffed. |
References AX25_ENC_OK, and i.
|
inlinestatic |
Creates the header field of the AX.25 frame
out | the output buffer with enough memory to hold the address field |
dest_addr | the destination callsign address |
dest_ssid | the destination SSID |
src_addr | the callsign of the source |
src_ssid | the source SSID |
References AX25_CALLSIGN_MAX_LEN, AX25_MIN_ADDR_LEN, and i.
|
inlinestatic |
References AX25_DEC_FAIL, AX25_DEC_OK, ax25_fcs(), AX25_SYNC_FLAG_MAP_BIN, i, and LOG_WARN.
|
inlinestatic |
Calculates the FCS of the AX25 frame
buffer | data buffer |
len | size of the buffer |
References gr::satnogs::crc::crc16_ax25().
Referenced by ax25_decode(), and ax25_prepare_frame().
|
inlinestatic |
Gets the destination SSID of an AX.25 frame
in | the AX.25 frame buffer |
References AX25_CALLSIGN_MAX_LEN.
|
inlinestatic |
Constructs an AX.25 by performing NRZ encoding and bit stuffing
out | the output buffer to hold the frame. Note that due to the NRZ encoding the output would be [-1, 1]. Also the size of the buffer should be enough, such that the extra stuffed bits are fitting on the allocated space. |
out_len | due to bit stuffing the output size can vary. This pointer will hold the resulting frame size after bit stuffing. |
buffer | buffer holding the data that should be encoded. Note that this buffer SHOULD contain the leading and trailing synchronization flag, all necessary headers and the CRC. |
buffer_len | the length of the input buffer. |
preamble_len | the number of consecutive AX.25 flags that will be placed in the preamble. This preamble will be NOT bit-stuffed. |
postamble_len | the number of consecutive AX.25 flags that will be placed in the postamble. This postamble will be NOT bit-stuffed. |
References AX25_ENC_FAIL, AX25_ENC_OK, and i.
|
inlinestatic |
References ax25_fcs(), AX25_I_FRAME, AX25_UI_FRAME, i, j, and memset().
|
inlinestatic |
Counts the number of active bits in x
|
inlinestatic |
Calculates the CRC-32 of the buffer buf.
buf | The buffer containing the data |
len | the size of the buffer |
References update_crc32().
|
inlinestatic |
References i.
Referenced by ecss_tm_pack_pkt(), and ecss_tm_unpack_pkt().
|
inlinestatic |
|
inlinestatic |
Packs a TC packet into a byte buffer
buf | buffer to store the data to be sent |
pkt | the data to be stored in the buffer |
size | size of the array |
References gr::satnogs::tc_tm_pkt::ack, gr::satnogs::tc_tm_pkt::app_id, gr::satnogs::_cnv::cnv16, gr::satnogs::_cnv::cnv8, gr::satnogs::tc_tm_pkt::data, gr::satnogs::tc_tm_pkt::dest_id, ECSS_DATA_FIELD_HDR_FLG, ECSS_PUS_VER, ECSS_SEC_HDR_FIELD_FLG, ecss_tm_checksum(), ECSS_VER_NUMBER, R_OBC_ERROR, R_OBC_OK, gr::satnogs::tc_tm_pkt::seq_count, gr::satnogs::tc_tm_pkt::seq_flags, gr::satnogs::tc_tm_pkt::ser_subtype, gr::satnogs::tc_tm_pkt::ser_type, TC, TC_FUNCTION_MANAGEMENT_SERVICE, TC_HOUSEKEEPING_SERVICE, TC_VERIFICATION_SERVICE, TM, and gr::satnogs::tc_tm_pkt::type.
|
inlinestatic |
References gr::satnogs::tc_tm_pkt::ack, gr::satnogs::tc_tm_pkt::app_id, gr::satnogs::_cnv::cnv16, gr::satnogs::_cnv::cnv8, gr::satnogs::tc_tm_pkt::data, gr::satnogs::tc_tm_pkt::dest_id, ecss_tm_checksum(), i, gr::satnogs::tc_tm_pkt::len, R_OBC_ERROR, R_OBC_OK, R_OBC_PKT_ILLEGAL_APPID, R_OBC_PKT_ILLEGAL_PKT_TP, R_OBC_PKT_INC_CRC, R_OBC_PKT_INV_LEN, gr::satnogs::tc_tm_pkt::seq_count, gr::satnogs::tc_tm_pkt::seq_flags, gr::satnogs::tc_tm_pkt::ser_subtype, gr::satnogs::tc_tm_pkt::ser_type, TC, TC_ACK_ACC, TC_ACK_EXE_COMP, TC_ACK_NO, TM, and gr::satnogs::tc_tm_pkt::type.
OBC_ret_state_t gr::satnogs::hk_pack_pkt_api | ( | uint8_t * | buf, |
tc_tm_pkt * | pkt, | ||
uint16_t * | buf_pointer | ||
) |
|
inlinestatic |
Computes the Mean Absolute Percentage Error
ref | the reference value |
estimation | the estimated value |
References date::abs().
|
static |
References i.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
OBC_ret_state_t gr::satnogs::verification_pack_pkt_api | ( | uint8_t * | buf, |
tc_tm_pkt * | pkt, | ||
uint16_t * | buf_pointer | ||
) |
|
static |
const uint8_t gr::satnogs::app_id_verification[MAX_APP_ID] |
const uint8_t gr::satnogs::AX25_CALLSIGN_MAX_LEN = 6 |
Referenced by ax25_create_addr_field(), and ax25_get_dest_ssid().
const size_t gr::satnogs::AX25_MAX_ADDR_LEN = (2 * 7 + 8 * 7) |
const size_t gr::satnogs::AX25_MAX_CTRL_LEN = 2 |
const size_t gr::satnogs::AX25_MAX_FRAME_LEN = 256 |
const size_t gr::satnogs::AX25_MIN_ADDR_LEN = 14 |
Referenced by ax25_create_addr_field().
const size_t gr::satnogs::AX25_MIN_CTRL_LEN = 1 |
const uint8_t gr::satnogs::AX25_SYNC_FLAG = 0x7E |
const float gr::satnogs::AX25_SYNC_FLAG_MAP[8] |
const uint8_t gr::satnogs::AX25_SYNC_FLAG_MAP_BIN[8] |
Referenced by ax25_decode().
const uint8_t gr::satnogs::services_verification_OBC_TC[MAX_SERVICES][MAX_SUBTYPES] |
const uint8_t gr::satnogs::services_verification_TC_TM[MAX_SERVICES][MAX_SUBTYPES][2] |