umts-correlation.cc

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"umts-correlation.h"
00031 #include"umts-phy.h"
00032 #include"umts-headers.h"
00033 
00034 
00035 #include<iostream>
00036 
00037 static class UmtsCorrelationClass : public TclClass {
00038 public:
00039   UmtsCorrelationClass() : TclClass("Correlation/UMTS") {}
00040   TclObject* create(int, const char*const*) {
00041     return (new Umts_Correlation);
00042   }
00043 } class_Umts_Correlation;
00044 
00045 
00046 
00047 
00048 Umts_Correlation::Umts_Correlation()
00049 {
00050   bind("dl_orthogonality_",&dl_orthogonality_);
00051   //  bind("dl_interbs_",&dl_interbs_);
00052   //  bind("ul_interuser_",&ul_interuser_); 
00053   bind("code_id_", &code_id_);
00054   bind("debug_", &debug_);
00055 }
00056 
00057 
00058 
00059 
00060 double Umts_Correlation::getGain(Packet* p)
00061 {
00062 
00063   hdr_umtsphy* uh = HDR_UMTSPHY(p);
00064 
00065   
00066   if (uh->direction == DIRECTION_DOWNLINK)
00067     {
00068       assert(code_id_>0); // Fails if not initialized
00069 
00070       // if (uh->bs_code_id_ != bs_code_id_)
00071       //  return dl_interbs_;
00072       // else 
00073       if (uh->me_code_id != code_id_)
00074         {
00075           if (debug_) std::cerr << "Umts_Correlation::getGain(p) Packet is NOT for me ("
00076                                 << code_id_ << ")" << std::endl;
00077           return dl_orthogonality_;      
00078         }
00079       else 
00080         {
00081           if (debug_) std::cerr << "Umts_Correlation::getGain(p) Packet is for me ("
00082                                 << code_id_ << ")" << std::endl;
00083           return 1; // Packet is for me 
00084         }
00085     }
00086   else
00087     { // uplink. Interuser interference is handled by MphyUmtsBS::endRx    
00088       return 1;  
00089     }
00090 }
00091 
00092 
00093 
00094 
00095 int Umts_Correlation::command(int argc, const char*const* argv) 
00096 {
00097 
00098 
00099 
00100   return MCorrelation::command(argc, argv); 
00101 }

Generated on Wed Nov 26 15:47:29 2008 for NS-MIRACLE library by  doxygen 1.5.2