aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2020-01-29 09:19:45 +0100
committerHarald Welte <laforge@osmocom.org>2020-01-29 09:21:00 +0100
commit2fa9763fb8ad3bf8fdf6b235f601a8b16cd6f8f9 (patch)
treebc55f705111758dd3f551c3049e5c091bbe25342
parentb84463e36ac73e3664f1a7eaabb2e35bb191194a (diff)
OM2000: Add some more message types and IEs we now understand
OM2000 is not only used for the venerable RBS2000 family, but also for the more modern RBS6000 family, specifically the DUG 20 GSM baseband unit. In RBS6000, there are some protocol extensions which are not yet fully understood. However, we are understanding some bits around the MCTR (multi carrier transceiver?), a new MO that appears to be present for every physical RUS (Radio Unit) attached to the DUG 20. Let's add what we have learned so far. Thanks to Sylvain Munaut for his help with this. Change-Id: Ib868358eca12b94c4fcca58e94ec8ab1a4edfda2
-rw-r--r--include/osmocom/bsc/abis_om2000.h1
-rw-r--r--src/osmo-bsc/abis_om2000.c41
2 files changed, 42 insertions, 0 deletions
diff --git a/include/osmocom/bsc/abis_om2000.h b/include/osmocom/bsc/abis_om2000.h
index b093a0350..49e8510aa 100644
--- a/include/osmocom/bsc/abis_om2000.h
+++ b/include/osmocom/bsc/abis_om2000.h
@@ -29,6 +29,7 @@ enum abis_om2k_mo_cls {
OM2K_MO_CLS_IS = 0x05,
OM2K_MO_CLS_CON = 0x06,
OM2K_MO_CLS_DP = 0x07,
+ OM2K_MO_CLS_MCTR = 0x08,
OM2K_MO_CLS_CF = 0x0a,
OM2K_MO_CLS_TX = 0x0b,
OM2K_MO_CLS_RX = 0x0c,
diff --git a/src/osmo-bsc/abis_om2000.c b/src/osmo-bsc/abis_om2000.c
index 14c373b17..f8efa3990 100644
--- a/src/osmo-bsc/abis_om2000.c
+++ b/src/osmo-bsc/abis_om2000.c
@@ -202,6 +202,26 @@ enum abis_om2k_msgtype {
OM2K_MSGT_NEGOT_REQ_ACK = 0x0104,
OM2K_MSGT_NEGOT_REQ_NACK = 0x0105,
OM2K_MSGT_NEGOT_REQ = 0x0106,
+
+ OM2K_MSGT_BTS_INITIATED_REQ_ACK = 0x0108,
+ OM2K_MSGT_BTS_INITIATED_REQ_NACK = 0x0109,
+ OM2K_MSGT_BTS_INITIATED_REQ = 0x010a,
+
+ OM2K_MSGT_RADIO_CHAN_REL_CMD = 0x010c,
+ OM2K_MSGT_RADIO_CHAN_REL_COMPL = 0x010e,
+ OM2K_MSGT_RADIO_CHAN_REL_REJ = 0x010f,
+
+ OM2K_MSGT_FEATURE_CTRL_CMD = 0x0118,
+ OM2K_MSGT_FEATURE_CTRL_COMPL = 0x011a,
+ OM2K_MSGT_FEATURE_CTRL_REJ = 0x011b,
+
+ OM2K_MSGT_MCTR_CONFIG_REQ = 0x012c,
+ OM2K_MSGT_MCTR_CONFIG_REQ_ACK = 0x012e,
+ OM2K_MSGT_MCTR_CONFIG_REQ_REJ = 0x012f,
+
+ OM2K_MSGT_MCTR_CONFIG_RES_ACK = 0x0130,
+ OM2K_MSGT_MCTR_CONFIG_RES_NACK = 0x0131,
+ OM2K_MSGT_MCTR_CONFIG_RES = 0x0132,
};
enum abis_om2k_dei {
@@ -272,6 +292,13 @@ enum abis_om2k_dei {
OM2K_DEI_FS_OFFSET = 0x98,
OM2K_DEI_EXT_COND_MAP_2_EXT = 0x9c,
OM2K_DEI_TSS_MO_STATE = 0x9d,
+ OM2K_DEI_CONFIG_TYPE = 0x9e,
+ OM2K_DEI_JITTER_SIZE = 0x9f,
+ OM2K_DEI_PACKING_ALGO = 0xa0,
+ OM2K_DEI_TRXC_LIST = 0xa8,
+ OM2K_DEI_MAX_ALLOWED_POWER = 0xa9,
+ OM2K_DEI_MAX_ALLOWED_NUM_TRXCS = 0xaa,
+ OM2K_DEI_MCTR_FEAT_STATUS_BMAP = 0xab,
};
const struct tlv_definition om2k_att_tlvdef = {
@@ -521,6 +548,12 @@ static const struct value_string om2k_msgcode_vals[] = {
{ 0x0118, "Feature Control Command" },
{ 0x011a, "Feature Control Complete" },
{ 0x011b, "Feature Control Reject" },
+ { 0x012c, "MCTR Configuration Request" },
+ { 0x012e, "MCTR Configuration Request Accept" },
+ { 0x012f, "MCTR Configuration Request Reject" },
+ { 0x0130, "MCTR Configuration Result ACK" },
+ { 0x0131, "MCTR Configuration Result NACK" },
+ { 0x0132, "MCTR Configuration Result" },
{ 0, NULL }
};
@@ -653,6 +686,13 @@ static const struct value_string om2k_attr_vals[] = {
{ 0x9b, "Master TX Chain Delay" },
{ 0x9c, "External Condition Class 2 Extension" },
{ 0x9d, "TSs MO State" },
+ { 0x9e, "Configuration Type" },
+ { 0x9f, "Jitter Size" },
+ { 0xa0, "Packing Algorithm" },
+ { 0xa8, "TRXC List" },
+ { 0xa9, "Maximum Allowed Power" },
+ { 0xaa, "Maximum Allowed Number of TRXCs" },
+ { 0xab, "MCTR Feature Status Bitmap" },
{ 0, NULL }
};
@@ -663,6 +703,7 @@ const struct value_string om2k_mo_class_short_vals[] = {
{ 0x05, "IS" },
{ 0x06, "CON" },
{ 0x07, "DP" },
+ { 0x08, "MCTR" },
{ 0x0a, "CF" },
{ 0x0b, "TX" },
{ 0x0c, "RX" },