Exemple #1
0
    def __init__(
            self,
            log_handler=asiodnp3.ConsoleLogger().Create(),
            listener=asiodnp3.PrintingChannelListener().Create(),
            soe_handler=asiodnp3.PrintingSOEHandler().Create(),
            master_application=asiodnp3.DefaultMasterApplication().Create(),
            stack_config=None):

        _log.debug('Creating a DNP3Manager.')
        self.log_handler = log_handler
        self.manager = asiodnp3.DNP3Manager(1, self.log_handler)

        _log.debug('Creating the DNP3 channel, a TCP client.')
        self.retry = asiopal.ChannelRetry().Default()
        self.listener = listener
        self.channel = self.manager.AddTCPClient("tcpclient", FILTERS,
                                                 self.retry, HOST, LOCAL, PORT,
                                                 self.listener)

        _log.debug('Configuring the DNP3 stack.')
        self.stack_config = stack_config
        if not self.stack_config:
            self.stack_config = asiodnp3.MasterStackConfig()
            self.stack_config.master.responseTimeout = openpal.TimeDuration(
            ).Seconds(2)
            self.stack_config.link.RemoteAddr = 10

        _log.debug('Adding the master to the channel.')
        self.soe_handler = soe_handler
        self.master_application = master_application
        self.master = self.channel.AddMaster(
            "master",
            asiodnp3.PrintingSOEHandler().Create(), self.master_application,
            self.stack_config)

        _log.debug('Configuring some scans (periodic reads).')
        # Set up a "slow scan", an infrequent integrity poll that requests events and static data for all classes.
        self.slow_scan = self.master.AddClassScan(
            opendnp3.ClassField().AllClasses(),
            openpal.TimeDuration().Minutes(30),
            opendnp3.TaskConfig().Default())
        # Set up a "fast scan", a relatively-frequent exception poll that requests events and class 1 static data.
        self.fast_scan = self.master.AddClassScan(
            opendnp3.ClassField(opendnp3.ClassField.CLASS_1),
            openpal.TimeDuration().Minutes(1),
            opendnp3.TaskConfig().Default())

        self.channel.SetLogFilters(
            openpal.LogFilters(opendnp3.levels.ALL_COMMS))
        self.master.SetLogFilters(openpal.LogFilters(
            opendnp3.levels.ALL_COMMS))

        _log.debug(
            'Enabling the master. At this point, traffic will start to flow between the Master and Outstations.'
        )
        self.master.Enable()
        time.sleep(5)
 def test_default_constructors(self):
     """
         Create the class object with default values for instance variable and test if the object is not empty.
     """
     assert asiodnp3.ConsoleLogger() is not None
     assert asiodnp3.DefaultListenCallbacks() is not None
     assert asiodnp3.DefaultMasterApplication() is not None
     assert asiodnp3.MasterStackConfig() is not None
     assert asiodnp3.PrintingChannelListener is not None
     assert asiodnp3.PrintingSOEHandler() is not None
     assert asiodnp3.UpdateBuilder() is not None
     assert asiopal.ChannelRetry() is not None
     assert asiopal.ResourceManager() is not None
     assert asiopal.SerialSettings() is not None
     assert asiopal.steady_clock_t() is not None
     assert opendnp3.AnalogCommandEvent() is not None
     assert opendnp3.AnalogOutputInt16() is not None
     assert opendnp3.AnalogOutputInt32() is not None
     assert opendnp3.AnalogOutputFloat32() is not None
     assert opendnp3.AnalogOutputDouble64() is not None
     assert opendnp3.BinaryCommandEvent() is not None
     assert opendnp3.ClassField() is not None
     assert opendnp3.ControlRelayOutputBlock() is not None
     assert opendnp3.DNPTime() is not None
     assert opendnp3.Flags() is not None
     assert opendnp3.GroupVariationID() is not None
     assert opendnp3.IndexedBinary() is not None
     assert opendnp3.IndexedDoubleBitBinary() is not None
     assert opendnp3.IndexedAnalog() is not None
     assert opendnp3.IndexedCounter() is not None
     assert opendnp3.IndexedFrozenCounter() is not None
     assert opendnp3.IndexedBinaryOutputStatus() is not None
     assert opendnp3.IndexedAnalogOutputStatus() is not None
     assert opendnp3.IndexedOctetString() is not None
     assert opendnp3.IndexedTimeAndInterval() is not None
     assert opendnp3.IndexedBinaryCommandEvent() is not None
     assert opendnp3.IndexedAnalogCommandEvent() is not None
     assert opendnp3.IndexedSecurityStat() is not None
     assert opendnp3.IndexedControlRelayOutputBlock() is not None
     assert opendnp3.IndexedAnalogOutputInt16() is not None
     assert opendnp3.IndexedAnalogOutputInt32() is not None
     assert opendnp3.IndexedAnalogOutputFloat32() is not None
     assert opendnp3.IndexedAnalogOutputDouble64() is not None
     assert opendnp3.Binary() is not None
     assert opendnp3.DoubleBitBinary() is not None
     assert opendnp3.BinaryOutputStatus() is not None
     assert opendnp3.Analog() is not None
     assert opendnp3.Counter() is not None
     assert opendnp3.FrozenCounter() is not None
     assert opendnp3.AnalogOutputStatus() is not None
     assert opendnp3.TimeAndInterval() is not None
     assert opendnp3.OctetData() is not None
     assert opendnp3.OctetString() is not None
     assert opendnp3.SecurityStat() is not None
     assert opendnp3.LinkHeaderFields() is not None
     assert opendnp3.LinkStatistics() is not None
     assert opendnp3.CommandSet() is not None
     assert opendnp3.HeaderInfo() is not None
     assert opendnp3.StartStopRangeUint8() is not None
     assert opendnp3.StartStopRangeUint16() is not None
     assert opendnp3.CountUint8() is not None
     assert opendnp3.CountUint16() is not None
     assert opendnp3.HeaderUnion() is not None
     assert opendnp3.Header() is not None
     assert opendnp3.MasterParams() is not None
     assert opendnp3.RestartOperationResult() is not None
     assert opendnp3.TaskConfig() is not None
     assert opendnp3.ApplicationIIN() is not None
     assert opendnp3.DatabaseSizes() is not None
     assert opendnp3.EventBufferConfig() is not None
     assert opendnp3.OutstationConfig() is not None
     assert opendnp3.OutstationParams() is not None
     assert opendnp3.StaticTypeBitField() is not None
     assert opendnp3.StackStatistics() is not None
     assert opendnp3.IINField() is not None
     assert openpal.ArrayBinaryConfig() is not None
     assert openpal.ArrayDoubleBitBinaryConfig() is not None
     assert openpal.ArrayAnalogConfig() is not None
     assert openpal.ArrayCounterConfig() is not None
     assert openpal.ArrayFrozenCounterConfig() is not None
     assert openpal.ArrayBOStatusConfig() is not None
     assert openpal.ArrayAOStatusConfig() is not None
     assert openpal.ArrayTimeAndIntervalConfig() is not None
     assert openpal.ArrayBuffer() is not None
     assert openpal.ArrayViewBinaryConfig() is not None
     assert openpal.ArrayViewDoubleBitBinaryConfig() is not None
     assert openpal.ArrayViewAnalogConfig() is not None
     assert openpal.ArrayViewCounterConfig() is not None
     assert openpal.ArrayViewFrozenCounterConfig() is not None
     assert openpal.ArrayViewBOStatusConfig() is not None
     assert openpal.ArrayViewAOStatusConfig() is not None
     assert openpal.ArrayViewTimeAndIntervalConfig() is not None
     assert openpal.ArrayViewBuffer() is not None
     assert openpal.Buffer() is not None
     assert openpal.RingBuffer16() is not None
     assert openpal.RSlice() is not None
     assert openpal.SecureBuffer() is not None
     assert openpal.SettableRSlice() is not None
     assert openpal.SettableWSlice() is not None
     assert openpal.StaticBuffer4() is not None
     assert openpal.StaticBuffer14() is not None
     assert openpal.StaticBuffer100() is not None
     assert openpal.StaticBuffer292() is not None
     assert openpal.WSlice() is not None
     assert openpal.MonotonicTimestamp() is not None
     assert openpal.TimeDurationBase() is not None
     assert openpal.TimeDuration() is not None
     assert openpal.UTCTimestamp() is not None
     assert openpal.LogFilters() is not None
     assert openpal.Logger() is not None
     assert openpal.SerializerBinary() is not None
     assert openpal.SerializerDoubleBitBinary() is not None
     assert openpal.SerializerBinaryOutputStatus() is not None
     assert openpal.SerializerAnalog() is not None
     assert openpal.SerializerCounter() is not None
     assert openpal.SerializerFrozenCounter() is not None
     assert openpal.SerializerAnalogOutputStatus() is not None
     assert openpal.SerializerTimeAndInterval() is not None
     assert openpal.SerializerAnalogOutputInt16() is not None
     assert openpal.SerializerAnalogOutputInt32() is not None
     assert openpal.SerializerAnalogOutputFloat32() is not None
     assert openpal.SerializerAnalogOutputDouble64() is not None
 def test_passing_args(self):
     """
         Create the class object with defined arguments and test if the object is not empty.
     """
     assert asiodnp3.ConsoleLogger(True) is not None
     assert asiodnp3.DatabaseConfig(opendnp3.DatabaseSizes()) is not None
     assert asiodnp3.DNP3Manager(1) is not None
     assert asiodnp3.DNP3Manager(
         1,
         asiodnp3.ConsoleLogger().Create()) is not None
     assert asiodnp3.OutstationStackConfig(
         opendnp3.DatabaseSizes()) is not None
     assert asiodnp3.X509Info(1, openpal.RSlice(), "test") is not None
     assert asiopal.ChannelRetry(openpal.TimeDuration(),
                                 openpal.TimeDuration()) is not None
     assert asiopal.ChannelRetry(openpal.TimeDuration(),
                                 openpal.TimeDuration(),
                                 asiopal.IOpenDelayStrategy()) is not None
     assert asiopal.Executor(asiopal.IO()) is not None
     assert asiopal.IPEndpoint("127.0.0.1", 502) is not None
     assert asiopal.LoggingConnectionCondition(openpal.Logger()) is not None
     assert asiopal.SerialChannel(asiopal.Executor(
         asiopal.IO())) is not None
     assert asiopal.TCPClient(openpal.Logger(),
                              asiopal.Executor(asiopal.IO()),
                              asiopal.IPEndpoint("127.0.0.1", 502),
                              "adapter") is not None
     assert asiopal.ThreadPool(openpal.Logger(), asiopal.IO(),
                               1) is not None
     assert asiopal.TLSConfig("~/files/peerCert", "~/files/localCert",
                              "~/files/privateKey") is not None
     assert opendnp3.AnalogOutputInt16(
         1, opendnp3.CommandStatus.TIMEOUT) is not None
     assert opendnp3.AnalogOutputInt32(
         1, opendnp3.CommandStatus.FORMAT_ERROR) is not None
     assert opendnp3.AnalogOutputFloat32(
         1, opendnp3.CommandStatus.ALREADY_ACTIVE) is not None
     assert opendnp3.AnalogOutputDouble64(
         1, opendnp3.CommandStatus.LOCAL) is not None
     assert opendnp3.BinaryCommandEvent(opendnp3.Flags()) is not None
     assert opendnp3.BinaryCommandEvent(opendnp3.Flags(),
                                        opendnp3.DNPTime()) is not None
     assert opendnp3.BinaryCommandEvent(
         True, opendnp3.CommandStatus.TOO_MANY_OPS) is not None
     assert opendnp3.BinaryCommandEvent(
         False, opendnp3.CommandStatus.NOT_AUTHORIZED,
         opendnp3.DNPTime()) is not None
     assert opendnp3.ClassField(opendnp3.PointClass.Class0) is not None
     assert opendnp3.ClassField(1) is not None
     assert opendnp3.ClassField(True, False, True, False) is not None
     assert opendnp3.ControlRelayOutputBlock(
         opendnp3.ControlCode.LATCH_ON, 1, 100, 100,
         opendnp3.CommandStatus.AUTOMATION_INHIBIT) is not None
     assert opendnp3.ControlRelayOutputBlock(
         0x1, 1, 100, 100,
         opendnp3.CommandStatus.AUTOMATION_INHIBIT) is not None
     assert opendnp3.GroupVariationID(0x10, 0x1) is not None
     assert opendnp3.IINField(opendnp3.IINBit.ALL_STATIONS) is not None
     assert opendnp3.IndexedBinary(opendnp3.Binary(), 1) is not None
     assert opendnp3.IndexedDoubleBitBinary(opendnp3.DoubleBitBinary(),
                                            1) is not None
     assert opendnp3.IndexedAnalog(opendnp3.Analog(), 1) is not None
     assert opendnp3.IndexedCounter(opendnp3.Counter(), 1) is not None
     assert opendnp3.IndexedFrozenCounter(opendnp3.FrozenCounter(),
                                          1) is not None
     assert opendnp3.IndexedBinaryOutputStatus(
         opendnp3.BinaryOutputStatus(), 1) is not None
     assert opendnp3.IndexedAnalogOutputStatus(
         opendnp3.AnalogOutputStatus(), 1) is not None
     assert opendnp3.IndexedOctetString(opendnp3.OctetString(),
                                        1) is not None
     assert opendnp3.IndexedTimeAndInterval(opendnp3.TimeAndInterval(),
                                            1) is not None
     assert opendnp3.IndexedBinaryCommandEvent(
         opendnp3.BinaryCommandEvent(), 1) is not None
     assert opendnp3.IndexedAnalogCommandEvent(
         opendnp3.AnalogCommandEvent(), 1) is not None
     assert opendnp3.IndexedSecurityStat(opendnp3.SecurityStat(),
                                         1) is not None
     assert opendnp3.IndexedControlRelayOutputBlock(
         opendnp3.ControlRelayOutputBlock(), 1) is not None
     assert opendnp3.IndexedAnalogOutputInt16(opendnp3.AnalogOutputInt16(),
                                              1) is not None
     assert opendnp3.IndexedAnalogOutputInt32(opendnp3.AnalogOutputInt32(),
                                              1) is not None
     assert opendnp3.IndexedAnalogOutputFloat32(
         opendnp3.AnalogOutputFloat32(), 1) is not None
     assert opendnp3.IndexedAnalogOutputDouble64(
         opendnp3.AnalogOutputDouble64(), 1) is not None
     assert opendnp3.Binary(True) is not None
     assert opendnp3.Binary(opendnp3.Flags()) is not None
     assert opendnp3.Binary(opendnp3.Flags(),
                            opendnp3.DNPTime()) is not None
     assert opendnp3.Binary(False, opendnp3.Flags()) is not None
     assert opendnp3.Binary(True, opendnp3.Flags(),
                            opendnp3.DNPTime()) is not None
     assert opendnp3.DoubleBitBinary(opendnp3.DoubleBit(1),
                                     opendnp3.Flags(),
                                     opendnp3.DNPTime()) is not None
     assert opendnp3.BinaryOutputStatus(False, opendnp3.Flags(),
                                        opendnp3.DNPTime()) is not None
     assert opendnp3.Analog(1.2, opendnp3.Flags(),
                            opendnp3.DNPTime()) is not None
     assert opendnp3.Counter(100, opendnp3.Flags(),
                             opendnp3.DNPTime()) is not None
     assert opendnp3.FrozenCounter(2000, opendnp3.Flags(),
                                   opendnp3.DNPTime()) is not None
     assert opendnp3.AnalogOutputStatus(109.68, opendnp3.Flags(),
                                        opendnp3.DNPTime()) is not None
     assert opendnp3.TimeAndInterval(opendnp3.DNPTime(), 10,
                                     0x1) is not None
     assert opendnp3.TimeAndInterval(
         opendnp3.DNPTime(), 10, opendnp3.IntervalUnits.Seconds) is not None
     assert opendnp3.OctetData(openpal.RSlice()) is not None
     assert opendnp3.OctetString(openpal.RSlice()) is not None
     assert opendnp3.SecurityStat(opendnp3.SecurityStatValue(), 0x1,
                                  opendnp3.DNPTime()) is not None
     assert opendnp3.SecurityStat(0x1, 10, 100) is not None
     assert opendnp3.SecurityStat(0x1, 10, 100,
                                  opendnp3.DNPTime()) is not None
     assert opendnp3.LinkConfig(True, True) is not None
     assert opendnp3.LinkConfig(True, False, 100, 10, 10,
                                openpal.TimeDuration(),
                                openpal.TimeDuration()) is not None
     assert opendnp3.LinkHeaderFields(opendnp3.LinkFunction.INVALID, False,
                                      True, False, 10, 10) is not None
     assert opendnp3.LinkStatistics(
         opendnp3.LinkStatisticsChannel(),
         opendnp3.LinkStatisticsParser()) is not None
     assert opendnp3.CommandPointResult(
         100, 10, opendnp3.CommandPointState.INIT,
         opendnp3.CommandStatus.PROCESSING_LIMITED) is not None
     assert opendnp3.HeaderInfo(opendnp3.GroupVariation.Group10Var0,
                                opendnp3.QualifierCode.UINT8_CNT,
                                opendnp3.TimestampMode.SYNCHRONIZED,
                                100) is not None
     assert opendnp3.RestartOperationResult(
         opendnp3.TaskCompletion.SUCCESS,
         openpal.TimeDuration()) is not None
     assert opendnp3.DatabaseSizes(0, 1, 2, 3, 4, 5, 6, 7) is not None
     assert opendnp3.EventBufferConfig(0, 1, 2, 3, 4, 5, 6, 7) is not None
     assert opendnp3.OutstationConfig(
         opendnp3.OutstationParams(),
         opendnp3.EventBufferConfig()) is not None
     assert opendnp3.OutstationParams(opendnp3.IndexMode.Contiguous, 0x3,
                                      openpal.TimeDuration(),
                                      openpal.TimeDuration(),
                                      openpal.TimeDuration(),
                                      openpal.TimeDuration(), 10, 20, True,
                                      opendnp3.StaticTypeBitField(),
                                      opendnp3.ClassField()) is not None
     assert opendnp3.SimpleCommandHandler(
         opendnp3.CommandStatus.SUCCESS) is not None
     assert opendnp3.StaticTypeBitField(1) is not None
     assert opendnp3.StackStatistics(
         opendnp3.StackStatisticsLink(),
         opendnp3.StackStatisticsTransport()) is not None
     assert openpal.ArrayBinaryConfig(1) is not None
     assert openpal.ArrayDoubleBitBinaryConfig(1) is not None
     assert openpal.ArrayAnalogConfig(1) is not None
     assert openpal.ArrayCounterConfig(1) is not None
     assert openpal.ArrayFrozenCounterConfig(1) is not None
     assert openpal.ArrayBOStatusConfig(1) is not None
     assert openpal.ArrayAOStatusConfig(1) is not None
     assert openpal.ArrayTimeAndIntervalConfig(1) is not None
     assert openpal.ArrayBuffer(10) is not None
     assert openpal.Buffer(27) is not None
     assert openpal.Buffer(openpal.RSlice()) is not None
     assert openpal.LinkedListInt(5) is not None
     assert openpal.PairInt(5, 10) is not None
     assert openpal.RSlice(0xFF, 100) is not None
     assert openpal.SecureBuffer(10) is not None
     assert openpal.SecureBuffer(openpal.RSlice()) is not None
     assert openpal.WSlice(0x30, 20) is not None
     assert openpal.MonotonicTimestamp(100) is not None
     assert openpal.UTCTimestamp(900) is not None
     assert openpal.LogEntry("123", openpal.LogFilters(), "location 1",
                             "test") is not None
     assert openpal.LogFilters(20) is not None
     assert openpal.LoggerSettings("234", openpal.LogFilters())
    def test_pure_virtual_functions(self):
        """
            Call the pure virtual function and test if it throws the correct exception error.
        """
        try:
            asiodnp3.IChannel().GetStatistics()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiodnp3.IChannelListener().OnStateChange(
                opendnp3.ChannelState.CLOSED)
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiodnp3.IListenCallbacks().AcceptConnection(123, "test")
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiodnp3.IMasterOperations().SetLogFilters(openpal.LogFilters())
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiodnp3.IMasterScan().Demand()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiodnp3.IMasterSession().GetStackStatistics()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiodnp3.IOutstation().SetRestartIIN()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiodnp3.IStack().Enable()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiopal.IOpenDelayStrategy().GetNextDelay(openpal.TimeDuration(),
                                                      openpal.TimeDuration())
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            asiopal.IResource().Shutdown()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.IVisitorIndexedBinary().OnValue(opendnp3.IndexedBinary())
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.IVisitorDNPTime().OnValue(opendnp3.DNPTime())
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.IVisitorCommandPointResult().OnValue(
                opendnp3.CommandPointResult(
                    100, 10, opendnp3.CommandPointState.INIT,
                    opendnp3.CommandStatus.PROCESSING_LIMITED))
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ICollectionIndexedBinary().Count()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ICollectionDNPTime().Count()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ICollectionCommandPointResult().Count()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ITransactable().Start()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ICommandCollectionControlRelayOutputBlock().Add(
                opendnp3.ControlRelayOutputBlock(), 1)
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ICommandCollectionAnalogOutputDouble64().Add(
                opendnp3.AnalogOutputDouble64(), 1)
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ICommandTaskResult(
                opendnp3.TaskCompletion.SUCCESS).Count()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.IMasterApplication().Now()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ISOEHandler().Process(opendnp3.HeaderInfo(),
                                           opendnp3.ICollectionIndexedBinary())
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ITaskCallback().OnStart()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.ICommandHandler().Start()
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)

        try:
            opendnp3.IUpdateHandler().Update(opendnp3.Binary(True), 1)
        except RuntimeError as err:
            assert "Tried to call pure virtual function" in str(err)
Exemple #5
0
 def do_mast_log_all(self, line):
     """Set the master log level to ALL_COMMS. Command syntax is: mast_log_all"""
     self.application.master.SetLogFilters(
         openpal.LogFilters(opendnp3.levels.ALL_COMMS))
     _log.debug('Master log filtering level is now: {0}'.format(
         opendnp3.levels.ALL_COMMS))
Exemple #6
0
 def do_chan_log_normal(self, line):
     """Set the channel log level to NORMAL. Command syntax is: chan_log_normal"""
     self.application.channel.SetLogFilters(
         openpal.LogFilters(opendnp3.levels.NORMAL))
     print('Channel log filtering level is now: {0}'.format(
         opendnp3.levels.NORMAL))
Exemple #7
0
 def do_chan_log_all(self, line):
     """Set the channel log level to ALL_COMMS. Command syntax is: chan_log_all"""
     self.application.channel.SetLogFilters(
         openpal.LogFilters(opendnp3.levels.ALL_COMMS))
     print('Channel log filtering level is now: {0}'.format(
         opendnp3.levels.ALL_COMMS))