diff options
| -rw-r--r-- | altoslib/AltosRecord.java | 12 | ||||
| -rw-r--r-- | altoslib/AltosRecordMM.java | 10 | ||||
| -rw-r--r-- | altoslib/AltosRecordNone.java | 4 | ||||
| -rw-r--r-- | altoslib/AltosRecordTM.java | 8 | ||||
| -rw-r--r-- | altoslib/AltosState.java | 8 | ||||
| -rw-r--r-- | src/drivers/ao_cc1120.c | 2 | 
6 files changed, 24 insertions, 20 deletions
| diff --git a/altoslib/AltosRecord.java b/altoslib/AltosRecord.java index 09169515..2c4b6fa5 100644 --- a/altoslib/AltosRecord.java +++ b/altoslib/AltosRecord.java @@ -126,6 +126,8 @@ public abstract class AltosRecord implements Comparable <AltosRecord>, Cloneable  		return tick - o.tick;  	} +	abstract public AltosRecord clone(); +  	public void copy(AltosRecord old) {  		seen = old.seen;  		version = old.version; @@ -144,16 +146,6 @@ public abstract class AltosRecord implements Comparable <AltosRecord>, Cloneable  		kalman_height = old.kalman_height;  	} -	public AltosRecord clone() { -		try { -			AltosRecord n = (AltosRecord) super.clone(); -			n.copy(this); -			return n; -		} catch (CloneNotSupportedException e) { -			return null; -		} -	} -  	public AltosRecord() {  		seen = 0;  		version = 0; diff --git a/altoslib/AltosRecordMM.java b/altoslib/AltosRecordMM.java index 9f529234..546f3055 100644 --- a/altoslib/AltosRecordMM.java +++ b/altoslib/AltosRecordMM.java @@ -131,10 +131,10 @@ public class AltosRecordMM extends AltosRecord {  		mag = old.mag;  	} + +  	public AltosRecordMM clone() { -		AltosRecordMM n = (AltosRecordMM) super.clone(); -		n.copy(this); -		return n; +		return new AltosRecordMM(this);  	}  	void make_missing() { @@ -167,6 +167,10 @@ public class AltosRecordMM extends AltosRecord {  		make_missing();  	} +	public AltosRecordMM(AltosRecordMM old) { +		copy(old); +	} +  	public AltosRecordMM() {  		super();  		make_missing(); diff --git a/altoslib/AltosRecordNone.java b/altoslib/AltosRecordNone.java index ca0a5fe3..d4ea305f 100644 --- a/altoslib/AltosRecordNone.java +++ b/altoslib/AltosRecordNone.java @@ -28,6 +28,10 @@ public class AltosRecordNone extends AltosRecord {  		super.copy(old);  	} +	public AltosRecordNone clone() { +		return new AltosRecordNone(this); +	} +  	public AltosRecordNone() {  		super();  	} diff --git a/altoslib/AltosRecordTM.java b/altoslib/AltosRecordTM.java index 9530be31..f6ed4966 100644 --- a/altoslib/AltosRecordTM.java +++ b/altoslib/AltosRecordTM.java @@ -149,9 +149,7 @@ public class AltosRecordTM extends AltosRecord {  	}  	public AltosRecordTM clone() { -		AltosRecordTM	n = (AltosRecordTM) super.clone(); -		n.copy(this); -		return n; +		return new AltosRecordTM(this);  	}  	void make_missing() { @@ -177,6 +175,10 @@ public class AltosRecordTM extends AltosRecord {  		make_missing();  	} +	public AltosRecordTM(AltosRecordTM old) { +		copy(old); +	} +	  	public AltosRecordTM() {  		super();  		make_missing(); diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 218c598a..4f59c840 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -200,10 +200,10 @@ public class AltosState {  				}  				ngps++;  			} -		} else -			pad_alt = ground_altitude; - -		data.new_gps = false; +		} else { +			if (ngps == 0) +				pad_alt = ground_altitude; +		}  		gps_waiting = MIN_PAD_SAMPLES - npad;  		if (gps_waiting < 0) diff --git a/src/drivers/ao_cc1120.c b/src/drivers/ao_cc1120.c index d9b2e5bf..8068740f 100644 --- a/src/drivers/ao_cc1120.c +++ b/src/drivers/ao_cc1120.c @@ -862,6 +862,7 @@ ao_radio_rx_wait(void)  	do {  		if (ao_radio_mcu_wake)  			ao_radio_check_marc_status(); +		ao_alarm(AO_MS_TO_TICKS(100));  		ao_arch_block_interrupts();  		rx_waiting = 1;  		while (rx_data_cur - rx_data_consumed < AO_FEC_DECODE_BLOCK && @@ -873,6 +874,7 @@ ao_radio_rx_wait(void)  		}  		rx_waiting = 0;  		ao_arch_release_interrupts(); +		ao_clear_alarm();  	} while (ao_radio_mcu_wake);  	if (ao_radio_abort)  		return 0; | 
