00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <cstdlib>
00021 #include <pthread.h>
00022
00023 #include "Utils.hpp"
00024 #include "GeneratorTrace.hpp"
00025 #include "C_LogProtocolStatControl.hpp"
00026
00027
00028 C_LogProtocolStatControl::C_LogProtocolStatControl(C_ProtocolStatsFrame *P_stats):C_TaskControl(){
00029 m_sem = NULL ;
00030 m_stat = P_stats ;
00031 }
00032
00033 C_LogProtocolStatControl::~C_LogProtocolStatControl(){
00034 DELETE_VAR (m_sem) ;
00035 m_stat = NULL ;
00036 }
00037
00038 void C_LogProtocolStatControl::init(unsigned long P_period, string_t& P_fileName) {
00039 GEN_DEBUG(0, "C_LogProtocolStatControl::init() start");
00040
00041 m_stat -> set_file_name ((char*)P_fileName.c_str());
00042 NEW_VAR(m_sem, C_SemaphoreTimed(P_period));
00043 m_sem -> P();
00044 C_TaskControl::init() ;
00045 GEN_DEBUG(0, "C_LogProtocolStatControl::init() end");
00046 }
00047
00048
00049 T_GeneratorError C_LogProtocolStatControl::InitProcedure() {
00050 GEN_DEBUG(0, "C_LogProtocolStatControl::doInit() start");
00051 m_stat->init();
00052 m_stat->make_first_log();
00053 GEN_DEBUG(0, "C_LogProtocolStatControl::doInit() end");
00054 return (E_GEN_NO_ERROR);
00055 }
00056
00057 T_GeneratorError C_LogProtocolStatControl::TaskProcedure() {
00058 GEN_DEBUG(0, "C_LogProtocolStatControl::doTask() start");
00059 m_stat->make_log ();
00060
00061 sched_yield () ;
00062 m_sem -> P() ;
00063 GEN_DEBUG(0, "C_LogProtocolStatControl::doTask() end");
00064 return (E_GEN_NO_ERROR);
00065 }
00066
00067 T_GeneratorError C_LogProtocolStatControl::EndProcedure() {
00068 m_stat->make_log ();
00069 return (E_GEN_NO_ERROR);
00070 }
00071
00072 T_GeneratorError C_LogProtocolStatControl::StoppingProcedure() {
00073 M_state = C_TaskControl::E_STATE_STOPPED ;
00074 return (E_GEN_NO_ERROR);
00075 }
00076
00077 T_GeneratorError C_LogProtocolStatControl::ForcedStoppingProcedure() {
00078 return (E_GEN_NO_ERROR);
00079 }
00080
00081 void C_LogProtocolStatControl::reset_cumul_counters() {
00082 m_stat->reset_cumul_counters();
00083 }
00084
00085
00086
00087
00088