Add bs11_config commands to set the PLL mode from E1_LOCKED to STANDALONE
and vice-versa. This has not yet been tested yet.
diff --git a/src/abis_nm.c b/src/abis_nm.c
index 7a9a3f5..3cbfd84 100644
--- a/src/abis_nm.c
+++ b/src/abis_nm.c
@@ -1733,6 +1733,22 @@
return abis_nm_sendmsg(bts, msg);
}
+/* change the BS-11 PLL Mode to either locked (E1 derived) or standalone */
+int abis_nm_bs11_set_pll_locked(struct gsm_bts *bts, int locked)
+{
+ struct abis_om_hdr *oh;
+ struct msgb *msg;
+
+ msg = nm_msgb_alloc();
+ oh = (struct abis_om_hdr *) msgb_put(msg, ABIS_OM_FOM_HDR_SIZE);
+ fill_om_fom_hdr(oh, 3, NM_MT_BS11_SET_ATTR, NM_OC_BS11,
+ BS11_OBJ_LI, 0x00, 0x00);
+ msgb_tlv_put(msg, NM_ATT_BS11_PLL_MODE, 1,
+ locked ? BS11_LI_PLL_LOCKED : BS11_LI_PLL_STANDALONE);
+
+ return abis_nm_sendmsg(bts, msg);
+}
+
int abis_nm_bs11_get_state(struct gsm_bts *bts)
{
return __simple_cmd(bts, NM_MT_BS11_GET_STATE);
diff --git a/src/bs11_config.c b/src/bs11_config.c
index b603e8b..7f75985 100644
--- a/src/bs11_config.c
+++ b/src/bs11_config.c
@@ -459,6 +459,16 @@
sleep(1);
abis_nm_bs11_factory_logon(g_bts, 0);
command = NULL;
+ } else if (!strcmp(command, "pll-e1-locked")) {
+ abis_nm_bs11_set_pll_locked(g_bts, 1);
+ sleep(1);
+ abis_nm_bs11_factory_logon(g_bts, 0);
+ command = NULL;
+ } else if (!strcmp(command, "pll-standalone")) {
+ abis_nm_bs11_set_pll_locked(g_bts, 0);
+ sleep(1);
+ abis_nm_bs11_factory_logon(g_bts, 0);
+ command = NULL;
} else if (!strcmp(command, "oml-tei")) {
abis_nm_bs11_conn_oml_tei(g_bts, 0, 1, 0xff, TEI_OML);
command = NULL;
@@ -615,6 +625,8 @@
printf("\tsoftware\tDownload Software (only in administrative state)\n");
printf("\tcreate-trx1\tCreate objects for TRX1 (Danger: Your BS-11 might overheat)\n");
printf("\tdelete-trx1\tDelete objects for TRX1\n");
+ printf("\tpll-e1-locked\tSet the PLL to be locked to E1 clock\n");
+ printf("\tpll-standalone\tSet the PLL to be in standalone mode\n");
printf("\toml-tei\tSet OML E1 TS and TEI\n");
}