Eurobot2012_Secondary

Fork of Eurobot_2012_Secondary by Shuto Naruse

Committer:
narshu
Date:
Wed Oct 17 22:25:31 2012 +0000
Revision:
1:cc2a9eb0bd55
Commit before publishing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
narshu 1:cc2a9eb0bd55 1
narshu 1:cc2a9eb0bd55 2 #ifndef SYSTEM_H
narshu 1:cc2a9eb0bd55 3 #define SYSTEM_H
narshu 1:cc2a9eb0bd55 4
narshu 1:cc2a9eb0bd55 5 #include "globals.h"
narshu 1:cc2a9eb0bd55 6 #include "rtos.h"
narshu 1:cc2a9eb0bd55 7
narshu 1:cc2a9eb0bd55 8 //Declaring the onboard LED's for everyone to use
narshu 1:cc2a9eb0bd55 9 extern DigitalOut OLED1;//(LED1);
narshu 1:cc2a9eb0bd55 10 extern DigitalOut OLED2;//(LED2);
narshu 1:cc2a9eb0bd55 11 extern DigitalOut OLED3;//(LED3);
narshu 1:cc2a9eb0bd55 12 extern DigitalOut OLED4;//(LED4);
narshu 1:cc2a9eb0bd55 13
narshu 1:cc2a9eb0bd55 14 //nop style wait function
narshu 1:cc2a9eb0bd55 15 void nopwait(int ms);
narshu 1:cc2a9eb0bd55 16
narshu 1:cc2a9eb0bd55 17 //a type which is a pointer to a rtos thread function
narshu 1:cc2a9eb0bd55 18 typedef void (*tfuncptr_t)(void const *argument);
narshu 1:cc2a9eb0bd55 19
narshu 1:cc2a9eb0bd55 20 //---------------------
narshu 1:cc2a9eb0bd55 21 //Signal ticker stuff
narshu 1:cc2a9eb0bd55 22 #define SIGTICKARGS(thread, signal) \
narshu 1:cc2a9eb0bd55 23 (tfuncptr_t) (&Signalsetter::callback), osTimerPeriodic, (void*)(new Signalsetter(thread, signal))
narshu 1:cc2a9eb0bd55 24
narshu 1:cc2a9eb0bd55 25 class Signalsetter {
narshu 1:cc2a9eb0bd55 26 public:
narshu 1:cc2a9eb0bd55 27 Signalsetter(Thread& inthread, int insignal) :
narshu 1:cc2a9eb0bd55 28 thread(inthread) {
narshu 1:cc2a9eb0bd55 29 signal = insignal;
narshu 1:cc2a9eb0bd55 30 //pc.printf("ptr saved as %#x \r\n", (int)(&(inthread)));
narshu 1:cc2a9eb0bd55 31 }
narshu 1:cc2a9eb0bd55 32
narshu 1:cc2a9eb0bd55 33 static void callback(void* thisin) {
narshu 1:cc2a9eb0bd55 34
narshu 1:cc2a9eb0bd55 35 Signalsetter* fthis = (Signalsetter*)thisin;
narshu 1:cc2a9eb0bd55 36 //pc.printf("callback will signal thread object at %#x \r\n", (int)(&(fthis->thread)));
narshu 1:cc2a9eb0bd55 37 fthis->thread.signal_set(fthis->signal);
narshu 1:cc2a9eb0bd55 38 //delete fthis; //this is useful for single fire tickers!
narshu 1:cc2a9eb0bd55 39 }
narshu 1:cc2a9eb0bd55 40
narshu 1:cc2a9eb0bd55 41 private:
narshu 1:cc2a9eb0bd55 42 Thread& thread;
narshu 1:cc2a9eb0bd55 43 int signal;
narshu 1:cc2a9eb0bd55 44 };
narshu 1:cc2a9eb0bd55 45
narshu 1:cc2a9eb0bd55 46 //---------------------
narshu 1:cc2a9eb0bd55 47 //cpu usage measurement function
narshu 1:cc2a9eb0bd55 48 extern float cpupercent;
narshu 1:cc2a9eb0bd55 49 void measureCPUidle (void const* arg);
narshu 1:cc2a9eb0bd55 50
narshu 1:cc2a9eb0bd55 51 #endif