forked from OpenPDU/openpdu
new source promoted
This commit is contained in:
88
source/board.go
Normal file
88
source/board.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package main
|
||||
|
||||
import "log"
|
||||
|
||||
// BoardType Status
|
||||
const (
|
||||
BoardTypeDummy uint = 0
|
||||
BoardTypeGPIO uint = 1
|
||||
BoardTypeI2CGPIO uint = 2
|
||||
BoardTypeI2CADC uint = 3
|
||||
)
|
||||
|
||||
// Board def
|
||||
type Board struct {
|
||||
ChannelCount uint `json:"channelcount"`
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Type uint `json:"type"`
|
||||
Bus uint `json:"bus"`
|
||||
Address uint `json:"address"`
|
||||
dummyValue map[uint]bool
|
||||
}
|
||||
|
||||
// ChannelName - return the name of a channel, useful for onboard GPIO
|
||||
func (b *Board) ChannelName(num uint) string {
|
||||
return string(num)
|
||||
}
|
||||
|
||||
// PowerON def
|
||||
func (b *Board) PowerON(num uint) error {
|
||||
switch b.Type {
|
||||
case BoardTypeDummy:
|
||||
if b.dummyValue == nil {
|
||||
b.dummyValue = make(map[uint]bool)
|
||||
}
|
||||
b.dummyValue[num] = true
|
||||
return nil
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// PowerOFF def
|
||||
func (b *Board) PowerOFF(num uint) error {
|
||||
switch b.Type {
|
||||
case BoardTypeDummy:
|
||||
if b.dummyValue == nil {
|
||||
b.dummyValue = make(map[uint]bool)
|
||||
}
|
||||
b.dummyValue[num] = false
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// PowerToggle def
|
||||
func (b *Board) PowerToggle(num uint) error {
|
||||
switch b.Type {
|
||||
case BoardTypeDummy:
|
||||
if b.dummyValue == nil {
|
||||
b.dummyValue = make(map[uint]bool)
|
||||
}
|
||||
v, _ := b.PowerStatus(num)
|
||||
log.Printf("toggle prestatus %v:%v", num, b.dummyValue[num])
|
||||
b.dummyValue[num] = !v
|
||||
log.Printf("toggle poststatus %v:%v", num, b.dummyValue[num])
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// PowerStatus def
|
||||
func (b *Board) PowerStatus(num uint) (bool, error) {
|
||||
switch b.Type {
|
||||
case BoardTypeDummy:
|
||||
if b.dummyValue == nil {
|
||||
b.dummyValue = make(map[uint]bool)
|
||||
}
|
||||
val, ok := b.dummyValue[num]
|
||||
if !ok {
|
||||
b.dummyValue[num] = false
|
||||
val = false
|
||||
}
|
||||
log.Printf("status %v:%v", num, val)
|
||||
return val, nil
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
Reference in New Issue
Block a user