[hamradio-commits] [dump1090] 74/389: Basic tidy up of the modesInit() function

Matthew Ernisse mernisse-guest at moszumanska.debian.org
Wed Nov 5 00:19:42 UTC 2014


This is an automated email from the git hooks/post-receive script.

mernisse-guest pushed a commit to branch master
in repository dump1090.

commit f806f1899eced6690a3e9b3df157319a570da61c
Author: Malcolm Robb <Support at ATTAvionics.com>
Date:   Wed Apr 10 12:16:25 2013 +0100

    Basic tidy up of the modesInit() function
---
 dump1090.c | 43 +++++++++++++++++++++++--------------------
 1 file changed, 23 insertions(+), 20 deletions(-)

diff --git a/dump1090.c b/dump1090.c
index 1213e18..b0d779f 100644
--- a/dump1090.c
+++ b/dump1090.c
@@ -304,26 +304,28 @@ void modesInit(void) {
 
     pthread_mutex_init(&Modes.data_mutex,NULL);
     pthread_cond_init(&Modes.data_cond,NULL);
-    /* We add a full message minus a final bit to the length, so that we
-     * can carry the remaining part of the buffer that we can't process
-     * in the message detection loop, back at the start of the next data
-     * to process. This way we are able to also detect messages crossing
-     * two reads. */
-    Modes.data_ready = 0;
-    Modes.timestampBlk = 0;
-    /* Allocate the ICAO address cache. We use two uint32_t for every
-     * entry because it's a addr / timestamp pair for every entry. */
-    Modes.icao_cache = (uint32_t *) malloc(sizeof(uint32_t)*MODES_ICAO_CACHE_LEN*2);
-    memset(Modes.icao_cache,0,sizeof(uint32_t)*MODES_ICAO_CACHE_LEN*2);
-    Modes.aircrafts = NULL;
-    Modes.interactive_last_update = 0;
-    if ((Modes.data = (uint16_t *) malloc(MODES_ASYNC_BUF_SIZE)) == NULL ||
-        (Modes.magnitude = (uint16_t *) malloc(MODES_ASYNC_BUF_SIZE+MODES_PREAMBLE_SIZE+MODES_LONG_MSG_SIZE)) == NULL) {
+
+    // Allocate the various buffers used by Modes
+    if ( ((Modes.icao_cache = (uint32_t *) malloc(sizeof(uint32_t) * MODES_ICAO_CACHE_LEN * 2)                  ) == NULL) ||
+         ((Modes.data       = (uint16_t *) malloc(MODES_ASYNC_BUF_SIZE)                                         ) == NULL) ||
+         ((Modes.magnitude  = (uint16_t *) malloc(MODES_ASYNC_BUF_SIZE+MODES_PREAMBLE_SIZE+MODES_LONG_MSG_SIZE) ) == NULL) ||
+         ((Modes.maglut     = (uint16_t *) malloc(sizeof(uint16_t) * 256 * 256)                                 ) == NULL) ) 
+    {
         fprintf(stderr, "Out of memory allocating data buffer.\n");
         exit(1);
     }
-    memset(Modes.data,127,MODES_ASYNC_BUF_SIZE);
-    memset(Modes.magnitude,0, MODES_ASYNC_BUF_SIZE+MODES_PREAMBLE_SIZE+MODES_LONG_MSG_SIZE);
+
+    // Clear the buffers that have just been allocated, just in-case
+    memset(Modes.icao_cache, 0,   sizeof(uint32_t) * MODES_ICAO_CACHE_LEN * 2);
+    memset(Modes.data,       127, MODES_ASYNC_BUF_SIZE);
+    memset(Modes.magnitude,  0,   MODES_ASYNC_BUF_SIZE+MODES_PREAMBLE_SIZE+MODES_LONG_MSG_SIZE);
+
+    // The ICAO address cache. We use two uint32_t for every
+    // entry because it's a addr / timestamp pair for every entry.
+    Modes.timestampBlk            = 0;
+    Modes.data_ready              = 0;
+    Modes.aircrafts               = NULL;
+    Modes.interactive_last_update = 0;
 
     /* Populate the I/Q -> Magnitude lookup table. It is used because
      * sqrt or round may be expensive and may vary a lot depending on
@@ -332,12 +334,13 @@ void modesInit(void) {
      * We scale to 0-255 range multiplying by 1.4 in order to ensure that
      * every different I/Q pair will result in a different magnitude value,
      * not losing any resolution. */
-    Modes.maglut = malloc(256*256*2);
     for (i = 0; i <= 255; i++) {
-        int mag_i = i-127;
+        int mag_i = i - 127;
         for (q = 0; q <= 255; q++) {
             int mag_q = q - 127;
-            Modes.maglut[i*256+q] = round(sqrt((mag_i*mag_i)+(mag_q*mag_q))*360);
+            int mag   = 0;
+            mag = (int) round(sqrt((mag_i*mag_i)+(mag_q*mag_q)) * 360);
+            Modes.maglut[(i*256)+q] = (uint16_t) min(mag,65535);
         }
     }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/dump1090.git



More information about the pkg-hamradio-commits mailing list