gensig.cpp
上传用户:jtjnyq9001
上传日期:2014-11-21
资源大小:3974k
文件大小:5k
源码类别:

3G开发

开发平台:

Visual C++

  1. //
  2. //  File = gensig.cpp
  3. //
  4. #include <stdlib.h>
  5. #include <fstream>
  6. #include <string.h>
  7. #include "gensig.h"
  8. #include "sigplot.h"
  9. #ifdef _DEBUG
  10.   extern ofstream *DebugFile;
  11. #endif
  12. extern SignalPlotter SigPlot;
  13. extern int PassNumber;
  14. //======================================================
  15. GenericSignal::GenericSignal( char* name, 
  16.                               PracSimModel* model )
  17. {
  18.    Owning_Model = model;
  19.    Name = new char[strlen(name)+2];
  20.    strcpy(Name, name);
  21.    Connected_Sigs = new std::vector<GenericSignal*>;
  22.    Root_Id = this;
  23.    Sig_Is_Root = true;
  24.    Plot_Setup_Complete = false;
  25.    Plotting_Enabled = false;
  26.    Time_At_Beg = 0.0;
  27.    Alloc_Mem_Depth = 0;
  28.    Cumul_Samp_Cnt = 0;
  29. }
  30. //======================================================
  31. GenericSignal::~GenericSignal( void )
  32. {
  33. };
  34. //======================================================
  35. char* GenericSignal::GetName()
  36. {
  37.    return(Name);
  38. }
  39. //======================================================
  40. int GenericSignal::GetBlockSize()
  41. {
  42.    if(Sig_Is_Root)
  43.       return(Block_Size);
  44.    else
  45.       return(Root_Id->GetBlockSize());
  46. }
  47. //======================================================
  48. int GenericSignal::GetValidBlockSize()
  49. {
  50.    if(Sig_Is_Root)
  51.       return(Valid_Block_Size);
  52.    else
  53.       return(Root_Id->GetValidBlockSize());
  54. }
  55. //======================================================
  56. GenericSignal* GenericSignal::GetId()
  57. {
  58. return(Root_Id);
  59. }
  60. //======================================================
  61. void GenericSignal::SetBlockSize(int block_size)
  62. {
  63.    if(Sig_Is_Root){
  64.       Block_Size = block_size;
  65.       Buf_Len = block_size;
  66.    }
  67.    else{
  68.       Root_Id->SetBlockSize(block_size);
  69.    }
  70.    return;
  71. }
  72. //======================================================
  73. void GenericSignal::SetValidBlockSize(int block_size)
  74. {
  75.    if(Sig_Is_Root){
  76.       Valid_Block_Size = block_size;
  77.    }
  78.    else{
  79.       Root_Id->SetValidBlockSize(block_size);
  80.    }
  81.    return;
  82. }
  83. //======================================================
  84. double GenericSignal::GetSampIntvl()
  85. {
  86.    if(Sig_Is_Root)
  87.       return(Samp_Intvl);
  88.    else
  89.       return(Root_Id->GetSampIntvl());
  90. }
  91. //======================================================
  92. void GenericSignal::SetSampIntvl(double samp_intvl)
  93. {
  94.    if(Sig_Is_Root){
  95.       Samp_Intvl = samp_intvl;
  96.    }
  97.    else{
  98.       Root_Id->SetSampIntvl(samp_intvl);
  99.    }
  100. }
  101. //======================================================
  102. void GenericSignal::SetAllocMemDepth(int req_mem_depth)
  103. {
  104.    if(req_mem_depth > Alloc_Mem_Depth){
  105.       if(Sig_Is_Root){
  106. #ifdef _DEBUG
  107.          *DebugFile << "Alloc_Mem_Depth increased from "
  108.             << Alloc_Mem_Depth << " to "
  109.             << req_mem_depth << " for signal "
  110.             << Name << endl;
  111. #endif
  112.          Alloc_Mem_Depth = req_mem_depth;
  113.       }
  114.       else{
  115.          Alloc_Mem_Depth = req_mem_depth;
  116.          Root_Id->SetAllocMemDepth( req_mem_depth);
  117.       }
  118.    }
  119. }
  120. //======================================================
  121. void GenericSignal::SetupPlotFile(GenericSignal* sig_id,
  122.                                   double start_time,
  123.                                   double stop_time,
  124.                                   int plot_decim_rate,
  125.                                   bool count_vice_time,
  126.                                   bool header_desired)
  127. {
  128.    char *file_name;
  129.    file_name = strcat(
  130.       strcpy(new char[strlen(sig_id->GetName())+5],
  131.       sig_id->GetName()),".txt");
  132.    Plotter_File = new ofstream(file_name, ios::out);
  133.    Plotting_Enabled = true;
  134.    Plot_Start_Time = start_time;
  135.    Plot_Stop_Time = stop_time;
  136.    Plot_Decim_Rate = plot_decim_rate;
  137.    Count_Vice_Time = count_vice_time;
  138.    *DebugFile << "for signal " << Name 
  139.               << " Plot_Decim_Rate = " 
  140.               << Plot_Decim_Rate << endl;
  141.    if(header_desired){
  142.       (*Plotter_File) << "// Desired Signal: "
  143.                       << sig_id->GetName() 
  144.                       << endl;
  145.    }
  146.    delete []file_name;
  147.    return;
  148. }
  149. //======================================================
  150. void GenericSignal::SetEnclave(int enclave_num)
  151. {
  152.    Enclave_Num = enclave_num;
  153. }
  154. //======================================================
  155. int GenericSignal::GetEnclave(void)
  156. {
  157.    return(Enclave_Num);
  158. }
  159. //======================================================
  160. double GenericSignal::GetTimeAtBeg(void)
  161. {
  162.    return(Time_At_Beg);
  163. }
  164. //======================================================
  165. void GenericSignal::SetTimeAtBeg(double time_at_beg)
  166. {
  167.    Time_At_Beg = time_at_beg;
  168.    return;
  169. }