-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodem.h
149 lines (121 loc) · 4.52 KB
/
modem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/*****************************************************************************/
/*
* modem.h -- Defines for the modem.
*
* Copyright (C) 1999-2015 Thomas Sailer (sailer@ife.ee.ethz.ch)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* Please note that the GPL allows you to use the driver, NOT the radio.
* In order to use the radio, you need a license from the communications
* authority of your country.
*
*/
/*****************************************************************************/
#ifndef _MODEM_H
#define _MODEM_H
/* ---------------------------------------------------------------------- */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <sys/types.h>
#include <stdarg.h>
#define int8_t char
#define u_int8_t unsigned char
#define int16_t short
#define u_int16_t unsigned short
#define int32_t int
#define u_int32_t unsigned int
#define only_inline
#define only_inline
#define alloca _alloca
struct modemchannel;
extern void audiowrite(struct modemchannel *chan, const int16_t *samples, unsigned int nr);
extern void audioread(struct modemchannel *chan, int16_t *samples, unsigned int nr, u_int16_t tim);
extern u_int16_t audiocurtime(struct modemchannel *chan);
extern int pktget(struct modemchannel *chan, unsigned char *data, unsigned int len);
extern void pktput(struct modemchannel *chan, const unsigned char *data, unsigned int len);
extern void pktsetdcd(struct modemchannel *chan, int dcd);
extern void p3dreceive(struct modemchannel *chan, const unsigned char *pkt, u_int16_t crc);
extern void p3drxstate(struct modemchannel *chan, unsigned int synced, unsigned int carrierfreq);
#define MLOG_FATAL 0
#define MLOG_ERROR 1
#define MLOG_WARNING 2
#define MLOG_NOTICE 3
#define MLOG_INFO 4
#define MLOG_DEBUG 5
extern void logvprintf(unsigned int level, const char *fmt, va_list args);
extern void logprintf(unsigned int level, const char *fmt, ...);
extern void logerr(unsigned int level, const char *st);
extern unsigned int log_verblevel;
void WriteDebugLog(int LogLevel, const char * format, ...);
void SampleSink(short Sample);
#define MODEMPAR_STRING 0
#define MODEMPAR_COMBO 1
#define MODEMPAR_NUMERIC 2
#define MODEMPAR_CHECKBUTTON 3
struct modemparams {
const char *name;
const char *label;
const char *tooltip;
const char *dflt;
unsigned int type;
union {
struct {
float min;
float max;
float step;
float pagestep;
} n;
struct {
const char *combostr[8];
} c;
} u;
};
struct modulator {
struct modulator *next;
const char *name;
const struct modemparams *params;
void *(*config)(struct modemchannel *chan, unsigned int *samplerate, int P1, int P2, int P3);
void (*init)(void *, unsigned int samplerate);
void (*modulate)(void *, unsigned int txdelay);
void (*free)(void *);
};
struct demodulator {
struct demodulator *next;
const char *name;
const struct modemparams *params;
void *(*config)(struct modemchannel *chan, unsigned int *samplerate, int P1, int P2, int P3);
void (*init)(void *, unsigned int samplerate, unsigned int *bitrate);
void (*demodulate)(void *);
void (*free)(void *);
};
/* ---------------------------------------------------------------------- */
extern struct modulator afskmodulator;
extern struct demodulator afskdemodulator;
extern struct modulator fskmodulator;
extern struct demodulator fskdemodulator;
extern struct demodulator fskpspdemodulator;
extern struct demodulator fskeqdemodulator;
extern struct modulator pammodulator;
extern struct demodulator pamdemodulator;
extern struct modulator pskmodulator;
extern struct demodulator pskdemodulator;
extern struct modulator newqpskmodulator;
extern struct demodulator newqpskdemodulator;
extern struct modulator p3dmodulator;
extern struct demodulator p3ddemodulator;
/* ---------------------------------------------------------------------- */
#endif /* _MODEM_H */