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:
110:257739f9b31e
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 * このファイルは、NyLPC_cFifoBufferクラスを定義します。
nyatla 0:142ee8b12fef 29 */
nyatla 0:142ee8b12fef 30 #ifndef NyLPC_TcFifoBuffer_H
nyatla 0:142ee8b12fef 31 #define NyLPC_TcFifoBuffer_H
nyatla 0:142ee8b12fef 32
nyatla 0:142ee8b12fef 33 #include "NyLPC_stdlib.h"
nyatla 0:142ee8b12fef 34
nyatla 0:142ee8b12fef 35 #ifdef __cplusplus
nyatla 0:142ee8b12fef 36 extern "C" {
nyatla 0:142ee8b12fef 37 #endif /* __cplusplus */
nyatla 0:142ee8b12fef 38
nyatla 0:142ee8b12fef 39 /**
nyatla 0:142ee8b12fef 40 * クラス型を定義します。
nyatla 0:142ee8b12fef 41 * NyLPC_cFifoBufferクラスは、固定長のメモリを、最大bit長のFIFOメモリーとして扱うためのラップクラスです。
nyatla 0:142ee8b12fef 42 */
nyatla 0:142ee8b12fef 43 typedef struct NyLPC_TcFifoBuffer NyLPC_TcFifoBuffer_t;
nyatla 0:142ee8b12fef 44
nyatla 0:142ee8b12fef 45 /**
nyatla 0:142ee8b12fef 46 * NyLPC_TcFifoBufferクラスの構造体です。
nyatla 0:142ee8b12fef 47 */
nyatla 0:142ee8b12fef 48 struct NyLPC_TcFifoBuffer
nyatla 0:142ee8b12fef 49 {
nyatla 0:142ee8b12fef 50 /** 配列の最大サイズ*/
nyatla 0:142ee8b12fef 51 NyLPC_TUInt16 size;
nyatla 0:142ee8b12fef 52 /** 配列の現在の長さ*/
nyatla 0:142ee8b12fef 53 NyLPC_TUInt16 len;
nyatla 0:142ee8b12fef 54 /** バッファ領域*/
nyatla 0:142ee8b12fef 55 void* buf;
nyatla 0:142ee8b12fef 56 };
nyatla 0:142ee8b12fef 57
nyatla 0:142ee8b12fef 58 /**
nyatla 0:142ee8b12fef 59 * コンストラクタです。
nyatla 0:142ee8b12fef 60 * i_instを、i_bufをラップするインスタンスとして初期化します。
nyatla 0:142ee8b12fef 61 * i_bufは、finalizeを呼び出すまで、クラスが参照します。
nyatla 0:142ee8b12fef 62 * インスタンスを削除するまでの間、維持してください。
nyatla 0:142ee8b12fef 63 * @param i_inst
nyatla 0:142ee8b12fef 64 * 初期化するメモリブロックのアドレス。
nyatla 0:142ee8b12fef 65 * @param i_buf
nyatla 0:142ee8b12fef 66 * ラップするメモリブロックのアドレス
nyatla 0:142ee8b12fef 67 * @param i_buf_size
nyatla 0:142ee8b12fef 68 * i_bufのサイズ。
nyatla 0:142ee8b12fef 69 */
nyatla 0:142ee8b12fef 70 void NyLPC_cFifoBuffer_initialize(NyLPC_TcFifoBuffer_t* i_inst,void* i_buf,NyLPC_TUInt16 i_buf_size);
nyatla 0:142ee8b12fef 71
nyatla 0:142ee8b12fef 72 /**
nyatla 0:142ee8b12fef 73 * デストラクタです。
nyatla 0:142ee8b12fef 74 * インスタンスの確保しているリソースを開放します。
nyatla 0:142ee8b12fef 75 * @param i_inst
nyatla 0:142ee8b12fef 76 * 開放するインスタンスのポインタ
nyatla 0:142ee8b12fef 77 */
nyatla 0:142ee8b12fef 78 #define NyLPC_cFifoBuffer_finalize(i_inst)
nyatla 0:142ee8b12fef 79
nyatla 0:142ee8b12fef 80 /**
nyatla 0:142ee8b12fef 81 * この関数は、FIFOバッファの有効データ長を0にしてリセットします。
nyatla 0:142ee8b12fef 82 * @param i_inst
nyatla 0:142ee8b12fef 83 * 操作するインスタンスのポインタ
nyatla 0:142ee8b12fef 84 */
nyatla 0:142ee8b12fef 85 #define NyLPC_cFifoBuffer_clear(i_inst) (i_inst)->len=0;
nyatla 0:142ee8b12fef 86
nyatla 0:142ee8b12fef 87 /**
nyatla 0:142ee8b12fef 88 * この関数は、バッファの後方にデータをコピーして追記します。
nyatla 0:142ee8b12fef 89 * 十分なサイズがない場合、ASSERTします。
nyatla 0:142ee8b12fef 90 * 書込み可能な最大サイズは、getSpace関数で得ることが出来ます。
nyatla 0:142ee8b12fef 91 * @param i_inst
nyatla 0:142ee8b12fef 92 * 操作するインスタンスのポインタ
nyatla 0:142ee8b12fef 93 * @param i_data
nyatla 0:142ee8b12fef 94 * 追記するデータ。
nyatla 0:142ee8b12fef 95 * @param i_data_len
nyatla 0:142ee8b12fef 96 * 追記するデータのサイズ
nyatla 0:142ee8b12fef 97 *
nyatla 0:142ee8b12fef 98 */
nyatla 0:142ee8b12fef 99 void NyLPC_cFifoBuffer_push(NyLPC_TcFifoBuffer_t* i_inst,const void* i_data,NyLPC_TUInt16 i_data_len);
nyatla 110:257739f9b31e 100 /**
nyatla 110:257739f9b31e 101 * 先にメモリ領域を確保して、そのアドレスを返します。
nyatla 110:257739f9b31e 102 */
nyatla 110:257739f9b31e 103 void* NyLPC_cFifoBuffer_prePush(NyLPC_TcFifoBuffer_t* i_inst,NyLPC_TUInt16 i_data_len);
nyatla 110:257739f9b31e 104
nyatla 0:142ee8b12fef 105
nyatla 0:142ee8b12fef 106 /**
nyatla 0:142ee8b12fef 107 * この関数は、バッファの先頭からデータを削除します。
nyatla 0:142ee8b12fef 108 * 十分なデータがない場合、ASSERTします。
nyatla 0:142ee8b12fef 109 * この関数は、戻り値を返しません。getPtrで得たポインタからデータを読み込んだ後に、読み込んだデータをバッファから削除するために使います。
nyatla 0:142ee8b12fef 110 * @param i_inst
nyatla 0:142ee8b12fef 111 * 操作するインスタンスのポインタ
nyatla 0:142ee8b12fef 112 * @param i_data
nyatla 0:142ee8b12fef 113 * 削除するデータのサイズ。getLengthの戻り値以下である必要があります。
nyatla 0:142ee8b12fef 114 */
nyatla 0:142ee8b12fef 115 void NyLPC_cFifoBuffer_pop(NyLPC_TcFifoBuffer_t* i_inst,NyLPC_TUInt16 i_len);
nyatla 0:142ee8b12fef 116
nyatla 0:142ee8b12fef 117 /**
nyatla 0:142ee8b12fef 118 * バッファの先頭ポインタを得ます。
nyatla 0:142ee8b12fef 119 * @param i_inst
nyatla 0:142ee8b12fef 120 * 操作するインスタンスのポインタ
nyatla 0:142ee8b12fef 121 * @return
nyatla 0:142ee8b12fef 122 * バッファの先頭ポインタを返します。値は、次回にpush/popをするまでの間有効です。
nyatla 0:142ee8b12fef 123 */
nyatla 0:142ee8b12fef 124 void* NyLPC_cFifoBuffer_getPtr(const NyLPC_TcFifoBuffer_t* i_inst);
nyatla 0:142ee8b12fef 125
nyatla 0:142ee8b12fef 126 /**
nyatla 0:142ee8b12fef 127 * 格納しているデータの長さを返します。
nyatla 0:142ee8b12fef 128 * getPtrで得たポインタから読み出せるデータのサイズに相当します。
nyatla 0:142ee8b12fef 129 * @param i_inst
nyatla 0:142ee8b12fef 130 * 操作するインスタンスのポインタ
nyatla 0:142ee8b12fef 131 * @return
nyatla 0:142ee8b12fef 132 * 読み出せるデータの長さです。
nyatla 0:142ee8b12fef 133 */
nyatla 0:142ee8b12fef 134 NyLPC_TUInt16 NyLPC_cFifoBuffer_getLength(const NyLPC_TcFifoBuffer_t* i_inst);
nyatla 0:142ee8b12fef 135
nyatla 0:142ee8b12fef 136 /**
nyatla 0:142ee8b12fef 137 * バッファの残量を計算して返します。
nyatla 0:142ee8b12fef 138 * この値は、push関数で追記できるデータサイズと同じです。
nyatla 0:142ee8b12fef 139 * @param i_inst
nyatla 0:142ee8b12fef 140 * 操作するインスタンスのポインタ
nyatla 0:142ee8b12fef 141 * @return
nyatla 0:142ee8b12fef 142 * バッファの空き領域のサイズです。
nyatla 0:142ee8b12fef 143 */
nyatla 0:142ee8b12fef 144 NyLPC_TUInt16 NyLPC_cFifoBuffer_getSpace(const NyLPC_TcFifoBuffer_t* i_inst);
nyatla 0:142ee8b12fef 145
nyatla 0:142ee8b12fef 146 #ifdef __cplusplus
nyatla 0:142ee8b12fef 147 }
nyatla 0:142ee8b12fef 148 #endif /* __cplusplus */
nyatla 0:142ee8b12fef 149
nyatla 0:142ee8b12fef 150 #endif