PES4 / Mbed OS Queue_02
Committer:
demayer
Date:
Sat Mar 28 15:28:19 2020 +0000
Revision:
0:6bf0743ece18
IMU Thread with an event-queue running parallel to handle tasks like a 5 times blinking LED. Button with interrupt detected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
demayer 0:6bf0743ece18 1
demayer 0:6bf0743ece18 2 /** \addtogroup events */
demayer 0:6bf0743ece18 3 /** @{*/
demayer 0:6bf0743ece18 4 /* events
demayer 0:6bf0743ece18 5 * Copyright (c) 2017 ARM Limited
demayer 0:6bf0743ece18 6 *
demayer 0:6bf0743ece18 7 * Licensed under the Apache License, Version 2.0 (the "License");
demayer 0:6bf0743ece18 8 * you may not use this file except in compliance with the License.
demayer 0:6bf0743ece18 9 * You may obtain a copy of the License at
demayer 0:6bf0743ece18 10 *
demayer 0:6bf0743ece18 11 * http://www.apache.org/licenses/LICENSE-2.0
demayer 0:6bf0743ece18 12 *
demayer 0:6bf0743ece18 13 * Unless required by applicable law or agreed to in writing, software
demayer 0:6bf0743ece18 14 * distributed under the License is distributed on an "AS IS" BASIS,
demayer 0:6bf0743ece18 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
demayer 0:6bf0743ece18 16 * See the License for the specific language governing permissions and
demayer 0:6bf0743ece18 17 * limitations under the License.
demayer 0:6bf0743ece18 18 */
demayer 0:6bf0743ece18 19 #ifndef MBED_SHARED_QUEUES_H
demayer 0:6bf0743ece18 20 #define MBED_SHARED_QUEUES_H
demayer 0:6bf0743ece18 21
demayer 0:6bf0743ece18 22 #include "events/EventQueue.h"
demayer 0:6bf0743ece18 23
demayer 0:6bf0743ece18 24 namespace mbed {
demayer 0:6bf0743ece18 25
demayer 0:6bf0743ece18 26 /**
demayer 0:6bf0743ece18 27 * Return a pointer to an EventQueue, on which normal tasks can be queued.
demayer 0:6bf0743ece18 28 *
demayer 0:6bf0743ece18 29 * All calls to this return the same EventQueue - it and its dispatch thread
demayer 0:6bf0743ece18 30 * are created on the first call to this function. The dispatch thread
demayer 0:6bf0743ece18 31 * runs at default priority (currently osPriorityNormal).
demayer 0:6bf0743ece18 32 *
demayer 0:6bf0743ece18 33 * The EventQueue returned may be used to call() Events, or to chain() other
demayer 0:6bf0743ece18 34 * EventQueues so that they are run in the same context.
demayer 0:6bf0743ece18 35 *
demayer 0:6bf0743ece18 36 * Events (or chained EventQueues) executing on the normal event queue should
demayer 0:6bf0743ece18 37 * normally take less than 10ms to execute, to avoid starving other users. As
demayer 0:6bf0743ece18 38 * such, users can expect that event latency will typically be 10ms or less,
demayer 0:6bf0743ece18 39 * but could occasionally be significantly higher if many events are queued.
demayer 0:6bf0743ece18 40 *
demayer 0:6bf0743ece18 41 * If an RTOS is not present or the configuration option
demayer 0:6bf0743ece18 42 * `events.shared-dispatch-from-application` is set to true, then this
demayer 0:6bf0743ece18 43 * does not create a dedicated dispatch thread - instead the application is
demayer 0:6bf0743ece18 44 * expected to run the EventQueue's dispatch, eg from main. This is necessary
demayer 0:6bf0743ece18 45 * for the event loop to work without an RTOS, or an RTOS system can can save
demayer 0:6bf0743ece18 46 * memory by reusing the main stack.
demayer 0:6bf0743ece18 47 *
demayer 0:6bf0743ece18 48 * @return pointer to event queue
demayer 0:6bf0743ece18 49 */
demayer 0:6bf0743ece18 50 events::EventQueue *mbed_event_queue();
demayer 0:6bf0743ece18 51
demayer 0:6bf0743ece18 52 #ifdef MBED_CONF_RTOS_PRESENT
demayer 0:6bf0743ece18 53 /**
demayer 0:6bf0743ece18 54 * Return a pointer to an EventQueue, on which small high-priority tasks can
demayer 0:6bf0743ece18 55 * be queues, such as simple deferrals from interrupt.
demayer 0:6bf0743ece18 56 *
demayer 0:6bf0743ece18 57 * All calls to this return the same EventQueue - it and its thread are
demayer 0:6bf0743ece18 58 * created on the first call to this function. The dispatch thread
demayer 0:6bf0743ece18 59 * runs at a high priority (currently osPriorityHigh).
demayer 0:6bf0743ece18 60 *
demayer 0:6bf0743ece18 61 * The EventQueue returned may be used to call() Events, or to chain() other
demayer 0:6bf0743ece18 62 * EventQueues so that they are run in the same context.
demayer 0:6bf0743ece18 63 *
demayer 0:6bf0743ece18 64 * Events (or chained EventQueues) executing on the high-priority event queue
demayer 0:6bf0743ece18 65 * should normally take less than 100us to execute, to avoid starving other
demayer 0:6bf0743ece18 66 * users. As such, users can expect that event latency will typically be 100us
demayer 0:6bf0743ece18 67 * or less, but could occasionally be significantly higher if many events are
demayer 0:6bf0743ece18 68 * queued.
demayer 0:6bf0743ece18 69 *
demayer 0:6bf0743ece18 70 * @return pointer to high-priority event queue
demayer 0:6bf0743ece18 71 */
demayer 0:6bf0743ece18 72
demayer 0:6bf0743ece18 73 events::EventQueue *mbed_highprio_event_queue();
demayer 0:6bf0743ece18 74
demayer 0:6bf0743ece18 75 #endif // MBED_CONF_RTOS_PRESENT
demayer 0:6bf0743ece18 76
demayer 0:6bf0743ece18 77 };
demayer 0:6bf0743ece18 78
demayer 0:6bf0743ece18 79 #endif
demayer 0:6bf0743ece18 80
demayer 0:6bf0743ece18 81 /** @}*/