Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:9bbbd58541be, 2016-05-30 (annotated)
- Committer:
- ryood
- Date:
- Mon May 30 10:54:59 2016 +0000
- Revision:
- 0:9bbbd58541be
- Child:
- 1:747445d49c3d
first commit
Who changed what in which revision?
| User | Revision | Line number | New 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 | 0:9bbbd58541be | 7 | TestClass(uint32_t _updateTime) : updateTime(_updateTime) |
| ryood | 0:9bbbd58541be | 8 | { |
| ryood | 0:9bbbd58541be | 9 | //NOTE: The RTOS hasn't started yet, so we can't create the internal thread here |
| ryood | 0:9bbbd58541be | 10 | } |
| ryood | 0:9bbbd58541be | 11 | |
| ryood | 0:9bbbd58541be | 12 | void run() { |
| ryood | 0:9bbbd58541be | 13 | timer = new RtosTimer(&TestClass::threadHelper, osTimerPeriodic, (void *)this) ; |
| ryood | 0:9bbbd58541be | 14 | timer->start(updateTime); |
| ryood | 0:9bbbd58541be | 15 | } |
| ryood | 0:9bbbd58541be | 16 | |
| ryood | 0:9bbbd58541be | 17 | void stop() { |
| ryood | 0:9bbbd58541be | 18 | timer->stop(); |
| ryood | 0:9bbbd58541be | 19 | delete timer; |
| ryood | 0:9bbbd58541be | 20 | } |
| ryood | 0:9bbbd58541be | 21 | |
| ryood | 0:9bbbd58541be | 22 | private: |
| ryood | 0:9bbbd58541be | 23 | uint32_t updateTime; |
| ryood | 0:9bbbd58541be | 24 | RtosTimer* timer; |
| ryood | 0:9bbbd58541be | 25 | |
| ryood | 0:9bbbd58541be | 26 | static void threadHelper(const void* arg) { |
| ryood | 0:9bbbd58541be | 27 | printf("In threadHelper()\r\n"); |
| ryood | 0:9bbbd58541be | 28 | |
| ryood | 0:9bbbd58541be | 29 | //Cast the argument to a TestClass instance pointer |
| ryood | 0:9bbbd58541be | 30 | TestClass* instance = (TestClass*)arg; |
| ryood | 0:9bbbd58541be | 31 | |
| ryood | 0:9bbbd58541be | 32 | //Call the thread method for the TestClass instance |
| ryood | 0:9bbbd58541be | 33 | instance ->threadMethod(); |
| ryood | 0:9bbbd58541be | 34 | } |
| ryood | 0:9bbbd58541be | 35 | |
| ryood | 0:9bbbd58541be | 36 | void threadMethod() { |
| ryood | 0:9bbbd58541be | 37 | printf("In threadMethod()\r\n"); |
| ryood | 0:9bbbd58541be | 38 | } |
| ryood | 0:9bbbd58541be | 39 | }; |
| ryood | 0:9bbbd58541be | 40 | |
| ryood | 0:9bbbd58541be | 41 | int main() |
| ryood | 0:9bbbd58541be | 42 | { |
| ryood | 0:9bbbd58541be | 43 | printf("\n\n\r** Using An RtosTimer inside a class test **\r\n"); |
| ryood | 0:9bbbd58541be | 44 | |
| ryood | 0:9bbbd58541be | 45 | while (true) { |
| ryood | 0:9bbbd58541be | 46 | printf("In main loop\r\n"); |
| ryood | 0:9bbbd58541be | 47 | TestClass test(1000); |
| ryood | 0:9bbbd58541be | 48 | test.run(); |
| ryood | 0:9bbbd58541be | 49 | Thread::wait(10000); |
| ryood | 0:9bbbd58541be | 50 | test.stop(); |
| ryood | 0:9bbbd58541be | 51 | } |
| ryood | 0:9bbbd58541be | 52 | } |