public NRF52840_Timer(Machine machine, int numberOfEvents) : base(machine)
        {
            IRQ = new GPIO();

            if (numberOfEvents > MaxNumberOfEvents)
            {
                throw new ConstructionException($"Cannot create {nameof(NRF52840_Timer)} with {numberOfEvents} events (must be less than {MaxNumberOfEvents})");
            }
            this.numberOfEvents = numberOfEvents;

            this.eventCompareEnabled = new IFlagRegisterField[numberOfEvents];
            innerTimers = new ComparingTimer[numberOfEvents];
            for (var i = 0u; i < innerTimers.Length; i++)
            {
                var j = i;
                innerTimers[j] = new ComparingTimer(machine.ClockSource, InitialFrequency, this, $"compare{j}", eventEnabled: true);
                innerTimers[j].CompareReached += () =>
                {
                    this.Log(LogLevel.Noisy, "Compare Reached on CC{0} is {1}", j, innerTimers[j].Compare);
                    eventCompareEnabled[j].Value = true;
                    EventTriggered?.Invoke((uint)Register.Compare0EventPending + 0x4u * j);
                    UpdateInterrupts();
                };
            }

            DefineRegisters();
        }
        /// <summary>
        /// Trigger this action.
        /// This method is usually invoked by an IEventScheduler and shouldn't be called manually.
        /// </summary>
        /// <param name="scheduler">The scheduler which triggered the event</param>
        public virtual void Trigger(IEventScheduler scheduler)
        {
            var args = new SchedulerEventArgs(scheduler);

            EventTriggered?.Invoke(this, args);
            _action?.Invoke();
        }
Beispiel #3
0
 protected virtual void OnEventTriggered(InterpreterEvents interpreterEvent, string message = null)
 {
     EventTriggered?.Invoke(this, new InterpreterEventArgs()
     {
         InterpreterEvent = interpreterEvent, Message = message
     });
 }
Beispiel #4
0
        public NRF52840_RTC(Machine machine, int numberOfEvents)
        {
            IRQ = new GPIO();

            if (numberOfEvents > MaxNumberOfEvents)
            {
                throw new ConstructionException($"Cannot create {nameof(NRF52840_Timer)} with {numberOfEvents} events (must be less than {MaxNumberOfEvents})");
            }
            this.numberOfEvents     = numberOfEvents;
            compareEventEnabled     = new IFlagRegisterField[numberOfEvents];
            compareReached          = new IFlagRegisterField[numberOfEvents];
            compareInterruptEnabled = new IFlagRegisterField[numberOfEvents];

            innerTimers = new ComparingTimer[numberOfEvents];
            for (var i = 0u; i < innerTimers.Length; i++)
            {
                var j = i;
                innerTimers[i] = new ComparingTimer(machine.ClockSource, InitialFrequency, this, $"compare{i}", eventEnabled: true);
                innerTimers[i].CompareReached += () =>
                {
                    compareReached[j].Value = true;
                    if (compareEventEnabled[j].Value)
                    {
                        EventTriggered?.Invoke((uint)Register.Compare0EventPending + j * 4);
                    }
                    UpdateInterrupts();
                };
            }

            DefineRegisters();
        }
Beispiel #5
0
 private void F_MyTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     if (f_SendDataItems != null && f_SendDataItems.Count > 0)
     {
         T             data     = f_SendDataItems.Dequeue();
         MyEventDo <T> sendData = new MyEventDo <T>(data);
         EventTriggered?.Invoke(sendData);
     }
 }
        public virtual bool TriggerEvent(BaseEvent evnt)
        {
            if (evnt == null)
            {
                return(false);
            }

            EventTriggered?.Invoke(this, new BaseEventArgs(evnt));

            return(true);
        }
Beispiel #7
0
        private void Update()
        {
            var value = started.Value && interruptEnabled.Value;

            if (value)
            {
                this.Log(LogLevel.Noisy, "Generated new interrupt for RNG");
                EventTriggered?.Invoke(0);
            }
            IRQ.Set(value);
            if (started.Value && readyToStopShortEnabled.Value)
            {
                started.Value = false;
                IRQ.Set(false);
            }
        }
 private void OnTriggerEnter(Collider other)
 {
     if (!_UseTags)
     {
         EventTriggered?.Invoke();
         return;
     }
     if (!_TriggeringTags.Contains(other.tag))
     {
         return;
     }
     EventTriggered?.Invoke();
     if (_DisableWhenTriggered)
     {
         gameObject.SetActive(false);
     }
 }
