You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2021/03/18 16:55:08 UTC
[plc4x] branch feature/plc4golang-refactor created (now d9bb672)
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a change to branch feature/plc4golang-refactor
in repository https://gitbox.apache.org/repos/asf/plc4x.git.
at d9bb672 plc4go: Refactor, deduplicate package name out of code
This branch includes the following new commits:
new d9bb672 plc4go: Refactor, deduplicate package name out of code
The 1 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.
[plc4x] 01/01: plc4go: Refactor,
deduplicate package name out of code
Posted by sr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch feature/plc4golang-refactor
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit d9bb672ba2a7965e5e552c83244ed4b3c465fa54
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Mar 18 17:54:44 2021 +0100
plc4go: Refactor, deduplicate package name out of code
---
plc4go/cmd/main/drivers/tests/ads_driver_test.go | 2 +-
.../cmd/main/drivers/tests/modbus_driver_test.go | 2 +-
plc4go/cmd/main/drivers/tests/s7_driver_test.go | 2 +-
plc4go/go.mod | 3 +-
plc4go/go.sum | 47 +++++--
.../plc4go/ads/{AdsDriver.go => Driver.go} | 12 +-
.../ads/{AdsFieldHandler.go => FieldHandler.go} | 0
.../bacnetip/{BacnetIpDriver.go => Driver.go} | 2 +-
.../knxnetip/{KnxNetIpBrowser.go => Browser.go} | 48 +++----
.../{KnxNetIpConnection.go => Connection.go} | 118 ++++++++---------
.../{KnxNetIpDiscoverer.go => Discoverer.go} | 10 +-
.../knxnetip/{KnxNetIpDriver.go => Driver.go} | 24 ++--
.../plc4go/knxnetip/{KnxNetIpField.go => Field.go} | 146 ++++++++++-----------
.../{KnxNetIpFieldHandler.go => FieldHandler.go} | 62 ++++-----
.../{KnxNetIpMessageCodec.go => MessageCodec.go} | 32 ++---
.../knxnetip/{KnxNetIpReader.go => Reader.go} | 60 ++++-----
.../{KnxNetIpSubscriber.go => Subscriber.go} | 24 ++--
...IpSubscriptionEvent.go => SubscriptionEvent.go} | 16 +--
plc4go/internal/plc4go/knxnetip/Utils.go | 8 +-
.../{KnxNetIpValueDecoder.go => ValueDecoder.go} | 8 +-
.../{KnxNetIpValueHandler.go => ValueHandler.go} | 8 +-
.../knxnetip/{KnxNetIpWriter.go => Writer.go} | 16 +--
.../modbus/{ModbusConnection.go => Connection.go} | 44 +++----
.../plc4go/modbus/{ModbusDriver.go => Driver.go} | 24 ++--
.../plc4go/modbus/{ModbusField.go => Field.go} | 38 +++---
.../{ModbusFieldHandler.go => FieldHandler.go} | 44 +++----
.../{ModbusMessageCodec.go => MessageCodec.go} | 32 ++---
.../plc4go/modbus/{ModbusReader.go => Reader.go} | 58 ++++----
.../{ModbusValueHandler.go => ValueHandler.go} | 0
.../plc4go/modbus/{ModbusWriter.go => Writer.go} | 68 +++++-----
.../internal/plc4go/s7/{S7Driver.go => Driver.go} | 2 +-
plc4go/pkg/plc4go/drivers/drivers.go | 6 +-
32 files changed, 499 insertions(+), 467 deletions(-)
diff --git a/plc4go/cmd/main/drivers/tests/ads_driver_test.go b/plc4go/cmd/main/drivers/tests/ads_driver_test.go
index 417d96b..24def51 100644
--- a/plc4go/cmd/main/drivers/tests/ads_driver_test.go
+++ b/plc4go/cmd/main/drivers/tests/ads_driver_test.go
@@ -26,5 +26,5 @@ import (
func TestAdsDriver(t *testing.T) {
t.Skip("Still a work in progress")
- testutils.RunDriverTestsuite(t, ads.NewAdsDriver(), "assets/testing/protocols/ads/DriverTestsuite.xml")
+ testutils.RunDriverTestsuite(t, ads.NewDriver(), "assets/testing/protocols/ads/DriverTestsuite.xml")
}
diff --git a/plc4go/cmd/main/drivers/tests/modbus_driver_test.go b/plc4go/cmd/main/drivers/tests/modbus_driver_test.go
index cb07dd6..3505472 100644
--- a/plc4go/cmd/main/drivers/tests/modbus_driver_test.go
+++ b/plc4go/cmd/main/drivers/tests/modbus_driver_test.go
@@ -25,5 +25,5 @@ import (
)
func TestModbusDriver(t *testing.T) {
- testutils.RunDriverTestsuite(t, modbus.NewModbusDriver(), "assets/testing/protocols/modbus/DriverTestsuite.xml")
+ testutils.RunDriverTestsuite(t, modbus.NewDriver(), "assets/testing/protocols/modbus/DriverTestsuite.xml")
}
diff --git a/plc4go/cmd/main/drivers/tests/s7_driver_test.go b/plc4go/cmd/main/drivers/tests/s7_driver_test.go
index e2b482e..14db3f7 100644
--- a/plc4go/cmd/main/drivers/tests/s7_driver_test.go
+++ b/plc4go/cmd/main/drivers/tests/s7_driver_test.go
@@ -26,5 +26,5 @@ import (
func TestS7Driver(t *testing.T) {
t.Skip("Still a work in progress")
- testutils.RunDriverTestsuite(t, s7.NewS7Driver(), "assets/testing/protocols/s7/DriverTestsuite.xml")
+ testutils.RunDriverTestsuite(t, s7.NewDriver(), "assets/testing/protocols/s7/DriverTestsuite.xml")
}
diff --git a/plc4go/go.mod b/plc4go/go.mod
index 15e7197..5a72276 100644
--- a/plc4go/go.mod
+++ b/plc4go/go.mod
@@ -23,8 +23,9 @@ go 1.15
require (
github.com/ajankovic/xdiff v0.0.1
github.com/icza/bitio v1.0.0
- github.com/pkg/errors v0.8.1
+ github.com/pkg/errors v0.9.1
github.com/rs/zerolog v1.20.0
github.com/subchen/go-xmldom v1.1.2
github.com/tebeka/go2xunit v1.4.10 // indirect
+ gotest.tools/gotestsum v1.6.2 // indirect
)
diff --git a/plc4go/go.sum b/plc4go/go.sum
index ad497f6..5d8570b 100644
--- a/plc4go/go.sum
+++ b/plc4go/go.sum
@@ -3,32 +3,63 @@ github.com/ajankovic/xdiff v0.0.1/go.mod h1:SUmEZ67uB97I0zkiuQ+lb+LOms9ipn8X+p+2
github.com/antchfx/xpath v0.0.0-20170515025933-1f3266e77307 h1:C735MoY/X+UOx6SECmHk5pVOj51h839Ph13pEoY8UmU=
github.com/antchfx/xpath v0.0.0-20170515025933-1f3266e77307/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/go-errors/errors v1.1.1/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs=
+github.com/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk=
+github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE=
+github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
+github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
+github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
+github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/icza/bitio v1.0.0 h1:squ/m1SHyFeCA6+6Gyol1AxV9nmPPlJFT8c2vKdj3U8=
github.com/icza/bitio v1.0.0/go.mod h1:0jGnlLAx8MKMr9VGnn/4YrvZiprkvBelsVIbA9Jjr9A=
github.com/icza/mighty v0.0.0-20180919140131-cfd07d671de6 h1:8UsGZ2rr2ksmEru6lToqnXgA8Mz1DP11X4zSJ159C3k=
github.com/icza/mighty v0.0.0-20180919140131-cfd07d671de6/go.mod h1:xQig96I1VNBDIWGCdTt54nHt6EeI639SmHycLYL7FkA=
+github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
+github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
+github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
+github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
+github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
github.com/rs/zerolog v1.20.0 h1:38k9hgtUBdxFwE34yS8rTHmHBa4eN16E4DJlv177LNs=
github.com/rs/zerolog v1.20.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJRjo=
-github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/subchen/go-xmldom v1.1.2 h1:7evI2YqfYYOnuj+PBwyaOZZYjl3iWq35P6KfBUw9jeU=
github.com/subchen/go-xmldom v1.1.2/go.mod h1:6Pg/HuX5/T4Jlj0IPJF1sRxKVoI/rrKP6LIMge9d5/8=
github.com/tebeka/go2xunit v1.4.10 h1:0UO+9YoLpXTZ0DL9XbTmIIibgmKBGiwroo8uhFMSyR0=
github.com/tebeka/go2xunit v1.4.10/go.mod h1:wmc9jKT7KlU4QLU6DNTaIXNnYNOjKKNlp6mjOS0UrqY=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4=
+golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634 h1:bNEHhJCnrwMKNMmOx3yAynp5vs5/gRy+XWFtZFu7NBM=
+golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74 h1:4cFkmztxtMslUX2SctSl+blCyXfpzhGOy9LhKAqSMA4=
golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gotest.tools v1.4.0 h1:BjtEgfuw8Qyd+jPvQz8CfoxiO/UjFEidWinwEXZiWv0=
+gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
+gotest.tools/gotestsum v1.6.2 h1:QRO7xoLEUQOdSzBzUaasXvn6WOSQjf2hBIBDWEs3VqI=
+gotest.tools/gotestsum v1.6.2/go.mod h1:H74H1IvjJE+E/1INpsn2P4+QW0uLDgL/T2sVajPHmTM=
+gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
diff --git a/plc4go/internal/plc4go/ads/AdsDriver.go b/plc4go/internal/plc4go/ads/Driver.go
similarity index 83%
rename from plc4go/internal/plc4go/ads/AdsDriver.go
rename to plc4go/internal/plc4go/ads/Driver.go
index 5245058..a5f566b 100644
--- a/plc4go/internal/plc4go/ads/AdsDriver.go
+++ b/plc4go/internal/plc4go/ads/Driver.go
@@ -23,25 +23,25 @@ import (
"github.com/apache/plc4x/plc4go/pkg/plc4go"
)
-type AdsDriver struct {
+type Driver struct {
fieldHandler spi.PlcFieldHandler
plc4go.PlcDriver
}
-func NewAdsDriver() plc4go.PlcDriver {
- return &AdsDriver{
+func NewDriver() plc4go.PlcDriver {
+ return &Driver{
fieldHandler: NewFieldHandler(),
}
}
-func (m AdsDriver) GetProtocolCode() string {
+func (m Driver) GetProtocolCode() string {
return "ads"
}
-func (m AdsDriver) GetProtocolName() string {
+func (m Driver) GetProtocolName() string {
return "Beckhoff TwinCat ADS"
}
-func (m AdsDriver) SupportsDiscovery() bool {
+func (m Driver) SupportsDiscovery() bool {
return false
}
diff --git a/plc4go/internal/plc4go/ads/AdsFieldHandler.go b/plc4go/internal/plc4go/ads/FieldHandler.go
similarity index 100%
rename from plc4go/internal/plc4go/ads/AdsFieldHandler.go
rename to plc4go/internal/plc4go/ads/FieldHandler.go
diff --git a/plc4go/internal/plc4go/bacnetip/BacnetIpDriver.go b/plc4go/internal/plc4go/bacnetip/Driver.go
similarity index 95%
rename from plc4go/internal/plc4go/bacnetip/BacnetIpDriver.go
rename to plc4go/internal/plc4go/bacnetip/Driver.go
index 6c7787f..095e575 100644
--- a/plc4go/internal/plc4go/bacnetip/BacnetIpDriver.go
+++ b/plc4go/internal/plc4go/bacnetip/Driver.go
@@ -20,6 +20,6 @@ package bacnetip
import "github.com/apache/plc4x/plc4go/pkg/plc4go"
-func NewBacnetIpDriver() plc4go.PlcDriver {
+func NewDriver() plc4go.PlcDriver {
return nil
}
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpBrowser.go b/plc4go/internal/plc4go/knxnetip/Browser.go
similarity index 92%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpBrowser.go
rename to plc4go/internal/plc4go/knxnetip/Browser.go
index 54ef3ee..c836be8 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpBrowser.go
+++ b/plc4go/internal/plc4go/knxnetip/Browser.go
@@ -34,27 +34,27 @@ import (
"time"
)
-type KnxNetIpBrowser struct {
- connection *KnxNetIpConnection
+type Browser struct {
+ connection *Connection
messageCodec spi.MessageCodec
sequenceCounter uint8
}
-func NewKnxNetIpBrowser(connection *KnxNetIpConnection, messageCodec spi.MessageCodec) *KnxNetIpBrowser {
- return &KnxNetIpBrowser{
+func NewBrowser(connection *Connection, messageCodec spi.MessageCodec) *Browser {
+ return &Browser{
connection: connection,
messageCodec: messageCodec,
sequenceCounter: 0,
}
}
-func (m KnxNetIpBrowser) Browse(browseRequest apiModel.PlcBrowseRequest) <-chan apiModel.PlcBrowseRequestResult {
+func (m Browser) Browse(browseRequest apiModel.PlcBrowseRequest) <-chan apiModel.PlcBrowseRequestResult {
return m.BrowseWithInterceptor(browseRequest, func(result apiModel.PlcBrowseEvent) bool {
return true
})
}
-func (m KnxNetIpBrowser) BrowseWithInterceptor(browseRequest apiModel.PlcBrowseRequest, interceptor func(result apiModel.PlcBrowseEvent) bool) <-chan apiModel.PlcBrowseRequestResult {
+func (m Browser) BrowseWithInterceptor(browseRequest apiModel.PlcBrowseRequest, interceptor func(result apiModel.PlcBrowseEvent) bool) <-chan apiModel.PlcBrowseRequestResult {
result := make(chan apiModel.PlcBrowseRequestResult)
sendResult := func(browseResponse apiModel.PlcBrowseResponse, err error) {
result <- apiModel.PlcBrowseRequestResult{
@@ -75,16 +75,16 @@ func (m KnxNetIpBrowser) BrowseWithInterceptor(browseRequest apiModel.PlcBrowseR
}
switch field.(type) {
- case KnxNetIpDeviceQueryField:
- queryResults, err := m.executeDeviceQuery(field.(KnxNetIpDeviceQueryField), browseRequest, queryName, interceptor)
+ case DeviceQueryField:
+ queryResults, err := m.executeDeviceQuery(field.(DeviceQueryField), browseRequest, queryName, interceptor)
if err != nil {
// TODO: Return some sort of return code like with the read and write APIs
results[queryName] = nil
} else {
results[queryName] = queryResults
}
- case KnxNetIpCommunicationObjectQueryField:
- queryResults, err := m.executeCommunicationObjectQuery(field.(KnxNetIpCommunicationObjectQueryField))
+ case CommunicationObjectQueryField:
+ queryResults, err := m.executeCommunicationObjectQuery(field.(CommunicationObjectQueryField))
if err != nil {
// TODO: Return some sort of return code like with the read and write APIs
results[queryName] = nil
@@ -101,7 +101,7 @@ func (m KnxNetIpBrowser) BrowseWithInterceptor(browseRequest apiModel.PlcBrowseR
return result
}
-func (m KnxNetIpBrowser) executeDeviceQuery(field KnxNetIpDeviceQueryField, browseRequest apiModel.PlcBrowseRequest, queryName string, interceptor func(result apiModel.PlcBrowseEvent) bool) ([]apiModel.PlcBrowseQueryResult, error) {
+func (m Browser) executeDeviceQuery(field DeviceQueryField, browseRequest apiModel.PlcBrowseRequest, queryName string, interceptor func(result apiModel.PlcBrowseEvent) bool) ([]apiModel.PlcBrowseQueryResult, error) {
// Create a list of address strings, which doesn't contain any ranges, lists or wildcards
knxAddresses, err := m.calculateAddresses(field)
if err != nil {
@@ -122,7 +122,7 @@ func (m KnxNetIpBrowser) executeDeviceQuery(field KnxNetIpDeviceQueryField, brow
// otherwise just ignore it.
if deviceConnection.connection != nil {
queryResult := apiModel.PlcBrowseQueryResult{
- Field: NewKnxNetIpDeviceQueryField(
+ Field: NewDeviceQueryField(
strconv.Itoa(int(knxAddress.MainGroup)),
strconv.Itoa(int(knxAddress.MiddleGroup)),
strconv.Itoa(int(knxAddress.SubGroup)),
@@ -162,7 +162,7 @@ func (m KnxNetIpBrowser) executeDeviceQuery(field KnxNetIpDeviceQueryField, brow
return queryResults, nil
}
-func (m KnxNetIpBrowser) executeCommunicationObjectQuery(field KnxNetIpCommunicationObjectQueryField) ([]apiModel.PlcBrowseQueryResult, error) {
+func (m Browser) executeCommunicationObjectQuery(field CommunicationObjectQueryField) ([]apiModel.PlcBrowseQueryResult, error) {
var results []apiModel.PlcBrowseQueryResult
knxAddress := field.toKnxAddress()
@@ -400,17 +400,17 @@ func (m KnxNetIpBrowser) executeCommunicationObjectQuery(field KnxNetIpCommunica
switch groupAddress.Child.(type) {
case *driverModel.KnxGroupAddress3Level:
address3Level := driverModel.CastKnxGroupAddress3Level(groupAddress)
- field = NewKnxNetIpGroupAddress3LevelPlcField(strconv.Itoa(int(address3Level.MainGroup)),
+ field = NewGroupAddress3LevelPlcField(strconv.Itoa(int(address3Level.MainGroup)),
strconv.Itoa(int(address3Level.MiddleGroup)), strconv.Itoa(int(address3Level.SubGroup)),
&fieldType)
case *driverModel.KnxGroupAddress2Level:
address2Level := driverModel.CastKnxGroupAddress2Level(groupAddress)
- field = NewKnxNetIpGroupAddress2LevelPlcField(strconv.Itoa(int(address2Level.MainGroup)),
+ field = NewGroupAddress2LevelPlcField(strconv.Itoa(int(address2Level.MainGroup)),
strconv.Itoa(int(address2Level.SubGroup)),
&fieldType)
case *driverModel.KnxGroupAddressFreeLevel:
address1Level := driverModel.CastKnxGroupAddressFreeLevel(groupAddress)
- field = NewKnxNetIpGroupAddress1LevelPlcField(strconv.Itoa(int(address1Level.SubGroup)),
+ field = NewGroupAddress1LevelPlcField(strconv.Itoa(int(address1Level.SubGroup)),
&fieldType)
}
@@ -523,7 +523,7 @@ func (m KnxNetIpBrowser) executeCommunicationObjectQuery(field KnxNetIpCommunica
return results, nil
}
-func (m KnxNetIpBrowser) calculateAddresses(field KnxNetIpDeviceQueryField) ([]driverModel.KnxAddress, error) {
+func (m Browser) calculateAddresses(field DeviceQueryField) ([]driverModel.KnxAddress, error) {
var explodedAddresses []driverModel.KnxAddress
mainGroupOptions, err := m.explodeSegment(field.MainGroup, 1, 15)
if err != nil {
@@ -555,7 +555,7 @@ func (m KnxNetIpBrowser) calculateAddresses(field KnxNetIpDeviceQueryField) ([]d
return explodedAddresses, nil
}
-func (m KnxNetIpBrowser) explodeSegment(segment string, min uint8, max uint8) ([]uint8, error) {
+func (m Browser) explodeSegment(segment string, min uint8, max uint8) ([]uint8, error) {
var options []uint8
if strings.Contains(segment, "*") {
for i := min; i <= max; i++ {
@@ -598,7 +598,7 @@ func (m KnxNetIpBrowser) explodeSegment(segment string, min uint8, max uint8) ([
return options, nil
}
-func (m KnxNetIpBrowser) parseAssociationTable(deviceDescriptor uint16, knxGroupAddresses []*driverModel.KnxGroupAddress, value values.PlcValue) (*driverModel.KnxGroupAddress, uint16) {
+func (m Browser) parseAssociationTable(deviceDescriptor uint16, knxGroupAddresses []*driverModel.KnxGroupAddress, value values.PlcValue) (*driverModel.KnxGroupAddress, uint16) {
var addressIndex uint16
var comObjectNumber uint16
if deviceDescriptor == uint16(0x07B0) /* SystemB */ {
@@ -615,11 +615,11 @@ func (m KnxNetIpBrowser) parseAssociationTable(deviceDescriptor uint16, knxGroup
return nil, 0
}
-func (m KnxNetIpBrowser) getFieldForGroupAddress(groupAddress *driverModel.KnxGroupAddress, datatype driverModel.KnxDatapointType) apiModel.PlcField {
+func (m Browser) getFieldForGroupAddress(groupAddress *driverModel.KnxGroupAddress, datatype driverModel.KnxDatapointType) apiModel.PlcField {
switch groupAddress.Child.(type) {
case *driverModel.KnxGroupAddress3Level:
groupAddress3Level := driverModel.CastKnxGroupAddress3Level(groupAddress)
- return KnxNetIpGroupAddress3LevelPlcField{
+ return GroupAddress3LevelPlcField{
MainGroup: strconv.Itoa(int(groupAddress3Level.MainGroup)),
MiddleGroup: strconv.Itoa(int(groupAddress3Level.MiddleGroup)),
SubGroup: strconv.Itoa(int(groupAddress3Level.SubGroup)),
@@ -627,14 +627,14 @@ func (m KnxNetIpBrowser) getFieldForGroupAddress(groupAddress *driverModel.KnxGr
}
case *driverModel.KnxGroupAddress2Level:
groupAddress2Level := driverModel.CastKnxGroupAddress2Level(groupAddress)
- return KnxNetIpGroupAddress2LevelPlcField{
+ return GroupAddress2LevelPlcField{
MainGroup: strconv.Itoa(int(groupAddress2Level.MainGroup)),
SubGroup: strconv.Itoa(int(groupAddress2Level.SubGroup)),
FieldType: &datatype,
}
case *driverModel.KnxGroupAddressFreeLevel:
groupAddress1Level := driverModel.CastKnxGroupAddressFreeLevel(groupAddress)
- return KnxNetIpGroupAddress1LevelPlcField{
+ return GroupAddress1LevelPlcField{
MainGroup: strconv.Itoa(int(groupAddress1Level.SubGroup)),
FieldType: &datatype,
}
@@ -642,7 +642,7 @@ func (m KnxNetIpBrowser) getFieldForGroupAddress(groupAddress *driverModel.KnxGr
return nil
}
-func (m KnxNetIpBrowser) getFieldTypeForValueType(valueType driverModel.ComObjectValueType) driverModel.KnxDatapointType {
+func (m Browser) getFieldTypeForValueType(valueType driverModel.ComObjectValueType) driverModel.KnxDatapointType {
switch valueType {
case driverModel.ComObjectValueType_BIT1:
return driverModel.KnxDatapointType_BOOL
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpConnection.go b/plc4go/internal/plc4go/knxnetip/Connection.go
similarity index 92%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpConnection.go
rename to plc4go/internal/plc4go/knxnetip/Connection.go
index 423d22c..e0a141c 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpConnection.go
+++ b/plc4go/internal/plc4go/knxnetip/Connection.go
@@ -103,14 +103,14 @@ type KnxMemoryReadFragment struct {
startingAddress uint16
}
-type KnxNetIpConnection struct {
+type Connection struct {
messageCodec spi.MessageCodec
options map[string][]string
fieldHandler spi.PlcFieldHandler
valueHandler spi.PlcValueHandler
connectionStateTimer *time.Ticker
quitConnectionStateTimer chan struct{}
- subscribers []*KnxNetIpSubscriber
+ subscribers []*Subscriber
valueCache map[uint16][]int8
valueCacheMutex sync.RWMutex
@@ -159,13 +159,13 @@ type InternalResult struct {
err error
}
-func NewKnxNetIpConnection(transportInstance transports.TransportInstance, options map[string][]string, fieldHandler spi.PlcFieldHandler) *KnxNetIpConnection {
- connection := &KnxNetIpConnection{
+func NewConnection(transportInstance transports.TransportInstance, options map[string][]string, fieldHandler spi.PlcFieldHandler) *Connection {
+ connection := &Connection{
options: options,
fieldHandler: fieldHandler,
valueHandler: NewValueHandler(),
requestInterceptor: interceptors.NewSingleItemRequestInterceptor(),
- subscribers: []*KnxNetIpSubscriber{},
+ subscribers: []*Subscriber{},
valueCache: map[uint16][]int8{},
valueCacheMutex: sync.RWMutex{},
metadata: &ConnectionMetadata{},
@@ -181,11 +181,11 @@ func NewKnxNetIpConnection(transportInstance transports.TransportInstance, optio
connection.buildingKey = bc
}
}
- connection.messageCodec = NewKnxNetIpMessageCodec(transportInstance, connection.interceptIncomingMessage)
+ connection.messageCodec = NewMessageCodec(transportInstance, connection.interceptIncomingMessage)
return connection
}
-func (m *KnxNetIpConnection) Connect() <-chan plc4go.PlcConnectionConnectResult {
+func (m *Connection) Connect() <-chan plc4go.PlcConnectionConnectResult {
result := make(chan plc4go.PlcConnectionConnectResult)
sendResult := func(connection plc4go.PlcConnection, err error) {
result <- plc4go.NewPlcConnectionConnectResult(connection, err)
@@ -317,7 +317,7 @@ func (m *KnxNetIpConnection) Connect() <-chan plc4go.PlcConnectionConnectResult
return result
}
-func (m *KnxNetIpConnection) BlockingClose() {
+func (m *Connection) BlockingClose() {
closeResults := m.Close()
select {
case <-closeResults:
@@ -327,7 +327,7 @@ func (m *KnxNetIpConnection) BlockingClose() {
}
}
-func (m *KnxNetIpConnection) Close() <-chan plc4go.PlcConnectionCloseResult {
+func (m *Connection) Close() <-chan plc4go.PlcConnectionCloseResult {
result := make(chan plc4go.PlcConnectionCloseResult)
go func() {
@@ -360,7 +360,7 @@ func (m *KnxNetIpConnection) Close() <-chan plc4go.PlcConnectionCloseResult {
return result
}
-func (m *KnxNetIpConnection) IsConnected() bool {
+func (m *Connection) IsConnected() bool {
if m.messageCodec != nil {
pingChannel := m.Ping()
select {
@@ -374,7 +374,7 @@ func (m *KnxNetIpConnection) IsConnected() bool {
return false
}
-func (m *KnxNetIpConnection) Ping() <-chan plc4go.PlcConnectionPingResult {
+func (m *Connection) Ping() <-chan plc4go.PlcConnectionPingResult {
result := make(chan plc4go.PlcConnectionPingResult)
go func() {
@@ -392,46 +392,46 @@ func (m *KnxNetIpConnection) Ping() <-chan plc4go.PlcConnectionPingResult {
return result
}
-func (m *KnxNetIpConnection) GetMetadata() apiModel.PlcConnectionMetadata {
+func (m *Connection) GetMetadata() apiModel.PlcConnectionMetadata {
return m.metadata
}
-func (m *KnxNetIpConnection) ReadRequestBuilder() apiModel.PlcReadRequestBuilder {
+func (m *Connection) ReadRequestBuilder() apiModel.PlcReadRequestBuilder {
return internalModel.NewDefaultPlcReadRequestBuilder(
- m.fieldHandler, NewKnxNetIpReader(m))
+ m.fieldHandler, NewReader(m))
}
-func (m *KnxNetIpConnection) WriteRequestBuilder() apiModel.PlcWriteRequestBuilder {
+func (m *Connection) WriteRequestBuilder() apiModel.PlcWriteRequestBuilder {
return internalModel.NewDefaultPlcWriteRequestBuilder(
- m.fieldHandler, m.valueHandler, NewKnxNetIpWriter(m.messageCodec))
+ m.fieldHandler, m.valueHandler, NewWriter(m.messageCodec))
}
-func (m *KnxNetIpConnection) SubscriptionRequestBuilder() apiModel.PlcSubscriptionRequestBuilder {
+func (m *Connection) SubscriptionRequestBuilder() apiModel.PlcSubscriptionRequestBuilder {
return internalModel.NewDefaultPlcSubscriptionRequestBuilder(
- m.fieldHandler, m.valueHandler, NewKnxNetIpSubscriber(m))
+ m.fieldHandler, m.valueHandler, NewSubscriber(m))
}
-func (m *KnxNetIpConnection) BrowseRequestBuilder() apiModel.PlcBrowseRequestBuilder {
- return internalModel.NewDefaultPlcBrowseRequestBuilder(NewKnxNetIpBrowser(m, m.messageCodec))
+func (m *Connection) BrowseRequestBuilder() apiModel.PlcBrowseRequestBuilder {
+ return internalModel.NewDefaultPlcBrowseRequestBuilder(NewBrowser(m, m.messageCodec))
}
-func (m *KnxNetIpConnection) UnsubscriptionRequestBuilder() apiModel.PlcUnsubscriptionRequestBuilder {
+func (m *Connection) UnsubscriptionRequestBuilder() apiModel.PlcUnsubscriptionRequestBuilder {
return nil /*internalModel.NewDefaultPlcUnsubscriptionRequestBuilder(
- m.fieldHandler, m.valueHandler, NewKnxNetIpSubscriber(m.messageCodec))*/
+ m.fieldHandler, m.valueHandler, NewSubscriber(m.messageCodec))*/
}
-func (m *KnxNetIpConnection) GetTransportInstance() transports.TransportInstance {
+func (m *Connection) GetTransportInstance() transports.TransportInstance {
if mc, ok := m.messageCodec.(spi.TransportInstanceExposer); ok {
return mc.GetTransportInstance()
}
return nil
}
-func (m *KnxNetIpConnection) GetPlcFieldHandler() spi.PlcFieldHandler {
+func (m *Connection) GetPlcFieldHandler() spi.PlcFieldHandler {
return m.fieldHandler
}
-func (m *KnxNetIpConnection) GetPlcValueHandler() spi.PlcValueHandler {
+func (m *Connection) GetPlcValueHandler() spi.PlcValueHandler {
return m.valueHandler
}
@@ -446,7 +446,7 @@ func (m *KnxNetIpConnection) GetPlcValueHandler() spi.PlcValueHandler {
// They expect the called private functions to handle timeouts, so these will not.
///////////////////////////////////////////////////////////////////////////////////////////////////////
-func (m *KnxNetIpConnection) ReadGroupAddress(groupAddress []int8, datapointType *driverModel.KnxDatapointType) <-chan KnxReadResult {
+func (m *Connection) ReadGroupAddress(groupAddress []int8, datapointType *driverModel.KnxDatapointType) <-chan KnxReadResult {
result := make(chan KnxReadResult)
sendResponse := func(value *values.PlcValue, numItems uint8, err error) {
@@ -497,7 +497,7 @@ func (m *KnxNetIpConnection) ReadGroupAddress(groupAddress []int8, datapointType
return result
}
-func (m *KnxNetIpConnection) DeviceConnect(targetAddress driverModel.KnxAddress) <-chan KnxDeviceConnectResult {
+func (m *Connection) DeviceConnect(targetAddress driverModel.KnxAddress) <-chan KnxDeviceConnectResult {
result := make(chan KnxDeviceConnectResult)
sendResponse := func(connection *KnxDeviceConnection, err error) {
@@ -582,7 +582,7 @@ func (m *KnxNetIpConnection) DeviceConnect(targetAddress driverModel.KnxAddress)
return result
}
-func (m *KnxNetIpConnection) DeviceDisconnect(targetAddress driverModel.KnxAddress) <-chan KnxDeviceDisconnectResult {
+func (m *Connection) DeviceDisconnect(targetAddress driverModel.KnxAddress) <-chan KnxDeviceDisconnectResult {
result := make(chan KnxDeviceDisconnectResult)
sendResponse := func(connection *KnxDeviceConnection, err error) {
@@ -611,7 +611,7 @@ func (m *KnxNetIpConnection) DeviceDisconnect(targetAddress driverModel.KnxAddre
return result
}
-func (m *KnxNetIpConnection) DeviceAuthenticate(targetAddress driverModel.KnxAddress, buildingKey []byte) <-chan KnxDeviceAuthenticateResult {
+func (m *Connection) DeviceAuthenticate(targetAddress driverModel.KnxAddress, buildingKey []byte) <-chan KnxDeviceAuthenticateResult {
result := make(chan KnxDeviceAuthenticateResult)
sendResponse := func(err error) {
@@ -663,7 +663,7 @@ func (m *KnxNetIpConnection) DeviceAuthenticate(targetAddress driverModel.KnxAdd
return result
}
-func (m *KnxNetIpConnection) DeviceReadProperty(targetAddress driverModel.KnxAddress, objectId uint8, propertyId uint8, propertyIndex uint16, numElements uint8) <-chan KnxReadResult {
+func (m *Connection) DeviceReadProperty(targetAddress driverModel.KnxAddress, objectId uint8, propertyId uint8, propertyIndex uint16, numElements uint8) <-chan KnxReadResult {
result := make(chan KnxReadResult)
sendResponse := func(value *values.PlcValue, numItems uint8, err error) {
@@ -737,7 +737,7 @@ func (m *KnxNetIpConnection) DeviceReadProperty(targetAddress driverModel.KnxAdd
return result
}
-func (m *KnxNetIpConnection) DeviceReadPropertyDescriptor(targetAddress driverModel.KnxAddress, objectId uint8, propertyId uint8) <-chan KnxReadResult {
+func (m *Connection) DeviceReadPropertyDescriptor(targetAddress driverModel.KnxAddress, objectId uint8, propertyId uint8) <-chan KnxReadResult {
result := make(chan KnxReadResult)
sendResponse := func(value *values.PlcValue, numItems uint8, err error) {
@@ -790,7 +790,7 @@ func (m *KnxNetIpConnection) DeviceReadPropertyDescriptor(targetAddress driverMo
return result
}
-func (m *KnxNetIpConnection) DeviceReadMemory(targetAddress driverModel.KnxAddress, address uint16, numElements uint8, datapointType *driverModel.KnxDatapointType) <-chan KnxReadResult {
+func (m *Connection) DeviceReadMemory(targetAddress driverModel.KnxAddress, address uint16, numElements uint8, datapointType *driverModel.KnxDatapointType) <-chan KnxReadResult {
result := make(chan KnxReadResult)
sendResponse := func(value *values.PlcValue, numItems uint8, err error) {
@@ -895,7 +895,7 @@ func (m *KnxNetIpConnection) DeviceReadMemory(targetAddress driverModel.KnxAddre
// They all assume the connection is checked and is available.
///////////////////////////////////////////////////////////////////////////////////////////////////////
-func (m *KnxNetIpConnection) sendGatewaySearchRequest() (*driverModel.SearchResponse, error) {
+func (m *Connection) sendGatewaySearchRequest() (*driverModel.SearchResponse, error) {
localAddress, err := m.getLocalAddress()
if err != nil {
return nil, errors.New("error getting local address: " + err.Error())
@@ -940,7 +940,7 @@ func (m *KnxNetIpConnection) sendGatewaySearchRequest() (*driverModel.SearchResp
}
}
-func (m *KnxNetIpConnection) sendGatewayConnectionRequest() (*driverModel.ConnectionResponse, error) {
+func (m *Connection) sendGatewayConnectionRequest() (*driverModel.ConnectionResponse, error) {
localAddress, err := m.getLocalAddress()
if err != nil {
return nil, errors.New("error getting local address: " + err.Error())
@@ -987,7 +987,7 @@ func (m *KnxNetIpConnection) sendGatewayConnectionRequest() (*driverModel.Connec
}
}
-func (m *KnxNetIpConnection) sendGatewayDisconnectionRequest() (*driverModel.DisconnectResponse, error) {
+func (m *Connection) sendGatewayDisconnectionRequest() (*driverModel.DisconnectResponse, error) {
localAddress, err := m.getLocalAddress()
if err != nil {
return nil, errors.New("error getting local address: " + err.Error())
@@ -1035,7 +1035,7 @@ func (m *KnxNetIpConnection) sendGatewayDisconnectionRequest() (*driverModel.Dis
}
}
-func (m *KnxNetIpConnection) sendConnectionStateRequest() (*driverModel.ConnectionStateResponse, error) {
+func (m *Connection) sendConnectionStateRequest() (*driverModel.ConnectionStateResponse, error) {
localAddress, err := m.getLocalAddress()
if err != nil {
return nil, errors.New("error getting local address: " + err.Error())
@@ -1082,7 +1082,7 @@ func (m *KnxNetIpConnection) sendConnectionStateRequest() (*driverModel.Connecti
}
}
-func (m *KnxNetIpConnection) sendGroupAddressReadRequest(groupAddress []int8) (*driverModel.ApduDataGroupValueResponse, error) {
+func (m *Connection) sendGroupAddressReadRequest(groupAddress []int8) (*driverModel.ApduDataGroupValueResponse, error) {
// Send the property read request and wait for a confirmation that this property is readable.
groupAddressReadRequest := driverModel.NewTunnelingRequest(
driverModel.NewTunnelingRequestDataBlock(m.CommunicationChannelId, m.getNewSequenceCounter()),
@@ -1154,7 +1154,7 @@ func (m *KnxNetIpConnection) sendGroupAddressReadRequest(groupAddress []int8) (*
}
}
-func (m *KnxNetIpConnection) sendDeviceConnectionRequest(targetAddress driverModel.KnxAddress) (*driverModel.ApduControlConnect, error) {
+func (m *Connection) sendDeviceConnectionRequest(targetAddress driverModel.KnxAddress) (*driverModel.ApduControlConnect, error) {
// Send a connection request to the individual KNX device
deviceConnectionRequest := driverModel.NewTunnelingRequest(
driverModel.NewTunnelingRequestDataBlock(m.CommunicationChannelId, m.getNewSequenceCounter()),
@@ -1232,7 +1232,7 @@ func (m *KnxNetIpConnection) sendDeviceConnectionRequest(targetAddress driverMod
}
}
-func (m *KnxNetIpConnection) sendDeviceDisconnectionRequest(targetAddress driverModel.KnxAddress) (*driverModel.ApduControlDisconnect, error) {
+func (m *Connection) sendDeviceDisconnectionRequest(targetAddress driverModel.KnxAddress) (*driverModel.ApduControlDisconnect, error) {
// Send a connection request to the individual KNX device
deviceDisconnectionRequest := driverModel.NewTunnelingRequest(
driverModel.NewTunnelingRequestDataBlock(m.CommunicationChannelId, m.getNewSequenceCounter()),
@@ -1311,7 +1311,7 @@ func (m *KnxNetIpConnection) sendDeviceDisconnectionRequest(targetAddress driver
}
}
-func (m *KnxNetIpConnection) sendDeviceAuthentication(targetAddress driverModel.KnxAddress, authenticationLevel uint8, buildingKey []byte) (*driverModel.ApduDataExtAuthorizeResponse, error) {
+func (m *Connection) sendDeviceAuthentication(targetAddress driverModel.KnxAddress, authenticationLevel uint8, buildingKey []byte) (*driverModel.ApduDataExtAuthorizeResponse, error) {
// Check if there is already a connection available,
// if not, create a new one.
connection, ok := m.DeviceConnections[targetAddress]
@@ -1421,7 +1421,7 @@ func (m *KnxNetIpConnection) sendDeviceAuthentication(targetAddress driverModel.
}
}
-func (m *KnxNetIpConnection) sendDeviceDeviceDescriptorReadRequest(targetAddress driverModel.KnxAddress) (*driverModel.ApduDataDeviceDescriptorResponse, error) {
+func (m *Connection) sendDeviceDeviceDescriptorReadRequest(targetAddress driverModel.KnxAddress) (*driverModel.ApduDataDeviceDescriptorResponse, error) {
// Next, read the device descriptor so we know how we have to communicate with the device.
counter := m.getNextCounter(targetAddress)
deviceDescriptorReadRequest := driverModel.NewTunnelingRequest(
@@ -1513,7 +1513,7 @@ func (m *KnxNetIpConnection) sendDeviceDeviceDescriptorReadRequest(targetAddress
}
}
-func (m *KnxNetIpConnection) sendDevicePropertyReadRequest(targetAddress driverModel.KnxAddress, objectId uint8, propertyId uint8, propertyIndex uint16, numElements uint8) (*driverModel.ApduDataExtPropertyValueResponse, error) {
+func (m *Connection) sendDevicePropertyReadRequest(targetAddress driverModel.KnxAddress, objectId uint8, propertyId uint8, propertyIndex uint16, numElements uint8) (*driverModel.ApduDataExtPropertyValueResponse, error) {
// Next, read the device descriptor so we know how we have to communicate with the device.
// Send the property read request and wait for a confirmation that this property is readable.
counter := m.getNextCounter(targetAddress)
@@ -1613,7 +1613,7 @@ func (m *KnxNetIpConnection) sendDevicePropertyReadRequest(targetAddress driverM
}
}
-func (m *KnxNetIpConnection) sendDevicePropertyDescriptionReadRequest(targetAddress driverModel.KnxAddress, objectId uint8, propertyId uint8) (*driverModel.ApduDataExtPropertyDescriptionResponse, error) {
+func (m *Connection) sendDevicePropertyDescriptionReadRequest(targetAddress driverModel.KnxAddress, objectId uint8, propertyId uint8) (*driverModel.ApduDataExtPropertyDescriptionResponse, error) {
// Next, read the device descriptor so we know how we have to communicate with the device.
// Send the property read request and wait for a confirmation that this property is readable.
counter := m.getNextCounter(targetAddress)
@@ -1713,7 +1713,7 @@ func (m *KnxNetIpConnection) sendDevicePropertyDescriptionReadRequest(targetAddr
}
}
-func (m *KnxNetIpConnection) sendDeviceMemoryReadRequest(targetAddress driverModel.KnxAddress, address uint16, numBytes uint8) (*driverModel.ApduDataMemoryResponse, error) {
+func (m *Connection) sendDeviceMemoryReadRequest(targetAddress driverModel.KnxAddress, address uint16, numBytes uint8) (*driverModel.ApduDataMemoryResponse, error) {
// Next, read the device descriptor so we know how we have to communicate with the device.
counter := m.getNextCounter(targetAddress)
@@ -1809,7 +1809,7 @@ func (m *KnxNetIpConnection) sendDeviceMemoryReadRequest(targetAddress driverMod
}
}
-func (m *KnxNetIpConnection) sendDeviceAck(targetAddress driverModel.KnxAddress, counter uint8, callback func(err error)) error {
+func (m *Connection) sendDeviceAck(targetAddress driverModel.KnxAddress, counter uint8, callback func(err error)) error {
ack := driverModel.NewTunnelingRequest(
driverModel.NewTunnelingRequestDataBlock(m.CommunicationChannelId, m.getNewSequenceCounter()),
driverModel.NewLDataReq(0, nil,
@@ -1881,7 +1881,7 @@ func (m *KnxNetIpConnection) sendDeviceAck(targetAddress driverModel.KnxAddress,
// Internal helper functions
///////////////////////////////////////////////////////////////////////////////////////////////////////
-func (m *KnxNetIpConnection) interceptIncomingMessage(interface{}) {
+func (m *Connection) interceptIncomingMessage(interface{}) {
m.resetTimeout()
if m.connectionStateTimer != nil {
// Reset the timer for sending the ConnectionStateRequest
@@ -1889,11 +1889,11 @@ func (m *KnxNetIpConnection) interceptIncomingMessage(interface{}) {
}
}
-func (m *KnxNetIpConnection) castIpToKnxAddress(ip net.IP) *driverModel.IPAddress {
+func (m *Connection) castIpToKnxAddress(ip net.IP) *driverModel.IPAddress {
return driverModel.NewIPAddress(utils.ByteArrayToInt8Array(ip)[len(ip)-4:])
}
-func (m *KnxNetIpConnection) handleIncomingTunnelingRequest(tunnelingRequest *driverModel.TunnelingRequest) {
+func (m *Connection) handleIncomingTunnelingRequest(tunnelingRequest *driverModel.TunnelingRequest) {
go func() {
lDataInd := driverModel.CastLDataInd(tunnelingRequest.Cemi.Child)
if lDataInd != nil {
@@ -1942,7 +1942,7 @@ func (m *KnxNetIpConnection) handleIncomingTunnelingRequest(tunnelingRequest *dr
}()
}
-func (m *KnxNetIpConnection) handleValueCacheUpdate(destinationAddress []int8, payload []int8) {
+func (m *Connection) handleValueCacheUpdate(destinationAddress []int8, payload []int8) {
addressData := uint16(destinationAddress[0])<<8 | (uint16(destinationAddress[1]) & 0xFF)
m.valueCacheMutex.RLock()
@@ -1962,7 +1962,7 @@ func (m *KnxNetIpConnection) handleValueCacheUpdate(destinationAddress []int8, p
}
}
-func (m *KnxNetIpConnection) handleTimeout() {
+func (m *Connection) handleTimeout() {
// If this is the first timeout in a sequence, start the timer.
if m.connectionTimeoutTimer == nil {
m.connectionTimeoutTimer = time.NewTimer(m.connectionTtl)
@@ -1973,18 +1973,18 @@ func (m *KnxNetIpConnection) handleTimeout() {
}
}
-func (m *KnxNetIpConnection) resetTimeout() {
+func (m *Connection) resetTimeout() {
if m.connectionTimeoutTimer != nil {
m.connectionTimeoutTimer.Stop()
m.connectionTimeoutTimer = nil
}
}
-func (m *KnxNetIpConnection) resetConnection() {
+func (m *Connection) resetConnection() {
fmt.Println("Bad connection detected")
}
-func (m *KnxNetIpConnection) getGroupAddressNumLevels() uint8 {
+func (m *Connection) getGroupAddressNumLevels() uint8 {
if val, ok := m.options["group-address-num-levels"]; ok {
groupAddressNumLevels, err := strconv.Atoi(val[0])
if err == nil {
@@ -1994,7 +1994,7 @@ func (m *KnxNetIpConnection) getGroupAddressNumLevels() uint8 {
return 3
}
-func (m *KnxNetIpConnection) addSubscriber(subscriber *KnxNetIpSubscriber) {
+func (m *Connection) addSubscriber(subscriber *Subscriber) {
for _, sub := range m.subscribers {
if sub == subscriber {
return
@@ -2003,7 +2003,7 @@ func (m *KnxNetIpConnection) addSubscriber(subscriber *KnxNetIpSubscriber) {
m.subscribers = append(m.subscribers, subscriber)
}
-func (m *KnxNetIpConnection) removeSubscriber(subscriber *KnxNetIpSubscriber) {
+func (m *Connection) removeSubscriber(subscriber *Subscriber) {
for i, sub := range m.subscribers {
if sub == subscriber {
m.subscribers = append(m.subscribers[:i], m.subscribers[i+1:]...)
@@ -2011,7 +2011,7 @@ func (m *KnxNetIpConnection) removeSubscriber(subscriber *KnxNetIpSubscriber) {
}
}
-func (m *KnxNetIpConnection) sliceEqual(a, b []int8) bool {
+func (m *Connection) sliceEqual(a, b []int8) bool {
if len(a) != len(b) {
return false
}
@@ -2023,7 +2023,7 @@ func (m *KnxNetIpConnection) sliceEqual(a, b []int8) bool {
return true
}
-func (m *KnxNetIpConnection) getLocalAddress() (*net.UDPAddr, error) {
+func (m *Connection) getLocalAddress() (*net.UDPAddr, error) {
transportInstanceExposer, ok := m.messageCodec.(spi.TransportInstanceExposer)
if !ok {
return nil, errors.New("used transport, is not a TransportInstanceExposer")
@@ -2038,7 +2038,7 @@ func (m *KnxNetIpConnection) getLocalAddress() (*net.UDPAddr, error) {
return udpTransportInstance.LocalAddress, nil
}
-func (m *KnxNetIpConnection) getNewSequenceCounter() uint8 {
+func (m *Connection) getNewSequenceCounter() uint8 {
sequenceCounter := atomic.AddInt32(&m.SequenceCounter, 1)
if sequenceCounter >= math.MaxUint8 {
atomic.StoreInt32(&m.SequenceCounter, -1)
@@ -2047,7 +2047,7 @@ func (m *KnxNetIpConnection) getNewSequenceCounter() uint8 {
return uint8(sequenceCounter)
}
-func (m *KnxNetIpConnection) getNextCounter(targetAddress driverModel.KnxAddress) uint8 {
+func (m *Connection) getNextCounter(targetAddress driverModel.KnxAddress) uint8 {
m.Lock()
defer m.Unlock()
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpDiscoverer.go b/plc4go/internal/plc4go/knxnetip/Discoverer.go
similarity index 94%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpDiscoverer.go
rename to plc4go/internal/plc4go/knxnetip/Discoverer.go
index 0fc27cc..f5dc035 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpDiscoverer.go
+++ b/plc4go/internal/plc4go/knxnetip/Discoverer.go
@@ -34,15 +34,15 @@ import (
"time"
)
-type KnxNetIpDiscoverer struct {
+type Discoverer struct {
messageCodec spi.MessageCodec
}
-func NewKnxNetIpDiscoverer() *KnxNetIpDiscoverer {
- return &KnxNetIpDiscoverer{}
+func NewDiscoverer() *Discoverer {
+ return &Discoverer{}
}
-func (d *KnxNetIpDiscoverer) Discover(callback func(event model.PlcDiscoveryEvent)) error {
+func (d *Discoverer) Discover(callback func(event model.PlcDiscoveryEvent)) error {
udpTransport := udp.NewUdpTransport()
// Create a connection string for the KNX broadcast discovery address.
@@ -102,7 +102,7 @@ func (d *KnxNetIpDiscoverer) Discover(callback func(event model.PlcDiscoveryEven
if len(tranportInstances) > 0 {
for _, transportInstance := range tranportInstances {
// Create a codec for sending and receiving messages.
- codec := NewKnxNetIpMessageCodec(transportInstance, nil)
+ codec := NewMessageCodec(transportInstance, nil)
// Cast to the UDP transport instance so we can access information on the local port.
udpTransportInstance, ok := transportInstance.(*udp.UdpTransportInstance)
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go b/plc4go/internal/plc4go/knxnetip/Driver.go
similarity index 74%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go
rename to plc4go/internal/plc4go/knxnetip/Driver.go
index 96cd332..2cd3314 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpDriver.go
+++ b/plc4go/internal/plc4go/knxnetip/Driver.go
@@ -27,34 +27,34 @@ import (
"net/url"
)
-type KnxNetIpDriver struct {
+type Driver struct {
fieldHandler spi.PlcFieldHandler
}
-func NewKnxNetIpDriver() *KnxNetIpDriver {
- return &KnxNetIpDriver{
+func NewDriver() *Driver {
+ return &Driver{
fieldHandler: NewFieldHandler(),
}
}
-func (m KnxNetIpDriver) GetProtocolCode() string {
+func (m Driver) GetProtocolCode() string {
return "knxnet-ip"
}
-func (m KnxNetIpDriver) GetProtocolName() string {
+func (m Driver) GetProtocolName() string {
return "KNXNet/IP"
}
-func (m KnxNetIpDriver) GetDefaultTransport() string {
+func (m Driver) GetDefaultTransport() string {
return "udp"
}
-func (m KnxNetIpDriver) CheckQuery(query string) error {
+func (m Driver) CheckQuery(query string) error {
_, err := m.fieldHandler.ParseQuery(query)
return err
}
-func (m KnxNetIpDriver) GetConnection(transportUrl url.URL, transports map[string]transports.Transport, options map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
+func (m Driver) GetConnection(transportUrl url.URL, transports map[string]transports.Transport, options map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
// Get an the transport specified in the url
transport, ok := transports[transportUrl.Scheme]
if !ok {
@@ -73,15 +73,15 @@ func (m KnxNetIpDriver) GetConnection(transportUrl url.URL, transports map[strin
}
// Create the new connection
- connection := NewKnxNetIpConnection(transportInstance, options, m.fieldHandler)
+ connection := NewConnection(transportInstance, options, m.fieldHandler)
return connection.Connect()
}
-func (m KnxNetIpDriver) SupportsDiscovery() bool {
+func (m Driver) SupportsDiscovery() bool {
return true
}
-func (m KnxNetIpDriver) Discover(callback func(event model.PlcDiscoveryEvent)) error {
- return NewKnxNetIpDiscoverer().Discover(callback)
+func (m Driver) Discover(callback func(event model.PlcDiscoveryEvent)) error {
+ return NewDiscoverer().Discover(callback)
}
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpField.go b/plc4go/internal/plc4go/knxnetip/Field.go
similarity index 61%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpField.go
rename to plc4go/internal/plc4go/knxnetip/Field.go
index e651c76..8e2a82f 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpField.go
+++ b/plc4go/internal/plc4go/knxnetip/Field.go
@@ -27,32 +27,32 @@ import (
"strings"
)
-type KnxNetIpField interface {
+type Field interface {
apiModel.PlcField
}
-type KnxNetIpGroupAddressField interface {
+type GroupAddressField interface {
GetFieldType() *driverModel.KnxDatapointType
IsPatternField() bool
matches(knxGroupAddress *driverModel.KnxGroupAddress) bool
toGroupAddress() *driverModel.KnxGroupAddress
- KnxNetIpField
+ Field
}
-type KnxNetIpDeviceField interface {
+type DeviceField interface {
toKnxAddress() *driverModel.KnxAddress
- KnxNetIpField
+ Field
}
-type KnxNetIpGroupAddress3LevelPlcField struct {
+type GroupAddress3LevelPlcField struct {
MainGroup string // 5 Bits: Values 0-31
MiddleGroup string // 3 Bits: values 0-7
SubGroup string // 8 Bits
FieldType *driverModel.KnxDatapointType
}
-func NewKnxNetIpGroupAddress3LevelPlcField(mainGroup string, middleGroup string, subGroup string, fieldType *driverModel.KnxDatapointType) KnxNetIpGroupAddress3LevelPlcField {
- return KnxNetIpGroupAddress3LevelPlcField{
+func NewGroupAddress3LevelPlcField(mainGroup string, middleGroup string, subGroup string, fieldType *driverModel.KnxDatapointType) GroupAddress3LevelPlcField {
+ return GroupAddress3LevelPlcField{
MainGroup: mainGroup,
MiddleGroup: middleGroup,
SubGroup: subGroup,
@@ -60,23 +60,23 @@ func NewKnxNetIpGroupAddress3LevelPlcField(mainGroup string, middleGroup string,
}
}
-func (k KnxNetIpGroupAddress3LevelPlcField) GetAddressString() string {
+func (k GroupAddress3LevelPlcField) GetAddressString() string {
return fmt.Sprintf("%s/%s/%s:%s", k.MainGroup, k.MiddleGroup, k.SubGroup, k.FieldType.String())
}
-func (k KnxNetIpGroupAddress3LevelPlcField) GetTypeName() string {
+func (k GroupAddress3LevelPlcField) GetTypeName() string {
return k.FieldType.Name()
}
-func (k KnxNetIpGroupAddress3LevelPlcField) GetFieldType() *driverModel.KnxDatapointType {
+func (k GroupAddress3LevelPlcField) GetFieldType() *driverModel.KnxDatapointType {
return k.FieldType
}
-func (k KnxNetIpGroupAddress3LevelPlcField) GetQuantity() uint16 {
+func (k GroupAddress3LevelPlcField) GetQuantity() uint16 {
return 1
}
-func (k KnxNetIpGroupAddress3LevelPlcField) IsPatternField() bool {
+func (k GroupAddress3LevelPlcField) IsPatternField() bool {
_, err := strconv.Atoi(k.MainGroup)
if err == nil {
_, err = strconv.Atoi(k.MiddleGroup)
@@ -90,7 +90,7 @@ func (k KnxNetIpGroupAddress3LevelPlcField) IsPatternField() bool {
return true
}
-func (k KnxNetIpGroupAddress3LevelPlcField) matches(knxGroupAddress *driverModel.KnxGroupAddress) bool {
+func (k GroupAddress3LevelPlcField) matches(knxGroupAddress *driverModel.KnxGroupAddress) bool {
level3KnxGroupAddress := driverModel.CastKnxGroupAddress3Level(knxGroupAddress)
if level3KnxGroupAddress == nil {
return false
@@ -100,7 +100,7 @@ func (k KnxNetIpGroupAddress3LevelPlcField) matches(knxGroupAddress *driverModel
matches(k.SubGroup, strconv.Itoa(int(level3KnxGroupAddress.SubGroup)))
}
-func (k KnxNetIpGroupAddress3LevelPlcField) toGroupAddress() *driverModel.KnxGroupAddress {
+func (k GroupAddress3LevelPlcField) toGroupAddress() *driverModel.KnxGroupAddress {
mainGroup, err := strconv.Atoi(k.MainGroup)
if err != nil {
return nil
@@ -124,38 +124,38 @@ func (k KnxNetIpGroupAddress3LevelPlcField) toGroupAddress() *driverModel.KnxGro
return ga
}
-type KnxNetIpGroupAddress2LevelPlcField struct {
+type GroupAddress2LevelPlcField struct {
MainGroup string // 5 Bits: Values 0-31
SubGroup string // 11 Bits
FieldType *driverModel.KnxDatapointType
- KnxNetIpField
+ Field
}
-func NewKnxNetIpGroupAddress2LevelPlcField(mainGroup string, subGroup string, fieldType *driverModel.KnxDatapointType) KnxNetIpGroupAddress2LevelPlcField {
- return KnxNetIpGroupAddress2LevelPlcField{
+func NewGroupAddress2LevelPlcField(mainGroup string, subGroup string, fieldType *driverModel.KnxDatapointType) GroupAddress2LevelPlcField {
+ return GroupAddress2LevelPlcField{
MainGroup: mainGroup,
SubGroup: subGroup,
FieldType: fieldType,
}
}
-func (k KnxNetIpGroupAddress2LevelPlcField) GetAddressString() string {
+func (k GroupAddress2LevelPlcField) GetAddressString() string {
return fmt.Sprintf("%s/%s:%s", k.MainGroup, k.SubGroup, k.FieldType.String())
}
-func (k KnxNetIpGroupAddress2LevelPlcField) GetTypeName() string {
+func (k GroupAddress2LevelPlcField) GetTypeName() string {
return k.FieldType.Name()
}
-func (k KnxNetIpGroupAddress2LevelPlcField) GetFieldType() *driverModel.KnxDatapointType {
+func (k GroupAddress2LevelPlcField) GetFieldType() *driverModel.KnxDatapointType {
return k.FieldType
}
-func (k KnxNetIpGroupAddress2LevelPlcField) GetQuantity() uint16 {
+func (k GroupAddress2LevelPlcField) GetQuantity() uint16 {
return 1
}
-func (k KnxNetIpGroupAddress2LevelPlcField) IsPatternField() bool {
+func (k GroupAddress2LevelPlcField) IsPatternField() bool {
_, err := strconv.Atoi(k.MainGroup)
if err == nil {
_, err = strconv.Atoi(k.SubGroup)
@@ -166,7 +166,7 @@ func (k KnxNetIpGroupAddress2LevelPlcField) IsPatternField() bool {
return true
}
-func (k KnxNetIpGroupAddress2LevelPlcField) matches(knxGroupAddress *driverModel.KnxGroupAddress) bool {
+func (k GroupAddress2LevelPlcField) matches(knxGroupAddress *driverModel.KnxGroupAddress) bool {
level2KnxGroupAddress := driverModel.CastKnxGroupAddress2Level(knxGroupAddress)
if level2KnxGroupAddress == nil {
return false
@@ -175,7 +175,7 @@ func (k KnxNetIpGroupAddress2LevelPlcField) matches(knxGroupAddress *driverModel
matches(k.SubGroup, strconv.Itoa(int(level2KnxGroupAddress.SubGroup)))
}
-func (k KnxNetIpGroupAddress2LevelPlcField) toGroupAddress() *driverModel.KnxGroupAddress {
+func (k GroupAddress2LevelPlcField) toGroupAddress() *driverModel.KnxGroupAddress {
mainGroup, err := strconv.Atoi(k.MainGroup)
if err != nil {
return nil
@@ -194,36 +194,36 @@ func (k KnxNetIpGroupAddress2LevelPlcField) toGroupAddress() *driverModel.KnxGro
return ga
}
-type KnxNetIpGroupAddress1LevelPlcField struct {
+type GroupAddress1LevelPlcField struct {
MainGroup string // 16 Bits
FieldType *driverModel.KnxDatapointType
- KnxNetIpField
+ Field
}
-func NewKnxNetIpGroupAddress1LevelPlcField(mainGroup string, fieldType *driverModel.KnxDatapointType) KnxNetIpGroupAddress1LevelPlcField {
- return KnxNetIpGroupAddress1LevelPlcField{
+func NewGroupAddress1LevelPlcField(mainGroup string, fieldType *driverModel.KnxDatapointType) GroupAddress1LevelPlcField {
+ return GroupAddress1LevelPlcField{
MainGroup: mainGroup,
FieldType: fieldType,
}
}
-func (k KnxNetIpGroupAddress1LevelPlcField) GetAddressString() string {
+func (k GroupAddress1LevelPlcField) GetAddressString() string {
return fmt.Sprintf("%s:%s", k.MainGroup, k.FieldType.String())
}
-func (k KnxNetIpGroupAddress1LevelPlcField) GetTypeName() string {
+func (k GroupAddress1LevelPlcField) GetTypeName() string {
return k.FieldType.Name()
}
-func (k KnxNetIpGroupAddress1LevelPlcField) GetFieldType() *driverModel.KnxDatapointType {
+func (k GroupAddress1LevelPlcField) GetFieldType() *driverModel.KnxDatapointType {
return k.FieldType
}
-func (k KnxNetIpGroupAddress1LevelPlcField) GetQuantity() uint16 {
+func (k GroupAddress1LevelPlcField) GetQuantity() uint16 {
return 1
}
-func (k KnxNetIpGroupAddress1LevelPlcField) IsPatternField() bool {
+func (k GroupAddress1LevelPlcField) IsPatternField() bool {
_, err := strconv.Atoi(k.MainGroup)
if err == nil {
return false
@@ -231,7 +231,7 @@ func (k KnxNetIpGroupAddress1LevelPlcField) IsPatternField() bool {
return true
}
-func (k KnxNetIpGroupAddress1LevelPlcField) matches(knxGroupAddress *driverModel.KnxGroupAddress) bool {
+func (k GroupAddress1LevelPlcField) matches(knxGroupAddress *driverModel.KnxGroupAddress) bool {
level1KnxGroupAddress := driverModel.CastKnxGroupAddressFreeLevel(knxGroupAddress)
if level1KnxGroupAddress == nil {
return false
@@ -239,7 +239,7 @@ func (k KnxNetIpGroupAddress1LevelPlcField) matches(knxGroupAddress *driverModel
return matches(k.MainGroup, strconv.Itoa(int(level1KnxGroupAddress.SubGroup)))
}
-func (k KnxNetIpGroupAddress1LevelPlcField) toGroupAddress() *driverModel.KnxGroupAddress {
+func (k GroupAddress1LevelPlcField) toGroupAddress() *driverModel.KnxGroupAddress {
mainGroup, err := strconv.Atoi(k.MainGroup)
if err != nil {
return nil
@@ -253,38 +253,38 @@ func (k KnxNetIpGroupAddress1LevelPlcField) toGroupAddress() *driverModel.KnxGro
return ga
}
-type KnxNetIpDeviceQueryField struct {
+type DeviceQueryField struct {
MainGroup string // 5 Bits: Values 0-31
MiddleGroup string // 3 Bits: values 0-7
SubGroup string // 8 Bits
- KnxNetIpDeviceField
+ DeviceField
}
-func NewKnxNetIpDeviceQueryField(mainGroup string, middleGroup string, subGroup string) KnxNetIpDeviceQueryField {
- return KnxNetIpDeviceQueryField{
+func NewDeviceQueryField(mainGroup string, middleGroup string, subGroup string) DeviceQueryField {
+ return DeviceQueryField{
MainGroup: mainGroup,
MiddleGroup: middleGroup,
SubGroup: subGroup,
}
}
-func (k KnxNetIpDeviceQueryField) GetAddressString() string {
+func (k DeviceQueryField) GetAddressString() string {
return fmt.Sprintf("%s.%s.%s", k.MainGroup, k.MiddleGroup, k.SubGroup)
}
-func (k KnxNetIpDeviceQueryField) GetTypeName() string {
+func (k DeviceQueryField) GetTypeName() string {
return ""
}
-func (k KnxNetIpDeviceQueryField) GetQuantity() uint16 {
+func (k DeviceQueryField) GetQuantity() uint16 {
return 1
}
-func (k KnxNetIpDeviceQueryField) toKnxAddress() *driverModel.KnxAddress {
+func (k DeviceQueryField) toKnxAddress() *driverModel.KnxAddress {
return nil
}
-type KnxNetIpDevicePropertyAddressPlcField struct {
+type DevicePropertyAddressPlcField struct {
MainGroup uint8 // 5 Bits: Values 0-31
MiddleGroup uint8 // 3 Bits: values 0-7
SubGroup uint8 // 8 Bits
@@ -292,11 +292,11 @@ type KnxNetIpDevicePropertyAddressPlcField struct {
PropertyId uint8
PropertyIndex uint16
NumElements uint8
- KnxNetIpDeviceField
+ DeviceField
}
-func NewKnxNetIpDevicePropertyAddressPlcField(mainGroup uint8, middleGroup uint8, subGroup uint8, objectId uint8, propertyId uint8, propertyIndex uint16, numElements uint8) KnxNetIpDevicePropertyAddressPlcField {
- return KnxNetIpDevicePropertyAddressPlcField{
+func NewDevicePropertyAddressPlcField(mainGroup uint8, middleGroup uint8, subGroup uint8, objectId uint8, propertyId uint8, propertyIndex uint16, numElements uint8) DevicePropertyAddressPlcField {
+ return DevicePropertyAddressPlcField{
MainGroup: mainGroup,
MiddleGroup: middleGroup,
SubGroup: subGroup,
@@ -307,20 +307,20 @@ func NewKnxNetIpDevicePropertyAddressPlcField(mainGroup uint8, middleGroup uint8
}
}
-func (k KnxNetIpDevicePropertyAddressPlcField) GetAddressString() string {
+func (k DevicePropertyAddressPlcField) GetAddressString() string {
return fmt.Sprintf("%d/%d/%d#%d/%d/%d[%d]",
k.MainGroup, k.MiddleGroup, k.SubGroup, k.ObjectId, k.PropertyId, k.PropertyIndex, k.NumElements)
}
-func (k KnxNetIpDevicePropertyAddressPlcField) GetTypeName() string {
+func (k DevicePropertyAddressPlcField) GetTypeName() string {
return ""
}
-func (k KnxNetIpDevicePropertyAddressPlcField) GetQuantity() uint16 {
+func (k DevicePropertyAddressPlcField) GetQuantity() uint16 {
return 1
}
-func (k KnxNetIpDevicePropertyAddressPlcField) toKnxAddress() *driverModel.KnxAddress {
+func (k DevicePropertyAddressPlcField) toKnxAddress() *driverModel.KnxAddress {
ga := &driverModel.KnxAddress{
MainGroup: k.MainGroup,
MiddleGroup: k.MiddleGroup,
@@ -329,18 +329,18 @@ func (k KnxNetIpDevicePropertyAddressPlcField) toKnxAddress() *driverModel.KnxAd
return ga
}
-type KnxNetIpDeviceMemoryAddressPlcField struct {
+type DeviceMemoryAddressPlcField struct {
MainGroup uint8 // 5 Bits: Values 0-31
MiddleGroup uint8 // 3 Bits: values 0-7
SubGroup uint8 // 8 Bits
Address uint16
NumElements uint8
FieldType *driverModel.KnxDatapointType
- KnxNetIpDeviceField
+ DeviceField
}
-func NewKnxNetIpDeviceMemoryAddressPlcField(mainGroup uint8, middleGroup uint8, subGroup uint8, address uint16, numElements uint8, fieldType *driverModel.KnxDatapointType) KnxNetIpDeviceMemoryAddressPlcField {
- return KnxNetIpDeviceMemoryAddressPlcField{
+func NewDeviceMemoryAddressPlcField(mainGroup uint8, middleGroup uint8, subGroup uint8, address uint16, numElements uint8, fieldType *driverModel.KnxDatapointType) DeviceMemoryAddressPlcField {
+ return DeviceMemoryAddressPlcField{
MainGroup: mainGroup,
MiddleGroup: middleGroup,
SubGroup: subGroup,
@@ -350,27 +350,27 @@ func NewKnxNetIpDeviceMemoryAddressPlcField(mainGroup uint8, middleGroup uint8,
}
}
-func (k KnxNetIpDeviceMemoryAddressPlcField) GetAddressString() string {
+func (k DeviceMemoryAddressPlcField) GetAddressString() string {
return fmt.Sprintf("%d/%d/%d#%d:%s[%d]",
k.MainGroup, k.MiddleGroup, k.SubGroup, k.Address, k.FieldType.String(), k.NumElements)
}
-func (k KnxNetIpDeviceMemoryAddressPlcField) GetTypeName() string {
+func (k DeviceMemoryAddressPlcField) GetTypeName() string {
if k.FieldType != nil {
return k.FieldType.Name()
}
return ""
}
-func (k KnxNetIpDeviceMemoryAddressPlcField) GetFieldType() *driverModel.KnxDatapointType {
+func (k DeviceMemoryAddressPlcField) GetFieldType() *driverModel.KnxDatapointType {
return k.FieldType
}
-func (k KnxNetIpDeviceMemoryAddressPlcField) GetQuantity() uint16 {
+func (k DeviceMemoryAddressPlcField) GetQuantity() uint16 {
return uint16(k.NumElements)
}
-func (k KnxNetIpDeviceMemoryAddressPlcField) toKnxAddress() *driverModel.KnxAddress {
+func (k DeviceMemoryAddressPlcField) toKnxAddress() *driverModel.KnxAddress {
individualAddress := &driverModel.KnxAddress{
MainGroup: k.MainGroup,
MiddleGroup: k.MiddleGroup,
@@ -379,35 +379,35 @@ func (k KnxNetIpDeviceMemoryAddressPlcField) toKnxAddress() *driverModel.KnxAddr
return individualAddress
}
-type KnxNetIpCommunicationObjectQueryField struct {
+type CommunicationObjectQueryField struct {
MainGroup uint8 // 5 Bits: Values 0-31
MiddleGroup uint8 // 3 Bits: values 0-7
SubGroup uint8 // 8 Bits
- KnxNetIpDeviceField
+ DeviceField
}
-func NewKnxNetIpCommunicationObjectQueryField(mainGroup uint8, middleGroup uint8, subGroup uint8) KnxNetIpCommunicationObjectQueryField {
- return KnxNetIpCommunicationObjectQueryField{
+func NewCommunicationObjectQueryField(mainGroup uint8, middleGroup uint8, subGroup uint8) CommunicationObjectQueryField {
+ return CommunicationObjectQueryField{
MainGroup: mainGroup,
MiddleGroup: middleGroup,
SubGroup: subGroup,
}
}
-func (k KnxNetIpCommunicationObjectQueryField) GetAddressString() string {
+func (k CommunicationObjectQueryField) GetAddressString() string {
return fmt.Sprintf("%d.%d.%d#com-obj",
k.MainGroup, k.MiddleGroup, k.SubGroup)
}
-func (k KnxNetIpCommunicationObjectQueryField) GetTypeName() string {
+func (k CommunicationObjectQueryField) GetTypeName() string {
return ""
}
-func (k KnxNetIpCommunicationObjectQueryField) GetQuantity() uint16 {
+func (k CommunicationObjectQueryField) GetQuantity() uint16 {
return 1
}
-func (k KnxNetIpCommunicationObjectQueryField) toKnxAddress() *driverModel.KnxAddress {
+func (k CommunicationObjectQueryField) toKnxAddress() *driverModel.KnxAddress {
individualAddress := &driverModel.KnxAddress{
MainGroup: k.MainGroup,
MiddleGroup: k.MiddleGroup,
@@ -416,9 +416,9 @@ func (k KnxNetIpCommunicationObjectQueryField) toKnxAddress() *driverModel.KnxAd
return individualAddress
}
-func CastToKnxNetIpFieldFromPlcField(plcField apiModel.PlcField) (KnxNetIpField, error) {
- if knxNetIpField, ok := plcField.(KnxNetIpField); ok {
- return knxNetIpField, nil
+func CastToFieldFromPlcField(plcField apiModel.PlcField) (Field, error) {
+ if field, ok := plcField.(Field); ok {
+ return field, nil
}
return nil, errors.New("couldn't cast to KnxNetIpField")
}
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go b/plc4go/internal/plc4go/knxnetip/FieldHandler.go
similarity index 52%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go
rename to plc4go/internal/plc4go/knxnetip/FieldHandler.go
index 05d2636..07afd78 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpFieldHandler.go
+++ b/plc4go/internal/plc4go/knxnetip/FieldHandler.go
@@ -28,13 +28,13 @@ import (
"strconv"
)
-type KnxNetIpFieldType uint8
+type FieldType uint8
const (
- KNX_NET_IP_FIELD_COIL KnxNetIpFieldType = 0x00
+ KNX_NET_IP_FIELD_COIL FieldType = 0x00
)
-func (m KnxNetIpFieldType) GetName() string {
+func (m FieldType) GetName() string {
switch m {
case KNX_NET_IP_FIELD_COIL:
return "ModbusFieldHoldingRegister"
@@ -43,54 +43,54 @@ func (m KnxNetIpFieldType) GetName() string {
}
type FieldHandler struct {
- knxNetIpGroupAddress3Level *regexp.Regexp
- knxNetIpGroupAddress2Level *regexp.Regexp
- knxNetIpGroupAddress1Level *regexp.Regexp
- knxNetIpDeviceQuery *regexp.Regexp
- knxNetIpDevicePropertyAddress *regexp.Regexp
- knxNetIpDeviceMemoryAddress *regexp.Regexp
- knxNetIpDeviceCommunicationObjectQuery *regexp.Regexp
+ groupAddress3Level *regexp.Regexp
+ groupAddress2Level *regexp.Regexp
+ groupAddress1Level *regexp.Regexp
+ deviceQuery *regexp.Regexp
+ devicePropertyAddress *regexp.Regexp
+ deviceMemoryAddress *regexp.Regexp
+ deviceCommunicationObjectQuery *regexp.Regexp
}
func NewFieldHandler() FieldHandler {
return FieldHandler{
- knxNetIpGroupAddress3Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\/(?P<middleGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\/(?P<subGroup>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
- knxNetIpGroupAddress2Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))/(?P<subGroup>(\d{1,4}|\*|\[(\d{1,4}|\d{1,4}\-\d{1,4})(,(\d{1,4}|\d{1,4}\-\d{1,4}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
- knxNetIpGroupAddress1Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,5}|\*|\[(\d{1,5}|\d{1,5}\-\d{1,5})(,(\d{1,5}|\d{1,5}\-\d{1,5}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
+ groupAddress3Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\/(?P<middleGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\/(?P<subGroup>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
+ groupAddress2Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))/(?P<subGroup>(\d{1,4}|\*|\[(\d{1,4}|\d{1,4}\-\d{1,4})(,(\d{1,4}|\d{1,4}\-\d{1,4}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
+ groupAddress1Level: regexp.MustCompile(`^(?P<mainGroup>(\d{1,5}|\*|\[(\d{1,5}|\d{1,5}\-\d{1,5})(,(\d{1,5}|\d{1,5}\-\d{1,5}))*]))(:(?P<datatype>[a-zA-Z_]+))?$`),
- knxNetIpDeviceQuery: regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\.(?P<middleGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\.(?P<subGroup>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))$`),
- knxNetIpDevicePropertyAddress: regexp.MustCompile(`^(?P<mainGroup>\d{1,2})\.(?P<middleGroup>\d)\.(?P<subGroup>\d{1,3})#(?P<objectId>\d{1,3})\/(?P<propertyId>\d{1,3})(\/(?P<propertyIndex>\d{1,4}))?(\[(?P<numElements>\d{1,2})])?$`),
- knxNetIpDeviceMemoryAddress: regexp.MustCompile(`^(?P<mainGroup>\d{1,2})\.(?P<middleGroup>\d)\.(?P<subGroup>\d{1,3})#(?P<address>[0-9a-fA-F]{1,8})(:(?P<datatype>[a-zA-Z_]+)(\[(?P<numElements>\d+)])?)?$`),
- knxNetIpDeviceCommunicationObjectQuery: regexp.MustCompile(`^(?P<mainGroup>\d{1,2})\.(?P<middleGroup>\d)\.(?P<subGroup>\d{1,3})#com-obj$`),
+ deviceQuery: regexp.MustCompile(`^(?P<mainGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\.(?P<middleGroup>(\d{1,2}|\*|\[(\d{1,2}|\d{1,2}\-\d{1,2})(,(\d{1,2}|\d{1,2}\-\d{1,2}))*]))\.(?P<subGroup>(\d{1,3}|\*|\[(\d{1,3}|\d{1,3}\-\d{1,3})(,(\d{1,3}|\d{1,3}\-\d{1,3}))*]))$`),
+ devicePropertyAddress: regexp.MustCompile(`^(?P<mainGroup>\d{1,2})\.(?P<middleGroup>\d)\.(?P<subGroup>\d{1,3})#(?P<objectId>\d{1,3})\/(?P<propertyId>\d{1,3})(\/(?P<propertyIndex>\d{1,4}))?(\[(?P<numElements>\d{1,2})])?$`),
+ deviceMemoryAddress: regexp.MustCompile(`^(?P<mainGroup>\d{1,2})\.(?P<middleGroup>\d)\.(?P<subGroup>\d{1,3})#(?P<address>[0-9a-fA-F]{1,8})(:(?P<datatype>[a-zA-Z_]+)(\[(?P<numElements>\d+)])?)?$`),
+ deviceCommunicationObjectQuery: regexp.MustCompile(`^(?P<mainGroup>\d{1,2})\.(?P<middleGroup>\d)\.(?P<subGroup>\d{1,3})#com-obj$`),
}
}
func (m FieldHandler) ParseQuery(query string) (apiModel.PlcField, error) {
- if match := utils.GetSubgroupMatches(m.knxNetIpGroupAddress1Level, query); match != nil {
+ if match := utils.GetSubgroupMatches(m.groupAddress1Level, query); match != nil {
fieldTypeName, ok := match["datatype"]
var fieldType driverModel.KnxDatapointType
if ok {
fieldType = driverModel.KnxDatapointTypeByName(fieldTypeName)
}
- return NewKnxNetIpGroupAddress1LevelPlcField(match["mainGroup"], &fieldType), nil
- } else if match := utils.GetSubgroupMatches(m.knxNetIpGroupAddress2Level, query); match != nil {
+ return NewGroupAddress1LevelPlcField(match["mainGroup"], &fieldType), nil
+ } else if match := utils.GetSubgroupMatches(m.groupAddress2Level, query); match != nil {
fieldTypeName, ok := match["datatype"]
var fieldType driverModel.KnxDatapointType
if ok {
fieldType = driverModel.KnxDatapointTypeByName(fieldTypeName)
}
- return NewKnxNetIpGroupAddress2LevelPlcField(match["mainGroup"], match["subGroup"], &fieldType), nil
- } else if match := utils.GetSubgroupMatches(m.knxNetIpGroupAddress3Level, query); match != nil {
+ return NewGroupAddress2LevelPlcField(match["mainGroup"], match["subGroup"], &fieldType), nil
+ } else if match := utils.GetSubgroupMatches(m.groupAddress3Level, query); match != nil {
fieldTypeName, ok := match["datatype"]
var fieldType driverModel.KnxDatapointType
if ok {
fieldType = driverModel.KnxDatapointTypeByName(fieldTypeName)
}
- return NewKnxNetIpGroupAddress3LevelPlcField(match["mainGroup"], match["middleGroup"], match["subGroup"], &fieldType), nil
- } else if match := utils.GetSubgroupMatches(m.knxNetIpDeviceQuery, query); match != nil {
- return NewKnxNetIpDeviceQueryField(
+ return NewGroupAddress3LevelPlcField(match["mainGroup"], match["middleGroup"], match["subGroup"], &fieldType), nil
+ } else if match := utils.GetSubgroupMatches(m.deviceQuery, query); match != nil {
+ return NewDeviceQueryField(
match["mainGroup"], match["middleGroup"], match["subGroup"]), nil
- } else if match := utils.GetSubgroupMatches(m.knxNetIpDevicePropertyAddress, query); match != nil {
+ } else if match := utils.GetSubgroupMatches(m.devicePropertyAddress, query); match != nil {
mainGroup, _ := strconv.Atoi(match["mainGroup"])
middleGroup, _ := strconv.Atoi(match["middleGroup"])
subGroup, _ := strconv.Atoi(match["subGroup"])
@@ -106,10 +106,10 @@ func (m FieldHandler) ParseQuery(query string) (apiModel.PlcField, error) {
if ok && len(numElements) > 0 {
numberOfElements, _ = strconv.Atoi(numElements)
}
- return NewKnxNetIpDevicePropertyAddressPlcField(
+ return NewDevicePropertyAddressPlcField(
uint8(mainGroup), uint8(middleGroup), uint8(subGroup), uint8(objectId), uint8(propertyId),
uint16(propertyIndex), uint8(numberOfElements)), nil
- } else if match := utils.GetSubgroupMatches(m.knxNetIpDeviceMemoryAddress, query); match != nil {
+ } else if match := utils.GetSubgroupMatches(m.deviceMemoryAddress, query); match != nil {
fieldTypeName, ok := match["datatype"]
// This is a 0-255 valued 1-byte value.
fieldType := driverModel.KnxDatapointType_DPT_DecimalFactor
@@ -133,12 +133,12 @@ func (m FieldHandler) ParseQuery(query string) (apiModel.PlcField, error) {
if ok && len(numElements) > 0 {
numberOfElements, _ = strconv.Atoi(numElements)
}
- return NewKnxNetIpDeviceMemoryAddressPlcField(uint8(mainGroup), uint8(middleGroup), uint8(subGroup), address, uint8(numberOfElements), &fieldType), nil
- } else if match := utils.GetSubgroupMatches(m.knxNetIpDeviceCommunicationObjectQuery, query); match != nil {
+ return NewDeviceMemoryAddressPlcField(uint8(mainGroup), uint8(middleGroup), uint8(subGroup), address, uint8(numberOfElements), &fieldType), nil
+ } else if match := utils.GetSubgroupMatches(m.deviceCommunicationObjectQuery, query); match != nil {
mainGroup, _ := strconv.Atoi(match["mainGroup"])
middleGroup, _ := strconv.Atoi(match["middleGroup"])
subGroup, _ := strconv.Atoi(match["subGroup"])
- return NewKnxNetIpCommunicationObjectQueryField(
+ return NewCommunicationObjectQueryField(
uint8(mainGroup), uint8(middleGroup), uint8(subGroup)), nil
}
return nil, errors.New("Invalid address format for address '" + query + "'")
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpMessageCodec.go b/plc4go/internal/plc4go/knxnetip/MessageCodec.go
similarity index 85%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpMessageCodec.go
rename to plc4go/internal/plc4go/knxnetip/MessageCodec.go
index 44c85aa..7ffeaa4 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpMessageCodec.go
+++ b/plc4go/internal/plc4go/knxnetip/MessageCodec.go
@@ -30,28 +30,28 @@ import (
"time"
)
-type KnxNetIpExpectation struct {
+type Expectation struct {
expiration time.Time
acceptsMessage spi.AcceptsMessage
handleMessage spi.HandleMessage
handleError spi.HandleError
}
-type KnxNetIpMessageCodec struct {
+type MessageCodec struct {
sequenceCounter int32
transportInstance transports.TransportInstance
messageInterceptor func(message interface{})
defaultIncomingMessageChannel chan interface{}
- expectations []KnxNetIpExpectation
+ expectations []Expectation
}
-func NewKnxNetIpMessageCodec(transportInstance transports.TransportInstance, messageInterceptor func(message interface{})) *KnxNetIpMessageCodec {
- codec := &KnxNetIpMessageCodec{
+func NewMessageCodec(transportInstance transports.TransportInstance, messageInterceptor func(message interface{})) *MessageCodec {
+ codec := &MessageCodec{
sequenceCounter: 0,
transportInstance: transportInstance,
messageInterceptor: messageInterceptor,
defaultIncomingMessageChannel: make(chan interface{}),
- expectations: []KnxNetIpExpectation{},
+ expectations: []Expectation{},
}
// Start a worker that handles processing of responses
go func() {
@@ -63,16 +63,16 @@ func NewKnxNetIpMessageCodec(transportInstance transports.TransportInstance, mes
return codec
}
-func (m *KnxNetIpMessageCodec) Connect() error {
+func (m *MessageCodec) Connect() error {
// "connect" to the remote UDP server
return m.transportInstance.Connect()
}
-func (m *KnxNetIpMessageCodec) Disconnect() error {
+func (m *MessageCodec) Disconnect() error {
return m.transportInstance.Close()
}
-func (m *KnxNetIpMessageCodec) Send(message interface{}) error {
+func (m *MessageCodec) Send(message interface{}) error {
// Cast the message to the correct type of struct
knxMessage := model.CastKnxNetIpMessage(message)
// Serialize the request
@@ -91,8 +91,8 @@ func (m *KnxNetIpMessageCodec) Send(message interface{}) error {
return nil
}
-func (m *KnxNetIpMessageCodec) Expect(acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
- expectation := KnxNetIpExpectation{
+func (m *MessageCodec) Expect(acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
+ expectation := Expectation{
expiration: time.Now().Add(ttl),
acceptsMessage: acceptsMessage,
handleMessage: handleMessage,
@@ -102,7 +102,7 @@ func (m *KnxNetIpMessageCodec) Expect(acceptsMessage spi.AcceptsMessage, handleM
return nil
}
-func (m *KnxNetIpMessageCodec) SendRequest(message interface{}, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
+func (m *MessageCodec) SendRequest(message interface{}, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
// Send the actual message
err := m.Send(message)
if err != nil {
@@ -112,11 +112,11 @@ func (m *KnxNetIpMessageCodec) SendRequest(message interface{}, acceptsMessage s
return err
}
-func (m *KnxNetIpMessageCodec) GetDefaultIncomingMessageChannel() chan interface{} {
+func (m *MessageCodec) GetDefaultIncomingMessageChannel() chan interface{} {
return m.defaultIncomingMessageChannel
}
-func (m *KnxNetIpMessageCodec) receive() (interface{}, error) {
+func (m *MessageCodec) receive() (interface{}, error) {
// We need at least 6 bytes in order to know how big the packet is in total
if num, err := m.transportInstance.GetNumReadableBytes(); (err == nil) && (num >= 6) {
data, err := m.transportInstance.PeekReadableBytes(6)
@@ -151,7 +151,7 @@ func (m *KnxNetIpMessageCodec) receive() (interface{}, error) {
return nil, nil
}
-func work(m *KnxNetIpMessageCodec) {
+func work(m *MessageCodec) {
// If this method ever exits, start it again.
defer work(m)
// Start an endless loop
@@ -241,6 +241,6 @@ func work(m *KnxNetIpMessageCodec) {
}
}
-func (m KnxNetIpMessageCodec) GetTransportInstance() transports.TransportInstance {
+func (m MessageCodec) GetTransportInstance() transports.TransportInstance {
return m.transportInstance
}
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpReader.go b/plc4go/internal/plc4go/knxnetip/Reader.go
similarity index 85%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpReader.go
rename to plc4go/internal/plc4go/knxnetip/Reader.go
index cf3bb5b..f6a9738 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpReader.go
+++ b/plc4go/internal/plc4go/knxnetip/Reader.go
@@ -31,17 +31,17 @@ import (
"time"
)
-type KnxNetIpReader struct {
- connection *KnxNetIpConnection
+type Reader struct {
+ connection *Connection
}
-func NewKnxNetIpReader(connection *KnxNetIpConnection) *KnxNetIpReader {
- return &KnxNetIpReader{
+func NewReader(connection *Connection) *Reader {
+ return &Reader{
connection: connection,
}
}
-func (m KnxNetIpReader) Read(readRequest apiModel.PlcReadRequest) <-chan apiModel.PlcReadRequestResult {
+func (m Reader) Read(readRequest apiModel.PlcReadRequest) <-chan apiModel.PlcReadRequestResult {
resultChan := make(chan apiModel.PlcReadRequestResult)
go func() {
responseCodes := map[string]apiModel.PlcResponseCode{}
@@ -49,11 +49,11 @@ func (m KnxNetIpReader) Read(readRequest apiModel.PlcReadRequest) <-chan apiMode
// Sort the fields in direct properties and memory addresses, which will have to be actively
// read from the devices and group-addresses which will be locally processed from the local cache.
- deviceAddresses := map[driverModel.KnxAddress]map[string]KnxNetIpDeviceField{}
- groupAddresses := map[string]KnxNetIpGroupAddressField{}
+ deviceAddresses := map[driverModel.KnxAddress]map[string]DeviceField{}
+ groupAddresses := map[string]GroupAddressField{}
for _, fieldName := range readRequest.GetFieldNames() {
// Get the knx field
- field, err := CastToKnxNetIpFieldFromPlcField(readRequest.GetField(fieldName))
+ field, err := CastToFieldFromPlcField(readRequest.GetField(fieldName))
if err != nil {
responseCodes[fieldName] = apiModel.PlcResponseCode_INVALID_ADDRESS
plcValues[fieldName] = nil
@@ -61,32 +61,32 @@ func (m KnxNetIpReader) Read(readRequest apiModel.PlcReadRequest) <-chan apiMode
}
switch field.(type) {
- case KnxNetIpDevicePropertyAddressPlcField:
- propertyField := field.(KnxNetIpDevicePropertyAddressPlcField)
+ case DevicePropertyAddressPlcField:
+ propertyField := field.(DevicePropertyAddressPlcField)
knxAddress := propertyField.toKnxAddress()
if knxAddress == nil {
continue
}
if _, ok := deviceAddresses[*knxAddress]; !ok {
- deviceAddresses[*knxAddress] = map[string]KnxNetIpDeviceField{}
+ deviceAddresses[*knxAddress] = map[string]DeviceField{}
}
deviceAddresses[*knxAddress][fieldName] = propertyField
- case KnxNetIpDeviceMemoryAddressPlcField:
- memoryField := field.(KnxNetIpDeviceMemoryAddressPlcField)
+ case DeviceMemoryAddressPlcField:
+ memoryField := field.(DeviceMemoryAddressPlcField)
knxAddress := memoryField.toKnxAddress()
if knxAddress == nil {
continue
}
if _, ok := deviceAddresses[*knxAddress]; !ok {
- deviceAddresses[*knxAddress] = map[string]KnxNetIpDeviceField{}
+ deviceAddresses[*knxAddress] = map[string]DeviceField{}
}
deviceAddresses[*knxAddress][fieldName] = memoryField
- case KnxNetIpCommunicationObjectQueryField:
+ case CommunicationObjectQueryField:
responseCodes[fieldName] = apiModel.PlcResponseCode_INVALID_ADDRESS
plcValues[fieldName] = nil
continue
- case KnxNetIpGroupAddressField:
- groupAddressField := field.(KnxNetIpGroupAddressField)
+ case GroupAddressField:
+ groupAddressField := field.(GroupAddressField)
groupAddresses[fieldName] = groupAddressField
default:
responseCodes[fieldName] = apiModel.PlcResponseCode_INVALID_ADDRESS
@@ -100,8 +100,8 @@ func (m KnxNetIpReader) Read(readRequest apiModel.PlcReadRequest) <-chan apiMode
// Collect all the properties on this device
for fieldName, field := range fields {
switch field.(type) {
- case KnxNetIpDevicePropertyAddressPlcField:
- propertyField := field.(KnxNetIpDevicePropertyAddressPlcField)
+ case DevicePropertyAddressPlcField:
+ propertyField := field.(DevicePropertyAddressPlcField)
results := m.connection.DeviceReadProperty(deviceAddress, propertyField.ObjectId, propertyField.PropertyId, propertyField.PropertyIndex, propertyField.NumElements)
select {
@@ -117,8 +117,8 @@ func (m KnxNetIpReader) Read(readRequest apiModel.PlcReadRequest) <-chan apiMode
responseCodes[fieldName] = apiModel.PlcResponseCode_REMOTE_BUSY
plcValues[fieldName] = nil
}
- case KnxNetIpDeviceMemoryAddressPlcField:
- memoryField := field.(KnxNetIpDeviceMemoryAddressPlcField)
+ case DeviceMemoryAddressPlcField:
+ memoryField := field.(DeviceMemoryAddressPlcField)
results := m.connection.DeviceReadMemory(deviceAddress, memoryField.Address, memoryField.NumElements, memoryField.FieldType)
select {
case result := <-results:
@@ -155,7 +155,7 @@ func (m KnxNetIpReader) Read(readRequest apiModel.PlcReadRequest) <-chan apiMode
return resultChan
}
-func (m KnxNetIpReader) readGroupAddress(field KnxNetIpGroupAddressField) (apiModel.PlcResponseCode, apiValues.PlcValue) {
+func (m Reader) readGroupAddress(field GroupAddressField) (apiModel.PlcResponseCode, apiValues.PlcValue) {
rawAddresses, err := m.resolveAddresses(field)
if err != nil {
return apiModel.PlcResponseCode_INVALID_ADDRESS, nil
@@ -235,12 +235,12 @@ func (m KnxNetIpReader) readGroupAddress(field KnxNetIpGroupAddressField) (apiMo
// If the given field is a field containing a pattern, resolve to all the possible addresses
// it could be referring to.
-func (m KnxNetIpReader) resolveAddresses(field KnxNetIpGroupAddressField) ([]uint16, error) {
+func (m Reader) resolveAddresses(field GroupAddressField) ([]uint16, error) {
// Depending on the type of field, get the uint16 ids of all values that match the current field
var result []uint16
switch field.(type) {
- case KnxNetIpGroupAddress3LevelPlcField:
- address3LevelPlcField := field.(KnxNetIpGroupAddress3LevelPlcField)
+ case GroupAddress3LevelPlcField:
+ address3LevelPlcField := field.(GroupAddress3LevelPlcField)
mainSegmentValues, err := m.resoleSegment(address3LevelPlcField.MainGroup, 0, 31)
if err != nil {
return []uint16{}, err
@@ -260,8 +260,8 @@ func (m KnxNetIpReader) resolveAddresses(field KnxNetIpGroupAddressField) ([]uin
}
}
}
- case KnxNetIpGroupAddress2LevelPlcField:
- address2LevelPlcField := field.(KnxNetIpGroupAddress2LevelPlcField)
+ case GroupAddress2LevelPlcField:
+ address2LevelPlcField := field.(GroupAddress2LevelPlcField)
mainSegmentValues, err := m.resoleSegment(address2LevelPlcField.MainGroup, 0, 31)
if err != nil {
return []uint16{}, err
@@ -275,8 +275,8 @@ func (m KnxNetIpReader) resolveAddresses(field KnxNetIpGroupAddressField) ([]uin
result = append(result, main<<11|sub)
}
}
- case KnxNetIpGroupAddress1LevelPlcField:
- address1LevelPlcField := field.(KnxNetIpGroupAddress1LevelPlcField)
+ case GroupAddress1LevelPlcField:
+ address1LevelPlcField := field.(GroupAddress1LevelPlcField)
mainSegmentValues, err := m.resoleSegment(address1LevelPlcField.MainGroup, 0, 65535)
if err != nil {
return []uint16{}, err
@@ -288,7 +288,7 @@ func (m KnxNetIpReader) resolveAddresses(field KnxNetIpGroupAddressField) ([]uin
return result, nil
}
-func (m KnxNetIpReader) resoleSegment(pattern string, minValue uint16, maxValue uint16) ([]uint16, error) {
+func (m Reader) resoleSegment(pattern string, minValue uint16, maxValue uint16) ([]uint16, error) {
var results []uint16
// A "*" simply matches everything
if pattern == "*" {
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpSubscriber.go b/plc4go/internal/plc4go/knxnetip/Subscriber.go
similarity index 87%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpSubscriber.go
rename to plc4go/internal/plc4go/knxnetip/Subscriber.go
index f1c62c4..1c2d16a 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpSubscriber.go
+++ b/plc4go/internal/plc4go/knxnetip/Subscriber.go
@@ -28,19 +28,19 @@ import (
"time"
)
-type KnxNetIpSubscriber struct {
- connection *KnxNetIpConnection
+type Subscriber struct {
+ connection *Connection
subscriptionRequests []internalModel.DefaultPlcSubscriptionRequest
}
-func NewKnxNetIpSubscriber(connection *KnxNetIpConnection) *KnxNetIpSubscriber {
- return &KnxNetIpSubscriber{
+func NewSubscriber(connection *Connection) *Subscriber {
+ return &Subscriber{
connection: connection,
subscriptionRequests: []internalModel.DefaultPlcSubscriptionRequest{},
}
}
-func (m *KnxNetIpSubscriber) Subscribe(subscriptionRequest apiModel.PlcSubscriptionRequest) <-chan apiModel.PlcSubscriptionRequestResult {
+func (m *Subscriber) Subscribe(subscriptionRequest apiModel.PlcSubscriptionRequest) <-chan apiModel.PlcSubscriptionRequestResult {
result := make(chan apiModel.PlcSubscriptionRequestResult)
go func() {
// Add this subscriber to the connection.
@@ -64,7 +64,7 @@ func (m *KnxNetIpSubscriber) Subscribe(subscriptionRequest apiModel.PlcSubscript
return result
}
-func (m *KnxNetIpSubscriber) Unsubscribe(unsubscriptionRequest apiModel.PlcUnsubscriptionRequest) <-chan apiModel.PlcUnsubscriptionRequestResult {
+func (m *Subscriber) Unsubscribe(unsubscriptionRequest apiModel.PlcUnsubscriptionRequest) <-chan apiModel.PlcUnsubscriptionRequestResult {
result := make(chan apiModel.PlcUnsubscriptionRequestResult)
// TODO: As soon as we establish a connection, we start getting data...
@@ -76,7 +76,7 @@ func (m *KnxNetIpSubscriber) Unsubscribe(unsubscriptionRequest apiModel.PlcUnsub
/*
* Callback for incoming value change events from the KNX bus
*/
-func (m *KnxNetIpSubscriber) handleValueChange(destinationAddress []int8, payload []int8, changed bool) {
+func (m *Subscriber) handleValueChange(destinationAddress []int8, payload []int8, changed bool) {
// Decode the group-address according to the settings in the driver
// Group addresses can be 1, 2 or 3 levels (3 being the default)
garb := utils.NewReadBuffer(utils.Int8ArrayToUint8Array(destinationAddress))
@@ -97,14 +97,14 @@ func (m *KnxNetIpSubscriber) handleValueChange(destinationAddress []int8, payloa
// Check if this datagram matches any address in this subscription request
// As depending on the address used for fields, the decoding is different, we need to decode on-demand here.
for _, fieldName := range subscriptionRequest.GetFieldNames() {
- field, err := CastToKnxNetIpFieldFromPlcField(subscriptionRequest.GetField(fieldName))
+ field, err := CastToFieldFromPlcField(subscriptionRequest.GetField(fieldName))
if err != nil {
continue
}
switch field.(type) {
- case KnxNetIpGroupAddressField:
+ case GroupAddressField:
subscriptionType := subscriptionRequest.GetType(fieldName)
- groupAddressField := field.(KnxNetIpGroupAddressField)
+ groupAddressField := field.(GroupAddressField)
// If it matches, take the datatype of each matching field and try to decode the payload
if groupAddressField.matches(groupAddress) {
// If this is a CHANGE_OF_STATE field, filter out the events where the value actually hasn't changed.
@@ -137,7 +137,7 @@ func (m *KnxNetIpSubscriber) handleValueChange(destinationAddress []int8, payloa
if !rb.HasMore(1) {
rb.Reset()
}
- plcValue := values2.NewRawPlcValue(rb, NewKnxNetIpValueDecoder(rb))
+ plcValue := values2.NewRawPlcValue(rb, NewValueDecoder(rb))
plcValueList = append(plcValueList, plcValue)
} else {
plcValue, err2 := driverModel.KnxDatapointParse(rb, elementType)
@@ -168,7 +168,7 @@ func (m *KnxNetIpSubscriber) handleValueChange(destinationAddress []int8, payloa
// Assemble a PlcSubscription event
if len(plcValues) > 0 {
- event := NewKnxNetIpSubscriptionEvent(
+ event := NewSubscriptionEvent(
fields, types, intervals, responseCodes, addresses, plcValues)
eventHandler := subscriptionRequest.GetEventHandler()
eventHandler(event)
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpSubscriptionEvent.go b/plc4go/internal/plc4go/knxnetip/SubscriptionEvent.go
similarity index 84%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpSubscriptionEvent.go
rename to plc4go/internal/plc4go/knxnetip/SubscriptionEvent.go
index d5cf0ea..87ab82d 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpSubscriptionEvent.go
+++ b/plc4go/internal/plc4go/knxnetip/SubscriptionEvent.go
@@ -27,15 +27,15 @@ import (
"time"
)
-type KnxNetIpSubscriptionEvent struct {
+type SubscriptionEvent struct {
addresses map[string][]int8
internalMode.DefaultPlcSubscriptionEvent
}
-func NewKnxNetIpSubscriptionEvent(fields map[string]apiModel.PlcField, types map[string]internalMode.SubscriptionType,
+func NewSubscriptionEvent(fields map[string]apiModel.PlcField, types map[string]internalMode.SubscriptionType,
intervals map[string]time.Duration, responseCodes map[string]apiModel.PlcResponseCode,
- addresses map[string][]int8, values map[string]values.PlcValue) KnxNetIpSubscriptionEvent {
- return KnxNetIpSubscriptionEvent{
+ addresses map[string][]int8, values map[string]values.PlcValue) SubscriptionEvent {
+ return SubscriptionEvent{
addresses: addresses,
DefaultPlcSubscriptionEvent: internalMode.NewDefaultPlcSubscriptionEvent(fields, types, intervals, responseCodes, values),
}
@@ -44,18 +44,18 @@ func NewKnxNetIpSubscriptionEvent(fields map[string]apiModel.PlcField, types map
/*
* Decode the binary data in the address according to the field requested
*/
-func (m KnxNetIpSubscriptionEvent) GetAddress(name string) string {
+func (m SubscriptionEvent) GetAddress(name string) string {
rawAddress := m.addresses[name]
rawAddressReadBuffer := utils.NewReadBuffer(utils.Int8ArrayToUint8Array(rawAddress))
field := m.DefaultPlcSubscriptionEvent.GetField(name)
var groupAddress *driverModel.KnxGroupAddress
var err error
switch field.(type) {
- case KnxNetIpGroupAddress3LevelPlcField:
+ case GroupAddress3LevelPlcField:
groupAddress, err = driverModel.KnxGroupAddressParse(rawAddressReadBuffer, 3)
- case KnxNetIpGroupAddress2LevelPlcField:
+ case GroupAddress2LevelPlcField:
groupAddress, err = driverModel.KnxGroupAddressParse(rawAddressReadBuffer, 2)
- case KnxNetIpGroupAddress1LevelPlcField:
+ case GroupAddress1LevelPlcField:
groupAddress, err = driverModel.KnxGroupAddressParse(rawAddressReadBuffer, 1)
}
if err != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/Utils.go b/plc4go/internal/plc4go/knxnetip/Utils.go
index 54ef154..b5ee41b 100644
--- a/plc4go/internal/plc4go/knxnetip/Utils.go
+++ b/plc4go/internal/plc4go/knxnetip/Utils.go
@@ -24,19 +24,19 @@ import (
"strconv"
)
-func NumericGroupAddressToString(numericAddress uint16, groupAddress KnxNetIpGroupAddressField) string {
+func NumericGroupAddressToString(numericAddress uint16, groupAddress GroupAddressField) string {
if groupAddress != nil {
switch groupAddress.(type) {
- case KnxNetIpGroupAddress3LevelPlcField:
+ case GroupAddress3LevelPlcField:
main := numericAddress >> 11
middle := (numericAddress >> 8) & 0x07
sub := numericAddress & 0xFF
return strconv.Itoa(int(main)) + "/" + strconv.Itoa(int(middle)) + "/" + strconv.Itoa(int(sub))
- case KnxNetIpGroupAddress2LevelPlcField:
+ case GroupAddress2LevelPlcField:
main := numericAddress >> 11
sub := numericAddress & 0x07FF
return strconv.Itoa(int(main)) + "/" + strconv.Itoa(int(sub))
- case KnxNetIpGroupAddress1LevelPlcField:
+ case GroupAddress1LevelPlcField:
return strconv.Itoa(int(numericAddress))
}
}
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpValueDecoder.go b/plc4go/internal/plc4go/knxnetip/ValueDecoder.go
similarity index 85%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpValueDecoder.go
rename to plc4go/internal/plc4go/knxnetip/ValueDecoder.go
index 629c75d..bc7f771 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpValueDecoder.go
+++ b/plc4go/internal/plc4go/knxnetip/ValueDecoder.go
@@ -24,17 +24,17 @@ import (
api "github.com/apache/plc4x/plc4go/pkg/plc4go/values"
)
-type KnxNetIpValueDecoder struct {
+type ValueDecoder struct {
rb *utils.ReadBuffer
}
-func NewKnxNetIpValueDecoder(rb *utils.ReadBuffer) KnxNetIpValueDecoder {
- return KnxNetIpValueDecoder{
+func NewValueDecoder(rb *utils.ReadBuffer) ValueDecoder {
+ return ValueDecoder{
rb: rb,
}
}
-func (m KnxNetIpValueDecoder) Decode(typeName string) api.PlcValue {
+func (m ValueDecoder) Decode(typeName string) api.PlcValue {
datatype := driverModel.KnxDatapointTypeByName(typeName)
plcValue, err := driverModel.KnxDatapointParse(m.rb, datatype)
if err != nil {
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpValueHandler.go b/plc4go/internal/plc4go/knxnetip/ValueHandler.go
similarity index 81%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpValueHandler.go
rename to plc4go/internal/plc4go/knxnetip/ValueHandler.go
index a32b73e..84602bb 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpValueHandler.go
+++ b/plc4go/internal/plc4go/knxnetip/ValueHandler.go
@@ -23,13 +23,13 @@ import (
"github.com/apache/plc4x/plc4go/pkg/plc4go/values"
)
-type KnxNetIpValueHandler struct {
+type ValueHandler struct {
}
-func NewValueHandler() KnxNetIpValueHandler {
- return KnxNetIpValueHandler{}
+func NewValueHandler() ValueHandler {
+ return ValueHandler{}
}
-func (m KnxNetIpValueHandler) NewPlcValue(field model.PlcField, value interface{}) (values.PlcValue, error) {
+func (m ValueHandler) NewPlcValue(field model.PlcField, value interface{}) (values.PlcValue, error) {
return nil, nil
}
diff --git a/plc4go/internal/plc4go/knxnetip/KnxNetIpWriter.go b/plc4go/internal/plc4go/knxnetip/Writer.go
similarity index 77%
rename from plc4go/internal/plc4go/knxnetip/KnxNetIpWriter.go
rename to plc4go/internal/plc4go/knxnetip/Writer.go
index 138c145..8ef7b31 100644
--- a/plc4go/internal/plc4go/knxnetip/KnxNetIpWriter.go
+++ b/plc4go/internal/plc4go/knxnetip/Writer.go
@@ -20,23 +20,23 @@ package knxnetip
import (
"errors"
- knxnetipModel "github.com/apache/plc4x/plc4go/internal/plc4go/knxnetip/readwrite/model"
+ readWriteModel "github.com/apache/plc4x/plc4go/internal/plc4go/knxnetip/readwrite/model"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
"github.com/apache/plc4x/plc4go/pkg/plc4go/model"
)
-type KnxNetIpWriter struct {
+type Writer struct {
messageCodec spi.MessageCodec
}
-func NewKnxNetIpWriter(messageCodec spi.MessageCodec) KnxNetIpWriter {
- return KnxNetIpWriter{
+func NewWriter(messageCodec spi.MessageCodec) Writer {
+ return Writer{
messageCodec: messageCodec,
}
}
-func (m KnxNetIpWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.PlcWriteRequestResult {
+func (m Writer) Write(writeRequest model.PlcWriteRequest) <-chan model.PlcWriteRequestResult {
result := make(chan model.PlcWriteRequestResult)
// If we are requesting only one field, use a
if len(writeRequest.GetFieldNames()) == 1 {
@@ -44,7 +44,7 @@ func (m KnxNetIpWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.P
// Get the KnxNetIp field instance from the request
field := writeRequest.GetField(fieldName)
- knxNetIpField, err := CastToKnxNetIpFieldFromPlcField(field)
+ knxNetIpField, err := CastToFieldFromPlcField(field)
if err != nil {
result <- model.PlcWriteRequestResult{
Request: writeRequest,
@@ -57,8 +57,8 @@ func (m KnxNetIpWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.P
// Get the value from the request and serialize it to a byte array
value := writeRequest.GetValue(fieldName)
io := utils.NewWriteBuffer()
- fieldType := knxnetipModel.KnxDatapointTypeByName(knxNetIpField.GetTypeName())
- if err := knxnetipModel.KnxDatapointSerialize(io, value, fieldType); err != nil {
+ fieldType := readWriteModel.KnxDatapointTypeByName(knxNetIpField.GetTypeName())
+ if err := readWriteModel.KnxDatapointSerialize(io, value, fieldType); err != nil {
result <- model.PlcWriteRequestResult{
Request: writeRequest,
Response: nil,
diff --git a/plc4go/internal/plc4go/modbus/ModbusConnection.go b/plc4go/internal/plc4go/modbus/Connection.go
similarity index 70%
rename from plc4go/internal/plc4go/modbus/ModbusConnection.go
rename to plc4go/internal/plc4go/modbus/Connection.go
index f244320..468dd7a 100644
--- a/plc4go/internal/plc4go/modbus/ModbusConnection.go
+++ b/plc4go/internal/plc4go/modbus/Connection.go
@@ -21,7 +21,7 @@ package modbus
import (
"errors"
"fmt"
- driverModel "github.com/apache/plc4x/plc4go/internal/plc4go/modbus/readwrite/model"
+ readWriteModel "github.com/apache/plc4x/plc4go/internal/plc4go/modbus/readwrite/model"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/interceptors"
internalModel "github.com/apache/plc4x/plc4go/internal/plc4go/spi/model"
@@ -54,7 +54,7 @@ func (m ConnectionMetadata) CanBrowse() bool {
return false
}
-type ModbusConnection struct {
+type Connection struct {
unitIdentifier uint8
messageCodec spi.MessageCodec
options map[string][]string
@@ -64,8 +64,8 @@ type ModbusConnection struct {
plc4go.PlcConnection
}
-func NewModbusConnection(unitIdentifier uint8, messageCodec spi.MessageCodec, options map[string][]string, fieldHandler spi.PlcFieldHandler) ModbusConnection {
- return ModbusConnection{
+func NewConnection(unitIdentifier uint8, messageCodec spi.MessageCodec, options map[string][]string, fieldHandler spi.PlcFieldHandler) Connection {
+ return Connection{
unitIdentifier: unitIdentifier,
messageCodec: messageCodec,
options: options,
@@ -75,7 +75,7 @@ func NewModbusConnection(unitIdentifier uint8, messageCodec spi.MessageCodec, op
}
}
-func (m ModbusConnection) Connect() <-chan plc4go.PlcConnectionConnectResult {
+func (m Connection) Connect() <-chan plc4go.PlcConnectionConnectResult {
ch := make(chan plc4go.PlcConnectionConnectResult)
go func() {
err := m.messageCodec.Connect()
@@ -84,7 +84,7 @@ func (m ModbusConnection) Connect() <-chan plc4go.PlcConnectionConnectResult {
return ch
}
-func (m ModbusConnection) BlockingClose() {
+func (m Connection) BlockingClose() {
closeResults := m.Close()
select {
case <-closeResults:
@@ -94,7 +94,7 @@ func (m ModbusConnection) BlockingClose() {
}
}
-func (m ModbusConnection) Close() <-chan plc4go.PlcConnectionCloseResult {
+func (m Connection) Close() <-chan plc4go.PlcConnectionCloseResult {
// TODO: Implement ...
ch := make(chan plc4go.PlcConnectionCloseResult)
go func() {
@@ -103,19 +103,19 @@ func (m ModbusConnection) Close() <-chan plc4go.PlcConnectionCloseResult {
return ch
}
-func (m ModbusConnection) IsConnected() bool {
+func (m Connection) IsConnected() bool {
panic("implement me")
}
-func (m ModbusConnection) Ping() <-chan plc4go.PlcConnectionPingResult {
+func (m Connection) Ping() <-chan plc4go.PlcConnectionPingResult {
result := make(chan plc4go.PlcConnectionPingResult)
- diagnosticRequestPdu := driverModel.NewModbusPDUDiagnosticRequest(0, 0x42)
+ diagnosticRequestPdu := readWriteModel.NewModbusPDUDiagnosticRequest(0, 0x42)
go func() {
- pingRequest := driverModel.NewModbusTcpADU(1, m.unitIdentifier, diagnosticRequestPdu)
+ pingRequest := readWriteModel.NewModbusTcpADU(1, m.unitIdentifier, diagnosticRequestPdu)
err := m.messageCodec.SendRequest(
pingRequest,
func(message interface{}) bool {
- responseAdu := driverModel.CastModbusTcpADU(message)
+ responseAdu := readWriteModel.CastModbusTcpADU(message)
return responseAdu.TransactionIdentifier == 1 &&
responseAdu.UnitIdentifier == m.unitIdentifier
},
@@ -142,39 +142,39 @@ func (m ModbusConnection) Ping() <-chan plc4go.PlcConnectionPingResult {
return result
}
-func (m ModbusConnection) GetMetadata() apiModel.PlcConnectionMetadata {
+func (m Connection) GetMetadata() apiModel.PlcConnectionMetadata {
return ConnectionMetadata{}
}
-func (m ModbusConnection) ReadRequestBuilder() apiModel.PlcReadRequestBuilder {
+func (m Connection) ReadRequestBuilder() apiModel.PlcReadRequestBuilder {
return internalModel.NewDefaultPlcReadRequestBuilderWithInterceptor(m.fieldHandler,
- NewModbusReader(m.unitIdentifier, m.messageCodec), m.requestInterceptor)
+ NewReader(m.unitIdentifier, m.messageCodec), m.requestInterceptor)
}
-func (m ModbusConnection) WriteRequestBuilder() apiModel.PlcWriteRequestBuilder {
+func (m Connection) WriteRequestBuilder() apiModel.PlcWriteRequestBuilder {
return internalModel.NewDefaultPlcWriteRequestBuilder(
- m.fieldHandler, m.valueHandler, NewModbusWriter(m.unitIdentifier, m.messageCodec))
+ m.fieldHandler, m.valueHandler, NewWriter(m.unitIdentifier, m.messageCodec))
}
-func (m ModbusConnection) SubscriptionRequestBuilder() apiModel.PlcSubscriptionRequestBuilder {
+func (m Connection) SubscriptionRequestBuilder() apiModel.PlcSubscriptionRequestBuilder {
panic("implement me")
}
-func (m ModbusConnection) UnsubscriptionRequestBuilder() apiModel.PlcUnsubscriptionRequestBuilder {
+func (m Connection) UnsubscriptionRequestBuilder() apiModel.PlcUnsubscriptionRequestBuilder {
panic("implement me")
}
-func (m ModbusConnection) GetTransportInstance() transports.TransportInstance {
+func (m Connection) GetTransportInstance() transports.TransportInstance {
if mc, ok := m.messageCodec.(spi.TransportInstanceExposer); ok {
return mc.GetTransportInstance()
}
return nil
}
-func (m ModbusConnection) GetPlcFieldHandler() spi.PlcFieldHandler {
+func (m Connection) GetPlcFieldHandler() spi.PlcFieldHandler {
return m.fieldHandler
}
-func (m ModbusConnection) GetPlcValueHandler() spi.PlcValueHandler {
+func (m Connection) GetPlcValueHandler() spi.PlcValueHandler {
return m.valueHandler
}
diff --git a/plc4go/internal/plc4go/modbus/ModbusDriver.go b/plc4go/internal/plc4go/modbus/Driver.go
similarity index 80%
rename from plc4go/internal/plc4go/modbus/ModbusDriver.go
rename to plc4go/internal/plc4go/modbus/Driver.go
index 7f9dec0..9f8abda 100644
--- a/plc4go/internal/plc4go/modbus/ModbusDriver.go
+++ b/plc4go/internal/plc4go/modbus/Driver.go
@@ -31,34 +31,34 @@ import (
"strconv"
)
-type ModbusDriver struct {
+type Driver struct {
fieldHandler spi.PlcFieldHandler
}
-func NewModbusDriver() *ModbusDriver {
- return &ModbusDriver{
+func NewDriver() *Driver {
+ return &Driver{
fieldHandler: NewFieldHandler(),
}
}
-func (m ModbusDriver) GetProtocolCode() string {
+func (m Driver) GetProtocolCode() string {
return "modbus"
}
-func (m ModbusDriver) GetProtocolName() string {
+func (m Driver) GetProtocolName() string {
return "Modbus"
}
-func (m ModbusDriver) GetDefaultTransport() string {
+func (m Driver) GetDefaultTransport() string {
return "tcp"
}
-func (m ModbusDriver) CheckQuery(query string) error {
+func (m Driver) CheckQuery(query string) error {
_, err := m.fieldHandler.ParseQuery(query)
return err
}
-func (m ModbusDriver) GetConnection(transportUrl url.URL, transports map[string]transports.Transport, options map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
+func (m Driver) GetConnection(transportUrl url.URL, transports map[string]transports.Transport, options map[string][]string) <-chan plc4go.PlcConnectionConnectResult {
// Get an the transport specified in the url
transport, ok := transports[transportUrl.Scheme]
if !ok {
@@ -90,7 +90,7 @@ func (m ModbusDriver) GetConnection(transportUrl url.URL, transports map[string]
}
}
}()
- codec := NewModbusMessageCodec(transportInstance, nil)
+ codec := NewMessageCodec(transportInstance, nil)
// If a unit-identifier was provided in the connection string use this, otherwise use the default of 1
unitIdentifier := uint8(1)
@@ -103,14 +103,14 @@ func (m ModbusDriver) GetConnection(transportUrl url.URL, transports map[string]
}
// Create the new connection
- connection := NewModbusConnection(unitIdentifier, codec, options, m.fieldHandler)
+ connection := NewConnection(unitIdentifier, codec, options, m.fieldHandler)
return connection.Connect()
}
-func (m ModbusDriver) SupportsDiscovery() bool {
+func (m Driver) SupportsDiscovery() bool {
return false
}
-func (m ModbusDriver) Discover(callback func(event apiModel.PlcDiscoveryEvent)) error {
+func (m Driver) Discover(callback func(event apiModel.PlcDiscoveryEvent)) error {
panic("implement me")
}
diff --git a/plc4go/internal/plc4go/modbus/ModbusField.go b/plc4go/internal/plc4go/modbus/Field.go
similarity index 70%
rename from plc4go/internal/plc4go/modbus/ModbusField.go
rename to plc4go/internal/plc4go/modbus/Field.go
index 15e4840..375fb12 100644
--- a/plc4go/internal/plc4go/modbus/ModbusField.go
+++ b/plc4go/internal/plc4go/modbus/Field.go
@@ -31,15 +31,15 @@ const (
MODBUS_PROTOCOL_ADDRESS_OFFSET = 1
)
-type ModbusPlcField struct {
- FieldType ModbusFieldType
+type PlcField struct {
+ FieldType FieldType
Address uint16
Quantity uint16
Datatype model2.ModbusDataType
}
-func NewModbusPlcField(fieldType ModbusFieldType, address uint16, quantity uint16, datatype model2.ModbusDataType) ModbusPlcField {
- return ModbusPlcField{
+func NewField(fieldType FieldType, address uint16, quantity uint16, datatype model2.ModbusDataType) PlcField {
+ return PlcField{
FieldType: fieldType,
Address: address - MODBUS_PROTOCOL_ADDRESS_OFFSET,
Quantity: quantity,
@@ -47,7 +47,7 @@ func NewModbusPlcField(fieldType ModbusFieldType, address uint16, quantity uint1
}
}
-func NewModbusPlcFieldFromStrings(fieldType ModbusFieldType, addressString string, quantityString string, datatype model2.ModbusDataType) (model.PlcField, error) {
+func NewModbusPlcFieldFromStrings(fieldType FieldType, addressString string, quantityString string, datatype model2.ModbusDataType) (model.PlcField, error) {
address, err := strconv.Atoi(addressString)
if err != nil {
return nil, errors.New("Couldn't parse address string '" + addressString + "' into an int")
@@ -56,45 +56,45 @@ func NewModbusPlcFieldFromStrings(fieldType ModbusFieldType, addressString strin
if err != nil {
quantity = 1
}
- return NewModbusPlcField(fieldType, uint16(address), uint16(quantity), datatype), nil
+ return NewField(fieldType, uint16(address), uint16(quantity), datatype), nil
}
-func (m ModbusPlcField) GetAddressString() string {
+func (m PlcField) GetAddressString() string {
switch m.FieldType {
- case MODBUS_FIELD_COIL:
+ case Coil:
return fmt.Sprintf("0x%05d:%s[%d]", m.Address, m.Datatype.String(), m.Quantity)
- case MODBUS_FIELD_DISCRETE_INPUT:
+ case DiscreteInput:
return fmt.Sprintf("1x%05d:%s[%d]", m.Address, m.Datatype.String(), m.Quantity)
- case MODBUS_FIELD_INPUT_REGISTER:
+ case InputRegister:
return fmt.Sprintf("3x%05d:%s[%d]", m.Address, m.Datatype.String(), m.Quantity)
- case MODBUS_FIELD_HOLDING_REGISTER:
+ case HoldingRegister:
return fmt.Sprintf("4x%05d:%s[%d]", m.Address, m.Datatype.String(), m.Quantity)
- case MODBUS_FIELD_EXTENDED_REGISTER:
+ case ExtendedRegister:
return fmt.Sprintf("6x%05d:%s[%d]", m.Address, m.Datatype.String(), m.Quantity)
}
return ""
}
-func (m ModbusPlcField) GetTypeName() string {
+func (m PlcField) GetTypeName() string {
return m.Datatype.String()
}
-func (m ModbusPlcField) GetDataType() model2.ModbusDataType {
+func (m PlcField) GetDataType() model2.ModbusDataType {
return m.Datatype
}
-func (m ModbusPlcField) GetQuantity() uint16 {
+func (m PlcField) GetQuantity() uint16 {
return m.Quantity
}
-func CastToModbusFieldFromPlcField(plcField model.PlcField) (ModbusPlcField, error) {
- if modbusField, ok := plcField.(ModbusPlcField); ok {
+func CastToModbusFieldFromPlcField(plcField model.PlcField) (PlcField, error) {
+ if modbusField, ok := plcField.(PlcField); ok {
return modbusField, nil
}
- return ModbusPlcField{}, errors.New("couldn't cast to ModbusPlcField")
+ return PlcField{}, errors.New("couldn't cast to ModbusPlcField")
}
-func (m ModbusPlcField) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
+func (m PlcField) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if err := e.EncodeToken(xml.StartElement{Name: xml.Name{Local: m.FieldType.GetName()}}); err != nil {
return err
}
diff --git a/plc4go/internal/plc4go/modbus/ModbusFieldHandler.go b/plc4go/internal/plc4go/modbus/FieldHandler.go
similarity index 67%
rename from plc4go/internal/plc4go/modbus/ModbusFieldHandler.go
rename to plc4go/internal/plc4go/modbus/FieldHandler.go
index 88c443b..c1b88d6 100644
--- a/plc4go/internal/plc4go/modbus/ModbusFieldHandler.go
+++ b/plc4go/internal/plc4go/modbus/FieldHandler.go
@@ -27,27 +27,27 @@ import (
"regexp"
)
-type ModbusFieldType uint8
+type FieldType uint8
const (
- MODBUS_FIELD_COIL ModbusFieldType = 0x00
- MODBUS_FIELD_DISCRETE_INPUT ModbusFieldType = 0x01
- MODBUS_FIELD_INPUT_REGISTER ModbusFieldType = 0x03
- MODBUS_FIELD_HOLDING_REGISTER ModbusFieldType = 0x04
- MODBUS_FIELD_EXTENDED_REGISTER ModbusFieldType = 0x06
+ Coil FieldType = 0x00
+ DiscreteInput FieldType = 0x01
+ InputRegister FieldType = 0x03
+ HoldingRegister FieldType = 0x04
+ ExtendedRegister FieldType = 0x06
)
-func (m ModbusFieldType) GetName() string {
+func (m FieldType) GetName() string {
switch m {
- case MODBUS_FIELD_COIL:
+ case Coil:
return "ModbusFieldHoldingRegister"
- case MODBUS_FIELD_DISCRETE_INPUT:
+ case DiscreteInput:
return "ModbusFieldDiscreteInput"
- case MODBUS_FIELD_INPUT_REGISTER:
+ case InputRegister:
return "ModbusFieldInputRegister"
- case MODBUS_FIELD_HOLDING_REGISTER:
+ case HoldingRegister:
return "ModbusFieldHoldingRegister"
- case MODBUS_FIELD_EXTENDED_REGISTER:
+ case ExtendedRegister:
return "ModbusFieldExtendedRegister"
}
return ""
@@ -86,25 +86,25 @@ func NewFieldHandler() FieldHandler {
func (m FieldHandler) ParseQuery(query string) (model.PlcField, error) {
if match := utils.GetSubgroupMatches(m.plc4xCoilPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_COIL, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(Coil, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.numericCoilPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_COIL, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(Coil, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.plc4xDiscreteInputPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_DISCRETE_INPUT, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(DiscreteInput, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.numericDiscreteInputPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_DISCRETE_INPUT, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(DiscreteInput, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.plc4xInputRegisterPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_INPUT_REGISTER, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(InputRegister, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.numericInputRegisterPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_INPUT_REGISTER, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(InputRegister, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.plc4xHoldingRegisterPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_HOLDING_REGISTER, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(HoldingRegister, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.numericHoldingRegisterPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_HOLDING_REGISTER, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(HoldingRegister, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.plc4xExtendedRegisterPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_EXTENDED_REGISTER, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(ExtendedRegister, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
} else if match := utils.GetSubgroupMatches(m.numericExtendedRegisterPattern, query); match != nil {
- return NewModbusPlcFieldFromStrings(MODBUS_FIELD_EXTENDED_REGISTER, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
+ return NewModbusPlcFieldFromStrings(ExtendedRegister, match["address"], match["quantity"], model2.ModbusDataTypeByName(match["datatype"]))
}
return nil, errors.New("Invalid address format for address '" + query + "'")
}
diff --git a/plc4go/internal/plc4go/modbus/ModbusMessageCodec.go b/plc4go/internal/plc4go/modbus/MessageCodec.go
similarity index 80%
rename from plc4go/internal/plc4go/modbus/ModbusMessageCodec.go
rename to plc4go/internal/plc4go/modbus/MessageCodec.go
index 5733ebb..49f62f5 100644
--- a/plc4go/internal/plc4go/modbus/ModbusMessageCodec.go
+++ b/plc4go/internal/plc4go/modbus/MessageCodec.go
@@ -28,41 +28,41 @@ import (
"time"
)
-type ModbusExpectation struct {
+type Expectation struct {
expiration time.Time
acceptsMessage spi.AcceptsMessage
handleMessage spi.HandleMessage
handleError spi.HandleError
}
-type ModbusMessageCodec struct {
+type MessageCodec struct {
expectationCounter int32
transportInstance transports.TransportInstance
defaultIncomingMessageChannel chan interface{}
- expectations []ModbusExpectation
+ expectations []Expectation
}
-func NewModbusMessageCodec(transportInstance transports.TransportInstance, defaultIncomingMessageChannel chan interface{}) *ModbusMessageCodec {
- codec := &ModbusMessageCodec{
+func NewMessageCodec(transportInstance transports.TransportInstance, defaultIncomingMessageChannel chan interface{}) *MessageCodec {
+ codec := &MessageCodec{
expectationCounter: 1,
transportInstance: transportInstance,
defaultIncomingMessageChannel: defaultIncomingMessageChannel,
- expectations: []ModbusExpectation{},
+ expectations: []Expectation{},
}
// Start a worker that handles processing of responses
go work(codec)
return codec
}
-func (m *ModbusMessageCodec) Connect() error {
+func (m *MessageCodec) Connect() error {
return m.transportInstance.Connect()
}
-func (m *ModbusMessageCodec) Disconnect() error {
+func (m *MessageCodec) Disconnect() error {
return m.transportInstance.Close()
}
-func (m *ModbusMessageCodec) Send(message interface{}) error {
+func (m *MessageCodec) Send(message interface{}) error {
// Cast the message to the correct type of struct
adu := model.CastModbusTcpADU(message)
// Serialize the request
@@ -80,8 +80,8 @@ func (m *ModbusMessageCodec) Send(message interface{}) error {
return nil
}
-func (m *ModbusMessageCodec) Expect(acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
- expectation := ModbusExpectation{
+func (m *MessageCodec) Expect(acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
+ expectation := Expectation{
expiration: time.Now().Add(ttl),
acceptsMessage: acceptsMessage,
handleMessage: handleMessage,
@@ -91,7 +91,7 @@ func (m *ModbusMessageCodec) Expect(acceptsMessage spi.AcceptsMessage, handleMes
return nil
}
-func (m *ModbusMessageCodec) SendRequest(message interface{}, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
+func (m *MessageCodec) SendRequest(message interface{}, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
// Send the actual message
err := m.Send(message)
if err != nil {
@@ -100,11 +100,11 @@ func (m *ModbusMessageCodec) SendRequest(message interface{}, acceptsMessage spi
return m.Expect(acceptsMessage, handleMessage, handleError, ttl)
}
-func (m *ModbusMessageCodec) GetDefaultIncomingMessageChannel() chan interface{} {
+func (m *MessageCodec) GetDefaultIncomingMessageChannel() chan interface{} {
return m.defaultIncomingMessageChannel
}
-func (m *ModbusMessageCodec) receive() (interface{}, error) {
+func (m *MessageCodec) receive() (interface{}, error) {
// We need at least 6 bytes in order to know how big the packet is in total
if num, err := m.transportInstance.GetNumReadableBytes(); (err == nil) && (num >= 6) {
data, err := m.transportInstance.PeekReadableBytes(6)
@@ -132,7 +132,7 @@ func (m *ModbusMessageCodec) receive() (interface{}, error) {
return nil, nil
}
-func work(m *ModbusMessageCodec) {
+func work(m *MessageCodec) {
// Start an endless loop
// TODO: Provide some means to terminate this ...
for {
@@ -183,6 +183,6 @@ func work(m *ModbusMessageCodec) {
}
}
-func (m ModbusMessageCodec) GetTransportInstance() transports.TransportInstance {
+func (m MessageCodec) GetTransportInstance() transports.TransportInstance {
return m.transportInstance
}
diff --git a/plc4go/internal/plc4go/modbus/ModbusReader.go b/plc4go/internal/plc4go/modbus/Reader.go
similarity index 73%
rename from plc4go/internal/plc4go/modbus/ModbusReader.go
rename to plc4go/internal/plc4go/modbus/Reader.go
index 67eace6..5c8fd2e 100644
--- a/plc4go/internal/plc4go/modbus/ModbusReader.go
+++ b/plc4go/internal/plc4go/modbus/Reader.go
@@ -20,7 +20,7 @@ package modbus
import (
"errors"
- modbusModel "github.com/apache/plc4x/plc4go/internal/plc4go/modbus/readwrite/model"
+ readWriteModel "github.com/apache/plc4x/plc4go/internal/plc4go/modbus/readwrite/model"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi"
plc4goModel "github.com/apache/plc4x/plc4go/internal/plc4go/spi/model"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
@@ -31,21 +31,21 @@ import (
"time"
)
-type ModbusReader struct {
+type Reader struct {
transactionIdentifier int32
unitIdentifier uint8
messageCodec spi.MessageCodec
}
-func NewModbusReader(unitIdentifier uint8, messageCodec spi.MessageCodec) *ModbusReader {
- return &ModbusReader{
+func NewReader(unitIdentifier uint8, messageCodec spi.MessageCodec) *Reader {
+ return &Reader{
transactionIdentifier: 0,
unitIdentifier: unitIdentifier,
messageCodec: messageCodec,
}
}
-func (m *ModbusReader) Read(readRequest model.PlcReadRequest) <-chan model.PlcReadRequestResult {
+func (m *Reader) Read(readRequest model.PlcReadRequest) <-chan model.PlcReadRequestResult {
result := make(chan model.PlcReadRequestResult)
// If we are requesting only one field, use a
if len(readRequest.GetFieldNames()) == 1 {
@@ -61,17 +61,17 @@ func (m *ModbusReader) Read(readRequest model.PlcReadRequest) <-chan model.PlcRe
return result
}
numWords := uint16(math.Ceil(float64(modbusField.Quantity*uint16(modbusField.Datatype.DataTypeSize())) / float64(2)))
- var pdu *modbusModel.ModbusPDU = nil
+ var pdu *readWriteModel.ModbusPDU = nil
switch modbusField.FieldType {
- case MODBUS_FIELD_COIL:
- pdu = modbusModel.NewModbusPDUReadCoilsRequest(modbusField.Address, modbusField.Quantity)
- case MODBUS_FIELD_DISCRETE_INPUT:
- pdu = modbusModel.NewModbusPDUReadDiscreteInputsRequest(modbusField.Address, modbusField.Quantity)
- case MODBUS_FIELD_INPUT_REGISTER:
- pdu = modbusModel.NewModbusPDUReadInputRegistersRequest(modbusField.Address, numWords)
- case MODBUS_FIELD_HOLDING_REGISTER:
- pdu = modbusModel.NewModbusPDUReadHoldingRegistersRequest(modbusField.Address, numWords)
- case MODBUS_FIELD_EXTENDED_REGISTER:
+ case Coil:
+ pdu = readWriteModel.NewModbusPDUReadCoilsRequest(modbusField.Address, modbusField.Quantity)
+ case DiscreteInput:
+ pdu = readWriteModel.NewModbusPDUReadDiscreteInputsRequest(modbusField.Address, modbusField.Quantity)
+ case InputRegister:
+ pdu = readWriteModel.NewModbusPDUReadInputRegistersRequest(modbusField.Address, numWords)
+ case HoldingRegister:
+ pdu = readWriteModel.NewModbusPDUReadHoldingRegistersRequest(modbusField.Address, numWords)
+ case ExtendedRegister:
result <- model.PlcReadRequestResult{
Request: readRequest,
Response: nil,
@@ -95,7 +95,7 @@ func (m *ModbusReader) Read(readRequest model.PlcReadRequest) <-chan model.PlcRe
}
// Assemble the finished ADU
- requestAdu := modbusModel.ModbusTcpADU{
+ requestAdu := readWriteModel.ModbusTcpADU{
TransactionIdentifier: uint16(transactionIdentifier),
UnitIdentifier: m.unitIdentifier,
Pdu: pdu,
@@ -105,13 +105,13 @@ func (m *ModbusReader) Read(readRequest model.PlcReadRequest) <-chan model.PlcRe
err = m.messageCodec.SendRequest(
requestAdu,
func(message interface{}) bool {
- responseAdu := modbusModel.CastModbusTcpADU(message)
+ responseAdu := readWriteModel.CastModbusTcpADU(message)
return responseAdu.TransactionIdentifier == uint16(transactionIdentifier) &&
responseAdu.UnitIdentifier == requestAdu.UnitIdentifier
},
func(message interface{}) error {
// Convert the response into an ADU
- responseAdu := modbusModel.CastModbusTcpADU(message)
+ responseAdu := readWriteModel.CastModbusTcpADU(message)
// Convert the modbus response into a PLC4X response
readResponse, err := m.ToPlc4xReadResponse(*responseAdu, readRequest)
@@ -153,25 +153,25 @@ func (m *ModbusReader) Read(readRequest model.PlcReadRequest) <-chan model.PlcRe
return result
}
-func (m *ModbusReader) ToPlc4xReadResponse(responseAdu modbusModel.ModbusTcpADU, readRequest model.PlcReadRequest) (model.PlcReadResponse, error) {
+func (m *Reader) ToPlc4xReadResponse(responseAdu readWriteModel.ModbusTcpADU, readRequest model.PlcReadRequest) (model.PlcReadResponse, error) {
var data []uint8
switch responseAdu.Pdu.Child.(type) {
- case *modbusModel.ModbusPDUReadDiscreteInputsResponse:
- pdu := modbusModel.CastModbusPDUReadDiscreteInputsResponse(responseAdu.Pdu)
+ case *readWriteModel.ModbusPDUReadDiscreteInputsResponse:
+ pdu := readWriteModel.CastModbusPDUReadDiscreteInputsResponse(responseAdu.Pdu)
data = utils.Int8ArrayToUint8Array(pdu.Value)
// Pure Boolean ...
- case *modbusModel.ModbusPDUReadCoilsResponse:
- pdu := modbusModel.CastModbusPDUReadCoilsResponse(&responseAdu.Pdu)
+ case *readWriteModel.ModbusPDUReadCoilsResponse:
+ pdu := readWriteModel.CastModbusPDUReadCoilsResponse(&responseAdu.Pdu)
data = utils.Int8ArrayToUint8Array(pdu.Value)
// Pure Boolean ...
- case *modbusModel.ModbusPDUReadInputRegistersResponse:
- pdu := modbusModel.CastModbusPDUReadInputRegistersResponse(responseAdu.Pdu)
+ case *readWriteModel.ModbusPDUReadInputRegistersResponse:
+ pdu := readWriteModel.CastModbusPDUReadInputRegistersResponse(responseAdu.Pdu)
data = utils.Int8ArrayToUint8Array(pdu.Value)
// DataIo ...
- case *modbusModel.ModbusPDUReadHoldingRegistersResponse:
- pdu := modbusModel.CastModbusPDUReadHoldingRegistersResponse(responseAdu.Pdu)
+ case *readWriteModel.ModbusPDUReadHoldingRegistersResponse:
+ pdu := readWriteModel.CastModbusPDUReadHoldingRegistersResponse(responseAdu.Pdu)
data = utils.Int8ArrayToUint8Array(pdu.Value)
- case *modbusModel.ModbusPDUError:
+ case *readWriteModel.ModbusPDUError:
return nil, errors.New("got an error from remote")
default:
return nil, errors.New("unsupported response type")
@@ -186,7 +186,7 @@ func (m *ModbusReader) ToPlc4xReadResponse(responseAdu modbusModel.ModbusTcpADU,
// Decode the data according to the information from the request
rb := utils.NewReadBuffer(data)
- value, err := modbusModel.DataItemParse(rb, field.Datatype, field.Quantity)
+ value, err := readWriteModel.DataItemParse(rb, field.Datatype, field.Quantity)
if err != nil {
return nil, err
}
diff --git a/plc4go/internal/plc4go/modbus/ModbusValueHandler.go b/plc4go/internal/plc4go/modbus/ValueHandler.go
similarity index 100%
rename from plc4go/internal/plc4go/modbus/ModbusValueHandler.go
rename to plc4go/internal/plc4go/modbus/ValueHandler.go
diff --git a/plc4go/internal/plc4go/modbus/ModbusWriter.go b/plc4go/internal/plc4go/modbus/Writer.go
similarity index 73%
rename from plc4go/internal/plc4go/modbus/ModbusWriter.go
rename to plc4go/internal/plc4go/modbus/Writer.go
index f6db927..d7df184 100644
--- a/plc4go/internal/plc4go/modbus/ModbusWriter.go
+++ b/plc4go/internal/plc4go/modbus/Writer.go
@@ -21,7 +21,7 @@ package modbus
import (
"errors"
"fmt"
- modbusModel "github.com/apache/plc4x/plc4go/internal/plc4go/modbus/readwrite/model"
+ readWriteModel "github.com/apache/plc4x/plc4go/internal/plc4go/modbus/readwrite/model"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi"
plc4goModel "github.com/apache/plc4x/plc4go/internal/plc4go/spi/model"
"github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
@@ -31,21 +31,21 @@ import (
"time"
)
-type ModbusWriter struct {
+type Writer struct {
transactionIdentifier int32
unitIdentifier uint8
messageCodec spi.MessageCodec
}
-func NewModbusWriter(unitIdentifier uint8, messageCodec spi.MessageCodec) ModbusWriter {
- return ModbusWriter{
+func NewWriter(unitIdentifier uint8, messageCodec spi.MessageCodec) Writer {
+ return Writer{
transactionIdentifier: 0,
unitIdentifier: unitIdentifier,
messageCodec: messageCodec,
}
}
-func (m ModbusWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.PlcWriteRequestResult {
+func (m Writer) Write(writeRequest model.PlcWriteRequest) <-chan model.PlcWriteRequestResult {
result := make(chan model.PlcWriteRequestResult)
// If we are requesting only one field, use a
if len(writeRequest.GetFieldNames()) == 1 {
@@ -66,7 +66,7 @@ func (m ModbusWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.Plc
// Get the value from the request and serialize it to a byte array
value := writeRequest.GetValue(fieldName)
io := utils.NewWriteBuffer()
- if err := modbusModel.DataItemSerialize(io, value, modbusField.Datatype, modbusField.Quantity); err != nil {
+ if err := readWriteModel.DataItemSerialize(io, value, modbusField.Datatype, modbusField.Quantity); err != nil {
result <- model.PlcWriteRequestResult{
Request: writeRequest,
Response: nil,
@@ -79,19 +79,19 @@ func (m ModbusWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.Plc
// Calculate the number of words needed to send the data
numWords := uint16(math.Ceil(float64(len(data)) / 2))
- var pdu *modbusModel.ModbusPDU
+ var pdu *readWriteModel.ModbusPDU
switch modbusField.FieldType {
- case MODBUS_FIELD_COIL:
- pdu = modbusModel.NewModbusPDUWriteMultipleCoilsRequest(
+ case Coil:
+ pdu = readWriteModel.NewModbusPDUWriteMultipleCoilsRequest(
modbusField.Address,
modbusField.Quantity,
data)
- case MODBUS_FIELD_HOLDING_REGISTER:
- pdu = modbusModel.NewModbusPDUWriteMultipleHoldingRegistersRequest(
+ case HoldingRegister:
+ pdu = readWriteModel.NewModbusPDUWriteMultipleHoldingRegistersRequest(
modbusField.Address,
numWords,
data)
- case MODBUS_FIELD_EXTENDED_REGISTER:
+ case ExtendedRegister:
result <- model.PlcWriteRequestResult{
Request: writeRequest,
Response: nil,
@@ -115,7 +115,7 @@ func (m ModbusWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.Plc
}
// Assemble the finished ADU
- requestAdu := modbusModel.ModbusTcpADU{
+ requestAdu := readWriteModel.ModbusTcpADU{
TransactionIdentifier: uint16(transactionIdentifier),
UnitIdentifier: m.unitIdentifier,
Pdu: pdu,
@@ -125,13 +125,13 @@ func (m ModbusWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.Plc
err = m.messageCodec.SendRequest(
requestAdu,
func(message interface{}) bool {
- responseAdu := modbusModel.CastModbusTcpADU(message)
+ responseAdu := readWriteModel.CastModbusTcpADU(message)
return responseAdu.TransactionIdentifier == uint16(transactionIdentifier) &&
responseAdu.UnitIdentifier == requestAdu.UnitIdentifier
},
func(message interface{}) error {
// Convert the response into an ADU
- responseAdu := modbusModel.CastModbusTcpADU(message)
+ responseAdu := readWriteModel.CastModbusTcpADU(message)
// Convert the modbus response into a PLC4X response
readResponse, err := m.ToPlc4xWriteResponse(requestAdu, *responseAdu, writeRequest)
@@ -167,46 +167,46 @@ func (m ModbusWriter) Write(writeRequest model.PlcWriteRequest) <-chan model.Plc
return result
}
-func (m ModbusWriter) ToPlc4xWriteResponse(requestAdu modbusModel.ModbusTcpADU, responseAdu modbusModel.ModbusTcpADU, writeRequest model.PlcWriteRequest) (model.PlcWriteResponse, error) {
+func (m Writer) ToPlc4xWriteResponse(requestAdu readWriteModel.ModbusTcpADU, responseAdu readWriteModel.ModbusTcpADU, writeRequest model.PlcWriteRequest) (model.PlcWriteResponse, error) {
responseCodes := map[string]model.PlcResponseCode{}
fieldName := writeRequest.GetFieldNames()[0]
responseCodes[fieldName] = model.PlcResponseCode_INTERNAL_ERROR
switch responseAdu.Pdu.Child.(type) {
- case *modbusModel.ModbusPDUWriteMultipleCoilsResponse:
- req := modbusModel.CastModbusPDUWriteMultipleCoilsRequest(requestAdu.Pdu)
- resp := modbusModel.CastModbusPDUWriteMultipleCoilsResponse(responseAdu.Pdu)
+ case *readWriteModel.ModbusPDUWriteMultipleCoilsResponse:
+ req := readWriteModel.CastModbusPDUWriteMultipleCoilsRequest(requestAdu.Pdu)
+ resp := readWriteModel.CastModbusPDUWriteMultipleCoilsResponse(responseAdu.Pdu)
if req.Quantity == resp.Quantity {
responseCodes[fieldName] = model.PlcResponseCode_OK
}
- case *modbusModel.ModbusPDUWriteMultipleHoldingRegistersResponse:
- req := modbusModel.CastModbusPDUWriteMultipleHoldingRegistersRequest(requestAdu.Pdu)
- resp := modbusModel.CastModbusPDUWriteMultipleHoldingRegistersResponse(responseAdu.Pdu)
+ case *readWriteModel.ModbusPDUWriteMultipleHoldingRegistersResponse:
+ req := readWriteModel.CastModbusPDUWriteMultipleHoldingRegistersRequest(requestAdu.Pdu)
+ resp := readWriteModel.CastModbusPDUWriteMultipleHoldingRegistersResponse(responseAdu.Pdu)
if req.Quantity == resp.Quantity {
responseCodes[fieldName] = model.PlcResponseCode_OK
}
- case *modbusModel.ModbusPDUError:
- resp := modbusModel.CastModbusPDUError(&responseAdu.Pdu)
+ case *readWriteModel.ModbusPDUError:
+ resp := readWriteModel.CastModbusPDUError(&responseAdu.Pdu)
switch resp.ExceptionCode {
- case modbusModel.ModbusErrorCode_ILLEGAL_FUNCTION:
+ case readWriteModel.ModbusErrorCode_ILLEGAL_FUNCTION:
responseCodes[fieldName] = model.PlcResponseCode_UNSUPPORTED
- case modbusModel.ModbusErrorCode_ILLEGAL_DATA_ADDRESS:
+ case readWriteModel.ModbusErrorCode_ILLEGAL_DATA_ADDRESS:
responseCodes[fieldName] = model.PlcResponseCode_INVALID_ADDRESS
- case modbusModel.ModbusErrorCode_ILLEGAL_DATA_VALUE:
+ case readWriteModel.ModbusErrorCode_ILLEGAL_DATA_VALUE:
responseCodes[fieldName] = model.PlcResponseCode_INVALID_DATA
- case modbusModel.ModbusErrorCode_SLAVE_DEVICE_FAILURE:
+ case readWriteModel.ModbusErrorCode_SLAVE_DEVICE_FAILURE:
responseCodes[fieldName] = model.PlcResponseCode_REMOTE_ERROR
- case modbusModel.ModbusErrorCode_ACKNOWLEDGE:
+ case readWriteModel.ModbusErrorCode_ACKNOWLEDGE:
responseCodes[fieldName] = model.PlcResponseCode_OK
- case modbusModel.ModbusErrorCode_SLAVE_DEVICE_BUSY:
+ case readWriteModel.ModbusErrorCode_SLAVE_DEVICE_BUSY:
responseCodes[fieldName] = model.PlcResponseCode_REMOTE_BUSY
- case modbusModel.ModbusErrorCode_NEGATIVE_ACKNOWLEDGE:
+ case readWriteModel.ModbusErrorCode_NEGATIVE_ACKNOWLEDGE:
responseCodes[fieldName] = model.PlcResponseCode_REMOTE_ERROR
- case modbusModel.ModbusErrorCode_MEMORY_PARITY_ERROR:
+ case readWriteModel.ModbusErrorCode_MEMORY_PARITY_ERROR:
responseCodes[fieldName] = model.PlcResponseCode_INTERNAL_ERROR
- case modbusModel.ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE:
+ case readWriteModel.ModbusErrorCode_GATEWAY_PATH_UNAVAILABLE:
responseCodes[fieldName] = model.PlcResponseCode_INTERNAL_ERROR
- case modbusModel.ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND:
+ case readWriteModel.ModbusErrorCode_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND:
responseCodes[fieldName] = model.PlcResponseCode_REMOTE_ERROR
}
}
diff --git a/plc4go/internal/plc4go/s7/S7Driver.go b/plc4go/internal/plc4go/s7/Driver.go
similarity index 95%
rename from plc4go/internal/plc4go/s7/S7Driver.go
rename to plc4go/internal/plc4go/s7/Driver.go
index 0cce5da..0c8487a 100644
--- a/plc4go/internal/plc4go/s7/S7Driver.go
+++ b/plc4go/internal/plc4go/s7/Driver.go
@@ -20,6 +20,6 @@ package s7
import "github.com/apache/plc4x/plc4go/pkg/plc4go"
-func NewS7Driver() plc4go.PlcDriver {
+func NewDriver() plc4go.PlcDriver {
return nil
}
diff --git a/plc4go/pkg/plc4go/drivers/drivers.go b/plc4go/pkg/plc4go/drivers/drivers.go
index ce0d16f..d4bccb2 100644
--- a/plc4go/pkg/plc4go/drivers/drivers.go
+++ b/plc4go/pkg/plc4go/drivers/drivers.go
@@ -27,16 +27,16 @@ import (
)
func RegisterAdsDriver(driverManager plc4go.PlcDriverManager) {
- driverManager.RegisterDriver(ads.NewAdsDriver())
+ driverManager.RegisterDriver(ads.NewDriver())
transports.RegisterTcpTransport(driverManager)
}
func RegisterKnxDriver(driverManager plc4go.PlcDriverManager) {
- driverManager.RegisterDriver(knxnetip.NewKnxNetIpDriver())
+ driverManager.RegisterDriver(knxnetip.NewDriver())
transports.RegisterUdpTransport(driverManager)
}
func RegisterModbusDriver(driverManager plc4go.PlcDriverManager) {
- driverManager.RegisterDriver(modbus.NewModbusDriver())
+ driverManager.RegisterDriver(modbus.NewDriver())
transports.RegisterTcpTransport(driverManager)
}