μNet3/Compact、μNet3/Standard
質問:
Ethernetのリンク状態(リンクダウン、リンクアップ・通信速度)をアプリから参照したい
回答:
Ethernetドライバが認識しているリンク状態は net_dev_sts() にパラメータ「REF_ETH_LINK_STS」を渡すことで取得が可能です。(※)
取得した値をマスク値「PHY_STS_MSK」でANDします。その値が「PHY_STS_LINK_DOWN 」でなければリンクアップ状態です。
※Ethernetドライバの参照関数(eth_ref)がパラメータ「REF_ETH_LINK_STS」に対応している必要があります。
コード: 全て選択
/*【サンプルコード】*/
ER ercd;
UH val;
ercd = net_dev_sts(1, REF_ETH_LINK_STS, (VP)&val); /* 1 はデバイス番号 */
if (E_OK == ercd) {
if (PHY_STS_LINK_DOWN != (val & PHY_STS_MSK)) {
/* リンクアップ状態 */
}
else {
/* リンクダウン状態 */
}
}
else {
/* エラー(ドライバ初期化前など、ステータス取得可能状態ではない。) */
}
--
/*【REF_ETH_LINK_STSパラメータで取得可能な値】*/
#define PHY_STS_LINK_DOWN 0x0000U /* PHY media link down */
#define PHY_STS_10HD 0x0100U /* PHY 10M/Half-Duplex */
#define PHY_STS_10FD 0x0200U /* PHY 10M/Full-Duplex */
#define PHY_STS_100HD 0x0400U /* PHY 100M/Half-Duplex */
#define PHY_STS_100FD 0x0800U /* PHY 100M/Full-Duplex */
#define PHY_STS_1000FD 0x1000U /* PHY 1000M/Full-Duplex */
#define PHY_STS_MSK 0xff00U /* PHY mask */