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
!!!
EventQueue.cpp@2:a60d8117d0e0, 2016-10-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |