Michael Ernst Peter / Mbed OS Test_GPS

Dependencies:   Eigen

Committer:
pmic
Date:
Thu Jun 09 07:35:33 2022 +0200
Revision:
63:5726064028ca
Included more new files

Who changed what in which revision?

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