Store computed reception time in the message struct so we don't rely on
the message being emitted immediately. Fix computation of reception time so it's more sensible (the block timestamp is some time after reception of the _end_ of the block, not the start) - this means that message-emission times are always later than message-reception times in SBS output, which is a bit more sensible. Use clock_gettime in preference to ftime.
This commit is contained in:
parent
1584955080
commit
4e177c2d64
7 changed files with 76 additions and 31 deletions
|
|
@ -71,7 +71,6 @@
|
|||
#include <unistd.h>
|
||||
#include <math.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/timeb.h>
|
||||
#include <signal.h>
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
|
|
@ -248,7 +247,7 @@ struct { // Internal state
|
|||
pthread_mutex_t data_mutex; // Mutex to synchronize buffer access
|
||||
pthread_cond_t data_cond; // Conditional variable associated
|
||||
uint16_t *pData [MODES_ASYNC_BUF_NUMBER]; // Raw IQ sample buffers from RTL
|
||||
struct timeb stSystemTimeRTL[MODES_ASYNC_BUF_NUMBER]; // System time when RTL passed us this block
|
||||
struct timespec stSystemTimeRTL[MODES_ASYNC_BUF_NUMBER]; // System time when RTL passed us this block
|
||||
int iDataIn; // Fifo input pointer
|
||||
int iDataOut; // Fifo output pointer
|
||||
int iDataReady; // Fifo content count
|
||||
|
|
@ -260,7 +259,7 @@ struct { // Internal state
|
|||
uint16_t *pFileData; // Raw IQ samples buffer (from a File)
|
||||
uint16_t *magnitude; // Magnitude vector
|
||||
uint64_t timestampBlk; // Timestamp of the start of the current block
|
||||
struct timeb stSystemTimeBlk; // System time when RTL passed us currently processing this block
|
||||
struct timespec stSystemTimeBlk; // System time when RTL passed us currently processing this block
|
||||
int fd; // --ifile option file descriptor
|
||||
uint16_t *maglut; // I/Q -> Magnitude lookup table
|
||||
uint16_t *log10lut; // Magnitude -> log10 lookup table
|
||||
|
|
@ -367,7 +366,8 @@ struct modesMessage {
|
|||
uint32_t crc; // Message CRC
|
||||
int correctedbits; // No. of bits corrected
|
||||
uint32_t addr; // Address Announced
|
||||
uint64_t timestampMsg; // Timestamp of the message
|
||||
uint64_t timestampMsg; // Timestamp of the message (12MHz clock)
|
||||
struct timespec sysTimestampMsg; // Timestamp of the message (system time)
|
||||
int remote; // If set this message is from a remote station
|
||||
double signalLevel; // RSSI, in the range [0..1], as a fraction of full-scale power
|
||||
int score; // Scoring from scoreModesMessage, if used
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue