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

Fork of libMiMic by Ryo Iizuka

Committer:
furutani
Date:
Fri Feb 24 04:43:41 2017 +0000
Revision:
115:fa79286d8ea4
Parent:
72:c118a7aa37a3
Delete missing include line.; Add parameter "timeout" to TCPSocket::connect(), precv().; Fix to send ARP request to default gateway when connecting to IP address of different segment.;

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 /**
nyatla 0:142ee8b12fef 27 * @file
nyatla 0:142ee8b12fef 28 * このファイルは、ルートモジュールにあるヘッダファイルを集積します。
nyatla 0:142ee8b12fef 29 * 基本的な型の定義も行います。
nyatla 0:142ee8b12fef 30 */
nyatla 0:142ee8b12fef 31 #ifndef NyLPC_stdlib_h
nyatla 0:142ee8b12fef 32 #define NyLPC_stdlib_h
nyatla 0:142ee8b12fef 33 #include "NyLPC_config.h"
nyatla 0:142ee8b12fef 34
nyatla 0:142ee8b12fef 35 #include <string.h>
nyatla 0:142ee8b12fef 36
nyatla 0:142ee8b12fef 37 #ifdef __cplusplus
nyatla 0:142ee8b12fef 38 extern "C" {
nyatla 0:142ee8b12fef 39 #endif /* __cplusplus */
nyatla 0:142ee8b12fef 40
nyatla 0:142ee8b12fef 41 /**********************************************************************
nyatla 0:142ee8b12fef 42 *
nyatla 0:142ee8b12fef 43 * ASSERT/ABORT
nyatla 0:142ee8b12fef 44 *
nyatla 0:142ee8b12fef 45 **********************************************************************/
nyatla 19:33b9ba0859ee 46 #define MIMIC_DEBUG 1
nyatla 19:33b9ba0859ee 47 #ifdef MIMIC_DEBUG
nyatla 0:142ee8b12fef 48
nyatla 19:33b9ba0859ee 49 /**
nyatla 19:33b9ba0859ee 50 * 引数チェック専用のASSERT構文です。
nyatla 19:33b9ba0859ee 51 * デバック時のみ有効です。
nyatla 19:33b9ba0859ee 52 */
nyatla 19:33b9ba0859ee 53 #define NyLPC_ArgAssert(e) if(!(e)){NyLPC_assertHook(NULL,-1);};
nyatla 0:142ee8b12fef 54
nyatla 19:33b9ba0859ee 55 /**
nyatla 19:33b9ba0859ee 56 * ASSERTマクロです。
nyatla 19:33b9ba0859ee 57 * デバック時のみ有効です。
nyatla 19:33b9ba0859ee 58 */
nyatla 19:33b9ba0859ee 59 #define NyLPC_Assert(e) if(!(e)){NyLPC_assertHook(NULL,-1);};
nyatla 0:142ee8b12fef 60
nyatla 19:33b9ba0859ee 61 /**
nyatla 19:33b9ba0859ee 62 * デバック用のフックマクロです。
nyatla 19:33b9ba0859ee 63 * デバック時のみ有効です。
nyatla 19:33b9ba0859ee 64 */
nyatla 19:33b9ba0859ee 65 #define NyAR_DebugHook() {NyLPC_debugHook(__FILE__,__LINE__);};
nyatla 0:142ee8b12fef 66
nyatla 19:33b9ba0859ee 67 /**
nyatla 19:33b9ba0859ee 68 * Abortマクロです。プログラムを異常終了するときのエントリポイントになります。
nyatla 19:33b9ba0859ee 69 * デバック時/リリース時のどちらでも有効です。
nyatla 19:33b9ba0859ee 70 */
nyatla 19:33b9ba0859ee 71 #define NyLPC_Abort() {NyLPC_abortHook(__FILE__,__LINE__);}; //もうだめ
nyatla 0:142ee8b12fef 72
nyatla 19:33b9ba0859ee 73 /**
nyatla 19:33b9ba0859ee 74 * Abortマクロです。eが偽の時に、異常終了します。
nyatla 19:33b9ba0859ee 75 * デバック時/リリース時のどちらでも有効です。
nyatla 19:33b9ba0859ee 76 * @param e
nyatla 57:bc4330dfa62f 77 * 評価式です.
nyatla 19:33b9ba0859ee 78 */
nyatla 19:33b9ba0859ee 79 #define NyLPC_AbortIfNot(e) if(!(e)){NyLPC_abortHook(__FILE__,__LINE__);};
nyatla 0:142ee8b12fef 80
nyatla 19:33b9ba0859ee 81 /**
nyatla 57:bc4330dfa62f 82 * 警告表示用のマクロです.デバックに使います.
nyatla 57:bc4330dfa62f 83 * デバック時のみ有効です.
nyatla 19:33b9ba0859ee 84 */
nyatla 19:33b9ba0859ee 85 #define NyLPC_Warning() {NyLPC_debugHook(__FILE__,__LINE__);};
nyatla 0:142ee8b12fef 86
nyatla 19:33b9ba0859ee 87 /**
nyatla 57:bc4330dfa62f 88 * 警告表示用のマクロです.eが偽の時に、警告を出します.
nyatla 57:bc4330dfa62f 89 * デバック時のみ有効です.
nyatla 19:33b9ba0859ee 90 * @param e
nyatla 19:33b9ba0859ee 91 * 評価式です。
nyatla 19:33b9ba0859ee 92 */
nyatla 19:33b9ba0859ee 93 #define NyLPC_WarningIfNot(e) if(!(e)){NyLPC_debugHook(__FILE__,__LINE__);};
nyatla 0:142ee8b12fef 94
nyatla 19:33b9ba0859ee 95 /*
nyatla 19:33b9ba0859ee 96 * トレースマクロです。デバックに使います。
nyatla 19:33b9ba0859ee 97 * 内部変数に、最後にコールされたファイル名と、行番号を保存します。
nyatla 57:bc4330dfa62f 98 * デバック時のみ有効です.
nyatla 19:33b9ba0859ee 99 */
nyatla 19:33b9ba0859ee 100 #define NyLPC_Trace() {NyLPC_debugHook(__FILE__,__LINE__);};
nyatla 19:33b9ba0859ee 101 #else
nyatla 19:33b9ba0859ee 102 #define NyLPC_ArgAssert(e) if(!(e)){NyLPC_assertHook(NULL,-1);};
nyatla 19:33b9ba0859ee 103 #define NyLPC_Assert(e) if(!(e)){NyLPC_assertHook(NULL,-1);};
nyatla 19:33b9ba0859ee 104 #define NyAR_DebugHook() {NyLPC_debugHook(__FILE__,__LINE__);};
nyatla 19:33b9ba0859ee 105 #define NyLPC_Abort() {NyLPC_abortHook(__FILE__,__LINE__);}; //もうだめ
nyatla 19:33b9ba0859ee 106 #define NyLPC_AbortIfNot(e) if(!(e)){NyLPC_abortHook(__FILE__,__LINE__);};
nyatla 19:33b9ba0859ee 107 #define NyLPC_Warning() {NyLPC_debugHook(__FILE__,__LINE__);};
nyatla 19:33b9ba0859ee 108 #define NyLPC_WarningIfNot(e) if(!(e)){NyLPC_debugHook(__FILE__,__LINE__);};
nyatla 19:33b9ba0859ee 109 #define NyLPC_Trace() {NyLPC_debugHook(__FILE__,__LINE__);};
nyatla 19:33b9ba0859ee 110 #endif
nyatla 0:142ee8b12fef 111
nyatla 0:142ee8b12fef 112 /**
nyatla 0:142ee8b12fef 113 * アサートマクロが使う関数です。
nyatla 0:142ee8b12fef 114 * @param m
nyatla 0:142ee8b12fef 115 * __FILE__を指定します。
nyatla 0:142ee8b12fef 116 * @param l
nyatla 0:142ee8b12fef 117 * __LINE__を指定します。
nyatla 0:142ee8b12fef 118 */
nyatla 0:142ee8b12fef 119 void NyLPC_assertHook(const char* m,int l);
nyatla 0:142ee8b12fef 120 /**
nyatla 0:142ee8b12fef 121 * Abortマクロが使う関数です。
nyatla 0:142ee8b12fef 122 * @param m
nyatla 0:142ee8b12fef 123 * __FILE__を指定します。
nyatla 0:142ee8b12fef 124 * @param l
nyatla 0:142ee8b12fef 125 * __LINE__を指定します。
nyatla 0:142ee8b12fef 126 */
nyatla 0:142ee8b12fef 127 void NyLPC_abortHook(const char* m,int l);
nyatla 0:142ee8b12fef 128 /**
nyatla 0:142ee8b12fef 129 * Debugマクロが使う関数です。
nyatla 0:142ee8b12fef 130 * @param m
nyatla 0:142ee8b12fef 131 * __FILE__を指定します。
nyatla 0:142ee8b12fef 132 * @param l
nyatla 0:142ee8b12fef 133 * __LINE__を指定します。
nyatla 0:142ee8b12fef 134 */
nyatla 0:142ee8b12fef 135 void NyLPC_debugHook(const char* m,int l);
nyatla 0:142ee8b12fef 136
nyatla 0:142ee8b12fef 137 /**
nyatla 0:142ee8b12fef 138 * デバック用のステータス変数です。
nyatla 0:142ee8b12fef 139 * アサートを検出した回数を保存します。
nyatla 0:142ee8b12fef 140 */
nyatla 0:142ee8b12fef 141 extern unsigned int NyLPC_assert_counter;
nyatla 0:142ee8b12fef 142 /**
nyatla 0:142ee8b12fef 143 * デバック用のステータス変数です。
nyatla 0:142ee8b12fef 144 * アサートを検出した回数を保存します。
nyatla 0:142ee8b12fef 145 */
nyatla 0:142ee8b12fef 146 extern unsigned int NyLPC_abort_counter;
nyatla 0:142ee8b12fef 147 /**
nyatla 0:142ee8b12fef 148 * デバック用のステータス変数です。
nyatla 0:142ee8b12fef 149 * アサートを検出した回数を保存します。
nyatla 0:142ee8b12fef 150 */
nyatla 0:142ee8b12fef 151 extern unsigned int NyLPC_debug_counter;
nyatla 0:142ee8b12fef 152
nyatla 0:142ee8b12fef 153 /**
nyatla 0:142ee8b12fef 154 * GOTO方式のエラーハンドラを記述するためのマクロです。
nyatla 0:142ee8b12fef 155 * @param l
nyatla 0:142ee8b12fef 156 * 指定ラベルへジャンプします。
nyatla 0:142ee8b12fef 157 */
nyatla 0:142ee8b12fef 158 #define NyLPC_OnErrorGoto(l) goto l
nyatla 0:142ee8b12fef 159
nyatla 0:142ee8b12fef 160
nyatla 0:142ee8b12fef 161
nyatla 0:142ee8b12fef 162 /**********************************************************************
nyatla 0:142ee8b12fef 163 *
nyatla 0:142ee8b12fef 164 * Basic type
nyatla 0:142ee8b12fef 165 *
nyatla 0:142ee8b12fef 166 **********************************************************************/
nyatla 0:142ee8b12fef 167
nyatla 0:142ee8b12fef 168 /**
nyatla 0:142ee8b12fef 169 * 真偽値型です。
nyatla 0:142ee8b12fef 170 */
nyatla 0:142ee8b12fef 171 typedef long NyLPC_TBool;
nyatla 0:142ee8b12fef 172
nyatla 0:142ee8b12fef 173 /**
nyatla 0:142ee8b12fef 174 * TRUEを表します。この値は、ifで評価したときに真を返すことを保障します。
nyatla 0:142ee8b12fef 175 */
nyatla 0:142ee8b12fef 176 #define NyLPC_TBool_TRUE (0==0)
nyatla 0:142ee8b12fef 177 /**
nyatla 0:142ee8b12fef 178 * FALSEを表します。この値は、ifで評価したときに偽を返すことを保障します。
nyatla 0:142ee8b12fef 179 */
nyatla 0:142ee8b12fef 180 #define NyLPC_TBool_FALSE (0!=0)
nyatla 0:142ee8b12fef 181
nyatla 0:142ee8b12fef 182 /**
nyatla 0:142ee8b12fef 183 * ウェーイを表します。この値は、NyLPC_TBool_FALSEと同じです。
nyatla 0:142ee8b12fef 184 */
nyatla 0:142ee8b12fef 185 #define NyLPC_TBool_VEII NyLPC_TBool_FALSE
nyatla 0:142ee8b12fef 186
nyatla 0:142ee8b12fef 187
nyatla 0:142ee8b12fef 188
nyatla 0:142ee8b12fef 189 /**
nyatla 0:142ee8b12fef 190 * 8bit長のバイト文字の型です。
nyatla 0:142ee8b12fef 191 */
nyatla 0:142ee8b12fef 192 typedef char NyLPC_TChar;
nyatla 0:142ee8b12fef 193 /**
nyatla 0:142ee8b12fef 194 * 符号有り8bit型です。
nyatla 0:142ee8b12fef 195 */
nyatla 48:00d211aac2ec 196 typedef signed char NyLPC_TInt8;
nyatla 0:142ee8b12fef 197 /**
nyatla 0:142ee8b12fef 198 * 符号有り16bit型です。
nyatla 0:142ee8b12fef 199 */
nyatla 48:00d211aac2ec 200 typedef signed short NyLPC_TInt16;
nyatla 0:142ee8b12fef 201 /**
nyatla 0:142ee8b12fef 202 * 符号有り32bit型です。
nyatla 0:142ee8b12fef 203 */
nyatla 48:00d211aac2ec 204 typedef signed long NyLPC_TInt32;
nyatla 0:142ee8b12fef 205
nyatla 0:142ee8b12fef 206 //----------------------------------------------------------------------
nyatla 0:142ee8b12fef 207 // NyLPC_TUInt8
nyatla 0:142ee8b12fef 208 //----------------------------------------------------------------------
nyatla 0:142ee8b12fef 209
nyatla 0:142ee8b12fef 210 /**
nyatla 0:142ee8b12fef 211 * 符号無し8bit型です。
nyatla 0:142ee8b12fef 212 */
nyatla 0:142ee8b12fef 213 typedef unsigned char NyLPC_TUInt8;
nyatla 0:142ee8b12fef 214
nyatla 0:142ee8b12fef 215 /**
nyatla 0:142ee8b12fef 216 * ビット操作関数です。bfのビット番号bに、1をセットします。
nyatla 0:142ee8b12fef 217 * @bf
nyatla 0:142ee8b12fef 218 * 操作対象の変数です。
nyatla 0:142ee8b12fef 219 * @b
nyatla 37:fc4b4fd6a649 220 * 操作するビットパターンです。
nyatla 0:142ee8b12fef 221 */
nyatla 0:142ee8b12fef 222 #define NyLPC_TUInt8_setBit(bf,b) NyLPC_TUInt32_setBit(bf,b)
nyatla 0:142ee8b12fef 223 /**
nyatla 0:142ee8b12fef 224 * ビット操作関数です。bfのビット番号bに、0をセットします。
nyatla 0:142ee8b12fef 225 * @bf
nyatla 0:142ee8b12fef 226 * 操作対象の変数です。
nyatla 0:142ee8b12fef 227 * @b
nyatla 37:fc4b4fd6a649 228 * 操作するビットパターンです。
nyatla 0:142ee8b12fef 229 */
nyatla 0:142ee8b12fef 230 #define NyLPC_TUInt8_unsetBit(bf,b) NyLPC_TUInt32_unsetBit(bf,b)
nyatla 0:142ee8b12fef 231 /**
nyatla 0:142ee8b12fef 232 * ビット判定関数です。bfのビット番号bが1であるかを確認します。
nyatla 2:b96c1e90d120 233 * @bf
nyatla 0:142ee8b12fef 234 * 判定する変数です。
nyatla 0:142ee8b12fef 235 * @b
nyatla 37:fc4b4fd6a649 236 * 判定するビットパターンです。
nyatla 0:142ee8b12fef 237 * @return
nyatla 37:fc4b4fd6a649 238 * ビットが一致するなら真を返します。
nyatla 0:142ee8b12fef 239 */
nyatla 0:142ee8b12fef 240 #define NyLPC_TUInt8_isBitOn(bf,b) NyLPC_TUInt32_isBitOn(bf,b)
nyatla 0:142ee8b12fef 241
nyatla 0:142ee8b12fef 242 /**
nyatla 0:142ee8b12fef 243 * 8bit長のTRUE値です。
nyatla 0:142ee8b12fef 244 */
nyatla 0:142ee8b12fef 245 #define NyLPC_TUInt8_TRUE NyLPC_TBool_TRUE
nyatla 0:142ee8b12fef 246 /**
nyatla 0:142ee8b12fef 247 * 8bit長のFALSE値です。
nyatla 0:142ee8b12fef 248 */
nyatla 0:142ee8b12fef 249 #define NyLPC_TUInt8_FALSE NyLPC_TBool_FALSE
nyatla 0:142ee8b12fef 250 /**
nyatla 0:142ee8b12fef 251 * 8bit長のFALSEをNyLPC_TBoolへ変換します。
nyatla 0:142ee8b12fef 252 * @param a
nyatla 0:142ee8b12fef 253 * 変換する変数です。
nyatla 0:142ee8b12fef 254 * @return
nyatla 0:142ee8b12fef 255 * 変換した値です。
nyatla 0:142ee8b12fef 256 */
nyatla 0:142ee8b12fef 257 #define NyLPC_TUInt8_castto_TBool(a) ((a)?NyLPC_TBool_TRUE:NyLPC_TBool_FALSE)
nyatla 0:142ee8b12fef 258
nyatla 0:142ee8b12fef 259 //----------------------------------------------------------------------
nyatla 0:142ee8b12fef 260 // NyLPC_TUInt16
nyatla 0:142ee8b12fef 261 //----------------------------------------------------------------------
nyatla 0:142ee8b12fef 262
nyatla 0:142ee8b12fef 263 /**
nyatla 0:142ee8b12fef 264 * 符号無し16bit型です。
nyatla 0:142ee8b12fef 265 */
nyatla 0:142ee8b12fef 266 typedef unsigned short NyLPC_TUInt16;
nyatla 0:142ee8b12fef 267
nyatla 0:142ee8b12fef 268 /**
nyatla 0:142ee8b12fef 269 * INTMAX
nyatla 0:142ee8b12fef 270 */
nyatla 0:142ee8b12fef 271 #define NyLPC_TUInt16_MAX 0xFFFF
nyatla 0:142ee8b12fef 272
nyatla 0:142ee8b12fef 273 /**
nyatla 0:142ee8b12fef 274 * ビット操作関数です。bfのビット番号bに、1をセットします。
nyatla 0:142ee8b12fef 275 * @bf
nyatla 0:142ee8b12fef 276 * 操作対象の変数です。
nyatla 0:142ee8b12fef 277 * @b
nyatla 0:142ee8b12fef 278 * 操作するビット番号です。
nyatla 0:142ee8b12fef 279 */
nyatla 0:142ee8b12fef 280 #define NyLPC_TUInt16_setBit(bf,b) NyLPC_TUInt32_setBit(bf,b)
nyatla 0:142ee8b12fef 281 /**
nyatla 0:142ee8b12fef 282 * ビット操作関数です。bfのビット番号bに、0をセットします。
nyatla 0:142ee8b12fef 283 * @bf
nyatla 0:142ee8b12fef 284 * 操作対象の変数です。
nyatla 0:142ee8b12fef 285 * @b
nyatla 48:00d211aac2ec 286 * 操作するビット番号です。
nyatla 0:142ee8b12fef 287 */
nyatla 0:142ee8b12fef 288 #define NyLPC_TUInt16_unsetBit(bf,b) NyLPC_TUInt32_unsetBit(bf,b)
nyatla 0:142ee8b12fef 289 /**
nyatla 0:142ee8b12fef 290 * ビット判定関数です。bfのビット番号bが1であるかを確認します。
nyatla 0:142ee8b12fef 291 * @bf
nyatla 0:142ee8b12fef 292 * 判定する変数です。
nyatla 0:142ee8b12fef 293 * @b
nyatla 48:00d211aac2ec 294 * 判定するビット番号です。
nyatla 0:142ee8b12fef 295 * @return
nyatla 37:fc4b4fd6a649 296 * ビットが一致するなら真を返します。
nyatla 0:142ee8b12fef 297 */
nyatla 0:142ee8b12fef 298 #define NyLPC_TUInt16_isBitOn(bf,b) NyLPC_TUInt32_isBitOn(bf,b)
nyatla 0:142ee8b12fef 299
nyatla 0:142ee8b12fef 300 /**
nyatla 0:142ee8b12fef 301 * バイトオーダーを入れ替えます。
nyatla 0:142ee8b12fef 302 * @param n
nyatla 0:142ee8b12fef 303 * 変換もとの変数です。
nyatla 0:142ee8b12fef 304 * @return
nyatla 0:142ee8b12fef 305 * 入れ替えた16ビット値を返します。
nyatla 0:142ee8b12fef 306 *
nyatla 0:142ee8b12fef 307 */
nyatla 0:142ee8b12fef 308 #define NyLPC_TUInt16_BSWAP(n) (((((NyLPC_TUInt16)(n))<< 8)&0xff00)|((((NyLPC_TUInt16)(n))>> 8)&0x00ff))
nyatla 0:142ee8b12fef 309
nyatla 0:142ee8b12fef 310
nyatla 0:142ee8b12fef 311
nyatla 0:142ee8b12fef 312 /**
nyatla 0:142ee8b12fef 313 * バイトオーダーを入れ替えます。
nyatla 0:142ee8b12fef 314 * NyLPC_TUInt16_BSWAPとの違いは、関数であることです。
nyatla 0:142ee8b12fef 315 * @param n
nyatla 0:142ee8b12fef 316 * 変換もとの変数です。
nyatla 0:142ee8b12fef 317 * @return
nyatla 0:142ee8b12fef 318 * 入れ替えた16ビット値を返します。
nyatla 0:142ee8b12fef 319 */
nyatla 0:142ee8b12fef 320 NyLPC_TUInt16 NyLPC_TUInt16_bswap(NyLPC_TUInt16 n);
nyatla 0:142ee8b12fef 321 /**
nyatla 0:142ee8b12fef 322 * 16bit長のTRUE値です。
nyatla 0:142ee8b12fef 323 */
nyatla 0:142ee8b12fef 324 #define NyLPC_TUInt16_TRUE NyLPC_TBool_TRUE
nyatla 0:142ee8b12fef 325 /**
nyatla 0:142ee8b12fef 326 * 16bit長のFALSE値です。
nyatla 0:142ee8b12fef 327 */
nyatla 0:142ee8b12fef 328 #define NyLPC_TUInt16_FALSE NyLPC_TBool_FALSE
nyatla 0:142ee8b12fef 329 /**
nyatla 0:142ee8b12fef 330 * 16bit長のFALSEをNyLPC_TBoolへ変換します。
nyatla 0:142ee8b12fef 331 * @param a
nyatla 0:142ee8b12fef 332 * 変換する変数です。
nyatla 0:142ee8b12fef 333 * @return
nyatla 0:142ee8b12fef 334 * 変換した値です。
nyatla 0:142ee8b12fef 335 */
nyatla 0:142ee8b12fef 336 #define NyLPC_TUInt16_castto_TBool(a) ((a)?NyLPC_TBool_TRUE:NyLPC_TBool_FALSE)
nyatla 0:142ee8b12fef 337
nyatla 0:142ee8b12fef 338 //----------------------------------------------------------------------
nyatla 0:142ee8b12fef 339
nyatla 0:142ee8b12fef 340 /**
nyatla 0:142ee8b12fef 341 * 符号無し32bit型です。
nyatla 0:142ee8b12fef 342 */
nyatla 0:142ee8b12fef 343 typedef unsigned long NyLPC_TUInt32;
nyatla 0:142ee8b12fef 344 /**
nyatla 2:b96c1e90d120 345 * ビット操作関数です。bfのビットパターンbに、1をセットします。
nyatla 0:142ee8b12fef 346 * @bf
nyatla 0:142ee8b12fef 347 * 操作対象の変数です。
nyatla 0:142ee8b12fef 348 * @b
nyatla 2:b96c1e90d120 349 * 操作するビットパターンです。
nyatla 0:142ee8b12fef 350 */
nyatla 48:00d211aac2ec 351 #define NyLPC_TUInt32_setBit(bf,b) bf=(bf|(1<<b))
nyatla 0:142ee8b12fef 352 /**
nyatla 2:b96c1e90d120 353 * ビット操作関数です。bfのビットパターンbに、0をセットします。
nyatla 0:142ee8b12fef 354 * @bf
nyatla 0:142ee8b12fef 355 * 操作対象の変数です。
nyatla 0:142ee8b12fef 356 * @b
nyatla 2:b96c1e90d120 357 * 操作するビットパターンです。
nyatla 0:142ee8b12fef 358 */
nyatla 48:00d211aac2ec 359 #define NyLPC_TUInt32_unsetBit(bf,b) bf=(bf&(~(1<<b)))
nyatla 0:142ee8b12fef 360 /**
nyatla 2:b96c1e90d120 361 * ビット判定関数です。bfのビットパターンbが1であるかを確認します。
nyatla 0:142ee8b12fef 362 * @bf
nyatla 0:142ee8b12fef 363 * 判定する変数です。
nyatla 0:142ee8b12fef 364 * @b
nyatla 2:b96c1e90d120 365 * 判定するビットパターンです。
nyatla 0:142ee8b12fef 366 * @return
nyatla 37:fc4b4fd6a649 367 * ビットが一致するなら真を返します。
nyatla 0:142ee8b12fef 368 */
nyatla 48:00d211aac2ec 369 #define NyLPC_TUInt32_isBitOn(bf,b) ((bf&(1<<b))!=0)
nyatla 0:142ee8b12fef 370
nyatla 0:142ee8b12fef 371 /**
nyatla 0:142ee8b12fef 372 * バイトオーダーを入れ替えます。
nyatla 0:142ee8b12fef 373 * @param n
nyatla 0:142ee8b12fef 374 * 変換もとの変数です。
nyatla 0:142ee8b12fef 375 * @return
nyatla 0:142ee8b12fef 376 * 入れ替えた32ビット値を返します。
nyatla 0:142ee8b12fef 377 *
nyatla 0:142ee8b12fef 378 */
nyatla 0:142ee8b12fef 379 #define NyLPC_TUInt32_BSWAP(n) (((((NyLPC_TUInt32)(n))<<24)&0xff000000)|((((NyLPC_TUInt32)(n))<< 8)&0x00ff0000)|((((NyLPC_TUInt32)(n))>> 8)&0x0000ff00)|((((NyLPC_TUInt32)(n))>>24)&0x000000ff))
nyatla 0:142ee8b12fef 380 /**
nyatla 0:142ee8b12fef 381 * バイトオーダーを入れ替えます。
nyatla 0:142ee8b12fef 382 * NyLPC_TUInt32_BSWAPとの違いは、関数であることです。
nyatla 0:142ee8b12fef 383 * @param n
nyatla 0:142ee8b12fef 384 * 変換もとの変数です。
nyatla 0:142ee8b12fef 385 * @return
nyatla 0:142ee8b12fef 386 * 入れ替えた32ビット値を返します。
nyatla 0:142ee8b12fef 387 */
nyatla 0:142ee8b12fef 388 NyLPC_TUInt32 NyLPC_TUInt32_bswap(NyLPC_TUInt32 n);
nyatla 0:142ee8b12fef 389
nyatla 0:142ee8b12fef 390 /**
nyatla 0:142ee8b12fef 391 * 32bit長のTRUE値です。
nyatla 0:142ee8b12fef 392 */
nyatla 0:142ee8b12fef 393 #define NyLPC_TUInt32_TRUE NyLPC_TBool_TRUE
nyatla 0:142ee8b12fef 394 /**
nyatla 0:142ee8b12fef 395 * 32bit長のFALSE値です。
nyatla 0:142ee8b12fef 396 */
nyatla 0:142ee8b12fef 397 #define NyLPC_TUInt32_FALSE NyLPC_TBool_FALSE
nyatla 0:142ee8b12fef 398 /**
nyatla 0:142ee8b12fef 399 * 32bit長のFALSEをNyLPC_TBoolへ変換します。
nyatla 0:142ee8b12fef 400 * @param a
nyatla 0:142ee8b12fef 401 * 変換する変数です。
nyatla 0:142ee8b12fef 402 * @return
nyatla 0:142ee8b12fef 403 * 変換した値です。
nyatla 0:142ee8b12fef 404 */
nyatla 0:142ee8b12fef 405 #define NyLPC_TUInt32_castto_TBool(a) ((a)?NyLPC_TBool_TRUE:NyLPC_TBool_FALSE)
nyatla 0:142ee8b12fef 406
nyatla 0:142ee8b12fef 407
nyatla 0:142ee8b12fef 408 //----------------------------------------------------------------------
nyatla 0:142ee8b12fef 409
nyatla 0:142ee8b12fef 410 /**
nyatla 0:142ee8b12fef 411 * 長さ付TChar配列の構造体です。
nyatla 0:142ee8b12fef 412 *
nyatla 0:142ee8b12fef 413 */
nyatla 0:142ee8b12fef 414 struct NyLPC_TCharArrayPtr
nyatla 0:142ee8b12fef 415 {
nyatla 0:142ee8b12fef 416 /** 配列のポインタ */
nyatla 0:142ee8b12fef 417 NyLPC_TChar* ptr;
nyatla 0:142ee8b12fef 418 /** 配列の長さ */
nyatla 0:142ee8b12fef 419 NyLPC_TUInt16 len;
nyatla 0:142ee8b12fef 420 };
nyatla 0:142ee8b12fef 421 /**
nyatla 0:142ee8b12fef 422 * ptrの位置をi_seekだけ進行します。
nyatla 0:142ee8b12fef 423 * @param i_struct
nyatla 0:142ee8b12fef 424 * 操作する構造体
nyatla 0:142ee8b12fef 425 * @param i_seek
nyatla 0:142ee8b12fef 426 * シークするバイト長
nyatla 0:142ee8b12fef 427 */
nyatla 0:142ee8b12fef 428 NyLPC_TBool NyLPC_TCharArrayPtr_seek(struct NyLPC_TCharArrayPtr* i_struct,NyLPC_TUInt16 i_seek);
nyatla 0:142ee8b12fef 429
nyatla 0:142ee8b12fef 430
nyatla 0:142ee8b12fef 431 /**
nyatla 0:142ee8b12fef 432 * 長さ付TUInt32配列の構造体です。
nyatla 0:142ee8b12fef 433 *
nyatla 0:142ee8b12fef 434 */
nyatla 0:142ee8b12fef 435 struct NyLPC_TUInt32ArrayPtr
nyatla 0:142ee8b12fef 436 {
nyatla 0:142ee8b12fef 437 /** 配列のポインタ */
nyatla 0:142ee8b12fef 438 NyLPC_TUInt32* ptr;
nyatla 0:142ee8b12fef 439 /** 要素数 */
nyatla 0:142ee8b12fef 440 NyLPC_TUInt16 len;
nyatla 0:142ee8b12fef 441 };
nyatla 0:142ee8b12fef 442 /**
nyatla 0:142ee8b12fef 443 * ptrの位置をi_seekだけ進行します。
nyatla 0:142ee8b12fef 444 * 進行すると、len要素がi_seekだけ減少します。
nyatla 0:142ee8b12fef 445 * @param i_struct
nyatla 0:142ee8b12fef 446 * 操作する構造体
nyatla 0:142ee8b12fef 447 * @param i_seek
nyatla 0:142ee8b12fef 448 * シークする要素長
nyatla 0:142ee8b12fef 449 */
nyatla 0:142ee8b12fef 450 NyLPC_TBool NyLPC_TUInt32ArrayPtr_seek(struct NyLPC_TUInt32ArrayPtr* i_struct,NyLPC_TUInt16 i_seek);
nyatla 0:142ee8b12fef 451 /**
nyatla 0:142ee8b12fef 452 * 構造体に、参照するバッファの初期位置とサイズをセットします。
nyatla 0:142ee8b12fef 453 * セットしたバッファは、前方シークの可能な書き込みバッファとして使用できます。
nyatla 0:142ee8b12fef 454 */
nyatla 0:142ee8b12fef 455 void NyLPC_TUInt32ArrayPtr_setBuf(struct NyLPC_TUInt32ArrayPtr* i_struct,NyLPC_TUInt32* i_ptr,NyLPC_TUInt16 i_len);
nyatla 0:142ee8b12fef 456
nyatla 2:b96c1e90d120 457
nyatla 2:b96c1e90d120 458 /**
nyatla 2:b96c1e90d120 459 * TextとIDのテーブルです。
nyatla 2:b96c1e90d120 460 */
nyatla 2:b96c1e90d120 461 struct NyLPC_TTextIdTbl{
nyatla 2:b96c1e90d120 462 const char* n;
nyatla 2:b96c1e90d120 463 NyLPC_TUInt8 id;
nyatla 2:b96c1e90d120 464 };
nyatla 2:b96c1e90d120 465
nyatla 2:b96c1e90d120 466 /**
nyatla 48:00d211aac2ec 467 * テーブルから文字列に一致するIDを返します。
nyatla 48:00d211aac2ec 468 * 大文字と小文字の区別をしません。
nyatla 48:00d211aac2ec 469 * @return
nyatla 48:00d211aac2ec 470 * 一致する文字列のID
nyatla 48:00d211aac2ec 471 * 一致するものがない場合、テーブルの終端の値を返す。
nyatla 2:b96c1e90d120 472 */
nyatla 2:b96c1e90d120 473 NyLPC_TUInt8 NyLPC_TTextIdTbl_getMatchId(const NyLPC_TChar* i_str,const struct NyLPC_TTextIdTbl i_tbl[]);
nyatla 48:00d211aac2ec 474 /**
nyatla 48:00d211aac2ec 475 * テーブルから文字列に一致するIDを返します。
nyatla 48:00d211aac2ec 476 * 大文字と小文字の区別をしません。
nyatla 48:00d211aac2ec 477 * @return
nyatla 48:00d211aac2ec 478 * 一致する文字列のID
nyatla 48:00d211aac2ec 479 * 一致するものがない場合、テーブルの終端の値を返す。
nyatla 48:00d211aac2ec 480 */
nyatla 48:00d211aac2ec 481 NyLPC_TUInt8 NyLPC_TTextIdTbl_getMatchIdIgnoreCase(const NyLPC_TChar* i_str,const struct NyLPC_TTextIdTbl i_tbl[]);
nyatla 48:00d211aac2ec 482 /**
nyatla 57:bc4330dfa62f 483 * テーブルからIDに一致する文字列を返す.
nyatla 48:00d211aac2ec 484 * @return
nyatla 57:bc4330dfa62f 485 * IDに一致する文字列.
nyatla 48:00d211aac2ec 486 * 存在しなければNULL
nyatla 48:00d211aac2ec 487 */
nyatla 48:00d211aac2ec 488 const NyLPC_TChar* NyLPC_TTextIdTbl_getTextById(NyLPC_TUInt8 i_id,const struct NyLPC_TTextIdTbl i_tbl[]);
nyatla 0:142ee8b12fef 489
nyatla 0:142ee8b12fef 490 /*********************************************************************************
nyatla 0:142ee8b12fef 491 * standard function
nyatla 0:142ee8b12fef 492 *********************************************************************************/
nyatla 11:c82a7b2899b0 493 /**
nyatla 11:c82a7b2899b0 494 * Same as tolower
nyatla 11:c82a7b2899b0 495 */
nyatla 11:c82a7b2899b0 496 #define NyLPC_tolower(c) (((c) >= 'A' && (c) <= 'Z' )?((c)+'a' - 'A'):(c))
nyatla 11:c82a7b2899b0 497
nyatla 11:c82a7b2899b0 498 /**
nyatla 48:00d211aac2ec 499 * @return
nyatla 48:00d211aac2ec 500 * 書き込んだ文字列の長さ
nyatla 11:c82a7b2899b0 501 */
nyatla 49:d4334acc3ec3 502 NyLPC_TInt8 NyLPC_itoa(int i_n,char* o_out,NyLPC_TInt8 i_base);
nyatla 11:c82a7b2899b0 503
nyatla 13:a71705c5e6fd 504
nyatla 48:00d211aac2ec 505 /**
nyatla 48:00d211aac2ec 506 * @return
nyatla 48:00d211aac2ec 507 * 書き込んだ文字列の長さ
nyatla 48:00d211aac2ec 508 */
nyatla 49:d4334acc3ec3 509 NyLPC_TInt8 NyLPC_uitoa(unsigned int i_n,char* o_out,NyLPC_TInt8 i_base);
nyatla 48:00d211aac2ec 510 /**
nyatla 48:00d211aac2ec 511 * 桁数の指定できるuitoaです。
nyatla 48:00d211aac2ec 512 */
nyatla 49:d4334acc3ec3 513 NyLPC_TInt8 NyLPC_uitoa2(unsigned int i_n,char* o_out,NyLPC_TInt8 i_base,NyLPC_TInt8 i_digit);
nyatla 13:a71705c5e6fd 514
nyatla 13:a71705c5e6fd 515
nyatla 11:c82a7b2899b0 516 /**
nyatla 11:c82a7b2899b0 517 * Same as reverse
nyatla 11:c82a7b2899b0 518 */
nyatla 0:142ee8b12fef 519 void NyLPC_reverse(char* s);
nyatla 0:142ee8b12fef 520
nyatla 11:c82a7b2899b0 521 /**
nyatla 11:c82a7b2899b0 522 * Same as stricmp
nyatla 11:c82a7b2899b0 523 */
nyatla 11:c82a7b2899b0 524 int NyLPC_stricmp(const char *i_s1, const char *i_s2);
nyatla 11:c82a7b2899b0 525
nyatla 11:c82a7b2899b0 526 /**
nyatla 11:c82a7b2899b0 527 * Same as strnicmp
nyatla 11:c82a7b2899b0 528 */
nyatla 11:c82a7b2899b0 529 int NyLPC_strnicmp(const char *i_s1, const char *i_s2,int n);
nyatla 11:c82a7b2899b0 530
nyatla 11:c82a7b2899b0 531 /**
nyatla 11:c82a7b2899b0 532 * Convert a charactor to integer.
nyatla 11:c82a7b2899b0 533 */
nyatla 11:c82a7b2899b0 534 int NyLPC_ctoi(char i);
nyatla 11:c82a7b2899b0 535
nyatla 11:c82a7b2899b0 536 /**
nyatla 11:c82a7b2899b0 537 * Convert a character to 16 digit integer.
nyatla 11:c82a7b2899b0 538 */
nyatla 11:c82a7b2899b0 539 int NyLPC_ctox(char i);
nyatla 2:b96c1e90d120 540
nyatla 72:c118a7aa37a3 541 /**
nyatla 72:c118a7aa37a3 542 * va_copyがない場合の対処だお
nyatla 72:c118a7aa37a3 543 */
nyatla 72:c118a7aa37a3 544 #ifndef va_copy
nyatla 72:c118a7aa37a3 545 # define NyLPC_va_copy(dest, src) ((dest) = (src))
nyatla 72:c118a7aa37a3 546 #else
nyatla 72:c118a7aa37a3 547 # define NyLPC_va_copy(dest, src) va_copy((dest),(src))
nyatla 72:c118a7aa37a3 548 #endif
nyatla 2:b96c1e90d120 549
nyatla 2:b96c1e90d120 550 #ifdef __cplusplus
nyatla 2:b96c1e90d120 551 }
nyatla 2:b96c1e90d120 552 #endif /* __cplusplus */
nyatla 2:b96c1e90d120 553
nyatla 2:b96c1e90d120 554
nyatla 2:b96c1e90d120 555
nyatla 0:142ee8b12fef 556 /*********************************************************************************
nyatla 0:142ee8b12fef 557 *
nyatla 0:142ee8b12fef 558 *********************************************************************************/
nyatla 0:142ee8b12fef 559
nyatla 2:b96c1e90d120 560 #include "../NyLPC_cMiMicEnv.h"
nyatla 0:142ee8b12fef 561 #include "../NyLPC_cRingBuffer.h"
nyatla 0:142ee8b12fef 562 #include "../NyLPC_cPtrTbl.h"
nyatla 0:142ee8b12fef 563 #include "../NyLPC_cFifoBuffer.h"
nyatla 0:142ee8b12fef 564 #include "../NyLPC_cPtrStream.h"
nyatla 0:142ee8b12fef 565 #include "../NyLPC_cStr.h"
nyatla 0:142ee8b12fef 566
nyatla 0:142ee8b12fef 567
nyatla 0:142ee8b12fef 568
nyatla 13:a71705c5e6fd 569
nyatla 13:a71705c5e6fd 570
nyatla 11:c82a7b2899b0 571 #endif