Beispiel #9
0
        private void TriggerReset()
        {
            if (!interruptEnabled || readyToReset)
            {
                this.Log(LogLevel.Info, "Reseting machine");
                machine.RequestReset();
                return;
            }
            ;

            this.Log(LogLevel.Info, "Timeout triggered with interrupt enabled, waiting 2 cycles to reset");
            EventTriggered?.Invoke((uint)Register.Timeout);
            eventTimeoutEnabled.Value = true;
            IRQ.Set(true);

            readyToReset = true;
            Value        = 2;
            Enabled      = true;
        }
Beispiel #10
0
    private void CloudManagerOnAnchorLocated(object sender, AnchorLocatedEventArgs args)
    {
        if (args.Status == LocateAnchorStatus.Located)
        {
            feedbackBox.text = $"Found anchor: {args.Anchor.Identifier}";
            var currentCloudAnchor = args.Anchor;
            UnityDispatcher.InvokeOnAppThread(() =>
            {
                Pose anchorPose = Pose.identity;

#if UNITY_ANDROID || UNITY_IOS
                anchorPose = currentCloudAnchor.GetPose();
#endif
                // HoloLens: The position will be set based on the unityARUserAnchor that was located.
                //SpawnOrMoveCurrentAnchoredObject(anchorPose.position, anchorPose.rotation);
                GameObject spawned = gameObject.GetComponent <ModelSpawnerScript>()
                                     .SpawnAnchoredObject(args.Anchor.Identifier, anchorPose.position, anchorPose.rotation);
                EventTriggered?.Invoke(spawned);
            });
        }
    }
        private void DefineRegisters()
        {
            Registers.Start.Define(this)
            .WithFlag(0, FieldMode.Write, name: "TASKS_START",
                      writeCallback: (_, __) =>
            {
                RunEncryption();
                eventEnd.Value = true;
                EventTriggered?.Invoke((uint)Registers.EventEnd);
                UpdateInterrupts();
            })
            .WithReservedBits(1, 31)
            ;

            Registers.EventEnd.Define(this, name: "EVENTS_ENDECB")
            .WithFlag(0, out eventEnd, name: "ENDECB")
            .WithReservedBits(1, 31)
            .WithWriteCallback((_, __) => UpdateInterrupts())
            ;

            Registers.InterruptEnableSet.Define(this, name: "INTENSET")
            .WithFlag(0, out endInterruptEnabled, FieldMode.Set | FieldMode.Read, name: "ENDECB")
            .WithReservedBits(1, 31)
            .WithWriteCallback((_, __) => UpdateInterrupts())
            ;

            Registers.InterruptEnableClear.Define(this, name: "INTENCLR")
            .WithFlag(0,
                      writeCallback: (_, value) => endInterruptEnabled.Value &= !value,
                      valueProviderCallback: _ => endInterruptEnabled.Value, name: "ENDECB")
            .WithReservedBits(1, 31)
            .WithWriteCallback((_, __) => UpdateInterrupts())
            ;

            Registers.DataPtr.Define(this)
            .WithValueField(0, 32, out dataPointer, name: "ECBDATAPTR")
            ;
        }
Beispiel #12
0
 private void BezierSpline_TriggerEvent(Trigger obj)
 {
     EventTriggered?.Invoke(obj);
 }
 /// <summary>
 /// The Flyout can decide to handle events from the outside
 /// </summary>
 public virtual void PushEvent(AdminShellEvents.AasEventMsgEnvelope ev)
 {
     // default behavior: trigger event
     EventTriggered?.Invoke(ev);
 }
Beispiel #14
0
 protected virtual void OnEventTriggered(int num1, int num2)
 {
     EventTriggered?.Invoke(num1, num2);
 }
 private void SplineBase_TriggerEvent(Trigger obj)
 {
     EventTriggered?.Invoke(obj);
 }
Beispiel #16
0
 private void SetEvent(Events @event)
 {
     interruptManager.SetInterrupt(@event);
     events[(int)@event].Value = true;
     EventTriggered?.Invoke((uint)@event * 4 + 0x100);
 }