67 lines
1.7 KiB
C
67 lines
1.7 KiB
C
#ifndef OSMO_BSC_RF
|
|
#define OSMO_BSC_RF
|
|
|
|
#include <openbsc/gsm_data.h>
|
|
#include <osmocom/core/write_queue.h>
|
|
#include <osmocom/core/timer.h>
|
|
|
|
enum osmo_bsc_rf_opstate {
|
|
OSMO_BSC_RF_OPSTATE_INOPERATIONAL,
|
|
OSMO_BSC_RF_OPSTATE_OPERATIONAL,
|
|
};
|
|
|
|
enum osmo_bsc_rf_adminstate {
|
|
OSMO_BSC_RF_ADMINSTATE_UNLOCKED,
|
|
OSMO_BSC_RF_ADMINSTATE_LOCKED,
|
|
};
|
|
|
|
enum osmo_bsc_rf_policy {
|
|
OSMO_BSC_RF_POLICY_OFF,
|
|
OSMO_BSC_RF_POLICY_ON,
|
|
OSMO_BSC_RF_POLICY_GRACE,
|
|
OSMO_BSC_RF_POLICY_UNKNOWN,
|
|
};
|
|
|
|
|
|
struct gsm_network;
|
|
|
|
struct osmo_bsc_rf {
|
|
/* the value of signal.h */
|
|
int policy;
|
|
struct osmo_fd listen;
|
|
struct gsm_network *gsm_network;
|
|
|
|
const char *last_state_command;
|
|
|
|
char *last_rf_lock_ctrl_command;
|
|
|
|
/* delay the command */
|
|
char last_request;
|
|
struct osmo_timer_list delay_cmd;
|
|
|
|
/* verify that RF is up as it should be */
|
|
struct osmo_timer_list rf_check;
|
|
|
|
/* some handling for the automatic grace switch */
|
|
struct osmo_timer_list grace_timeout;
|
|
|
|
/* auto RF switch-off due lack of MSC connection */
|
|
struct osmo_timer_list auto_off_timer;
|
|
};
|
|
|
|
struct osmo_bsc_rf_conn {
|
|
struct osmo_wqueue queue;
|
|
struct osmo_bsc_rf *rf;
|
|
};
|
|
|
|
const char *osmo_bsc_rf_get_opstate_name(enum osmo_bsc_rf_opstate opstate);
|
|
const char *osmo_bsc_rf_get_adminstate_name(enum osmo_bsc_rf_adminstate adminstate);
|
|
const char *osmo_bsc_rf_get_policy_name(enum osmo_bsc_rf_policy policy);
|
|
enum osmo_bsc_rf_opstate osmo_bsc_rf_get_opstate_by_bts(struct gsm_bts *bts);
|
|
enum osmo_bsc_rf_adminstate osmo_bsc_rf_get_adminstate_by_bts(struct gsm_bts *bts);
|
|
enum osmo_bsc_rf_policy osmo_bsc_rf_get_policy_by_bts(struct gsm_bts *bts);
|
|
struct osmo_bsc_rf *osmo_bsc_rf_create(const char *path, struct gsm_network *net);
|
|
void osmo_bsc_rf_schedule_lock(struct osmo_bsc_rf *rf, char cmd);
|
|
|
|
#endif
|