Changeset 1248 for pjproject


Ignore:
Timestamp:
May 3, 2007 7:56:21 PM (18 years ago)
Author:
bennylp
Message:

Misc Symbian fixes, looks good

Location:
pjproject/trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/build.symbian/pjmedia.mmp

    r1242 r1248  
    4747SOURCE          splitcomb.c 
    4848SOURCE          stream.c 
     49SOURCE          tonegen.c 
    4950SOURCE          transport_ice.c 
    5051SOURCE          transport_udp.c 
  • pjproject/trunk/build.symbian/pjproject.cww

    r1246 r1248  
    272272        </FRAMELOC> 
    273273        <FRAMESIZE> 
    274             <W>605</W> 
    275             <H>778</H> 
     274            <W>629</W> 
     275            <H>859</H> 
    276276        </FRAMESIZE> 
    277277        <DOCKINFO> 
     
    297297        </FRAMELOC> 
    298298        <FRAMESIZE> 
    299             <W>470</W> 
    300             <H>705</H> 
     299            <W>534</W> 
     300            <H>921</H> 
    301301        </FRAMESIZE> 
    302302        <DOCKINFO> 
     
    322322        </FRAMELOC> 
    323323        <FRAMESIZE> 
    324             <W>904</W> 
    325             <H>1791</H> 
     324            <W>1008</W> 
     325            <H>2142</H> 
    326326        </FRAMESIZE> 
    327327        <DOCKINFO> 
     
    341341        <SESSION>-2147483648</SESSION> 
    342342        <EDOCTYPE>23</EDOCTYPE> 
    343         <MAXIMIZED>true</MAXIMIZED> 
    344343        <FRAMELOC> 
    345344            <X>6</X> 
  • pjproject/trunk/pjlib/src/pj/ioqueue_symbian.cpp

    r1246 r1248  
    649649                                     pj_uint32_t flags ) 
    650650{ 
     651    // If socket has reader, delete it. 
     652    if (key->cbObj->get_pj_socket()->Reader()) 
     653        key->cbObj->get_pj_socket()->DestroyReader(); 
     654     
    651655    // Clear flag 
    652656    flags &= ~PJ_IOQUEUE_ALWAYS_ASYNC; 
     
    668672                                         int *addrlen) 
    669673{ 
     674    // If socket has reader, delete it. 
     675    if (key->cbObj->get_pj_socket()->Reader()) 
     676        key->cbObj->get_pj_socket()->DestroyReader(); 
     677     
    670678    if (key->cbObj->IsActive()) 
    671679        return PJ_EBUSY; 
  • pjproject/trunk/pjlib/src/pj/os_core_symbian.cpp

    r1246 r1248  
    422422{ 
    423423    User::After(msec*1000); 
     424     
     425    TInt aError; 
     426    while (CActiveScheduler::RunIfReady(aError, EPriorityMuchLess)) 
     427        ; 
     428     
    424429    return PJ_SUCCESS; 
    425430} 
  • pjproject/trunk/pjlib/src/pj/os_symbian.h

    r1246 r1248  
    8787    CPjSocketReader *CreateReader(unsigned max_len=CPjSocket::MAX_LEN); 
    8888 
     89    // Delete socket reader when it's not wanted. 
     90    void DestroyReader(); 
     91     
    8992private: 
    9093    RSocket          sock_;         // Must not be reference, or otherwise 
     
    188191public: 
    189192    // 
    190     // Construct PjSymbianOS instance. 
    191     // 
    192     static PjSymbianOS *NewL(); 
    193  
    194     // 
    195193    // Get the singleton instance of PjSymbianOS 
    196194    // 
  • pjproject/trunk/pjlib/src/pj/sock_symbian.cpp

    r1246 r1248  
    6767CPjSocket::~CPjSocket() 
    6868{ 
     69    DestroyReader(); 
     70    sock_.Close(); 
     71} 
     72 
     73 
     74// Create socket reader. 
     75CPjSocketReader *CPjSocket::CreateReader(unsigned max_len) 
     76{ 
     77    pj_assert(sockReader_ == NULL); 
     78    return sockReader_ = CPjSocketReader::NewL(*this, max_len); 
     79} 
     80 
     81// Delete socket reader when it's not wanted. 
     82void CPjSocket::DestroyReader()  
     83{ 
    6984    if (sockReader_) { 
    7085        if (sockReader_->IsActive()) 
     
    7388        sockReader_ = NULL; 
    7489    } 
    75     sock_.Close(); 
    76 } 
    77  
    78  
    79 // Create socket reader. 
    80 CPjSocketReader *CPjSocket::CreateReader(unsigned max_len) 
    81 { 
    82     pj_assert(sockReader_ == NULL); 
    83     return sockReader_ = CPjSocketReader::NewL(*this, max_len); 
    8490} 
    8591 
     
    164170    void (*old_cb)(void *key) = readCb_; 
    165171    void *old_key = key_; 
    166     bool is_active = IsActive(); 
    167172 
    168173    readCb_ = NULL; 
  • pjproject/trunk/pjlib/src/pj/timer_symbian.cpp

    r1246 r1248  
    8989    CActiveScheduler::Add(this); 
    9090     
    91     rtimer_.After(iStatus, PJ_TIME_VAL_MSEC(*delay) * 1000); 
     91    pj_int32_t interval = PJ_TIME_VAL_MSEC(*delay) * 1000; 
     92    if (interval < 0) { 
     93        interval = 0; 
     94    } 
     95    rtimer_.After(iStatus, interval); 
    9296    SetActive(); 
    9397} 
  • pjproject/trunk/pjmedia/src/pjmedia/transport_udp.c

    r1098 r1248  
    231231 
    232232    /* Create transport structure */ 
    233     pool = pjmedia_endpt_create_pool(endpt, name, 4000, 4000); 
     233    pool = pjmedia_endpt_create_pool(endpt, name, 512, 512); 
    234234    if (!pool) 
    235235        return PJ_ENOMEM; 
  • pjproject/trunk/pjnath/src/pjnath/ice_strans.c

    r1210 r1248  
    9797        name = "icstr%p"; 
    9898 
    99     pool = pj_pool_create(stun_cfg->pf, name, 4000, 4000, NULL); 
     99    pool = pj_pool_create(stun_cfg->pf, name, 1000, 512, NULL); 
    100100    ice_st = PJ_POOL_ZALLOC_T(pool, pj_ice_strans); 
    101101    ice_st->pool = pool; 
  • pjproject/trunk/pjsip-apps/src/symbian_ua/main_symbian.cpp

    r1244 r1248  
    2525//  Global Variables 
    2626CConsoleBase* console; 
    27 static CActiveSchedulerWait *asw; 
    2827 
    2928 
    30 //  Local Functions 
    31  
    32 LOCAL_C void MainL() 
    33 { 
    34     // 
    35     // add your program code here, example code below 
    36     // 
    37     int rc = ua_main(); 
    38  
    39     asw->AsyncStop(); 
    40 } 
    41  
    42 class MyScheduler : public CActiveScheduler 
    43 { 
    44 public: 
    45     MyScheduler() 
    46     {} 
    47  
    48     void Error(TInt aError) const; 
    49 }; 
    50  
    51 void MyScheduler::Error(TInt aError) const 
    52 { 
    53     PJ_UNUSED_ARG(aError); 
    54 } 
    55  
     29///////////////////////////////////// 
    5630class MyTask : public CActive 
    5731{ 
    5832public: 
    59     static MyTask *NewL(); 
     33    static MyTask *NewL(CActiveSchedulerWait *asw); 
     34    ~MyTask(); 
    6035    void Start(); 
    6136 
    6237protected: 
    63     MyTask(); 
     38    MyTask(CActiveSchedulerWait *asw); 
    6439    void ConstructL(); 
    6540    virtual void RunL(); 
    6641    virtual void DoCancel(); 
    67     TInt RunError(TInt aError); 
    6842 
    6943private: 
    7044    RTimer timer_; 
     45    CActiveSchedulerWait *asw_; 
    7146}; 
    7247 
    73 MyTask::MyTask() 
    74 : CActive(EPriorityNormal) 
     48MyTask::MyTask(CActiveSchedulerWait *asw) 
     49: CActive(EPriorityNormal), asw_(asw) 
    7550{ 
     51} 
     52 
     53MyTask::~MyTask()  
     54{ 
     55    timer_.Close(); 
    7656} 
    7757 
     
    8262} 
    8363 
    84 MyTask *MyTask::NewL() 
     64MyTask *MyTask::NewL(CActiveSchedulerWait *asw) 
    8565{ 
    86     MyTask *self = new (ELeave) MyTask; 
     66    MyTask *self = new (ELeave) MyTask(asw); 
    8767    CleanupStack::PushL(self); 
    8868 
     
    10181void MyTask::RunL() 
    10282{ 
    103     MainL(); 
     83    int rc = ua_main(); 
     84    asw_->AsyncStop(); 
    10485} 
    10586 
     
    10889} 
    10990 
    110 TInt MyTask::RunError(TInt aError) 
    111 { 
    112     PJ_UNUSED_ARG(aError); 
    113     return KErrNone; 
    114 } 
    115  
    116  
    11791LOCAL_C void DoStartL() 
    11892{ 
    119     // Create active scheduler (to run active objects) 
    120     MyScheduler* scheduler = new (ELeave) MyScheduler; 
     93    CActiveScheduler *scheduler = new (ELeave) CActiveScheduler; 
    12194    CleanupStack::PushL(scheduler); 
    12295    CActiveScheduler::Install(scheduler); 
    12396 
    124     MyTask *task = MyTask::NewL(); 
     97    CActiveSchedulerWait *asw = new CActiveSchedulerWait; 
     98    CleanupStack::PushL(asw); 
     99     
     100    MyTask *task = MyTask::NewL(asw); 
    125101    task->Start(); 
    126102 
    127     asw = new CActiveSchedulerWait; 
    128103    asw->Start(); 
    129104     
     105    delete task; 
     106     
     107    CleanupStack::Pop(asw); 
    130108    delete asw; 
     109     
     110    CActiveScheduler::Install(NULL); 
    131111    CleanupStack::Pop(scheduler); 
    132 } 
    133  
    134  
    135 //////////////////////////////////////////////////////////////////////////// 
    136  
    137 class TMyTrapHandler : public TTrapHandler  
    138 { 
    139 public: 
    140         void Install(); 
    141         void Uninstall(); 
    142         virtual IMPORT_C void Trap(); 
    143         virtual IMPORT_C void UnTrap(); 
    144         virtual IMPORT_C void Leave(TInt aValue); 
    145          
    146 private: 
    147         TTrapHandler *prev_; 
    148 }; 
    149  
    150 void TMyTrapHandler::Install() { 
    151         prev_ = User::SetTrapHandler(this); 
    152 } 
    153  
    154 void TMyTrapHandler::Uninstall() { 
    155         User::SetTrapHandler(prev_); 
    156 } 
    157  
    158 IMPORT_C void TMyTrapHandler::Trap()  
    159 { 
    160         prev_->Trap(); 
    161 } 
    162  
    163 IMPORT_C void TMyTrapHandler::UnTrap()  
    164 { 
    165         prev_->UnTrap(); 
    166 } 
    167  
    168 IMPORT_C void TMyTrapHandler::Leave(TInt aValue)  
    169 { 
    170         prev_->Leave(aValue); 
     112    delete scheduler; 
    171113} 
    172114 
     
    177119GLDEF_C TInt E32Main() 
    178120{ 
    179     TMyTrapHandler th; 
    180      
    181     th.Install(); 
    182      
    183121    // Create cleanup stack 
    184     //__UHEAP_MARK; 
     122    __UHEAP_MARK; 
    185123    CTrapCleanup* cleanup = CTrapCleanup::New(); 
    186124 
     
    193131 
    194132    console->Printf(_L("[press any key to close]\n")); 
    195     console->Getch(); 
     133    //console->Getch(); 
    196134     
    197135    delete console; 
    198136    delete cleanup; 
    199     //__UHEAP_MARKEND; 
    200      
    201     th.Uninstall(); 
     137 
     138    CloseSTDLIB();     
     139    __UHEAP_MARKEND; 
    202140    return KErrNone; 
    203141} 
  • pjproject/trunk/pjsip-apps/src/symbian_ua/ua.cpp

    r1246 r1248  
    4747// Destination URI (to make call, or to subscribe presence) 
    4848// 
    49 #define SIP_DST_URI     "sip:192.168.0.70:5061" 
     49#define SIP_DST_URI     "sip:192.168.0.7:5061" 
    5050 
    5151// 
     
    5353// 
    5454#define HAS_SIP_ACCOUNT 0       // 0 to disable registration 
    55 #define SIP_DOMAIN      "colinux" 
    56 #define SIP_USER        "bulukucing" 
    57 #define SIP_PASSWD      "netura" 
     55#define SIP_DOMAIN      "server" 
     56#define SIP_USER        "user" 
     57#define SIP_PASSWD      "password" 
    5858 
    5959// 
     
    6161// 
    6262#define SIP_PROXY       NULL 
    63 //#define SIP_PROXY     "sip:192.168.0.1" 
     63//#define SIP_PROXY     "sip:192.168.0.8" 
     64 
     65 
     66// 
     67// Configure nameserver if DNS SRV is to be used with both SIP 
     68// or STUN (for STUN see other settings below) 
     69// 
     70#define NAMESERVER      NULL 
     71//#define NAMESERVER    "62.241.163.201" 
     72 
     73// 
     74// STUN server 
     75#if 0 
     76        // Use this to have the STUN server resolved normally 
     77#   define STUN_DOMAIN  NULL 
     78#   define STUN_SERVER  "stun.fwdnet.net" 
     79#elif 0 
     80        // Use this to have the STUN server resolved with DNS SRV 
     81#   define STUN_DOMAIN  "iptel.org" 
     82#   define STUN_SERVER  NULL 
     83#else 
     84        // Use this to disable STUN 
     85#   define STUN_DOMAIN  NULL 
     86#   define STUN_SERVER  NULL 
     87#endif 
     88 
     89// 
     90// Use ICE? 
     91// 
     92#define USE_ICE         1 
    6493 
    6594 
     
    94123    g_call_id = call_id; 
    95124     
    96     /* Automatically answer incoming calls with 200/OK */ 
    97     pjsua_call_answer(call_id, 200, NULL, NULL); 
     125    /* Automatically answer incoming calls with 180/Ringing */ 
     126    pjsua_call_answer(call_id, 180, NULL, NULL); 
    98127} 
    99128 
     
    110139        if (call_id == g_call_id) 
    111140            g_call_id = PJSUA_INVALID_ID; 
    112     } else { 
     141    } else if (ci.state != PJSIP_INV_STATE_INCOMING) { 
    113142        if (g_call_id == PJSUA_INVALID_ID) 
    114143            g_call_id = call_id; 
     
    276305        } 
    277306         
     307        if (NAMESERVER) { 
     308                cfg.nameserver_count = 1; 
     309                cfg.nameserver[0] = pj_str(NAMESERVER); 
     310        } 
     311         
     312        if (NAMESERVER && STUN_DOMAIN) { 
     313                cfg.stun_domain = pj_str(STUN_DOMAIN); 
     314        } else if (STUN_SERVER) { 
     315                cfg.stun_host = pj_str(STUN_SERVER); 
     316        } 
     317         
     318         
    278319        pjsua_logging_config_default(&log_cfg); 
    279320        log_cfg.console_level = 4; 
     
    285326        med_cfg.clock_rate = 8000; 
    286327        med_cfg.ec_tail_len = 0; 
     328        med_cfg.enable_ice = USE_ICE; 
    287329         
    288330        status = pjsua_init(&cfg, &log_cfg, &med_cfg); 
     
    483525} 
    484526 
     527 
    485528//////////////////////////////////////////////////////////////////////////// 
    486529int ua_main()  
     
    492535        if (status != PJ_SUCCESS) 
    493536                return status; 
    494          
    495          
     537 
    496538        // Run the UI 
    497539        CActiveSchedulerWait *asw = new CActiveSchedulerWait; 
  • pjproject/trunk/pjsip/include/pjsip/sip_transport.h

    r974 r1248  
    933933                                                  int *port); 
    934934 
     935/** 
     936 * Return number of transports currently registered to the transport 
     937 * manager. 
     938 * 
     939 * @param mgr       The transport manager. 
     940 * 
     941 * @return          Number of transports. 
     942 */ 
     943PJ_DECL(unsigned) pjsip_tpmgr_get_transport_count(pjsip_tpmgr *mgr); 
     944 
    935945 
    936946/** 
  • pjproject/trunk/pjsip/src/pjsip/sip_transport.c

    r1241 r1248  
    10121012} 
    10131013 
     1014/* 
     1015 * Return number of transports currently registered to the transport 
     1016 * manager. 
     1017 */ 
     1018PJ_DEF(unsigned) pjsip_tpmgr_get_transport_count(pjsip_tpmgr *mgr) 
     1019{ 
     1020    pj_hash_iterator_t itr_val; 
     1021    pj_hash_iterator_t *itr; 
     1022    int nr_of_transports = 0; 
     1023     
     1024    pj_lock_acquire(mgr->lock); 
     1025     
     1026    itr = pj_hash_first(mgr->table, &itr_val); 
     1027    while (itr) { 
     1028        nr_of_transports++; 
     1029        itr = pj_hash_next(mgr->table, itr); 
     1030    } 
     1031     
     1032    pj_lock_release(mgr->lock); 
     1033 
     1034    return nr_of_transports; 
     1035} 
    10141036 
    10151037/* 
  • pjproject/trunk/pjsip/src/pjsip/sip_transport_udp.c

    r1242 r1248  
    130130     */ 
    131131    for (i=0;; ++i) { 
     132        enum { MIN_SIZE = 32 }; 
    132133        pj_uint32_t flags; 
    133134 
    134         /* Report the packet to transport manager. */ 
    135         if (bytes_read > 0) { 
     135        /* Report the packet to transport manager. Only do so if packet size 
     136         * is relatively big enough for a SIP packet. 
     137         */ 
     138        if (bytes_read > MIN_SIZE) { 
    136139            pj_size_t size_eaten; 
    137140            const pj_sockaddr_in *src_addr =  
     
    158161            rdata->pkt_info.len = 0; 
    159162 
    160         } else if (bytes_read == 0) { 
     163        } else if (bytes_read <= MIN_SIZE) { 
    161164 
    162165            /* TODO: */ 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_core.c

    r1246 r1248  
    647647{ 
    648648#if defined(PJ_SYMBIAN) && PJ_SYMBIAN != 0 
     649    /* Ideally we shouldn't call pj_thread_sleep() and rather 
     650     * CActiveScheduler::WaitForAnyRequest() here, but that will 
     651     * drag in Symbian header and it doesn't look pretty. 
     652     */ 
    649653    pj_thread_sleep(msec); 
    650654#else 
     
    976980PJ_DEF(int) pjsua_handle_events(unsigned msec_timeout) 
    977981{ 
     982#if defined(PJ_SYMBIAN) && PJ_SYMBIAN != 0 
     983    /* Ideally we shouldn't call pj_thread_sleep() and rather 
     984     * CActiveScheduler::WaitForAnyRequest() here, but that will 
     985     * drag in Symbian header and it doesn't look pretty. 
     986     */ 
     987    pj_thread_sleep(msec_timeout); 
     988    return msec_timeout; 
     989#else 
     990 
    978991    unsigned count = 0; 
    979992    pj_time_val tv; 
     
    9901003 
    9911004    return count; 
     1005#endif 
    9921006} 
    9931007 
Note: See TracChangeset for help on using the changeset viewer.