Initial import
This commit is contained in:
73
modem_types.h
Normal file
73
modem_types.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* File: modem_types.h
|
||||
*/
|
||||
|
||||
/** @file */
|
||||
|
||||
#ifndef MODEM_TYPES_H
|
||||
#define MODEM_TYPES_H
|
||||
|
||||
// Sampling Control
|
||||
// il buffer rate deve essere > fmod_min/2
|
||||
// il buffer rate deve > symbol rate
|
||||
|
||||
#define SAMPLING_RATE 16000UL ///< frequenza di campionamento
|
||||
#define SAMPLES_PER_BUFFER 32U ///< dimensione del buffer dei campioni
|
||||
#define BUFFER_RATE (SAMPLING_RATE / SAMPLES_PER_BUFFER) ///< frequenza di buffer: deve essere > di MAX_SYMBOL_RATE * 3
|
||||
|
||||
#define MAX_SYMBOL_RATE 500U
|
||||
#define MIN_SYMBOL_RATE 20U //umm, se troppo piccolo da problemi nelle dimensioni dei buffer
|
||||
|
||||
#define MIN_BUFFERS_PER_SYMBOL (BUFFER_RATE / MAX_SYMBOL_RATE)
|
||||
#define MAX_BUFFERS_PER_SYMBOL (BUFFER_RATE / MIN_SYMBOL_RATE)
|
||||
|
||||
#define MAX_MODULATION_ALPHABET_SIZE 16U ///< massimo numero di simboli nella costellazione
|
||||
|
||||
#define MAX_SYMBOL_BUFFER_SIZE 512U ///< MAX_FEC_OUTPUT_SIZE * MAX_FEC_PER_BLOCK
|
||||
|
||||
#define MODEM_STATE_PREDELAY_WAIT 0
|
||||
#define MODEM_STATE_PREDELAY_PROCESS 1
|
||||
#define MODEM_STATE_PREDELAY_DONE 2
|
||||
#define MODEM_STATE_PREAMBLE_WAIT 3
|
||||
#define MODEM_STATE_PREAMBLE_PROCESS 4
|
||||
#define MODEM_STATE_PREAMBLE_DONE 5
|
||||
#define MODEM_STATE_POST_PREAMBLE_WAIT 6
|
||||
#define MODEM_STATE_POST_PREAMBLE_PROCESS 7
|
||||
#define MODEM_STATE_POST_PREAMBLE_DONE 8
|
||||
#define MODEM_STATE_PAYLOAD_WAIT 9
|
||||
#define MODEM_STATE_PAYLOAD_PROCESS 10
|
||||
#define MODEM_STATE_PAYLOAD_DONE 11
|
||||
#define MODEM_STATE_IDLE 12
|
||||
|
||||
typedef struct {
|
||||
uint16_t frequency; ///< frequenza del simbolo
|
||||
uint16_t phase; ///< fase del simbolo
|
||||
uint16_t amplitude; ///< ampiezza del simbolo
|
||||
} symbol;
|
||||
|
||||
// parametri della modulazione
|
||||
|
||||
typedef struct {
|
||||
uint16_t symbol_rate; ///< numero di simboli per secondo
|
||||
uint8_t buffers_per_symbol; ///< numero di buffer di campioni in un simbolo
|
||||
uint8_t bits_per_symbol; ///< bit di informazione espressi da un simbolo
|
||||
uint8_t alphabet_size; ///< numero di possibili simboli che compongono la modulazione
|
||||
uint8_t amplitude_keying; ///< manipolazione di ampiezza
|
||||
uint8_t frequency_keying; ///< manipolazione di frequenza
|
||||
uint8_t phase_keying; ///< manipolazione di fase
|
||||
symbol constellation[MAX_MODULATION_ALPHABET_SIZE]; ///< descrizione della costellazione
|
||||
} modulation;
|
||||
|
||||
extern modulation mod;
|
||||
|
||||
extern uint8_t modem_tx_state, modem_rx_state;
|
||||
|
||||
extern uint16_t modem_predelay_mstime, modem_predelay_buffer_size, modem_predelay_buffer_index;
|
||||
|
||||
extern uint8_t modem_avoid_overlap;
|
||||
|
||||
// payload
|
||||
extern uint16_t modem_payload_max_symbols, modem_payload_symbols_index;
|
||||
|
||||
#endif /* MODEM_TYPES_H */
|
||||
|
||||
Reference in New Issue
Block a user