OSDN Git Service

itoaを自前の実装に変更。
authornyatla <nyatla@47198e57-cb75-475f-84c4-a814cd6f29e0>
Fri, 25 Jan 2013 04:27:38 +0000 (04:27 +0000)
committernyatla <nyatla@47198e57-cb75-475f-84c4-a814cd6f29e0>
Fri, 25 Jan 2013 04:27:38 +0000 (04:27 +0000)
NyLPC_TEthernetIIHeader_setArpTxに
NyLPC_Assert(arph->opcode = NyLPC_HTONS(2));
があったので削除

git-svn-id: http://svn.osdn.jp/svnroot/mimic/trunk@185 47198e57-cb75-475f-84c4-a814cd6f29e0

18 files changed:
lib/src/NyLPC_cFifoBuffer.c
lib/src/NyLPC_cPtrStream.c
lib/src/NyLPC_cPtrStream_protected.h
lib/src/NyLPC_cPtrTbl.c
lib/src/NyLPC_cPtrTbl.h
lib/src/NyLPC_cRingBuffer.c
lib/src/NyLPC_cRingBuffer.h
lib/src/NyLPC_cRomPtrStream.c
lib/src/NyLPC_stdlib.c
lib/src/driver/uip/IEthernetDevice.h
lib/src/http/NyLPC_cHttpBodyWriter.c
lib/src/http/NyLPC_cHttpHeaderWriter.c
lib/src/include/NyLPC_stdlib.h
lib/src/os/NyLPC_cIsr.h
lib/src/os/NyLPC_cStopwatch.h
lib/src/uip/NyLPC_cIPv4.c
lib/src/uip/NyLPC_cIPv4.h
lib/src/uip/NyLPC_uip.c

index 3fc268c..1bf0183 100644 (file)
@@ -45,7 +45,7 @@ void NyLPC_cFifoBuffer_push(NyLPC_TcFifoBuffer_t* i_inst,const void* i_data,NyLP
        NyLPC_TUInt8* wp;\r
        NyLPC_ArgAssert(NyLPC_cFifoBuffer_getSpace(i_inst)>=i_data_len);\r
 \r
-       wp=(i_inst->buf)+i_inst->len;\r
+       wp=((NyLPC_TUInt8*)(i_inst->buf))+i_inst->len;\r
        memcpy(wp,i_data,i_data_len);\r
        i_inst->len+=i_data_len;\r
 }\r
@@ -58,7 +58,7 @@ void NyLPC_cFifoBuffer_pop(NyLPC_TcFifoBuffer_t* i_inst,NyLPC_TUInt16 i_len)
        NyLPC_TUInt8* wp;\r
        NyLPC_TUInt8* rp;\r
        NyLPC_ArgAssert(NyLPC_cFifoBuffer_getLength(i_inst)>=i_len);\r
-       wp=i_inst->buf;\r
+       wp=(NyLPC_TUInt8*)i_inst->buf;\r
        rp=wp+i_len;\r
        i_inst->len-=i_len;\r
        memmove(wp,rp,i_inst->len);\r
