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:09 UTC
[plc4x] 01/01: plc4go: Refactor,
deduplicate package name out of code
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)
}