....

Dependencies:   Library_Cntrl Library_Misc_cuboid

Fork of cuboid_balance_ros by Ruprecht Altenburger

Committer:
altb2
Date:
Fri Nov 22 16:46:16 2019 +0000
Revision:
2:9b068d2a7994
Parent:
0:acf871f26563
updated ros version

Who changed what in which revision?

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