Search in sources :

Example 1 with ProtocolStackConfigurer

use of org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer in project plc4x by apache.

the class GenericCANDriver method getStackConfigurer.

@Override
protected ProtocolStackConfigurer<Message> getStackConfigurer(Transport transport) {
    if (!(transport instanceof CANTransport)) {
        throw new PlcRuntimeException("Generic CAN Driver requires CAN Transport instance");
    }
    CANTransport<Message> canTransport = (CANTransport<Message>) transport;
    return CustomProtocolStackConfigurer.builder(canTransport.getMessageType(), canTransport::getMessageInput).withProtocol(cfg -> {
        GenericCANProtocolLogic protocolLogic = new GenericCANProtocolLogic();
        ConfigurationFactory.configure(cfg, protocolLogic);
        return new CANDriverAdapter<>(protocolLogic, canTransport.getMessageType(), canTransport.adapter(), new GenericCANFrameDataHandler(canTransport::getTransportFrameBuilder));
    }).withDriverContext(cfg -> new GenericCANDriverContext()).withPacketSizeEstimator(cfg -> canTransport.getEstimator()).littleEndian().build();
}
Also used : GeneratedDriverBase(org.apache.plc4x.java.spi.connection.GeneratedDriverBase) Configuration(org.apache.plc4x.java.spi.configuration.Configuration) CANTransport(org.apache.plc4x.java.transport.can.CANTransport) CANDriverAdapter(org.apache.plc4x.java.can.adapter.CANDriverAdapter) GenericCANFrameDataHandler(org.apache.plc4x.java.can.generic.transport.GenericCANFrameDataHandler) GenericCANDriverContext(org.apache.plc4x.java.can.generic.context.GenericCANDriverContext) PlcValueHandler(org.apache.plc4x.java.api.value.PlcValueHandler) Message(org.apache.plc4x.java.spi.generation.Message) IEC61131ValueHandler(org.apache.plc4x.java.spi.values.IEC61131ValueHandler) GenericCANProtocolLogic(org.apache.plc4x.java.can.generic.protocol.GenericCANProtocolLogic) GenericCANConfiguration(org.apache.plc4x.java.can.generic.configuration.GenericCANConfiguration) PlcRuntimeException(org.apache.plc4x.java.api.exceptions.PlcRuntimeException) ConfigurationFactory(org.apache.plc4x.java.spi.configuration.ConfigurationFactory) CustomProtocolStackConfigurer(org.apache.plc4x.java.spi.connection.CustomProtocolStackConfigurer) ProtocolStackConfigurer(org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer) BaseOptimizer(org.apache.plc4x.java.spi.optimizer.BaseOptimizer) GenericCANFieldHandler(org.apache.plc4x.java.can.generic.field.GenericCANFieldHandler) Transport(org.apache.plc4x.java.spi.transport.Transport) PlcRuntimeException(org.apache.plc4x.java.api.exceptions.PlcRuntimeException) Message(org.apache.plc4x.java.spi.generation.Message) GenericCANDriverContext(org.apache.plc4x.java.can.generic.context.GenericCANDriverContext) CANDriverAdapter(org.apache.plc4x.java.can.adapter.CANDriverAdapter) GenericCANProtocolLogic(org.apache.plc4x.java.can.generic.protocol.GenericCANProtocolLogic) CANTransport(org.apache.plc4x.java.transport.can.CANTransport) GenericCANFrameDataHandler(org.apache.plc4x.java.can.generic.transport.GenericCANFrameDataHandler)

Example 2 with ProtocolStackConfigurer

use of org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer in project plc4x by apache.

the class CANOpenPlcDriver method getStackConfigurer.

