Files
bassofono/codice/Core/Inc/bassofono.h

133 lines
2.8 KiB
C
Raw Normal View History

2021-07-02 22:19:04 +02:00
#include <stdint.h>
#include <stdio.h>
2021-12-31 04:22:22 +01:00
// #include <arm_math.h>
2021-07-02 22:19:04 +02:00
#include "main.h"
#include "rx.h"
#include "tx.h"
2022-01-01 02:10:06 +01:00
#define IF_TYPE_NOIF 0 // la frequenza del dac o del dds e' pari alla frequenza impostata
2022-01-17 20:05:23 +01:00
#define IF_TYPE_LOMIX 1
2022-02-06 17:40:36 +01:00
#define IF_TYPE IF_TYPE_LOMIX
2021-12-31 04:22:22 +01:00
#define LO_TYPE_FIX 0
#define LO_TYPE_SI5351 1
#define LO_TYPE LO_TYPE_SI5351
2022-02-06 17:40:36 +01:00
#define LO_FREQ 125000 // frequenza di LO
2022-01-01 02:10:06 +01:00
2021-07-02 22:19:04 +02:00
#define CLOCK (168000000UL)
2022-02-06 17:40:36 +01:00
#define NCO2_INCREMENT (343597383L)
2021-07-02 22:19:04 +02:00
#define MOD_DC 0
#define MOD_LSB 1
#define MOD_USB 2
2022-01-12 01:09:32 +01:00
#define MOD_CWL 3
#define MOD_CWU 4
#define MOD_AM 5
#define MOD_FM 6
2021-07-02 22:19:04 +02:00
2021-12-31 04:22:22 +01:00
#define STATUS_RX 0
#define STATUS_TX 1
#define STATUS_SQ 2
2021-07-02 22:19:04 +02:00
// === UART ===
#define RX_CMD_RB_SIZE (32)
#define RX_CMD_RB_SIZE_MASK (RX_CMD_RB_SIZE - 1)
#define UART_TX_BUFFER_SIZE (512)
// ====== VARS ====================
2022-01-17 20:05:23 +01:00
struct __attribute__((__packed__)) s_stato {
uint8_t volume;
uint8_t guadagno_rx;
uint8_t guadagno_mic;
uint8_t canale;
2022-02-07 02:02:36 +01:00
uint16_t tx_f_freq;
uint16_t tx_f_banda;
uint8_t tx_f_beta;
2022-01-17 20:05:23 +01:00
};
struct __attribute__((__packed__)) s_canale {
char nome[16];
uint8_t gruppo;
uint32_t frequenza;
uint8_t modulazione;
int16_t rit;
uint16_t rx_f_freq;
2022-02-06 17:40:36 +01:00
uint16_t rx_f_banda;
2022-01-17 20:05:23 +01:00
uint8_t rx_f_beta;
};
struct __attribute__((__packed__)) s_banda {
char nome[16];
uint32_t min;
uint32_t max;
};
// volatili
2022-02-06 17:40:36 +01:00
extern uint8_t ricezione, trasmissione;
2021-07-02 22:19:04 +02:00
extern q31_t nco1_increment;
2022-01-17 20:05:23 +01:00
// extern uint16_t pwm_tx_period;
extern int32_t peak, peakset;
extern int32_t scan;
extern uint8_t s_meter;
extern uint16_t state_changed;
extern uint8_t scrittura_stato_pendente;
// canale
extern struct s_canale canale;
2021-12-31 04:22:22 +01:00
extern int32_t rit;
2022-01-17 20:05:23 +01:00
extern uint32_t audio_filter_freq, audio_filter_bw, audio_filter_beta;
// stato
extern struct s_stato stato;
2021-07-02 22:19:04 +02:00
extern int32_t squelch;
2022-01-17 20:05:23 +01:00
extern int32_t rx_gain;
2021-07-02 22:19:04 +02:00
extern int32_t mic_gain;
2022-01-17 20:05:23 +01:00
2021-07-02 22:19:04 +02:00
extern CORDIC_HandleTypeDef hcordic;
2021-12-31 04:22:22 +01:00
2021-07-02 22:19:04 +02:00
// uartz
extern char uart_rx_buf[2], rx_cmd_rb[RX_CMD_RB_SIZE];
extern uint8_t rx_cmd_rb_in_idx, rx_cmd_rb_out_idx;
// uart tx
extern char uart_tx_buf[UART_TX_BUFFER_SIZE];
extern uint16_t uart_tx_buf_in_idx;
2022-02-06 17:40:36 +01:00
extern q31_t if_I[RX_DAC_BUFFER_SIZE];
extern q31_t if_Q[RX_DAC_BUFFER_SIZE];
2021-07-02 22:19:04 +02:00
// ======== FUNZIONI ========
2022-01-17 20:05:23 +01:00
void enqueue_cmd(char in);
void state_set_default(void);
2022-02-06 17:40:36 +01:00
void start_trasmissione(void);
void stop_trasmissione(void);
void start_ricezione(void);
void stop_ricezione(void);
2022-01-12 01:09:32 +01:00
void set_rx_gain(void);
2021-07-02 22:19:04 +02:00
int32_t set_nco1_freq(int32_t freq);
2022-01-12 01:09:32 +01:00
// void set_filter(void);
2021-07-02 22:19:04 +02:00
void set_frequency(void);
2022-01-17 20:05:23 +01:00
void imposta_modulazione(void);
2021-07-02 22:19:04 +02:00
void set_dummy (void);
uint8_t get_changed(uint8_t state);
// varie
uint16_t ringbuf_increment(uint8_t *index, uint8_t buff_size_mask);
q31_t sat_mult_q31(q31_t a, q31_t b);
2022-02-06 17:40:36 +01:00
// diag
2021-07-02 22:19:04 +02:00
void diag(void);
2021-12-31 04:22:22 +01:00
uint8_t measure_log_abs_mean(q31_t *samples, uint16_t size);