Michael Ernst Peter / Mbed OS Test_GPS

Dependencies:   Eigen

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ThreadFlag.cpp Source File

ThreadFlag.cpp

00001 /*
00002  * ThreadFlag.cpp
00003  * Copyright (c) 2020, ZHAW
00004  * All rights reserved.
00005  */
00006 
00007 #include "ThreadFlag.h"
00008 
00009 using namespace std;
00010 
00011 unsigned int ThreadFlag::threadFlags = 0;
00012 
00013 /**
00014  * Creates a signal object and assignes a unique flag.
00015  */
00016 ThreadFlag::ThreadFlag()
00017 {
00018     mutex.lock();
00019 
00020     unsigned int n = 0;
00021     while ((((1 << n) & threadFlags) > 0) && (n < 30)) n++;
00022     threadFlag = (1 << n);
00023 
00024     mutex.unlock();
00025 }
00026 
00027 /**
00028  * Deletes the signal object and releases the assigned flag.
00029  */
00030 ThreadFlag::~ThreadFlag()
00031 {
00032     mutex.lock();
00033 
00034     threadFlags &= ~threadFlag;
00035 
00036     mutex.unlock();
00037 }
00038 
00039 /**
00040  * Gets the assigned thread flag.
00041  */
00042 unsigned int ThreadFlag::read()
00043 {
00044     return threadFlag;
00045 }
00046 
00047 /**
00048  * The empty operator is a shorthand notation of the <code>read()</code> method.
00049  */
00050 ThreadFlag::operator unsigned int()
00051 {
00052     return read();
00053 }
00054 
00055