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:
12:efe841863fc8
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 #include "NyLPC_cPtrTbl.h"
nyatla 0:142ee8b12fef 27
nyatla 0:142ee8b12fef 28 void NyLPC_cPtrTbl_initialize(NyLPC_TcPtrTbl_t* i_inst,void** i_buf,NyLPC_TUInt16 i_size)
nyatla 0:142ee8b12fef 29 {
nyatla 0:142ee8b12fef 30 i_inst->size=i_size;
nyatla 0:142ee8b12fef 31 i_inst->len=0;
nyatla 0:142ee8b12fef 32 i_inst->buf=i_buf;
nyatla 0:142ee8b12fef 33 memset(i_inst->buf,0,i_size*sizeof(void*));
nyatla 0:142ee8b12fef 34 }
nyatla 0:142ee8b12fef 35 void* NyLPC_cPtrTbl_get(NyLPC_TcPtrTbl_t* i_inst,NyLPC_TUInt16 i_index)
nyatla 0:142ee8b12fef 36 {
nyatla 0:142ee8b12fef 37 return i_inst->buf[i_index];
nyatla 0:142ee8b12fef 38 }
nyatla 0:142ee8b12fef 39
nyatla 0:142ee8b12fef 40 void NyLPC_cPtrTbl_set(NyLPC_TcPtrTbl_t* i_inst,NyLPC_TUInt16 i_index,void* i_val)
nyatla 0:142ee8b12fef 41 {
nyatla 0:142ee8b12fef 42 void** p=(i_inst->buf+i_index);
nyatla 0:142ee8b12fef 43 if(*p==NULL){
nyatla 0:142ee8b12fef 44 if(i_val!=NULL){
nyatla 0:142ee8b12fef 45 //投入
nyatla 0:142ee8b12fef 46 i_inst->len++;
nyatla 0:142ee8b12fef 47 }
nyatla 0:142ee8b12fef 48 }else{
nyatla 0:142ee8b12fef 49 if(i_val==NULL){
nyatla 0:142ee8b12fef 50 //消去
nyatla 0:142ee8b12fef 51 i_inst->len--;
nyatla 0:142ee8b12fef 52 }
nyatla 0:142ee8b12fef 53 }
nyatla 0:142ee8b12fef 54 //値を反映
nyatla 0:142ee8b12fef 55 *p=i_val;
nyatla 0:142ee8b12fef 56 return;
nyatla 0:142ee8b12fef 57 }
nyatla 0:142ee8b12fef 58
nyatla 0:142ee8b12fef 59 NyLPC_TInt16 NyLPC_cPtrTbl_add(NyLPC_TcPtrTbl_t* i_inst,void* i_val)
nyatla 0:142ee8b12fef 60 {
nyatla 0:142ee8b12fef 61 int i;
nyatla 0:142ee8b12fef 62 void** p=i_inst->buf;
nyatla 0:142ee8b12fef 63
nyatla 0:142ee8b12fef 64 for(i=i_inst->size-1;i>=0;i--){
nyatla 0:142ee8b12fef 65 if(*(p+i)==NULL){
nyatla 0:142ee8b12fef 66 NyLPC_cPtrTbl_set(i_inst,i,i_val);
nyatla 0:142ee8b12fef 67 return i;
nyatla 0:142ee8b12fef 68 }
nyatla 0:142ee8b12fef 69 }
nyatla 0:142ee8b12fef 70 return -1;
nyatla 0:142ee8b12fef 71 }
nyatla 0:142ee8b12fef 72
nyatla 0:142ee8b12fef 73 /**
nyatla 0:142ee8b12fef 74 * i_indexの要素に、NULLをセットして削除します。
nyatla 0:142ee8b12fef 75 */
nyatla 0:142ee8b12fef 76 void NyLPC_cPtrTbl_remove(NyLPC_TcPtrTbl_t* i_inst,NyLPC_TUInt16 i_index)
nyatla 0:142ee8b12fef 77 {
nyatla 0:142ee8b12fef 78 NyLPC_cPtrTbl_set(i_inst,i_index,NULL);
nyatla 0:142ee8b12fef 79 return;
nyatla 0:142ee8b12fef 80 }
nyatla 0:142ee8b12fef 81
nyatla 0:142ee8b12fef 82 NyLPC_TInt16 NyLPC_cPtrTbl_getIndex(NyLPC_TcPtrTbl_t* i_inst,void* i_val)
nyatla 0:142ee8b12fef 83 {
nyatla 0:142ee8b12fef 84 int i;
nyatla 0:142ee8b12fef 85 void** p=i_inst->buf;
nyatla 0:142ee8b12fef 86
nyatla 0:142ee8b12fef 87 for(i=i_inst->size-1;i>=0;i--){
nyatla 0:142ee8b12fef 88 if(*(p+i)==i_val){
nyatla 0:142ee8b12fef 89 return i;
nyatla 0:142ee8b12fef 90 }
nyatla 0:142ee8b12fef 91 }
nyatla 0:142ee8b12fef 92 return -1;
nyatla 0:142ee8b12fef 93 }
nyatla 0:142ee8b12fef 94
nyatla 0:142ee8b12fef 95 /**
nyatla 0:142ee8b12fef 96 * 現在の要素数を返します。
nyatla 0:142ee8b12fef 97 * この数は、テーブルに存在する有効なポインタの数です。
nyatla 0:142ee8b12fef 98 */
nyatla 0:142ee8b12fef 99 NyLPC_TInt16 NyLPC_cPtrTbl_getLength(NyLPC_TcPtrTbl_t* i_inst)
nyatla 0:142ee8b12fef 100 {
nyatla 0:142ee8b12fef 101 return i_inst->len;
nyatla 0:142ee8b12fef 102 }
nyatla 0:142ee8b12fef 103
nyatla 0:142ee8b12fef 104 NyLPC_TBool NyLPC_cPtrTbl_hasEmpty(NyLPC_TcPtrTbl_t* i_inst)
nyatla 0:142ee8b12fef 105 {
nyatla 0:142ee8b12fef 106 return i_inst->len<i_inst->size;
nyatla 0:142ee8b12fef 107 }