[buildout] parts = directory ltelogs lte-ue-lte-config lte-ue-service sdr-busy-promise monitor-base publish-connection-information extends = {{ monitor_template }} eggs-directory = {{ eggs_directory }} develop-eggs-directory = {{ develop_eggs_directory }} offline = true [slap-configuration] recipe = slapos.cookbook:slapconfiguration.serialised computer = {{ slap_connection['computer-id'] }} partition = {{ slap_connection['partition-id'] }} url = {{ slap_connection['server-url'] }} key = {{ slap_connection['key-file'] }} cert = {{ slap_connection['cert-file'] }} configuration.default_dl_earfcn = {{ default_dl_earfcn }} configuration.default_lte_n_rb_dl = {{ default_lte_n_rb_dl }} configuration.default_lte_tx_gain = {{ default_lte_tx_gain }} configuration.default_lte_rx_gain = {{ default_lte_rx_gain }} configuration.default_n_antenna_dl = {{ default_n_antenna_dl }} configuration.default_n_antenna_ul = {{ default_n_antenna_ul }} configuration.default_lte_imsi = {{ default_lte_imsi }} configuration.default_lte_k = {{default_lte_k}} [directory] recipe = slapos.cookbook:mkdirectory software = {{ buildout_directory }} home = ${buildout:directory} etc = ${:home}/etc var = ${:home}/var etc = ${:home}/etc bin = ${:home}/bin tmp = ${:home}/tmp run = ${:var}/run script = ${:etc}/run service = ${:etc}/service promise = ${:etc}/promise log = ${:var}/log [ltelogs] recipe = slapos.recipe.template:jinja2 url = {{ ltelogs_template }} output = ${directory:home}/ltelogs.sh extensions = jinja2.ext.do context = section directory directory {% if slapparameter_dict.get("ue_lte_config_link", None) %} [ue-lte-config-dl] recipe = slapos.recipe.build:download url = {{ slapparameter_dict.get("ue_lte_config_link") }} version = {{ slapparameter_dict.get("ue_lte_config_version") }} offline = false {% endif %} [lte-ue-sh-wrapper] recipe = slapos.recipe.template output = ${directory:bin}/${:_buildout_section_name_} inline = #!/bin/sh {% if not slapparameter_dict.get("testing", False) %} sudo /opt/amarisoft/rm-tmp-lte | true; {{ ue }}/lteue ${directory:etc}/ue.cfg >> ${directory:log}/ue-output.log 2>> ${directory:log}/ue-output.log {% endif %} ### User Equipment (UE) [lte-ue-service] recipe = slapos.cookbook:wrapper init = ${ltelogs:output} ${directory:log}/ue.log; sleep 2 command-line = ${lte-ue-sh-wrapper:output} wrapper-path = ${directory:service}/lte-ue mode = 0775 reserve-cpu = True pidfile = ${directory:run}/ue.pid hash-files = ${lte-ue-lte-config:output} ${lte-ue-sh-wrapper:output} environment = LD_LIBRARY_PATH={{ openssl_location }}/lib AMARISOFT_PATH=/opt/amarisoft/.amarisoft [config-base] recipe = slapos.recipe.template:jinja2 extensions = jinja2.ext.do context = section directory directory section slap_configuration slap-configuration section pub_info publish-connection-information key slapparameter_dict slap-configuration:configuration [lte-ue-lte-config] <= config-base {% if slapparameter_dict.get("ue_lte_config_link", None) %} url = ${ue-lte-config-dl:target} {% else %} url = {{ ue_lte_template }} {% endif %} output = ${directory:etc}/ue.cfg [publish-connection-information] <= monitor-publish recipe = slapos.cookbook:publish.serialised rue_bind_addr = ${slap-configuration:ipv6-random} com_addr = [${slap-configuration:ipv6-random}]:9002 [monitor-instance-parameter] {% if slapparameter_dict.get("name", None) %} monitor-title = {{ slapparameter_dict['name'] | string }} {% endif %} {% if slapparameter_dict.get("monitor-password", None) %} password = {{ slapparameter_dict['monitor-password'] | string }} {% endif %} [sdr-busy-promise-template] recipe = slapos.recipe.template:jinja2 url = {{ sdr_busy_promise }} output = ${directory:etc}/check-sdr-busy.py extensions = jinja2.ext.do context = key slapparameter_dict slap-configuration:configuration # Add custom promise to check if /dev/sdr0 is busy [sdr-busy-promise] recipe = slapos.cookbook:promise.plugin eggs = slapos.core file = ${sdr-busy-promise-template:output} output = ${directory:plugins}/check-sdr-busy.py