This is a fork of the `events` subdirectory of https://github.com/ARMmbed/mbed-os

Dependents:   HelloWorld_CCA01M1 HelloWorld_CCA02M1 CI-data-logger-server HelloWorld_CCA02M1 ... more

This is a fork of the events subdirectory of https://github.com/ARMmbed/mbed-os.

Note, you must import this library with import name: events!!!

Committer:
Sam Grove
Date:
Sat Oct 01 02:11:36 2016 -0500
Revision:
2:a60d8117d0e0
Parent:
0:a792d4bf36c2
For drivers, events, hal, platform, rtos and mbed.h add one level of path to make sure specific and unique includes files are found.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bogdan Marinescu 0:a792d4bf36c2 1 /* events
Bogdan Marinescu 0:a792d4bf36c2 2 * Copyright (c) 2016 ARM Limited
Bogdan Marinescu 0:a792d4bf36c2 3 *
Bogdan Marinescu 0:a792d4bf36c2 4 * Licensed under the Apache License, Version 2.0 (the "License");
Bogdan Marinescu 0:a792d4bf36c2 5 * you may not use this file except in compliance with the License.
Bogdan Marinescu 0:a792d4bf36c2 6 * You may obtain a copy of the License at
Bogdan Marinescu 0:a792d4bf36c2 7 *
Bogdan Marinescu 0:a792d4bf36c2 8 * http://www.apache.org/licenses/LICENSE-2.0
Bogdan Marinescu 0:a792d4bf36c2 9 *
Bogdan Marinescu 0:a792d4bf36c2 10 * Unless required by applicable law or agreed to in writing, software
Bogdan Marinescu 0:a792d4bf36c2 11 * distributed under the License is distributed on an "AS IS" BASIS,
Bogdan Marinescu 0:a792d4bf36c2 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Bogdan Marinescu 0:a792d4bf36c2 13 * See the License for the specific language governing permissions and
Bogdan Marinescu 0:a792d4bf36c2 14 * limitations under the License.
Bogdan Marinescu 0:a792d4bf36c2 15 */
Sam Grove 2:a60d8117d0e0 16 #include "events/EventQueue.h"
Bogdan Marinescu 0:a792d4bf36c2 17
Sam Grove 2:a60d8117d0e0 18 #include "events/mbed_events.h"
Bogdan Marinescu 0:a792d4bf36c2 19 #include "mbed.h"
Bogdan Marinescu 0:a792d4bf36c2 20
Bogdan Marinescu 0:a792d4bf36c2 21
Bogdan Marinescu 0:a792d4bf36c2 22 EventQueue::EventQueue(unsigned event_size, unsigned char *event_pointer) {
Bogdan Marinescu 0:a792d4bf36c2 23 if (!event_pointer) {
Bogdan Marinescu 0:a792d4bf36c2 24 equeue_create(&_equeue, event_size);
Bogdan Marinescu 0:a792d4bf36c2 25 } else {
Bogdan Marinescu 0:a792d4bf36c2 26 equeue_create_inplace(&_equeue, event_size, event_pointer);
Bogdan Marinescu 0:a792d4bf36c2 27 }
Bogdan Marinescu 0:a792d4bf36c2 28 }
Bogdan Marinescu 0:a792d4bf36c2 29
Bogdan Marinescu 0:a792d4bf36c2 30 EventQueue::~EventQueue() {
Bogdan Marinescu 0:a792d4bf36c2 31 equeue_destroy(&_equeue);
Bogdan Marinescu 0:a792d4bf36c2 32 }
Bogdan Marinescu 0:a792d4bf36c2 33
Bogdan Marinescu 0:a792d4bf36c2 34 void EventQueue::dispatch(int ms) {
Bogdan Marinescu 0:a792d4bf36c2 35 return equeue_dispatch(&_equeue, ms);
Bogdan Marinescu 0:a792d4bf36c2 36 }
Bogdan Marinescu 0:a792d4bf36c2 37
Bogdan Marinescu 0:a792d4bf36c2 38 void EventQueue::break_dispatch() {
Bogdan Marinescu 0:a792d4bf36c2 39 return equeue_break(&_equeue);
Bogdan Marinescu 0:a792d4bf36c2 40 }
Bogdan Marinescu 0:a792d4bf36c2 41
Bogdan Marinescu 0:a792d4bf36c2 42 unsigned EventQueue::tick() {
Bogdan Marinescu 0:a792d4bf36c2 43 return equeue_tick();
Bogdan Marinescu 0:a792d4bf36c2 44 }
Bogdan Marinescu 0:a792d4bf36c2 45
Bogdan Marinescu 0:a792d4bf36c2 46 void EventQueue::cancel(int id) {
Bogdan Marinescu 0:a792d4bf36c2 47 return equeue_cancel(&_equeue, id);
Bogdan Marinescu 0:a792d4bf36c2 48 }
Bogdan Marinescu 0:a792d4bf36c2 49
Bogdan Marinescu 0:a792d4bf36c2 50 void EventQueue::background(Callback<void(int)> update) {
Bogdan Marinescu 0:a792d4bf36c2 51 _update = update;
Bogdan Marinescu 0:a792d4bf36c2 52
Bogdan Marinescu 0:a792d4bf36c2 53 if (_update) {
Bogdan Marinescu 0:a792d4bf36c2 54 equeue_background(&_equeue, &Callback<void(int)>::thunk, &_update);
Bogdan Marinescu 0:a792d4bf36c2 55 } else {
Bogdan Marinescu 0:a792d4bf36c2 56 equeue_background(&_equeue, 0, 0);
Bogdan Marinescu 0:a792d4bf36c2 57 }
Bogdan Marinescu 0:a792d4bf36c2 58 }
Bogdan Marinescu 0:a792d4bf36c2 59
Bogdan Marinescu 0:a792d4bf36c2 60 void EventQueue::chain(EventQueue *target) {
Bogdan Marinescu 0:a792d4bf36c2 61 if (target) {
Bogdan Marinescu 0:a792d4bf36c2 62 equeue_chain(&_equeue, &target->_equeue);
Bogdan Marinescu 0:a792d4bf36c2 63 } else {
Bogdan Marinescu 0:a792d4bf36c2 64 equeue_chain(&_equeue, 0);
Bogdan Marinescu 0:a792d4bf36c2 65 }
Bogdan Marinescu 0:a792d4bf36c2 66 }