00001 /* 00002 * Copyright (c) 2007 Regents of the SIGNET lab, University of Padova. 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions 00007 * are met: 00008 * 1. Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * 2. Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * 3. Neither the name of the University of Padova (SIGNET lab) nor the 00014 * names of its contributors may be used to endorse or promote products 00015 * derived from this software without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00018 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 00019 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00020 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 00021 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00022 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00023 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 00024 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 00025 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 00026 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 00027 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00028 */ 00029 00030 #include<math.h> 00031 00032 #include<packet.h> 00033 #include<node-core.h> 00034 00035 00036 #include"phy-tracer.h" 00037 #include"wirelessphy-module.h" 00038 00039 WirelessPhyTracer::WirelessPhyTracer() : Tracer(1) {} 00040 00041 void WirelessPhyTracer::format(Packet *p, SAP *sap) 00042 { 00043 00044 hdr_cmn* ch = hdr_cmn::access(p); 00045 00046 hdr_MrclWrlPhy* ph = HDR_MRCLWRLPHY(p); 00047 00048 if (ph->sourcePos_ && ph->destPos_) 00049 { 00050 double dX = ph->sourcePos_->getX() - ph->destPos_->getX(); 00051 double dY = ph->sourcePos_->getY() - ph->destPos_->getY(); 00052 double dist = sqrt(dX*dX + dY*dY); 00053 00054 writeTrace(sap, " -PHY- TX:%4.1fdBm RX:%4.1fdBm d:%4.1fm ", 00055 p->txinfo_.getTxPr() > 0 ? WtodBm(p->txinfo_.getTxPr()) : 999, 00056 p->txinfo_.RxPr > 0 ? WtodBm(p->txinfo_.RxPr) : 999, 00057 dist 00058 ); 00059 } 00060 00061 } 00062 00063 00064 extern "C" int Phytracer_Init() 00065 { 00066 SAP::addTracer(new WirelessPhyTracer); 00067 return 0; 00068 } 00069 extern "C" int Cygphytracer_Init() 00070 { 00071 Phytracer_Init(); 00072 } 00073 00074