libsstvenc
Asynchronous Analogue SSTV encoder
Loading...
Searching...
No Matches
pulseshape.h
Go to the documentation of this file.
1#ifndef _SSTVENC_PULSESHAPE_H
2#define _SSTVENC_PULSESHAPE_H
3
12/*
13 * © Stuart Longland VK4MSL
14 * SPDX-License-Identifier: MIT
15 */
16
18#include <math.h>
19#include <stddef.h>
20#include <stdint.h>
21
22/* Forward declaration */
24
35#define SSTVENC_PS_PHASE_INIT (0)
36
44#define SSTVENC_PS_PHASE_RISE (1)
45
58#define SSTVENC_PS_PHASE_HOLD (2)
59
67#define SSTVENC_PS_PHASE_FALL (3)
68
75#define SSTVENC_PS_PHASE_DONE (4)
83#define SSTVENC_PS_HOLD_TIME_INF SSTVENC_TS_INFINITE
84
91 double amplitude;
93 double output;
95 uint32_t sample_rate;
97 uint32_t sample_idx;
99 uint32_t hold_sz;
101 uint16_t rise_sz;
103 uint16_t fall_sz;
105 uint8_t phase;
106};
107
116void sstvenc_ps_reset_samples(struct sstvenc_pulseshape* const ps,
117 uint32_t hold_time);
118
130void sstvenc_ps_reset(struct sstvenc_pulseshape* const ps, double hold_time,
131 uint8_t time_unit);
132
148void sstvenc_ps_init(struct sstvenc_pulseshape* const ps, double amplitude,
149 double rise_time, double hold_time, double fall_time,
150 uint32_t sample_rate, uint8_t time_unit);
151
158void sstvenc_ps_advance(struct sstvenc_pulseshape* const ps);
159
168void sstvenc_ps_compute(struct sstvenc_pulseshape* const ps);
169
184size_t sstvenc_psosc_fill_buffer(struct sstvenc_pulseshape* const ps,
185 struct sstvenc_oscillator* const osc,
186 double* buffer, size_t buffer_sz);
187
190#endif
uint32_t sample_idx
Definition pulseshape.h:97
uint32_t sample_rate
Definition pulseshape.h:95
size_t sstvenc_psosc_fill_buffer(struct sstvenc_pulseshape *const ps, struct sstvenc_oscillator *const osc, double *buffer, size_t buffer_sz)
Definition pulseshape.c:119
void sstvenc_ps_advance(struct sstvenc_pulseshape *const ps)
Definition pulseshape.c:56
void sstvenc_ps_compute(struct sstvenc_pulseshape *const ps)
Definition pulseshape.c:63
void sstvenc_ps_init(struct sstvenc_pulseshape *const ps, double amplitude, double rise_time, double hold_time, double fall_time, uint32_t sample_rate, uint8_t time_unit)
Definition pulseshape.c:28
void sstvenc_ps_reset(struct sstvenc_pulseshape *const ps, double hold_time, uint8_t time_unit)
Definition pulseshape.c:21
void sstvenc_ps_reset_samples(struct sstvenc_pulseshape *const ps, uint32_t hold_time)
Definition pulseshape.c:14