<p>Piotr Krysik <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12676">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, but someone else must approve
  Piotr Krysik: Looks good to me, approved; Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">apps/grgsm_trx: introduce initial LMS driver support<br><br>Change-Id: Ie983b10d1814906b6e659213f865e58d0f5c08e4<br>---<br>M apps/grgsm_trx<br>M python/trx/CMakeLists.txt<br>A python/trx/radio_if_lms.py<br>3 files changed, 73 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/apps/grgsm_trx b/apps/grgsm_trx</span><br><span>index 7da9e06..fb5a005 100755</span><br><span>--- a/apps/grgsm_trx</span><br><span>+++ b/apps/grgsm_trx</span><br><span>@@ -59,6 +59,8 @@</span><br><span> </span><br><span>               if argv.driver == "uhd":</span><br><span>                   from grgsm.trx.radio_if_uhd import RadioInterfaceUHD as Radio</span><br><span style="color: hsl(120, 100%, 40%);">+         elif argv.driver == "lms":</span><br><span style="color: hsl(120, 100%, 40%);">+                  from grgsm.trx.radio_if_lms import RadioInterfaceLMS as Radio</span><br><span>                else:</span><br><span>                        raise ValueError("Unknown RadioInterface driver '%s'" % argv.driver)</span><br><span> </span><br><span>@@ -117,7 +119,7 @@</span><br><span>     phy_group = parser.add_argument_group("PHY parameters")</span><br><span>    phy_group.add_argument("--driver",</span><br><span>                 dest = "driver", type = str, default = "uhd",</span><br><span style="color: hsl(0, 100%, 40%);">-               choices = ["uhd"],</span><br><span style="color: hsl(120, 100%, 40%);">+          choices = ["uhd", "lms"],</span><br><span>                help = "Set device driver (default %(default)s)")</span><br><span>  phy_group.add_argument("-a", "--args",</span><br><span>           dest = "args", type = str, default = "",</span><br><span>diff --git a/python/trx/CMakeLists.txt b/python/trx/CMakeLists.txt</span><br><span>index dbb3daa9..697687b 100644</span><br><span>--- a/python/trx/CMakeLists.txt</span><br><span>+++ b/python/trx/CMakeLists.txt</span><br><span>@@ -25,6 +25,7 @@</span><br><span>     ctrl_if_bb.py</span><br><span>     radio_if.py</span><br><span>     radio_if_uhd.py</span><br><span style="color: hsl(120, 100%, 40%);">+    radio_if_lms.py</span><br><span>     radio_if_grc.py</span><br><span>     transceiver.py</span><br><span>     dict_toggle_sign.py</span><br><span>diff --git a/python/trx/radio_if_lms.py b/python/trx/radio_if_lms.py</span><br><span>new file mode 100644</span><br><span>index 0000000..b9d771a</span><br><span>--- /dev/null</span><br><span>+++ b/python/trx/radio_if_lms.py</span><br><span>@@ -0,0 +1,69 @@</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python2</span><br><span style="color: hsl(120, 100%, 40%);">+# -*- coding: utf-8 -*-</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# GR-GSM based transceiver</span><br><span style="color: hsl(120, 100%, 40%);">+# Radio interface for Lime devices</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# (C) 2019 by Vadim Yanitskiy <axilirator@gmail.com></span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# All Rights Reserved</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+# it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+# the Free Software Foundation; either version 2 of the License, or</span><br><span style="color: hsl(120, 100%, 40%);">+# (at your option) any later version.</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+# but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+# GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# You should have received a copy of the GNU General Public License along</span><br><span style="color: hsl(120, 100%, 40%);">+# with this program; if not, write to the Free Software Foundation, Inc.,</span><br><span style="color: hsl(120, 100%, 40%);">+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+import limesdr</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+from radio_if import RadioInterface</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+class RadioInterfaceLMS(RadioInterface):</span><br><span style="color: hsl(120, 100%, 40%);">+  lms_len_tag_name = "packet_len"</span><br><span style="color: hsl(120, 100%, 40%);">+     lms_dev_serial = ""</span><br><span style="color: hsl(120, 100%, 40%);">+ lms_dev_ch_mode = 1</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ # Human-readable description</span><br><span style="color: hsl(120, 100%, 40%);">+  def __str__(self):</span><br><span style="color: hsl(120, 100%, 40%);">+            return "LMS"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      @property # Signal processing delay of PHY</span><br><span style="color: hsl(120, 100%, 40%);">+    def phy_proc_delay(self):</span><br><span style="color: hsl(120, 100%, 40%);">+             # FIXME: the current value is measured for USRP B2X0 at 26e6,</span><br><span style="color: hsl(120, 100%, 40%);">+         # we should measure it for LimeSDR separately!</span><br><span style="color: hsl(120, 100%, 40%);">+                return (285.616 + 2 * self.GSM_SYM_PERIOD_uS) * 1e-6</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        def phy_init_source(self):</span><br><span style="color: hsl(120, 100%, 40%);">+            self._phy_src = limesdr.source(self.lms_dev_serial,</span><br><span style="color: hsl(120, 100%, 40%);">+                   self.lms_dev_ch_mode, "")</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+         self._phy_src.set_sample_rate(self.sample_rate)</span><br><span style="color: hsl(120, 100%, 40%);">+               self._phy_src.set_gain(self.rx_gain, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     def phy_init_sink(self):</span><br><span style="color: hsl(120, 100%, 40%);">+              self._phy_sink = limesdr.sink(self.lms_dev_serial,</span><br><span style="color: hsl(120, 100%, 40%);">+                    self.lms_dev_ch_mode, "",</span><br><span style="color: hsl(120, 100%, 40%);">+                   self.lms_len_tag_name)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              self._phy_sink.set_sample_rate(self.sample_rate)</span><br><span style="color: hsl(120, 100%, 40%);">+              self._phy_sink.set_gain(self.tx_gain, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    def phy_set_rx_freq(self, freq):</span><br><span style="color: hsl(120, 100%, 40%);">+              self._phy_src.set_center_freq(freq, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      def phy_set_tx_freq(self, freq):</span><br><span style="color: hsl(120, 100%, 40%);">+              self._phy_sink.set_center_freq(freq, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     def phy_set_rx_gain(self, gain):</span><br><span style="color: hsl(120, 100%, 40%);">+              self._phy_src.set_gain(gain, 0)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     def phy_set_tx_gain(self, gain):</span><br><span style="color: hsl(120, 100%, 40%);">+              self._phy_sink.set_gain(gain, 0)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12676">change 12676</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12676"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: gr-gsm </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: Ie983b10d1814906b6e659213f865e58d0f5c08e4 </div>
<div style="display:none"> Gerrit-Change-Number: 12676 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Piotr Krysik <ptrkrysik@gmail.com> </div>