Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 import rospy
00038
00039
00040 class AbsractHandCommand(object):
00041 '''
00042 Following Command design pattern, this class represents an abstract
00043 command for hand classes of NEXTAGE OPEN.
00044 '''
00045
00046
00047 def __init__(self, hands, hand, dio_pins):
00048 '''
00049 @type hands: nextage_ros_bridge.base_hands.BaseHands
00050 @type hand: str
00051 @param hand: Side of hand. Variables that are defined in
00052 nextage_ros_bridge.base_hands.BaseHands can be used
00053 { HAND_L, HAND_R }.
00054 @type dio_pins: [int]
00055 @param dio_pins: List of DIO pins that are used in each HandCommand
00056 class. The order is important; it needs be defined
00057 in subclasses.
00058 '''
00059 self._hands = hands
00060 self._hand = hand
00061 self._assign_dio_names(dio_pins)
00062
00063 def execute(self, operation):
00064 '''
00065 Needs overriddedn, otherwise expcetion occurs.
00066
00067 @type operation: str
00068 @param operation: name of the operation.
00069 @rtype: bool
00070 @return: True if dout was writtable to the register. False otherwise.
00071
00072 @raise exception: RuntimeError
00073 '''
00074 msg = 'AbsractHandCommand.execute() not extended.'
00075 rospy.logerr(msg)
00076 raise NotImplementedError(msg)
00077
00078 def _assign_dio_names(self, dio_pins):
00079 '''
00080 It's recommended in the derived classes to re-assign DIO names to
00081 better represent the specific purposes of each DIO pin in there.
00082 Since doing so isn' mandatory, this method doesn't emit error even when
00083 it's not implemented.
00084 @type dio_pins: [int]
00085 @param dio_pins: List of DIO pins that are used in each HandCommand
00086 class. The order is important; it needs be defined
00087 in subclasses.
00088 '''
00089 pass