RemotoIR Libraryに、IRC Helicopter Propo の受信処理と、受信パルス幅測定処理を追加したものです。

Dependents:   SwiftPropoIR_TestProgram irRawDataDisplay spinner2 LPC1114_ir-spinne_main-propo

Fork of RemoteIR by Shinichiro Nakamura

Committer:
shintamainjp
Date:
Fri Sep 17 20:22:38 2010 +0000
Revision:
9:dcfdac59ef74
Parent:
0:ec264f4ce158

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 0:ec264f4ce158 1 #ifndef _SEMAPHORE_H_
shintamainjp 0:ec264f4ce158 2 #define _SEMAPHORE_H_
shintamainjp 0:ec264f4ce158 3
shintamainjp 0:ec264f4ce158 4 /*
shintamainjp 0:ec264f4ce158 5 * http://mbed.org/forum/mbed/topic/181/#comment-799
shintamainjp 0:ec264f4ce158 6 */
shintamainjp 0:ec264f4ce158 7
shintamainjp 0:ec264f4ce158 8 class Semaphore {
shintamainjp 0:ec264f4ce158 9 public:
shintamainjp 0:ec264f4ce158 10 Semaphore(): s(SemFree) {}
shintamainjp 0:ec264f4ce158 11
shintamainjp 0:ec264f4ce158 12 bool take(bool block = true) {
shintamainjp 0:ec264f4ce158 13 int oldval;
shintamainjp 0:ec264f4ce158 14 do {
shintamainjp 0:ec264f4ce158 15 oldval = __ldrex(&s);
shintamainjp 0:ec264f4ce158 16 } while ((block && oldval == SemTaken) || __strex(SemTaken, &s) != 0);
shintamainjp 0:ec264f4ce158 17 if (!block) {
shintamainjp 0:ec264f4ce158 18 __clrex();
shintamainjp 0:ec264f4ce158 19 }
shintamainjp 0:ec264f4ce158 20 return (oldval == SemFree);
shintamainjp 0:ec264f4ce158 21 }
shintamainjp 0:ec264f4ce158 22
shintamainjp 0:ec264f4ce158 23 void release() {
shintamainjp 0:ec264f4ce158 24 s = SemFree;
shintamainjp 0:ec264f4ce158 25 }
shintamainjp 0:ec264f4ce158 26
shintamainjp 0:ec264f4ce158 27 private:
shintamainjp 0:ec264f4ce158 28 enum { SemFree, SemTaken };
shintamainjp 9:dcfdac59ef74 29 volatile int s;
shintamainjp 0:ec264f4ce158 30 };
shintamainjp 0:ec264f4ce158 31
shintamainjp 0:ec264f4ce158 32 #endif