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-07-07 17:35:59 -07:00
|
|
|
Driver: *gobot.NewDriver(
|
|
|
|
name,
|
|
|
|
"PebbleDriver",
|
|
|
|
adaptor,
|
|
|
|
),
|
2014-05-23 17:09:18 -05:00
|
|
|
Messages: []string{},
|
|
|
|
}
|
2014-06-11 18:59:30 -07:00
|
|
|
|
2014-07-07 17:35:59 -07:00
|
|
|
p.AddEvent("button")
|
|
|
|
p.AddEvent("accel")
|
|
|
|
p.AddEvent("tap")
|
|
|
|
|
2014-07-09 18:32:27 -07:00
|
|
|
p.AddCommand("PublishEvent", func(params map[string]interface{}) interface{} {
|
2014-06-11 18:59:30 -07:00
|
|
|
p.PublishEvent(params["name"].(string), params["data"].(string))
|
|
|
|
return nil
|
|
|
|
})
|
|
|
|
|
2014-07-09 18:32:27 -07:00
|
|
|
p.AddCommand("SendNotification", func(params map[string]interface{}) interface{} {
|
2014-06-11 18:59:30 -07:00
|
|
|
p.SendNotification(params["message"].(string))
|
|
|
|
return nil
|
|
|
|
})
|
|
|
|
|
2014-07-09 18:32:27 -07:00
|
|
|
p.AddCommand("PendingMessage", func(params map[string]interface{}) interface{} {
|
2014-06-11 18:59:30 -07:00
|
|
|
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 {
|
2014-07-09 18:32:27 -07:00
|
|
|
return d.Adaptor().(*PebbleAdaptor)
|
2014-06-15 17:22:50 -07:00
|
|
|
}
|
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) {
|
2014-07-07 17:35:59 -07:00
|
|
|
gobot.Publish(d.Event(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
|
|
|
}
|