Holger Hans Peter Freyther | 2f4dbeb | 2010-06-30 14:29:53 +0800 | [diff] [blame] | 1 | #ifndef OSMO_BSC_RF |
| 2 | #define OSMO_BSC_RF |
| 3 | |
Daniel Willmann | 65924a5 | 2011-08-19 19:38:31 +0200 | [diff] [blame] | 4 | #include <openbsc/gsm_data.h> |
Pablo Neira Ayuso | 136f453 | 2011-03-22 16:47:59 +0100 | [diff] [blame] | 5 | #include <osmocom/core/write_queue.h> |
| 6 | #include <osmocom/core/timer.h> |
Holger Hans Peter Freyther | 2f4dbeb | 2010-06-30 14:29:53 +0800 | [diff] [blame] | 7 | |
Daniel Willmann | 65924a5 | 2011-08-19 19:38:31 +0200 | [diff] [blame] | 8 | enum osmo_bsc_rf_opstate { |
| 9 | OSMO_BSC_RF_OPSTATE_INOPERATIONAL, |
| 10 | OSMO_BSC_RF_OPSTATE_OPERATIONAL, |
| 11 | }; |
| 12 | |
| 13 | enum osmo_bsc_rf_adminstate { |
| 14 | OSMO_BSC_RF_ADMINSTATE_UNLOCKED, |
| 15 | OSMO_BSC_RF_ADMINSTATE_LOCKED, |
| 16 | }; |
| 17 | |
| 18 | enum osmo_bsc_rf_policy { |
| 19 | OSMO_BSC_RF_POLICY_OFF, |
| 20 | OSMO_BSC_RF_POLICY_ON, |
| 21 | OSMO_BSC_RF_POLICY_GRACE, |
| 22 | OSMO_BSC_RF_POLICY_UNKNOWN, |
| 23 | }; |
| 24 | |
| 25 | |
Holger Hans Peter Freyther | 2f4dbeb | 2010-06-30 14:29:53 +0800 | [diff] [blame] | 26 | struct gsm_network; |
| 27 | |
| 28 | struct osmo_bsc_rf { |
Holger Hans Peter Freyther | 7a1591b | 2010-09-16 00:10:18 +0800 | [diff] [blame] | 29 | /* the value of signal.h */ |
| 30 | int policy; |
Pablo Neira Ayuso | 4db9299 | 2011-05-06 12:11:23 +0200 | [diff] [blame] | 31 | struct osmo_fd listen; |
Holger Hans Peter Freyther | 2f4dbeb | 2010-06-30 14:29:53 +0800 | [diff] [blame] | 32 | struct gsm_network *gsm_network; |
Holger Hans Peter Freyther | 70c232f | 2010-11-22 19:09:38 +0100 | [diff] [blame] | 33 | |
Holger Hans Peter Freyther | 37ac420 | 2011-02-24 14:19:14 +0100 | [diff] [blame] | 34 | const char *last_state_command; |
| 35 | |
Jacob Erlbeck | 779a728 | 2013-09-11 10:46:57 +0200 | [diff] [blame] | 36 | char *last_rf_lock_ctrl_command; |
| 37 | |
Holger Hans Peter Freyther | 1176245 | 2011-02-14 23:41:42 +0100 | [diff] [blame] | 38 | /* delay the command */ |
| 39 | char last_request; |
Pablo Neira Ayuso | bf540cb | 2011-05-06 12:11:06 +0200 | [diff] [blame] | 40 | struct osmo_timer_list delay_cmd; |
Holger Hans Peter Freyther | 1176245 | 2011-02-14 23:41:42 +0100 | [diff] [blame] | 41 | |
Holger Hans Peter Freyther | 00c805f | 2011-02-24 14:40:11 +0100 | [diff] [blame] | 42 | /* verify that RF is up as it should be */ |
Pablo Neira Ayuso | bf540cb | 2011-05-06 12:11:06 +0200 | [diff] [blame] | 43 | struct osmo_timer_list rf_check; |
Holger Hans Peter Freyther | 00c805f | 2011-02-24 14:40:11 +0100 | [diff] [blame] | 44 | |
Holger Hans Peter Freyther | 70c232f | 2010-11-22 19:09:38 +0100 | [diff] [blame] | 45 | /* some handling for the automatic grace switch */ |
Pablo Neira Ayuso | bf540cb | 2011-05-06 12:11:06 +0200 | [diff] [blame] | 46 | struct osmo_timer_list grace_timeout; |
Holger Hans Peter Freyther | 2a89607 | 2011-08-16 19:47:39 +0200 | [diff] [blame] | 47 | |
| 48 | /* auto RF switch-off due lack of MSC connection */ |
| 49 | struct osmo_timer_list auto_off_timer; |
Holger Hans Peter Freyther | 2f4dbeb | 2010-06-30 14:29:53 +0800 | [diff] [blame] | 50 | }; |
| 51 | |
| 52 | struct osmo_bsc_rf_conn { |
Pablo Neira Ayuso | e1273b1 | 2011-05-06 12:09:47 +0200 | [diff] [blame] | 53 | struct osmo_wqueue queue; |
Holger Hans Peter Freyther | 7a1591b | 2010-09-16 00:10:18 +0800 | [diff] [blame] | 54 | struct osmo_bsc_rf *rf; |
Holger Hans Peter Freyther | 2f4dbeb | 2010-06-30 14:29:53 +0800 | [diff] [blame] | 55 | }; |
| 56 | |
Daniel Willmann | 65924a5 | 2011-08-19 19:38:31 +0200 | [diff] [blame] | 57 | const char *osmo_bsc_rf_get_opstate_name(enum osmo_bsc_rf_opstate opstate); |
| 58 | const char *osmo_bsc_rf_get_adminstate_name(enum osmo_bsc_rf_adminstate adminstate); |
| 59 | const char *osmo_bsc_rf_get_policy_name(enum osmo_bsc_rf_policy policy); |
| 60 | enum osmo_bsc_rf_opstate osmo_bsc_rf_get_opstate_by_bts(struct gsm_bts *bts); |
| 61 | enum osmo_bsc_rf_adminstate osmo_bsc_rf_get_adminstate_by_bts(struct gsm_bts *bts); |
| 62 | enum osmo_bsc_rf_policy osmo_bsc_rf_get_policy_by_bts(struct gsm_bts *bts); |
Holger Hans Peter Freyther | 2f4dbeb | 2010-06-30 14:29:53 +0800 | [diff] [blame] | 63 | struct osmo_bsc_rf *osmo_bsc_rf_create(const char *path, struct gsm_network *net); |
Holger Hans Peter Freyther | 7b6ea56 | 2011-08-16 14:29:53 +0200 | [diff] [blame] | 64 | void osmo_bsc_rf_schedule_lock(struct osmo_bsc_rf *rf, char cmd); |
Holger Hans Peter Freyther | 2f4dbeb | 2010-06-30 14:29:53 +0800 | [diff] [blame] | 65 | |
| 66 | #endif |