mirror of
https://github.com/nonoo/kappanhang.git
synced 2026-01-20 07:40:14 +01:00
Add serial stream
This commit is contained in:
parent
35c0a40b1c
commit
8943ff3627
|
|
@ -195,6 +195,7 @@ func (s *controlStream) handleRead(r []byte) {
|
|||
s.requestSerialAndAudioTimeout.Stop()
|
||||
s.requestSerialAndAudioTimeout = nil
|
||||
}
|
||||
go streams.serial.start()
|
||||
go streams.audio.start()
|
||||
s.serialAndAudioStreamOpened = true
|
||||
}
|
||||
|
|
|
|||
1
go.mod
1
go.mod
|
|
@ -4,6 +4,7 @@ go 1.14
|
|||
|
||||
require (
|
||||
github.com/akosmarton/papipes v0.0.0-20201020060136-a13951732479
|
||||
github.com/google/goterm v0.0.0-20200907032337-555d40f16ae2
|
||||
github.com/pborman/getopt v1.1.0
|
||||
go.uber.org/multierr v1.6.0 // indirect
|
||||
go.uber.org/zap v1.16.0
|
||||
|
|
|
|||
2
go.sum
2
go.sum
|
|
@ -7,6 +7,8 @@ github.com/akosmarton/papipes v0.0.0-20201020060136-a13951732479/go.mod h1:mdvQ3
|
|||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
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/google/goterm v0.0.0-20200907032337-555d40f16ae2 h1:CVuJwN34x4xM2aT4sIKhmeib40NeBPhRihNjQmpJsA4=
|
||||
github.com/google/goterm v0.0.0-20200907032337-555d40f16ae2/go.mod h1:nOFQdrUlIlx6M6ODdSpBj1NVA+VgLC6kmw60mkw34H4=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||
|
|
|
|||
3
main.go
3
main.go
|
|
@ -10,6 +10,7 @@ import (
|
|||
|
||||
var streams struct {
|
||||
control controlStream
|
||||
serial serialStream
|
||||
audio audioStream
|
||||
}
|
||||
|
||||
|
|
@ -19,6 +20,7 @@ func exit(err error) {
|
|||
}
|
||||
|
||||
streams.audio.sendDisconnect()
|
||||
streams.serial.deinit()
|
||||
streams.control.sendDisconnect()
|
||||
audio.deinit()
|
||||
|
||||
|
|
@ -46,6 +48,7 @@ func main() {
|
|||
|
||||
audio.init()
|
||||
streams.audio.init()
|
||||
streams.serial.init()
|
||||
streams.control.init()
|
||||
|
||||
setupCloseHandler()
|
||||
|
|
|
|||
55
serialstream.go
Normal file
55
serialstream.go
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/google/goterm/term"
|
||||
"github.com/nonoo/kappanhang/log"
|
||||
)
|
||||
|
||||
type serialStream struct {
|
||||
common streamCommon
|
||||
|
||||
pty *term.PTY
|
||||
}
|
||||
|
||||
func (s *serialStream) init() {
|
||||
s.common.open("serial", 50002)
|
||||
|
||||
var err error
|
||||
s.pty, err = term.OpenPTY()
|
||||
if err != nil {
|
||||
exit(err)
|
||||
}
|
||||
n, err := s.pty.PTSName()
|
||||
if err != nil {
|
||||
exit(err)
|
||||
}
|
||||
log.Print("opened ", n)
|
||||
}
|
||||
|
||||
func (s *serialStream) handleRead(r []byte) {
|
||||
}
|
||||
|
||||
func (s *serialStream) start() {
|
||||
s.common.sendPkt3()
|
||||
s.common.waitForPkt4Answer()
|
||||
s.common.sendPkt6()
|
||||
s.common.waitForPkt6Answer()
|
||||
|
||||
log.Print("stream started")
|
||||
|
||||
s.common.pkt7.startPeriodicSend(&s.common, 1, false)
|
||||
|
||||
for {
|
||||
select {
|
||||
case r := <-s.common.readChan:
|
||||
s.handleRead(r)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *serialStream) deinit() {
|
||||
s.common.sendDisconnect()
|
||||
if s.pty != nil {
|
||||
s.pty.Close()
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue