Shuto Naruse
/
Eurobot2012_Secondary
Eurobot2012_Secondary
Fork of Eurobot_2012_Secondary by
system.h@0:fbfafa6bf5f9, 2012-04-20 (annotated)
- Committer:
- narshu
- Date:
- Fri Apr 20 21:32:24 2012 +0000
- Revision:
- 0:fbfafa6bf5f9
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
narshu | 0:fbfafa6bf5f9 | 1 | |
narshu | 0:fbfafa6bf5f9 | 2 | #ifndef SYSTEM_H |
narshu | 0:fbfafa6bf5f9 | 3 | #define SYSTEM_H |
narshu | 0:fbfafa6bf5f9 | 4 | |
narshu | 0:fbfafa6bf5f9 | 5 | #include "globals.h" |
narshu | 0:fbfafa6bf5f9 | 6 | #include "rtos.h" |
narshu | 0:fbfafa6bf5f9 | 7 | |
narshu | 0:fbfafa6bf5f9 | 8 | //a type which is a pointer to a rtos thread function |
narshu | 0:fbfafa6bf5f9 | 9 | typedef void (*tfuncptr_t)(void const *argument); |
narshu | 0:fbfafa6bf5f9 | 10 | |
narshu | 0:fbfafa6bf5f9 | 11 | //--------------------- |
narshu | 0:fbfafa6bf5f9 | 12 | //Signal ticker stuff |
narshu | 0:fbfafa6bf5f9 | 13 | #define SIGTICKARGS(thread, signal) \ |
narshu | 0:fbfafa6bf5f9 | 14 | (tfuncptr_t) (&Signalsetter::callback), osTimerPeriodic, (void*)(new Signalsetter(thread, signal)) |
narshu | 0:fbfafa6bf5f9 | 15 | |
narshu | 0:fbfafa6bf5f9 | 16 | class Signalsetter { |
narshu | 0:fbfafa6bf5f9 | 17 | public: |
narshu | 0:fbfafa6bf5f9 | 18 | Signalsetter(Thread& inthread, int insignal) : |
narshu | 0:fbfafa6bf5f9 | 19 | thread(inthread) { |
narshu | 0:fbfafa6bf5f9 | 20 | signal = insignal; |
narshu | 0:fbfafa6bf5f9 | 21 | //pc.printf("ptr saved as %#x \r\n", (int)(&(inthread))); |
narshu | 0:fbfafa6bf5f9 | 22 | } |
narshu | 0:fbfafa6bf5f9 | 23 | |
narshu | 0:fbfafa6bf5f9 | 24 | static void callback(void* thisin) { |
narshu | 0:fbfafa6bf5f9 | 25 | |
narshu | 0:fbfafa6bf5f9 | 26 | Signalsetter* fthis = (Signalsetter*)thisin; |
narshu | 0:fbfafa6bf5f9 | 27 | //pc.printf("callback will signal thread object at %#x \r\n", (int)(&(fthis->thread))); |
narshu | 0:fbfafa6bf5f9 | 28 | fthis->thread.signal_set(fthis->signal); |
narshu | 0:fbfafa6bf5f9 | 29 | //delete fthis; //this is useful for single fire tickers! |
narshu | 0:fbfafa6bf5f9 | 30 | } |
narshu | 0:fbfafa6bf5f9 | 31 | |
narshu | 0:fbfafa6bf5f9 | 32 | private: |
narshu | 0:fbfafa6bf5f9 | 33 | Thread& thread; |
narshu | 0:fbfafa6bf5f9 | 34 | int signal; |
narshu | 0:fbfafa6bf5f9 | 35 | }; |
narshu | 0:fbfafa6bf5f9 | 36 | |
narshu | 0:fbfafa6bf5f9 | 37 | //--------------------- |
narshu | 0:fbfafa6bf5f9 | 38 | //cpu usage measurement function |
narshu | 0:fbfafa6bf5f9 | 39 | extern float cpupercent; |
narshu | 0:fbfafa6bf5f9 | 40 | void measureCPUidle (void const* arg); |
narshu | 0:fbfafa6bf5f9 | 41 | |
narshu | 0:fbfafa6bf5f9 | 42 | #endif |