Added KISS flow control
This commit is contained in:
		
							parent
							
								
									8a35afbebe
								
							
						
					
					
						commit
						978800aaf9
					
				
							
								
								
									
										7
									
								
								Config.h
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								Config.h
									
									
									
									
									
								
							@ -26,6 +26,9 @@
 | 
			
		||||
		const int pin_dio = 2;
 | 
			
		||||
		const int pin_led_rx = 5;
 | 
			
		||||
		const int pin_led_tx = 4;
 | 
			
		||||
 | 
			
		||||
		#define FLOW_CONTROL_ENABLED true
 | 
			
		||||
		#define QUEUE_SIZE 0
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
	#if MCU_VARIANT == MCU_1284P
 | 
			
		||||
@ -34,6 +37,9 @@
 | 
			
		||||
		const int pin_dio = 2;
 | 
			
		||||
		const int pin_led_rx = 12;
 | 
			
		||||
		const int pin_led_tx = 13;
 | 
			
		||||
 | 
			
		||||
		#define FLOW_CONTROL_ENABLED true
 | 
			
		||||
		#define QUEUE_SIZE 24
 | 
			
		||||
	#endif
 | 
			
		||||
 | 
			
		||||
	// MCU independent configuration parameters
 | 
			
		||||
@ -42,6 +48,7 @@
 | 
			
		||||
 | 
			
		||||
	// Default LoRa settings
 | 
			
		||||
	int  lora_sf   = 0;
 | 
			
		||||
	int  lora_cr   = 5;
 | 
			
		||||
	int  lora_txp  = 0xFF;
 | 
			
		||||
	uint32_t lora_bw   = 0;
 | 
			
		||||
	uint32_t lora_freq = 0;
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,7 @@
 | 
			
		||||
	#define CMD_SF			0x04
 | 
			
		||||
	#define CMD_RADIO_STATE 0x05
 | 
			
		||||
	#define CMD_RADIO_LOCK	0x06
 | 
			
		||||
	#define CMD_READY		0x0F
 | 
			
		||||
 | 
			
		||||
	#define CMD_STAT_RX		0x21
 | 
			
		||||
	#define CMD_STAT_TX		0x22
 | 
			
		||||
 | 
			
		||||
@ -42,6 +42,7 @@ bool startRadio() {
 | 
			
		||||
        setTXPower();
 | 
			
		||||
        setBandwidth();
 | 
			
		||||
        setSpreadingFactor();
 | 
			
		||||
        setCodingRate();
 | 
			
		||||
        getFrequency();
 | 
			
		||||
 | 
			
		||||
        LoRa.enableCrc();
 | 
			
		||||
@ -178,6 +179,10 @@ void transmit(size_t size) {
 | 
			
		||||
    LoRa.endPacket();
 | 
			
		||||
    led_tx_off();
 | 
			
		||||
    LoRa.receive();
 | 
			
		||||
 | 
			
		||||
    if (FLOW_CONTROL_ENABLED)
 | 
			
		||||
      kiss_indicate_ready();
 | 
			
		||||
 | 
			
		||||
  } else {
 | 
			
		||||
    kiss_indicate_error(ERROR_TXFAILED);
 | 
			
		||||
    led_indicate_error(5);
 | 
			
		||||
 | 
			
		||||
@ -146,6 +146,13 @@ void kiss_indicate_random(uint8_t byte) {
 | 
			
		||||
	Serial.write(FEND);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void kiss_indicate_ready() {
 | 
			
		||||
	Serial.write(FEND);
 | 
			
		||||
	Serial.write(CMD_READY);
 | 
			
		||||
	Serial.write(0x01);
 | 
			
		||||
	Serial.write(FEND);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool isSplitPacket(uint8_t header) {
 | 
			
		||||
	return (header & FLAG_SPLIT);
 | 
			
		||||
}
 | 
			
		||||
@ -165,6 +172,10 @@ void setSpreadingFactor() {
 | 
			
		||||
	if (radio_online) LoRa.setSpreadingFactor(lora_sf);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void setCodingRate() {
 | 
			
		||||
	if (radio_online) LoRa.setCodingRate4(lora_cr);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void setTXPower() {
 | 
			
		||||
	if (radio_online) LoRa.setTxPower(lora_txp);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user