Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/19:10/10
2024/05/18:20/24

2024/03/20より398/1410
人気モジュール
No.1: フォーラム 9
No.2: QualNet概要 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット10

No.1:どっかの巡回ロボット9
No.2:Baidu巡回ロボット1

日曜日からの合計
メイン
   Link (MAC) Layer Protocol Implementation & Model Development
     RTS/CTSフレームの判別
投稿するにはまず登録を

題名 投稿者 日時
   RTS/CTSフレームの判別 U1 2007/12/20 14:32
   » Re: RTS/CTSフレームの判別 mast 2007/12/20 19:14
       Re: RTS/CTSフレームの判別 U1 2007/12/20 21:53
         Re: RTS/CTSフレームの判別 mast 2007/12/21 11:07
         Re: RTS/CTSフレームの判別 mast 2007/12/21 11:30
           Re: RTS/CTSフレームの判別 U1 2007/12/21 11:44
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
mast
投稿日時: 2007/12/20 19:14
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: RTS/CTSフレームの判別
対象のMACプロトコルはMAC_DOT11でなくMAC_802_11ですか?
であれば、phy_802_11.cppに
#include "mac_802_11.h"

を追加して、さらにそのファイル内のPhy802_11SignalEndFromChannel()関数の以下の箇所で
01430         if (!receiveErrorOccurred) {
01431             newMsg = MESSAGE_Duplicate(node, propRxInfo->txMsg);
01432 
01433             MESSAGE_RemoveHeader(
01434                 node, newMsg, sizeof(Phy802_11PlcpHeader), TRACE_802_11);
01435 
01436             MESSAGE_SetInstanceId(newMsg, (short) phyIndex);
01437             MAC_ReceivePacketFromPhy(
01438                 node,
01439                 node->phyData[phyIndex]->macInterfaceIndex,
01440                 newMsg);
01441 
01442             phy802_11->stats.totalRxSignalsToMac++;
01443         }
01444         else {
01445             Phy802_11ReportStatusToMac(
01446                 node,
01447                 phyIndex,
01448                 phy802_11->mode);
01449 
01450             phy802_11->stats.totalSignalsWithErrors++;
01451         }//if//

以下のようなことをやれば出来るんじゃないかと思います。
01430         if (!receiveErrorOccurred) {
01431             newMsg = MESSAGE_Duplicate(node, propRxInfo->txMsg);
01432 
01433             MESSAGE_RemoveHeader(
01434                 node, newMsg, sizeof(Phy802_11PlcpHeader), TRACE_802_11);
01435 
01436             MESSAGE_SetInstanceId(newMsg, (short) phyIndex);
*****
*****             int macInterfaceIndex = node->phyData[phyIndex]->macInterfaceIndex;
*****
*****             switch (node->macData[macInterfaceIndex]->macProtocol)
*****             {
*****                 case MAC_PROTOCOL_802_11:
*****                 {
*****                     MacData802_11* M802 = (MacData802_11*)node->macData[macInterfaceIndex]->macVar;
*****                     M802_11ShortControlFrame* hdr = (M802_11ShortControlFrame*) MESSAGE_ReturnPacket(newMsg);
*****
*****                     if (M802->selfAddr == hdr->destAddr) {
*****                         switch (hdr->frameType) {
*****                             case M802_11_RTS: {
*****                                 //
*****                                 // Write your own code
*****                                 //
*****                                 break;
*****                             }
*****                             case M802_11_CTS: {
*****                                 //
*****                                 // Write your own code
*****                                 //
*****                                 break;
*****                             }
*****                             default: {
*****                                 //
*****                                 // Write your own code
*****                                 //
*****                                 break;
*****                             }
*****                         }//switch//
*****                     }
*****                 }
*****                 default:
*****                 {
*****                     break;
*****                 }
*****             }
01437             MAC_ReceivePacketFromPhy(
01438                 node,
01439                 node->phyData[phyIndex]->macInterfaceIndex,
01440                 newMsg);
01441 
01442             phy802_11->stats.totalRxSignalsToMac++;
01443         }
01444         else {
01445             Phy802_11ReportStatusToMac(
01446                 node,
01447                 phyIndex,
01448                 phy802_11->mode);
01449 
01450             phy802_11->stats.totalSignalsWithErrors++;
01451         }//if//


対象のMACプロトコルがMAC_DOT11の場合も、まぁ同じようにやればできるんじゃないかと思います。。
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT