Search in sources :

Example 1 with ModbusCacheSlave

use of me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave in project solarthing by wildmountainfarms.

the class TracerModbusRequester method create.

@Override
public DataRequesterResult create(RequestObject requestObject, SuccessReporter successReporter, ModbusSlave modbus) {
    final TracerReadTable read;
    final Runnable reloadCache;
    if (bulkRequest) {
        ModbusCacheSlave modbusCacheSlave = new ModbusCacheSlave(modbus);
        read = new TracerModbusSlaveRead(modbusCacheSlave);
        reloadCache = () -> cacheRegisters(modbusCacheSlave);
    } else {
        read = new TracerModbusSlaveRead(modbus);
        reloadCache = () -> {
        };
    }
    TracerWriteTable write = new TracerModbusSlaveWrite(modbus);
    TracerModbusEnvironment tracerModbusEnvironment = new TracerModbusEnvironment(read, write);
    final NetCatServerHandler netCatServerHandler;
    if (configurationServerConfig == null) {
        netCatServerHandler = null;
    } else {
        try {
            netCatServerHandler = new NetCatServerHandler(configurationServerConfig.getBindAddress(), configurationServerConfig.getPort());
        } catch (IOException e) {
            throw new RuntimeException("Could not create NetCatServerHandler", e);
        }
    }
    return new DataRequesterResult(new ModbusListUpdaterWrapper(new TracerPacketListUpdater(number, read, write, tracerClockOptions, netCatServerHandler == null ? null : new ConnectionHandler(netCatServerHandler), connectionHandlerHasFlushLogic), reloadCache, successReporter, sendErrorPackets, "tracer.error." + number), new AttachToCommandEnvironmentUpdater(Collections.singletonList(tracerModbusEnvironment), attachToCommands::contains));
}
Also used : NetCatServerHandler(me.retrodaredevil.solarthing.netcat.NetCatServerHandler) TracerWriteTable(me.retrodaredevil.solarthing.solar.tracer.TracerWriteTable) TracerPacketListUpdater(me.retrodaredevil.solarthing.program.receiver.TracerPacketListUpdater) ModbusCacheSlave(me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave) TracerModbusSlaveWrite(me.retrodaredevil.solarthing.solar.tracer.modbus.TracerModbusSlaveWrite) IOException(java.io.IOException) TracerModbusSlaveRead(me.retrodaredevil.solarthing.solar.tracer.modbus.TracerModbusSlaveRead) DataRequesterResult(me.retrodaredevil.solarthing.config.request.DataRequesterResult) TracerReadTable(me.retrodaredevil.solarthing.solar.tracer.TracerReadTable) ConnectionHandler(me.retrodaredevil.solarthing.netcat.ConnectionHandler) TracerModbusEnvironment(me.retrodaredevil.solarthing.actions.environment.TracerModbusEnvironment) ModbusListUpdaterWrapper(me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper)

Example 2 with ModbusCacheSlave

use of me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave in project solarthing by wildmountainfarms.

the class RoverMain method doRoverProgram.

private static int doRoverProgram(RoverOption options, RoverProgramRunner runner, @Nullable RegisterCacheHandler registerCacheHandler) {
    IOConfig ioConfig = ConfigUtil.parseIOConfig(options.getIOBundleFile(), RoverReadTable.SERIAL_CONFIG);
    try (ReloadableIOBundle ioBundle = new ReloadableIOBundle(ioConfig::createIOBundle)) {
        ModbusSlaveBus modbus = new IOModbusSlaveBus(ioBundle, new RtuDataEncoder(2000, 20, 4));
        MutableAddressModbusSlave slave = new MutableAddressModbusSlave(options.getModbusAddress(), modbus);
        final RoverReadTable read;
        final Runnable reloadCache;
        if (registerCacheHandler != null) {
            ModbusCacheSlave modbusCacheSlave = new ModbusCacheSlave(slave);
            read = new RoverModbusSlaveRead(modbusCacheSlave);
            reloadCache = () -> registerCacheHandler.cacheRegisters(modbusCacheSlave);
        } else {
            read = new RoverModbusSlaveRead(slave);
            reloadCache = () -> {
            };
        }
        RoverWriteTable write = new RoverModbusSlaveWrite(slave);
        return runner.doProgram(slave, read, write, reloadCache, ioBundle::reload);
    } catch (Exception e) {
        LOGGER.error(SolarThingConstants.SUMMARY_MARKER, "(Fatal)Got exception!", e);
        return SolarThingConstants.EXIT_CODE_CRASH;
    }
}
Also used : RoverModbusSlaveRead(me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead) IOModbusSlaveBus(me.retrodaredevil.io.modbus.IOModbusSlaveBus) ModbusCacheSlave(me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave) IOConfig(me.retrodaredevil.solarthing.config.io.IOConfig) RoverReadTable(me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable) MutableAddressModbusSlave(me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave) RtuDataEncoder(me.retrodaredevil.io.modbus.RtuDataEncoder) RoverModbusSlaveWrite(me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveWrite) ReloadableIOBundle(me.retrodaredevil.solarthing.io.ReloadableIOBundle) IOModbusSlaveBus(me.retrodaredevil.io.modbus.IOModbusSlaveBus) ModbusSlaveBus(me.retrodaredevil.io.modbus.ModbusSlaveBus) RoverWriteTable(me.retrodaredevil.solarthing.solar.renogy.rover.RoverWriteTable)

