- telem_record t = read_telem(in);
- if (dim(clock) > 0 &&
- abs(t.time / 100 - clock[dim(clock)-1]) > 500)
- break;
- clock[dim(clock)] = t.time / 100;
- pressure_value[dim(pressure_value)] = t.pressure;
- accelerometer_value[dim(accelerometer_value)] = t.accel;
+ int n = dim(telem);
+ telem[n] = read_telem(in);
+ telem[n].time += clock_bias;
+ if (n > 0 && telem[n].time < telem[n-1].time) {
+ clock_bias += 65536;
+ telem[n].time += 65536;
+ }
+ }
+ int clock_start = telem[0].time;
+ int clock_end = telem[dim(telem)-1].time;
+ int samples = clock_end - clock_start;
+
+ int j = 0;
+ for (int i = 0; i < samples; i++) {
+ clock[i] = i / 100;
+ pressure_value[i] = telem[j].pressure;
+ accelerometer_value[i] = telem[j].accel;
+ if (j < dim(telem)-1) {
+ int cur_time = clock_start + i;
+ if (cur_time - telem[j].time > telem[j+1].time - cur_time)
+ j++;
+ }