Publish V1.08.2302.14

Final tidy up and publish
This commit is contained in:
Malcolm Robb 2014-02-24 10:28:35 +00:00
parent 260b955f47
commit 97c7f69c83
7 changed files with 42 additions and 44 deletions

Binary file not shown.

View file

@ -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;
} }

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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