aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/osmo-bts-sysmo/misc/sysmobts_mgr_calib.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/osmo-bts-sysmo/misc/sysmobts_mgr_calib.c b/src/osmo-bts-sysmo/misc/sysmobts_mgr_calib.c
index 165b7311..cc011121 100644
--- a/src/osmo-bts-sysmo/misc/sysmobts_mgr_calib.c
+++ b/src/osmo-bts-sysmo/misc/sysmobts_mgr_calib.c
@@ -53,6 +53,19 @@ static void send_ctrl_cmd(struct sysmobts_mgr_instance *mgr,
ipa_client_conn_send(mgr->calib.bts_conn, msg);
}
+static void send_set_ctrl_cmd_int(struct sysmobts_mgr_instance *mgr,
+ const char *key, const int val)
+{
+ struct msgb *msg;
+ int ret;
+
+ msg = msgb_alloc_headroom(1024, 128, "CTRL SET");
+ ret = snprintf((char *) msg->data, 4096, "SET %u %s %d",
+ mgr->calib.last_seqno++, key, val);
+ msg->l2h = msgb_put(msg, ret);
+ return send_ctrl_cmd(mgr, msg);
+}
+
static void send_set_ctrl_cmd(struct sysmobts_mgr_instance *mgr,
const char *key, const char *val)
{
@@ -143,6 +156,7 @@ static void handle_ctrl_get_resp(
char *cal_err;
char *cal_res;
char *cal_src;
+ int cal_err_int;
if (strcmp(cmd->variable, "trx.0.clock-info") != 0) {
LOGP(DCALIB, LOGL_ERROR,
@@ -163,9 +177,10 @@ static void handle_ctrl_get_resp(
return;
}
+ cal_err_int = atoi(cal_err);
LOGP(DCALIB, LOGL_NOTICE,
- "Calibration CUR(%s) SRC(%s) ERR(%s) RES(%s) SRC(%s)\n",
- clk_cur, clk_src, cal_err, cal_res, cal_src);
+ "Calibration CUR(%s) SRC(%s) ERR(%s/%d) RES(%s) SRC(%s)\n",
+ clk_cur, clk_src, cal_err, cal_err_int, cal_res, cal_src);
if (strcmp(cal_res, "0") == 0) {
LOGP(DCALIB, LOGL_ERROR, "Invalid clock resolution. Giving up\n");
@@ -174,7 +189,7 @@ static void handle_ctrl_get_resp(
}
/* Now we can finally set the new value */
- send_set_ctrl_cmd(mgr, "trx.0.clock-correction", cal_err);
+ send_set_ctrl_cmd_int(mgr, "trx.0.clock-correction", -cal_err_int);
mgr->calib.state = CALIB_COR_SET;
}