OSDN Git Service

NyLPC_uip_ethernet.xを追加
authornyatla <nyatla@47198e57-cb75-475f-84c4-a814cd6f29e0>
Fri, 25 Jan 2013 05:05:08 +0000 (05:05 +0000)
committernyatla <nyatla@47198e57-cb75-475f-84c4-a814cd6f29e0>
Fri, 25 Jan 2013 05:05:08 +0000 (05:05 +0000)
git-svn-id: http://svn.osdn.jp/svnroot/mimic/trunk@186 47198e57-cb75-475f-84c4-a814cd6f29e0

lib/src/os/freertos/NyLPC_cIsr.c [new file with mode: 0644]
lib/src/uip/NyLPC_uip.c
lib/src/uip/NyLPC_uip.h
lib/src/uip/NyLPC_uip_ethernet.c [new file with mode: 0644]
lib/src/uip/NyLPC_uip_ethernet.h [new file with mode: 0644]

diff --git a/lib/src/os/freertos/NyLPC_cIsr.c b/lib/src/os/freertos/NyLPC_cIsr.c
new file mode 100644 (file)
index 0000000..4083b5b
--- /dev/null
@@ -0,0 +1,47 @@
+/*********************************************************************************\r
+ * PROJECT: MiMic\r
+ * --------------------------------------------------------------------------------\r
+ *\r
+ * This file is part of MiMic\r
+ * Copyright (C)2011 Ryo Iizuka\r
+ *\r
+ * MiMic is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU Lesser General Public License as published\r
+ * by the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU Lesser General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+ *\r
+ * For further information please contact.\r
+ *     http://nyatla.jp/\r
+ *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
+ *\r
+ *********************************************************************************/\r
+#include "../NyLPC_cIsr.h"\r
+#if NyLPC_ARCH==NyLPC_ARCH_FREERTOS\r
+\r
+#include "FreeRTOS.h"\r
+#include "task.h"\r
+\r
+void NyLPC_cIsr_enterCritical()\r
+{\r
+       portENTER_CRITICAL();\r
+}\r
+\r
+/**\r
+ * 全ての割込みとタスクスイッチを再開します。\r
+ */\r
+void NyLPC_cIsr_exitCritical()\r
+{\r
+       portEXIT_CRITICAL();\r
+}\r
+\r
+\r
+\r
+#endif\r
index b2e5bb2..03c9d52 100644 (file)
 \r
 \r
 \r
-#define UIP_ETHTYPE_ARP 0x0806\r
-#define UIP_ETHTYPE_IP  0x0800\r
-#define UIP_ETHTYPE_IP6 0x86dd\r
-\r
 \r
 #define ARP_REQUEST 1\r
 #define ARP_REPLY   2\r
