Exemple #1
0
        public void scannerOff()
        {
            GpioManager manager1 = GpioManager.Instance;

            manager1.setGpioResponseListener(this);
            manager1.ScannerOff();
        }
Exemple #2
0
        public async void OnDone(WHOAMI whoami)
        {
            if (whoami == WHOAMI.SCANNER)
            {
                manager = GpioManager.Instance;
                manager.setGpioResponseListener(this);
                manager.TriggerOff();

                trigger = false;

                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    // This now works, because it's running on the UI thread:
                    // txt_Search.Text = res.ToString();
                    //lst_Category.Visibility = Visibility.Visible;
                    pr_scan.Visibility         = Visibility.Collapsed;
                    pr_scan.IsActive           = false;
                    Info_Text.Visibility       = Visibility.Collapsed;
                    txt_ScannedData.Visibility = Visibility.Visible;;
                    btn_Scan.Visibility        = Visibility.Visible;
                    //Scan_btn.IsEnabled = true;
                    //btn_Checkout.IsEnabled = true;
                    //btn_CartView.IsEnabled = true;
                    //btn_SearchItem.IsEnabled = true;
                });
            }
        }
Exemple #3
0
        private static void Main()
        {
            // Build pipe server
            var ipcServer = new NamedPipeServerStream(PipeName, PipeDirection.InOut, 1);

            // TODO: TEST
            new Thread(TestClient)
            {
                IsBackground = true
            }.Start();

            // Start pipe server
            while (Thread.CurrentThread.ThreadState == ThreadState.Running)
            {
                if (!ipcServer.IsConnected)
                {
                    ipcServer.WaitForConnection();
                }

                var request  = ipcServer.ReadMessage <GpioRequest>();
                var response = new GpioResponse();

                using (new UserContext(ipcServer.GetImpersonationUserName()))
                {
                                        #if DEBUG
                    Console.WriteLine(JsonConvert.SerializeObject(request));
                                        #endif

                    var gpioManager = new GpioManager();                     // TODO: Get from DI
                    switch (request.Action)
                    {
                    case RequestAction.Export:
                        response.Result  = gpioManager.TryExport(request.PinNumber, out IGpioPin pin);
                        response.Payload = (pin as GpioPin)?.Path;
                        break;

                    case RequestAction.Unexport:
                        response.Result = gpioManager.TryUnexport(new GpioPin(request.PinNumber));
                        break;

                    default:
                        response.Result = false;
                        break;
                    }
                }

                ipcServer.Disconnect();
            }

            ipcServer.Dispose();
        }
        private void mn_PowerOffClick(object sender, RoutedEventArgs e)
        {
            GpioManager manager = GpioManager.Instance;

            manager.PaymentOff();
        }
Exemple #5
0
 /// <summary>
 /// Class constructor.
 /// </summary>
 public GpioHandler(IErrorHandler errorHandler, IConfig config, ILogger logger, ServiceStats serviceStats, GpioManager gpio)
     : base(errorHandler, config, logger, serviceStats)
 {
     _gpio = gpio;
 }
Exemple #6
0
        /// <summary>
        /// Starts the service.
        /// </summary>
        public void Start()
        {
            try
            {
                //message
                _logger = Log.Instance;
                _logger.WriteMessage("Service", "==========================================");
                _logger.WriteMessage("Service", "Starting service..");

                //start time
                _startTime = DateTime.Now;

                //events
                Console.CancelKeyPress += Console_CancelKeyPress;

                //config
                _logger.WriteMessage("Service", "Loading configuration..");
                IConfigurationRoot root = new ConfigurationBuilder()
                                          .SetBasePath(Directory.GetCurrentDirectory())
                                          .AddJsonFile("Config.json", optional: true, reloadOnChange: false)
                                          .Build();
                _config = new Config(root);
                _logger.WriteMessage("Service", $"Service version is {_config.ServiceVersion}");

                //init pi (if linux)
                if (_config.IsLinux)
                {
                    Pi.Init <BootstrapWiringPi>();
                }

                //singletons
                _logger.WriteMessage("Service", "Creating support structures..");
                ((Log)Log.Instance).Initialize(_config.IsWindows ? "C:\\Temp\\" : "/var/log/", _config.ServiceVersion);
                _errorCache   = new ErrorCache(null, _config.ErrorRetention);
                _errorHandler = new ErrorHandler(_errorCache, _logger);
                _serviceState = new ServiceState(_errorHandler, _logger, ServiceStateType.Down);
                _serviceStats = new ServiceStats(_errorHandler);
                _heartbeat    = new Heartbeat(_errorHandler, _config, _logger, _serviceStats, _serviceState);
                _piInfo       = new PiInfo(_config);
                _gpio         = new GpioManager(_errorHandler, _config);

                //stats writers
                _statsWriters.Add(_serviceState);
                _statsWriters.Add(_serviceStats);
                _statsWriters.Add(_gpio);
                _statsWriters.Add(_piInfo);
                _statsWriters.Add((IStatsWriter)_errorCache);

                //start health thread
                _logger.WriteMessage("Service", "Starting health thread..");
                _healthThread = new Thread(Health_Thread)
                {
                    IsBackground = true
                };
                _healthThread.Start();

                //finish init on another thread, finish start
                Task.Run(() =>
                {
                    //start gpio loop
                    _gpio.Initialize();

                    //wait for ip assignment
                    WaitForIPAssignment();

                    //start heatbeat timer
                    _heartbeat.Start();

                    //start http listener
                    StartHttpListener();
                });

                //log start operation
                _serviceStats.LogOperation("ServiceStart", DateTime.Now.Subtract(_startTime));

                //wait for exit signal
                _exitSignal.WaitOne();
            }
            catch (Exception ex)
            {
                if (_errorHandler != null)
                {
                    _errorHandler.LogError(ex);
                }
                else
                {
                    Console.WriteLine(ex);
                }
            }
        }