RtosTimerをクラス内で使うテスト

Dependencies:   mbed-rtos mbed

Committer:
ryood
Date:
Mon May 30 10:58:42 2016 +0000
Revision:
1:747445d49c3d
Parent:
0:9bbbd58541be
Child:
2:ff926e519980
RtosTimer??????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:9bbbd58541be 1 #include "mbed.h"
ryood 0:9bbbd58541be 2 #include "rtos.h"
ryood 0:9bbbd58541be 3
ryood 0:9bbbd58541be 4 class TestClass
ryood 0:9bbbd58541be 5 {
ryood 0:9bbbd58541be 6 public:
ryood 1:747445d49c3d 7 TestClass(uint32_t _updateTime) : updateTime(_updateTime),
ryood 1:747445d49c3d 8 timer(&TestClass::threadHelper, osTimerPeriodic, (void *)this)
ryood 0:9bbbd58541be 9 {
ryood 0:9bbbd58541be 10 //NOTE: The RTOS hasn't started yet, so we can't create the internal thread here
ryood 0:9bbbd58541be 11 }
ryood 0:9bbbd58541be 12
ryood 0:9bbbd58541be 13 void run() {
ryood 1:747445d49c3d 14 timer.start(updateTime);
ryood 0:9bbbd58541be 15 }
ryood 0:9bbbd58541be 16
ryood 0:9bbbd58541be 17 void stop() {
ryood 1:747445d49c3d 18 timer.stop();
ryood 0:9bbbd58541be 19 }
ryood 0:9bbbd58541be 20
ryood 0:9bbbd58541be 21 private:
ryood 0:9bbbd58541be 22 uint32_t updateTime;
ryood 1:747445d49c3d 23 RtosTimer timer;
ryood 0:9bbbd58541be 24
ryood 0:9bbbd58541be 25 static void threadHelper(const void* arg) {
ryood 0:9bbbd58541be 26 printf("In threadHelper()\r\n");
ryood 0:9bbbd58541be 27
ryood 0:9bbbd58541be 28 //Cast the argument to a TestClass instance pointer
ryood 0:9bbbd58541be 29 TestClass* instance = (TestClass*)arg;
ryood 0:9bbbd58541be 30
ryood 0:9bbbd58541be 31 //Call the thread method for the TestClass instance
ryood 0:9bbbd58541be 32 instance ->threadMethod();
ryood 0:9bbbd58541be 33 }
ryood 0:9bbbd58541be 34
ryood 0:9bbbd58541be 35 void threadMethod() {
ryood 0:9bbbd58541be 36 printf("In threadMethod()\r\n");
ryood 0:9bbbd58541be 37 }
ryood 0:9bbbd58541be 38 };
ryood 0:9bbbd58541be 39
ryood 0:9bbbd58541be 40 int main()
ryood 0:9bbbd58541be 41 {
ryood 0:9bbbd58541be 42 printf("\n\n\r** Using An RtosTimer inside a class test **\r\n");
ryood 0:9bbbd58541be 43
ryood 0:9bbbd58541be 44 while (true) {
ryood 0:9bbbd58541be 45 printf("In main loop\r\n");
ryood 0:9bbbd58541be 46 TestClass test(1000);
ryood 0:9bbbd58541be 47 test.run();
ryood 0:9bbbd58541be 48 Thread::wait(10000);
ryood 0:9bbbd58541be 49 test.stop();
ryood 0:9bbbd58541be 50 }
ryood 0:9bbbd58541be 51 }