Libary for control.

Dependencies:   FastPWM

Dependents:   RT2_Cuboid

Committer:
pmic
Date:
Thu May 05 09:18:40 2022 +0000
Revision:
10:eb29810d831b
Parent:
0:7d31b290d65e
Adjusted AvgFilter (damn...)

Who changed what in which revision?

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