From ea2536db4f475f4aca0c5d187fdad0a1b202391e Mon Sep 17 00:00:00 2001
From: Kirill Smelkov <kirr@nexedi.com>
Date: Wed, 29 Nov 2023 09:37:05 +0000
Subject: [PATCH] software/ors-amarisoft: enb: Factor sdr-busy promise to
 generic ru library and to be per-RU

If we have several radio units, we want each of them to have its own sdr-busy promise.

See https://lab.nexedi.com/nexedi/slapos.toolbox/merge_requests/125 for
corresponding part in slapos.toolbox that makes check_sdr_busy per-RU
configurable.

Not touching gnb.jinja2.cfg as currently gnb does not support multicell at all,
and in the future it will be sole enb.cfg to handle both LTE and NR
simultaneously.

/cc @xavier_thompson, @Daetalus
/reviewed-by @jhuge, @lu.xu
/reviewed-on https://lab.nexedi.com/nexedi/slapos/merge_requests/1485
---
 software/ors-amarisoft/buildout.hash.cfg       |  4 ++--
 software/ors-amarisoft/instance-enb.jinja2.cfg |  9 ---------
 .../ors-amarisoft/ru/libinstance.jinja2.cfg    | 18 +++++++++++++++++-
 3 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/software/ors-amarisoft/buildout.hash.cfg b/software/ors-amarisoft/buildout.hash.cfg
index fc7f3db23..69e267536 100644
--- a/software/ors-amarisoft/buildout.hash.cfg
+++ b/software/ors-amarisoft/buildout.hash.cfg
@@ -32,7 +32,7 @@ md5sum = ab666fdfadbfc7d8a16ace38d295c883
 
 [ru_libinstance.jinja2.cfg]
 _update_hash_filename_ = ru/libinstance.jinja2.cfg
-md5sum = 5706b618cb26b3541bd9f5571d61db89
+md5sum = 4d29c7d06109cc9ecda37f60045336e8
 
 [ru_sdr_libinstance.jinja2.cfg]
 _update_hash_filename_ = ru/sdr/libinstance.jinja2.cfg
@@ -80,7 +80,7 @@ md5sum = 52da9fe3a569199e35ad89ae1a44c30e
 
 [template-enb]
 _update_hash_filename_ = instance-enb.jinja2.cfg
-md5sum = 05c6562ec081f8d36e43f6ed2fd56092
+md5sum = 6074adea3c4b30c7b726981e9e40b8a7
 
 [template-gnb]
 _update_hash_filename_ = instance-gnb.jinja2.cfg
diff --git a/software/ors-amarisoft/instance-enb.jinja2.cfg b/software/ors-amarisoft/instance-enb.jinja2.cfg
index 5b84b90c2..51e9411f4 100644
--- a/software/ors-amarisoft/instance-enb.jinja2.cfg
+++ b/software/ors-amarisoft/instance-enb.jinja2.cfg
@@ -14,7 +14,6 @@ parts =
   sshd-add-authorized-key
   sshd-promise
 {% endif %}
-  check-sdr-busy.py
   check-baseband-latency.py
   check-amarisoft-stats-log.py
   check-rx-saturated.py
@@ -372,14 +371,6 @@ password = {{ slapparameter_dict['monitor-password'] | string }}
 <= monitor-promise-base
 name = ${:_buildout_section_name_}
 
-[check-sdr-busy.py]
-<= macro.promise
-promise = check_sdr_busy
-config-testing = {{ slapparameter_dict.get("testing", False) }}
-config-sdr = {{ sdr }}
-config-sdr_dev  = 0
-config-dma_chan = 0
-
 [check-baseband-latency.py]
 <= macro.promise
 promise = check_baseband_latency
diff --git a/software/ors-amarisoft/ru/libinstance.jinja2.cfg b/software/ors-amarisoft/ru/libinstance.jinja2.cfg
index 5ceb06f3f..13128a643 100644
--- a/software/ors-amarisoft/ru/libinstance.jinja2.cfg
+++ b/software/ors-amarisoft/ru/libinstance.jinja2.cfg
@@ -153,12 +153,28 @@ hash-files =
 {%-     set ru_ref = cell_ref  if cell_ref != 'default'  else 'RU' %}
 
 # {{ ru_ref }}  ({{ ru_type}})
-{%-     if trx == 'cpri'  %}
+{%-     if trx == 'sdr'  %}
+{{ promise('%s-sdr-busy' % ru_ref) }}
+promise = check_sdr_busy
+config-sdr = {{ sdr }}
+config-sdr_dev  = 0
+config-dma_chan = 0
+
+{%-     elif trx == 'cpri'  %}
+{{ promise('%s-sdr-busy' % ru_ref) }}
+promise = check_sdr_busy
+config-sdr = {{ sdr }}
+config-sdr_dev  = {{ slapparameter_dict.get('sdr_number', 0) }}
+config-dma_chan = {{ cell.cpri_port_number }}
+
 {{ promise('%s-cpri-lock' % ru_ref) }}
 promise = check_cpri_lock
 config-sdr_dev  = {{ slapparameter_dict.get('sdr_number', 0) }}
 config-sfp_port = {{ cell.cpri_port_number }}
 config-amarisoft-rf-info-log = ${amarisoft-rf-info-template:log-output}
+
+{%-     else %}
+{%-       do bug('unreachable') %}
 {%-     endif %}
 
 {#-     driver-specific part #}
-- 
2.30.9