Ignore:
Timestamp:
Aug 13, 2008 1:56:24 PM (16 years ago)
Author:
bennylp
Message:

Ticket #594: Improvements in PocketPJ Windows Mobile application: added TCP option, VAD option, option to select codec priority order, and auto-answer option

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/pocketpj/SettingsDlg.cpp

    r2201 r2211  
    55#include "PocketPJ.h" 
    66#include "SettingsDlg.h" 
     7#include <pjsua-lib/pjsua.h> 
    78#include <atlbase.h> 
    89 
     
    2728#define REG_ENABLE_EC   _T("EnableEC") 
    2829#define REG_EC_TAIL     _T("ECTail") 
     30#define REG_ENABLE_VAD  _T("EnableVAD") 
     31#define REG_ENABLE_TCP  _T("EnableTCP") 
     32#define REG_CODEC_CNT   _T("CodecCnt") 
     33#define REG_CODEC_X     _T("Codec%u") 
     34#define REG_AUTO_ANSWER _T("AutoAnswer") 
    2935 
    3036 
     
    3339CPocketPJSettings::CPocketPJSettings() 
    3440: m_UseStun(FALSE), m_UseIce(FALSE), m_UseSrtp(FALSE), m_UsePublish(FALSE), 
    35   m_EchoSuppress(TRUE), m_EcTail(200) 
    36 { 
     41  m_EchoSuppress(TRUE), m_EcTail(200), m_TCP(FALSE), m_VAD(FALSE), 
     42  m_AutoAnswer(FALSE) 
     43{ 
     44    /* Init codec list */ 
     45#if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC 
     46    m_Codecs.Add(_T("GSM")); 
     47#endif 
     48#if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC 
     49    m_Codecs.Add(_T("PCMU")); 
     50    m_Codecs.Add(_T("PCMA")); 
     51#endif 
     52#if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC 
     53    m_Codecs.Add(_T("Speex")); 
     54#endif 
    3755} 
    3856 
     
    7795    if (key.QueryValue(dwordVal, REG_USE_STUN) == ERROR_SUCCESS) { 
    7896        m_UseStun = dwordVal != 0; 
    79     } else { 
    80         m_UseStun = 0; 
    8197    } 
    8298 
    8399    if (key.QueryValue(dwordVal, REG_USE_ICE) == ERROR_SUCCESS) { 
    84100        m_UseIce = dwordVal != 0; 
    85     } else { 
    86         m_UseIce = 0; 
    87101    } 
    88102 
     
    90104    if (key.QueryValue(dwordVal, REG_USE_SRTP) == ERROR_SUCCESS) { 
    91105        m_UseSrtp = dwordVal != 0; 
    92     } else { 
    93         m_UseSrtp = 0; 
    94106    } 
    95107 
     
    103115    if (key.QueryValue(dwordVal, REG_ENABLE_EC) == ERROR_SUCCESS) { 
    104116        m_EchoSuppress = dwordVal != 0; 
    105     } else { 
    106         m_EchoSuppress = 1; 
    107117    } 
    108118 
     
    110120    if (key.QueryValue(dwordVal, REG_EC_TAIL) == ERROR_SUCCESS) { 
    111121        m_EcTail = dwordVal; 
    112     } else { 
    113         m_EcTail = 200; 
     122    } 
     123 
     124    cbData = sizeof(dwordVal); 
     125    if (key.QueryValue(dwordVal, REG_ENABLE_TCP) == ERROR_SUCCESS) { 
     126        m_TCP = dwordVal != 0; 
     127    } 
     128 
     129    cbData = sizeof(dwordVal); 
     130    if (key.QueryValue(dwordVal, REG_ENABLE_VAD) == ERROR_SUCCESS) { 
     131        m_VAD = dwordVal != 0; 
     132    } 
     133 
     134    cbData = sizeof(dwordVal); 
     135    if (key.QueryValue(dwordVal, REG_AUTO_ANSWER) == ERROR_SUCCESS) { 
     136        m_AutoAnswer = dwordVal != 0; 
    114137    } 
    115138 
     
    130153        if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) { 
    131154            m_BuddyList.Add(textVal); 
     155        } 
     156    } 
     157 
     158    DWORD codecCount = 0; 
     159    cbData = sizeof(dwordVal); 
     160    if (key.QueryValue(codecCount, REG_CODEC_CNT) == ERROR_SUCCESS) { 
     161 
     162        m_Codecs.RemoveAll(); 
     163 
     164        for (i=0; i<codecCount; ++i) { 
     165            CString entry; 
     166            entry.Format(REG_CODEC_X, i); 
     167 
     168            cbData = sizeof(textVal); 
     169            if (key.QueryValue(textVal, entry, &cbData) == ERROR_SUCCESS) { 
     170                m_Codecs.Add(textVal); 
     171            } 
    132172        } 
    133173    } 
     
    158198    key.SetValue(m_EcTail, REG_EC_TAIL); 
    159199 
     200    key.SetValue(m_TCP, REG_ENABLE_TCP); 
     201    key.SetValue(m_VAD, REG_ENABLE_VAD); 
     202    key.SetValue(m_AutoAnswer, REG_AUTO_ANSWER); 
     203 
    160204    key.SetValue(m_BuddyList.GetSize(), REG_BUDDY_CNT); 
    161205 
     
    165209        entry.Format(REG_BUDDY_X, i); 
    166210        key.SetValue(m_BuddyList.GetAt(i), entry); 
     211    } 
     212 
     213    DWORD N = m_Codecs.GetSize(); 
     214    key.SetValue(N, REG_CODEC_CNT); 
     215    for (i=0; i<m_Codecs.GetSize(); ++i) { 
     216        CString entry; 
     217        entry.Format(REG_CODEC_X, i); 
     218        key.SetValue(m_Codecs.GetAt(i), entry); 
    167219    } 
    168220 
     
    190242        m_EchoSuppress = FALSE; 
    191243        m_EcTail = _T(""); 
     244        m_TCP = FALSE; 
     245        m_VAD = FALSE; 
     246        m_AutoAnswer = FALSE; 
    192247        //}}AFX_DATA_INIT 
    193248 
     
    202257        m_Dns       = m_Cfg.m_DNS; 
    203258        m_EchoSuppress = m_Cfg.m_EchoSuppress; 
     259        m_TCP       = m_Cfg.m_TCP; 
     260        m_VAD       = m_Cfg.m_VAD; 
     261        m_AutoAnswer= m_Cfg.m_AutoAnswer; 
    204262 
    205263        CString s; 
    206264        s.Format(_T("%d"), m_Cfg.m_EcTail); 
    207265        m_EcTail    = s; 
     266 
    208267} 
    209268 
     
    213272        CDialog::DoDataExchange(pDX); 
    214273        //{{AFX_DATA_MAP(CSettingsDlg) 
     274        DDX_Control(pDX, IDC_CODECS, m_Codecs); 
    215275        DDX_Text(pDX, IDC_DOMAIN, m_Domain); 
    216276        DDX_Check(pDX, IDC_ICE, m_ICE); 
     
    224284        DDX_Check(pDX, IDC_ECHO_SUPPRESS, m_EchoSuppress); 
    225285        DDX_Text(pDX, IDC_EC_TAIL, m_EcTail); 
     286        DDX_Check(pDX, IDC_TCP, m_TCP); 
     287        DDX_Check(pDX, IDC_VAD, m_VAD); 
     288        DDX_Check(pDX, IDC_AA, m_AutoAnswer); 
    226289        //}}AFX_DATA_MAP 
     290 
     291         
     292        if (m_Codecs.GetCount() == 0) { 
     293            int i; 
     294            for (i=0; i<m_Cfg.m_Codecs.GetSize(); ++i) { 
     295                m_Codecs.AddString(m_Cfg.m_Codecs.GetAt(i)); 
     296            } 
     297            m_Codecs.SetCurSel(0); 
     298        } 
    227299} 
    228300 
     
    232304        ON_BN_CLICKED(IDC_STUN, OnStun) 
    233305        ON_BN_CLICKED(IDC_ECHO_SUPPRESS, OnEchoSuppress) 
     306        ON_CBN_SELCHANGE(IDC_CODECS, OnSelchangeCodecs) 
    234307        //}}AFX_MSG_MAP 
    235308END_MESSAGE_MAP() 
     
    242315    int rc = CDialog::DoModal();         
    243316 
    244     if (rc == IDOK) { 
    245         m_Cfg.m_Domain      = m_Domain; 
    246         m_Cfg.m_UseIce      = m_ICE != 0; 
    247         m_Cfg.m_Password    = m_Passwd; 
    248         m_Cfg.m_UsePublish  = m_PUBLISH != 0; 
    249         m_Cfg.m_UseSrtp     = m_SRTP != 0; 
    250         m_Cfg.m_UseStun     = m_STUN != 0; 
    251         m_Cfg.m_StunSrv     = m_StunSrv; 
    252         m_Cfg.m_User        = m_User; 
    253         m_Cfg.m_DNS         = m_Dns; 
    254         m_Cfg.m_EchoSuppress= m_EchoSuppress != 0; 
    255         m_Cfg.m_EcTail      = _ttoi(m_EcTail); 
    256     } 
    257  
    258317    return rc; 
    259318} 
     
    266325{ 
    267326} 
     327 
     328void CSettingsDlg::OnSelchangeCodecs()  
     329{ 
     330    int cur = m_Codecs.GetCurSel(); 
     331    if (cur < 1) 
     332        return; 
     333 
     334    CString codec; 
     335    DWORD N; 
     336 
     337    m_Codecs.GetLBText(cur, codec); 
     338    N = m_Codecs.GetCount(); 
     339    m_Codecs.DeleteString(cur); 
     340    N = m_Codecs.GetCount(); 
     341    m_Codecs.InsertString(0, codec); 
     342    N = m_Codecs.GetCount(); 
     343    m_Codecs.SetCurSel(0); 
     344} 
     345 
     346 
     347void CSettingsDlg::OnOK()  
     348{ 
     349    UpdateData(TRUE); 
     350 
     351    m_Cfg.m_Domain      = m_Domain; 
     352    m_Cfg.m_UseIce      = m_ICE != 0; 
     353    m_Cfg.m_Password    = m_Passwd; 
     354    m_Cfg.m_UsePublish  = m_PUBLISH != 0; 
     355    m_Cfg.m_UseSrtp     = m_SRTP != 0; 
     356    m_Cfg.m_UseStun     = m_STUN != 0; 
     357    m_Cfg.m_StunSrv     = m_StunSrv; 
     358    m_Cfg.m_User        = m_User; 
     359    m_Cfg.m_DNS         = m_Dns; 
     360    m_Cfg.m_EchoSuppress= m_EchoSuppress != 0; 
     361    m_Cfg.m_EcTail      = _ttoi(m_EcTail); 
     362    m_Cfg.m_TCP         = m_TCP != 0; 
     363    m_Cfg.m_VAD         = m_VAD != 0; 
     364    m_Cfg.m_AutoAnswer  = m_AutoAnswer != 0; 
     365 
     366    unsigned i; 
     367    m_Cfg.m_Codecs.RemoveAll(); 
     368    DWORD N = m_Codecs.GetCount(); 
     369    for (i=0; i<N; ++i) { 
     370        CString codec; 
     371        m_Codecs.GetLBText(i, codec); 
     372        m_Cfg.m_Codecs.Add(codec); 
     373    } 
     374 
     375    CDialog::OnOK(); 
     376} 
Note: See TracChangeset for help on using the changeset viewer.