Example 3 with ModbusCacheSlave

use of me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave in project solarthing by wildmountainfarms.

the class RoverModbusRequester method create.

@Override
public DataRequesterResult create(RequestObject requestObject, SuccessReporter successReporter, ModbusSlave modbus) {
    final RoverReadTable read;
    final Runnable reloadCache;
    if (bulkRequest) {
        ModbusCacheSlave modbusCacheSlave = new ModbusCacheSlave(modbus);
        read = new RoverModbusSlaveRead(modbusCacheSlave);
        reloadCache = () -> cacheRegisters(modbusCacheSlave);
    } else {
        read = new RoverModbusSlaveRead(modbus);
        reloadCache = () -> {
        };
    }
    RoverWriteTable write = new RoverModbusSlaveWrite(modbus);
    RoverModbusEnvironment roverModbusEnvironment = new RoverModbusEnvironment(read, write);
    final NetCatServerHandler netCatServerHandler;
    if (configurationServerConfig == null) {
        netCatServerHandler = null;
    } else {
        try {
            netCatServerHandler = new NetCatServerHandler(configurationServerConfig.getBindAddress(), configurationServerConfig.getPort());
        } catch (IOException e) {
            throw new RuntimeException("Could not create NetCatServerHandler", e);
        }
    }
    return new DataRequesterResult(new ModbusListUpdaterWrapper(new RoverPacketListUpdater(number, read, write, netCatServerHandler == null ? null : new ConnectionHandler(netCatServerHandler)), reloadCache, successReporter, sendErrorPackets, "rover.error." + number), new AttachToCommandEnvironmentUpdater(Collections.singletonList(roverModbusEnvironment), attachToCommands::contains));
}
Also used : RoverModbusSlaveRead(me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead) NetCatServerHandler(me.retrodaredevil.solarthing.netcat.NetCatServerHandler) ModbusCacheSlave(me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave) IOException(java.io.IOException) RoverReadTable(me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable) RoverPacketListUpdater(me.retrodaredevil.solarthing.program.receiver.RoverPacketListUpdater) DataRequesterResult(me.retrodaredevil.solarthing.config.request.DataRequesterResult) RoverModbusEnvironment(me.retrodaredevil.solarthing.actions.environment.RoverModbusEnvironment) ConnectionHandler(me.retrodaredevil.solarthing.netcat.ConnectionHandler) ModbusListUpdaterWrapper(me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper) RoverModbusSlaveWrite(me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveWrite) RoverWriteTable(me.retrodaredevil.solarthing.solar.renogy.rover.RoverWriteTable)

Aggregations

ModbusCacheSlave (me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave)3 IOException (java.io.IOException)2 DataRequesterResult (me.retrodaredevil.solarthing.config.request.DataRequesterResult)2 ConnectionHandler (me.retrodaredevil.solarthing.netcat.ConnectionHandler)2 NetCatServerHandler (me.retrodaredevil.solarthing.netcat.NetCatServerHandler)2 ModbusListUpdaterWrapper (me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper)2 RoverReadTable (me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable)2 RoverWriteTable (me.retrodaredevil.solarthing.solar.renogy.rover.RoverWriteTable)2 RoverModbusSlaveRead (me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead)2 RoverModbusSlaveWrite (me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveWrite)2 IOModbusSlaveBus (me.retrodaredevil.io.modbus.IOModbusSlaveBus)1 ModbusSlaveBus (me.retrodaredevil.io.modbus.ModbusSlaveBus)1 RtuDataEncoder (me.retrodaredevil.io.modbus.RtuDataEncoder)1 RoverModbusEnvironment (me.retrodaredevil.solarthing.actions.environment.RoverModbusEnvironment)1 TracerModbusEnvironment (me.retrodaredevil.solarthing.actions.environment.TracerModbusEnvironment)1 IOConfig (me.retrodaredevil.solarthing.config.io.IOConfig)1 ReloadableIOBundle (me.retrodaredevil.solarthing.io.ReloadableIOBundle)1 MutableAddressModbusSlave (me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave)1 RoverPacketListUpdater (me.retrodaredevil.solarthing.program.receiver.RoverPacketListUpdater)1 TracerPacketListUpdater (me.retrodaredevil.solarthing.program.receiver.TracerPacketListUpdater)1