/* * 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 */