2014-05-02 17:22:05 -05:00
|
|
|
package pebble
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/hybridgroup/gobot"
|
|
|
|
)
|
|
|
|
|
|
|
|
type PebbleDriver struct {
|
|
|
|
gobot.Driver
|
2014-05-23 17:09:18 -05:00
|
|
|
Messages []string
|
2014-05-02 17:22:05 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
type PebbleInterface interface {
|
|
|
|
}
|
|
|
|
|
2014-05-23 17:09:18 -05:00
|
|
|
func NewPebbleDriver(adaptor *PebbleAdaptor, name string) *PebbleDriver {
|
2014-06-11 18:59:30 -07:00
|
|
|
p := &PebbleDriver{
|
2014-05-23 17:09:18 -05:00
|
|
|
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(),
|
2014-05-23 17:09:18 -05:00
|
|
|
},
|
2014-06-11 18:59:30 -07:00
|
|
|
Commands: make(map[string]func(map[string]interface{}) interface{}),
|
2014-06-15 17:22:50 -07:00
|
|
|
Adaptor: adaptor,
|
2014-05-23 17:09:18 -05:00
|
|
|
},
|
|
|
|
Messages: []string{},
|
|
|
|
}
|
2014-06-11 18:59:30 -07:00
|
|
|
|
|
|
|
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
|
|
|
}
|
2014-06-15 17:22:50 -07:00
|
|
|
func (d *PebbleDriver) adaptor() *PebbleAdaptor {
|
|
|
|
return d.Driver.Adaptor.(*PebbleAdaptor)
|
|
|
|
}
|
2014-05-02 17:22:05 -05:00
|
|
|
|
2014-05-23 17:09:18 -05:00
|
|
|
func (d *PebbleDriver) Start() bool { return true }
|
2014-05-02 17:22:05 -05:00
|
|
|
|
2014-05-23 17:09:18 -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
|
|
|
}
|
|
|
|
|
2014-05-23 17:09:18 -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
|
|
|
|
2014-05-23 17:09:18 -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
|
|
|
|
2014-05-23 17:09:18 -05:00
|
|
|
return m
|
2014-05-02 17:22:05 -05:00
|
|
|
}
|