Publish V1.08.2302.14
Final tidy up and publish
This commit is contained in:
parent
260b955f47
commit
97c7f69c83
BIN
coaa1090.obj
BIN
coaa1090.obj
Binary file not shown.
|
@ -254,8 +254,6 @@ void rtlsdrCallback(unsigned char *buf, uint32_t len, void *ctx) {
|
||||||
// Lock the data buffer variables before accessing them
|
// Lock the data buffer variables before accessing them
|
||||||
pthread_mutex_lock(&Modes.data_mutex);
|
pthread_mutex_lock(&Modes.data_mutex);
|
||||||
|
|
||||||
rtlsdrStats(buf);
|
|
||||||
|
|
||||||
Modes.iDataIn &= (MODES_ASYNC_BUF_NUMBER-1); // Just incase!!!
|
Modes.iDataIn &= (MODES_ASYNC_BUF_NUMBER-1); // Just incase!!!
|
||||||
|
|
||||||
// Get the system time for this block
|
// Get the system time for this block
|
||||||
|
@ -642,7 +640,6 @@ int main(int argc, char **argv) {
|
||||||
// If we lost some blocks, correct the timestamp
|
// If we lost some blocks, correct the timestamp
|
||||||
if (Modes.iDataLost) {
|
if (Modes.iDataLost) {
|
||||||
Modes.timestampBlk += (MODES_ASYNC_BUF_SAMPLES * 6 * Modes.iDataLost);
|
Modes.timestampBlk += (MODES_ASYNC_BUF_SAMPLES * 6 * Modes.iDataLost);
|
||||||
uRtlLost+= Modes.iDataLost;
|
|
||||||
Modes.iDataLost = 0;
|
Modes.iDataLost = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
dump1090.h
10
dump1090.h
|
@ -37,7 +37,7 @@
|
||||||
// MinorVer changes when additional features are added, but not for bug fixes (range 00-99)
|
// MinorVer changes when additional features are added, but not for bug fixes (range 00-99)
|
||||||
// DayDate & Year changes for all changes, including for bug fixes. It represent the release date of the update
|
// DayDate & Year changes for all changes, including for bug fixes. It represent the release date of the update
|
||||||
//
|
//
|
||||||
#define MODES_DUMP1090_VERSION "1.07.2202.14"
|
#define MODES_DUMP1090_VERSION "1.08.2302.14"
|
||||||
|
|
||||||
// ============================= Include files ==========================
|
// ============================= Include files ==========================
|
||||||
|
|
||||||
|
@ -230,10 +230,10 @@ struct { // Internal state
|
||||||
pthread_cond_t data_cond; // Conditional variable associated
|
pthread_cond_t data_cond; // Conditional variable associated
|
||||||
uint16_t *pData [MODES_ASYNC_BUF_NUMBER]; // Raw IQ sample buffers from RTL
|
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 timeb stSystemTimeRTL[MODES_ASYNC_BUF_NUMBER]; // System time when RTL passed us this block
|
||||||
int iDataIn; // Fifo input pointer
|
int iDataIn; // Fifo input pointer
|
||||||
int iDataOut; // Fifo output pointer
|
int iDataOut; // Fifo output pointer
|
||||||
int iDataReady; // Fifo content count
|
int iDataReady; // Fifo content count
|
||||||
int iDataLost; // Count of missed buffers
|
int iDataLost; // Count of missed buffers
|
||||||
|
|
||||||
uint16_t *pFileData; // Raw IQ samples buffer (from a File)
|
uint16_t *pFileData; // Raw IQ samples buffer (from a File)
|
||||||
uint16_t *magnitude; // Magnitude vector
|
uint16_t *magnitude; // Magnitude vector
|
||||||
|
|
|
@ -21,7 +21,7 @@ all: dump1090
|
||||||
$(CC) $(CFLAGS) $(EXTRACFLAGS) -c $<
|
$(CC) $(CFLAGS) $(EXTRACFLAGS) -c $<
|
||||||
|
|
||||||
dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o
|
dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o
|
||||||
$(CC) -g -o dump1090 dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o $(LIBS)
|
$(CC) -g -o dump1090 dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o $(LIBS) $(LDFLAGS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o dump1090
|
rm -f *.o dump1090
|
||||||
|
|
|
@ -21,7 +21,7 @@ all: ppup1090
|
||||||
$(CC) $(CFLAGS) $(EXTRACFLAGS) -c $<
|
$(CC) $(CFLAGS) $(EXTRACFLAGS) -c $<
|
||||||
|
|
||||||
ppup1090: ppup1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o
|
ppup1090: ppup1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o
|
||||||
$(CC) -g -o ppup1090 ppup1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o coaa1090.obj $(LIBS)
|
$(CC) -g -o ppup1090 ppup1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o coaa1090.obj $(LIBS) $(LDFLAGS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o ppup1090
|
rm -f *.o ppup1090
|
||||||
|
|
|
@ -21,7 +21,7 @@ all: view1090
|
||||||
$(CC) $(CFLAGS) $(EXTRACFLAGS) -c $<
|
$(CC) $(CFLAGS) $(EXTRACFLAGS) -c $<
|
||||||
|
|
||||||
view1090: view1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o
|
view1090: view1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o
|
||||||
$(CC) -g -o view1090 view1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o $(LIBS)
|
$(CC) -g -o view1090 view1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o $(LIBS) $(LDFLAGS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o view1090
|
rm -f *.o view1090
|
||||||
|
|
67
net_io.c
67
net_io.c
|
@ -146,18 +146,18 @@ void modesFreeClient(int fd) {
|
||||||
if (Modes.debug & MODES_DEBUG_NET)
|
if (Modes.debug & MODES_DEBUG_NET)
|
||||||
printf("Closing client %d\n", fd);
|
printf("Closing client %d\n", fd);
|
||||||
|
|
||||||
// If this was our maxfd, scan the clients array to find the new max.
|
// If this was our maxfd, scan the clients array to find trhe new max.
|
||||||
// Note that we are sure there is no active fd greater than the closed
|
// Note that we are sure there is no active fd greater than the closed
|
||||||
// fd, so we scan from fd-1 to 0.
|
// fd, so we scan from fd-1 to 0.
|
||||||
if (Modes.maxfd == fd) {
|
if (Modes.maxfd == fd) {
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
Modes.maxfd = -1;
|
Modes.maxfd = -1;
|
||||||
for (j = fd-1; j >= 0; j--) {
|
for (j = fd-1; j >= 0; j--) {
|
||||||
if (Modes.clients[j]) {
|
if (Modes.clients[j]) {
|
||||||
Modes.maxfd = j;
|
Modes.maxfd = j;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -191,7 +191,7 @@ void modesSendBeastOutput(struct modesMessage *mm) {
|
||||||
char * pTimeStamp;
|
char * pTimeStamp;
|
||||||
char ch;
|
char ch;
|
||||||
int j;
|
int j;
|
||||||
int iOutLen = msgLen + 9; // Escape, message type, timestamp, sigLevel and msg
|
int iOutLen = msgLen + 9; // Escape, msgtype, timestamp, sigLevel, msg
|
||||||
|
|
||||||
*p++ = 0x1a;
|
*p++ = 0x1a;
|
||||||
if (msgLen == MODES_SHORT_MSG_BYTES)
|
if (msgLen == MODES_SHORT_MSG_BYTES)
|
||||||
|
@ -206,11 +206,11 @@ void modesSendBeastOutput(struct modesMessage *mm) {
|
||||||
pTimeStamp = (char *) &mm->timestampMsg;
|
pTimeStamp = (char *) &mm->timestampMsg;
|
||||||
for (j = 5; j >= 0; j--) {
|
for (j = 5; j >= 0; j--) {
|
||||||
*p++ = (ch = pTimeStamp[j]);
|
*p++ = (ch = pTimeStamp[j]);
|
||||||
if (0x1A == ch) {*p++ = ch; iOutLen++;}
|
if (0x1A == ch) {*p++ = ch; iOutLen++;}
|
||||||
}
|
}
|
||||||
|
|
||||||
*p++ = (ch = mm->signalLevel);
|
*p++ = (ch = mm->signalLevel);
|
||||||
if (0x1A == ch) {*p++ = ch; iOutLen++;}
|
if (0x1A == ch) {*p++ = ch; iOutLen++;}
|
||||||
|
|
||||||
for (j = 0; j < msgLen; j++) {
|
for (j = 0; j < msgLen; j++) {
|
||||||
*p++ = (ch = mm->msg[j]);
|
*p++ = (ch = mm->msg[j]);
|
||||||
|
@ -368,10 +368,10 @@ void modesSendSBSOutput(struct modesMessage *mm) {
|
||||||
// Field 19 is the Squawk Changing Alert flag (if we have it)
|
// Field 19 is the Squawk Changing Alert flag (if we have it)
|
||||||
if (mm->bFlags & MODES_ACFLAGS_FS_VALID) {
|
if (mm->bFlags & MODES_ACFLAGS_FS_VALID) {
|
||||||
if ((mm->fs >= 2) && (mm->fs <= 4)) {
|
if ((mm->fs >= 2) && (mm->fs <= 4)) {
|
||||||
p += sprintf(p, ",-1");
|
p += sprintf(p, ",-1");
|
||||||
} else {
|
} else {
|
||||||
p += sprintf(p, ",0");
|
p += sprintf(p, ",0");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
p += sprintf(p, ",");
|
p += sprintf(p, ",");
|
||||||
}
|
}
|
||||||
|
@ -380,7 +380,7 @@ void modesSendSBSOutput(struct modesMessage *mm) {
|
||||||
if (mm->bFlags & MODES_ACFLAGS_SQUAWK_VALID) {
|
if (mm->bFlags & MODES_ACFLAGS_SQUAWK_VALID) {
|
||||||
if ((mm->modeA == 0x7500) || (mm->modeA == 0x7600) || (mm->modeA == 0x7700)) {
|
if ((mm->modeA == 0x7500) || (mm->modeA == 0x7600) || (mm->modeA == 0x7700)) {
|
||||||
p += sprintf(p, ",-1");
|
p += sprintf(p, ",-1");
|
||||||
} else {
|
} else {
|
||||||
p += sprintf(p, ",0");
|
p += sprintf(p, ",0");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -390,10 +390,10 @@ void modesSendSBSOutput(struct modesMessage *mm) {
|
||||||
// Field 21 is the Squawk Ident flag (if we have it)
|
// Field 21 is the Squawk Ident flag (if we have it)
|
||||||
if (mm->bFlags & MODES_ACFLAGS_FS_VALID) {
|
if (mm->bFlags & MODES_ACFLAGS_FS_VALID) {
|
||||||
if ((mm->fs >= 4) && (mm->fs <= 5)) {
|
if ((mm->fs >= 4) && (mm->fs <= 5)) {
|
||||||
p += sprintf(p, ",-1");
|
p += sprintf(p, ",-1");
|
||||||
} else {
|
} else {
|
||||||
p += sprintf(p, ",0");
|
p += sprintf(p, ",0");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
p += sprintf(p, ",");
|
p += sprintf(p, ",");
|
||||||
}
|
}
|
||||||
|
@ -424,17 +424,17 @@ void modesQueueOutput(struct modesMessage *mm) {
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
//
|
//
|
||||||
// This function decodes a Beast binary format message
|
// This function decodes a Beast binary format message
|
||||||
//
|
//
|
||||||
// The message is passed to the higher level layers, so it feeds
|
// The message is passed to the higher level layers, so it feeds
|
||||||
// the selected screen output, the network output and so forth.
|
// the selected screen output, the network output and so forth.
|
||||||
//
|
//
|
||||||
// If the message looks invalid it is silently discarded.
|
// If the message looks invalid it is silently discarded.
|
||||||
//
|
//
|
||||||
// The function always returns 0 (success) to the caller as there is no
|
// The function always returns 0 (success) to the caller as there is no
|
||||||
// case where we want broken messages here to close the client connection.
|
// case where we want broken messages here to close the client connection.
|
||||||
//
|
//
|
||||||
int decodeBinMessage(struct client *c, char *p) {
|
int decodeBinMessage(struct client *c, char *p) {
|
||||||
int msgLen = 0;
|
int msgLen = 0;
|
||||||
int j;
|
int j;
|
||||||
char ch;
|
char ch;
|
||||||
unsigned char msg[MODES_LONG_MSG_BYTES];
|
unsigned char msg[MODES_LONG_MSG_BYTES];
|
||||||
|
@ -455,23 +455,24 @@ int decodeBinMessage(struct client *c, char *p) {
|
||||||
// pass them off as being received by this instance when forwarding them
|
// pass them off as being received by this instance when forwarding them
|
||||||
mm.remote = 1;
|
mm.remote = 1;
|
||||||
for (j = 0; j < 7; j++) { // Skip the message type and timestamp
|
for (j = 0; j < 7; j++) { // Skip the message type and timestamp
|
||||||
ch = *p++;
|
ch = *p++;
|
||||||
if (0x1A == ch) {p++;}
|
if (0x1A == ch) {p++;}
|
||||||
}
|
}
|
||||||
|
|
||||||
mm.signalLevel = ch = *p++; // Grab the signal level
|
mm.signalLevel = ch = *p++; // Grab the signal level
|
||||||
if (0x1A == ch) {p++;}
|
if (0x1A == ch) {p++;}
|
||||||
|
|
||||||
for (j = 0; j < msgLen; j++) { // and the data
|
for (j = 0; j < msgLen; j++) { // and the data
|
||||||
msg[j] = ch = *p++;
|
msg[j] = ch = *p++;
|
||||||
if (0x1A == ch) {p++;}
|
if (0x1A == ch) {p++;}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (msgLen == MODEAC_MSG_BYTES) { // ModeA or ModeC
|
if (msgLen == MODEAC_MSG_BYTES) { // ModeA or ModeC
|
||||||
decodeModeAMessage(&mm, ((msg[0] << 8) | msg[1]));
|
decodeModeAMessage(&mm, ((msg[0] << 8) | msg[1]));
|
||||||
} else {
|
} else {
|
||||||
decodeModesMessage(&mm, msg);
|
decodeModesMessage(&mm, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
useModesMessage(&mm);
|
useModesMessage(&mm);
|
||||||
}
|
}
|
||||||
return (0);
|
return (0);
|
||||||
|
@ -850,7 +851,7 @@ void modesReadFromClient(struct client *c, char *sep,
|
||||||
}
|
}
|
||||||
// Have a 0x1a followed by 1, 2 or 3 - pass message less 0x1a to handler.
|
// Have a 0x1a followed by 1, 2 or 3 - pass message less 0x1a to handler.
|
||||||
if (handler(c, s)) {
|
if (handler(c, s)) {
|
||||||
modesFreeClient(c->fd);
|
modesFreeClient(c->fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
fullmsg = 1;
|
fullmsg = 1;
|
||||||
|
@ -865,7 +866,7 @@ void modesReadFromClient(struct client *c, char *sep,
|
||||||
//
|
//
|
||||||
while ((e = strstr(s, sep)) != NULL) { // end of first message if found
|
while ((e = strstr(s, sep)) != NULL) { // end of first message if found
|
||||||
*e = '\0'; // The handler expects null terminated strings
|
*e = '\0'; // The handler expects null terminated strings
|
||||||
if (handler(c, s)) { // Pass message to handler.
|
if (handler(c, s)) { // Pass message to handler.
|
||||||
modesFreeClient(c->fd); // Handler returns 1 on error to signal we .
|
modesFreeClient(c->fd); // Handler returns 1 on error to signal we .
|
||||||
return; // should close the client connection
|
return; // should close the client connection
|
||||||
}
|
}
|
||||||
|
@ -873,8 +874,8 @@ void modesReadFromClient(struct client *c, char *sep,
|
||||||
fullmsg = 1;
|
fullmsg = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fullmsg) { // We processed something - so
|
if (fullmsg) { // We processed something - so
|
||||||
c->buflen = &(c->buf[c->buflen]) - s; // Update the unprocessed buffer length
|
c->buflen = &(c->buf[c->buflen]) - s; // Update the unprocessed buffer length
|
||||||
memmove(c->buf, s, c->buflen); // Move what's remaining to the start of the buffer
|
memmove(c->buf, s, c->buflen); // Move what's remaining to the start of the buffer
|
||||||
} else { // If no message was decoded process the next client
|
} else { // If no message was decoded process the next client
|
||||||
|
|
Loading…
Reference in a new issue