BaseJpegDeocde exampe program

Dependencies:   BaseJpegDecode Terminal BaseUsbHost mbed mbed-rtos

Fork of BaseJpegDecode by Norimasa Okamoto

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?

UserRevisionLine numberNew 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