fsk->Fs = Fs;
fsk->Rs = Rs;
fsk->Ts = Fs/Rs;
+ fsk->burst_mode = 0;
fsk->N = fsk->Ts*nsyms;
fsk->P = P;
fsk->Nsym = nsyms;
return fsk;
}
+
#define HORUS_MIN 800
#define HORUS_MAX 2500
#define HORUS_MIN_SPACING 100
fsk->Rs = Rs;
fsk->Ts = Fs/Rs;
fsk->N = Fs;
+ fsk->burst_mode = 0;
fsk->P = horus_P;
fsk->Nsym = fsk->N/fsk->Ts;
fsk->Ndft = Ndft;
}
+/* Set the FSK modem into burst demod mode */
+
+void fsk_enable_burst_mode(struct FSK *fsk,int nsyms){
+ fsk_set_nsym(fsk,nsyms);
+ //fsk->nstash = 0;
+ //fsk->Nmem = fsk->N;
+ fsk->nin = fsk->N;
+ fsk->burst_mode = 1;
+ //free(fsk->samp_old);
+ //fsk->samp_old = (COMP*) malloc(1);
+}
void fsk_clear_estimators(struct FSK *fsk){
int i;
}
/* Figure out how many samples are needed the next modem cycle */
- if(norm_rx_timing > 0.25)
- fsk->nin = N+Ts/2;
- else if(norm_rx_timing < -0.25)
- fsk->nin = N-Ts/2;
- else
- fsk->nin = N;
+ /* Unless we're in burst mode */
+ if(!fsk->burst_mode){
+ if(norm_rx_timing > 0.25)
+ fsk->nin = N+Ts/2;
+ else if(norm_rx_timing < -0.25)
+ fsk->nin = N-Ts/2;
+ else
+ fsk->nin = N;
+ }
modem_probe_samp_f("t_norm_rx_timing",&(norm_rx_timing),1);
modem_probe_samp_i("t_nin",&(fsk->nin),1);
#define FSK_SCALE 16383
struct FSK {
- /* Static parameters set up by fsk_init */\r
- int Ndft; /* buffer size for freq offset est fft */\r
+ /* Static parameters set up by fsk_init */
+ int Ndft; /* buffer size for freq offset est fft */
int Fs; /* sample freq */
int N; /* processing buffer size */
int Rs; /* symbol rate */
/* Parameters used by mod/demod and driving code */
int nin; /* Number of samples to feed the next demod cycle */
+ int burst_mode; /* enables/disables 'burst' mode */
/* modem statistic struct */
struct MODEM_STATS *stats;
}
void tdma_rx_no_sync(struct TDMA_MODEM * tdma, COMP * samps, u64 timestamp){
- mode = tdma->settings;
+ struct TDMA_MODE_SETTINGS mode = tdma->settings;
u32 Rs = mode.sym_rate;
u32 Fs = mode.samp_rate;
u32 slot_size = mode.slot_size;