kappanhang/main.go

95 lines
1.8 KiB
Go
Raw Normal View History

2020-10-16 17:13:46 +02:00
package main
import (
2020-10-16 19:25:02 +02:00
"os"
"os/signal"
"syscall"
2020-10-16 17:13:46 +02:00
2020-10-20 08:47:42 +02:00
"github.com/akosmarton/papipes"
2020-10-16 17:13:46 +02:00
"github.com/nonoo/kappanhang/log"
)
2020-10-18 10:33:47 +02:00
var streams struct {
control controlStream
audio audioStream
2020-10-17 23:53:33 +02:00
}
2020-10-16 17:13:46 +02:00
2020-10-20 08:47:42 +02:00
var audioPipes struct {
source papipes.Source
sink papipes.Sink
}
func exit(err error) {
2020-10-18 13:19:52 +02:00
if err != nil {
log.Error(err.Error())
}
2020-10-19 09:53:49 +02:00
streams.audio.sendDisconnect()
streams.control.sendDisconnect()
2020-10-18 13:19:52 +02:00
2020-10-20 08:47:42 +02:00
if audioPipes.source.IsOpen() {
if err := audioPipes.source.Close(); err != nil {
log.Error(err)
}
}
if audioPipes.sink.IsOpen() {
if err := audioPipes.sink.Close(); err != nil {
log.Error(err)
}
}
2020-10-19 09:53:49 +02:00
log.Print("exiting")
if err == nil {
os.Exit(0)
} else {
os.Exit(1)
}
}
2020-10-16 19:25:02 +02:00
func setupCloseHandler() {
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
go func() {
<-c
exit(nil)
2020-10-16 19:25:02 +02:00
}()
}
2020-10-16 17:13:46 +02:00
func main() {
log.Init()
2020-10-18 13:02:41 +02:00
log.Print("kappanhang by Norbert Varga HA2NON https://github.com/nonoo/kappanhang")
2020-10-16 17:13:46 +02:00
parseArgs()
2020-10-20 08:47:42 +02:00
audioPipes.source.Name = "kappanhang"
audioPipes.source.Filename = "/tmp/kappanhang.source"
audioPipes.source.Rate = 48000
audioPipes.source.Format = "s16le"
audioPipes.source.Channels = 1
audioPipes.source.SetProperty("device.buffering.buffer_size", 1920*5)
audioPipes.source.SetProperty("device.description", "kappanhang input")
audioPipes.sink.Name = "kappanhang"
audioPipes.sink.Filename = "/tmp/kappanhang.sink"
audioPipes.sink.Rate = 48000
audioPipes.sink.Format = "s16le"
audioPipes.sink.Channels = 1
audioPipes.sink.SetProperty("device.buffering.buffer_size", 1920*5)
audioPipes.sink.SetProperty("device.description", "kappanhang output")
if err := audioPipes.source.Open(); err != nil {
exit(err)
}
if err := audioPipes.sink.Open(); err != nil {
exit(err)
}
2020-10-16 19:25:02 +02:00
setupCloseHandler()
2020-10-16 17:13:46 +02:00
streams.audio.init()
streams.control.init()
streams.control.start()
2020-10-16 17:13:46 +02:00
}