Exemple #1
0
        /// <summary>
        ///     Connect with the Pebble.
        /// </summary>
        /// <exception cref="System.IO.IOException">Passed on when no connection can be made.</exception>
        public async Task ConnectAsync()
        {
            PhoneVersionResponse response;

            //PhoneVersionResponse is received immediately after connecting, and we must respond to it before making any other calls
            using (IResponseTransaction <PhoneVersionResponse> responseTransaction =
                       _responseManager.GetTransaction <PhoneVersionResponse>())
            {
                await _PebbleProt.ConnectAsync();

                response = responseTransaction.AwaitResponse(ResponseTimeout);
            }

            if (response != null)
            {
                var message = new AppVersionResponse();
                await SendMessageNoResponseAsync(Endpoint.PhoneVersion, message.GetBytes());

                IsAlive = true;

                //get the firmware details, we'll need to know the platform and version for possible future actions
                var firmwareResponse = await this.GetFirmwareVersionAsync();

                this.Firmware = firmwareResponse.Firmware;
            }
            else
            {
                Disconnect();
            }
        }
Exemple #2
0
        private void RawMessageReceived(object sender, RawMessageReceivedEventArgs e)
        {
            var       endpoint = (Endpoint)e.Endpoint;
            IResponse response = _responseManager.HandleResponse(endpoint, e.Payload);

            if (response != null)
            {
                if (e.Endpoint == (ushort)Endpoint.PhoneVersion)
                {
                    var message = new AppVersionResponse();
                    SendMessageNoResponseAsync(Endpoint.PhoneVersion, message.GetBytes()).Wait();
                }

                //Check for callbacks
                List <CallbackContainer> callbacks;
                if (_callbackHandlers.TryGetValue(response.GetType(), out callbacks))
                {
                    foreach (CallbackContainer callback in callbacks)
                    {
                        callback.Invoke(response);
                    }
                }
            }
        }