diff options
Diffstat (limited to 'src/target/trx_toolkit/ctrl_if.py')
-rw-r--r-- | src/target/trx_toolkit/ctrl_if.py | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/target/trx_toolkit/ctrl_if.py b/src/target/trx_toolkit/ctrl_if.py index 89dfe467..f9d30c19 100644 --- a/src/target/trx_toolkit/ctrl_if.py +++ b/src/target/trx_toolkit/ctrl_if.py @@ -1,10 +1,10 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- # TRX Toolkit # CTRL interface implementation # -# (C) 2016-2017 by Vadim Yanitskiy <axilirator@gmail.com> +# (C) 2016-2020 by Vadim Yanitskiy <axilirator@gmail.com> +# Contributions by sysmocom - s.f.m.c. GmbH # # All Rights Reserved # @@ -17,12 +17,9 @@ # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import logging as log +import time from udp_link import UDPLink @@ -31,6 +28,9 @@ class CTRLInterface(UDPLink): UDPLink.__init__(self, *udp_link_args) log.debug("Init TRXC interface (%s)" % self.desc_link()) + # Do not delay RSP messages by default + self.rsp_delay_ms = 0 + def handle_rx(self): # Read data from socket data, remote = self.sock.recvfrom(128) @@ -61,13 +61,17 @@ class CTRLInterface(UDPLink): # Now we have something like ["TXTUNE", "941600"] return request - def verify_cmd(self, request, cmd, argc): + # If va is True, the command can have variable number of arguments + def verify_cmd(self, request, cmd, argc, va = False): # Check if requested command matches if request[0] != cmd: return False # And has enough arguments - if len(request) - 1 != argc: + req_len = len(request[1:]) + if not va and req_len != argc: + return False + elif va and req_len < argc: return False return True @@ -82,6 +86,9 @@ class CTRLInterface(UDPLink): # Add the response signature, and join back to string response = "RSP " + " ".join(request) + "\0" + # If configured, delay sending the RSP message + if self.rsp_delay_ms > 0: + time.sleep(self.rsp_delay_ms / 1000.0) # Now we have something like "RSP TXTUNE 0 941600" self.sendto(response, remote) |