]> git.tnoah.ca Git - lora-radio.git/commitdiff
Fix weird behaviour with queue sizing
authorjacob.eva <x00010@disroot.org>
Wed, 21 Aug 2024 16:54:38 +0000 (17:54 +0100)
committerjacob.eva <x00010@disroot.org>
Wed, 21 Aug 2024 16:54:38 +0000 (17:54 +0100)
RNode_Firmware_CE.ino
Utilities.h

index dabe7c90b10c94d06ffc05dba754a65487532c9a..639afda57cccada529e3a9ed163659955fc4d015 100644 (file)
@@ -137,7 +137,7 @@ void setup() {
   for (int i = 0; i < INTERFACE_COUNT; i++) {
       fifo16_init(&packet_starts[i], packet_starts_buf, CONFIG_QUEUE_MAX_LENGTH);
       fifo16_init(&packet_lengths[i], packet_lengths_buf, CONFIG_QUEUE_MAX_LENGTH);
-      packet_queue[i] = (uint8_t*)malloc(getQueueSize(i));
+      packet_queue[i] = (uint8_t*)malloc(getQueueSize(i)+1);
   }
 
   // Create and configure interface objects
@@ -585,9 +585,9 @@ void serialCallback(uint8_t sbyte) {
 
     if (getInterfaceIndex(command) < INTERFACE_COUNT) {
             uint8_t index = getInterfaceIndex(command);
-        if (!fifo16_isfull(&packet_starts[index]) && queued_bytes[index] < (getQueueSize(index))) {
+        if (!fifo16_isfull(&packet_starts[index]) && (queued_bytes[index] < (getQueueSize(index)))) {
             uint16_t s = current_packet_start[index];
-            int16_t e = queue_cursor[index]-1; if (e == -1) e = (getQueueSize(index))-1;
+            uint16_t e = queue_cursor[index]-1; if (e == -1) e = (getQueueSize(index))-1;
             uint16_t l;
 
             if (s != e) {
index 2d82b152b5a8e51bda09b36a5ea7a9dc00839478..95def2f7b5ef1c42e6c70795d6c65d22991053fc 100644 (file)
@@ -1100,7 +1100,7 @@ uint8_t getInterfaceCommandByte(uint8_t index) {
     }
 }
 
-uint32_t getQueueSize(uint8_t index) {
+uint16_t getQueueSize(uint8_t index) {
     switch (index) {
         case 0:
             return CONFIG_QUEUE_0_SIZE;