int acq_GetDataRawV2(uint32_t pos, uint32_t* size, uint16_t* buffer, uint16_t* buffer2) { *size = MIN(*size, ADC_BUFFER_SIZE); const volatile uint32_t* raw_buffer = getRawBuffer(RP_CH_1); const volatile uint32_t* raw_buffer2 = getRawBuffer(RP_CH_2); for (uint32_t i = 0; i < (*size); ++i) { buffer[i] = (raw_buffer[(pos + i) % ADC_BUFFER_SIZE]) & ADC_BITS_MAK; buffer2[i] = (raw_buffer2[(pos + i) % ADC_BUFFER_SIZE]) & ADC_BITS_MAK; } return RP_OK; }
int acq_GetDataV2(uint32_t pos, uint32_t* size, float* buffer1, float* buffer2) { *size = MIN(*size, ADC_BUFFER_SIZE); float gainV1, gainV2; rp_pinState_t gain1, gain2; ECHECK(acq_GetGainV(RP_CH_1, &gainV1)); ECHECK(acq_GetGain(RP_CH_1, &gain1)); ECHECK(acq_GetGainV(RP_CH_2, &gainV2)); ECHECK(acq_GetGain(RP_CH_2, &gain2)); rp_calib_params_t calib = calib_GetParams(); int32_t dc_offs1 = calib.fe_ch1_dc_offs; uint32_t calibScale1 = calib_GetFrontEndScale(RP_CH_1, gain1); int32_t dc_offs2 = calib.fe_ch2_dc_offs; uint32_t calibScale2 = calib_GetFrontEndScale(RP_CH_2, gain2); const volatile uint32_t* raw_buffer1 = getRawBuffer(RP_CH_1); const volatile uint32_t* raw_buffer2 = getRawBuffer(RP_CH_2); uint32_t cnts1[*size]; uint32_t cnts2[*size]; uint32_t* ptr1 = cnts1; uint32_t* ptr2 = cnts2; for (uint32_t i = 0; i < (*size); ++i) { *ptr1++ = raw_buffer1[pos]; *ptr2++ = raw_buffer2[pos]; pos = (pos + 1) % ADC_BUFFER_SIZE; } ptr1 = cnts1; ptr2 = cnts2; for (uint32_t i = 0; i < (*size); ++i) { *buffer1++ = cmn_CnvCntToV(ADC_BITS, *ptr1++, gainV1, calibScale1, dc_offs1, 0.0); *buffer2++ = cmn_CnvCntToV(ADC_BITS, *ptr2++, gainV2, calibScale2, dc_offs2, 0.0); } return RP_OK; }
int acq_GetDataRaw(rp_channel_t channel, uint32_t pos, uint32_t* size, int16_t* buffer) { *size = MIN(*size, ADC_BUFFER_SIZE); uint32_t cnts; const volatile uint32_t* raw_buffer = getRawBuffer(channel); rp_calib_params_t calib = calib_GetParams(); int32_t dc_offs = (channel == RP_CH_1 ? calib.fe_ch1_dc_offs : calib.fe_ch2_dc_offs); for (uint32_t i = 0; i < (*size); ++i) { cnts = (raw_buffer[(pos + i) % ADC_BUFFER_SIZE]) & ADC_BITS_MAK; buffer[i] = cmn_CalibCnts(ADC_BITS, cnts, dc_offs); } return RP_OK; }
int acq_GetDataV(rp_channel_t channel, uint32_t pos, uint32_t* size, float* buffer) { *size = MIN(*size, ADC_BUFFER_SIZE); float gainV; rp_pinState_t gain; ECHECK(acq_GetGainV(channel, &gainV)); ECHECK(acq_GetGain(channel, &gain)); rp_calib_params_t calib = calib_GetParams(); int32_t dc_offs = (channel == RP_CH_1 ? calib.fe_ch1_dc_offs : calib.fe_ch2_dc_offs); uint32_t calibScale = calib_GetFrontEndScale(channel, gain); const volatile uint32_t* raw_buffer = getRawBuffer(channel); uint32_t cnts; for (uint32_t i = 0; i < (*size); ++i) { cnts = raw_buffer[(pos + i) % ADC_BUFFER_SIZE]; buffer[i] = cmn_CnvCntToV(ADC_BITS, cnts, gainV, calibScale, dc_offs, 0.0); } return RP_OK; }
int acq_GetDataRaw(rp_channel_t channel, uint32_t pos, uint32_t* size, int16_t* buffer) { *size = MIN(*size, ADC_BUFFER_SIZE); uint32_t cnts; const volatile uint32_t* raw_buffer = getRawBuffer(channel); rp_pinState_t gain; ECHECK(acq_GetGain(channel, &gain)); rp_calib_params_t calib = calib_GetParams(); int32_t dc_offs = GET_OFFSET(channel, gain, calib); for (uint32_t i = 0; i < (*size); ++i) { cnts = (raw_buffer[(pos + i) % ADC_BUFFER_SIZE]) & ADC_BITS_MAK; buffer[i] = cmn_CalibCnts(ADC_BITS, cnts, dc_offs); } return RP_OK; }