libosmo-e1d  0.5.0
Osmocom e1d client library
proto.h
Go to the documentation of this file.
1 
6 /* (C) 2019 by Sylvain Munaut <tnt@246tNt.com>
7  * (C) 2020 by Harald Welte <laforge@gnumonks.org>
8  *
9  * All Rights Reserved
10  *
11  * SPDX-License-Identifier: LGPL-3.0-or-later
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU Lesser General Public License as published
15  * by the Free Software Foundation; either version 3 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU Lesser General Public License
24  * along with this program; if not, see <http://www.gnu.org/licenses/>.
25  */
26 
27 #pragma once
28 
29 #include <stdint.h>
30 
31 #include <osmocom/core/select.h>
32 #include <osmocom/core/utils.h>
33 
34 
40 
44 
48 
52 
58 
60  E1DP_EVT_TYPE = 0x40,
64  E1DP_ERR_TYPE = 0xc0,
66  E1DP_TYPE_MSK = 0xc0,
67 };
68 
79 };
80 
89 };
90 
92 #define E1DP_TS_OPEN_F_FORCE 0x80
93 
96 #define E1DP_MAGIC 0x01e1
98 #define E1DP_MAX_LEN 4096
100 #define E1DP_TS_SUPERCHAN 0xfe
103 #define E1DP_INVALID 0xff
105 #define E1DP_DEFAULT_SOCKET "/tmp/osmo-e1d.ctl"
106 
108 #define E1DP_MAX_SIZE_HDLC 264
109 
112  uint16_t magic; /*< magic value (E1DP_MAGIC) */
113  uint16_t len; /*< length of message (octets) */
114 
115  uint8_t type; /*< message type (enum osmo_e1dp_msg_type) */
116  uint8_t intf; /*< E1 interface number (or E1DP_INVALID) */
117  uint8_t line; /*< E1 line number (or E1DP_INVALID) */
118  uint8_t ts; /*< timeslot number (or E1DP_INVALID) */
119 } __attribute__((packed));
120 
123  uint8_t id; /*< Numeric identifier of E1 interface */
124  uint8_t n_lines; /*< number of E1 lines within this interface */
125 } __attribute__((packed));
126 
129  uint8_t mode; /*< E1 line mode (enum osmo_e1dp_line_mode) */
130 } __attribute__((packed));
131 
134  uint8_t id; /*< E1 line number */
135  struct osmo_e1dp_line_config cfg;
136  uint8_t status;
137 } __attribute__((packed));
138 
141  uint8_t mode; /*< timeslot mode (enum osmo_e1dp_ts_mode) */
142  uint8_t flags; /*< flags (currently only E1DP_TS_OPEN_F_FORCE) */
143  uint16_t read_bufsize; /*< size of read buffer (in octets) */
144 } __attribute__((packed));
145 
148  uint8_t id; /*< E1 timeslot number */
149  struct osmo_e1dp_ts_config cfg; /*< E1 timeslot configuration */
150  uint8_t status; /*< TBD */
151 } __attribute__((packed));
152 
153 
154 struct msgb *osmo_e1dp_recv(struct osmo_fd *ofd, int *fd);
155 int osmo_e1dp_send(struct osmo_fd *ofd, struct msgb *msgb, int fd);
156 
157 extern const struct value_string osmo_e1dp_msg_type_names[];
158 extern const struct value_string osmo_e1dp_line_mode_names[];
159 extern const struct value_string osmo_e1dp_ts_mode_names[];
const struct value_string osmo_e1dp_line_mode_names[]
const struct value_string osmo_e1dp_ts_mode_names[]
osmo_e1dp_line_mode
e1d CTL protocol line mode.
Definition: proto.h:70
@ E1DP_LMODE_E1OIP
Line is used in E1oIP mode (not available to CTL clients)
Definition: proto.h:78
@ E1DP_LMODE_SUPERCHANNEL
Line is used as superchannel (31TS combined together)
Definition: proto.h:76
@ E1DP_LMODE_OFF
Line is switched off.
Definition: proto.h:72
@ E1DP_LMODE_CHANNELIZED
Line is used in channelized mode with (64kBps) timeslots.
Definition: proto.h:74
osmo_e1dp_msg_type
e1d CTL protocol message type definition.
Definition: proto.h:36
@ E1DP_CMD_TS_OPEN
Open a given E1 timeslot.
Definition: proto.h:57
@ E1DP_CMD_LINE_CONFIG
Configure a given E1 line.
Definition: proto.h:51
@ E1DP_CMD_TS_QUERY
Query information about E1 timeslot(s).
Definition: proto.h:47
@ E1DP_EVT_TYPE
Message is an event.
Definition: proto.h:60
@ E1DP_ERR_TYPE
Message is an error.
Definition: proto.h:64
@ E1DP_CMD_INTF_QUERY
Query information about E1 interface(s).
Definition: proto.h:39
@ E1DP_RESP_TYPE
Message is a response
Definition: proto.h:62
@ E1DP_TYPE_MSK
Mask to separate type from command.
Definition: proto.h:66
@ E1DP_CMD_LINE_QUERY
Query information about E1 line(s).
Definition: proto.h:43
const struct value_string osmo_e1dp_msg_type_names[]
osmo_e1dp_ts_mode
e1d CTL protocol timeslot mode.
Definition: proto.h:82
@ E1DP_TSMODE_HDLCFCS
Timeslot is in HLDC-FCS mode; e1d will run software HDLC processor.
Definition: proto.h:88
@ E1DP_TSMODE_RAW
Timeslot is in RAW mode, containing transparent 64kBps bitstream.
Definition: proto.h:86
@ E1DP_TSMODE_OFF
Timeslot is switched off.
Definition: proto.h:84
int osmo_e1dp_send(struct osmo_fd *ofd, struct msgb *msgb, int fd)
struct osmo_e1dp_msg_hdr __attribute__((packed))
struct msgb * osmo_e1dp_recv(struct osmo_fd *ofd, int *fd)
Information about an E1 interface.
Definition: proto.h:122
uint8_t id
Definition: proto.h:123
uint8_t n_lines
Definition: proto.h:124
Configuration of an E1 line.
Definition: proto.h:128
uint8_t mode
Definition: proto.h:129
Information about an E1 line.
Definition: proto.h:133
uint8_t status
E1 line configuration.
Definition: proto.h:136
uint8_t id
Definition: proto.h:134
struct osmo_e1dp_line_config cfg
Definition: proto.h:135
message header of osmo-e1d CTL protocol.
Definition: proto.h:111
uint8_t intf
Definition: proto.h:116
uint16_t magic
Definition: proto.h:112
uint8_t ts
Definition: proto.h:118
uint8_t line
Definition: proto.h:117
uint16_t len
Definition: proto.h:113
uint8_t type
Definition: proto.h:115
Configuration of an E1 timeslot.
Definition: proto.h:140
uint8_t flags
Definition: proto.h:142
uint16_t read_bufsize
Definition: proto.h:143
uint8_t mode
Definition: proto.h:141
Information about an E1 timeslot.
Definition: proto.h:147
uint8_t id
Definition: proto.h:148
uint8_t status
Definition: proto.h:150
struct osmo_e1dp_ts_config cfg
Definition: proto.h:149