Init commit for standalone enodebd
Change-Id: I88eeef5135dd7ba8551ddd9fb6a0695f5325337b
diff --git a/device_config/configuration_util.py b/device_config/configuration_util.py
new file mode 100644
index 0000000..cf746c1
--- /dev/null
+++ b/device_config/configuration_util.py
@@ -0,0 +1,67 @@
+"""
+Copyright 2020 The Magma Authors.
+
+This source code is licensed under the BSD-style license found in the
+LICENSE file in the root directory of this source tree.
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+"""
+from typing import NamedTuple, Optional
+
+from lte.protos.mconfig.mconfigs_pb2 import EnodebD
+
+EnodebConfig = NamedTuple(
+ 'EnodebConfig', [
+ ('serial_num', str),
+ ('config', EnodebD.EnodebConfig),
+ ],
+)
+
+
+def get_enb_rf_tx_desired(mconfig: EnodebD, enb_serial: str) -> bool:
+ """ True if the mconfig specifies to enable transmit on the eNB """
+ if mconfig.enb_configs_by_serial is not None and \
+ len(mconfig.enb_configs_by_serial) > 0:
+ if enb_serial in mconfig.enb_configs_by_serial:
+ enb_config = mconfig.enb_configs_by_serial[enb_serial]
+ return enb_config.transmit_enabled
+ else:
+ raise KeyError('Missing eNB from mconfig: %s' % enb_serial)
+ return mconfig.allow_enodeb_transmit
+
+
+def is_enb_registered(mconfig: EnodebD, enb_serial: str) -> bool:
+ """
+ True if either:
+ - the eNodeB is registered by serial to the Access Gateway
+ or
+ - the Access Gateway accepts all eNodeB devices
+ """
+ if mconfig.enb_configs_by_serial is not None and \
+ len(mconfig.enb_configs_by_serial) > 0:
+ if enb_serial in mconfig.enb_configs_by_serial:
+ return True
+ else:
+ return False
+ return True
+
+
+def find_enb_by_cell_id(mconfig: EnodebD, cell_id: int) \
+ -> Optional[EnodebConfig]:
+ """
+ Returns eNB config if:
+ - the eNodeB is registered by serial to the Access Gateway
+ - cell ID is found in eNB status by serial
+ else: returns None
+ """
+ if mconfig.enb_configs_by_serial is not None and \
+ len(mconfig.enb_configs_by_serial) > 0:
+ for sn, enb in mconfig.enb_configs_by_serial.items():
+ if cell_id == enb.cell_id:
+ config = EnodebConfig(serial_num=sn, config=enb)
+ return config
+ return None