aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2014-05-19 11:22:38 +0200
committerHarald Welte <laforge@gnumonks.org>2014-05-19 11:22:38 +0200
commitb4280963c0a236f3676ff4d5a191943ad63b7e69 (patch)
treefdbdd39d28a6e3002890d4736af8db6cc3829a0b /src
parent76c309e9f751840ce539e9043a8ad80da90b83e5 (diff)
Revert "sysmobts: Add support for changing the transmit power in sbts2050"
This reverts commit c64d42573894d8295b58b268a64541c914b69bcd. There are unfrtunately still too many problems with this patch to be merged at this point.
Diffstat (limited to 'src')
-rw-r--r--src/osmo-bts-sysmo/main.c122
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_mgr.c41
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_mgr.h5
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_misc.c72
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_misc.h2
5 files changed, 11 insertions, 231 deletions
diff --git a/src/osmo-bts-sysmo/main.c b/src/osmo-bts-sysmo/main.c
index 2c13a9c2..bd6a1818 100644
--- a/src/osmo-bts-sysmo/main.c
+++ b/src/osmo-bts-sysmo/main.c
@@ -39,7 +39,6 @@
#include <osmocom/vty/telnet_interface.h>
#include <osmocom/vty/logging.h>
#include <osmocom/gsm/protocol/ipaccess.h>
-#include <osmocom/gsm/abis_nm.h>
#include <osmo-bts/gsm_data.h>
#include <osmo-bts/logging.h>
@@ -295,106 +294,10 @@ static int write_pid_file(char *procname)
return 0;
}
-#define oml_tlv_parse(dec, buf, len) \
- tlv_parse(dec, &abis_nm_att_tlvdef, buf, len, 0, 0)
-
-static int send_oml_fom_ack_nack(int fd_unix, struct msgb *old_msg,
- uint8_t cause, int is_manuf)
-{
- struct abis_om_hdr *old_om = msgb_l2(old_msg);
- struct abis_om_fom_hdr *old_foh = msgb_l3(old_msg);
- struct msgb *msg;
- struct abis_om_fom_hdr *foh;
- struct abis_om_hdr *om;
- int rc;
-
- msg = oml_msgb_alloc();
- if (!msg)
- return -ENOMEM;
-
- msg->l3h = msgb_push(msg, sizeof(*foh));
- foh = (struct abis_om_fom_hdr *) msg->l3h;
- memcpy(foh, old_foh, sizeof(*foh));
-
- if (is_manuf)
- add_manufacturer_id_label(msg, OSMOCOM_MANUF_ID);
-
- msg->l2h = msgb_push(msg, sizeof(*om));
- om = (struct abis_om_hdr *) msg->l2h;
- memcpy(om, old_om, sizeof(*om));
-
- /* alter message type */
- if (cause) {
- LOGP(DOML, LOGL_ERROR, "Sending FOM NACK with cause %s.\n",
- abis_nm_nack_cause_name(cause));
- foh->msg_type += 2; /* nack */
- msgb_tv_put(msg, NM_ATT_NACK_CAUSES, cause);
- } else {
- LOGP(DOML, LOGL_DEBUG, "Sending FOM ACK.\n");
- foh->msg_type++; /* ack */
- }
-
- prepend_oml_ipa_header(msg);
-
- rc = send(fd_unix, msg->data, msg->len, 0);
- if (rc < 0 || rc != msg->len) {
- LOGP(DTEMP, LOGL_ERROR,
- "send error %s during ACK/NACK message send\n",
- strerror(errno));
- close(fd_unix);
- msgb_free(msg);
- return -1;
- }
-
- msgb_free(msg);
- return rc;
-}
-
-static void update_transmiter_power(struct gsm_bts_trx *trx)
-{
- struct femtol1_hdl *fl1h = trx_femtol1_hdl(trx);
-
- if (fl1h->hLayer1)
- l1if_set_txpower(fl1h, sysmobts_get_power_trx(trx));
-}
-
-static int take_reduce_power(struct msgb *msg)
-{
- int recv_reduce_power;
- struct tlv_parsed tlv_out;
- struct gsm_bts_trx *trx = bts->c0;
- int rc, abis_oml_hdr_len;
-
- abis_oml_hdr_len = sizeof(struct abis_om_hdr);
- abis_oml_hdr_len += sizeof(struct abis_om_fom_hdr);
- abis_oml_hdr_len += sizeof(osmocom_magic) + 1;
-
- rc = oml_tlv_parse(&tlv_out, msg->data + abis_oml_hdr_len,
- msg->len - abis_oml_hdr_len);
-
- if (rc < 0) {
- msgb_free(msg);
- return -1;
- }
-
- if (TLVP_PRESENT(&tlv_out, NM_ATT_O_REDUCEPOWER))
- recv_reduce_power = *TLVP_VAL(&tlv_out,
- NM_ATT_O_REDUCEPOWER);
- else
- return -1;
-
- trx->power_reduce = recv_reduce_power;
-
- update_transmiter_power(trx);
-
- return 0;
-}
-
static int read_sock(struct osmo_fd *fd, unsigned int what)
{
struct msgb *msg;
struct gsm_abis_mo *mo;
- struct abis_om_fom_hdr *fom;
int rc;
msg = oml_msgb_alloc();
@@ -421,32 +324,9 @@ static int read_sock(struct osmo_fd *fd, unsigned int what)
mo = &bts->mo;
msg->trx = mo->bts->c0;
- fom = (struct abis_om_fom_hdr *) msg->l3h;
- switch (fom->msg_type) {
- case NM_MT_SET_RADIO_ATTR:
- rc = take_reduce_power(msg);
- if (rc < 0) {
- rc = send_oml_fom_ack_nack(fd->fd, msg,
- NM_NACK_INCORR_STRUCT, 1);
- } else {
- rc = send_oml_fom_ack_nack(fd->fd, msg, 0, 1);
- }
- msgb_free(msg);
- break;
- case NM_MT_FAILURE_EVENT_REP:
- rc = abis_oml_sendmsg(msg);
- break;
- default:
- LOGP(DL1C, LOGL_ERROR, "Unknown Fom message type %d\n",
- fom->msg_type);
- goto err;
- }
+ return abis_oml_sendmsg(msg);
- if (rc < 0)
- goto err;
-
- return rc;
err:
msgb_free(msg);
return -1;
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c
index 4aa2cbf0..e45d41f2 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.c
+++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.c
@@ -82,7 +82,6 @@ static struct vty_app_info vty_info = {
static int fd_unix = -1;
static int trx_nr = -1;
static int state_connection;
-static int status_change_power_red;
static struct osmo_timer_list temp_uc_timer;
static struct osmo_timer_list connect_timer;
@@ -136,39 +135,21 @@ static int check_temperature(struct uc *ucontrol0, int lowlimit, int highlimit,
return 1;
}
-static int check_warning_state(int pa_warning, int board_warning)
-{
- if ((pa_warning || board_warning) &&
- status_change_power_red == SBTS2050_DISABLE_CHANGE_POWER) {
- status_change_power_red = SBTS2050_ENABLE_CHANGE_POWER;
- send_manufacturer_reduce_msg(fd_unix, confinfo.reduce_max_power,
- trx_nr);
- } else if (!pa_warning && !board_warning &&
- status_change_power_red == SBTS2050_ENABLE_CHANGE_POWER) {
- status_change_power_red = SBTS2050_DISABLE_CHANGE_POWER;
- send_manufacturer_reduce_msg(fd_unix, 0, trx_nr);
- } else
- return -1;
-
- return 0;
-}
-
static void check_uctemp_timer_cb(void *data)
{
int temp_pa = 0, temp_board = 0;
struct uc *ucontrol0 = data;
- int pa_warning, board_warning;
sbts2050_uc_check_temp(ucontrol0, &temp_pa, &temp_board);
confinfo.temp_pa_cur = temp_pa;
confinfo.temp_board_cur = temp_board;
- pa_warning = check_temperature(ucontrol0,
- confinfo.temp_min_pa_warn_limit,
- confinfo.temp_max_pa_warn_limit,
- temp_pa, SBTS2050_TEMP_PA,
- SBTS2050_WARN_ALERT);
+ check_temperature(ucontrol0,
+ confinfo.temp_min_pa_warn_limit,
+ confinfo.temp_max_pa_warn_limit,
+ temp_pa, SBTS2050_TEMP_PA,
+ SBTS2050_WARN_ALERT);
check_temperature(ucontrol0,
confinfo.temp_min_pa_severe_limit,
@@ -176,11 +157,11 @@ static void check_uctemp_timer_cb(void *data)
temp_pa, SBTS2050_TEMP_PA,
SBTS2050_SEVERE_ALERT);
- board_warning = check_temperature(ucontrol0,
- confinfo.temp_min_board_warn_limit,
- confinfo.temp_max_board_warn_limit,
- temp_board, SBTS2050_TEMP_BOARD,
- SBTS2050_WARN_ALERT);
+ check_temperature(ucontrol0,
+ confinfo.temp_min_board_warn_limit,
+ confinfo.temp_max_board_warn_limit,
+ temp_board, SBTS2050_TEMP_BOARD,
+ SBTS2050_WARN_ALERT);
check_temperature(ucontrol0,
confinfo.temp_min_board_severe_limit,
@@ -188,8 +169,6 @@ static void check_uctemp_timer_cb(void *data)
temp_board, SBTS2050_TEMP_BOARD,
SBTS2050_SEVERE_ALERT);
- check_warning_state(pa_warning, board_warning);
-
osmo_timer_schedule(&temp_uc_timer, TEMP_TIMER_SECS, 0);
}
#endif
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr.h b/src/osmo-bts-sysmo/misc/sysmobts_mgr.h
index 026afd54..5e0d4a7b 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_mgr.h
+++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr.h
@@ -15,11 +15,6 @@ enum {
SYSMO_MGR_CONNECTED,
};
-enum {
- SBTS2050_DISABLE_CHANGE_POWER = 0,
- SBTS2050_ENABLE_CHANGE_POWER,
-};
-
#define SOCKET_PATH "/var/run/bts_oml"
struct sbts2050_config_info;
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_misc.c b/src/osmo-bts-sysmo/misc/sysmobts_misc.c
index 6277a6bf..2417c3d9 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_misc.c
+++ b/src/osmo-bts-sysmo/misc/sysmobts_misc.c
@@ -58,23 +58,6 @@
#define OM_HEADROOM_SIZE 128
#ifdef BUILD_SBTS2050
-
-static int check_manufacturer_reduce_nach_ack(struct msgb *msg)
-{
- struct abis_om_fom_hdr *foh = msgb_l3(msg);
-
- if (foh->msg_type == NM_MT_SET_RADIO_ATTR + 2) { /* NACK */
- LOGP(DTEMP, LOGL_ERROR, "Reduce Power: Received a BTS NACK\n");
- return -1;
- } else if (foh->msg_type != NM_MT_SET_RADIO_ATTR + 1) { /* ACK */
- LOGP(DTEMP, LOGL_ERROR, "Unknown message type %d\n",
- foh->msg_type);
- return -1;
- }
-
- return 0;
-}
-
static void add_sw_descr(struct msgb *msg)
{
char file_version[255];
@@ -129,61 +112,6 @@ static void add_oml_hdr_msg(struct msgb *msg, uint8_t msg_type,
omh->length = msgb_l3len(msg);
}
-int send_manufacturer_reduce_msg(int fd_unix, int reduce_power, int trx_nr)
-{
- int rc;
- struct msgb *msg;
-
- msg = msgb_alloc_headroom(OM_ALLOC_SIZE, OM_HEADROOM_SIZE, "OML");
- if (msg == NULL) {
- LOGP(DTEMP, LOGL_ERROR, "Error creating oml msg\n");
- return -1;
- }
-
- add_oml_hdr_msg(msg, NM_MT_SET_RADIO_ATTR, 2, 0, trx_nr, 255, 1);
-
- msgb_tv_put(msg, NM_ATT_O_REDUCEPOWER, reduce_power);
-
- prepend_oml_ipa_header(msg);
-
- rc = send(fd_unix, msg->data, msg->len, 0);
- if (rc < 0 || rc != msg->len) {
- LOGP(DTEMP, LOGL_ERROR,
- "send error %s during Reduce Manufacturer O&M msg send\n",
- strerror(errno));
- goto err;
- }
-
- msgb_reset(msg);
- rc = recv(fd_unix, msg->tail, msg->data_len, 0);
- if (rc <= 0) {
- LOGP(DTEMP, LOGL_ERROR, "recv error %s during ACK/NACK recv\n",
- strerror(errno));
- goto err;
- }
- msgb_put(msg, rc);
-
- if (check_oml_msg(msg) < 0) {
- close(fd_unix);
- msgb_free(msg);
- return -1;
- }
-
- if (check_manufacturer_reduce_nach_ack(msg) < 0) {
- close(fd_unix);
- msgb_free(msg);
- return -1;
- }
-
- msgb_free(msg);
- return SYSMO_MGR_CONNECTED;
-
-err:
- close(fd_unix);
- msgb_free(msg);
- return SYSMO_MGR_DISCONNECTED;
-}
-
int send_omlfailure(int fd_unix, enum sbts2050_alert_lvl alert,
enum sbts2050_temp_sensor sensor,
struct sbts2050_config_info *add_info, int trx_nr)
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_misc.h b/src/osmo-bts-sysmo/misc/sysmobts_misc.h
index 740ce2d7..c22a54b2 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_misc.h
+++ b/src/osmo-bts-sysmo/misc/sysmobts_misc.h
@@ -75,8 +75,6 @@ int send_omlfailure(int fd_unix, enum sbts2050_alert_lvl alert,
enum sbts2050_temp_sensor sensor,
struct sbts2050_config_info *add_info, int trx_nr);
-int send_manufacturer_reduce_msg(int fd_unix, int reduce_power, int trx_nr);
-
int sysmobts_update_hours(int no_epprom_write);
enum sysmobts_firmware_type {