Work on ESP32 compatibility
This commit is contained in:
		
							parent
							
								
									9ba4ceaa12
								
							
						
					
					
						commit
						8a51a03a24
					
				
							
								
								
									
										9
									
								
								Config.h
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								Config.h
									
									
									
									
									
								
							@ -4,7 +4,7 @@
 | 
				
			|||||||
	#define CONFIG_H
 | 
						#define CONFIG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#define MAJ_VERS  0x01
 | 
						#define MAJ_VERS  0x01
 | 
				
			||||||
	#define MIN_VERS  0x14
 | 
						#define MIN_VERS  0x15
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	#define PLATFORM_AVR   0x90
 | 
						#define PLATFORM_AVR   0x90
 | 
				
			||||||
    #define PLATFORM_ESP32 0x80
 | 
					    #define PLATFORM_ESP32 0x80
 | 
				
			||||||
@ -45,8 +45,6 @@
 | 
				
			|||||||
		const int pin_led_rx = 12;
 | 
							const int pin_led_rx = 12;
 | 
				
			||||||
		const int pin_led_tx = 13;
 | 
							const int pin_led_tx = 13;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const long serial_baudrate  = 115200;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define CONFIG_UART_BUFFER_SIZE 6144
 | 
							#define CONFIG_UART_BUFFER_SIZE 6144
 | 
				
			||||||
		#define CONFIG_QUEUE_SIZE 6144
 | 
							#define CONFIG_QUEUE_SIZE 6144
 | 
				
			||||||
		#define CONFIG_QUEUE_MAX_LENGTH 250
 | 
							#define CONFIG_QUEUE_MAX_LENGTH 250
 | 
				
			||||||
@ -61,8 +59,6 @@
 | 
				
			|||||||
		const int pin_led_rx = 12;
 | 
							const int pin_led_rx = 12;
 | 
				
			||||||
		const int pin_led_tx = 13;
 | 
							const int pin_led_tx = 13;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const long serial_baudrate  = 115200;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define CONFIG_UART_BUFFER_SIZE 2048
 | 
							#define CONFIG_UART_BUFFER_SIZE 2048
 | 
				
			||||||
		#define CONFIG_QUEUE_SIZE 2048
 | 
							#define CONFIG_QUEUE_SIZE 2048
 | 
				
			||||||
		#define CONFIG_QUEUE_MAX_LENGTH 80
 | 
							#define CONFIG_QUEUE_MAX_LENGTH 80
 | 
				
			||||||
@ -77,8 +73,6 @@
 | 
				
			|||||||
		const int pin_led_rx = 2;
 | 
							const int pin_led_rx = 2;
 | 
				
			||||||
		const int pin_led_tx = 4;
 | 
							const int pin_led_tx = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const long serial_baudrate  = 921600;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		#define CONFIG_UART_BUFFER_SIZE 6144
 | 
							#define CONFIG_UART_BUFFER_SIZE 6144
 | 
				
			||||||
		#define CONFIG_QUEUE_SIZE 6144
 | 
							#define CONFIG_QUEUE_SIZE 6144
 | 
				
			||||||
		#define CONFIG_QUEUE_MAX_LENGTH 250
 | 
							#define CONFIG_QUEUE_MAX_LENGTH 250
 | 
				
			||||||
