@Override public Consumer createConsumer(final Processor processor) throws Exception { String dataType = JamodUriResolver.getDataTypeFromUri(modbusURI); ModbusPollingConsumer consumer; if ("discreteInputs".equalsIgnoreCase(dataType)) { consumer = new DiscreteInputsPollingConsumer(this, processor); } else if ("coils".equalsIgnoreCase(dataType)) { consumer = new DiscreteOutputsPollingConsumer(this, processor); } else if ("registers".equalsIgnoreCase(dataType)) { consumer = new RegistersPollingConsumer(this, processor); } else if ("register".equalsIgnoreCase(dataType)) { consumer = new RegisterPollingConsumer(this, processor); } else if ("inputRegisters".equalsIgnoreCase(dataType)) { consumer = new InputRegistersPollingConsumer(this, processor); } else if ("inputRegister".equalsIgnoreCase(dataType)) { consumer = new InputRegisterPollingConsumer(this, processor); } else { throw new IllegalArgumentException( MessageFormat.format("Unsupported data type: {0}", dataType)); } consumer.setReferenceAddress(JamodUriResolver.getReferenceFromUri(modbusURI)); int delay = component.getAndRemoveParameter(parameters, "delay", Integer.class, Integer.valueOf(500)); consumer.setDelay(delay); int initialDelay = component.getAndRemoveParameter( parameters, "initialDelay", Integer.class, Integer.valueOf(500)); consumer.setInitialDelay(initialDelay); int count = component.getAndRemoveParameter(parameters, "count", Integer.class, Integer.valueOf(1)); consumer.setCount(count); boolean changesOnly = component.getAndRemoveParameter(parameters, "changesOnly", Boolean.class, Boolean.FALSE); consumer.setChangesOnly(changesOnly); int slaveId = component.getAndRemoveParameter(parameters, SLAVE_ID, Integer.class, 0); consumer.setSlaveId(slaveId); return consumer; }
/** * Returns {@code null}. * * @return {@code null} * @throws Exception never */ public ModbusProducer createProducer() throws Exception { String dataType = JamodUriResolver.getDataTypeFromUri(modbusURI); ModbusProducer producer; if ("coils".equalsIgnoreCase(dataType)) { producer = new DiscreteOutputsProducer(this); } else if ("registers".equalsIgnoreCase(dataType)) { producer = new RegistersProducer(this); } else { throw new IllegalArgumentException( MessageFormat.format("Unsupported data type: {0}", dataType)); } producer.setReferenceAddress(JamodUriResolver.getReferenceFromUri(modbusURI)); int slaveId = component.getAndRemoveParameter(parameters, SLAVE_ID, Integer.class, 0); producer.setSlaveId(slaveId); return producer; }