@Override
protected ProtocolStackConfigurer<Message> getStackConfigurer(Transport transport) {
    if (!(transport instanceof CANTransport)) {
        throw new PlcRuntimeException("CANopen driver requires a CAN transport instance");
    }
    final CANTransport<Message> canTransport = (CANTransport<Message>) transport;
    return CustomProtocolStackConfigurer.builder(canTransport.getMessageType(), canTransport::getMessageInput).withProtocol(cfg -> {
        CANOpenProtocolLogic protocolLogic = new CANOpenProtocolLogic();
        ConfigurationFactory.configure(cfg, protocolLogic);
        return new CANDriverAdapter<>(protocolLogic, canTransport.getMessageType(), canTransport.adapter(), new CANOpenFrameDataHandler(canTransport::getTransportFrameBuilder));
    }).withDriverContext(cfg -> new CANOpenDriverContext()).withPacketSizeEstimator(configuration1 -> canTransport.getEstimator()).littleEndian().build();
}
Also used : CANOpenFrameDataHandler(org.apache.plc4x.java.canopen.transport.CANOpenFrameDataHandler) SingleFieldOptimizer(org.apache.plc4x.java.spi.optimizer.SingleFieldOptimizer) PlcList(org.apache.plc4x.java.spi.values.PlcList) GeneratedDriverBase(org.apache.plc4x.java.spi.connection.GeneratedDriverBase) CANOpenDriverContext(org.apache.plc4x.java.canopen.context.CANOpenDriverContext) Configuration(org.apache.plc4x.java.spi.configuration.Configuration) CANTransport(org.apache.plc4x.java.transport.can.CANTransport) PlcValue(org.apache.plc4x.java.api.value.PlcValue) CANDriverAdapter(org.apache.plc4x.java.can.adapter.CANDriverAdapter) CANOpenFieldHandler(org.apache.plc4x.java.canopen.field.CANOpenFieldHandler) PlcValueHandler(org.apache.plc4x.java.api.value.PlcValueHandler) Message(org.apache.plc4x.java.spi.generation.Message) PlcField(org.apache.plc4x.java.api.model.PlcField) IEC61131ValueHandler(org.apache.plc4x.java.spi.values.IEC61131ValueHandler) CANOpenProtocolLogic(org.apache.plc4x.java.canopen.protocol.CANOpenProtocolLogic) PlcRuntimeException(org.apache.plc4x.java.api.exceptions.PlcRuntimeException) CANOpenConfiguration(org.apache.plc4x.java.canopen.configuration.CANOpenConfiguration) ConfigurationFactory(org.apache.plc4x.java.spi.configuration.ConfigurationFactory) CustomProtocolStackConfigurer(org.apache.plc4x.java.spi.connection.CustomProtocolStackConfigurer) ProtocolStackConfigurer(org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer) BaseOptimizer(org.apache.plc4x.java.spi.optimizer.BaseOptimizer) Transport(org.apache.plc4x.java.spi.transport.Transport) PlcRuntimeException(org.apache.plc4x.java.api.exceptions.PlcRuntimeException) CANOpenFrameDataHandler(org.apache.plc4x.java.canopen.transport.CANOpenFrameDataHandler) Message(org.apache.plc4x.java.spi.generation.Message) CANDriverAdapter(org.apache.plc4x.java.can.adapter.CANDriverAdapter) CANOpenProtocolLogic(org.apache.plc4x.java.canopen.protocol.CANOpenProtocolLogic) CANTransport(org.apache.plc4x.java.transport.can.CANTransport) CANOpenDriverContext(org.apache.plc4x.java.canopen.context.CANOpenDriverContext)

Aggregations

PlcRuntimeException (org.apache.plc4x.java.api.exceptions.PlcRuntimeException)2 PlcValueHandler (org.apache.plc4x.java.api.value.PlcValueHandler)2 CANDriverAdapter (org.apache.plc4x.java.can.adapter.CANDriverAdapter)2 Configuration (org.apache.plc4x.java.spi.configuration.Configuration)2 ConfigurationFactory (org.apache.plc4x.java.spi.configuration.ConfigurationFactory)2 CustomProtocolStackConfigurer (org.apache.plc4x.java.spi.connection.CustomProtocolStackConfigurer)2 GeneratedDriverBase (org.apache.plc4x.java.spi.connection.GeneratedDriverBase)2 ProtocolStackConfigurer (org.apache.plc4x.java.spi.connection.ProtocolStackConfigurer)2 Message (org.apache.plc4x.java.spi.generation.Message)2 BaseOptimizer (org.apache.plc4x.java.spi.optimizer.BaseOptimizer)2 Transport (org.apache.plc4x.java.spi.transport.Transport)2 IEC61131ValueHandler (org.apache.plc4x.java.spi.values.IEC61131ValueHandler)2 CANTransport (org.apache.plc4x.java.transport.can.CANTransport)2 PlcField (org.apache.plc4x.java.api.model.PlcField)1 PlcValue (org.apache.plc4x.java.api.value.PlcValue)1 GenericCANConfiguration (org.apache.plc4x.java.can.generic.configuration.GenericCANConfiguration)1 GenericCANDriverContext (org.apache.plc4x.java.can.generic.context.GenericCANDriverContext)1 GenericCANFieldHandler (org.apache.plc4x.java.can.generic.field.GenericCANFieldHandler)1 GenericCANProtocolLogic (org.apache.plc4x.java.can.generic.protocol.GenericCANProtocolLogic)1 GenericCANFrameDataHandler (org.apache.plc4x.java.can.generic.transport.GenericCANFrameDataHandler)1