Ryo Iizuka / libMiMic

Dependents:   MbedFileServer_1768MiniDK2 RedWireBridge IssueDebug_gcc MiMicRemoteMCU-for-Mbed ... more

Committer:
nyatla
Date:
Thu May 02 14:42:30 2013 +0000
Revision:
27:eb66b517efe6
Parent:
24:6ee4ba298152
Child:
37:fc4b4fd6a649
add bord detection

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_cIPv4Configクラスを定義します。
nyatla 0:142ee8b12fef 29 */
nyatla 0:142ee8b12fef 30 #ifndef NYLPC_CIPV4CONFIG_H_
nyatla 0:142ee8b12fef 31 #define NYLPC_CIPV4CONFIG_H_
nyatla 0:142ee8b12fef 32
nyatla 0:142ee8b12fef 33
nyatla 0:142ee8b12fef 34 #include "NyLPC_uip.h"
nyatla 0:142ee8b12fef 35
nyatla 0:142ee8b12fef 36 /**
nyatla 0:142ee8b12fef 37 * クラス型を定義します。
nyatla 0:142ee8b12fef 38 * NyLPC_cIPv4Configクラスは、IPと、下位のネットワーク層の設定を保持します。
nyatla 0:142ee8b12fef 39 * 関連するオブジェクトが、ネットワーク設定を問い合わせる為に使います。
nyatla 0:142ee8b12fef 40 */
nyatla 0:142ee8b12fef 41 typedef struct NyLPC_TcIPv4Config NyLPC_TcIPv4Config_t;
nyatla 0:142ee8b12fef 42
nyatla 0:142ee8b12fef 43 #ifdef __cplusplus
nyatla 0:142ee8b12fef 44 extern "C" {
nyatla 0:142ee8b12fef 45 #endif /* __cplusplus */
nyatla 0:142ee8b12fef 46 /**********************************************************************
nyatla 0:142ee8b12fef 47 *
nyatla 0:142ee8b12fef 48 * class NyLPC_TcIPv4Config
nyatla 0:142ee8b12fef 49 *
nyatla 0:142ee8b12fef 50 **********************************************************************/
nyatla 0:142ee8b12fef 51
nyatla 0:142ee8b12fef 52
nyatla 0:142ee8b12fef 53
nyatla 0:142ee8b12fef 54
nyatla 0:142ee8b12fef 55 /**
nyatla 0:142ee8b12fef 56 * NyLPC_TcIPv4Configクラスの構造体です。
nyatla 0:142ee8b12fef 57 */
nyatla 0:142ee8b12fef 58 struct NyLPC_TcIPv4Config
nyatla 0:142ee8b12fef 59 {
nyatla 0:142ee8b12fef 60 /** イーサネットアドレスを格納します。*/
nyatla 0:142ee8b12fef 61 struct NyLPC_TEthAddr eth_mac;
nyatla 24:6ee4ba298152 62 /** IPアドレスを格納します。Network orderです。*/
nyatla 0:142ee8b12fef 63 struct NyLPC_TIPv4Addr ip_addr;
nyatla 24:6ee4ba298152 64 /** ネットマスクを格納します。Network orderです。*/
nyatla 0:142ee8b12fef 65 struct NyLPC_TIPv4Addr netmask;
nyatla 24:6ee4ba298152 66 /** デフォルトゲートウェイアドレスを格納します。Network orderです。*/
nyatla 0:142ee8b12fef 67 struct NyLPC_TIPv4Addr dr_addr;
nyatla 0:142ee8b12fef 68 /** デフォルトMMSサイズです。送信パケットのMSS値、受信パケットのデフォルトMSS値として使います。*/
nyatla 0:142ee8b12fef 69 NyLPC_TUInt16 default_mss;
nyatla 0:142ee8b12fef 70 };
nyatla 0:142ee8b12fef 71
nyatla 27:eb66b517efe6 72 #define NyLPC_TcIPv4Config_getEtherMac000120203(v)(((v)->eth_mac.addr[0]<<24)|((v)->eth_mac.addr[1]<<16)|((v)->eth_mac.addr[2]<<8)|((v)->eth_mac.addr[3]<<0))
nyatla 27:eb66b517efe6 73 #define NyLPC_TcIPv4Config_getEtherMac0405xxxx(v) (((v)->eth_mac.addr[4]<<24)|((v)->eth_mac.addr[5]<<16))
nyatla 27:eb66b517efe6 74
nyatla 0:142ee8b12fef 75 /**
nyatla 0:142ee8b12fef 76 * コンストラクタです。
nyatla 0:142ee8b12fef 77 * イーサネット用にコンフィギュレーションを初期化します。
nyatla 0:142ee8b12fef 78 * @param i_inst
nyatla 0:142ee8b12fef 79 * 初期化するインスタンスです。
nyatla 0:142ee8b12fef 80 * @param i_ether_frame_len
nyatla 0:142ee8b12fef 81 * イーサネットフレームのサイズ。この数値から、MSSのデフォルト値を計算します。
nyatla 0:142ee8b12fef 82 */
nyatla 0:142ee8b12fef 83 void NyLPC_cIPv4Config_initialzeForEthernet(NyLPC_TcIPv4Config_t* i_inst,const struct NyLPC_TEthAddr* i_ether_addr,NyLPC_TUInt16 i_ether_frame_len);
nyatla 0:142ee8b12fef 84
nyatla 13:a71705c5e6fd 85
nyatla 0:142ee8b12fef 86 /**
nyatla 0:142ee8b12fef 87 * デストラクタです。インスタンスを破棄して、確保している動的リソースを元に戻します。
nyatla 0:142ee8b12fef 88 * @param i_inst
nyatla 0:142ee8b12fef 89 * 破棄するインスタンスです。
nyatla 0:142ee8b12fef 90 * initializeに成功したインスタンスだけが指定できます。
nyatla 0:142ee8b12fef 91 */
nyatla 0:142ee8b12fef 92 #define NyLPC_cIPv4Config_finalize(i_inst)
nyatla 0:142ee8b12fef 93
nyatla 0:142ee8b12fef 94 /**
nyatla 0:142ee8b12fef 95 * この関数は、IPのデフォルトゲートウェイを設定します。dr_addrの値を更新します。
nyatla 0:142ee8b12fef 96 * @param i_inst
nyatla 0:142ee8b12fef 97 * 操作するインスタンスです。
nyatla 0:142ee8b12fef 98 * @param i_dr_addr
nyatla 0:142ee8b12fef 99 * 設定するIPアドレスを格納したアドレスです。
nyatla 0:142ee8b12fef 100 */
nyatla 0:142ee8b12fef 101 void NyLPC_cIPv4Config_setDefaultRoute(NyLPC_TcIPv4Config_t* i_inst,const struct NyLPC_TIPv4Addr* i_dr_addr);
nyatla 0:142ee8b12fef 102
nyatla 0:142ee8b12fef 103 /**
nyatla 0:142ee8b12fef 104 * この関数は、ローカルIPアドレスとネットマスクを設定します。
nyatla 0:142ee8b12fef 105 * @param i_inst
nyatla 0:142ee8b12fef 106 * 操作するインスタンスです。
nyatla 0:142ee8b12fef 107 * @param i_ipaddr
nyatla 0:142ee8b12fef 108 * 設定するIPアドレスを格納したアドレスです。
nyatla 0:142ee8b12fef 109 * @param i_netmask
nyatla 0:142ee8b12fef 110 * 設定するネットマスクを格納したアドレスです。
nyatla 0:142ee8b12fef 111 */
nyatla 0:142ee8b12fef 112 void NyLPC_cIPv4Config_setIp(NyLPC_TcIPv4Config_t* i_inst,const struct NyLPC_TIPv4Addr* i_ipaddr,const struct NyLPC_TIPv4Addr* i_netmask);
nyatla 0:142ee8b12fef 113
nyatla 0:142ee8b12fef 114 /**
nyatla 0:142ee8b12fef 115 * この関数は、i_target_ipが、現在のIPアドレスに対するローカルアドレスであるかを返します。
nyatla 0:142ee8b12fef 116 * @param i_inst
nyatla 0:142ee8b12fef 117 * 操作するインスタンスです。
nyatla 0:142ee8b12fef 118 * @param i_target_ip
nyatla 0:142ee8b12fef 119 * 確認するIPアドレスです。
nyatla 0:142ee8b12fef 120 * @return
nyatla 0:142ee8b12fef 121 * i_target_ipがローカルIPアドレスなら、TRUEを返します。
nyatla 0:142ee8b12fef 122 */
nyatla 0:142ee8b12fef 123 NyLPC_TBool NyLPC_cIPv4Config_isLocalIP(const NyLPC_TcIPv4Config_t* i_inst,const struct NyLPC_TIPv4Addr* i_target_ip);
nyatla 0:142ee8b12fef 124
nyatla 0:142ee8b12fef 125 #ifdef __cplusplus
nyatla 0:142ee8b12fef 126 }
nyatla 0:142ee8b12fef 127 #endif /* __cplusplus */
nyatla 0:142ee8b12fef 128
nyatla 0:142ee8b12fef 129 #endif