[conflict] Merge "Update Mini-circuits attenuator controller." am: 0f68ced64e am: 10b0edf3fd am: 5489872139

Original change: https://android-review.googlesource.com/c/platform/tools/test/connectivity/+/2025185

Change-Id: Iaef87f5786a1ee47927cca64318223f80fd6e7b0
diff --git a/acts/framework/acts/controllers/attenuator_lib/minicircuits/http.py b/acts/framework/acts/controllers/attenuator_lib/minicircuits/http.py
index 95fa0ba..e1805f0 100644
--- a/acts/framework/acts/controllers/attenuator_lib/minicircuits/http.py
+++ b/acts/framework/acts/controllers/attenuator_lib/minicircuits/http.py
@@ -111,10 +111,11 @@
             raise ValueError('Attenuator value out of range!', self.max_atten,
                              value)
         # The actual device uses one-based index for channel numbers.
+        adjusted_value = min(max(0, value), self.max_atten)
         att_req = urllib.request.urlopen(
             'http://{}:{}/CHAN:{}:SETATT:{}'.format(self._ip_address,
                                                     self._port, idx + 1,
-                                                    value),
+                                                    adjusted_value),
             timeout=self._timeout)
         att_resp = att_req.read().decode('utf-8').strip()
         if att_resp != '1':
diff --git a/acts/framework/acts/controllers/attenuator_lib/minicircuits/telnet.py b/acts/framework/acts/controllers/attenuator_lib/minicircuits/telnet.py
index 2c85cea..ddda6ab 100644
--- a/acts/framework/acts/controllers/attenuator_lib/minicircuits/telnet.py
+++ b/acts/framework/acts/controllers/attenuator_lib/minicircuits/telnet.py
@@ -37,6 +37,7 @@
     the functionality of AttenuatorInstrument is contingent upon a telnet
     connection being established.
     """
+
     def __init__(self, num_atten=0):
         super(AttenuatorInstrument, self).__init__(num_atten)
         self._tnhelper = _tnhelper._TNHelper(tx_cmd_separator='\r\n',
@@ -116,7 +117,9 @@
             raise ValueError('Attenuator value out of range!', self.max_atten,
                              value)
         # The actual device uses one-based index for channel numbers.
-        self._tnhelper.cmd('CHAN:%s:SETATT:%s' % (idx + 1, value), retry=retry)
+        adjusted_value = min(max(0, value), self.max_atten)
+        self._tnhelper.cmd('CHAN:%s:SETATT:%s' % (idx + 1, adjusted_value),
+                           retry=retry)
 
     def get_atten(self, idx, retry=False):
         """Returns the current attenuation of the attenuator at the given index.