--- /dev/null
+/*********************************************************************************\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
\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
{\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
{\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
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
#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
\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
*\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
}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
--- /dev/null
+/*********************************************************************************\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
--- /dev/null
+/*********************************************************************************\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