BaseJpegDeocde exampe program
Dependencies: BaseJpegDecode Terminal BaseUsbHost mbed mbed-rtos
Fork of BaseJpegDecode by
MyThread/MyThread.h@7:3ad9c948bc06, 2013-01-27 (annotated)
- Committer:
- va009039
- Date:
- Sun Jan 27 11:15:26 2013 +0000
- Revision:
- 7:3ad9c948bc06
change library uvchost to BaseUsbHost, delete SimpleJpegDecode
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 | 7:3ad9c948bc06 | 1 | // MyThread.h 2012/12/9 |
va009039 | 7:3ad9c948bc06 | 2 | #ifndef MY_THREAD_H |
va009039 | 7:3ad9c948bc06 | 3 | #define MY_THREAD_H |
va009039 | 7:3ad9c948bc06 | 4 | |
va009039 | 7:3ad9c948bc06 | 5 | #define MAGIC_WORD 0xE25A2EA5 |
va009039 | 7:3ad9c948bc06 | 6 | static void thread_handler(void const *argument); |
va009039 | 7:3ad9c948bc06 | 7 | |
va009039 | 7:3ad9c948bc06 | 8 | class MyThread { |
va009039 | 7:3ad9c948bc06 | 9 | public: |
va009039 | 7:3ad9c948bc06 | 10 | MyThread() { |
va009039 | 7:3ad9c948bc06 | 11 | m_stack_size = DEFAULT_STACK_SIZE; |
va009039 | 7:3ad9c948bc06 | 12 | m_stack_pointer = NULL; |
va009039 | 7:3ad9c948bc06 | 13 | } |
va009039 | 7:3ad9c948bc06 | 14 | void set_stack(uint32_t stack_size=DEFAULT_STACK_SIZE, uint8_t* stack_pointer = NULL) { |
va009039 | 7:3ad9c948bc06 | 15 | m_stack_size = stack_size; |
va009039 | 7:3ad9c948bc06 | 16 | m_stack_pointer = stack_pointer; |
va009039 | 7:3ad9c948bc06 | 17 | } |
va009039 | 7:3ad9c948bc06 | 18 | virtual void run() = 0; |
va009039 | 7:3ad9c948bc06 | 19 | Thread* start(osPriority priority=osPriorityNormal) { |
va009039 | 7:3ad9c948bc06 | 20 | if (m_stack_pointer == NULL) { |
va009039 | 7:3ad9c948bc06 | 21 | m_stack_pointer = reinterpret_cast<uint8_t*>(malloc(m_stack_size)); |
va009039 | 7:3ad9c948bc06 | 22 | } |
va009039 | 7:3ad9c948bc06 | 23 | for(int i = 0; i < m_stack_size-64; i += 4) { |
va009039 | 7:3ad9c948bc06 | 24 | *reinterpret_cast<uint32_t*>(m_stack_pointer+i) = MAGIC_WORD; |
va009039 | 7:3ad9c948bc06 | 25 | } |
va009039 | 7:3ad9c948bc06 | 26 | return th = new Thread(thread_handler, this, priority, m_stack_size, m_stack_pointer); |
va009039 | 7:3ad9c948bc06 | 27 | } |
va009039 | 7:3ad9c948bc06 | 28 | |
va009039 | 7:3ad9c948bc06 | 29 | int stack_used() { |
va009039 | 7:3ad9c948bc06 | 30 | int i; |
va009039 | 7:3ad9c948bc06 | 31 | for(i = 0; i < m_stack_size; i += 4) { |
va009039 | 7:3ad9c948bc06 | 32 | if(*reinterpret_cast<uint32_t*>(m_stack_pointer+i) != MAGIC_WORD) { |
va009039 | 7:3ad9c948bc06 | 33 | break; |
va009039 | 7:3ad9c948bc06 | 34 | } |
va009039 | 7:3ad9c948bc06 | 35 | } |
va009039 | 7:3ad9c948bc06 | 36 | return m_stack_size - i; |
va009039 | 7:3ad9c948bc06 | 37 | } |
va009039 | 7:3ad9c948bc06 | 38 | |
va009039 | 7:3ad9c948bc06 | 39 | int stack_size() { return m_stack_size; } |
va009039 | 7:3ad9c948bc06 | 40 | protected: |
va009039 | 7:3ad9c948bc06 | 41 | Thread* th; |
va009039 | 7:3ad9c948bc06 | 42 | uint32_t m_stack_size; |
va009039 | 7:3ad9c948bc06 | 43 | uint8_t* m_stack_pointer; |
va009039 | 7:3ad9c948bc06 | 44 | }; |
va009039 | 7:3ad9c948bc06 | 45 | static void thread_handler(void const *argument) { |
va009039 | 7:3ad9c948bc06 | 46 | MyThread* th = (MyThread*)argument; |
va009039 | 7:3ad9c948bc06 | 47 | if (th) { |
va009039 | 7:3ad9c948bc06 | 48 | th->run(); |
va009039 | 7:3ad9c948bc06 | 49 | } |
va009039 | 7:3ad9c948bc06 | 50 | } |
va009039 | 7:3ad9c948bc06 | 51 | |
va009039 | 7:3ad9c948bc06 | 52 | #endif //MY_THREAD_H |