Library that uses mbed-os

Dependents:   My_Libraries

Committer:
altb
Date:
Wed Mar 06 14:19:23 2019 +0000
Revision:
0:ff3de4aaacf8
New RTOS part

Who changed what in which revision?

UserRevisionLine numberNew contents of line
altb 0:ff3de4aaacf8 1 /*
altb 0:ff3de4aaacf8 2 * Signal.cpp
altb 0:ff3de4aaacf8 3 * Copyright (c) 2017, ZHAW
altb 0:ff3de4aaacf8 4 * All rights reserved.
altb 0:ff3de4aaacf8 5 */
altb 0:ff3de4aaacf8 6
altb 0:ff3de4aaacf8 7 #include "Signal.h"
altb 0:ff3de4aaacf8 8
altb 0:ff3de4aaacf8 9 using namespace std;
altb 0:ff3de4aaacf8 10
altb 0:ff3de4aaacf8 11 int32_t Signal::signals = 0;
altb 0:ff3de4aaacf8 12
altb 0:ff3de4aaacf8 13 /**
altb 0:ff3de4aaacf8 14 * Creates a signal object and assignes a unique flag.
altb 0:ff3de4aaacf8 15 */
altb 0:ff3de4aaacf8 16 Signal::Signal() {
altb 0:ff3de4aaacf8 17
altb 0:ff3de4aaacf8 18 mutex.lock();
altb 0:ff3de4aaacf8 19
altb 0:ff3de4aaacf8 20 int32_t n = 0;
altb 0:ff3de4aaacf8 21 while ((((1 << n) & signals) > 0) && (n < 30)) n++;
altb 0:ff3de4aaacf8 22 signal = (1 << n);
altb 0:ff3de4aaacf8 23
altb 0:ff3de4aaacf8 24 mutex.unlock();
altb 0:ff3de4aaacf8 25 }
altb 0:ff3de4aaacf8 26
altb 0:ff3de4aaacf8 27 /**
altb 0:ff3de4aaacf8 28 * Deletes the signal object and releases the assigned flag.
altb 0:ff3de4aaacf8 29 */
altb 0:ff3de4aaacf8 30 Signal::~Signal() {
altb 0:ff3de4aaacf8 31
altb 0:ff3de4aaacf8 32 mutex.lock();
altb 0:ff3de4aaacf8 33
altb 0:ff3de4aaacf8 34 signals &= ~signal;
altb 0:ff3de4aaacf8 35
altb 0:ff3de4aaacf8 36 mutex.unlock();
altb 0:ff3de4aaacf8 37 }
altb 0:ff3de4aaacf8 38
altb 0:ff3de4aaacf8 39 /**
altb 0:ff3de4aaacf8 40 * Gets the assigned signal flag.
altb 0:ff3de4aaacf8 41 */
altb 0:ff3de4aaacf8 42 int32_t Signal::read() {
altb 0:ff3de4aaacf8 43
altb 0:ff3de4aaacf8 44 return signal;
altb 0:ff3de4aaacf8 45 }
altb 0:ff3de4aaacf8 46
altb 0:ff3de4aaacf8 47 /**
altb 0:ff3de4aaacf8 48 * The empty operator is a shorthand notation of the <code>read()</code> method.
altb 0:ff3de4aaacf8 49 */
altb 0:ff3de4aaacf8 50 Signal::operator int32_t() {
altb 0:ff3de4aaacf8 51
altb 0:ff3de4aaacf8 52 return read();
altb 0:ff3de4aaacf8 53 }
altb 0:ff3de4aaacf8 54