int ngates;
int i, hdr_size;
float value, scale, offset;
- unsigned char *data;
+ void *data;
Range (*invf)(float x);
float (*f)(Range x);
Ray *ray;
if (data_hdr.scale == 0) scale = 1.0;
data = &wsr88d_ray.data[data_ptr];
for (i = 0; i < ngates; i++) {
- if (data[i] > 1)
- value = (data[i] - offset) / scale;
- else value = (data[i] == 0) ? BADVAL : RFVAL;
+ unsigned short datan = 0;
+ switch (data_hdr.datasize_bits) {
+ case 8: datan = ((unsigned char *)data)[i]; break;
+ case 16: datan = ((unsigned short *)data)[i]; break;
+ }
+ if (little_endian() && data_hdr.datasize_bits == 16)
+ swap_2_bytes(&datan);
+
+ if (datan > 1)
+ value = (datan - offset) / scale;
+ else value = (datan == 0) ? BADVAL : RFVAL;
+
ray->range[i] = invf(value);
ray->h.f = f;
ray->h.invf = invf;