コード例 #1
0
ファイル: DeviceProvider.cs プロジェクト: cdwork/microserver
        /// <summary>
        /// Returns the current <see cref="IHardware"/> or creates it the first time.
        /// </summary>
        /// <param name="model">Hardware model.</param>
        /// <returns>Hardware interface for the requested model when successful.</returns>
        /// <remarks>
        /// The requested hardware model must be the same, otherwise any existing board
        /// is disposed and an attempt made to create a board of the new model.
        /// </remarks>
        public static IHardware Connect(BoardModel model)
        {
            // Thread-safe lock
            lock (_lock)
            {
                // Check existing board when present
                if (_board != null)
                {
                    // Detect chipset
                    var chipset = Detect();
                    if (chipset == ChipsetModel.Unidentified)
                    {
                        return(null);
                    }

                    // Return existing board when chipset mataches
                    if (_board.Chipset == chipset)
                    {
                        return(_board);
                    }

                    // Dispose existing board when not null and different model (just in case)
                    _board.Dispose();
                    _board = null;
                }

                // Create new board
                switch (model)
                {
                case BoardModel.Sc20260D:
                    return(_board = new SC20260Board());

                case BoardModel.Sc20100S:
                    return(_board = new SC20100Board());

                case BoardModel.Bit:
                    throw new NotImplementedException();

                case BoardModel.Duino:
                    return(_board = new DuinoBoard());

                case BoardModel.Feather:
                    return(_board = new FeatherBoard());

                case BoardModel.Portal:
                    throw new NotImplementedException();

                case BoardModel.Stick:
                    throw new NotImplementedException();

                default:
                    throw new ArgumentOutOfRangeException(nameof(model));
                }
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: palatyn/microserver
        static void Main()
        {
            try
            {
                var hardwareOptions = new HardwareOptions()
                {
                    BoardModel = BoardModel.Sc20260D
                };
                MainBoard = new Mainboard(hardwareOptions).Connect();
                MainBoard.Network.Enabled();

                var server = new SocketServer(options =>
                {
                    options.Register(new HttpResponse());
                });
                server.Start();
            }
            catch
            {
                MainBoard?.Dispose();
            }
        }
コード例 #3
0
        static void Main()
        {
            try
            {
                var hardwareOptions = new HardwareOptions()
                {
                    BoardModel = BoardModel.Sc20260D
                };
                MainBoard = new Mainboard(hardwareOptions).Connect();
                MainBoard.Network.Enabled();

                var server = new HttpServer(options =>
                {
                    options.UseDeveloperExceptionPage();
                    options.UseFileServer();
                    options.UseMvc();
                });
                server.Start();
            }
            catch
            {
                MainBoard?.Dispose();
            }
        }