xref: /aosp_15_r20/external/autotest/client/cros/cellular/scpi_shell (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Lint as: python2, python3
2*9c5db199SXin Li# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
3*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
4*9c5db199SXin Li# found in the LICENSE file.
5*9c5db199SXin Li
6*9c5db199SXin Li"""Interact with a SCPI device, checking for errors each time."""
7*9c5db199SXin Li
8*9c5db199SXin Liimport logging
9*9c5db199SXin Liimport sys
10*9c5db199SXin Li
11*9c5db199SXin Lifrom autotest_lib.client.cros.cellular import cellular_system_error
12*9c5db199SXin Lifrom autotest_lib.client.cros.cellular import prologix_scpi_driver
13*9c5db199SXin Lifrom autotest_lib.client.cros.cellular import scpi
14*9c5db199SXin Li
15*9c5db199SXin Li
16*9c5db199SXin Litry:
17*9c5db199SXin Li    [target] = sys.argv[1:]
18*9c5db199SXin Liexcept ValueError:
19*9c5db199SXin Li    print 'usage: %s gpib_host_name' % sys.argv[0]
20*9c5db199SXin Li    # Default to the PXT.
21*9c5db199SXin Li    target = '172.22.50.244'
22*9c5db199SXin Li
23*9c5db199SXin Lilogging.basicConfig(level=logging.INFO)
24*9c5db199SXin Li
25*9c5db199SXin Lidriver = prologix_scpi_driver.PrologixScpiDriver(hostname=target,
26*9c5db199SXin Li                                                 port=1234,
27*9c5db199SXin Li                                                 read_timeout_seconds=1)
28*9c5db199SXin Lis = scpi.Scpi(driver)
29*9c5db199SXin Lis.opc_on_stanza = False
30*9c5db199SXin Li
31*9c5db199SXin Liwhile True:
32*9c5db199SXin Li    try:
33*9c5db199SXin Li        line = raw_input('scpi> ').rstrip()
34*9c5db199SXin Li    except EOFError:
35*9c5db199SXin Li        print
36*9c5db199SXin Li        exit(0)
37*9c5db199SXin Li
38*9c5db199SXin Li    try:
39*9c5db199SXin Li        if line[-1:] == '?':
40*9c5db199SXin Li            try:
41*9c5db199SXin Li                s.Query(line)
42*9c5db199SXin Li            #  Catch everything, we always want to try to recover.
43*9c5db199SXin Li            except Exception:
44*9c5db199SXin Li                print "**************"
45*9c5db199SXin Li                print "Query did not result in any data before the timeout"
46*9c5db199SXin Li                print "**************"
47*9c5db199SXin Li        else:
48*9c5db199SXin Li            try:
49*9c5db199SXin Li                s.SendStanza([line])
50*9c5db199SXin Li            #  Catch everything, we always want to try to recover.
51*9c5db199SXin Li            except Exception as e:
52*9c5db199SXin Li                print "**************"
53*9c5db199SXin Li                print "Command failed"
54*9c5db199SXin Li                print "**************"
55*9c5db199SXin Li
56*9c5db199SXin Li    except cellular_system_error:
57*9c5db199SXin Li        continue
58