index 7ae1220..0fbb6e2 100644 (file)
@@ -84,7 +84,7 @@ NyLPC_TBool NyLPC_cPtrStream_writeln(NyLPC_TcPtrStream_t* i_inst,const void* i_d
 NyLPC_TBool NyLPC_cPtrStream_writeInt(NyLPC_TcPtrStream_t* i_inst,NyLPC_TInt32 i_val,NyLPC_TUInt32 i_wait_msec,NyLPC_TUInt32 i_base)\r
 {\r
        NyLPC_TChar v[12];\r
-       itoa(i_val,v,i_base);\r
+       NyLPC_itoa(i_val,v,i_base);\r
        if(NyLPC_cPtrStream_write(i_inst,v,strlen(v),i_wait_msec)){\r
                return NyLPC_TBool_TRUE;\r
        }\r
index f9d36d4..e45886c 100644 (file)
@@ -23,8 +23,8 @@
  *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
  *\r
  *********************************************************************************/\r
-#ifndef NyLPC_cBlockingStream_protected_h\r
-#define NyLPC_cBlockingStream_protected_h\r
+#ifndef NyLPC_cPtrStream_protected_h\r
+#define NyLPC_cPtrStream_protected_h\r
 #include "NyLPC_cPtrStream.h"\r
 \r
 #ifdef __cplusplus\r
@@ -33,9 +33,6 @@ extern "C" {
 \r
 \r
 \r
-extern struct NyLPC_TcBlockingStream_TInterface NyLPC_TcBlockingStream_Interface;\r
-\r
-\r
 NyLPC_TInt32 NyLPC_cPtrStream_pread_func(NyLPC_TcPtrStream_t* i_inst,const void** o_buf_ptr,NyLPC_TUInt32 i_wait_msec);\r
 NyLPC_TBool NyLPC_cPtrStream_write_func(NyLPC_TcPtrStream_t* i_inst,const void* i_data,NyLPC_TInt16 i_length,NyLPC_TUInt32 i_wait_msec);\r
 void NyLPC_cPtrStream_pseek_func(NyLPC_TcPtrStream_t* i_inst,NyLPC_TUInt16 i_seek);\r
index c3ccfba..4fc42d5 100644 (file)
@@ -25,7 +25,7 @@
  *********************************************************************************/\r
 #include "NyLPC_cPtrTbl.h"\r
 \r
-void NyLPC_cPtrTbl_initialize(NyLPC_TcPtrTbl_t* i_inst,void* i_buf,NyLPC_TUInt16 i_size)\r
+void NyLPC_cPtrTbl_initialize(NyLPC_TcPtrTbl_t* i_inst,void** i_buf,NyLPC_TUInt16 i_size)\r
 {\r
        i_inst->size=i_size;\r
        i_inst->len=0;\r
@@ -56,7 +56,7 @@ void NyLPC_cPtrTbl_set(NyLPC_TcPtrTbl_t* i_inst,NyLPC_TUInt16 i_index,void* i_va
        return;\r
 }\r
 \r
-NyLPC_TUInt16 NyLPC_cPtrTbl_add(NyLPC_TcPtrTbl_t* i_inst,void* i_val)\r
+NyLPC_TInt16 NyLPC_cPtrTbl_add(NyLPC_TcPtrTbl_t* i_inst,void* i_val)\r
 {\r
        int i;\r
        void** p=i_inst->buf;\r
@@ -79,7 +79,7 @@ void NyLPC_cPtrTbl_remove(NyLPC_TcPtrTbl_t* i_inst,NyLPC_TUInt16 i_index)
        return;\r
 }\r
 \r
-NyLPC_TUInt16 NyLPC_cPtrTbl_getIndex(NyLPC_TcPtrTbl_t* i_inst,void* i_val)\r
+NyLPC_TInt16 NyLPC_cPtrTbl_getIndex(NyLPC_TcPtrTbl_t* i_inst,void* i_val)\r
 {\r
        int i;\r
        void** p=i_inst->buf;\r
@@ -96,7 +96,7 @@ NyLPC_TUInt16 NyLPC_cPtrTbl_getIndex(NyLPC_TcPtrTbl_t* i_inst,void* i_val)
  * 現在の要素数を返します。\r
  * この数は、テーブルに存在する有効なポインタの数です。\r
  */\r
-NyLPC_TUInt16 NyLPC_cPtrTbl_getLength(NyLPC_TcPtrTbl_t* i_inst)\r
+NyLPC_TInt16 NyLPC_cPtrTbl_getLength(NyLPC_TcPtrTbl_t* i_inst)\r
 {\r
        return i_inst->len;\r
 }\r
index edf7b57..0346cd8 100644 (file)
@@ -66,7 +66,7 @@ struct NyLPC_TcPtrTbl
  * @param i_size\r
  * テーブルのサイズを指定します。\r
  */\r
-void NyLPC_cPtrTbl_initialize(NyLPC_TcPtrTbl_t* i_inst,void* i_buf,NyLPC_TUInt16 i_size);\r
+void NyLPC_cPtrTbl_initialize(NyLPC_TcPtrTbl_t* i_inst,void** i_buf,NyLPC_TUInt16 i_size);\r
 \r
 void* NyLPC_cPtrTbl_get(NyLPC_TcPtrTbl_t* i_inst,NyLPC_TUInt16 i_index);\r
 \r
@@ -80,14 +80,14 @@ void NyLPC_cPtrTbl_set(NyLPC_TcPtrTbl_t* i_inst,NyLPC_TUInt16 i_index,void* i_va
  * 追加した要素のインデクス番号を返します。\r
  * 失敗した場合、-1を返します。\r
  */\r
-NyLPC_TUInt16 NyLPC_cPtrTbl_add(NyLPC_TcPtrTbl_t* i_inst,void* i_val);\r
+NyLPC_TInt16 NyLPC_cPtrTbl_add(NyLPC_TcPtrTbl_t* i_inst,void* i_val);\r
 \r
 void NyLPC_cPtrTbl_remove(NyLPC_TcPtrTbl_t* i_inst,NyLPC_TUInt16 i_index);\r
 \r
 /**\r
  * 現在の長さを返します。
  */\r
-NyLPC_TUInt16 NyLPC_cPtrTbl_getLength(NyLPC_TcPtrTbl_t* i_inst);\r
+NyLPC_TInt16 NyLPC_cPtrTbl_getLength(NyLPC_TcPtrTbl_t* i_inst);\r
 \r
 /**\r
  * 空き領域の有無を返します。
@@ -97,7 +97,7 @@ NyLPC_TBool NyLPC_cPtrTbl_hasEmpty(NyLPC_TcPtrTbl_t* i_inst);
 /**\r
  * ポインタに一致するインデクスを返します。
  */\r
-NyLPC_TUInt16 NyLPC_cPtrTbl_getIndex(NyLPC_TcPtrTbl_t* i_inst,void* i_val);\r
+NyLPC_TInt16 NyLPC_cPtrTbl_getIndex(NyLPC_TcPtrTbl_t* i_inst,void* i_val);\r
 \r
 #ifdef __cplusplus\r
 }\r
index 56f0e3d..ee7e325 100644 (file)
@@ -56,7 +56,6 @@ void NyLPC_cRingBuffer_dump(NyLPC_TcRingBuffer_t* i_inst)
        printf("\n");\r
 }\r
 #else\r
-#error Bad NyLPC_ARCH!\r
 #endif\r
 \r
 void NyLPC_cRingBuffer_reset(NyLPC_TcRingBuffer_t* i_inst)\r
@@ -100,7 +99,7 @@ void NyLPC_cRingBuffer_initialize(NyLPC_TcRingBuffer_t* i_inst,void* i_buf,NyLPC
 \r
 int NyLPC_cRingBuffer_write(NyLPC_TcRingBuffer_t* i_inst,NyLPC_TUInt8* i_data,const int i_len)\r
 {\r
-       NyLPC_TUInt8* s=i_inst->buf;\r
+       NyLPC_TUInt8* s=(NyLPC_TUInt8*)i_inst->buf;\r
        NyLPC_TUInt8* p;\r
        NyLPC_TUInt16 wo=i_inst->wo;\r
        NyLPC_TUInt16 ro=i_inst->ro;\r
@@ -152,7 +151,7 @@ NyLPC_TUInt8* NyLPC_cRingBuffer_pread(NyLPC_TcRingBuffer_t* i_inst,NyLPC_TUInt16
 {\r
        NyLPC_TUInt16 ro=i_inst->ro;\r
        *len=NyLPC_cRingBuffer_getReadableSize(i_inst);\r
-       return i_inst->buf+ro;\r
+       return ((NyLPC_TUInt8*)(i_inst->buf))+ro;\r
 }\r
 \r
 //前方シークする。\r
index 77616b0..52e01a3 100644 (file)
@@ -58,7 +58,6 @@ struct NyLPC_TcRingBuffer
  */\r
 void NyLPC_cRingBuffer_dump(NyLPC_TcRingBuffer_t* i_inst);\r
 #else\r
-#error Bad NyLPC_ARCH!\r
 #endif\r
 \r
 \r
index 531722b..2115597 100644 (file)
@@ -75,7 +75,7 @@ NyLPC_TBool NyLPC_TcRomPtrStream_initialize(NyLPC_TcRomPtrStream_t* i_inst,void*
        NyLPC_ArgAssert(i_length>0);\r
        NyLPC_ArgAssert(i_packetsize>0);\r
        i_inst->_super._interface=&NyLPC_TcRomPtrStream_Interface;\r
-       i_inst->_rom=i_rom_addr;\r
+       i_inst->_rom=(NyLPC_TChar*)i_rom_addr;\r
        i_inst->_rom_size=i_length;\r
        i_inst->_packet_size=i_packetsize;\r
        return NyLPC_TBool_TRUE;\r
index 0bda5bf..3b9a684 100644 (file)
@@ -88,3 +88,33 @@ void NyLPC_TUInt32ArrayPtr_setBuf(struct NyLPC_TUInt32ArrayPtr* i_struct,NyLPC_T
        i_struct->ptr=i_ptr;\r
        i_struct->len=i_len;\r
 }\r
+\r
+\r
+void NyLPC_itoa(int i_n,char* o_out,int i_digit)\r
+{\r
+        int i, sign;\r
+        if ((sign = i_n) < 0){\r
+                i_n = -i_n;\r
+        }\r
+        i = 0;\r
+        do{\r
+                o_out[i++] = i_n % 10 + '0';\r
+        }while ((i_n /= 10) > 0);\r
+        if (sign < 0){\r
+                o_out[i++] = '-';\r
+        }\r
+        o_out[i] = '\0';\r
+        NyLPC_reverse(o_out);\r
+}\r
+\r
+void NyLPC_reverse(char* s)\r
+{\r
+       char *j;\r
+       char c;\r
+       j = s + strlen(s) - 1;\r
+       while(s < j){\r
+               c = *s;\r
+               *s++ = *j;\r
+               *j-- = c;\r
+       }\r
+}\r
index da7b2d9..7445e46 100644 (file)
@@ -8,6 +8,7 @@
 #define IEthernetDevice_h\r
 #include "../../uip/NyLPC_uip.h"\r
 #include "NyLPC_stdlib.h"\r
+//#include "../../uip/NyLPC_uip_ethernet.h"\r
 \r
 \r
 #ifdef __cplusplus\r
index 92d01ba..23bc14e 100644 (file)
@@ -154,7 +154,7 @@ static NyLPC_TBool print(void* i_inst,const char* i_fmt,va_list args)
                                        NyLPC_cHttpBodyWriter_write(i_inst,wk,ol);\r
                                        ol=0;\r
                                }\r
-                               itoa((va_arg(args,int)),wk,10);\r
+                               NyLPC_itoa((va_arg(args,int)),wk,10);\r
                                //強制コミット\r
                                NyLPC_cHttpBodyWriter_write(i_inst,wk,strlen(wk));\r
                                rp++;\r
@@ -181,7 +181,7 @@ static NyLPC_TBool print(void* i_inst,const char* i_fmt,va_list args)
                                        NyLPC_cHttpBodyWriter_write(i_inst,wk,ol);\r
                                        ol=0;\r
                                }\r
-                               itoa((va_arg(args,int)),wk,16);\r
+                               NyLPC_itoa((va_arg(args,int)),wk,16);\r
                                //強制コミット\r
                                NyLPC_cHttpBodyWriter_write(i_inst,wk,strlen(wk));\r
                                rp++;\r
index 4022346..23e9e46 100644 (file)
@@ -137,7 +137,7 @@ NyLPC_TBool NyLPC_cHttpHeaderWriter_writeHeader(NyLPC_TcHttpHeaderWriter_t* i_in
        if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"HTTP/1.1 ",9)){\r
                NyLPC_OnErrorGoto(Error);\r
        }\r
-       itoa(i_status,v,10);\r
+       NyLPC_itoa(i_status,v,10);\r
        if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,v,-1)){\r
                NyLPC_OnErrorGoto(Error);\r
        }\r
@@ -164,7 +164,7 @@ NyLPC_TBool NyLPC_cHttpHeaderWriter_writeHeader(NyLPC_TcHttpHeaderWriter_t* i_in
                if(!NyLPC_iHttpPtrStream_write(i_inst->_ref_stream,"Content-Length: ",-1)){\r
                        NyLPC_OnErrorGoto(Error);\r
                }\r
-               itoa(i_inst->_content_length,v,10);\r
+               NyLPC_itoa(i_inst->_content_length,v,10);\r
                if(!writeln(i_inst->_ref_stream,v,-1)){\r
                        NyLPC_OnErrorGoto(Error);\r
                }\r
index e0f2f27..429f09f 100644 (file)
@@ -448,9 +448,14 @@ void NyLPC_TUInt32ArrayPtr_setBuf(struct NyLPC_TUInt32ArrayPtr* i_struct,NyLPC_T
 \r
 \r
 /*********************************************************************************\r
- *\r
+ * standard function\r
  *********************************************************************************/\r
+void NyLPC_itoa(int i_n,char* o_out,int i_digit);\r
+void NyLPC_reverse(char* s);\r
 \r
+/*********************************************************************************\r
+ *\r
+ *********************************************************************************/\r
 \r
 #include "../NyLPC_cRingBuffer.h"\r
 #include "../NyLPC_cPtrTbl.h"\r
index 8e96d09..8c528d7 100644 (file)
@@ -49,16 +49,12 @@ extern "C" {
 /**\r
  * 全ての割込みとタスクスイッチを停止します。\r
  */\r
-#define NyLPC_cIsr_enterCritical() portENTER_CRITICAL()\r
+inline void NyLPC_cIsr_enterCritical();\r
 /**\r
  * 全ての割込みとタスクスイッチを再開します。\r
  */\r
-#define NyLPC_cIsr_exitCritical() portEXIT_CRITICAL()\r
-/*\r
-void NyLPC_cIsr_setIRqHandler(int i_num,void* function)\r
-{\r
+inline void NyLPC_cIsr_exitCritical();\r
 \r
-}*/\r
 \r
 #ifdef __cplusplus\r
 }\r
index 39661b3..8c4ef24 100644 (file)
@@ -42,11 +42,17 @@ typedef struct NyLPC_TcStopwatch NyLPC_TcStopwatch_t;
 /**\r
  * このクラスは、経過時間を計算する関数を提供します。
  */\r
+#if NyLPC_ARCH==NyLPC_ARCH_FREERTOS\r
+\r
 struct NyLPC_TcStopwatch\r
 {\r
        NyLPC_TUInt32 _tick;\r
        NyLPC_TUInt32 _ex_timeout;\r
 };\r
+#else\r
+#error Bad NyLPC_ARCH!\r
+#endif\r
+\r
 /**\r
  * 現在のtickCountを返します。\r
  */\r
index 1b786fe..fc8894f 100644 (file)
@@ -163,8 +163,8 @@ void NyLPC_cIPv4_initialize(
        NyLPC_TcIPv4_t* i_inst)\r
 {\r
        //内部テーブルの初期化\r
-       cListenerTbl_initialize(&(i_inst->_listener_tbl),i_inst->_listener_array_buf);\r
-       cSocketTbl_initialize(&(i_inst->_socket_tbl),i_inst->_socket_array_buf);\r
+       cListenerTbl_initialize(&(i_inst->_listener_tbl),(void**)(i_inst->_listener_array_buf));\r
+       cSocketTbl_initialize(&(i_inst->_socket_tbl),(void**)(i_inst->_socket_array_buf));\r
        //instanceの初期化\r
        i_inst->_ref_config=NULL;\r
        return;\r
@@ -223,7 +223,7 @@ NyLPC_TBool NyLPC_cIPv4_removeSocket(
        NyLPC_TcIPv4_t* i_inst,\r
        NyLPC_TcTcpSocket_t* i_sock)\r
 {\r
-       NyLPC_TUInt16 i;\r
+       NyLPC_TInt16 i;\r
        NyLPC_Assert(!NyLPC_cUipService_isRun());\r
        i=NyLPC_cPtrTbl_getIndex(&(i_inst->_socket_tbl),i_sock);\r
        if(i>=0){\r
@@ -252,7 +252,7 @@ NyLPC_TBool NyLPC_cIPv4_removeListener(
        NyLPC_TcIPv4_t* i_inst,\r
        NyLPC_TcTcpListener_t* i_listener)\r
 {\r
-       NyLPC_TUInt16 i;\r
+       NyLPC_TInt16 i;\r
        NyLPC_Assert(!NyLPC_cUipService_isRun());\r
        i=NyLPC_cPtrTbl_getIndex(&(i_inst->_listener_tbl),i_listener);\r
        if(i>=0){\r
index 348fd56..505e07b 100644 (file)
 extern "C" {\r
 #endif /* __cplusplus */\r
 \r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
 /**\r
  * クラス型を定義します。\r
  * NyLPC_cIPv4クラスは、NyLPC_cUipServiceクラスの一部として働きます。\r
index 2fea19f..b2e5bb2 100644 (file)
@@ -117,7 +117,6 @@ NyLPC_TUInt16 NyLPC_TEthernetIIHeader_setArpTx(
 {\r
        struct NyLPC_TArpHeader* arph=(struct NyLPC_TArpHeader*)(((NyLPC_TUInt8*)i_struct)+sizeof(struct NyLPC_TEthernetIIHeader));\r
 \r
-       NyLPC_Assert(arph->opcode = NyLPC_HTONS(2));\r
        i_struct->type = NyLPC_HTONS(UIP_ETHTYPE_ARP);\r
        switch(arph->opcode){\r
        case NyLPC_HTONS(ARP_REPLY):\r