Changeset 2008


Ignore:
Timestamp:
Jun 12, 2008 1:30:39 PM (11 years ago)
Author:
bennylp
Message:

Added echo option and stdout refresh in pjsua to assist automated test scripts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app.c

    r2007 r2008  
    9393#define current_acc     pjsua_acc_get_default() 
    9494static pjsua_call_id    current_call = PJSUA_INVALID_ID; 
     95static pj_bool_t        cmd_echo; 
     96static int              stdout_refresh = -1; 
     97static const char      *stdout_refresh_text = "STDOUT_REFRESH"; 
     98static pj_bool_t        stdout_refresh_quit = PJ_FALSE; 
    9599static pj_str_t         uri_arg; 
    96100 
     
    420424           OPT_CAPTURE_DEV, OPT_PLAYBACK_DEV, 
    421425           OPT_CAPTURE_LAT, OPT_PLAYBACK_LAT, 
     426           OPT_STDOUT_REFRESH, OPT_STDOUT_REFRESH_TEXT, 
    422427           OPT_AUTO_UPDATE_NAT,OPT_USE_COMPACT_FORM,OPT_DIS_CODEC 
    423428    }; 
     
    508513        { "capture-lat",    1, 0, OPT_CAPTURE_LAT}, 
    509514        { "playback-lat",   1, 0, OPT_PLAYBACK_LAT}, 
     515        { "stdout-refresh", 1, 0, OPT_STDOUT_REFRESH}, 
     516        { "stdout-refresh-text", 1, 0, OPT_STDOUT_REFRESH_TEXT}, 
    510517        { NULL, 0, 0, 0} 
    511518    }; 
     
    10841091        case OPT_PLAYBACK_DEV: 
    10851092            cfg->playback_dev = atoi(pj_optarg); 
     1093            break; 
     1094 
     1095        case OPT_STDOUT_REFRESH: 
     1096            stdout_refresh = atoi(pj_optarg); 
     1097            break; 
     1098 
     1099        case OPT_STDOUT_REFRESH_TEXT: 
     1100            stdout_refresh_text = pj_optarg; 
    10861101            break; 
    10871102 
     
    22762291    puts("|  S  Send arbitrary REQUEST   | Cp  Codec priorities     |  f  Save config   |"); 
    22772292    puts("+------------------------------+--------------------------+-------------------+"); 
    2278     puts("|  q  QUIT       sleep N: console sleep for N ms    n: detect NAT type        |"); 
     2293    puts("|  q  QUIT       sleep MS     echo [0|1]            n: detect NAT type        |"); 
    22792294    puts("+=============================================================================+"); 
    22802295 
     
    26482663        } 
    26492664 
     2665        if (cmd_echo) { 
     2666            printf("%s", menuin); 
     2667        } 
     2668 
    26502669        switch (menuin[0]) { 
    26512670 
     
    33093328 
    33103329            send_request(text, &tmp); 
     3330            break; 
     3331 
     3332        case 'e': 
     3333            if (pj_ansi_strnicmp(menuin, "echo", 4)==0) { 
     3334                pj_str_t tmp; 
     3335 
     3336                tmp.ptr = menuin+5; 
     3337                tmp.slen = pj_ansi_strlen(menuin)-6; 
     3338 
     3339                if (tmp.slen < 1) { 
     3340                    puts("Usage: echo [0|1]"); 
     3341                    break; 
     3342                } 
     3343 
     3344                cmd_echo = pj_strtoul(&tmp); 
     3345            } 
    33113346            break; 
    33123347 
     
    37683803 
    37693804 
     3805static int stdout_refresh_proc(void *arg) 
     3806{ 
     3807    PJ_UNUSED_ARG(arg); 
     3808 
     3809    /* Set thread to lowest priority so that it doesn't clobber 
     3810     * stdout output 
     3811     */ 
     3812    pj_thread_set_prio(pj_thread_this(),  
     3813                       pj_thread_get_prio_min(pj_thread_this())); 
     3814 
     3815    while (!stdout_refresh_quit) { 
     3816        pj_thread_sleep(stdout_refresh * 1000); 
     3817        puts(stdout_refresh_text); 
     3818        fflush(stdout); 
     3819    } 
     3820 
     3821    return 0; 
     3822} 
     3823 
    37703824pj_status_t app_main(void) 
    37713825{ 
     3826    pj_thread_t *stdout_refresh_thread = NULL; 
    37723827    pj_status_t status; 
    37733828 
     
    37793834    } 
    37803835 
     3836    /* Start console refresh thread */ 
     3837    if (stdout_refresh > 0) { 
     3838        pj_thread_create(app_config.pool, "stdout", &stdout_refresh_proc, 
     3839                         NULL, 0, 0, &stdout_refresh_thread); 
     3840    } 
     3841 
    37813842    console_app_main(&uri_arg); 
     3843 
     3844    if (stdout_refresh_thread) { 
     3845        stdout_refresh_quit = PJ_TRUE; 
     3846        pj_thread_join(stdout_refresh_thread); 
     3847        pj_thread_destroy(stdout_refresh_thread); 
     3848    } 
    37823849 
    37833850    return PJ_SUCCESS; 
Note: See TracChangeset for help on using the changeset viewer.