summaryrefslogtreecommitdiff
path: root/stacks/terminal/max25_proto.h
blob: 25ae5d57aaeb9cdebf7b83089be33e676a4171c6 (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
#ifndef MAX25_PROTO_H
#define MAX25_PROTO_H

#include <stddef.h>

#define MAX25_DEFAULT_PORT 7325
#define MAX25_DEFAULT_UNIX "/run/max25/modem.sock"
#define MAX25_LINE_MAX 512
#define MAX25_CALLSIGN_MAX 16

typedef struct max25_client max25_client_t;

typedef struct max25_status {
    char hardware[32];
    char device[32];
    char mode[32];
    char callerid[MAX25_CALLSIGN_MAX];
    char callid[MAX25_CALLSIGN_MAX];
    int ax25_ui;
    int connected;
    int monitor;
    char stack[32];
    char error[16];
    char voice[16];
} max25_status_t;

typedef enum {
    MAX25_LINE_IGNORE = 0,
    MAX25_LINE_OK,
    MAX25_LINE_ERR,
    MAX25_LINE_STATUS,
    MAX25_LINE_RX,
    MAX25_LINE_EVENT,
    MAX25_LINE_DEVICE,
    MAX25_LINE_OTHER
} max25_line_kind_t;

int max25_client_connect(const char *host, unsigned port, const char *unix_path,
                         int tcp_only, const char *tcp_password,
                         max25_client_t **out, max25_status_t *initial_status);
void max25_client_free(max25_client_t *client);
int max25_client_fd(const max25_client_t *client);

int max25_client_write(max25_client_t *client, const char *cmd);
int max25_client_command(max25_client_t *client, const char *cmd,
                         char *reply, size_t reply_sz);
int max25_client_read_line(max25_client_t *client, char *line, size_t line_sz);
max25_line_kind_t max25_client_classify_line(const char *line);
int max25_client_parse_status(const char *line, max25_status_t *status);
/** Apply EVENT connected / EVENT disconnected to status. Returns 1 if handled. */
int max25_client_apply_event(const char *line, max25_status_t *status);

int max25_valid_callsign(const char *value);

#endif /* MAX25_PROTO_H */
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com