#include <inttypes.h>
#include "floating_fudge.h"
#include "spandsp/telephony.h"
#include "spandsp/complex.h"
#include "spandsp/dds.h"
Defines | |
#define | M_PI 3.14159265358979323846 |
#define | SLENK 7 |
#define | DDS_STEPS (1 << SLENK) |
#define | DDS_SHIFT (32 - 2 - SLENK) |
Functions | |
int32_t | dds_phase_rate (float frequency) |
Find the phase rate value to achieve a particular frequency. | |
float | dds_frequency (int32_t phase_rate) |
Find the frequency, in Hz, equivalent to a phase rate. | |
int | dds_scaling_dbm0 (float level) |
Find the scaling factor needed to achieve a specified level in dBm0. | |
int | dds_scaling_dbov (float level) |
Find the scaling factor needed to achieve a specified level in dBmov. | |
int16_t | dds_lookup (uint32_t phase) |
Lookup the integer value of a specified phase. | |
int16_t | dds_offset (uint32_t phase_acc, int32_t phase_offset) |
Find the amplitude for a particular phase offset from an accumulated phase. | |
void | dds_advance (uint32_t *phase_acc, int32_t phase_rate) |
Advance the phase, without returning any new signal sample. | |
int16_t | dds (uint32_t *phase_acc, int32_t phase_rate) |
Generate an integer tone sample. | |
int16_t | dds_mod (uint32_t *phase_acc, int32_t phase_rate, int16_t scale, int32_t phase) |
Generate an integer tone sample, with modulation. | |
complexi_t | dds_lookup_complexi (uint32_t phase) |
Lookup the complex integer value of a specified phase. | |
complexi_t | dds_complexi (uint32_t *phase_acc, int32_t phase_rate) |
Generate a complex integer tone sample. | |
complexi_t | dds_complexi_mod (uint32_t *phase_acc, int32_t phase_rate, int16_t scale, int32_t phase) |
Generate a complex integer tone sample, with modulation. | |
complexi16_t | dds_lookup_complexi16 (uint32_t phase) |
Generate a complex 16 bit integer tone sample. | |
complexi16_t | dds_complexi16 (uint32_t *phase_acc, int32_t phase_rate) |
Generate a complex 16 bit integer tone sample. | |
complexi16_t | dds_complexi16_mod (uint32_t *phase_acc, int32_t phase_rate, int16_t scale, int32_t phase) |
Generate a complex 16bit integer tone sample, with modulation. | |
complexi32_t | dds_lookup_complexi32 (uint32_t phase) |
Generate a complex 32 bit integer tone sample. | |
complexi32_t | dds_complexi32 (uint32_t *phase_acc, int32_t phase_rate) |
Generate a complex 32 bit integer tone sample. | |
complexi32_t | dds_complexi32_mod (uint32_t *phase_acc, int32_t phase_rate, int16_t scale, int32_t phase) |
Generate a complex 32 bit integer tone sample, with modulation. |
int16_t dds | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate | |||
) |
Generate an integer tone sample.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. |
References dds_lookup().
void dds_advance | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate | |||
) |
Advance the phase, without returning any new signal sample.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. |
Referenced by v17_rx(), v27ter_rx(), and v29_rx().
complexi_t dds_complexi | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate | |||
) |
Generate a complex integer tone sample.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. |
References dds_lookup().
Referenced by fsk_rx(), v17_tx(), v27ter_tx(), and v32bis_tx().
complexi16_t dds_complexi16 | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate | |||
) |
Generate a complex 16 bit integer tone sample.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. |
References dds_lookup().
complexi16_t dds_complexi16_mod | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate, | |||
int16_t | scale, | |||
int32_t | phase | |||
) |
Generate a complex 16bit integer tone sample, with modulation.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. | |
scale | The scaling factor. | |
phase | The phase offset. |
References dds_lookup().
complexi32_t dds_complexi32 | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate | |||
) |
Generate a complex 32 bit integer tone sample.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. |
References dds_lookup().
complexi32_t dds_complexi32_mod | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate, | |||
int16_t | scale, | |||
int32_t | phase | |||
) |
Generate a complex 32 bit integer tone sample, with modulation.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. | |
scale | The scaling factor. | |
phase | The phase offset. |
References dds_lookup().
complexi_t dds_complexi_mod | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate, | |||
int16_t | scale, | |||
int32_t | phase | |||
) |
Generate a complex integer tone sample, with modulation.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. | |
scale | The scaling factor. | |
phase | The phase offset. |
References dds_lookup().
float dds_frequency | ( | int32_t | phase_rate | ) |
Find the frequency, in Hz, equivalent to a phase rate.
phase_rate | The phase rate. |
Referenced by v32bis_rx_carrier_frequency().
int16_t dds_lookup | ( | uint32_t | phase | ) |
Lookup the integer value of a specified phase.
Find the amplitude for a particular phase.
phase | The phase accumulator value to be looked up. |
Referenced by dds(), dds_complexi(), dds_complexi16(), dds_complexi16_mod(), dds_complexi32(), dds_complexi32_mod(), dds_complexi_mod(), dds_lookup_complexi(), dds_lookup_complexi16(), dds_lookup_complexi32(), dds_mod(), and dds_offset().
complexi_t dds_lookup_complexi | ( | uint32_t | phase | ) |
Lookup the complex integer value of a specified phase.
phase | The phase accumulator value to be looked up. |
References dds_lookup().
complexi16_t dds_lookup_complexi16 | ( | uint32_t | phase | ) |
Generate a complex 16 bit integer tone sample.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. |
References dds_lookup().
Referenced by v27ter_rx(), and v29_rx().
complexi32_t dds_lookup_complexi32 | ( | uint32_t | phase | ) |
Generate a complex 32 bit integer tone sample.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. |
References dds_lookup().
int16_t dds_mod | ( | uint32_t * | phase_acc, | |
int32_t | phase_rate, | |||
int16_t | scale, | |||
int32_t | phase | |||
) |
Generate an integer tone sample, with modulation.
phase_acc | A pointer to a phase accumulator value. | |
phase_rate | The phase increment to be applied. | |
scale | The scaling factor. | |
phase | The phase offset. |
References dds_lookup().
Referenced by fsk_tx(), modem_connect_tones_tx(), and sig_tone_tx().
int16_t dds_offset | ( | uint32_t | phase_acc, | |
int32_t | phase_offset | |||
) |
Find the amplitude for a particular phase offset from an accumulated phase.
phase_acc | The accumulated phase. | |
phase_offset | The phase offset. |
References dds_lookup().
int32_t dds_phase_rate | ( | float | frequency | ) |
Find the phase rate value to achieve a particular frequency.
frequency | The desired frequency, in Hz. |
Referenced by fsk_rx_init(), fsk_tx_init(), make_tone_gen_descriptor(), modem_connect_tones_tx_init(), and sig_tone_tx_init().
int dds_scaling_dbm0 | ( | float | level | ) |
Find the scaling factor needed to achieve a specified level in dBm0.
level | The desired signal level, in dBm0. |
Referenced by fsk_tx_init(), fsk_tx_power(), make_tone_gen_descriptor(), modem_connect_tones_tx_init(), and sig_tone_tx_init().
int dds_scaling_dbov | ( | float | level | ) |
Find the scaling factor needed to achieve a specified level in dBmov.
level | The desired signal level, in dBmov. |