Eurobot2012_Primary
Dependencies: mbed Eurobot_2012_Primary
system.h
- Committer:
- narshu
- Date:
- 2012-04-20
- Revision:
- 0:f3bf6c7e2283
- Child:
- 1:bbabbd997d21
File content as of revision 0:f3bf6c7e2283:
#ifndef SYSTEM_H #define SYSTEM_H #include "globals.h" //#include "rtos.h" // rectifies angle to range -PI to PI template <typename T> T rectifyAng (T ang_in) { ang_in -= (floor(ang_in/(2*PI)))*2*PI; if (ang_in < -PI) { ang_in += 2*PI; } if (ang_in > PI) { ang_in -= 2*PI; } return ang_in; } #define SIGTICKARGS(thread, signal) \ (tfuncptr_t) (&Signalsetter::callback), osTimerPeriodic, (void*)(new Signalsetter(thread, signal)) typedef void (*tfuncptr_t)(void const *argument); class Signalsetter { public: Signalsetter(Thread& inthread, int insignal) : thread(inthread) { signal = insignal; //pc.printf("ptr saved as %#x \r\n", (int)(&(inthread))); } static void callback(void* thisin) { Signalsetter* fthis = (Signalsetter*)thisin; //pc.printf("callback will signal thread object at %#x \r\n", (int)(&(fthis->thread))); fthis->thread.signal_set(fthis->signal); //delete fthis; //this is useful for single fire tickers! } private: Thread& thread; int signal; }; #endif