blob: a27ef91ace5cd4968c51700d364b91dee3f55101 [file] [log] [blame]
#!/usr/bin/env python2
# Copyright 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Profiling tool for N1914A
Because N1914A supports various of sensors, this performance measuring
tool is aimed to better understand the accuracy and speed of different
configuration/ sensor combination.
"""
from __future__ import division
from __future__ import print_function
import argparse
import time
from six.moves import xrange
import factory_common # pylint: disable=unused-import
from cros.factory.test.rf.n1914a import N1914A
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description=('This tool will use REAL format to measure the reading/sec '
'for different sampling modes.'))
parser.add_argument('--port', action='store', type=int, default=1,
help='port where sensor located.')
parser.add_argument('--iteration', action='store', type=int, default=10,
help='iteration of readings per mode.')
parser.add_argument('--host', action='store', required=True,
help='IP of the N1914A.')
args = parser.parse_args()
n1914a = N1914A(args.host)
modes = [('Normal', n1914a.ToNormalMode),
('Double', n1914a.ToDoubleMode),
('Fast', n1914a.ToFastMode)]
# Preparation
print('Preparing device...')
n1914a.SetRealFormat()
# Disable average filter
n1914a.SetAverageFilter(port=args.port, avg_length=None)
n1914a.SetRange(port=args.port, range_setting=1)
n1914a.SetTriggerToFreeRun(port=args.port)
n1914a.SetContinuousTrigger(port=args.port)
time_elapsed = {}
last_measurment = {}
for mode_name, mode_func in modes:
mode_func(port=args.port)
print('Profiling mode %s ...' % mode_name)
start_time = time.time()
for iteration in xrange(args.iteration):
power = n1914a.MeasureOnceInBinary(port=args.port)
time_elapsed[mode_name] = time.time() - start_time
last_measurment[mode_name] = power
# Printing the result.
for mode_name, _ in modes:
print('Mode[%8s]: %8.2f reading/sec, last measurment=%10.7f dBm.' % (
mode_name, args.iteration / time_elapsed[mode_name],
last_measurment[mode_name]))