aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-03-28 16:53:25 +0000
committerHarald Welte <laforge@gnumonks.org>2009-03-28 16:53:25 +0000
commit273feca77fc088797e0e5f8642dfa26d2389830e (patch)
tree8c2b11088b476eb450f58e178297d95eab1bae71
parent1047940dce675a50b4ee92c9aded77f70c52d984 (diff)
Fix 'delete-trx1' command of bs11_config (we can now delete TRX1)
-rw-r--r--include/openbsc/rs232.h3
-rw-r--r--src/bs11_config.c15
-rw-r--r--src/rs232.c6
3 files changed, 19 insertions, 5 deletions
diff --git a/include/openbsc/rs232.h b/include/openbsc/rs232.h
index deb0c6b29..61187ca62 100644
--- a/include/openbsc/rs232.h
+++ b/include/openbsc/rs232.h
@@ -1,7 +1,8 @@
#ifndef _RS232_H
#define _RS232_H
-int rs232_setup(const char *serial_port, unsigned int delay_ms);
+int rs232_setup(const char *serial_port, unsigned int delay_ms,
+ struct gsm_bts *bts);
int handle_serial_msg(struct msgb *msg);
diff --git a/src/bs11_config.c b/src/bs11_config.c
index 42de5db27..b603e8bf1 100644
--- a/src/bs11_config.c
+++ b/src/bs11_config.c
@@ -440,14 +440,23 @@ static int handle_state_resp(enum abis_bs11_phase state)
fprintf(stderr, "No valid Software file \"%s\"\n",
fname_software);
} else if (!strcmp(command, "delete-trx1")) {
+ printf("Locing BBSIG and PA objects of TRX1\n");
+ abis_nm_chg_adm_state(g_bts, NM_OC_BS11,
+ BS11_OBJ_BBSIG, 0, 1,
+ NM_STATE_LOCKED);
+ abis_nm_chg_adm_state(g_bts, NM_OC_BS11,
+ BS11_OBJ_PA, 0, 1,
+ NM_STATE_LOCKED);
+ sleep(1);
+ printf("Deleting BBSIG and PA objects of TRX1\n");
abis_nm_bs11_delete_object(g_bts, BS11_OBJ_BBSIG, 1);
abis_nm_bs11_delete_object(g_bts, BS11_OBJ_PA, 1);
- sleep(5);
+ sleep(1);
abis_nm_bs11_factory_logon(g_bts, 0);
command = NULL;
} else if (!strcmp(command, "create-trx1")) {
create_trx1(g_bts);
- sleep(5);
+ sleep(1);
abis_nm_bs11_factory_logon(g_bts, 0);
command = NULL;
} else if (!strcmp(command, "oml-tei")) {
@@ -701,7 +710,7 @@ int main(int argc, char **argv)
}
g_bts = &gsmnet->bts[0];
- rc = rs232_setup(serial_port, delay_ms);
+ rc = rs232_setup(serial_port, delay_ms, g_bts);
if (rc < 0) {
fprintf(stderr, "Problem setting up serial port\n");
exit(1);
diff --git a/src/rs232.c b/src/rs232.c
index 24577ea87..24a3b055e 100644
--- a/src/rs232.c
+++ b/src/rs232.c
@@ -44,6 +44,7 @@ struct serial_handle {
unsigned int rxmsg_bytes_missing;
unsigned int delay_ms;
+ struct gsm_bts *bts;
};
/* FIXME: this needs to go */
@@ -128,6 +129,7 @@ static int handle_ser_read(struct bsc_fd *bfd)
if (!sh->rx_msg) {
sh->rx_msg = msgb_alloc(SERIAL_ALLOC_SIZE);
sh->rx_msg->l2h = NULL;
+ sh->rx_msg->trx = sh->bts->c0;
}
msg = sh->rx_msg;
@@ -197,7 +199,8 @@ static int serial_fd_cb(struct bsc_fd *bfd, unsigned int what)
return rc;
}
-int rs232_setup(const char *serial_port, unsigned int delay_ms)
+int rs232_setup(const char *serial_port, unsigned int delay_ms,
+ struct gsm_bts *bts)
{
int rc, serial_fd;
struct termios tio;
@@ -234,6 +237,7 @@ int rs232_setup(const char *serial_port, unsigned int delay_ms)
ser_handle->fd.cb = serial_fd_cb;
ser_handle->fd.data = ser_handle;
ser_handle->delay_ms = delay_ms;
+ ser_handle->bts = bts;
rc = bsc_register_fd(&ser_handle->fd);
if (rc < 0) {
fprintf(stderr, "could not register FD: %s\n",