@ -90,6 +84,7 @@
 | 
				
			|||||||
	#define eeprom_addr(a) (a+EEPROM_OFFSET)
 | 
						#define eeprom_addr(a) (a+EEPROM_OFFSET)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// MCU independent configuration parameters
 | 
						// MCU independent configuration parameters
 | 
				
			||||||
 | 
						const long serial_baudrate  = 115200;
 | 
				
			||||||
	const int lora_rx_turnaround_ms = 50;
 | 
						const int lora_rx_turnaround_ms = 50;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// SX1276 RSSI offset to get dBm value from
 | 
						// SX1276 RSSI offset to get dBm value from
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,14 @@ volatile bool serial_buffering = false;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
char sbuf[128];
 | 
					char sbuf[128];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if MCU_VARIANT == MCU_ESP32
 | 
				
			||||||
 | 
					  #include "soc/rtc_wdt.h"
 | 
				
			||||||
 | 
					  #define ISR_VECT IRAM_ATTR
 | 
				
			||||||
 | 
					  bool packet_ready = false;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  #define ISR_VECT
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void setup() {
 | 
					void setup() {
 | 
				
			||||||
  #if MCU_VARIANT == MCU_ESP32
 | 
					  #if MCU_VARIANT == MCU_ESP32
 | 
				
			||||||
    delay(500);
 | 
					    delay(500);
 | 
				
			||||||
@ -62,9 +70,14 @@ void setup() {
 | 
				
			|||||||
  LoRa.setPins(pin_cs, pin_reset, pin_dio);
 | 
					  LoRa.setPins(pin_cs, pin_reset, pin_dio);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #if MCU_VARIANT == MCU_ESP32
 | 
					  #if MCU_VARIANT == MCU_ESP32
 | 
				
			||||||
    radio_locked  = true;
 | 
					    // ESP32-specific initialisation
 | 
				
			||||||
    radio_online  = false;
 | 
					    // The WDT is disabled for now. This
 | 
				
			||||||
    hw_ready      = false;
 | 
					    // should be re-enabled as soon as any
 | 
				
			||||||
 | 
					    // Core0-related features are used
 | 
				
			||||||
 | 
					    rtc_wdt_protect_off();
 | 
				
			||||||
 | 
					    rtc_wdt_disable();
 | 
				
			||||||
 | 
					    // rtc_wdt_set_stage(RTC_WDT_STAGE0, RTC_WDT_STAGE_ACTION_RESET_SYSTEM);
 | 
				
			||||||
 | 
					    // rtc_wdt_set_time(RTC_WDT_STAGE0, 25);
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Validate board health, EEPROM and config
 | 
					  // Validate board health, EEPROM and config
 | 
				
			||||||
@ -79,6 +92,134 @@ void lora_receive() {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					inline void kiss_write_packet() {
 | 
				
			||||||
 | 
					  Serial.write(FEND);
 | 
				
			||||||
 | 
					  Serial.write(CMD_DATA);
 | 
				
			||||||
 | 
					  for (int i = 0; i < read_len; i++) {
 | 
				
			||||||
 | 
					    uint8_t byte = pbuf[i];
 | 
				
			||||||
 | 
					    if (byte == FEND) { Serial.write(FESC); byte = TFEND; }
 | 
				
			||||||
 | 
					    if (byte == FESC) { Serial.write(FESC); byte = TFESC; }
 | 
				
			||||||
 | 
					    Serial.write(byte);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  Serial.write(FEND);
 | 
				
			||||||
 | 
					  read_len = 0;
 | 
				
			||||||
 | 
					  #if MCU_VARIANT == MCU_ESP32
 | 
				
			||||||
 | 
					    packet_ready = false;
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ISR_VECT receive_callback(int packet_size) {
 | 
				
			||||||
 | 
					  if (!promisc) {
 | 
				
			||||||
 | 
					    // The standard operating mode allows large
 | 
				
			||||||
 | 
					    // packets with a payload up to 500 bytes,
 | 
				
			||||||
 | 
					    // by combining two raw LoRa packets.
 | 
				
			||||||
 | 
					    // We read the 1-byte header and extract
 | 
				
			||||||
 | 
					    // packet sequence number and split flags
 | 
				
			||||||
 | 
					    uint8_t header   = LoRa.read(); packet_size--;
 | 
				
			||||||
 | 
					    uint8_t sequence = packetSequence(header);
 | 
				
			||||||
 | 
					    bool    ready    = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (isSplitPacket(header) && seq == SEQ_UNSET) {
 | 
				
			||||||
 | 
					      // This is the first part of a split
 | 
				
			||||||
 | 
					      // packet, so we set the seq variable
 | 
				
			||||||
 | 
					      // and add the data to the buffer
 | 
				
			||||||
 | 
					      read_len = 0;
 | 
				
			||||||
 | 
					      seq = sequence;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      #if MCU_VARIANT != MCU_ESP32
 | 
				
			||||||
 | 
					        last_rssi = LoRa.packetRssi();
 | 
				
			||||||
 | 
					        last_snr_raw = LoRa.packetSnrRaw();
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      getPacketData(packet_size);
 | 
				
			||||||
 | 
					    } else if (isSplitPacket(header) && seq == sequence) {
 | 
				
			||||||
 | 
					      // This is the second part of a split
 | 
				
			||||||
 | 
					      // packet, so we add it to the buffer
 | 
				
			||||||
 | 
					      // and set the ready flag.
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      #if MCU_VARIANT != MCU_ESP32
 | 
				
			||||||
 | 
					        last_rssi = (last_rssi+LoRa.packetRssi())/2;
 | 
				
			||||||
 | 
					        last_snr_raw = (last_snr_raw+LoRa.packetSnrRaw())/2;
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      getPacketData(packet_size);
 | 
				
			||||||
 | 
					      seq = SEQ_UNSET;
 | 
				
			||||||
 | 
					      ready = true;
 | 
				
			||||||
 | 
					    } else if (isSplitPacket(header) && seq != sequence) {
 | 
				
			||||||
 | 
					      // This split packet does not carry the
 | 
				
			||||||
 | 
					      // same sequence id, so we must assume
 | 
				
			||||||
 | 
					      // that we are seeing the first part of
 | 
				
			||||||
 | 
					      // a new split packet.
 | 
				
			||||||
 | 
					      read_len = 0;
 | 
				
			||||||
 | 
					      seq = sequence;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      #if MCU_VARIANT != MCU_ESP32
 | 
				
			||||||
 | 
					        last_rssi = LoRa.packetRssi();
 | 
				
			||||||
 | 
					        last_snr_raw = LoRa.packetSnrRaw();
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      getPacketData(packet_size);
 | 
				
			||||||
 | 
					    } else if (!isSplitPacket(header)) {
 | 
				
			||||||
 | 
					      // This is not a split packet, so we
 | 
				
			||||||
 | 
					      // just read it and set the ready
 | 
				
			||||||
 | 
					      // flag to true.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (seq != SEQ_UNSET) {
 | 
				
			||||||
 | 
					        // If we already had part of a split
 | 
				
			||||||
 | 
					        // packet in the buffer, we clear it.
 | 
				
			||||||
 | 
					        read_len = 0;
 | 
				
			||||||
 | 
					        seq = SEQ_UNSET;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      #if MCU_VARIANT != MCU_ESP32
 | 
				
			||||||
 | 
					        last_rssi = LoRa.packetRssi();
 | 
				
			||||||
 | 
					        last_snr_raw = LoRa.packetSnrRaw();
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      getPacketData(packet_size);
 | 
				
			||||||
 | 
					      ready = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (ready) {
 | 
				
			||||||
 | 
					      #if MCU_VARIANT != MCU_ESP32
 | 
				
			||||||
 | 
					        // We first signal the RSSI of the
 | 
				
			||||||
 | 
					        // recieved packet to the host.
 | 
				
			||||||
 | 
					        kiss_indicate_stat_rssi();
 | 
				
			||||||
 | 
					        kiss_indicate_stat_snr();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // And then write the entire packet
 | 
				
			||||||
 | 
					        kiss_write_packet();
 | 
				
			||||||
 | 
					      #else
 | 
				
			||||||
 | 
					        packet_ready = true;
 | 
				
			||||||
 | 
					      #endif
 | 
				
			||||||
 | 
					    }  
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    #if MCU_VARIANT != MCU_ESP32
 | 
				
			||||||
 | 
					      // In promiscuous mode, raw packets are
 | 
				
			||||||
 | 
					      // output directly to the host
 | 
				
			||||||
 | 
					      read_len = 0;
 | 
				
			||||||
 | 
					      last_rssi = LoRa.packetRssi();
 | 
				
			||||||
 | 
					      last_snr_raw = LoRa.packetSnrRaw();
 | 
				
			||||||
 | 
					      getPacketData(packet_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // We first signal the RSSI of the
 | 
				
			||||||
 | 
					      // recieved packet to the host.
 | 
				
			||||||
 | 
					      kiss_indicate_stat_rssi();
 | 
				
			||||||
 | 
					      kiss_indicate_stat_snr();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // And then write the entire packet
 | 
				
			||||||
 | 
					      kiss_write_packet();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
 | 
					      // Promiscous mode is not supported on ESP32 for now
 | 
				
			||||||
 | 
					      getPacketData(packet_size);
 | 
				
			||||||
 | 
					      read_len = 0;
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool startRadio() {
 | 
					bool startRadio() {
 | 
				
			||||||
  update_radio_lock();
 | 
					  update_radio_lock();
 | 
				
			||||||
  if (!radio_online) {
 | 
					  if (!radio_online) {
 | 
				
			||||||
@ -101,9 +242,7 @@ bool startRadio() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        LoRa.enableCrc();
 | 
					        LoRa.enableCrc();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        #if MCU_VARIANT != MCU_ESP32
 | 
					 | 
				
			||||||
        LoRa.onReceive(receive_callback);
 | 
					        LoRa.onReceive(receive_callback);
 | 
				
			||||||
        #endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        lora_receive();
 | 
					        lora_receive();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -140,108 +279,6 @@ void update_radio_lock() {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void receive_callback(int packet_size) {
 | 
					 | 
				
			||||||
  if (!promisc) {
 | 
					 | 
				
			||||||
    // The standard operating mode allows large
 | 
					 | 
				
			||||||
    // packets with a payload up to 500 bytes,
 | 
					 | 
				
			||||||
    // by combining two raw LoRa packets.
 | 
					 | 
				
			||||||
    // We read the 1-byte header and extract
 | 
					 | 
				
			||||||
    // packet sequence number and split flags
 | 
					 | 
				
			||||||
    uint8_t header   = LoRa.read(); packet_size--;
 | 
					 | 
				
			||||||
    uint8_t sequence = packetSequence(header);
 | 
					 | 
				
			||||||
    bool    ready    = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (isSplitPacket(header) && seq == SEQ_UNSET) {
 | 
					 | 
				
			||||||
      // This is the first part of a split
 | 
					 | 
				
			||||||
      // packet, so we set the seq variable
 | 
					 | 
				
			||||||
      // and add the data to the buffer
 | 
					 | 
				
			||||||
      read_len = 0;
 | 
					 | 
				
			||||||
      seq = sequence;
 | 
					 | 
				
			||||||
      last_rssi = LoRa.packetRssi();
 | 
					 | 
				
			||||||
      last_snr_raw = LoRa.packetSnrRaw();
 | 
					 | 
				
			||||||
      getPacketData(packet_size);
 | 
					 | 
				
			||||||
    } else if (isSplitPacket(header) && seq == sequence) {
 | 
					 | 
				
			||||||
      // This is the second part of a split
 | 
					 | 
				
			||||||
      // packet, so we add it to the buffer
 | 
					 | 
				
			||||||
      // and set the ready flag.
 | 
					 | 
				
			||||||
      last_rssi = (last_rssi+LoRa.packetRssi())/2;
 | 
					 | 
				
			||||||
      last_snr_raw = (last_snr_raw+LoRa.packetSnrRaw())/2;
 | 
					 | 
				
			||||||
      getPacketData(packet_size);
 | 
					 | 
				
			||||||
      seq = SEQ_UNSET;
 | 
					 | 
				
			||||||
      ready = true;
 | 
					 | 
				
			||||||
    } else if (isSplitPacket(header) && seq != sequence) {
 | 
					 | 
				
			||||||
      // This split packet does not carry the
 | 
					 | 
				
			||||||
      // same sequence id, so we must assume
 | 
					 | 
				
			||||||
      // that we are seeing the first part of
 | 
					 | 
				
			||||||
      // a new split packet.
 | 
					 | 
				
			||||||
      read_len = 0;
 | 
					 | 
				
			||||||
      seq = sequence;
 | 
					 | 
				
			||||||
      last_rssi = LoRa.packetRssi();
 | 
					 | 
				
			||||||
      last_snr_raw = LoRa.packetSnrRaw();
 | 
					 | 
				
			||||||
      getPacketData(packet_size);
 | 
					 | 
				
			||||||
    } else if (!isSplitPacket(header)) {
 | 
					 | 
				
			||||||
      // This is not a split packet, so we
 | 
					 | 
				
			||||||
      // just read it and set the ready
 | 
					 | 
				
			||||||
      // flag to true.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (seq != SEQ_UNSET) {
 | 
					 | 
				
			||||||
        // If we already had part of a split
 | 
					 | 
				
			||||||
        // packet in the buffer, we clear it.
 | 
					 | 
				
			||||||
        read_len = 0;
 | 
					 | 
				
			||||||
        seq = SEQ_UNSET;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      last_rssi = LoRa.packetRssi();
 | 
					 | 
				
			||||||
      last_snr_raw = LoRa.packetSnrRaw();
 | 
					 | 
				
			||||||
      getPacketData(packet_size);
 | 
					 | 
				
			||||||
      ready = true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (ready) {
 | 
					 | 
				
			||||||
      // We first signal the RSSI of the
 | 
					 | 
				
			||||||
      // recieved packet to the host.
 | 
					 | 
				
			||||||
      kiss_indicate_stat_rssi();
 | 
					 | 
				
			||||||
      kiss_indicate_stat_snr();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // And then write the entire packet
 | 
					 | 
				
			||||||
      Serial.write(FEND);
 | 
					 | 
				
			||||||
      Serial.write(CMD_DATA);
 | 
					 | 
				
			||||||
      for (int i = 0; i < read_len; i++) {
 | 
					 | 
				
			||||||
        uint8_t byte = pbuf[i];
 | 
					 | 
				
			||||||
        if (byte == FEND) { Serial.write(FESC); byte = TFEND; }
 | 
					 | 
				
			||||||
        if (byte == FESC) { Serial.write(FESC); byte = TFESC; }
 | 
					 | 
				
			||||||
        Serial.write(byte);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      Serial.write(FEND);
 | 
					 | 
				
			||||||
      read_len = 0;
 | 
					 | 
				
			||||||
    }  
 | 
					 | 
				
			||||||
  } else {
 | 
					 | 
				
			||||||
    // In promiscuous mode, raw packets are
 | 
					 | 
				
			||||||
    // output directly to the host
 | 
					 | 
				
			||||||
    read_len = 0;
 | 
					 | 
				
			||||||
    last_rssi = LoRa.packetRssi();
 | 
					 | 
				
			||||||
    last_snr_raw = LoRa.packetSnrRaw();
 | 
					 | 
				
			||||||
    getPacketData(packet_size);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // We first signal the RSSI of the
 | 
					 | 
				
			||||||
    // recieved packet to the host.
 | 
					 | 
				
			||||||
    kiss_indicate_stat_rssi();
 | 
					 | 
				
			||||||
    kiss_indicate_stat_snr();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // And then write the entire packet
 | 
					 | 
				
			||||||
    Serial.write(FEND);
 | 
					 | 
				
			||||||
    Serial.write(CMD_DATA);
 | 
					 | 
				
			||||||
    for (int i = 0; i < read_len; i++) {
 | 
					 | 
				
			||||||
      uint8_t byte = pbuf[i];
 | 
					 | 
				
			||||||
      if (byte == FEND) { Serial.write(FESC); byte = TFEND; }
 | 
					 | 
				
			||||||
      if (byte == FESC) { Serial.write(FESC); byte = TFESC; }
 | 
					 | 
				
			||||||
      Serial.write(byte);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    Serial.write(FEND);
 | 
					 | 
				
			||||||
    read_len = 0;    
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool queueFull() {
 | 
					bool queueFull() {
 | 
				
			||||||
  return (queue_height >= CONFIG_QUEUE_MAX_LENGTH || queued_bytes >= CONFIG_QUEUE_SIZE);
 | 
					  return (queue_height >= CONFIG_QUEUE_MAX_LENGTH || queued_bytes >= CONFIG_QUEUE_SIZE);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -650,9 +687,8 @@ void loop() {
 | 
				
			|||||||
    checkModemStatus();
 | 
					    checkModemStatus();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #if MCU_VARIANT == MCU_ESP32
 | 
					    #if MCU_VARIANT == MCU_ESP32
 | 
				
			||||||
      int packet_size = LoRa.parsePacket();
 | 
					      if (packet_ready) {
 | 
				
			||||||
      if (packet_size) {
 | 
					        kiss_write_packet();
 | 
				
			||||||
        receive_callback(packet_size);
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -686,12 +722,9 @@ void loop() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  #if MCU_VARIANT == MCU_ESP32
 | 
					  #if MCU_VARIANT == MCU_ESP32
 | 
				
			||||||
    buffer_serial();
 | 
					    buffer_serial();
 | 
				
			||||||
  #endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  #if MCU_VARIANT != MCU_ESP32
 | 
					 | 
				
			||||||
    if (!fifo_isempty_locked(&serialFIFO)) serial_poll();
 | 
					 | 
				
			||||||
  #else
 | 
					 | 
				
			||||||
    if (!fifo_isempty(&serialFIFO)) serial_poll();
 | 
					    if (!fifo_isempty(&serialFIFO)) serial_poll();
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					    if (!fifo_isempty_locked(&serialFIFO)) serial_poll();    
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -381,15 +381,15 @@ void kiss_indicate_mcu() {
 | 
				
			|||||||
	Serial.write(FEND);
 | 
						Serial.write(FEND);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool isSplitPacket(uint8_t header) {
 | 
					inline bool isSplitPacket(uint8_t header) {
 | 
				
			||||||
	return (header & FLAG_SPLIT);
 | 
						return (header & FLAG_SPLIT);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint8_t packetSequence(uint8_t header) {
 | 
					inline uint8_t packetSequence(uint8_t header) {
 | 
				
			||||||
	return header >> 4;
 | 
						return header >> 4;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void getPacketData(int len) {
 | 
					inline void getPacketData(int len) {
 | 
				
			||||||
	while (len--) {
 | 
						while (len--) {
 | 
				
			||||||
		pbuf[read_len++] = LoRa.read();
 | 
							pbuf[read_len++] = LoRa.read();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user