summaryrefslogtreecommitdiffstats
path: root/src/host/layer23/include/osmocom/bb/common/osmocom_data.h
blob: 4d5fdf8d000266d45616fa284b3909fa0169a14c (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
84
85
86
87
88
89
90
91
92
93
#ifndef osmocom_data_h
#define osmocom_data_h

#include <osmocore/select.h>
#include <osmocore/gsm_utils.h>
#include <osmocore/write_queue.h>

struct osmocom_ms;

	/* FIXME no 'mobile' specific stuff should be here */
#include <osmocom/bb/mobile/support.h>
#include <osmocom/bb/mobile/settings.h>
#include <osmocom/bb/mobile/subscriber.h>
#include <osmocom/bb/common/lapdm.h>
#include <osmocom/bb/common/sap_interface.h>
#include <osmocom/bb/mobile/gsm48_rr.h>
#include <osmocom/bb/mobile/sysinfo.h>
#include <osmocom/bb/mobile/gsm322.h>
#include <osmocom/bb/mobile/gsm48_mm.h>
#include <osmocom/bb/mobile/gsm48_cc.h>

/* A layer2 entity */
struct osmol2_entity {
	struct lapdm_entity lapdm_dcch;
	struct lapdm_entity lapdm_acch;
	osmol2_cb_t msg_handler;
};

struct osmosap_entity {
	osmosap_cb_t msg_handler;
};

/* RX measurement statistics */
struct rx_meas_stat {
	uint32_t last_fn;
	uint32_t frames;
	uint32_t snr;
	uint32_t berr;
	uint32_t rxlev;
};

/* One Mobilestation for osmocom */
struct osmocom_ms {
	struct llist_head entity;
	char name[32];
	struct write_queue l2_wq, sap_wq;
	uint16_t test_arfcn;

	struct gsm_support support;

	struct gsm_settings settings;

	struct gsm_subscriber subscr;

	struct osmol2_entity l2_entity;

	struct osmosap_entity sap_entity;

	struct rx_meas_stat meas;

	struct gsm48_rrlayer rrlayer;
	struct gsm322_plmn plmn;
	struct gsm322_cellsel cellsel;
	struct gsm48_mmlayer mmlayer;
	struct gsm48_cclayer cclayer;
	struct llist_head trans_list;
};

enum osmobb_sig_subsys {
	SS_L1CTL,
};

enum osmobb_meas_sig {
	S_L1CTL_FBSB_ERR,
	S_L1CTL_FBSB_RESP,
	S_L1CTL_RESET,
	S_L1CTL_PM_RES,
	S_L1CTL_PM_DONE,
	S_L1CTL_CCCH_MODE_CONF,
};

struct osmobb_meas_res {
	struct osmocom_ms *ms;
	uint16_t band_arfcn;
	uint8_t rx_lev;
};

struct osmobb_ccch_mode_conf {
	struct osmocom_ms *ms;
	uint8_t ccch_mode;
};

#endif