}
/* Update data to hold received samples newDataIndex .. newEnd.
If we receive data with a lower index, we discard newer data
(we assume the mote rebooted). */
private void setEnd(int newDataIndex, int newEnd) {
}
/* Update data to hold received samples newDataIndex .. newEnd.
If we receive data with a lower index, we discard newer data
(we assume the mote rebooted). */
private void setEnd(int newDataIndex, int newEnd) {
- if (newDataIndex < dataStart || data == null) {
- /* New data is before the start of what we have. Just throw it
- all away and start again */
- dataStart = newDataIndex;
- data = new int[INCREMENT];
- }
- if (newEnd > dataStart + data.length) {
- /* Try extending first */
- if (data.length < MAX_SIZE) {
- int newLength = (newEnd - dataStart + INCREMENT - 1) / INCREMENT * INCREMENT;
- if (newLength >= MAX_SIZE)
- newLength = MAX_SIZE;
+ if (newDataIndex < dataStart || data == null) {
+ /* New data is before the start of what we have. Just throw it
+ all away and start again */
+ dataStart = newDataIndex;
+ data = new int[INCREMENT];
+ }
+ if (newEnd > dataStart + data.length) {
+ /* Try extending first */
+ if (data.length < MAX_SIZE) {
+ int newLength = (newEnd - dataStart + INCREMENT - 1) / INCREMENT * INCREMENT;
+ if (newLength >= MAX_SIZE)
+ newLength = MAX_SIZE;
- int[] newData = new int[newLength];
- System.arraycopy(data, 0, newData, 0, data.length);
- data = newData;
+ int[] newData = new int[newLength];
+ System.arraycopy(data, 0, newData, 0, data.length);
+ data = newData;
- }
- if (newEnd > dataStart + data.length) {
- /* Still doesn't fit. Squish.
- We assume INCREMENT >= (newEnd - newDataIndex), and ensure
- that dataStart + data.length - INCREMENT = newDataIndex */
- int newStart = newDataIndex + INCREMENT - data.length;
+ }
+ if (newEnd > dataStart + data.length) {
+ /* Still doesn't fit. Squish.
+ We assume INCREMENT >= (newEnd - newDataIndex), and ensure
+ that dataStart + data.length - INCREMENT = newDataIndex */
+ int newStart = newDataIndex + INCREMENT - data.length;
- if (dataStart + data.length > newStart)
- System.arraycopy(data, newStart - dataStart, data, 0,
- data.length - (newStart - dataStart));
- dataStart = newStart;
- }
- }
- /* Mark any missing data as invalid */
- for (int i = dataEnd < dataStart ? dataStart : dataEnd;
- i < newDataIndex; i++)
- data[i - dataStart] = -1;
+ if (dataStart + data.length > newStart)
+ System.arraycopy(data, newStart - dataStart, data, 0,
+ data.length - (newStart - dataStart));
+ dataStart = newStart;
+ }
+ }
+ /* Mark any missing data as invalid */
+ for (int i = dataEnd < dataStart ? dataStart : dataEnd;
+ i < newDataIndex; i++)
+ data[i - dataStart] = -1;
}
/* Data received containing NREADINGS samples from messageId * NREADINGS
onwards */
void update(int messageId, int readings[]) {
}
/* Data received containing NREADINGS samples from messageId * NREADINGS
onwards */
void update(int messageId, int readings[]) {
- int start = messageId * Constants.NREADINGS;
- setEnd(start, start + Constants.NREADINGS);
- for (int i = 0; i < readings.length; i++)
- data[start - dataStart + i] = readings[i];
+ int start = messageId * Constants.NREADINGS;
+ setEnd(start, start + Constants.NREADINGS);
+ for (int i = 0; i < readings.length; i++)
+ data[start - dataStart + i] = readings[i];