1
0
mirror of https://github.com/hybridgroup/gobot.git synced 2025-04-29 13:49:14 +08:00

74 lines
1.6 KiB
Go
Raw Normal View History

2014-05-02 17:22:05 -05:00
package pebble
import (
"github.com/hybridgroup/gobot"
)
type PebbleDriver struct {
gobot.Driver
Messages []string
2014-05-02 17:22:05 -05:00
}
type PebbleInterface interface {
}
func NewPebbleDriver(adaptor *PebbleAdaptor, name string) *PebbleDriver {
p := &PebbleDriver{
Driver: gobot.Driver{
Name: name,
2014-06-11 11:37:20 -07:00
Events: map[string]*gobot.Event{
"button": gobot.NewEvent(),
"accel": gobot.NewEvent(),
"tap": gobot.NewEvent(),
},
Commands: make(map[string]func(map[string]interface{}) interface{}),
Adaptor: adaptor,
},
Messages: []string{},
}
p.Driver.AddCommand("PublishEvent", func(params map[string]interface{}) interface{} {
p.PublishEvent(params["name"].(string), params["data"].(string))
return nil
})
p.Driver.AddCommand("SendNotification", func(params map[string]interface{}) interface{} {
p.SendNotification(params["message"].(string))
return nil
})
p.Driver.AddCommand("PendingMessage", func(params map[string]interface{}) interface{} {
m := make(map[string]string)
m["result"] = p.PendingMessage()
return m
})
return p
2014-05-02 17:22:05 -05:00
}
func (d *PebbleDriver) adaptor() *PebbleAdaptor {
return d.Driver.Adaptor.(*PebbleAdaptor)
}
2014-05-02 17:22:05 -05:00
func (d *PebbleDriver) Start() bool { return true }
2014-05-02 17:22:05 -05:00
func (d *PebbleDriver) Halt() bool { return true }
func (d *PebbleDriver) PublishEvent(name string, data string) {
gobot.Publish(d.Events[name], data)
2014-05-02 17:22:05 -05:00
}
func (d *PebbleDriver) SendNotification(message string) string {
d.Messages = append(d.Messages, message)
return message
}
2014-05-02 17:22:05 -05:00
func (d *PebbleDriver) PendingMessage() string {
if len(d.Messages) < 1 {
return ""
}
m := d.Messages[0]
d.Messages = d.Messages[1:]
2014-05-02 17:22:05 -05:00
return m
2014-05-02 17:22:05 -05:00
}