aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2013-10-04 18:26:56 +0200
committerHarald Welte <laforge@gnumonks.org>2013-10-04 18:27:16 +0200
commitff41a47c65958f00f159f7d74083f1ff6b190283 (patch)
treef04c005aaeac2c16d3c8532bd9a8f1f2fe4f7239
parentad89cd978a220406a58e9a00562438d9eac2cf45 (diff)
sysmobts_par: support for negative parameters
by splitting the rerutn code/status from the actual value, we support negative values to be stored in the EEPROM
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_misc.c23
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_par.c19
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_par.h4
3 files changed, 23 insertions, 23 deletions
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_misc.c b/src/osmo-bts-sysmo/misc/sysmobts_misc.c
index fdded439..c4f308a1 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_misc.c
+++ b/src/osmo-bts-sysmo/misc/sysmobts_misc.c
@@ -114,7 +114,9 @@ void sysmobts_check_temp(void)
int i, rc;
for (i = 0; i < ARRAY_SIZE(temp_data); i++) {
- temp_old[i] = sysmobts_par_get_int(temp_data[i].ee_par) * 1000;
+ int ret;
+ rc = sysmobts_par_get_int(temp_data[i].ee_par, &ret);
+ temp_old[i] = ret * 1000;
temp_hi[i] = sysmobts_temp_get(temp_data[i].sensor,
SYSMOBTS_TEMP_HIGHEST);
temp_cur[i] = sysmobts_temp_get(temp_data[i].sensor,
@@ -151,18 +153,18 @@ static time_t last_update;
int sysmobts_update_hours(void)
{
time_t now = time(NULL);
- int op_hrs;
+ int rc, op_hrs;
/* first time after start of manager program */
if (last_update == 0) {
last_update = now;
- op_hrs = sysmobts_par_get_int(SYSMOBTS_PAR_HOURS);
- if (op_hrs < 0) {
+ rc = sysmobts_par_get_int(SYSMOBTS_PAR_HOURS, &op_hrs);
+ if (rc < 0) {
LOGP(DTEMP, LOGL_ERROR, "Unable to read "
- "operational hours: %d (%s)\n", op_hrs,
+ "operational hours: %d (%s)\n", rc,
strerror(errno));
- return op_hrs;
+ return rc;
}
LOGP(DTEMP, LOGL_INFO, "Total hours of Operation: %u\n",
@@ -172,13 +174,12 @@ int sysmobts_update_hours(void)
}
if (now >= last_update + 3600) {
- int rc;
- op_hrs = sysmobts_par_get_int(SYSMOBTS_PAR_HOURS);
- if (op_hrs < 0) {
+ rc = sysmobts_par_get_int(SYSMOBTS_PAR_HOURS, &op_hrs);
+ if (rc < 0) {
LOGP(DTEMP, LOGL_ERROR, "Unable to read "
- "operational hours: %d (%s)\n", op_hrs,
+ "operational hours: %d (%s)\n", rc,
strerror(errno));
- return op_hrs;
+ return rc;
}
/* number of hours to increase */
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_par.c b/src/osmo-bts-sysmo/misc/sysmobts_par.c
index 3399e4ff..bab6bf56 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_par.c
+++ b/src/osmo-bts-sysmo/misc/sysmobts_par.c
@@ -83,9 +83,8 @@ static int set_eeprom(struct sysmobts_eeprom *ee)
return 0;
}
-int sysmobts_par_get_int(enum sysmobts_par par)
+int sysmobts_par_get_int(enum sysmobts_par par, int *ret)
{
- int ret;
struct sysmobts_eeprom *ee = get_eeprom(0);
if (!ee)
@@ -96,31 +95,31 @@ int sysmobts_par_get_int(enum sysmobts_par par)
switch (par) {
case SYSMOBTS_PAR_CLK_FACTORY:
- ret = ee->clk_cal_fact;
+ *ret = ee->clk_cal_fact;
break;
case SYSMOBTS_PAR_TEMP_DIG_MAX:
- ret = ee->temp1_max;
+ *ret = ee->temp1_max;
break;
case SYSMOBTS_PAR_TEMP_RF_MAX:
- ret = ee->temp2_max;
+ *ret = ee->temp2_max;
break;
case SYSMOBTS_PAR_SERNR:
- ret = ee->serial_nr;
+ *ret = ee->serial_nr;
break;
case SYSMOBTS_PAR_HOURS:
- ret = ee->operational_hours;
+ *ret = ee->operational_hours;
break;
case SYSMOBTS_PAR_BOOTS:
- ret = ee->boot_count;
+ *ret = ee->boot_count;
break;
default:
return -EINVAL;
}
- return ret;
+ return 0;
}
-int sysmobts_par_set_int(enum sysmobts_par par, unsigned int val)
+int sysmobts_par_set_int(enum sysmobts_par par, int val)
{
struct sysmobts_eeprom *ee = get_eeprom(1);
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_par.h b/src/osmo-bts-sysmo/misc/sysmobts_par.h
index 85a38abc..8a37b585 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_par.h
+++ b/src/osmo-bts-sysmo/misc/sysmobts_par.h
@@ -16,8 +16,8 @@ enum sysmobts_par {
};
-int sysmobts_par_get_int(enum sysmobts_par par);
-int sysmobts_par_set_int(enum sysmobts_par par, unsigned int val);
+int sysmobts_par_get_int(enum sysmobts_par par, int *ret);
+int sysmobts_par_set_int(enum sysmobts_par par, int val);
int sysmobts_par_get_buf(enum sysmobts_par par, uint8_t *buf,
unsigned int size);
int sysmobts_par_set_buf(enum sysmobts_par par, const uint8_t *buf,