diff --git a/platforms/mavlink/mavlink_adaptor.go b/platforms/mavlink/mavlink_adaptor.go index 380523b1..16835633 100644 --- a/platforms/mavlink/mavlink_adaptor.go +++ b/platforms/mavlink/mavlink_adaptor.go @@ -7,10 +7,11 @@ import ( "github.com/tarm/goserial" ) -var _ gobot.AdaptorInterface = (*MavlinkAdaptor)(nil) +var _ gobot.Adaptor = (*MavlinkAdaptor)(nil) type MavlinkAdaptor struct { - gobot.Adaptor + name string + port string sp io.ReadWriteCloser connect func(*MavlinkAdaptor) (err error) } @@ -18,11 +19,8 @@ type MavlinkAdaptor struct { // NewMavLinkAdaptor creates a new mavlink adaptor with specified name and port func NewMavlinkAdaptor(name string, port string) *MavlinkAdaptor { return &MavlinkAdaptor{ - Adaptor: *gobot.NewAdaptor( - name, - "mavlink.MavlinkAdaptor", - port, - ), + name: name, + port: port, connect: func(m *MavlinkAdaptor) (err error) { s, err := serial.OpenPort(&serial.Config{Name: m.Port(), Baud: 57600}) if err != nil { @@ -34,6 +32,9 @@ func NewMavlinkAdaptor(name string, port string) *MavlinkAdaptor { } } +func (m *MavlinkAdaptor) Name() string { return m.name } +func (m *MavlinkAdaptor) Port() string { return m.port } + // Connect returns true if connection to device is successful func (m *MavlinkAdaptor) Connect() (errs []error) { if err := m.connect(m); err != nil { diff --git a/platforms/mavlink/mavlink_driver.go b/platforms/mavlink/mavlink_driver.go index ec4ed847..2ffd123f 100644 --- a/platforms/mavlink/mavlink_driver.go +++ b/platforms/mavlink/mavlink_driver.go @@ -7,10 +7,13 @@ import ( common "github.com/hybridgroup/gobot/platforms/mavlink/common" ) -var _ gobot.DriverInterface = (*MavlinkDriver)(nil) +var _ gobot.Driver = (*MavlinkDriver)(nil) type MavlinkDriver struct { - gobot.Driver + name string + connection gobot.Connection + interval time.Duration + gobot.Eventer } type MavlinkInterface interface { @@ -23,11 +26,10 @@ type MavlinkInterface interface { // "message" - triggered when a new valid message is processed func NewMavlinkDriver(a *MavlinkAdaptor, name string) *MavlinkDriver { m := &MavlinkDriver{ - Driver: *gobot.NewDriver( - name, - "mavlink.MavlinkDriver", - a, - ), + name: name, + connection: a, + Eventer: gobot.NewEventer(), + interval: 10 * time.Millisecond, } m.AddEvent("packet") @@ -37,9 +39,12 @@ func NewMavlinkDriver(a *MavlinkAdaptor, name string) *MavlinkDriver { return m } +func (m *MavlinkDriver) Connection() gobot.Connection { return m.connection } +func (m *MavlinkDriver) Name() string { return m.name } + // adaptor returns driver associated adaptor func (m *MavlinkDriver) adaptor() *MavlinkAdaptor { - return m.Driver.Adaptor().(*MavlinkAdaptor) + return m.Connection().(*MavlinkAdaptor) } // Start begins process to read mavlink packets every m.Interval @@ -59,7 +64,7 @@ func (m *MavlinkDriver) Start() (errs []error) { continue } gobot.Publish(m.Event("message"), message) - <-time.After(m.Interval()) + <-time.After(m.interval) } }() return