1
0
Fork 0

Compare commits

..

3 Commits

Author SHA1 Message Date
Michał Rudowicz 053187c5d1 Send events in batches 2024-03-05 21:52:59 +01:00
Michał Rudowicz 6b3159eed0 go-fmt changes 2024-03-05 21:42:56 +01:00
Michał Rudowicz 75f849a7b1 Update README 2024-03-05 21:32:49 +01:00
6 changed files with 42 additions and 30 deletions

View File

@ -5,6 +5,13 @@ tasks:
- go-get: |
cd go-satel
go get -t
- precommit: |
cd go-satel
python3 -m venv .venv
source .venv/bin/activate
pip3 install pre-commit
pre-commit install
pre-commit run -a
- test: |
cd go-satel
go test
go test

16
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,16 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-added-large-files
- repo: https://github.com/TekWizely/pre-commit-golang
rev: v0.8.3
hooks:
- id: go-fmt
args: [ -w, -s ]
- id: go-vet-mod
- id: go-test-repo-mod

View File

@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.

View File

@ -4,14 +4,15 @@ go-satel is a Go library to integrate
with [Satel ETHM-1/ETHM-1 Plus](https://www.satel.pl/produkty/sswin/komunikacja-i-powiadamianie/komunikacja-tcp-ip/ethm-1-plus/)
module
[![Build](https://github.com/probakowski/go-satel/actions/workflows/build.yml/badge.svg)](https://github.com/probakowski/go-satel/actions/workflows/build.yml)
[![Go Report Card](https://goreportcard.com/badge/github.com/probakowski/go-satel)](https://goreportcard.com/report/github.com/probakowski/go-satel)
[![builds.sr.ht status](https://builds.sr.ht/~michalr/go-satel.svg)](https://builds.sr.ht/~michalr/go-satel?) [![Go Report Card](https://goreportcard.com/badge/git.sr.ht/~michalr/go-satel)](https://goreportcard.com/report/git.sr.ht/~michalr/go-satel)
The library is based on https://github.com/probakowski/go-satel .
## Installation
go-satel is compatible with modern Go releases in module mode, with Go installed:
```bash
go get github.com/probakowski/go-satel
go get git.sr.ht/~michalr/go-satel
```
will resolve and add the package to the current development module, along with its dependencies.
@ -19,29 +20,11 @@ will resolve and add the package to the current development module, along with i
Alternatively the same can be achieved if you use import in a package:
```go
import "github.com/probakowski/go-satel"
import "git.sr.ht/~michalr/go-satel"
```
and run `go get` without parameters.
Finally, to use the top-of-trunk version of this repo, use the following command:
```bash
go get github.com/probakowski/go-satel@master
```
## Usage
```go
s := satel.NewConfig("<ip:port>", satel.Config{EventsQueueSize: 1000})
go func() {
value := true
for {
s.SetOutput("<user code>", <port number>, value)
time.Sleep(5 * time.Second)
value = !value
}
}()
for e, ok := <-s.Events; ok; e, ok = <-s.Events {
logger.Print("change from satel", "type", e.Type, "index", e.Index, "value", e.Value)
}
```
**TODO**

View File

@ -51,7 +51,7 @@ func makeNameEvent(bytes []byte) (*NameEvent, error) {
}
type getNameResult struct {
ev *NameEvent
ev *NameEvent
err error
}

View File

@ -8,12 +8,16 @@ import (
"time"
)
type Event struct {
type BasicEventElement struct {
Type ChangeType
Index int
Value bool
}
type Event struct {
BasicEvents []BasicEventElement
}
type Config struct {
EventsQueueSize int
LongCommands bool
@ -125,16 +129,18 @@ func (s *Satel) readRawEvents() {
if cmd == 0xEF {
return
}
basicElements := make([]BasicEventElement, 0)
for i, bb := range bytes {
for j := 0; j < 8; j++ {
index := byte(1 << j)
s.Events <- Event{
basicElements = append(basicElements, BasicEventElement{
Type: ChangeType(cmd),
Index: i*8 + j,
Value: bb&index != 0,
}
})
}
}
s.Events <- Event{basicElements}
}
func (s *Satel) read() {