Laelaps  2.3.5
RoadNarrows Robotics Small Outdoor Mobile Robot Project
laelaps_speed.application Class Reference

Laelaps diagnositcs application class. More...

Public Member Functions

def __init__ (self)
 Constructor.
 
def printUsageErr (self, emsg)
 Print usage error. More...
 
def printUsage (self)
 Print Command-Line Usage Message. More...
 
def getOptions (self, argv=None, kwargs)
 Get command-line options. More...
 
def run (self, argv=None, kwargs)
 Run application. More...
 

Public Attributes

 m_win
 
 kwargs
 

Detailed Description

Laelaps diagnositcs application class.

Definition at line 376 of file laelaps_speed.py.

Member Function Documentation

def laelaps_speed.application.getOptions (   self,
  argv = None,
  kwargs 
)

Get command-line options.

Parameters
argvArgument list. If not None, then overrides command-line arguments.
[out]kwargsKeyword argument list.
Returns
Parsed keyword arguments.

Definition at line 430 of file laelaps_speed.py.

References laelaps_sane.application._Argv0, laelaps_speed.application._Argv0, laelaps_diag.application._Argv0, laelaps_init.application._Argv0, laelaps_sane.application.printUsage(), laelaps_speed.application.printUsage(), laelaps_diag.application.printUsage(), laelaps_init.application.printUsage(), laelaps_sane.application.printUsageErr(), laelaps_speed.application.printUsageErr(), laelaps_diag.application.printUsageErr(), and laelaps_init.application.printUsageErr().

Referenced by laelaps_speed.application.run(), and laelaps_tune_motors.application.run().

430  def getOptions(self, argv=None, **kwargs):
431  if argv is None:
432  argv = sys.argv
433 
434  self._Argv0 = os.path.basename(kwargs.get('argv0', __file__))
435 
436  # defaults
437  kwargs['debug'] = False
438  kwargs['fake'] = False
439 
440  # parse command-line options
441  try:
442  opts, args = getopt.getopt(argv[1:], "f?h",
443  ['help', 'fake', ''])
444  except getopt.error, msg:
445  raise usage(msg)
446  for opt, optarg in opts:
447  if opt in ('-f', '--fake'):
448  kwargs['fake'] = True
449  elif opt in ('-h', '--help', '-?'):
450  self.printUsage()
451  sys.exit(0)
452 
453  if len(args) < 1:
454  self.printUsageErr("No motor specified.")
455  sys.exit(128)
456  elif len(args) < 2:
457  self.printUsageErr("No speed specified.")
458  sys.exit(128)
459 
460  kwargs['motor'] = None
461  try:
462  i = int(args[0])
463  if (i >= 0) and (i < len(MotorNames)):
464  kwargs['motor'] = MotorNames[i]
465  except ValueError:
466  try:
467  i = MotorNames.index(args[0])
468  kwargs['motor'] = args[0]
469  except ValueError:
470  pass
471 
472  if kwargs['motor'] is None:
473  self.printUsageErr("{0}: Not a motor.".format(args[0]))
474  sys.exit(128)
475 
476  try:
477  kwargs['speed'] = int(args[1])
478  except ValueError:
479  self.printUsageErr("%s: Not an integer." % (args[1]))
480  sys.exit(128)
481 
482  return kwargs
483 
def printUsageErr(self, emsg)
Print usage error.
def getOptions(self, argv=None, kwargs)
Get command-line options.
def printUsage(self)
Print Command-Line Usage Message.
Unit test command-line exception class.
def laelaps_speed.application.printUsage (   self)

Print Command-Line Usage Message.

Definition at line 398 of file laelaps_speed.py.

References laelaps_sane.application._Argv0, laelaps_speed.application._Argv0, laelaps_diag.application._Argv0, and laelaps_init.application._Argv0.

Referenced by laelaps_speed.application.getOptions(), and laelaps_tune_motors.application.getOptions().

398  def printUsage(self):
399  print \
400 """
401 usage: %s [OPTIONS] MOTOR SPEED
402  %s --help
403 
404 Run Laelaps speed test.
405 
406 Options and arguments:
407  --fake : Run diagnostics on fake hardware."
408 -h, --help : Display this help and exit.
409 
410 MOTOR : Motor name/id to test. One of:
411  left_front right_front left_rear right_rear
412  or
413  0 1 2 3
414 SPEED : Signed qpps speed of motor, with positive being forwards.
415 
416 Exit Status:
417  On success, 0. An exit status of 128 indicates usage
418  error.
419 """ % (self._Argv0, self._Argv0)
420 
def printUsage(self)
Print Command-Line Usage Message.
def laelaps_speed.application.printUsageErr (   self,
  emsg 
)

Print usage error.

Parameters
emsgError message string.

Definition at line 390 of file laelaps_speed.py.

References laelaps_sane.application._Argv0, laelaps_speed.application._Argv0, laelaps_diag.application._Argv0, and laelaps_init.application._Argv0.

Referenced by laelaps_speed.application.getOptions().

390  def printUsageErr(self, emsg):
391  if emsg:
392  print "%s: Error: %s" % (self._Argv0, emsg)
393  else:
394  print "%s: Error" % (self._Argv0)
395  print "Try '%s --help' for more information." % (self._Argv0)
396 
def printUsageErr(self, emsg)
Print usage error.
def laelaps_speed.application.run (   self,
  argv = None,
  kwargs 
)

Run application.

Parameters
argvOptional argument list to override command-line arguments.
kwargsOptional keyword argument list.
Returns
Exit code.

Definition at line 492 of file laelaps_speed.py.

References laelaps_sane.application.getOptions(), laelaps_speed.application.getOptions(), laelaps_diag.application.getOptions(), laelaps_init.application.getOptions(), laelaps_sane.Sanity.kwargs, laelaps_diag.DiagMotors.kwargs, laelaps_speed.Speed.kwargs, laelaps_sane.application.kwargs, laelaps_diag.DiagToFs.kwargs, laelaps_speed.application.kwargs, laelaps_diag.DiagImu.kwargs, laelaps_diag.DiagWatchdog.kwargs, and laelaps_diag.application.kwargs.

492  def run(self, argv=None, **kwargs):
493 
494  # parse command-line options and arguments
495  try:
496  self.kwargs = self.getOptions(argv, **kwargs)
497  except usage, e:
498  print e.msg
499  return 128
500 
501  en = MotorCtlrEnable()
502  en.enable()
503 
504  go = Speed(self.kwargs)
505  go.run(en.keepalive)
506 
507  en.cleanup()
508 
509 
510 # ------------------------------------------------------------------------------
511 # main
512 # ------------------------------------------------------------------------------
def getOptions(self, argv=None, kwargs)
Get command-line options.
def run(self, argv=None, kwargs)
Run application.

The documentation for this class was generated from the following file: