diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-07-29 02:27:27 +0800 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2010-07-29 02:41:38 +0800 |
commit | 12b917d8390c4f8004beda1a465f93509323a058 (patch) | |
tree | 263deebd29f217324a548c0903201e2f54ade285 /openbsc/src/bsc | |
parent | d0c32295903bf29206c8cb25ed3d9847b71a413b (diff) |
osmo_bsc_rf: Add a grace command, send a signal
Diffstat (limited to 'openbsc/src/bsc')
-rw-r--r-- | openbsc/src/bsc/osmo_bsc_rf.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/openbsc/src/bsc/osmo_bsc_rf.c b/openbsc/src/bsc/osmo_bsc_rf.c index 8cfbb7c43..e45474ccb 100644 --- a/openbsc/src/bsc/osmo_bsc_rf.c +++ b/openbsc/src/bsc/osmo_bsc_rf.c @@ -24,6 +24,7 @@ #include <openbsc/osmo_bsc_rf.h> #include <openbsc/debug.h> #include <openbsc/gsm_data.h> +#include <openbsc/signal.h> #include <osmocore/talloc.h> #include <osmocore/protocol/gsm_12_21.h> @@ -37,6 +38,7 @@ #define RF_CMD_QUERY '?' #define RF_CMD_OFF '0' #define RF_CMD_ON '1' +#define RF_CMD_GRACE 'g' static int lock_each_trx(struct gsm_network *net, int lock) { @@ -90,6 +92,14 @@ static void handle_query(struct osmo_bsc_rf_conn *conn) return; } +static void send_signal(struct osmo_bsc_rf_conn *conn, int val) +{ + struct rf_signal_data sig; + sig.net = conn->gsm_network; + + dispatch_signal(SS_RF, val, &sig); +} + static int rf_read_cmd(struct bsc_fd *fd) { struct osmo_bsc_rf_conn *conn = fd->data; @@ -112,9 +122,14 @@ static int rf_read_cmd(struct bsc_fd *fd) break; case RF_CMD_OFF: lock_each_trx(conn->gsm_network, 1); + send_signal(conn, S_RF_OFF); break; case RF_CMD_ON: lock_each_trx(conn->gsm_network, 0); + send_signal(conn, S_RF_ON); + break; + case RF_CMD_GRACE: + send_signal(conn, S_RF_GRACE); break; default: LOGP(DINP, LOGL_ERROR, "Unknown command %d\n", buf[0]); |