From aaf02d9e0194c44960a633e1a2d605d4c3c071ac Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 29 Apr 2009 13:25:57 +0000 Subject: [PATCH] read the PLL config as part of the bs11_config 'query' command --- src/abis_nm.c | 16 ++++++++++++++++ src/bs11_config.c | 22 ++++++++++++++++++++++ 2 files changed, 38 insertions(+) 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);