Esempio n. 1
0
        /// <summary>
        /// Internal constructor.
        /// </summary>
        internal Teensy(TeensyFactory factory,
                        TeensyTypes teensyType,
                        string portName,
                        uint serialNumber,
                        UsbTypes usbType)
        {
            // ReSharper disable once JoinNullCheckWithUsage
            if (factory == null)
            {
                throw new TeensyException(
                          $"It is not possible to create a {Constants.TeensyWord} object without an owner TeensyFactory.");
            }

            if (usbType == UsbTypes.Disconnected)
            {
                throw new TeensyException(
                          $"It is not possible to create a {Constants.TeensyWord} object in a disconnected state.");
            }

            if (serialNumber == 0)
            {
                throw new TeensyException(
                          $"It is not possible to create a {Constants.TeensyWord} object without a serial number.");
            }

            TeensyType   = CheckType(teensyType);
            Factory      = factory;
            _portName    = portName;
            SerialNumber = serialNumber;
            UsbType      = usbType;
        }
Esempio n. 2
0
        /// <summary>
        /// Change the internal state. Returns true if something actually changed.
        /// </summary>
        internal bool ChangeState(UsbTypes usbType,
                                  string portName)
        {
            var result = UsbType != usbType || _portName != portName;

            if (result)
            {
                _portName = portName;

                if (UsbType != usbType)
                {
                    UsbType = usbType;

                    switch (usbType)
                    {
                    case UsbTypes.Bootloader:
                    {
                        UsbTypeBootloaderReady.Set();

                        ProvideFeedback(
                            $"{Constants.TeensyWord} Bootloader Running");

                        break;
                    }

                    case UsbTypes.Disconnected:
                    {
                        ProvideFeedback(
                            $"{Constants.TeensyWord} Disconnected");

                        break;
                    }

                    case UsbTypes.Serial:
                    {
                        UsbTypeSerialReady.Set();
                        ProvideFeedback($"{Constants.TeensyWord} Connected");
                        break;
                    }
                    }
                }

                ConnectionStateChanged?.Invoke(this);
            }

            return(result);
        }