aboutsummaryrefslogtreecommitdiffstats
path: root/src/storage.h
blob: d256fdc65ce8f934bdffb4cb7f542b6880f789a1 (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
#pragma once
#include <stdint.h>

enum osmo_e1cap_capture_mode {
	OSMO_E1CAP_MODE_RAW,
	OSMO_E1CAP_MODE_HDLC,
	OSMO_E1CAP_MODE_TRAU,
	OSMO_E1CAP_MODE_PGSL,
};

/* header for each frame we store */
struct osmo_e1cap_pkthdr {
	/* Timestamp at which frame was received */
	struct timeval ts;
	/* length of frame data after this header */
	uint32_t len;
	/* line/span number on which frame was received */
	uint8_t line_nr;
	/* timeslot number on which frame was received */
	uint8_t ts_nr;
	/* see osmo_e1cap_capture_mode */
	uint8_t capture_mode;
	/* any optional future flags */
	uint8_t flags;
	uint8_t align[8];
	uint8_t data[0];
} __attribute__((packed));

struct msgb;
struct e1inp_ts;

int e1frame_store(struct e1inp_ts *ts, struct msgb *msg, enum osmo_e1cap_capture_mode mode);

struct osmo_e1cap_file;
struct osmo_e1cap_file *osmo_e1cap_open(void *ctx, const char *path);
struct osmo_e1cap_pkthdr *osmo_e1cap_read_next(struct osmo_e1cap_file *f);