/// <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; }
/// <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); }