4.5 Data encoding for averaged ADC hits

When using NDIGO6G12_APP_TYPE_AVRG, the first two 64-bit words of crono_packet::data are the extended header containing more information, as shown in the following bit table.

Bits

127 – 38

37 – 32

31 – 12

11 – 0

Data

reserved

flags

reserved

iterations performed

Details

0x01: stopped iterations prematurely 0x02: overflow detected 0x04: stopped by timeout 0x08: stopped by software 0x10: stopped by overflow

The following data words contain the raw ADC data mapped to the range of a signed32 integer (−231 to 231 −1). Thus, crono_packet::data must be cast to int32_t and crono_packet::length must be multiplied by 2 taking into account the extended header. That is,

uint32_t extended_header_length = 2;
uint32_t sample_count = ((pkt->length - extended_header_length) * 2);
int32_t* adc_data = (int32_t*)(pkt->data + extended_header_length);
for (uint32_t i = 0; i < sample_count; i++) {
    /* work with adc_data[i] */
}