private static libmyo.HandlerResult HandleEvent(IntPtr userData, IntPtr evt) { GCHandle handle = (GCHandle)userData; Hub self = (Hub)handle.Target; var type = libmyo.event_get_type(evt); var timestamp = TIMESTAMP_EPOCH.AddMilliseconds(libmyo.event_get_timestamp(evt) / 1000); var myoHandle = libmyo.event_get_myo(evt); switch (type) { case libmyo.EventType.Paired: var myo = new Myo(self, myoHandle); self._myos.Add(myoHandle, myo); if (self.Paired != null) { self.Paired(self, new MyoEventArgs(myo, DateTime.Now)); } break; default: Debug.Assert(self._myos[myoHandle] != null); self._myos[myoHandle].HandleEvent(type, timestamp, evt); break; } return(libmyo.HandlerResult.Continue); }