diff options
author | Harald Welte <laforge@gnumonks.org> | 2013-10-04 18:26:56 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2013-10-04 18:27:16 +0200 |
commit | ff41a47c65958f00f159f7d74083f1ff6b190283 (patch) | |
tree | f04c005aaeac2c16d3c8532bd9a8f1f2fe4f7239 | |
parent | ad89cd978a220406a58e9a00562438d9eac2cf45 (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.c | 23 | ||||
-rw-r--r-- | src/osmo-bts-sysmo/misc/sysmobts_par.c | 19 | ||||
-rw-r--r-- | src/osmo-bts-sysmo/misc/sysmobts_par.h | 4 |
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, |