Update board.go, board_ui.go, and 2 more files...
This commit is contained in:
parent
ef2b809707
commit
335d34a21a
31
src/board.go
31
src/board.go
@ -23,7 +23,7 @@ type Board struct {
|
||||
Name string
|
||||
ChannelCount uint
|
||||
Inverted bool // low level only
|
||||
Channels []Channel
|
||||
Channels []*Channel
|
||||
}
|
||||
|
||||
type Outlet struct {
|
||||
@ -34,28 +34,28 @@ type Outlet struct {
|
||||
Channel *Channel
|
||||
}
|
||||
|
||||
func (c Channel) Toggle() (bool, error) {
|
||||
func (c *Channel) Toggle() (bool, error) {
|
||||
c.Value = !c.Value
|
||||
return c.Value, nil
|
||||
}
|
||||
|
||||
func (c Channel) On() error {
|
||||
func (c *Channel) On() error {
|
||||
c.Value = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c Channel) Off() error {
|
||||
func (c *Channel) Off() error {
|
||||
c.Value = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c Channel) Status() bool {
|
||||
func (c *Channel) Status() bool {
|
||||
return c.Value
|
||||
}
|
||||
|
||||
var boards []Board
|
||||
var boards []*Board
|
||||
var allChannels map[string]*Channel
|
||||
var outlets []Outlet
|
||||
var outlets []*Outlet
|
||||
|
||||
func newDummyChannel(v *viper.Viper, channelID string) Channel {
|
||||
v.SetDefault("name", "unknown")
|
||||
@ -104,7 +104,7 @@ func newDummyBoard(v *viper.Viper, id string) Board {
|
||||
Inverted: v.GetBool("inverted"),
|
||||
}
|
||||
|
||||
channels := make([]Channel, v.GetInt("channelCount"))
|
||||
channels := make([]*Channel, v.GetInt("channelCount"))
|
||||
if v.GetInt("channelCount") > 0 {
|
||||
channelsConfig := v.Sub("channels")
|
||||
if channelsConfig != nil {
|
||||
@ -116,7 +116,7 @@ func newDummyBoard(v *viper.Viper, id string) Board {
|
||||
if c.Num >= v.GetUint("channelCount") {
|
||||
continue
|
||||
}
|
||||
channels[c.Num] = c
|
||||
channels[c.Num] = &c
|
||||
allChannels[c.ID] = &c
|
||||
}
|
||||
}
|
||||
@ -144,13 +144,14 @@ func parseBoardsConfig() {
|
||||
switch boardType {
|
||||
case "gpio":
|
||||
default:
|
||||
boards = append(boards, newDummyBoard(boardConfig, key))
|
||||
b := newDummyBoard(boardConfig, key)
|
||||
boards = append(boards, &b)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
outlets = make([]Outlet, len(allChannels))
|
||||
outlets = make([]*Outlet, len(allChannels))
|
||||
|
||||
outletsConfig := viper.Sub("outlets")
|
||||
if outletsConfig == nil {
|
||||
@ -174,7 +175,7 @@ func parseBoardsConfig() {
|
||||
Channel: channel,
|
||||
}
|
||||
|
||||
outlets[num] = o
|
||||
outlets[num] = &o
|
||||
}
|
||||
|
||||
// dumpa tutto
|
||||
@ -189,17 +190,17 @@ func parseBoardsConfig() {
|
||||
|
||||
}
|
||||
|
||||
func (c Channel) Dump() {
|
||||
func (c *Channel) Dump() {
|
||||
log.Printf(" Channel %d (on boot: %s): %s \n", c.Num, c.OnBoot, c.Name)
|
||||
}
|
||||
|
||||
func (b Board) Dump() {
|
||||
func (b *Board) Dump() {
|
||||
log.Printf("Board '%s' (id: %s): %d channels\n", b.Name, b.ID, b.ChannelCount)
|
||||
for c := range b.Channels {
|
||||
b.Channels[c].Dump()
|
||||
}
|
||||
}
|
||||
|
||||
func (o Outlet) Dump() {
|
||||
func (o *Outlet) Dump() {
|
||||
log.Printf("Outlet %v: channel name: %v\n", o.Num, o.Channel.Name)
|
||||
}
|
||||
|
@ -1 +0,0 @@
|
||||
package main
|
@ -25,7 +25,7 @@ type OutletPostForm struct {
|
||||
func outletEditPage(ctx *macaron.Context) {
|
||||
var err error
|
||||
var num uint64
|
||||
var o Outlet
|
||||
var o *Outlet
|
||||
num, err = strconv.ParseUint(ctx.Params(":num"), 10, 64)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, Dictionary{
|
||||
|
41
src/webui.go
41
src/webui.go
@ -2,7 +2,6 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
@ -13,16 +12,6 @@ import (
|
||||
)
|
||||
|
||||
func statusPage(ctx *macaron.Context) {
|
||||
ctx.Data["pluglist"] = []Dictionary{
|
||||
{"id": 1, "description": "p1"},
|
||||
{"id": 2, "description": "p2"},
|
||||
{"id": 3, "description": "p3"},
|
||||
{"id": 4, "description": "p4"},
|
||||
{"id": 5, "description": "p5"},
|
||||
{"id": 6, "description": "p6"},
|
||||
{"id": 7, "description": "p7"},
|
||||
{"id": 8, "description": "p8"},
|
||||
}
|
||||
ctx.HTML(200, "status") // 200 is the response code.
|
||||
}
|
||||
|
||||
@ -30,7 +19,7 @@ func jsonStatus(ctx *macaron.Context) {
|
||||
// MQTTpublish("openpdu/status", "asdss")
|
||||
|
||||
var data = [][]string{}
|
||||
var o Outlet
|
||||
var o *Outlet
|
||||
for i := range outlets {
|
||||
o = outlets[i]
|
||||
d := []string{fmt.Sprintf("%d", o.Num), o.Channel.Name, fmt.Sprintf("%v", o.Channel.Value)}
|
||||
@ -43,16 +32,32 @@ func jsonStatus(ctx *macaron.Context) {
|
||||
}
|
||||
|
||||
func jsonOutletToggle(ctx *macaron.Context) {
|
||||
id, err := strconv.ParseUint(ctx.Params(":id"), 10, 64)
|
||||
var err error
|
||||
var num uint64
|
||||
var outlet *Outlet
|
||||
|
||||
num, err = strconv.ParseUint(ctx.Params(":id"), 10, 64)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
ctx.JSON(http.StatusOK, Dictionary{
|
||||
"data": "error1",
|
||||
})
|
||||
}
|
||||
MQTTpublish("openpdu/toggolo1", fmt.Sprint(id))
|
||||
err = MyBoard.channelToggle(uint(id))
|
||||
|
||||
if num >= uint64(len(outlets)) || num < 0 {
|
||||
ctx.JSON(http.StatusOK, Dictionary{
|
||||
"data": "error2",
|
||||
})
|
||||
}
|
||||
|
||||
outlet = outlets[num]
|
||||
_, err = outlet.Channel.Toggle()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
ctx.JSON(http.StatusOK, Dictionary{
|
||||
"data": "error3",
|
||||
})
|
||||
}
|
||||
MQTTpublish("openpdu/toggolo2", fmt.Sprint(id))
|
||||
// MQTTpublish("openpdu/toggolo1", fmt.Sprint(id))
|
||||
|
||||
ctx.JSON(http.StatusOK, Dictionary{
|
||||
"data": "ok",
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user