This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088
Fork of libMiMic by
os/NyLPC_cThread.h@0:142ee8b12fef, 2013-01-30 (annotated)
- Committer:
- nyatla
- Date:
- Wed Jan 30 03:46:05 2013 +0000
- Revision:
- 0:142ee8b12fef
ported core classes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nyatla | 0:142ee8b12fef | 1 | /********************************************************************************* |
nyatla | 0:142ee8b12fef | 2 | * PROJECT: MiMic |
nyatla | 0:142ee8b12fef | 3 | * -------------------------------------------------------------------------------- |
nyatla | 0:142ee8b12fef | 4 | * |
nyatla | 0:142ee8b12fef | 5 | * This file is part of MiMic |
nyatla | 0:142ee8b12fef | 6 | * Copyright (C)2011 Ryo Iizuka |
nyatla | 0:142ee8b12fef | 7 | * |
nyatla | 0:142ee8b12fef | 8 | * MiMic is free software: you can redistribute it and/or modify |
nyatla | 0:142ee8b12fef | 9 | * it under the terms of the GNU Lesser General Public License as published |
nyatla | 0:142ee8b12fef | 10 | * by the Free Software Foundation, either version 3 of the License, or |
nyatla | 0:142ee8b12fef | 11 | * (at your option) any later version. |
nyatla | 0:142ee8b12fef | 12 | * |
nyatla | 0:142ee8b12fef | 13 | * This program is distributed in the hope that it will be useful, |
nyatla | 0:142ee8b12fef | 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
nyatla | 0:142ee8b12fef | 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
nyatla | 0:142ee8b12fef | 16 | * GNU General Public License for more details. |
nyatla | 0:142ee8b12fef | 17 | * |
nyatla | 0:142ee8b12fef | 18 | * You should have received a copy of the GNU Lesser General Public License |
nyatla | 0:142ee8b12fef | 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
nyatla | 0:142ee8b12fef | 20 | * |
nyatla | 0:142ee8b12fef | 21 | * For further information please contact. |
nyatla | 0:142ee8b12fef | 22 | * http://nyatla.jp/ |
nyatla | 0:142ee8b12fef | 23 | * <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp> |
nyatla | 0:142ee8b12fef | 24 | * |
nyatla | 0:142ee8b12fef | 25 | *********************************************************************************/ |
nyatla | 0:142ee8b12fef | 26 | #ifndef NYLPC_CTHREAD_H_ |
nyatla | 0:142ee8b12fef | 27 | #define NYLPC_CTHREAD_H_ |
nyatla | 0:142ee8b12fef | 28 | |
nyatla | 0:142ee8b12fef | 29 | //////////////////////////////////////////////////////////////////////////////// |
nyatla | 0:142ee8b12fef | 30 | // Include |
nyatla | 0:142ee8b12fef | 31 | //////////////////////////////////////////////////////////////////////////////// |
nyatla | 0:142ee8b12fef | 32 | #include "NyLPC_stdlib.h" |
nyatla | 0:142ee8b12fef | 33 | #if NyLPC_ARCH==NyLPC_ARCH_FREERTOS |
nyatla | 0:142ee8b12fef | 34 | #include "FreeRTOS.h" |
nyatla | 0:142ee8b12fef | 35 | #include "task.h" |
nyatla | 0:142ee8b12fef | 36 | #elif NyLPC_ARCH==NyLPC_ARCH_MBEDRTOS |
nyatla | 0:142ee8b12fef | 37 | #include "mbed.h" |
nyatla | 0:142ee8b12fef | 38 | #include "rtos.h" |
nyatla | 0:142ee8b12fef | 39 | #else |
nyatla | 0:142ee8b12fef | 40 | #error Bad NyLPC_ARCH! |
nyatla | 0:142ee8b12fef | 41 | #endif |
nyatla | 0:142ee8b12fef | 42 | |
nyatla | 0:142ee8b12fef | 43 | /********************************************************************** |
nyatla | 0:142ee8b12fef | 44 | * |
nyatla | 0:142ee8b12fef | 45 | * NyLPC_TcThread class |
nyatla | 0:142ee8b12fef | 46 | * |
nyatla | 0:142ee8b12fef | 47 | **********************************************************************/ |
nyatla | 0:142ee8b12fef | 48 | #ifdef __cplusplus |
nyatla | 0:142ee8b12fef | 49 | extern "C" { |
nyatla | 0:142ee8b12fef | 50 | #endif /* __cplusplus */ |
nyatla | 0:142ee8b12fef | 51 | |
nyatla | 0:142ee8b12fef | 52 | |
nyatla | 0:142ee8b12fef | 53 | /** |
nyatla | 0:142ee8b12fef | 54 | * 関数スレッドを実行します。 |
nyatla | 0:142ee8b12fef | 55 | */ |
nyatla | 0:142ee8b12fef | 56 | typedef struct NyLPC_TcThread NyLPC_TcThread_t; |
nyatla | 0:142ee8b12fef | 57 | |
nyatla | 0:142ee8b12fef | 58 | /** スレッドの関数型*/ |
nyatla | 0:142ee8b12fef | 59 | typedef int (*NyLPC_TcThread_ThreadFunc) (void* i_param); |
nyatla | 0:142ee8b12fef | 60 | /** */ |
nyatla | 0:142ee8b12fef | 61 | #define NyLPC_TcThread_DEFAULT_STACKSIZE configMINIMAL_STACK_SIZE |
nyatla | 0:142ee8b12fef | 62 | |
nyatla | 0:142ee8b12fef | 63 | /** ターミネイトしたときに1*/ |
nyatla | 0:142ee8b12fef | 64 | #define NyLPC_TcThread_BIT_IS_TERMINATED 0x00000001 |
nyatla | 0:142ee8b12fef | 65 | |
nyatla | 0:142ee8b12fef | 66 | /** JOINリクエストがある場合に1*/ |
nyatla | 0:142ee8b12fef | 67 | #define NyLPC_TcThread_BIT_IS_JOIN_REQ 0x00000002 |
nyatla | 0:142ee8b12fef | 68 | |
nyatla | 0:142ee8b12fef | 69 | /** |
nyatla | 0:142ee8b12fef | 70 | * Thread priorities |
nyatla | 0:142ee8b12fef | 71 | */ |
nyatla | 0:142ee8b12fef | 72 | #define NyLPC_TcThread_PRIORITY_IDLE 0 |
nyatla | 0:142ee8b12fef | 73 | #define NyLPC_TcThread_PRIORITY_SERVICE 1 |
nyatla | 0:142ee8b12fef | 74 | |
nyatla | 0:142ee8b12fef | 75 | |
nyatla | 0:142ee8b12fef | 76 | #if NyLPC_ARCH==NyLPC_ARCH_FREERTOS |
nyatla | 0:142ee8b12fef | 77 | |
nyatla | 0:142ee8b12fef | 78 | struct NyLPC_TcThread |
nyatla | 0:142ee8b12fef | 79 | { |
nyatla | 0:142ee8b12fef | 80 | NyLPC_TUInt32 _sbit; |
nyatla | 0:142ee8b12fef | 81 | xTaskHandle _taskid; |
nyatla | 0:142ee8b12fef | 82 | NyLPC_TcThread_ThreadFunc _func; |
nyatla | 0:142ee8b12fef | 83 | void* _param; |
nyatla | 0:142ee8b12fef | 84 | }; |
nyatla | 0:142ee8b12fef | 85 | #elif NyLPC_ARCH==NyLPC_ARCH_MBEDRTOS |
nyatla | 0:142ee8b12fef | 86 | #include "mbed.h" |
nyatla | 0:142ee8b12fef | 87 | #include "rtos.h" |
nyatla | 0:142ee8b12fef | 88 | |
nyatla | 0:142ee8b12fef | 89 | struct NyLPC_TcThread |
nyatla | 0:142ee8b12fef | 90 | { |
nyatla | 0:142ee8b12fef | 91 | NyLPC_TUInt32 _sbit; |
nyatla | 0:142ee8b12fef | 92 | Thread* _thread; |
nyatla | 0:142ee8b12fef | 93 | NyLPC_TcThread_ThreadFunc _func; |
nyatla | 0:142ee8b12fef | 94 | void* _arg; |
nyatla | 0:142ee8b12fef | 95 | }; |
nyatla | 0:142ee8b12fef | 96 | |
nyatla | 0:142ee8b12fef | 97 | #else |
nyatla | 0:142ee8b12fef | 98 | #error Bad NyLPC_ARCH! |
nyatla | 0:142ee8b12fef | 99 | #endif |
nyatla | 0:142ee8b12fef | 100 | |
nyatla | 0:142ee8b12fef | 101 | |
nyatla | 0:142ee8b12fef | 102 | /** |
nyatla | 0:142ee8b12fef | 103 | * 終了要求フラグの値を返します。 |
nyatla | 0:142ee8b12fef | 104 | * スレッドのループ内で、Join要求の有無を確認するために使います。 |
nyatla | 0:142ee8b12fef | 105 | * スレッドは定期的にこの関数を実行して、trueの場合は速やかに関数を終了する必要があります。 |
nyatla | 0:142ee8b12fef | 106 | */ |
nyatla | 0:142ee8b12fef | 107 | #define NyLPC_cThread_isJoinReqest(i_inst) NyLPC_TUInt32_isBitOn((i_inst)->_sbit,NyLPC_TcThread_BIT_IS_JOIN_REQ) |
nyatla | 0:142ee8b12fef | 108 | #define NyLPC_cThread_isTerminated(i_inst) NyLPC_TUInt32_isBitOn((i_inst)->_sbit,NyLPC_TcThread_BIT_IS_TERMINATED) |
nyatla | 0:142ee8b12fef | 109 | |
nyatla | 0:142ee8b12fef | 110 | void NyLPC_cThread_initialize(NyLPC_TcThread_t* i_inst,NyLPC_TInt32 i_stack,NyLPC_TInt32 i_prio); |
nyatla | 0:142ee8b12fef | 111 | void NyLPC_cThread_start(NyLPC_TcThread_t* i_inst,NyLPC_TcThread_ThreadFunc i_func,void* i_param); |
nyatla | 0:142ee8b12fef | 112 | void NyLPC_cThread_join(NyLPC_TcThread_t* i_inst); |
nyatla | 0:142ee8b12fef | 113 | inline void NyLPC_cThread_yield(); |
nyatla | 0:142ee8b12fef | 114 | /** |
nyatla | 0:142ee8b12fef | 115 | * 一定時間、スレッドをスリープする。 |
nyatla | 0:142ee8b12fef | 116 | * この関数はstatic関数です。 |
nyatla | 0:142ee8b12fef | 117 | */ |
nyatla | 0:142ee8b12fef | 118 | void NyLPC_cThread_sleep(NyLPC_TUInt32 i_time_in_msec); |
nyatla | 0:142ee8b12fef | 119 | |
nyatla | 0:142ee8b12fef | 120 | #ifdef __cplusplus |
nyatla | 0:142ee8b12fef | 121 | } |
nyatla | 0:142ee8b12fef | 122 | #endif /* __cplusplus */ |
nyatla | 0:142ee8b12fef | 123 | |
nyatla | 0:142ee8b12fef | 124 | #endif /* NYLPC_CTHREAD_H_ */ |