This is an automated email from the ASF dual-hosted git repository.
glcj pushed a commit to branch feature/merlot
in repository https://gitbox.apache.org/repos/asf/plc4x-extras.git
The following commit(s) were added to refs/heads/feature/merlot by this push:
new 2f998814 fix: Moved DBWriterHandler to the API and removed the call to
the DBRecord superclass. (#742)
2f998814 is described below
commit 2f998814350e56c4805983caa462168f4891a833
Author: Lerb123 <[email protected]>
AuthorDate: Wed Jul 8 22:45:27 2026 -0400
fix: Moved DBWriterHandler to the API and removed the call to the DBRecord
superclass. (#742)
feat: New method to find the write handler in PlcGeneralFunction, used in
the class that creates DBRecords
---
.../core/command/MerlotLogRecorderCommand.java | 22 ++
.../apache/plc4x/merlot}/api/DBWriterHandler.java | 6 +-
.../plc4x/merlot/api/PlcGeneralFunction.java | 2 +-
.../merlot/api/impl/PlcGeneralFunctionImpl.java | 22 ++
.../merlot/db/core/DBRecordsManagedService.java | 2 +-
.../apache/plc4x/merlot/db/impl/DBPersistImpl.java | 63 ++--
.../plc4x/merlot/db/impl/DBWriterHandlerImpl.java | 7 +-
.../resources/OSGI-INF/blueprint/db-service.xml | 4 +-
.../plc4x/merlot/drv/s7/core/S7DBAiFactory.java | 2 +-
.../plc4x/merlot/drv/s7/core/S7DBAoFactory.java | 2 +-
.../plc4x/merlot/drv/s7/core/S7DBDiFactory.java | 2 +-
.../plc4x/merlot/drv/s7/core/S7DBDoFactory.java | 2 +-
.../plc4x/merlot/drv/s7/core/S7DBMotorFactory.java | 358 ++++++++++-----------
.../merlot/drv/s7/core/S7DBValveAnalogFactory.java | 2 +-
.../drv/s7/core/S7DBValveSolenoidFactory.java | 2 +-
.../merlot/drv/s7/impl/S7DBWriterHandlerImpl.java | 16 +-
.../OSGI-INF/blueprint/s7-drv-service.xml | 4 +-
17 files changed, 285 insertions(+), 233 deletions(-)
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/core/command/MerlotLogRecorderCommand.java
b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/core/command/MerlotLogRecorderCommand.java
new file mode 100644
index 00000000..a208af27
--- /dev/null
+++
b/plc4j/tools/merlot/org.apache.plc4x.logrecorder/src/main/java/org/apache/plc4x/merlot/logrecorder/core/command/MerlotLogRecorderCommand.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.plc4x.merlot.logrecorder.core.command;
+
+
+public class MerlotLogRecorderCommand{
+ //TODO: Class for viewing log entries stored in the database using the
Tamboui shell
+}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/api/DBWriterHandler.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/DBWriterHandler.java
similarity index 86%
rename from
plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/api/DBWriterHandler.java
rename to
plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/DBWriterHandler.java
index 0cdb7d32..9f74c54b 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/api/DBWriterHandler.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/DBWriterHandler.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.plc4x.merlot.db.api;
+package org.apache.plc4x.merlot.api;
import org.epics.pvdata.monitor.MonitorRequester;
@@ -24,8 +24,8 @@ public interface DBWriterHandler extends MonitorRequester{
- public void putDBRecord(DBRecord dbRecord);
+ public void putDBRecord(Object dbRecord);
- public void removeDBRecord(DBRecord dbRecord);
+ public void removeDBRecord(Object dbRecord);
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/PlcGeneralFunction.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/PlcGeneralFunction.java
index f8d60d41..b0b6b0cb 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/PlcGeneralFunction.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/PlcGeneralFunction.java
@@ -319,5 +319,5 @@ public interface PlcGeneralFunction extends PlcFunction {
*/
public void write(UUID uuid, String tag, String value);
-
+ public Optional<DBWriterHandler> getWriterHandler(String uid);
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/impl/PlcGeneralFunctionImpl.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/impl/PlcGeneralFunctionImpl.java
index ee992e2c..a6ff51a2 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/impl/PlcGeneralFunctionImpl.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.das.api/src/main/java/org/apache/plc4x/merlot/api/impl/PlcGeneralFunctionImpl.java
@@ -30,6 +30,7 @@ import java.util.UUID;
import org.apache.plc4x.java.api.PlcDriver;
import org.apache.plc4x.java.api.types.PlcValueType;
import org.apache.plc4x.java.api.value.PlcValue;
+import org.apache.plc4x.merlot.api.DBWriterHandler;
import org.apache.plc4x.merlot.api.PlcDevice;
import org.apache.plc4x.merlot.api.PlcDeviceFactory;
import org.apache.plc4x.merlot.api.PlcFunction;
@@ -91,6 +92,9 @@ public class PlcGeneralFunctionImpl implements
PlcGeneralFunction {
private static String FILTER_ITEM_UID = "(&(" + Constants.OBJECTCLASS +
"=" + PlcItem.class.getName() + ")" +
"(" + PlcItem.ITEM_UID + "=*))";
+
+ private static String FILTER_WRITE_HANDLER = "(&(" + Constants.OBJECTCLASS
+ "=" + DBWriterHandler.class.getName() + ")"
+ + "(db.record.writehandler.category=*))";
private static final String[] operations = {"getPlcDrivers",
@@ -1017,5 +1021,23 @@ public class PlcGeneralFunctionImpl implements
PlcGeneralFunction {
public void write(UUID uuid, String tag, String value) {
//
}
+
+ @Override
+ public Optional<DBWriterHandler> getWriterHandler(String uid) {
+ try {
+ String strFilter = FILTER_WRITE_HANDLER.replace("*", uid);
+ ServiceReference[] references = bc.getServiceReferences((String)
null, strFilter);
+ if (references != null) {
+ return Optional.of((DBWriterHandler)
bc.getService(references[0]));
+ } else {
+ LOGGER.info("DBWriterHandler type: '" + uid + "' don't
exist.");
+ return null;
+ }
+ } catch (Exception ex) {
+ LOGGER.error("getWriterHandler: " + ex.toString());
+ }
+ return Optional.empty();
+
+ }
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBRecordsManagedService.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBRecordsManagedService.java
index 9f3ab63d..b1877e3b 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBRecordsManagedService.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/core/DBRecordsManagedService.java
@@ -42,7 +42,7 @@ import org.apache.plc4x.merlot.api.PlcGroup;
import org.apache.plc4x.merlot.api.PlcItem;
import org.apache.plc4x.merlot.api.PlcItemListener;
import org.apache.plc4x.merlot.db.api.DBRecord;
-import org.apache.plc4x.merlot.db.api.DBWriterHandler;
+import org.apache.plc4x.merlot.api.DBWriterHandler;
import org.epics.pvdata.pv.PVBoolean;
import org.epics.pvdata.pv.PVStructure;
import org.epics.pvdatabase.PVDatabase;
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/impl/DBPersistImpl.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/impl/DBPersistImpl.java
index 46f70989..34579e14 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/impl/DBPersistImpl.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/impl/DBPersistImpl.java
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.plc4x.merlot.db.impl;
import java.sql.Connection;
@@ -27,13 +26,14 @@ import java.util.Optional;
import java.util.Properties;
import java.util.UUID;
import javax.sql.DataSource;
+import org.apache.plc4x.merlot.api.DBWriterHandler;
import org.apache.plc4x.merlot.api.PlcGeneralFunction;
import org.apache.plc4x.merlot.api.PlcItem;
import org.apache.plc4x.merlot.api.PlcItemListener;
import org.apache.plc4x.merlot.api.PlcSecureBoot;
import org.apache.plc4x.merlot.db.api.DBRecord;
import org.apache.plc4x.merlot.db.api.DBRecordFactory;
-import org.apache.plc4x.merlot.db.api.DBWriterHandler;
+import org.apache.plc4x.merlot.api.PlcDevice;
import org.epics.pvdata.pv.PVBoolean;
import org.epics.pvdata.pv.PVDouble;
import org.epics.pvdata.pv.PVInt;
@@ -49,12 +49,13 @@ import org.osgi.service.event.EventHandler;
import org.osgi.service.jdbc.DataSourceFactory;
import org.slf4j.LoggerFactory;
-public class DBPersistImpl implements EventHandler{
+public class DBPersistImpl implements EventHandler {
+
private static final org.slf4j.Logger LOGGER =
LoggerFactory.getLogger(DBPersistImpl.class);
private static final String DB_URL = "jdbc:sqlite:data/boot.db";
- private static final String SQL_CREATE_TABLE_PVRECORDS =
- "CREATE TABLE IF NOT EXISTS PvRecords("
+ private static final String SQL_CREATE_TABLE_PVRECORDS
+ = "CREATE TABLE IF NOT EXISTS PvRecords("
+ "PvUuId TEXT NOT NULL PRIMARY KEY,"
+ "PvName TEXT,"
+ "PvType TEXT,"
@@ -74,11 +75,11 @@ public class DBPersistImpl implements EventHandler{
+ "PvControlMinStep TEXT,"
+ "Md5 TEXT)";
- private static final String SQL_SELECT_PVRECORDS =
- "SELECT * FROM PvRecords";
+ private static final String SQL_SELECT_PVRECORDS
+ = "SELECT * FROM PvRecords";
- private static final String SQL_INSERT_PVRECORDS =
- "INSERT INTO PvRecords(PvUuId, PvName, PvType, PvId, PvOffset,
PvDescriptor, PvScanTime, pvScanEnable,"
+ private static final String SQL_INSERT_PVRECORDS
+ = "INSERT INTO PvRecords(PvUuId, PvName, PvType, PvId, PvOffset,
PvDescriptor, PvScanTime, pvScanEnable,"
+ "PvWriteEnable, PvDisplayLimitLow, PvDisplayLimitHigh,
PvDisplayDescription, PvDisplayFormat,"
+ "PvDisplayUnits, PvControlLimitLow, PvControlLimitHigh,
PvControlMinStep, Md5)"
+ "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) "
@@ -106,18 +107,18 @@ public class DBPersistImpl implements EventHandler{
private final BundleContext bc;
private final PVDatabase master;
private final PlcGeneralFunction plcGeneralFunction;
- private final DBWriterHandler writerHandler;
+// private final DBWriterHandler writerHandler;
DataSourceFactory dsFactory = null;
Connection dbConnection = null;
public DBPersistImpl(BundleContext bc,
- PVDatabase master,
- PlcGeneralFunction plcGeneralFunction,
- DBWriterHandler writerHandler) {
+ PVDatabase master,
+ PlcGeneralFunction plcGeneralFunction
+ ) {//DBWriterHandler writerHandler
this.bc = bc;
this.master = master;
this.plcGeneralFunction = plcGeneralFunction;
- this.writerHandler = writerHandler;
+// this.writerHandler = writerHandler;
}
public void init() {
@@ -134,8 +135,8 @@ public class DBPersistImpl implements EventHandler{
LOGGER.info("Boot driver name is {}.",
databaseMetaData.getDriverName());
createTables();
//Catalog,Schema, Table pattern,types of tables
- try(ResultSet resultSet = databaseMetaData.getTables(null,
null, null, new String[]{"TABLE"})){
- while(resultSet.next()) {
+ try (ResultSet resultSet =
databaseMetaData.getTables(null, null, null, new String[]{"TABLE"})) {
+ while (resultSet.next()) {
String tableName =
resultSet.getString("TABLE_NAME");
String remarks = resultSet.getString("REMARKS");
}
@@ -149,12 +150,10 @@ public class DBPersistImpl implements EventHandler{
}
}
-
public void destroy() {
LOGGER.info("DESTROY");
}
-
public void bindDataSourceFactory(DataSourceFactory dsFactory) {
this.dsFactory = dsFactory;
init();
@@ -165,13 +164,13 @@ public class DBPersistImpl implements EventHandler{
if (event.getTopic().equals(PlcSecureBoot.EVENT_STORE)) {
try {
store();
- } catch (Exception ex){
+ } catch (Exception ex) {
LOGGER.error(ex.getMessage());
}
} else if (event.getTopic().equals(PlcSecureBoot.EVENT_RESTORE)) {
try {
restore();
- } catch (Exception ex){
+ } catch (Exception ex) {
LOGGER.error(ex.getMessage());
}
}
@@ -185,7 +184,7 @@ public class DBPersistImpl implements EventHandler{
public void store() throws SQLException {
String[] pvNames = master.getRecordNames();
- for (String pvName:pvNames){
+ for (String pvName : pvNames) {
final PVRecord pvRecord = master.findRecord(pvName);
insertPvRecord(pvRecord);
}
@@ -200,7 +199,7 @@ public class DBPersistImpl implements EventHandler{
while (rs.next()) {
- filter = "(db.record.type="+rs.getString("pvType")+")";
+ filter = "(db.record.type=" + rs.getString("pvType") + ")";
ServiceReference[] refs =
bc.getServiceReferences(DBRecordFactory.class.getName(), filter);
@@ -225,14 +224,21 @@ public class DBPersistImpl implements EventHandler{
pvRecord.getPVStructure().getDoubleField("control.minStep").put(Double.parseDouble(rs.getString("PvControlMinStep")));
//Talk to PLC4X
-
Optional<PlcItem> plcItem =
plcGeneralFunction.getPlcItem(rs.getString("PvId"));
if (plcItem.isPresent()) {
if (null ==
master.findRecord(pvRecord.getRecordName())) {
plcItem.get().addItemListener((PlcItemListener)
pvRecord);
master.addRecord(pvRecord);
- writerHandler.putDBRecord((DBRecord) pvRecord);
+
+ //Each record is registered as a service under the
name of the writer, which must be used for that record.
+ String dbRecordDriver = (String)
refs[0].getProperty("db.record.driver");
+
+ Optional<DBWriterHandler> writer =
plcGeneralFunction.getWriterHandler(dbRecordDriver);
+ if (writer.isPresent()) {
+ writer.get().putDBRecord((DBRecord) pvRecord);
+ }
+
} else {
LOGGER.info("DBRecord [?] already exist.",
rs.getString("PvId"));
}
@@ -245,11 +251,13 @@ public class DBPersistImpl implements EventHandler{
}
}
- private void insertPvRecord(PVRecord pvRecord) throws SQLException{
+ private void insertPvRecord(PVRecord pvRecord) throws SQLException {
if (null != dbConnection) {
var query = dbConnection.prepareStatement(SQL_INSERT_PVRECORDS);
- if (pvRecord.getRecordName().contains("_")) return;
+ if (pvRecord.getRecordName().contains("_")) {
+ return;
+ }
PVScalar value = (PVScalar)
pvRecord.getPVStructure().getSubField("value");
@@ -276,7 +284,4 @@ public class DBPersistImpl implements EventHandler{
}
}
-
-
-
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/impl/DBWriterHandlerImpl.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/impl/DBWriterHandlerImpl.java
index 7466d7fb..b74c684e 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/impl/DBWriterHandlerImpl.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/java/org/apache/plc4x/merlot/db/impl/DBWriterHandlerImpl.java
@@ -28,7 +28,7 @@ import java.util.Optional;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.plc4x.merlot.api.PlcItem;
import org.apache.plc4x.merlot.db.api.DBRecord;
-import org.apache.plc4x.merlot.db.api.DBWriterHandler;
+import org.apache.plc4x.merlot.api.DBWriterHandler;
import org.epics.pvdata.copy.CreateRequest;
import org.epics.pvdata.misc.BitSet;
import org.epics.pvdata.monitor.Monitor;
@@ -227,7 +227,8 @@ public class DBWriterHandlerImpl implements DBWriterHandler
{
}
@Override
- public void putDBRecord(DBRecord dbRecord) {
+ public void putDBRecord(Object db) {
+ DBRecord dbRecord = (DBRecord) db;
LOGGER.info("Monitor with fields = {}",
dbRecord.getFieldsToMonitor());
PVStructure request =
createRequest.createRequest(dbRecord.getFieldsToMonitor());
Monitor monitor = MonitorFactory.create(dbRecord, this, request);
@@ -240,7 +241,7 @@ public class DBWriterHandlerImpl implements DBWriterHandler
{
}
@Override
- public void removeDBRecord(DBRecord dbRecord) {
+ public void removeDBRecord(Object db) {
throw new UnsupportedOperationException("Not supported yet.");
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/resources/OSGI-INF/blueprint/db-service.xml
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/resources/OSGI-INF/blueprint/db-service.xml
index 2df4e067..ba3b7062 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/resources/OSGI-INF/blueprint/db-service.xml
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.db/src/main/resources/OSGI-INF/blueprint/db-service.xml
@@ -92,7 +92,7 @@
<argument ref="blueprintBundleContext"/>
<argument ref="DBBean"/>
<argument ref="refPlcGeneralFunction"/>
- <argument ref="DBWriterHandlerImpl"/>
+ <!--<argument ref="DBWriterHandlerImpl"/>-->
</bean>
<reference id="servDataSourceFactory"
@@ -254,7 +254,7 @@
ref="DBChannelProvider"
interface="org.epics.pvaccess.client.ChannelProvider"/>
- <service ref="DBWriterHandlerImpl"
interface="org.apache.plc4x.merlot.db.api.DBWriterHandler">
+ <service ref="DBWriterHandlerImpl"
interface="org.apache.plc4x.merlot.api.DBWriterHandler">
<service-properties>
<entry key="db.record.writehandler.category" value="gen"/>
</service-properties>
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAiFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAiFactory.java
index 2d4e4d4f..962813c2 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAiFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAiFactory.java
@@ -219,7 +219,7 @@ public class S7DBAiFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- super.process();
+// super.process();
}
}
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAoFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAoFactory.java
index af0db1a6..ec7b3f3f 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAoFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBAoFactory.java
@@ -191,7 +191,7 @@ public class S7DBAoFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- super.process();
+// super.process();
}
}
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBDiFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBDiFactory.java
index cde102a7..aca74ecb 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBDiFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBDiFactory.java
@@ -138,7 +138,7 @@ public class S7DBDiFactory extends DBBaseFactory {
{
if (null != plcItem) {
if (write_enable.get()) {
- super.process();
+// super.process();
}
}
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBDoFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBDoFactory.java
index c5ae54fe..2813d47a 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBDoFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBDoFactory.java
@@ -138,7 +138,7 @@ public class S7DBDoFactory extends DBBaseFactory {
if (bPB_Off.get() != out_bPB_Off.get()) {
out_bPB_Off.put(bPB_Off.get());
}
- super.process();
+// super.process();
}
}
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBMotorFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBMotorFactory.java
index d9cf26ab..c4a549bc 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBMotorFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBMotorFactory.java
@@ -39,98 +39,93 @@ import org.epics.pvdata.pv.PVString;
import org.epics.pvdata.pv.PVStructure;
import org.epics.pvdata.pv.ScalarType;
-
public class S7DBMotorFactory extends DBBaseFactory {
-
+
private static FieldCreate fieldCreate = FieldFactory.getFieldCreate();
-
+
@Override
public DBRecord create(String recordName) {
NTScalarBuilder ntScalarBuilder = NTScalar.createBuilder();
FieldBuilder fb = fieldCreate.createFieldBuilder();
-
+
Field fCmd = fb.setId("cmd").
add("iMode", fieldCreate.createScalar(ScalarType.pvShort)).
- add("iErrorCode",
fieldCreate.createScalar(ScalarType.pvShort)).
- add("iStatus", fieldCreate.createScalar(ScalarType.pvShort)).
- add("bPB_ResetError",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bPB_Forward",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bPB_Reverse",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bPB_Stop",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bPBEN_ResetError",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bPBEN_Forward",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bPBEN_Reverse",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bPBEN_Stop",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bForwardOn",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bReverseOn",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bSignalForward",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bSignalReverse",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bError", fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("iErrorCode",
fieldCreate.createScalar(ScalarType.pvShort)).
+ add("iStatus", fieldCreate.createScalar(ScalarType.pvShort)).
+ add("bPB_ResetError",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bPB_Forward",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bPB_Reverse",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bPB_Stop",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bPBEN_ResetError",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bPBEN_Forward",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bPBEN_Reverse",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bPBEN_Stop",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bForwardOn",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bReverseOn",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bSignalForward",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bSignalReverse",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("bError", fieldCreate.createScalar(ScalarType.pvBoolean)).
add("bInterlock",
fieldCreate.createScalar(ScalarType.pvBoolean)).
createStructure();
-
-
- Field fSts = fb.setId("sts").
+
+ Field fSts = fb.setId("sts").
add("bMotorProtectorTripped",
fieldCreate.createScalar(ScalarType.pvBoolean)).
add("bLocalDisconnectOff",
fieldCreate.createScalar(ScalarType.pvBoolean)).
add("bClutchTripped",
fieldCreate.createScalar(ScalarType.pvBoolean)).
add("bNoSignalForward",
fieldCreate.createScalar(ScalarType.pvBoolean)).
add("bNoSignalReverse",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("bMotorNotStopped",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- createStructure();
-
+ add("bMotorNotStopped",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ createStructure();
+
Field fPar = fb.setId("par").
add("tInTimeout", fieldCreate.createScalar(ScalarType.pvInt)).
- add("strTimeout",
fieldCreate.createScalar(ScalarType.pvString)).
- createStructure();
-
-
+ add("strTimeout",
fieldCreate.createScalar(ScalarType.pvString)).
+ createStructure();
+
PVStructure pvStructure = ntScalarBuilder.
- value(ScalarType.pvShort).
- addDescriptor().
- add("id", fieldCreate.createScalar(ScalarType.pvString)).
- add("offset", fieldCreate.createScalar(ScalarType.pvString)).
- add("scan_time", fieldCreate.createScalar(ScalarType.pvString)).
- add("scan_enable", fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("write_enable",
fieldCreate.createScalar(ScalarType.pvBoolean)).
- add("cmd", fCmd).
- add("sts", fSts).
- add("par", fPar).
- addAlarm().
- addTimeStamp().
- addDisplay().
- addControl().
- createPVStructure();
-
- DBRecord dbRecord = new DBS7MotorRecord(recordName,pvStructure);
-
+ value(ScalarType.pvShort).
+ addDescriptor().
+ add("id", fieldCreate.createScalar(ScalarType.pvString)).
+ add("offset", fieldCreate.createScalar(ScalarType.pvString)).
+ add("scan_time",
fieldCreate.createScalar(ScalarType.pvString)).
+ add("scan_enable",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("write_enable",
fieldCreate.createScalar(ScalarType.pvBoolean)).
+ add("cmd", fCmd).
+ add("sts", fSts).
+ add("par", fPar).
+ addAlarm().
+ addTimeStamp().
+ addDisplay().
+ addControl().
+ createPVStructure();
+
+ DBRecord dbRecord = new DBS7MotorRecord(recordName, pvStructure);
+
return dbRecord;
}
-
- class DBS7MotorRecord extends DBRecord implements PlcItemListener {
-
+ class DBS7MotorRecord extends DBRecord implements PlcItemListener {
+
private int BUFFER_SIZE = 14;
private static final String MONITOR_TF_FIELDS = "field(write_enable, "
+ "cmd{iMode, bPB_ResetError, bPB_Forward, bPB_Reverse,"
+ "bPB_Stop, bPBEN_ResetError, bPBEN_Forward, bPBEN_Reverse,"
+ "bPBEN_Stop},"
+ "par{tInTimeout})";
-
-
- private PVShort value;
+
+ private PVShort value;
private PVShort write_value;
- private PVBoolean write_enable;
-
+ private PVBoolean write_enable;
+
//pvCmd
- private PVShort iMode;
- private PVShort iErrorCode;
- private PVShort iStatus;
- private PVBoolean bPB_ResetError;
- private PVBoolean bPB_Forward;
- private PVBoolean bPB_Reverse;
- private PVBoolean bPB_Stop;
- private PVBoolean bPBEN_ResetError;
+ private PVShort iMode;
+ private PVShort iErrorCode;
+ private PVShort iStatus;
+ private PVBoolean bPB_ResetError;
+ private PVBoolean bPB_Forward;
+ private PVBoolean bPB_Reverse;
+ private PVBoolean bPB_Stop;
+ private PVBoolean bPBEN_ResetError;
private PVBoolean bPBEN_Forward;
private PVBoolean bPBEN_Reverse;
private PVBoolean bPBEN_Stop;
@@ -138,111 +133,115 @@ public class S7DBMotorFactory extends DBBaseFactory {
private PVBoolean bReverseOn;
private PVBoolean bSignalForward;
private PVBoolean bSignalReverse;
- private PVBoolean bError;
- private PVBoolean bInterlock;
+ private PVBoolean bError;
+ private PVBoolean bInterlock;
//pvSts
- private PVBoolean bMotorProtectorTripped;
- private PVBoolean bLocalDisconnectOff;
- private PVBoolean bClutchTripped;
- private PVBoolean bNoSignalForward;
+ private PVBoolean bMotorProtectorTripped;
+ private PVBoolean bLocalDisconnectOff;
+ private PVBoolean bClutchTripped;
+ private PVBoolean bNoSignalForward;
private PVBoolean bNoSignalReverse;
- private PVBoolean bMotorNotStopped;
-
+ private PVBoolean bMotorNotStopped;
+
//pvPar
- private PVInt tInTimeout;
- private PVString strTimeout;
-
- private Duration lastDuration;
+ private PVInt tInTimeout;
+ private PVString strTimeout;
+
+ private Duration lastDuration;
byte byTemp;
-
- public DBS7MotorRecord(String recordName,PVStructure pvStructure) {
+
+ public DBS7MotorRecord(String recordName, PVStructure pvStructure) {
super(recordName, pvStructure);
-
+
bFirtsRun = true;
-
+
value = pvStructure.getShortField("value");
write_enable = pvStructure.getBooleanField("write_enable");
write_enable.put(false);
-
+
//Read command values
- PVStructure pvCmd = pvStructure.getStructureField("cmd");
- iMode = pvCmd.getShortField("iMode");
- iErrorCode = pvCmd.getShortField("iErrorCode");
- iStatus = pvCmd.getShortField("iStatus");
- bPB_ResetError = pvCmd.getBooleanField("bPB_ResetError");
- bPB_Forward = pvCmd.getBooleanField("bPB_Forward");
- bPB_Reverse = pvCmd.getBooleanField("bPB_Reverse");
- bPB_Stop = pvCmd.getBooleanField("bPB_Stop");
- bPBEN_ResetError = pvCmd.getBooleanField("bPBEN_ResetError");
- bPBEN_Forward = pvCmd.getBooleanField("bPBEN_Forward");
- bPBEN_Reverse = pvCmd.getBooleanField("bPBEN_Reverse");
- bPBEN_Stop = pvCmd.getBooleanField("bPBEN_Stop");
- bForwardOn = pvCmd.getBooleanField("bForwardOn");
- bReverseOn = pvCmd.getBooleanField("bReverseOn");
- bSignalForward = pvCmd.getBooleanField("bSignalForward");
- bSignalReverse = pvCmd.getBooleanField("bSignalReverse");
- bError = pvCmd.getBooleanField("bError");
- bInterlock = pvCmd.getBooleanField("bInterlock");
-
+ PVStructure pvCmd = pvStructure.getStructureField("cmd");
+ iMode = pvCmd.getShortField("iMode");
+ iErrorCode = pvCmd.getShortField("iErrorCode");
+ iStatus = pvCmd.getShortField("iStatus");
+ bPB_ResetError = pvCmd.getBooleanField("bPB_ResetError");
+ bPB_Forward = pvCmd.getBooleanField("bPB_Forward");
+ bPB_Reverse = pvCmd.getBooleanField("bPB_Reverse");
+ bPB_Stop = pvCmd.getBooleanField("bPB_Stop");
+ bPBEN_ResetError = pvCmd.getBooleanField("bPBEN_ResetError");
+ bPBEN_Forward = pvCmd.getBooleanField("bPBEN_Forward");
+ bPBEN_Reverse = pvCmd.getBooleanField("bPBEN_Reverse");
+ bPBEN_Stop = pvCmd.getBooleanField("bPBEN_Stop");
+ bForwardOn = pvCmd.getBooleanField("bForwardOn");
+ bReverseOn = pvCmd.getBooleanField("bReverseOn");
+ bSignalForward = pvCmd.getBooleanField("bSignalForward");
+ bSignalReverse = pvCmd.getBooleanField("bSignalReverse");
+ bError = pvCmd.getBooleanField("bError");
+ bInterlock = pvCmd.getBooleanField("bInterlock");
+
//Read status values
- PVStructure pvSts = pvStructure.getStructureField("sts");
+ PVStructure pvSts = pvStructure.getStructureField("sts");
bMotorProtectorTripped =
pvSts.getBooleanField("bMotorProtectorTripped");
- bLocalDisconnectOff =
pvSts.getBooleanField("bLocalDisconnectOff");
- bClutchTripped = pvSts.getBooleanField("bClutchTripped");
- bNoSignalForward = pvSts.getBooleanField("bNoSignalForward");
- bNoSignalReverse = pvSts.getBooleanField("bNoSignalReverse");
- bMotorNotStopped = pvSts.getBooleanField("bMotorNotStopped");
-
+ bLocalDisconnectOff = pvSts.getBooleanField("bLocalDisconnectOff");
+ bClutchTripped = pvSts.getBooleanField("bClutchTripped");
+ bNoSignalForward = pvSts.getBooleanField("bNoSignalForward");
+ bNoSignalReverse = pvSts.getBooleanField("bNoSignalReverse");
+ bMotorNotStopped = pvSts.getBooleanField("bMotorNotStopped");
+
//Parameters values
- PVStructure pvPar = pvStructure.getStructureField("par");
- tInTimeout = pvPar.getIntField("tInTimeout");
- strTimeout = pvPar.getStringField("strTimeout");
-
+ PVStructure pvPar = pvStructure.getStructureField("par");
+ tInTimeout = pvPar.getIntField("tInTimeout");
+ strTimeout = pvPar.getStringField("strTimeout");
+
fieldOffsets.clear();
- fieldOffsets.add(0, null);
- fieldOffsets.add(1, null);
- fieldOffsets.add(2, null);
- fieldOffsets.add(3, new ImmutablePair(0,-1));
- fieldOffsets.add(4, new ImmutablePair(6,0));
- fieldOffsets.add(5, new ImmutablePair(6,1));
- fieldOffsets.add(6, new ImmutablePair(6,2));
- fieldOffsets.add(7, new ImmutablePair(6,3));
- fieldOffsets.add(8, new ImmutablePair(6,4));
- fieldOffsets.add(9, new ImmutablePair(6,5));
- fieldOffsets.add(10, new ImmutablePair(6,6));
- fieldOffsets.add(11, new ImmutablePair(6,7));
- fieldOffsets.add(12, new ImmutablePair(7,0));
- fieldOffsets.add(13, new ImmutablePair(7,1));
- fieldOffsets.add(14, new ImmutablePair(7,2));
- fieldOffsets.add(15, new ImmutablePair(7,3));
- fieldOffsets.add(16, new ImmutablePair(7,4));
- fieldOffsets.add(17, new ImmutablePair(7,5));
- fieldOffsets.add(18, null);
- fieldOffsets.add(19, new ImmutablePair(10,-1));
- }
+ fieldOffsets.add(0, null);
+ fieldOffsets.add(1, null);
+ fieldOffsets.add(2, null);
+ fieldOffsets.add(3, new ImmutablePair(0, -1));
+ fieldOffsets.add(4, new ImmutablePair(6, 0));
+ fieldOffsets.add(5, new ImmutablePair(6, 1));
+ fieldOffsets.add(6, new ImmutablePair(6, 2));
+ fieldOffsets.add(7, new ImmutablePair(6, 3));
+ fieldOffsets.add(8, new ImmutablePair(6, 4));
+ fieldOffsets.add(9, new ImmutablePair(6, 5));
+ fieldOffsets.add(10, new ImmutablePair(6, 6));
+ fieldOffsets.add(11, new ImmutablePair(6, 7));
+ fieldOffsets.add(12, new ImmutablePair(7, 0));
+ fieldOffsets.add(13, new ImmutablePair(7, 1));
+ fieldOffsets.add(14, new ImmutablePair(7, 2));
+ fieldOffsets.add(15, new ImmutablePair(7, 3));
+ fieldOffsets.add(16, new ImmutablePair(7, 4));
+ fieldOffsets.add(17, new ImmutablePair(7, 5));
+ fieldOffsets.add(18, null);
+ fieldOffsets.add(19, new ImmutablePair(10, -1));
+ }
/**
- * For other special types of data, adaptation must be made here
- * to write to the PLC.
- *
- * 1. In the first write all fields are written
- * 2. In the second one only the changes are written.
- *
+ * For other special types of data, adaptation must be made here to
+ * write to the PLC.
+ *
+ * 1. In the first write all fields are written 2. In the second one
+ * only the changes are written.
+ *
*/
public void process() {
- if (null != plcItem) {
- if (write_enable.get()) {
+ if (null != plcItem) {
+ if (write_enable.get()) {
try {
+ System.out.println("Strtimeout: "+strTimeout.get());
Duration userTime = Duration.parse(strTimeout.get());
+ System.out.println("UserTime: " + userTime);
if (!lastDuration.equals(userTime)) {
+ System.out.println("Antes");
int writeValue =
S7DBStaticHelper.durationToS7Time(userTime);
- tInTimeout.put(writeValue);
+ System.out.println("Despues");
+ tInTimeout.put(writeValue);
}
} catch (Exception ex) {
LOGGER.info("S7 TIME mal formed.");
- }
- super.process();
+ }
+
}
}
}
@@ -251,57 +250,58 @@ public class S7DBMotorFactory extends DBBaseFactory {
@Override
public void atach(final PlcItem plcItem) {
this.plcItem = plcItem;
- ParseOffset(
this.getPVStructure().getStringField("offset").get());
+ ParseOffset(this.getPVStructure().getStringField("offset").get());
innerBuffer = plcItem.getItemByteBuf().slice(byteOffset,
BUFFER_SIZE);
}
@Override
- public void update() {
+ public void update() {
if (null != plcItem) {
innerBuffer.resetReaderIndex();
-
+
//Update pvCmd
+
if (innerBuffer.getShort(0) != iMode.get()) {
iMode.put(innerBuffer.getShort(0));
}
-
- iErrorCode.put(innerBuffer.getShort(2));
+
+ iErrorCode.put(innerBuffer.getShort(2));
iStatus.put(innerBuffer.getShort(4));
-
- byTemp = innerBuffer.getByte(6);
- if (isBitSet(byTemp, 0) != bPB_ResetError.get()) {
+
+ byTemp = innerBuffer.getByte(6);
+ if (isBitSet(byTemp, 0) != bPB_ResetError.get()) {
bPB_ResetError.put(isBitSet(byTemp, 0));
}
- if (isBitSet(byTemp, 1) != bPB_Forward.get()) {
- bPB_Forward.put(isBitSet(byTemp, 1));
- }
- if (isBitSet(byTemp, 2) != bPB_Reverse.get()) {
- bPB_Reverse.put(isBitSet(byTemp, 2));
- }
- if (isBitSet(byTemp, 3) != bPB_Stop.get()) {
- bPB_Stop.put(isBitSet(byTemp, 3));
+ if (isBitSet(byTemp, 1) != bPB_Forward.get()) {
+ bPB_Forward.put(isBitSet(byTemp, 1));
+ }
+ if (isBitSet(byTemp, 2) != bPB_Reverse.get()) {
+ bPB_Reverse.put(isBitSet(byTemp, 2));
+ }
+ if (isBitSet(byTemp, 3) != bPB_Stop.get()) {
+ bPB_Stop.put(isBitSet(byTemp, 3));
}
if (isBitSet(byTemp, 4) != bPBEN_ResetError.get()) {
- bPBEN_ResetError.put(isBitSet(byTemp, 4));
- }
+ bPBEN_ResetError.put(isBitSet(byTemp, 4));
+ }
if (isBitSet(byTemp, 5) != bPBEN_Forward.get()) {
- bPBEN_Forward.put(isBitSet(byTemp, 5));
- }
+ bPBEN_Forward.put(isBitSet(byTemp, 5));
+ }
if (isBitSet(byTemp, 6) != bPBEN_Reverse.get()) {
- bPBEN_Reverse.put(isBitSet(byTemp, 6));
- }
+ bPBEN_Reverse.put(isBitSet(byTemp, 6));
+ }
if (isBitSet(byTemp, 7) != bPBEN_Stop.get()) {
- bPBEN_Stop.put(isBitSet(byTemp, 7));
- }
+ bPBEN_Stop.put(isBitSet(byTemp, 7));
+ }
- byTemp = innerBuffer.getByte(7);
- bForwardOn.put(isBitSet(byTemp, 0));
+ byTemp = innerBuffer.getByte(7);
+ bForwardOn.put(isBitSet(byTemp, 0));
bReverseOn.put(isBitSet(byTemp, 1));
bSignalForward.put(isBitSet(byTemp, 2));
bSignalReverse.put(isBitSet(byTemp, 3));
- bError.put(isBitSet(byTemp, 4));
- bInterlock.put(isBitSet(byTemp, 5));
-
+ bError.put(isBitSet(byTemp, 4));
+ bInterlock.put(isBitSet(byTemp, 5));
+
//Update pvSts
byTemp = innerBuffer.getByte(8);
bMotorProtectorTripped.put(isBitSet(byTemp, 0));
@@ -309,29 +309,27 @@ public class S7DBMotorFactory extends DBBaseFactory {
bClutchTripped.put(isBitSet(byTemp, 2));
bNoSignalForward.put(isBitSet(byTemp, 3));
bNoSignalReverse.put(isBitSet(byTemp, 4));
- bMotorNotStopped .put(isBitSet(byTemp, 5));
-
+ bMotorNotStopped.put(isBitSet(byTemp, 5));
+
//Update pvPar
if (innerBuffer.getInt(10) != tInTimeout.get()) {
tInTimeout.put(innerBuffer.getInt(10));
lastDuration =
S7DBStaticHelper.s7TimeToDuration(tInTimeout.get());
- strTimeout.put(lastDuration.toString());
+ strTimeout.put(lastDuration.toString());
}
-
if (bFirtsRun) {
bFirtsRun = false;
write_enable.put(true);
- }
+ }
}
}
-
+
@Override
public String getFieldsToMonitor() {
return MONITOR_TF_FIELDS;
}
-
-
+
}
-
+
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBValveAnalogFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBValveAnalogFactory.java
index aeae98b8..b077e74f 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBValveAnalogFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBValveAnalogFactory.java
@@ -201,7 +201,7 @@ public class S7DBValveAnalogFactory extends DBBaseFactory {
} catch (Exception ex) {
LOGGER.info("S7 TIME mal formed.");
}
- super.process();
+// super.process();
}
}
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBValveSolenoidFactory.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBValveSolenoidFactory.java
index 8d0762c7..d99547ae 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBValveSolenoidFactory.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/core/S7DBValveSolenoidFactory.java
@@ -201,7 +201,7 @@ public class S7DBValveSolenoidFactory extends DBBaseFactory
{
} catch (Exception ex) {
LOGGER.info("S7 TIME mal formed.");
}
- super.process();
+
}
}
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7DBWriterHandlerImpl.java
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7DBWriterHandlerImpl.java
index e2e6309d..b4fa6f00 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7DBWriterHandlerImpl.java
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/java/org/apache/plc4x/merlot/drv/s7/impl/S7DBWriterHandlerImpl.java
@@ -19,16 +19,15 @@
package org.apache.plc4x.merlot.drv.s7.impl;
import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufUtil;
import io.netty.buffer.Unpooled;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.plc4x.merlot.api.DBWriterHandler;
import org.apache.plc4x.merlot.api.PlcItem;
import org.apache.plc4x.merlot.db.api.DBRecord;
-import org.apache.plc4x.merlot.db.api.DBWriterHandler;
import org.epics.pvdata.copy.CreateRequest;
import org.epics.pvdata.misc.BitSet;
import org.epics.pvdata.monitor.Monitor;
@@ -120,7 +119,7 @@ public class S7DBWriterHandlerImpl implements
DBWriterHandler {
}
i++;
}
-// LOGGER.info("PASO3...");
+ LOGGER.info("Usando el s7 writer");
// LOGGER.info(structure.toString());
// LOGGER.info(changedBitSet.toString());
// LOGGER.info("Car: {}",changedBitSet.cardinality());
@@ -186,8 +185,12 @@ public class S7DBWriterHandlerImpl implements
DBWriterHandler {
if (fieldOffsets.get(index) != null) {
byteOffset = byteOffset +
fieldOffsets.get(2).left;
}
- bitOffset = ((fieldOffsets.get(index) !=
null)?fieldOffsets.get(index).right.byteValue():(byte) -1);
+ bitOffset = ((fieldOffsets.get(index) !=
null)?((Number)(Object)fieldOffsets.get(index).right).byteValue():(byte) -1);
+ //bitOffset = (fieldOffsets.get(index) != null) ?
((Number)(Object)fieldOffsets.get(index).right).byteValue() : (byte) -1;
+ System.out.println("Buffer: "+byteBuf);
+ System.out.println("Byte: "+byteOffset);
+ System.out.println("Bit: "+bitOffset);
if (optPlcItem.isPresent()) {
optPlcItem.get().itemWrite(byteBuf,
byteOffset, bitOffset);
}
@@ -222,7 +225,8 @@ public class S7DBWriterHandlerImpl implements
DBWriterHandler {
}
@Override
- public void putDBRecord(DBRecord dbRecord) {
+ public void putDBRecord(Object db) {
+ DBRecord dbRecord = (DBRecord) db;
LOGGER.info("Monitor with fields = {}",
dbRecord.getFieldsToMonitor());
try {
PVStructure request =
createRequest.createRequest(dbRecord.getFieldsToMonitor());
@@ -239,7 +243,7 @@ public class S7DBWriterHandlerImpl implements
DBWriterHandler {
}
@Override
- public void removeDBRecord(DBRecord dbRecord) {
+ public void removeDBRecord(Object dbRecord) {
throw new UnsupportedOperationException("Not supported yet.");
}
diff --git
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/resources/OSGI-INF/blueprint/s7-drv-service.xml
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/resources/OSGI-INF/blueprint/s7-drv-service.xml
index 43e40a5a..272ff3cd 100644
---
a/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/resources/OSGI-INF/blueprint/s7-drv-service.xml
+++
b/plc4j/tools/merlot/org.apache.plc4x.merlot.drv.s7/src/main/resources/OSGI-INF/blueprint/s7-drv-service.xml
@@ -227,13 +227,13 @@
</service>
<!-- TODO: se requiere cambiar el identificador, causa problema con DAS.
-->
- <service ref="S7DBWriterHandlerImpl"
interface="org.apache.plc4x.merlot.db.api.DBWriterHandler">
+ <service ref="S7DBWriterHandlerImpl"
interface="org.apache.plc4x.merlot.api.DBWriterHandler">
<service-properties>
<entry key="db.record.writehandler.category" value="s7"/>
</service-properties>
</service>
- <service ref="S7DBWriterHandlerImpl"
interface="org.apache.plc4x.merlot.db.api.DBWriterHandler">
+ <service ref="S7DBWriterHandlerImpl"
interface="org.apache.plc4x.merlot.api.DBWriterHandler">
<service-properties>
<entry key="db.record.writehandler.category" value="s7-light"/>
</service-properties>