⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cnfdemoprm.h

📁 Conferencing code using Dialogic hardware
💻 H
📖 第 1 页 / 共 2 页
字号:
      CommonParams(){
		  m_call_control_mode = MEDIA_OPERATIONAL_MODE_1PCC;
		  m_reserve_resource_type = RESERVE_RESOURCE_NONE;	   // HMP mode
	      m_maxlogsize    = 10000;     // lines
          m_log_level     = LOG_APP;   // Application, Warning and Error messages
          m_log_file      = 0;
          str_storestring(&m_log_file, DFLT_LOG_FILE_NAME);

          m_welcome_file  = 0;
          str_storestring(&m_welcome_file,DFLT_WELLCOME_FILE_NAME);

          m_bad_passcode_file  = 0;
          str_storestring(&m_bad_passcode_file,DFLT_BAD_PASSCODE_FILE_NAME);

          m_callater_file  = 0;
          str_storestring(&m_callater_file,DFLT_CALL_LATER_FILE_NAME);

          m_goodbye_file  = 0;
          str_storestring(&m_goodbye_file,DFLT_GOODBYE_FILE_NAME);

      };

      // Destructor
      virtual ~CommonParams(){
	      str_deletestoredstring(&m_goodbye_file); 
	      str_deletestoredstring(&m_callater_file); 
	      str_deletestoredstring(&m_bad_passcode_file); 
	      str_deletestoredstring(&m_welcome_file); 
	      str_deletestoredstring(&m_log_file); 
      };
      
      // Dump internal variavles
      void Dump(CGenLog *pLog){
           const char *name;
           static const char *obj_name = "CommonParams";
           name = get_call_control_mode_name(m_call_control_mode);
           pLog->Log(LOG_API, obj_name, 
                      "         m_call_control_mode     = %d %s",  m_call_control_mode, name );

           pLog->Log(LOG_API, obj_name, 
                      "         m_reserve_resource_type = %d %s", m_reserve_resource_type, get_reserve_resource_name(m_reserve_resource_type) );

           pLog->Log(LOG_API, obj_name, 
                      "         m_maxlogsize   = %d",  m_maxlogsize );


           name = log_get_msgtype_name(m_log_level);
           pLog->Log(LOG_API, obj_name, 
                      "         m_log_level         = %d %s", m_log_level, name);

           pLog->Log(LOG_API, obj_name, 
                      "         m_log_file          = %s",    m_log_file);

           pLog->Log(LOG_API, obj_name, 
                      "         m_welcome_file      = %s", m_welcome_file);

           pLog->Log(LOG_API, obj_name, 
                      "         m_bad_passcode_file = %s", m_bad_passcode_file);


           pLog->Log(LOG_API, obj_name, 
                      "         m_callater_file     = %s", m_callater_file);

           pLog->Log(LOG_API, obj_name, 
                      "         m_goodbye_file      = %s", m_goodbye_file);

        return;                 
      };
      
      inline bool  Is3PCCMode(){
		 return MEDIA_OPERATIONAL_MODE_3PCC == m_call_control_mode;
	  }

	  inline RESERVE_RESOURCE_TYPE GetReserveResourceType() {
		  return m_reserve_resource_type;
	  }


	  enumIPCCLIBMediaMode m_call_control_mode;	// MEDIA_OPERATIONAL_MODE_1PCC or 3PCC
	  RESERVE_RESOURCE_TYPE m_reserve_resource_type;
	  
	  unsigned int m_maxlogsize;    // lines
      MSG_TYPE m_log_level;         // verbosity level
      char *   m_log_file;          // log file name
      char *   m_welcome_file;      // wecome message
      char *   m_bad_passcode_file; // bad pass code message
      char *   m_callater_file;     // call later message
      char *   m_goodbye_file;      // goodbye 

}; // class CommonParams



//
//  DTI parameters
//
typedef class DtiParams * PDtiParams;
class DtiParams {
  public:
      //--------
      DtiParams(){
	      m_number_of_channels = 0;     // lines
          m_accept_call   = false;      // do accept calls?
          m_private_log   = LOG_NONE;   // No private log
      };

      // Destructor
      virtual ~DtiParams(){
      };
      
      // Dump internal variavles
      void Dump(CGenLog *pLog){
           const char *name;
           static const char *obj_name = "DtiParams";
           pLog->Log(LOG_API, obj_name, 
                      "         m_number_of_channels = %d",  m_number_of_channels );

           pLog->Log(LOG_API, obj_name, 
                      "         m_accept_call        = %s",  YESNO(m_accept_call));

           name = log_get_msgtype_name(m_private_log);
           pLog->Log(LOG_API, obj_name, 
                      "         m_log_level          = %d %s", m_private_log, name);
        return;                 
      };
      
	  unsigned int m_number_of_channels;
      bool m_accept_call;
      MSG_TYPE m_private_log;         // verbosity level
}; // class DtiParams

//
//  BRD (cnfB1) parameters
//
typedef class BrdParams * PBrdParams;
class BrdParams {
  public:
      //--------
      BrdParams(){
          m_log_level         = LOG_APP;    // Application, Warning and Error messages
	      m_brd_active_talker = false;     
          m_brd_at_interval   = 10;
          m_brd_dtmf_clamping = false;
      };

      // Destructor
      virtual ~BrdParams(){
      };
      