@@ -117,7 +113,7 @@ NyLPC_TUInt16 NyLPC_TEthernetIIHeader_setArpTx(
 {\r
        struct NyLPC_TArpHeader* arph=(struct NyLPC_TArpHeader*)(((NyLPC_TUInt8*)i_struct)+sizeof(struct NyLPC_TEthernetIIHeader));\r
 \r
-       i_struct->type = NyLPC_HTONS(UIP_ETHTYPE_ARP);\r
+       i_struct->type = NyLPC_HTONS(NyLPC_TEthernetIIHeader_TYPE_ARP);\r
        switch(arph->opcode){\r
        case NyLPC_HTONS(ARP_REPLY):\r
                memcpy(i_struct->src.addr, i_my_eth_addr->addr, 6);\r
@@ -142,7 +138,7 @@ NyLPC_TUInt16 NyLPC_TEthernetIIHeader_setIPv4Tx(
 {\r
        struct NyLPC_TIPv4Header* iph=(struct NyLPC_TIPv4Header*)(((NyLPC_TUInt8*)i_eth)+sizeof(struct NyLPC_TEthernetIIHeader));\r
 \r
-       i_eth->type = NyLPC_HTONS(UIP_ETHTYPE_IP);\r
+       i_eth->type = NyLPC_HTONS(NyLPC_TEthernetIIHeader_TYPE_IP);\r
        /* Build an ethernet header. */\r
        memcpy(i_eth->dest.addr,i_dest_eth_addr, 6);\r
        memcpy(i_eth->src.addr, i_src_eth_addr->addr, 6);\r
@@ -371,7 +367,7 @@ void NyLPC_TArpHeader_setArpRequest(
        i_struct->sipaddr=i_saddr;\r
        i_struct->opcode = NyLPC_HTONS(ARP_REQUEST); /* ARP request. */\r
        i_struct->hwtype = NyLPC_HTONS(ARP_HWTYPE_ETH);\r
-       i_struct->protocol = NyLPC_HTONS(UIP_ETHTYPE_IP);\r
+       i_struct->protocol = NyLPC_HTONS(NyLPC_TEthernetIIHeader_TYPE_IP);\r
        i_struct->hwlen = 6;\r
        i_struct->protolen = 4;\r
        return;\r
index afc33f7..0afc80c 100644 (file)
@@ -56,6 +56,8 @@
 #define NyLPC_uip_h\r
 #include "../include/NyLPC_stdlib.h"\r
 #include "../include/NyLPC_config.h"\r
+#include "NyLPC_uip_ethernet.h"\r
+\r
 #ifdef __cplusplus\r
 extern "C" {\r
 #endif /* __cplusplus */\r
@@ -72,39 +74,6 @@ extern "C" {
 \r
 /**********************************************************************\r
  *\r
- * struct NyLPC_TEthAddr\r
- *\r
- **********************************************************************/\r
-\r
-/**\r
- * この構造体は、48bitのイーサネットアドレスを格納します。\r
- */\r
-struct NyLPC_TEthAddr\r
-{\r
-  NyLPC_TUInt8 addr[6];\r
-}PACK_STRUCT_END;\r
-\r
-\r
-/**\r
- * 構造体にEthernetアドレスをセットします。\r
- * 次のように使います。\r
- \code\r
- struct NyLPC_TEthAddr en=NyLPC_TEthAddr_pack(1,2,3,4,5,6);\r
- \endcode\r
- */\r
-#define NyLPC_TEthAddr_pack(a1,a2,a3,a4,a5,a6) {{(a1),(a2),(a3),(a4),(a5),(a6)}}\r
-/**\r
- * 変数にEthernetアドレスをセットします。\r
- * 次のように使います。\r
- \code\r
- struct NyLPC_TEthAddr en;\r
- NyLPC_TEthAddr_set(&en,1,2,3,4,5,6);\r
- \endcode\r
- */\r
-#define NyLPC_TEthAddr_set(v,a1,a2,a3,a4,a5,a6) {v->addr[0]=(a1);v->addr[1]=(a2);v->addr[2]=(a3);v->addr[3]=(a4);v->addr[4]=(a5);v->addr[5]=(a6);}\r
-\r
-/**********************************************************************\r
- *\r
  *\r
  *\r
  **********************************************************************/\r
@@ -231,6 +200,12 @@ NyLPC_TUInt16 NyLPC_uip_chksum(NyLPC_TUInt16 sum, const NyLPC_TUInt8 *data, NyLP
  *\r
  **********************************************************************/\r
 \r
+#define NyLPC_TEthernetIIHeader_TYPE_IP                0x0800\r
+#define NyLPC_TEthernetIIHeader_TYPE_ARP       0x0806\r
+#define NyLPC_TEthernetIIHeader_TYPE_IPV6      0x86DD\r
+//#define UIP_ETHTYPE_IP  0x0800\r
+//#define UIP_ETHTYPE_ARP 0x0806\r
+//#define UIP_ETHTYPE_IP6 0x86dd\r
 \r
 struct NyLPC_TEthernetIIHeader\r
 {\r
@@ -240,11 +215,6 @@ struct NyLPC_TEthernetIIHeader
 }PACK_STRUCT_END;\r
 \r
 \r
-#define NyLPC_TEthernetIIHeader_TYPE_IP                0x0800\r
-#define NyLPC_TEthernetIIHeader_TYPE_ARP       0x0806\r
-#define NyLPC_TEthernetIIHeader_TYPE_IPV6      0x86DD\r
-\r
-\r
 NyLPC_TUInt16 NyLPC_TEthernetIIHeader_setArpTx(\r
        struct NyLPC_TEthernetIIHeader* i_struct,\r
        const struct NyLPC_TEthAddr* i_my_eth_addr);\r
diff --git a/lib/src/uip/NyLPC_uip_ethernet.c b/lib/src/uip/NyLPC_uip_ethernet.c
new file mode 100644 (file)
index 0000000..f847822
--- /dev/null
@@ -0,0 +1,57 @@
+/*********************************************************************************\r
+ * PROJECT: MiMic\r
+ * --------------------------------------------------------------------------------\r
+ *\r
+ * This file is part of MiMic\r
+ * Copyright (C)2011 Ryo Iizuka\r
+ *\r
+ * MiMic is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU Lesser General Public License as published\r
+ * by the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU Lesser General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+ *\r
+ * For further information please contact.\r
+ *     http://nyatla.jp/\r
+ *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
+ *\r
+ *\r
+ * Parts of this file were leveraged from uIP:\r
+ *\r
+ * Copyright (c) 2001-2003, Adam Dunkels.\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ * 1. Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ * 2. Redistributions in binary form must reproduce the above copyright\r
+ *    notice, this list of conditions and the following disclaimer in the\r
+ *    documentation and/or other materials provided with the distribution.\r
+ * 3. The name of the author may not be used to endorse or promote\r
+ *    products derived from this software without specific prior\r
+ *    written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY\r
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ */\r
+#include "NyLPC_uip_ethernet.h"\r
+#include "NyLPC_uip.h"\r
+\r
diff --git a/lib/src/uip/NyLPC_uip_ethernet.h b/lib/src/uip/NyLPC_uip_ethernet.h
new file mode 100644 (file)
index 0000000..b4000c8
--- /dev/null
@@ -0,0 +1,108 @@
+/*********************************************************************************\r
+ * PROJECT: MiMic\r
+ * --------------------------------------------------------------------------------\r
+ *\r
+ * This file is part of MiMic\r
+ * Copyright (C)2011 Ryo Iizuka\r
+ *\r
+ * MiMic is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU Lesser General Public License as published\r
+ * by the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU Lesser General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+ *\r
+ * For further information please contact.\r
+ *     http://nyatla.jp/\r
+ *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
+ *\r
+ *\r
+ * Parts of this file were leveraged from uIP:\r
+ *\r
+ * Copyright (c) 2001-2003, Adam Dunkels.\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ * 1. Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ * 2. Redistributions in binary form must reproduce the above copyright\r
+ *    notice, this list of conditions and the following disclaimer in the\r
+ *    documentation and/or other materials provided with the distribution.\r
+ * 3. The name of the author may not be used to endorse or promote\r
+ *    products derived from this software without specific prior\r
+ *    written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS\r
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY\r
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE\r
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ */\r
+#ifndef NyLPC_uip_ethernet_h\r
+#define NyLPC_uip_ethernet_h\r
+#include "../include/NyLPC_stdlib.h"\r
+#include "../include/NyLPC_config.h"\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+\r
+#ifndef PACK_STRUCT_END\r
+       #define PACK_STRUCT_END __attribute((packed))\r
+#endif\r
+\r
+/**********************************************************************\r
+ *\r
+ * struct NyLPC_TEthAddr\r
+ *\r
+ **********************************************************************/\r
+\r
+/**\r
+ * この構造体は、48bitのイーサネットアドレスを格納します。\r
+ */\r
+struct NyLPC_TEthAddr\r
+{\r
+  NyLPC_TUInt8 addr[6];\r
+}PACK_STRUCT_END;\r
+\r
+\r
+/**\r
+ * 構造体にEthernetアドレスをセットします。\r
+ * 次のように使います。\r
+ \code\r
+ struct NyLPC_TEthAddr en=NyLPC_TEthAddr_pack(1,2,3,4,5,6);\r
+ \endcode\r
+ */\r
+#define NyLPC_TEthAddr_pack(a1,a2,a3,a4,a5,a6) {{(a1),(a2),(a3),(a4),(a5),(a6)}}\r
+/**\r
+ * 変数にEthernetアドレスをセットします。\r
+ * 次のように使います。\r
+ \code\r
+ struct NyLPC_TEthAddr en;\r
+ NyLPC_TEthAddr_set(&en,1,2,3,4,5,6);\r
+ \endcode\r
+ */\r
+#define NyLPC_TEthAddr_set(v,a1,a2,a3,a4,a5,a6) {v->addr[0]=(a1);v->addr[1]=(a2);v->addr[2]=(a3);v->addr[3]=(a4);v->addr[4]=(a5);v->addr[5]=(a6);}\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+\r
+#endif\r
+\r