def indication(self, apdu): if _debug: WhoIsIAmApplication._debug("indication %r", apdu) if (isinstance(self._request, WhoIsRequest)) and (isinstance( apdu, IAmRequest)): device_type, device_instance = apdu.iAmDeviceIdentifier if device_type != 'device': raise DecodingError("invalid object type") if (self._request.deviceInstanceRangeLowLimit is not None) and \ (device_instance < self._request.deviceInstanceRangeLowLimit): pass elif (self._request.deviceInstanceRangeHighLimit is not None) and \ (device_instance > self._request.deviceInstanceRangeHighLimit): pass else: # print out the contents sys.stdout.write('pduSource = ' + repr(apdu.pduSource) + '\n') sys.stdout.write('iAmDeviceIdentifier = ' + str(apdu.iAmDeviceIdentifier) + '\n') sys.stdout.write('maxAPDULengthAccepted = ' + str(apdu.maxAPDULengthAccepted) + '\n') sys.stdout.write('segmentationSupported = ' + str(apdu.segmentationSupported) + '\n') sys.stdout.write('vendorID = ' + str(apdu.vendorID) + '\n') sys.stdout.flush() # forward it along MSTPSimpleApplication.indication(self, apdu)
def request(self, apdu): if _debug: WhoIsIAmApplication._debug("request %r", apdu) # save a copy of the request self._request = apdu # forward it along MSTPSimpleApplication.request(self, apdu)
def main(): global this_application # parse the command line arguments args = ConfigArgumentParser(description=__doc__).parse_args() if _debug: _log.debug("initialization") if _debug: _log.debug(" - args: %r", args) # make a device object mstp_args = { '_address': int(args.ini.address), '_interface': str(args.ini.interface), '_max_masters': int(args.ini.max_masters), '_baudrate': int(args.ini.baudrate), '_maxinfo': int(args.ini.maxinfo), } this_device = LocalDeviceObject(ini=args.ini, **mstp_args) if _debug: _log.debug(" - this_device: %r", this_device) # make a simple application this_application = MSTPSimpleApplication(this_device, args.ini.address) # make a console this_console = ReadPropertyMultipleConsoleCmd() if _debug: _log.debug(" - this_console: %r", this_console) # enable sleeping will help with threads enable_sleeping() _log.debug("running") run() _log.debug("fini")
def main(): global this_application # parse the command line arguments args = ConfigArgumentParser(description=__doc__).parse_args() if _debug: _log.debug("initialization") if _debug: _log.debug(" - args: %r", args) # make a device object mstp_args = { '_address': int(args.ini.address), '_interface': str(args.ini.interface), '_max_masters': int(args.ini.max_masters), '_baudrate': int(args.ini.baudrate), '_maxinfo': int(args.ini.maxinfo), } # make a device object this_device = LocalDeviceObject(ini=args.ini, **mstp_args) if _debug: _log.debug(" - this_device: %r", this_device) # make a sample application this_application = MSTPSimpleApplication(this_device, args.ini.address) # make a commandable analog value object, add to the device avo1 = AnalogValueCmdObject(objectIdentifier=("analogValue", 1), objectName="avo1") if _debug: _log.debug(" - avo1: %r", avo1) this_application.add_object(avo1) # make a commandable binary output object, add to the device boo1 = BinaryOutputCmdObject( objectIdentifier=("binaryOutput", 1), objectName="boo1", presentValue="inactive", relinquishDefault="inactive", minimumOnTime=5, # let it warm up minimumOffTime=10, # let it cool off ) if _debug: _log.debug(" - boo1: %r", boo1) this_application.add_object(boo1) # get the current date today = Date().now() # make a commandable date value object, add to the device dvo1 = DateValueCmdObject(objectIdentifier=("dateValue", 1), objectName="dvo1", presentValue=today.value) if _debug: _log.debug(" - dvo1: %r", dvo1) this_application.add_object(dvo1) if _debug: _log.debug("running") run() _log.debug("fini")
def confirmation(self, apdu): if _debug: WhoIsIAmApplication._debug("confirmation %r", apdu) # forward it along MSTPSimpleApplication.confirmation(self, apdu)
def __init__(self, *args): if _debug: WhoIsIAmApplication._debug("__init__ %r", args) MSTPSimpleApplication.__init__(self, *args) # keep track of requests to line up responses self._request = None