You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/10/16 13:05:37 UTC
[plc4x] branch feature/plc4go updated (f32a987 -> d7bf2ab)
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a change to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git.
from f32a987 - Fine-tuning of the API for accessing connection meta-data - Started implementing the PlcValues
add 1f51a69 added Apache Con 2020 Videos
add 040ed71 Update blogs-videos-and-slides.adoc
add ea1d8bb Refactor Field Handler Classes
add 28ec2bf Fixed issue in new PlcValues.of function. Is able to correctly pass standard data types now.
add e6df50e Draft for writeFloat in WriteBUffer
add 6db621a Add support for writing floating point.
add 3ca264c Add support for Big Interger write (untested)
add b78b299 replace Modbus fromPLCValue function with staticSerialise functions. (Needs to be fixed to include changes from Data Type PR)
add ccdf77d Merge branch 'develop' into Bug/AddWriteBufferSupportFloatBigInt
add 0b7d25c Moved Modbus over to use the static Serializer. I'll do some more testing tomorrow, but seems to work with Big Ints and Floats
add 28a322b Fixed support for ULINT writing
add 4fdf673 Refactored the BigInteger functions
add 77267cd Merge branch 'Bug/AddWriteBufferSupportFloatBigInt' into RefactorFieldHandler
add 27df4a6 Add support for writing arrays to the hello world write example.
add dd0aab6 Merge branch 'Feature/Hello-World-Write-Arrays' into RefactorFieldHandler
add 45d96cf Implemented staticSerialize write list functions
add cbe9243 Merge branch 'Bug/AddWriteBufferSupportFloatBigInt' into RefactorFieldHandler
add e1c7701 Overrode methods on PlcValue classes and fixed list serializer
add 95dcf27 Add Support for writing lists of booleans
add 90fc914 Modified non Modbus field handler classes to modbus format Wasn't able to test other protocols.
add 8df8207 Reverted Commit 90fc914ec3e72a91af514742fb6dc85a34e99c9f
add af00614 Removed Class Lookup in new PlcValues.of Function Add getPlcDataType to Plcfield Interface to allow generalizing the fieldHandler classes. Add getBooleanArray() to WORD type PlcValue classes. Add fix for staticSerializer when writing lists.
add 5c95e44 Add checking for malformed write requests Modbus When writing arrays if the number of values didn't match the number of addresses a malformed packet was sent. Additional checks have been adedd. Error checking the response for writes has been added so that it reports error codes.
add 58827f9 Merge pull request #192 from hutcheb/RefactorFieldHandler
new 223e0ee Merge branch 'develop' of https://gitbox.apache.org/repos/asf/plc4x into feature/plc4go
new d7bf2ab - Implemented the missing IEC plc-values
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../language/java/JavaLanguageTemplateHelper.java | 16 +-
.../resources/templates/java/data-io-template.ftlh | 14 +-
.../org/apache/plc4x/java/api/model/PlcField.java | 16 +
.../org/apache/plc4x/java/api/value/PlcBOOL.java | 14 +-
.../org/apache/plc4x/java/api/value/PlcBYTE.java | 118 +-
.../org/apache/plc4x/java/api/value/PlcCHAR.java | 111 +-
.../org/apache/plc4x/java/api/value/PlcDINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcDWORD.java | 118 +-
.../org/apache/plc4x/java/api/value/PlcINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcLINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcLREAL.java | 5 -
.../org/apache/plc4x/java/api/value/PlcLWORD.java | 118 +-
.../org/apache/plc4x/java/api/value/PlcREAL.java | 5 -
.../org/apache/plc4x/java/api/value/PlcSINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcString.java | 6 +
.../org/apache/plc4x/java/api/value/PlcUDINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcUINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcULINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcUSINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcValues.java | 123 +-
.../org/apache/plc4x/java/api/value/PlcWCHAR.java | 109 +-
.../org/apache/plc4x/java/api/value/PlcWORD.java | 118 +-
.../apache/plc4x/java/abeth/field/AbEthField.java | 5 +
.../plc4x/java/ads/field/AdsFieldHandler.java | 1063 -----------
.../plc4x/java/ads/field/DirectAdsField.java | 5 +
.../plc4x/java/ads/field/SymbolicAdsField.java | 5 +
.../plc4x/java/eip/readwrite/field/EipField.java | 5 +
.../java/eip/readwrite/field/EipFieldHandler.java | 393 +---
.../readwrite/field/FirmataFieldAnalog.java | 5 +
.../readwrite/field/FirmataFieldDigital.java | 5 +
.../readwrite/field/FirmataFieldHandler.java | 104 -
.../plc4x/java/knxnetip/field/KnxNetIpField.java | 5 +
.../java/knxnetip/field/KnxNetIpFieldHandler.java | 80 -
.../plc4x/java/knxnetip/utils/KnxHelper.java | 11 +-
.../apache/plc4x/java/mock/field/MockField.java | 5 +
.../plc4x/java/modbus/field/ModbusField.java | 5 +
.../java/modbus/field/ModbusFieldHandler.java | 1839 ------------------
.../java/modbus/protocol/ModbusProtocolLogic.java | 337 +---
.../apache/plc4x/java/modbus/ModbusEncodeTest.java | 13 +-
.../plc4x/java/opcua/protocol/OpcuaField.java | 5 +
.../java/opcua/protocol/OpcuaPlcFieldHandler.java | 114 --
.../plc4x/java/opcua/OpcuaPlcDriverTest.java | 2 +-
.../plc4x/java/s7/readwrite/field/S7Field.java | 4 +
.../java/s7/readwrite/field/S7PlcFieldHandler.java | 511 -----
.../plc4x/java/simulated/field/SimulatedField.java | 4 +
.../simulated/field/SimulatedFieldHandler.java | 121 +-
.../simulated/field/SimularedFieldHandlerTest.java | 19 +-
.../examples/helloplc4x/write/HelloPlc4xWrite.java | 8 +-
.../spi/connection/DefaultPlcFieldHandler.java | 1991 +++++++++++++++++++-
.../plc4x/java/spi/generation/WriteBuffer.java | 65 +-
.../java/opm/PlcEntityManagerComplexTest.java | 5 +-
sandbox/plc4go/go.mod | 6 +-
sandbox/plc4go/pkg/plc4go/values/plc_BOOL.go | 8 +
.../pkg/plc4go/values/{plc_list.go => plc_BYTE.go} | 36 +-
.../pkg/plc4go/values/{plc_NULL.go => plc_CHAR.go} | 19 +-
.../pkg/plc4go/values/{plc_NULL.go => plc_DATE.go} | 20 +-
.../values/{plc_NULL.go => plc_DATE_AND_TIME.go} | 19 +-
sandbox/plc4go/pkg/plc4go/values/plc_DWORD.go | 66 +
.../plc4go/values/{plc_NULL.go => plc_LTIME.go} | 22 +-
sandbox/plc4go/pkg/plc4go/values/plc_LWORD.go | 82 +
.../plc4go/values/{plc_NULL.go => plc_STRING.go} | 19 +-
.../pkg/plc4go/values/{plc_NULL.go => plc_TIME.go} | 22 +-
.../values/{plc_list.go => plc_TIME_OF_DAY.go} | 29 +-
.../plc4go/values/{plc_NULL.go => plc_WCHAR.go} | 23 +-
.../plc4go/values/{plc_struct.go => plc_WORD.go} | 52 +-
.../plc4go/values/{plc_NULL.go => plc_WSTRING.go} | 21 +-
sandbox/plc4go/pkg/plc4go/values/plc_value.go | 15 +
.../asciidoc/users/blogs-videos-and-slides.adoc | 3 +
src/site/asciidoc/users/protocols/modbus.adoc | 1 +
69 files changed, 3420 insertions(+), 4708 deletions(-)
copy sandbox/plc4go/pkg/plc4go/values/{plc_list.go => plc_BYTE.go} (59%)
copy sandbox/plc4go/pkg/plc4go/values/{plc_NULL.go => plc_CHAR.go} (76%)
copy sandbox/plc4go/pkg/plc4go/values/{plc_NULL.go => plc_DATE.go} (71%)
copy sandbox/plc4go/pkg/plc4go/values/{plc_NULL.go => plc_DATE_AND_TIME.go} (75%)
create mode 100644 sandbox/plc4go/pkg/plc4go/values/plc_DWORD.go
copy sandbox/plc4go/pkg/plc4go/values/{plc_NULL.go => plc_LTIME.go} (73%)
create mode 100644 sandbox/plc4go/pkg/plc4go/values/plc_LWORD.go
copy sandbox/plc4go/pkg/plc4go/values/{plc_NULL.go => plc_STRING.go} (75%)
copy sandbox/plc4go/pkg/plc4go/values/{plc_NULL.go => plc_TIME.go} (74%)
copy sandbox/plc4go/pkg/plc4go/values/{plc_list.go => plc_TIME_OF_DAY.go} (70%)
copy sandbox/plc4go/pkg/plc4go/values/{plc_NULL.go => plc_WCHAR.go} (72%)
copy sandbox/plc4go/pkg/plc4go/values/{plc_struct.go => plc_WORD.go} (53%)
copy sandbox/plc4go/pkg/plc4go/values/{plc_NULL.go => plc_WSTRING.go} (72%)
[plc4x] 02/02: - Implemented the missing IEC plc-values
Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit d7bf2abcd9c66146171734e6958a28215d853214
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Oct 16 15:05:29 2020 +0200
- Implemented the missing IEC plc-values
---
sandbox/plc4go/go.mod | 6 +-
sandbox/plc4go/pkg/plc4go/values/plc_BOOL.go | 8 +++
.../{go.mod => pkg/plc4go/values/plc_BYTE.go} | 38 ++++++++--
.../{go.mod => pkg/plc4go/values/plc_CHAR.go} | 22 ++++--
.../{go.mod => pkg/plc4go/values/plc_DATE.go} | 23 ++++--
.../plc4go/values/plc_DATE_AND_TIME.go} | 22 ++++--
sandbox/plc4go/pkg/plc4go/values/plc_DWORD.go | 66 +++++++++++++++++
.../{go.mod => pkg/plc4go/values/plc_LTIME.go} | 25 +++++--
sandbox/plc4go/pkg/plc4go/values/plc_LWORD.go | 82 ++++++++++++++++++++++
.../{go.mod => pkg/plc4go/values/plc_STRING.go} | 22 ++++--
.../{go.mod => pkg/plc4go/values/plc_TIME.go} | 25 +++++--
.../plc4go/values/plc_TIME_OF_DAY.go} | 23 ++++--
.../{go.mod => pkg/plc4go/values/plc_WCHAR.go} | 26 +++++--
.../{go.mod => pkg/plc4go/values/plc_WORD.go} | 42 +++++++++--
.../{go.mod => pkg/plc4go/values/plc_WSTRING.go} | 24 +++++--
sandbox/plc4go/pkg/plc4go/values/plc_value.go | 15 ++++
16 files changed, 424 insertions(+), 45 deletions(-)
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/go.mod
index abf31a2..56d5086 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/go.mod
@@ -21,4 +21,8 @@ module plc4x.apache.org/plc4go-modbus-driver/0.8.0
go 1.15
require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+
+require (
+ github.com/golang-collections/go-datastructures v0.0.0-20150211160725-59788d5eb259
+ github.com/icza/bitio v1.0.0
+)
diff --git a/sandbox/plc4go/pkg/plc4go/values/plc_BOOL.go b/sandbox/plc4go/pkg/plc4go/values/plc_BOOL.go
index e962731..651473f 100644
--- a/sandbox/plc4go/pkg/plc4go/values/plc_BOOL.go
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_BOOL.go
@@ -29,10 +29,18 @@ func NewPlcBOOL(value bool) PlcBOOL {
}
}
+func (m PlcBOOL) GetBooleanLength() uint8 {
+ return 1
+}
+
func (m PlcBOOL) GetBoolean() bool {
return m.value
}
+func (m PlcBOOL) GetBooleanArray() []bool {
+ return []bool{m.value}
+}
+
func (m PlcBOOL) GetUint8() uint8 {
if m.value == true {
return 1
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_BYTE.go
similarity index 57%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_BYTE.go
index abf31a2..66982a4 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_BYTE.go
@@ -16,9 +16,39 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+type PlcBYTE struct {
+ PlcUSINT
+}
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+func NewPlcBYTE(value uint8) PlcBYTE {
+ child := PlcUSINT{
+ value: value,
+ }
+ return PlcBYTE{
+ child,
+ }
+}
+
+func (m PlcBYTE) GetBooleanLength() uint8 {
+ return 8
+}
+
+func (m PlcBYTE) GetBoolean() bool {
+ return m.value&1 == 1
+}
+
+func (m PlcBYTE) GetBooleanAt(index uint8) bool {
+ if index > 7 {
+ return false
+ }
+ return m.value>>index&1 == 1
+}
+
+func (m PlcBYTE) GetBooleanArray() []bool {
+ return []bool{m.value&1 == 1, m.value>>1&1 == 1,
+ m.value>>2&1 == 1, m.value>>3&1 == 1,
+ m.value>>4&1 == 1, m.value>>5&1 == 1,
+ m.value>>6&1 == 1, m.value>>7&1 == 1}
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_CHAR.go
similarity index 74%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_CHAR.go
index abf31a2..353439f 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_CHAR.go
@@ -16,9 +16,23 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+type PlcCHAR struct {
+ value []byte
+ plcSimpleValueAdapter
+}
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+func NewPlcCHAR(value uint8) PlcCHAR {
+ return PlcCHAR{
+ value: []byte{value},
+ }
+}
+
+func (m PlcCHAR) IsString() bool {
+ return true
+}
+
+func (m PlcCHAR) GetString() string {
+ return string(m.value)
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_DATE.go
similarity index 69%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_DATE.go
index abf31a2..9fc10a3 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_DATE.go
@@ -16,9 +16,24 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+import "time"
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+type PlcDATE struct {
+ value time.Time
+}
+
+func NewPlcDATE(value time.Time) PlcDATE {
+ safeValue := time.Date(value.Year(), value.Month(), value.Day(), 0, 0, 0, 0, value.Location())
+ return PlcDATE{
+ safeValue,
+ }
+}
+
+func (m PlcDATE) IsTime() bool {
+ return true
+}
+func (m PlcDATE) GetTime() time.Time {
+ return m.value
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_DATE_AND_TIME.go
similarity index 73%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_DATE_AND_TIME.go
index abf31a2..2dd82f8 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_DATE_AND_TIME.go
@@ -16,9 +16,23 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+import "time"
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+type PlcDATEANDTIME struct {
+ value time.Time
+}
+
+func NewPlcDATEANDTIME(value time.Time) PlcDATEANDTIME {
+ return PlcDATEANDTIME{
+ value,
+ }
+}
+
+func (m PlcDATEANDTIME) IsTime() bool {
+ return true
+}
+func (m PlcDATEANDTIME) GetTime() time.Time {
+ return m.value
+}
diff --git a/sandbox/plc4go/pkg/plc4go/values/plc_DWORD.go b/sandbox/plc4go/pkg/plc4go/values/plc_DWORD.go
new file mode 100644
index 0000000..a9fe150
--- /dev/null
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_DWORD.go
@@ -0,0 +1,66 @@
+//
+// 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 values
+
+type PlcDWORD struct {
+ PlcUDINT
+}
+
+func NewPlcDWORD(value uint32) PlcDWORD {
+ child := PlcUDINT{
+ value: value,
+ }
+ return PlcDWORD{
+ child,
+ }
+}
+
+func (m PlcDWORD) GetBooleanLength() uint8 {
+ return 32
+}
+
+func (m PlcDWORD) GetBoolean() bool {
+ return m.value&1 == 1
+}
+
+func (m PlcDWORD) GetBooleanAt(index uint8) bool {
+ if index > 31 {
+ return false
+ }
+ return m.value>>index&1 == 1
+}
+
+func (m PlcDWORD) GetBooleanArray() []bool {
+ return []bool{m.value&1 == 1, m.value>>1&1 == 1,
+ m.value>>2&1 == 1, m.value>>3&1 == 1,
+ m.value>>4&1 == 1, m.value>>5&1 == 1,
+ m.value>>6&1 == 1, m.value>>7&1 == 1,
+ m.value>>8&1 == 1, m.value>>9&1 == 1,
+ m.value>>10&1 == 1, m.value>>11&1 == 1,
+ m.value>>12&1 == 1, m.value>>13&1 == 1,
+ m.value>>14&1 == 1, m.value>>15&1 == 1,
+ m.value>>16&1 == 1, m.value>>17&1 == 1,
+ m.value>>18&1 == 1, m.value>>19&1 == 1,
+ m.value>>20&1 == 1, m.value>>21&1 == 1,
+ m.value>>22&1 == 1, m.value>>23&1 == 1,
+ m.value>>24&1 == 1, m.value>>25&1 == 1,
+ m.value>>26&1 == 1, m.value>>27&1 == 1,
+ m.value>>28&1 == 1, m.value>>29&1 == 1,
+ m.value>>30&1 == 1, m.value>>31&1 == 1}
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_LTIME.go
similarity index 72%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_LTIME.go
index abf31a2..68b394b 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_LTIME.go
@@ -16,9 +16,26 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+import "time"
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+type PlcLTIME struct {
+ PlcULINT
+}
+
+func NewPlcLTIME(value uint64) PlcLTIME {
+ child := PlcULINT{
+ value: value,
+ }
+ return PlcLTIME{
+ child,
+ }
+}
+
+func (m PlcLTIME) IsDuration() bool {
+ return true
+}
+func (m PlcLTIME) GetDuration() time.Duration {
+ return time.Duration(m.value)
+}
diff --git a/sandbox/plc4go/pkg/plc4go/values/plc_LWORD.go b/sandbox/plc4go/pkg/plc4go/values/plc_LWORD.go
new file mode 100644
index 0000000..6096500
--- /dev/null
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_LWORD.go
@@ -0,0 +1,82 @@
+//
+// 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 values
+
+type PlcLWORD struct {
+ PlcULINT
+}
+
+func NewPlcLWORD(value uint64) PlcLWORD {
+ child := PlcULINT{
+ value: value,
+ }
+ return PlcLWORD{
+ child,
+ }
+}
+
+func (m PlcLWORD) GetBooleanLength() uint8 {
+ return 64
+}
+
+func (m PlcLWORD) GetBoolean() bool {
+ return m.value&1 == 1
+}
+
+func (m PlcLWORD) GetBooleanAt(index uint8) bool {
+ if index > 63 {
+ return false
+ }
+ return m.value>>index&1 == 1
+}
+
+func (m PlcLWORD) GetBooleanArray() []bool {
+ return []bool{m.value&1 == 1, m.value>>1&1 == 1,
+ m.value>>2&1 == 1, m.value>>3&1 == 1,
+ m.value>>4&1 == 1, m.value>>5&1 == 1,
+ m.value>>6&1 == 1, m.value>>7&1 == 1,
+ m.value>>8&1 == 1, m.value>>9&1 == 1,
+ m.value>>10&1 == 1, m.value>>11&1 == 1,
+ m.value>>12&1 == 1, m.value>>13&1 == 1,
+ m.value>>14&1 == 1, m.value>>15&1 == 1,
+ m.value>>16&1 == 1, m.value>>17&1 == 1,
+ m.value>>18&1 == 1, m.value>>19&1 == 1,
+ m.value>>20&1 == 1, m.value>>21&1 == 1,
+ m.value>>22&1 == 1, m.value>>23&1 == 1,
+ m.value>>24&1 == 1, m.value>>25&1 == 1,
+ m.value>>26&1 == 1, m.value>>27&1 == 1,
+ m.value>>28&1 == 1, m.value>>29&1 == 1,
+ m.value>>30&1 == 1, m.value>>31&1 == 1,
+ m.value>>32&1 == 1, m.value>>33&1 == 1,
+ m.value>>34&1 == 1, m.value>>35&1 == 1,
+ m.value>>36&1 == 1, m.value>>37&1 == 1,
+ m.value>>38&1 == 1, m.value>>39&1 == 1,
+ m.value>>40&1 == 1, m.value>>41&1 == 1,
+ m.value>>42&1 == 1, m.value>>43&1 == 1,
+ m.value>>44&1 == 1, m.value>>45&1 == 1,
+ m.value>>46&1 == 1, m.value>>47&1 == 1,
+ m.value>>48&1 == 1, m.value>>49&1 == 1,
+ m.value>>50&1 == 1, m.value>>51&1 == 1,
+ m.value>>52&1 == 1, m.value>>53&1 == 1,
+ m.value>>54&1 == 1, m.value>>55&1 == 1,
+ m.value>>56&1 == 1, m.value>>57&1 == 1,
+ m.value>>58&1 == 1, m.value>>59&1 == 1,
+ m.value>>60&1 == 1, m.value>>61&1 == 1,
+ m.value>>62&1 == 1, m.value>>63&1 == 1}
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_STRING.go
similarity index 74%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_STRING.go
index abf31a2..82d42d9 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_STRING.go
@@ -16,9 +16,23 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+type PlcSTRING struct {
+ value []byte
+ plcSimpleValueAdapter
+}
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+func NewPlcSTRING(value []uint8) PlcSTRING {
+ return PlcSTRING{
+ value: value,
+ }
+}
+
+func (m PlcSTRING) IsString() bool {
+ return true
+}
+
+func (m PlcSTRING) GetString() string {
+ return string(m.value)
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_TIME.go
similarity index 72%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_TIME.go
index abf31a2..d97dbaf 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_TIME.go
@@ -16,9 +16,26 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+import "time"
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+type PlcTIME struct {
+ PlcUDINT
+}
+
+func NewPlcTIME(value uint32) PlcTIME {
+ child := PlcUDINT{
+ value: value,
+ }
+ return PlcTIME{
+ child,
+ }
+}
+
+func (m PlcTIME) IsDuration() bool {
+ return true
+}
+func (m PlcTIME) GetDuration() time.Duration {
+ return time.Duration(m.value)
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_TIME_OF_DAY.go
similarity index 66%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_TIME_OF_DAY.go
index abf31a2..7add3d0 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_TIME_OF_DAY.go
@@ -16,9 +16,24 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+import "time"
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+type PlcTIMEOFDAY struct {
+ value time.Time
+}
+
+func NewPlcTIME_OF_DAY(value time.Time) PlcTIMEOFDAY {
+ safeValue := time.Date(0, 0, 0, value.Hour(), value.Minute(), value.Second(), value.Nanosecond(), value.Location())
+ return PlcTIMEOFDAY{
+ safeValue,
+ }
+}
+
+func (m PlcTIMEOFDAY) IsTime() bool {
+ return true
+}
+func (m PlcTIMEOFDAY) GetTime() time.Time {
+ return m.value
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_WCHAR.go
similarity index 71%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_WCHAR.go
index abf31a2..f719abd 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_WCHAR.go
@@ -16,9 +16,27 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+import (
+ "unicode/utf16"
+)
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+type PlcWCHAR struct {
+ value []rune
+ plcSimpleValueAdapter
+}
+
+func NewPlcWCHAR(value uint16) PlcWCHAR {
+ return PlcWCHAR{
+ value: utf16.Decode([]uint16{value}),
+ }
+}
+
+func (m PlcWCHAR) IsString() bool {
+ return true
+}
+
+func (m PlcWCHAR) GetString() string {
+ return string(m.value)
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_WORD.go
similarity index 51%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_WORD.go
index abf31a2..848d19b 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_WORD.go
@@ -16,9 +16,43 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+type PlcWORD struct {
+ PlcUINT
+}
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+func NewPlcWORD(value uint16) PlcWORD {
+ child := PlcUINT{
+ value: value,
+ }
+ return PlcWORD{
+ child,
+ }
+}
+
+func (m PlcWORD) GetBooleanLength() uint8 {
+ return 16
+}
+
+func (m PlcWORD) GetBoolean() bool {
+ return m.value&1 == 1
+}
+
+func (m PlcWORD) GetBooleanAt(index uint8) bool {
+ if index > 15 {
+ return false
+ }
+ return m.value>>index&1 == 1
+}
+
+func (m PlcWORD) GetBooleanArray() []bool {
+ return []bool{m.value&1 == 1, m.value>>1&1 == 1,
+ m.value>>2&1 == 1, m.value>>3&1 == 1,
+ m.value>>4&1 == 1, m.value>>5&1 == 1,
+ m.value>>6&1 == 1, m.value>>7&1 == 1,
+ m.value>>8&1 == 1, m.value>>9&1 == 1,
+ m.value>>10&1 == 1, m.value>>11&1 == 1,
+ m.value>>12&1 == 1, m.value>>13&1 == 1,
+ m.value>>14&1 == 1, m.value>>15&1 == 1}
+}
diff --git a/sandbox/plc4go/go.mod b/sandbox/plc4go/pkg/plc4go/values/plc_WSTRING.go
similarity index 71%
copy from sandbox/plc4go/go.mod
copy to sandbox/plc4go/pkg/plc4go/values/plc_WSTRING.go
index abf31a2..b37b992 100644
--- a/sandbox/plc4go/go.mod
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_WSTRING.go
@@ -16,9 +16,25 @@
// specific language governing permissions and limitations
// under the License.
//
-module plc4x.apache.org/plc4go-modbus-driver/0.8.0
+package values
-go 1.15
+import "unicode/utf16"
-require github.com/sirupsen/logrus v1.7.0
-require github.com/icza/bitio v1.0.0
+type PlcWSTRING struct {
+ value []rune
+ plcSimpleValueAdapter
+}
+
+func NewPlcWSTRING(value []uint16) PlcWSTRING {
+ return PlcWSTRING{
+ value: utf16.Decode(value),
+ }
+}
+
+func (m PlcWSTRING) IsString() bool {
+ return true
+}
+
+func (m PlcWSTRING) GetString() string {
+ return string(m.value)
+}
diff --git a/sandbox/plc4go/pkg/plc4go/values/plc_value.go b/sandbox/plc4go/pkg/plc4go/values/plc_value.go
index b38d30a..b32bc33 100644
--- a/sandbox/plc4go/pkg/plc4go/values/plc_value.go
+++ b/sandbox/plc4go/pkg/plc4go/values/plc_value.go
@@ -29,7 +29,10 @@ type PlcValue interface {
// Boolean
IsBoolean() bool
+ GetBooleanLength() uint8
GetBoolean() bool
+ GetBooleanAt(index uint8) bool
+ GetBooleanArray() []bool
// Integer
IsUint8() bool
@@ -103,9 +106,21 @@ func (m plcValueAdapter) IsNull() bool {
func (m plcValueAdapter) IsBoolean() bool {
return false
}
+func (m plcValueAdapter) GetBooleanLength() uint8 {
+ return 1
+}
func (m plcValueAdapter) GetBoolean() bool {
return false
}
+func (m plcValueAdapter) GetBooleanAt(index uint8) bool {
+ if index == 0 {
+ return m.GetBoolean()
+ }
+ return false
+}
+func (m plcValueAdapter) GetBooleanArray() []bool {
+ return nil
+}
// Integer
func (m plcValueAdapter) IsUint8() bool {
[plc4x] 01/02: Merge branch 'develop' of
https://gitbox.apache.org/repos/asf/plc4x into feature/plc4go
Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/plc4go
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 223e0eeeb47adeee54c872cf8a00192fe7a08abb
Merge: f32a987 58827f9
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri Oct 16 11:52:01 2020 +0200
Merge branch 'develop' of https://gitbox.apache.org/repos/asf/plc4x into feature/plc4go
.../language/java/JavaLanguageTemplateHelper.java | 16 +-
.../resources/templates/java/data-io-template.ftlh | 14 +-
.../org/apache/plc4x/java/api/model/PlcField.java | 16 +
.../org/apache/plc4x/java/api/value/PlcBOOL.java | 14 +-
.../org/apache/plc4x/java/api/value/PlcBYTE.java | 118 +-
.../org/apache/plc4x/java/api/value/PlcCHAR.java | 111 +-
.../org/apache/plc4x/java/api/value/PlcDINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcDWORD.java | 118 +-
.../org/apache/plc4x/java/api/value/PlcINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcLINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcLREAL.java | 5 -
.../org/apache/plc4x/java/api/value/PlcLWORD.java | 118 +-
.../org/apache/plc4x/java/api/value/PlcREAL.java | 5 -
.../org/apache/plc4x/java/api/value/PlcSINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcString.java | 6 +
.../org/apache/plc4x/java/api/value/PlcUDINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcUINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcULINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcUSINT.java | 5 -
.../org/apache/plc4x/java/api/value/PlcValues.java | 123 +-
.../org/apache/plc4x/java/api/value/PlcWCHAR.java | 109 +-
.../org/apache/plc4x/java/api/value/PlcWORD.java | 118 +-
.../apache/plc4x/java/abeth/field/AbEthField.java | 5 +
.../plc4x/java/ads/field/AdsFieldHandler.java | 1063 -----------
.../plc4x/java/ads/field/DirectAdsField.java | 5 +
.../plc4x/java/ads/field/SymbolicAdsField.java | 5 +
.../plc4x/java/eip/readwrite/field/EipField.java | 5 +
.../java/eip/readwrite/field/EipFieldHandler.java | 393 +---
.../readwrite/field/FirmataFieldAnalog.java | 5 +
.../readwrite/field/FirmataFieldDigital.java | 5 +
.../readwrite/field/FirmataFieldHandler.java | 104 -
.../plc4x/java/knxnetip/field/KnxNetIpField.java | 5 +
.../java/knxnetip/field/KnxNetIpFieldHandler.java | 80 -
.../plc4x/java/knxnetip/utils/KnxHelper.java | 11 +-
.../apache/plc4x/java/mock/field/MockField.java | 5 +
.../plc4x/java/modbus/field/ModbusField.java | 5 +
.../java/modbus/field/ModbusFieldHandler.java | 1839 ------------------
.../java/modbus/protocol/ModbusProtocolLogic.java | 337 +---
.../apache/plc4x/java/modbus/ModbusEncodeTest.java | 13 +-
.../plc4x/java/opcua/protocol/OpcuaField.java | 5 +
.../java/opcua/protocol/OpcuaPlcFieldHandler.java | 114 --
.../plc4x/java/opcua/OpcuaPlcDriverTest.java | 2 +-
.../plc4x/java/s7/readwrite/field/S7Field.java | 4 +
.../java/s7/readwrite/field/S7PlcFieldHandler.java | 511 -----
.../plc4x/java/simulated/field/SimulatedField.java | 4 +
.../simulated/field/SimulatedFieldHandler.java | 121 +-
.../simulated/field/SimularedFieldHandlerTest.java | 19 +-
.../examples/helloplc4x/write/HelloPlc4xWrite.java | 8 +-
.../spi/connection/DefaultPlcFieldHandler.java | 1991 +++++++++++++++++++-
.../plc4x/java/spi/generation/WriteBuffer.java | 65 +-
.../java/opm/PlcEntityManagerComplexTest.java | 5 +-
.../asciidoc/users/blogs-videos-and-slides.adoc | 3 +
src/site/asciidoc/users/protocols/modbus.adoc | 1 +
53 files changed, 3053 insertions(+), 4616 deletions(-)