diff --git a/include/osmo-bts/pcuif_proto.h b/include/osmo-bts/pcuif_proto.h index 15e3e203b..04936af0d 100644 --- a/include/osmo-bts/pcuif_proto.h +++ b/include/osmo-bts/pcuif_proto.h @@ -7,7 +7,7 @@ #define PCU_SOCK_DEFAULT "/tmp/pcu_bts" -#define PCU_IF_VERSION 0x0b +#define PCU_IF_VERSION 0x0c #define TXT_MAX_LEN 128 /* msg_type */ @@ -57,6 +57,17 @@ #define PCU_IF_ADDR_TYPE_IPV4 0x04 /* IPv4 address */ #define PCU_IF_ADDR_TYPE_IPV6 0x29 /* IPv6 address */ +/* BTS model */ +enum gsm_pcuif_bts_model { + PCU_IF_BTS_MODEL_UNSPEC, + PCU_IF_BTS_MODEL_LC15, + PCU_IF_BTS_MODEL_OC2G, + PCU_IF_BTS_MODEL_OCTPHY, + PCU_IF_BTS_MODEL_SYSMO, + PCU_IF_BTS_MODEL_TRX, + PCU_IF_BTS_MODEL_RBS, +}; + #define PCU_IF_NUM_NSVC 2 #define PCU_IF_NUM_TRX 8 @@ -170,6 +181,7 @@ struct gsm_pcu_if_info_ind { struct in_addr v4; struct in6_addr v6; } remote_ip[PCU_IF_NUM_NSVC]; + uint8_t bts_model; /* enum gsm_pcuif_bts_model */ } __attribute__ ((packed)); struct gsm_pcu_if_act_req { diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c index 6116c9ef3..048e76681 100644 --- a/src/common/pcu_sock.c +++ b/src/common/pcu_sock.c @@ -230,6 +230,25 @@ static void info_ind_fill_trx(struct gsm_pcu_if_info_trx *trx_info, } } +static enum gsm_pcuif_bts_model bts_model_from_variant(enum gsm_bts_type_variant variant) +{ + switch (variant) { + case BTS_OSMO_LITECELL15: + return PCU_IF_BTS_MODEL_LC15; + case BTS_OSMO_OC2G: + return PCU_IF_BTS_MODEL_OC2G; + case BTS_OSMO_OCTPHY: + return PCU_IF_BTS_MODEL_OCTPHY; + case BTS_OSMO_SYSMO: + return PCU_IF_BTS_MODEL_SYSMO; + case BTS_OSMO_TRX: + case BTS_OSMO_VIRTUAL: + return PCU_IF_BTS_MODEL_TRX; + default: + return PCU_IF_BTS_MODEL_UNSPEC; + } +} + int pcu_tx_info_ind(void) { struct msgb *msg; @@ -358,6 +377,8 @@ int pcu_tx_info_ind(void) info_ind_fill_trx(&info_ind->trx[trx->nr], trx); } + info_ind->bts_model = bts_model_from_variant(bts->variant); + return pcu_sock_send(msg); }