      // Dump internal variavles
      void Dump(CGenLog *pLog){
           const char *name;
           static const char *obj_name = "CBrdParams";
           name = log_get_msgtype_name(m_log_level);
           pLog->Log(LOG_API, obj_name, 
                      "         m_log_level          = %d %s", m_log_level, name);

           pLog->Log(LOG_API, obj_name, 
                      "         m_brd_active_talker  = %d %s",
                      m_brd_active_talker, YESNO(m_brd_active_talker));
           
           pLog->Log(LOG_API, obj_name, 
                      "         m_brd_at_interval    = %d ",
                      m_brd_at_interval);

           pLog->Log(LOG_API, obj_name, 
                      "         m_brd_dtmf_clamping  = %d %s",
                      m_brd_dtmf_clamping, YESNO(m_brd_dtmf_clamping));

        return;                 
      };
       
      MSG_TYPE m_log_level;
      bool m_brd_active_talker;
      int m_brd_at_interval;
      bool m_brd_dtmf_clamping;
}; // class BrdParams



//
// Specific Configuration file reader 
// Based on CnfParams class and customized for cnf_demo configuration file
// 
typedef class CnfDemoPrm * PCnfDemoPrm;

class CnfDemoPrm : public ConfigFile  {
public:
	CnfDemoPrm(CGenLog *pLog);
	virtual ~CnfDemoPrm();


    // Load configuration file and scan & read parameters 
    bool ReadConfigFile(const char *filename);

//    Adjust parameters if (all available) is specified
    bool  AdjustNumberOfDevices(size_t dx_devices,
                                size_t ipt_devices,
                                size_t dti_devices);
public:
    size_t GetRequestedNumberOfDxDevices(){
        size_t total = GetRequestedNumberOfDtiDevices() +
                       GetRequestedNumberOfIptDevices() +
                       m_ConferenceContainer.GetNumberOfDxDevices();
        
           return total;
    }

	inline enumIPCCLIBMediaMode GetPCCMode(){
		   return m_CommonParams.m_call_control_mode;
	}
    inline bool  Is3PCCMode(){
		return m_CommonParams.Is3PCCMode();
	}

    inline RESERVE_RESOURCE_TYPE GetReserveResourceType() {
		  return m_CommonParams.GetReserveResourceType();
	}


    // Global parameters
        // -------------------------
        // section [Common]
private:
       CommonParams m_CommonParams;
public:
       PCommonParams GetCommonPrm (){
           return &m_CommonParams;
       }

       // --------------------------
       // section [Board Parameters] 
private:
       BrdParams m_BrdParams;
public:
       PBrdParams GetBrdPrm(){
           return &m_BrdParams;
       };

        // --------------------------
        // section [Dti] 
private:
       DtiParams m_DtiParams;
public:
       PDtiParams GetDtiPrm (){
           return &m_DtiParams;
       };

       unsigned int GetRequestedNumberOfDtiDevices(){
           if ( MAXUINT == m_DtiParams.m_number_of_channels ){
                return 0;
           }
           return m_DtiParams.m_number_of_channels;
       };

private:
    // -------------------------
    // Sections [conference xxx]
       bool StoreConference();

       CnfPrmContainer m_ConferenceContainer; 

       CnfParams m_cnf_params;  // Scratch, Currently processed values

public:
       PCnfPrmContainer GetConferencePrmContainer(){
            return &m_ConferenceContainer;    
       };

       size_t GetRequestedNumberOfConferences(){
            return m_ConferenceContainer.GetNumberOfConferences();
       }
private:
    // -------------------------
    // Sections [Ipt]
     bool StoreIpt();
     list<PIptParams> m_IptContainer;
     CIptParams m_ipt_params;  // Scratch, Currently processed values

     // How many ipt blocks are defined
     int GetNumberOfIptParams(){
         return m_IptContainer.size();
     }

public:
     // retrieve ipt block by sequential index
     bool GetIptPrm (unsigned int inx, PIptParams *ppIptParams){
         if (inx < m_IptContainer.size() ){
             list<PIptParams>::iterator pos = m_IptContainer.begin();
             unsigned int tmp = 0;
             while(tmp++ < inx){
                   ++pos;
             }
             *ppIptParams = *pos;
             return true;
         }
         return false;
     }

     unsigned int GetRequestedNumberOfIptDevices(const char *protocol = 0) {
         unsigned int total = 0;
         list<PIptParams>::iterator pos = m_IptContainer.begin();
         while(pos != m_IptContainer.end()){
             PIptParams pPrm = *pos;
             if (    ( protocol == 0)
                  || ( COMPARE_EQUAL == str_compare(protocol, pPrm->ip_protocol) ) 
                ){
                if (pPrm->m_number_of_channels!= MAXUINT){
                    total += pPrm->m_number_of_channels;
                }
             }
             ++pos;
         } 
         return total;
     }


///////////////////////////////////////////////
    // dump (LOG) all parameters
public:
    void Dump();

private:

    // Log errors when reading file
        // Log invalid value message
        void LogInvalidValue(const char *token, const char *value);
        // This token exist, but there is no case to handle (app error)
        void LogUnmatchedParameter(const char *token, int line);
        // This token exist, but there is no case to handle (app error)
        void LogUndefinedParameter(const char *token);

    // Read section [Common]
    bool ReadCommonValues(const char * token);
    // Read section [Board Parameters]
    bool ReadBoardValues(const char * token);
    // Read section [dti]
    bool ReadDtiValues(const char * token);
    // Read section [ipt]
    bool ReadIptValues(const char * token);

    // Read Conference
    bool ReadConference(const char * token);


}; // class CnfDemoPrm

#endif // !defined(AFX_CNFDEMOPRM_H__E5E3A839_DBD7_4192_A383_AE92E822028B__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -