summaryrefslogtreecommitdiff
path: root/include/hybbx/baycom.h
diff options
context:
space:
mode:
authorinfo@mode42.com <info@mode42.com>2026-08-08 03:54:55 +0000
committerinfo@mode42.com <info@mode42.com>2026-08-08 03:54:55 +0000
commit20cb29c2f8c5c87bc590896854a20b1473ceb358 (patch)
tree2857f41513a56ad41af97b57362639298aa7f033 /include/hybbx/baycom.h
#2
Diffstat (limited to 'include/hybbx/baycom.h')
-rw-r--r--include/hybbx/baycom.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/include/hybbx/baycom.h b/include/hybbx/baycom.h
new file mode 100644
index 0000000..a351e55
--- /dev/null
+++ b/include/hybbx/baycom.h
@@ -0,0 +1,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 */
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com