Rearrangements to the receive thread.
Magnitude conversion now happens immediately when sample data is received, so there is no risk of newly received data clobbering old data under CPU overload.
This commit is contained in:
parent
e6c81251bf
commit
15ea5ba3da
11 changed files with 234 additions and 160 deletions
18
mode_s.c
18
mode_s.c
|
|
@ -1193,24 +1193,6 @@ void displayModesMessage(struct modesMessage *mm) {
|
|||
|
||||
printf("\n");
|
||||
}
|
||||
//
|
||||
//=========================================================================
|
||||
//
|
||||
// Turn I/Q samples pointed by Modes.data into the magnitude vector
|
||||
// pointed by Modes.magnitude.
|
||||
//
|
||||
void computeMagnitudeVector(uint16_t *p) {
|
||||
uint16_t *m = &Modes.magnitude[Modes.trailing_samples];
|
||||
uint32_t j;
|
||||
|
||||
memcpy(Modes.magnitude,&Modes.magnitude[MODES_ASYNC_BUF_SAMPLES], Modes.trailing_samples * 2);
|
||||
|
||||
// Compute the magnitudo vector. It's just SQRT(I^2 + Q^2), but
|
||||
// we rescale to the 0-255 range to exploit the full resolution.
|
||||
for (j = 0; j < MODES_ASYNC_BUF_SAMPLES; j ++) {
|
||||
*m++ = Modes.maglut[*p++];
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//=========================================================================
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue