This is Webservice SDK for mbed. LPCXpresso1769/LPC1768/FRDM-K64F/LPC4088

Fork of libMiMic by Ryo Iizuka

Committer:
nyatla
Date:
Sun Jun 30 14:17:42 2013 +0000
Revision:
41:2389bd6b6f74
Parent:
12:efe841863fc8
Child:
48:00d211aac2ec
update core r270;

Who changed what in which revision?

UserRevisionLine numberNew 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 41:2389bd6b6f74 37 #elif NyLPC_ARCH==NyLPC_ARCH_WIN32
nyatla 41:2389bd6b6f74 38 //not work!
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 typedef struct NyLPC_TcThread NyLPC_TcThread_t;
nyatla 0:142ee8b12fef 56
nyatla 41:2389bd6b6f74 57 /** スレッドの関数型 */
nyatla 2:b96c1e90d120 58 typedef int (*NyLPC_TcThread_ThreadFunc)(void* i_param);
nyatla 0:142ee8b12fef 59 /** */
nyatla 0:142ee8b12fef 60 #define NyLPC_TcThread_DEFAULT_STACKSIZE configMINIMAL_STACK_SIZE
nyatla 0:142ee8b12fef 61
nyatla 0:142ee8b12fef 62 /** ターミネイトしたときに1*/
nyatla 0:142ee8b12fef 63 #define NyLPC_TcThread_BIT_IS_TERMINATED 0x00000001
nyatla 0:142ee8b12fef 64
nyatla 0:142ee8b12fef 65 /** JOINリクエストがある場合に1*/
nyatla 0:142ee8b12fef 66 #define NyLPC_TcThread_BIT_IS_JOIN_REQ 0x00000002
nyatla 0:142ee8b12fef 67
nyatla 0:142ee8b12fef 68 /**
nyatla 0:142ee8b12fef 69 * Thread priorities
nyatla 0:142ee8b12fef 70 */
nyatla 0:142ee8b12fef 71 #define NyLPC_TcThread_PRIORITY_IDLE 0
nyatla 0:142ee8b12fef 72 #define NyLPC_TcThread_PRIORITY_SERVICE 1
nyatla 0:142ee8b12fef 73
nyatla 0:142ee8b12fef 74 #if NyLPC_ARCH==NyLPC_ARCH_FREERTOS
nyatla 0:142ee8b12fef 75
nyatla 2:b96c1e90d120 76 struct NyLPC_TcThread {
nyatla 0:142ee8b12fef 77 NyLPC_TUInt32 _sbit;
nyatla 0:142ee8b12fef 78 xTaskHandle _taskid;
nyatla 0:142ee8b12fef 79 NyLPC_TcThread_ThreadFunc _func;
nyatla 0:142ee8b12fef 80 void* _param;
nyatla 0:142ee8b12fef 81 };
nyatla 0:142ee8b12fef 82 #elif NyLPC_ARCH==NyLPC_ARCH_MBEDRTOS
nyatla 0:142ee8b12fef 83
nyatla 0:142ee8b12fef 84 struct NyLPC_TcThread
nyatla 0:142ee8b12fef 85 {
nyatla 0:142ee8b12fef 86 NyLPC_TUInt32 _sbit;
nyatla 11:c82a7b2899b0 87 void* _thread; //Thread* type.
nyatla 0:142ee8b12fef 88 NyLPC_TcThread_ThreadFunc _func;
nyatla 0:142ee8b12fef 89 void* _arg;
nyatla 0:142ee8b12fef 90 };
nyatla 41:2389bd6b6f74 91 #elif NyLPC_ARCH==NyLPC_ARCH_WIN32
nyatla 41:2389bd6b6f74 92 //this is dummy definition.
nyatla 41:2389bd6b6f74 93 struct NyLPC_TcThread
nyatla 41:2389bd6b6f74 94 {
nyatla 41:2389bd6b6f74 95 int dummy;
nyatla 41:2389bd6b6f74 96 NyLPC_TcThread_ThreadFunc _func;
nyatla 41:2389bd6b6f74 97 };
nyatla 0:142ee8b12fef 98 #else
nyatla 0:142ee8b12fef 99 #error Bad NyLPC_ARCH!
nyatla 0:142ee8b12fef 100 #endif
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 2:b96c1e90d120 110 void NyLPC_cThread_initialize(NyLPC_TcThread_t* i_inst, NyLPC_TInt32 i_stack,NyLPC_TInt32 i_prio);
nyatla 2:b96c1e90d120 111 void NyLPC_cThread_finalize(NyLPC_TcThread_t* i_inst);
nyatla 2:b96c1e90d120 112 void NyLPC_cThread_start(NyLPC_TcThread_t* i_inst,
nyatla 2:b96c1e90d120 113 NyLPC_TcThread_ThreadFunc i_func, void* i_param);
nyatla 0:142ee8b12fef 114 void NyLPC_cThread_join(NyLPC_TcThread_t* i_inst);
nyatla 12:efe841863fc8 115 void NyLPC_cThread_yield(void);
nyatla 0:142ee8b12fef 116 /**
nyatla 0:142ee8b12fef 117 * 一定時間、スレッドをスリープする。
nyatla 0:142ee8b12fef 118 * この関数はstatic関数です。
nyatla 0:142ee8b12fef 119 */
nyatla 0:142ee8b12fef 120 void NyLPC_cThread_sleep(NyLPC_TUInt32 i_time_in_msec);
nyatla 0:142ee8b12fef 121
nyatla 0:142ee8b12fef 122 #ifdef __cplusplus
nyatla 0:142ee8b12fef 123 }
nyatla 0:142ee8b12fef 124 #endif /* __cplusplus */
nyatla 0:142ee8b12fef 125
nyatla 3:0a94993be1f6 126 #endif /* NYLPC_CTHREAD_H_ */