コード例 #1
0
        /// <summary>
        /// Watcher Signal Base
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Watcher_Signal(object sender, HardwareEvent hardwareEvent)
        {
            // Print Job Event
            PrintJobEvent printJobEvent = new PrintJobEvent {
                // Set Data
                Base = hardwareEvent.Base
            };

            // Signal Start
            OnSignal(sender, printJobEvent);
        }
コード例 #2
0
        /// <summary>
        /// The Sleep method puts the device into a sleeps state that is only woken by the events described in the paramter wakeUpEvents.
        /// Please note that if the event SystemTimer is not used, the system will not be woken up by any managed timers.  In addition,
        /// other threads will not be executed until this sleep call exits.  This method raises the OnSleepChange event.
        ///
        /// The MaximumTimeToActive property contains the timeout value for this call.
        /// </summary>
        /// <param name="level">Determines what level of sleep the system should enter.  The behavior of the level is determined
        /// by the hardware vendor.</param>
        /// <param name="wakeUpEvents">Determines the events that will cause the system to exit the given sleep level</param>
        public static void Sleep(SleepLevel level, HardwareEvent wakeUpEvents)
        {
            SleepChangeEventHandler h = OnSleepChange;

            if (h != null)
            {
                SleepEvent e = new SleepEvent();

                e.EventType    = SleepEventType.ChangeRequested;
                e.Level        = level;
                e.WakeUpEvents = wakeUpEvents;
                e.Time         = DateTime.UtcNow;

                h(e);
            }

            InternalSleep(level, wakeUpEvents);
        }
コード例 #3
0
        public MFTestResults Sleep_3_NoSystemTimerTest()
        {
            bool result = true;

            TimeSpan backup = PowerState.MaximumTimeToActive;

            try
            {
                PowerState.MaximumTimeToActive = new TimeSpan(0, 0, 0, 2);
                TimeSpan tsTimeout = PowerState.MaximumTimeToActive;

                PowerState.OnSleepChange += new SleepChangeEventHandler(this.SleepChange);

                HardwareEvent newEvents = HardwareEvent.OEMReserved1;

                _timerFired.Reset();
                _wakeupEvent = null;

                Timer t = new Timer(new TimerCallback(this.TimerCallback), null, tsTimeout.Milliseconds / 2, Timeout.Infinite);

                DateTime dtStart = DateTime.Now;

                // this will wake up with the max time allowed
                PowerState.Sleep(SleepLevel.Sleep, newEvents);


                ///
                /// When the debugging is enbled on a device the debug port is selected as a wakeup event by default,
                /// so we ignore this test if we get any events.
                ///
                if (_timerFired.WaitOne(1000, false) && (_wakeupEvent == null || _wakeupEvent.WakeUpEvents == 0))
                {
                    result = (_timerTime - dtStart) > tsTimeout;
                }

                PowerState.OnSleepChange -= new SleepChangeEventHandler(this.SleepChange);
            }
            finally
            {
                PowerState.MaximumTimeToActive = backup;
            }

            return(result ? MFTestResults.Pass : MFTestResults.Fail);
        }
コード例 #4
0
        public MFTestResults Sleep_2_ChangeLevelFromManagedCode()
        {
            MFTestResults result = MFTestResults.Fail;

            try
            {
                const int c_Timeout = 5000; // ms

                HardwareEvent newEvents = HardwareEvent.SerialIn | HardwareEvent.USBIn | HardwareEvent.SystemTimer | HardwareEvent.GeneralPurpose;

                PowerState.OnSleepChange += new  SleepChangeEventHandler(this.SleepChange);

                Timer t = new Timer(new TimerCallback(this.TimerCallback), null, c_Timeout, Timeout.Infinite);

                PowerState.Sleep(SleepLevel.Sleep, newEvents);

                // we must have received the heads-up on power change...
                if (_change.WaitOne(1 * c_Timeout, false))
                {
                    // and timers must still work as scheduled
                    if (_timerFired.WaitOne(2 * c_Timeout, false))
                    {
                        if (_wakeup.WaitOne(3 * c_Timeout, false))
                        {
                            result = MFTestResults.Pass;
                        }
                    }
                }

                t.Dispose();
            }
            catch (Exception ex)
            {
                result = MFTestResults.Fail;

                Log.Exception(ex.Message);
            }

            PowerState.OnSleepChange -= new SleepChangeEventHandler(this.SleepChange);

            return(result);
        }
コード例 #5
0
        public MFTestResults Sleep_1_Get_Set_GetAndCheck()
        {
            MFTestResults result = MFTestResults.Fail;

            try
            {
                TimeSpan      uptime = PowerState.Uptime;
                TimeSpan      tta    = PowerState.MaximumTimeToActive;
                HardwareEvent events = PowerState.WakeupEvents;

                Log.Comment("Uptime        : " + uptime);
                Log.Comment("Time-to-Active: " + tta);
                Log.Comment("Wakeup events : " + events);

                TimeSpan      newTta    = new TimeSpan(0, 0, 2);
                HardwareEvent newEvents = HardwareEvent.SerialIn | HardwareEvent.Socket | HardwareEvent.USBIn | HardwareEvent.SystemTimer | HardwareEvent.GeneralPurpose;

                PowerState.MaximumTimeToActive = newTta;
                PowerState.WakeupEvents        = newEvents;

                tta    = PowerState.MaximumTimeToActive;
                events = PowerState.WakeupEvents;

                if (
                    (tta == newTta) &&
                    (events == newEvents)
                    )
                {
                    result = MFTestResults.Pass;
                }
            }
            catch (Exception ex)
            {
                result = MFTestResults.Fail;

                Log.Exception(ex.Message);
            }

            return(result);
        }
コード例 #6
0
ファイル: Uptime.cs プロジェクト: aura1213/netmf-interpreter
 extern private static void InternalSleep(SleepLevel level, HardwareEvent wakeUpEvents);
コード例 #7
0
ファイル: Uptime.cs プロジェクト: aura1213/netmf-interpreter
        /// <summary>
        /// The Sleep method puts the device into a sleeps state that is only woken by the events described in the paramter wakeUpEvents.
        /// Please note that if the event SystemTimer is not used, the system will not be woken up by any managed timers.  In addition,
        /// other threads will not be executed until this sleep call exits.  This method raises the OnSleepChange event.
        ///
        /// The MaximumTimeToActive property contains the timeout value for this call.
        /// </summary>
        /// <param name="level">Determines what level of sleep the system should enter.  The behavior of the level is determined
        /// by the hardware vendor.</param>
        /// <param name="wakeUpEvents">Determines the events that will cause the system to exit the given sleep level</param>
        public static void Sleep(SleepLevel level, HardwareEvent wakeUpEvents)
        {
            SleepChangeEventHandler h = OnSleepChange;

            if (h != null)
            {
                SleepEvent e = new SleepEvent();

                e.EventType = SleepEventType.ChangeRequested;
                e.Level = level;
                e.WakeUpEvents = wakeUpEvents;
                e.Time = DateTime.UtcNow;

                h(e);
            }

            InternalSleep(level, wakeUpEvents);
        }
コード例 #8
0
 extern private static void InternalSleep(SleepLevel level, HardwareEvent wakeUpEvents);