summaryrefslogtreecommitdiff
path: root/stacks/daemon/max25_platform.py
blob: 0ca1acb6f40535425bc8ec4b7466f64d5a938199 (plain)
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
"""MAX25 host platform — Linux full stack, FreeBSD server + CRDOP/OSS."""
from __future__ import annotations

import os
import sys


def system_name() -> str:
    return sys.platform


def is_linux() -> bool:
    return sys.platform == "linux"


def is_freebsd() -> bool:
    return sys.platform.startswith("freebsd")


def is_bsd() -> bool:
    return sys.platform.startswith(("freebsd", "openbsd", "netbsd", "darwin"))


def max25d_supported() -> bool:
    """Daemon may run (full stack on Linux, server+CRDOP on FreeBSD)."""
    return is_linux() or is_freebsd()


def default_unix_socket() -> str:
    if is_linux():
        return "/run/max25/modem.sock"
    if is_freebsd():
        return "/var/run/max25/modem.sock"
    return "/tmp/max25/modem.sock"


def default_bans_file() -> str:
    if is_linux():
        return "/var/lib/max25/bans.txt"
    return "/var/db/max25/bans.txt"


def supported_device_ids() -> frozenset[str]:
    if is_linux():
        return frozenset(
            {
                "tnc2c",
                "pktnc2",
                "tmodem",
                "baycom-kiss",
                "pccom-kiss",
                # BayCom/based SER12 (max25-bcpr -> device max25e0; in scope, default ON in Lite)
                "max25e0",
                "max25e0:bc0",
                "max25e0:bc1",
                "soft-crdop",
                "audio-dummy",
            }
        )
    if is_freebsd():
        # USB KISS (tmodem/c1224) + CRDOP/OSS + max25-bcpr (SER12 via sysarch I386_SET_IOPERM)
        return frozenset({"tmodem", "soft-crdop", "audio-dummy", "max25e0", "max25e0:bc0", "max25e0:bc1"})
    return frozenset({"soft-crdop"})


def crdop_audio_backend() -> str:
    """Host audio API for CRDOP sound-proxy."""
    env = os.environ.get("MAX25_AUDIO_BACKEND", "").strip().lower()
    if env in ("alsa", "oss"):
        return env
    if is_linux():
        return "alsa"
    if is_freebsd():
        return "oss"
    return "alsa"


def platform_label() -> str:
    if is_linux():
        return "Linux/KLinux"
    if is_freebsd():
        return "FreeBSD"
    return sys.platform
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com