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
|
#ifndef HYBBX_BAYCOM_H
#define HYBBX_BAYCOM_H
/**
* BayCom PR-Stack link adapter — Linux kernel HDLC modem (SER12 / PAR96 / EPP)
* or serial KISS firmware path.
*
* Native PR-Stack L2 uses Thomas Sailer kernel drivers (baycom_ser_fdx,
* baycom_ser_hdx, baycom_par, baycom_epp) and hdlcdrv channel access.
* See docs/BAYCOM.md.
*/
#include "hybbx/types.h"
#ifdef __cplusplus
extern "C" {
#endif
/** Default Linux baycom_ser_fdx netdev (SER12 fullduplex). */
#define HYBBX_BAYCOM_DEFAULT_INTERFACE "bcsf0"
/** Default SER12 UART I/O base (COM1). */
#define HYBBX_BAYCOM_DEFAULT_IOBASE 0x3f8u
/** Default SER12 IRQ (COM1). */
#define HYBBX_BAYCOM_DEFAULT_IRQ 4u
/** Default SER12 on-air baud (1200 AFSK). */
#define HYBBX_BAYCOM_DEFAULT_RADIO_BAUD 1200u
typedef enum hybbx_baycom_backend {
HYBBX_BAYCOM_BACKEND_KERNEL = 1,
HYBBX_BAYCOM_BACKEND_KISS = 2,
} hybbx_baycom_backend_t;
typedef enum hybbx_baycom_modem_mode {
HYBBX_BAYCOM_MODE_SER12 = 1,
HYBBX_BAYCOM_MODE_SER12_SOFTDCD,
HYBBX_BAYCOM_MODE_SER12_INV,
HYBBX_BAYCOM_MODE_SER12HDX,
HYBBX_BAYCOM_MODE_PAR96,
HYBBX_BAYCOM_MODE_PAR96_SOFTDCD,
HYBBX_BAYCOM_MODE_EPP,
} hybbx_baycom_modem_mode_t;
typedef struct hybbx_baycom_config {
hybbx_baycom_backend_t backend;
hybbx_baycom_modem_mode_t mode;
char *interface;
char *kernel_module;
unsigned iobase;
unsigned irq;
unsigned radio_baud;
int kernel_autoload;
unsigned txdelay;
unsigned txtail;
unsigned slot;
unsigned persist;
int full_duplex;
char *device;
unsigned serial_baud;
char *mycall;
char *circuit_host;
unsigned circuit_port;
char *link_id;
char *link_password;
char *link_role;
char *frequency_mhz;
} hybbx_baycom_config_t;
hybbx_result_t hybbx_baycom_config_parse(const char *config,
hybbx_baycom_config_t *out);
void hybbx_baycom_config_free(hybbx_baycom_config_t *config);
const char *hybbx_baycom_modem_mode_name(hybbx_baycom_modem_mode_t mode);
const char *hybbx_baycom_backend_name(hybbx_baycom_backend_t backend);
#ifdef __cplusplus
}
#endif
#endif /* HYBBX_BAYCOM_H */
|