aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-04-29 13:25:57 +0000
committerHarald Welte <laforge@gnumonks.org>2009-04-29 13:25:57 +0000
commitaaf02d9e0194c44960a633e1a2d605d4c3c071ac (patch)
tree8da17e8e35bdba4facd98992107b76226b37d608 /src
parenta432cd3930a3620e881a6d8a81dde028c6c86ecc (diff)
read the PLL config as part of the bs11_config 'query' command
Diffstat (limited to 'src')
-rw-r--r--src/abis_nm.c16
-rw-r--r--src/bs11_config.c22
2 files changed, 38 insertions, 0 deletions
diff --git a/src/abis_nm.c b/src/abis_nm.c
index 6e0f5bad0..4a0be22a2 100644
--- a/src/abis_nm.c
+++ b/src/abis_nm.c
@@ -263,6 +263,7 @@ static const struct tlv_definition nm_att_tlvdef = {
[NM_ATT_BS11_LMT_USER_NAME] = { TLV_TYPE_TLV },
[NM_ATT_BS11_BTS_STATE] = { TLV_TYPE_TLV },
[NM_ATT_BS11_E1_STATE] = { TLV_TYPE_TLV },
+ [NM_ATT_BS11_PLL_MODE] = { TLV_TYPE_TLV },
/* ip.access specifics */
[NM_ATT_IPACC_RSL_BSC_IP] = { TLV_TYPE_FIXED, 4 },
[NM_ATT_IPACC_RSL_BSC_PORT] = { TLV_TYPE_FIXED, 2 },
@@ -1684,6 +1685,21 @@ int abis_nm_bs11_get_trx_power(struct gsm_bts_trx *trx)
return abis_nm_sendmsg(trx->bts, msg);
}
+int abis_nm_bs11_get_pll_mode(struct gsm_bts *bts)
+{
+ struct abis_om_hdr *oh;
+ struct msgb *msg = nm_msgb_alloc();
+ u_int8_t attr = NM_ATT_BS11_PLL_MODE;
+
+ oh = (struct abis_om_hdr *) msgb_put(msg, ABIS_OM_FOM_HDR_SIZE);
+ fill_om_fom_hdr(oh, 2+sizeof(attr), NM_MT_GET_ATTR,
+ NM_OC_BS11, BS11_OBJ_LI, 0x00, 0x00);
+ msgb_tlv_put(msg, NM_ATT_LIST_REQ_ATTR, sizeof(attr), &attr);
+
+ return abis_nm_sendmsg(bts, msg);
+}
+
+
//static const u_int8_t bs11_logon_c7[] = { 0x07, 0xd9, 0x01, 0x11, 0x0d, 0x10, 0x20 };
static const u_int8_t bs11_logon_c8[] = { 0x02 };
static const u_int8_t bs11_logon_c9[] = "FACTORY";
diff --git a/src/bs11_config.c b/src/bs11_config.c
index 7f759853c..f35036876 100644
--- a/src/bs11_config.c
+++ b/src/bs11_config.c
@@ -294,6 +294,18 @@ static const char *trx_power_name(u_int8_t pwr)
}
}
+static const char *pll_mode_name(u_int8_t mode)
+{
+ switch (mode) {
+ case BS11_LI_PLL_LOCKED:
+ return "E1 Locked";
+ case BS11_LI_PLL_STANDALONE:
+ return "Standalone";
+ default:
+ return "unknown";
+ }
+}
+
static const char *obj_name(struct abis_om_fom_hdr *foh)
{
static char retbuf[256];
@@ -308,6 +320,9 @@ static const char *obj_name(struct abis_om_fom_hdr *foh)
sprintf(retbuf+strlen(retbuf), "Power Amplifier %d ",
foh->obj_inst.ts_nr);
break;
+ case BS11_OBJ_LI:
+ sprintf(retbuf+strlen(retbuf), "Line Interface ");
+ break;
}
break;
case NM_OC_SITE_MANAGER:
@@ -377,6 +392,12 @@ static int print_attr(struct tlv_parsed *tp)
printf("\tTRX Power: %s\n",
trx_power_name(*TLVP_VAL(tp, NM_ATT_BS11_TXPWR)));
}
+ if (TLVP_PRESENT(tp, NM_ATT_BS11_PLL_MODE) &&
+ TLVP_LEN(tp, NM_ATT_BS11_PLL_MODE) >= 1) {
+ printf("\tPLL Mode: %s\n",
+ pll_mode_name(*TLVP_VAL(tp, NM_ATT_BS11_PLL_MODE)));
+ }
+
return 0;
}
@@ -386,6 +407,7 @@ static void cmd_query(void)
bs11cfg_state = STATE_QUERY;
abis_nm_bs11_get_serno(g_bts);
abis_nm_bs11_get_oml_tei_ts(g_bts);
+ abis_nm_bs11_get_pll_mode(g_bts);
abis_nm_bs11_get_trx_power(&g_bts->trx[0]);
abis_nm_bs11_get_trx_power(&g_bts->trx[1]);
sleep(5);