- add Makefile

- improve README.md
- smaller fixes regarding configuration
This commit is contained in:
2022-12-31 17:04:35 +01:00
parent 586a657674
commit e8c46c43f6
14 changed files with 216 additions and 41 deletions

View File

@@ -10,7 +10,7 @@ type Pin struct {
Name string
Direction PinDirection
PullConfig PinPull
InitialState PinCommand
InitialState *PinCommand
PinHandle HardwarePinInterface
SendPollingEvents bool
SendChangeEvents bool
@@ -37,11 +37,7 @@ func NewPin(config PinConfig) Pin {
p.SendChangeEvents = true
}
if config.InitialState != "" {
p.InitialState = PinCommand(config.InitialState)
} else {
p.InitialState = Off
}
p.InitialState = config.InitialState
return p
}
@@ -80,8 +76,11 @@ func (p *Pin) Configure() {
} else if p.Direction == Output {
log.Infof("configuring pin %s (pin no: %d) as Output", p.Name, p.Id)
p.PinHandle.Output()
log.Infof("set initial state \"%s\" for pin %s (pin no: %d)", p.InitialState, p.Name, p.Id)
_ = p.Command(p.InitialState)
if p.InitialState != nil {
log.Infof("set initial state \"%s\" for pin %s (pin no: %d)", p.InitialState, p.Name, p.Id)
_ = p.Command(*p.InitialState)
}
}
p.PinHandle.Detect(AnyEdge)
@@ -92,6 +91,8 @@ func (p *Pin) Configure() {
p.PinHandle.PullDown()
} else if p.PullConfig == PullOff {
p.PinHandle.PullOff()
} else {
log.Errorf("unknown config value \"%s\" for pull-config", p.PullConfig)
}
}

View File

@@ -1,25 +1,23 @@
package PinControlService
type PinConfig struct {
PinNumber int `yaml:"number"`
Name string `yaml:"name"`
Direction PinDirection `yaml:"direction"`
PullConfig PinPull `yaml:"pull-config"`
InitialState PinCommand `yaml:"initial-state"`
SendPollingEvents *bool `yaml:"send-polling-events"`
SendChangeEvents *bool `yaml:"send-change-events"`
PinNumber int `yaml:"number"`
Name string `yaml:"name"`
Direction PinDirection `yaml:"direction"`
PullConfig PinPull `yaml:"pull-config"`
InitialState *PinCommand `yaml:"initial-state"`
SendPollingEvents *bool `yaml:"send-polling-events"`
SendChangeEvents *bool `yaml:"send-change-events"`
}
type PinControlConfig struct {
GpioPins []PinConfig `yaml:"gpio-pins"`
PollingTimeMs int `yaml:"polling-time-ms"`
GpioPins []PinConfig `yaml:"gpio-pins"`
PollingTimeMs int `yaml:"polling-time-ms"`
}
func NewPinControlConfig() PinControlConfig {
return PinControlConfig{
GpioPins: make([]PinConfig, 0),
GpioPins: make([]PinConfig, 0),
PollingTimeMs: 100,
}
}

View File

@@ -7,8 +7,8 @@ type PinPull string
type PinCallback func(pinName string, state PinState)
const (
On PinCommand = "ON"
Off PinCommand = "OFF"
On PinCommand = "ON"
Off PinCommand = "OFF"
Toggle PinCommand = "TOGGLE"
StateOn PinState = "ON"
@@ -17,7 +17,7 @@ const (
Input PinDirection = "Input"
Output PinDirection = "Output"
PullUp PinPull = "PULL_UP"
PullDown PinPull = "PULL_DOWN"
PullOff PinPull = "PULL_OFF"
PullUp PinPull = "PullUp"
PullDown PinPull = "PullDown"
PullOff PinPull = "PullOff"
)