diff options
-rw-r--r-- | openbsc/include/openbsc/osmo_bsc_rf.h | 4 | ||||
-rw-r--r-- | openbsc/src/bsc/osmo_bsc_rf.c | 12 |
2 files changed, 10 insertions, 6 deletions
diff --git a/openbsc/include/openbsc/osmo_bsc_rf.h b/openbsc/include/openbsc/osmo_bsc_rf.h index 163e55cc8..dec9572fc 100644 --- a/openbsc/include/openbsc/osmo_bsc_rf.h +++ b/openbsc/include/openbsc/osmo_bsc_rf.h @@ -6,13 +6,15 @@ struct gsm_network; struct osmo_bsc_rf { + /* the value of signal.h */ + int policy; struct bsc_fd listen; struct gsm_network *gsm_network; }; struct osmo_bsc_rf_conn { struct write_queue queue; - struct gsm_network *gsm_network; + struct osmo_bsc_rf *rf; }; struct osmo_bsc_rf *osmo_bsc_rf_create(const char *path, struct gsm_network *net); diff --git a/openbsc/src/bsc/osmo_bsc_rf.c b/openbsc/src/bsc/osmo_bsc_rf.c index e45474ccb..06c84666c 100644 --- a/openbsc/src/bsc/osmo_bsc_rf.c +++ b/openbsc/src/bsc/osmo_bsc_rf.c @@ -63,7 +63,7 @@ static void handle_query(struct osmo_bsc_rf_conn *conn) struct gsm_bts *bts; char send = RF_CMD_OFF; - llist_for_each_entry(bts, &conn->gsm_network->bts_list, list) { + llist_for_each_entry(bts, &conn->rf->gsm_network->bts_list, list) { struct gsm_bts_trx *trx; llist_for_each_entry(trx, &bts->trx_list, list) { if (trx->nm_state.availability == NM_AVSTATE_OK && @@ -95,8 +95,9 @@ static void handle_query(struct osmo_bsc_rf_conn *conn) static void send_signal(struct osmo_bsc_rf_conn *conn, int val) { struct rf_signal_data sig; - sig.net = conn->gsm_network; + sig.net = conn->rf->gsm_network; + conn->rf->policy = val; dispatch_signal(SS_RF, val, &sig); } @@ -121,11 +122,11 @@ static int rf_read_cmd(struct bsc_fd *fd) handle_query(conn); break; case RF_CMD_OFF: - lock_each_trx(conn->gsm_network, 1); + lock_each_trx(conn->rf->gsm_network, 1); send_signal(conn, S_RF_OFF); break; case RF_CMD_ON: - lock_each_trx(conn->gsm_network, 0); + lock_each_trx(conn->rf->gsm_network, 0); send_signal(conn, S_RF_ON); break; case RF_CMD_GRACE: @@ -180,7 +181,7 @@ static int rf_ctl_accept(struct bsc_fd *bfd, unsigned int what) conn->queue.bfd.when = BSC_FD_READ | BSC_FD_WRITE; conn->queue.read_cb = rf_read_cmd; conn->queue.write_cb = rf_write_cmd; - conn->gsm_network = rf->gsm_network; + conn->rf = rf; if (bsc_register_fd(&conn->queue.bfd) != 0) { close(fd); @@ -258,6 +259,7 @@ struct osmo_bsc_rf *osmo_bsc_rf_create(const char *path, struct gsm_network *net } rf->gsm_network = net; + rf->policy = S_RF_ON; return rf; } |