void task1( unsigned int arg ) { ER ercd; int tests = 0; CYG_TEST_INFO( "Task 1 running" ); ercd = dis_dsp(); CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" ); ercd = sta_tsk( 2, 22222 ); CYG_TEST_CHECK( E_OK == ercd, "sta_tsk bad ercd" ); ercd = chg_pri( 2, 5 ); CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" ); ercd = ena_dsp(); CYG_TEST_CHECK( E_OK == ercd, "ena_dsp bad ercd" ); ercd = dly_tsk( 10 ); CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" ); #ifdef CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE tests++; #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS ercd = del_mpf( -6 ); CYG_TEST_CHECK( E_ID == ercd, "del_mpf bad ercd !E_ID" ); ercd = del_mpf( 99 ); CYG_TEST_CHECK( E_ID == ercd, "del_mpf bad ercd !E_ID" ); ercd = cre_mpf( -6, &t_cmpf ); CYG_TEST_CHECK( E_ID == ercd, "cre_mpf bad ercd !E_ID" ); ercd = cre_mpf( 99, &t_cmpf ); CYG_TEST_CHECK( E_ID == ercd, "cre_mpf bad ercd !E_ID" ); #endif // we can test bad param error returns // try a pre-existing object // [first get a valid block from it for the freeing test later] ercd = pget_blf( &vp, 3 ); CYG_TEST_CHECK( E_OK == ercd, "pget_blf bad ercd" ); ercd = cre_mpf( 3, &t_cmpf ); CYG_TEST_CHECK( E_OBJ == ercd, "cre_mpf bad ercd !E_OBJ" ); // delete it so we can play ercd = del_mpf( 3 ); CYG_TEST_CHECK( E_OK == ercd, "del_mpf bad ercd" ); // check it is deleted ercd = rel_blf( 3, vp ); // vp did come from this pool CYG_TEST_CHECK( E_NOEXS == ercd, "rel_blf bad ercd !E_NOEXS" ); ercd = pget_blf( &vp, 3 ); CYG_TEST_CHECK( E_NOEXS == ercd, "pget_blf bad ercd !E_NOEXS" ); ercd = tget_blf( &vp, 3, 10 ); CYG_TEST_CHECK( E_NOEXS == ercd, "tget_blf bad ercd !E_NOEXS" ); ercd = get_blf( &vp, 3 ); CYG_TEST_CHECK( E_NOEXS == ercd, "get_blf bad ercd !E_NOEXS" ); ercd = ref_mpf( &t_rmpf, 3 ); CYG_TEST_CHECK( E_NOEXS == ercd, "ref_mpf bad ercd !E_NOEXS" ); #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS // now try creating it (badly) #ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR ercd = cre_mpf( 3, NULL ); CYG_TEST_CHECK( E_PAR == ercd, "cre_mpf bad ercd !E_PAR" ); #endif ercd = cre_mpf( 3, NADR ); CYG_TEST_CHECK( E_PAR == ercd, "cre_mpf bad ercd !E_PAR" ); t_cmpf.mpfatr = 0xfff; ercd = cre_mpf( 3, &t_cmpf ); CYG_TEST_CHECK( E_RSATR == ercd, "cre_mpf bad ercd !E_RSATR" ); #endif // we can test bad param error returns t_cmpf.mpfatr = 0; t_cmpf.mpfcnt = 10000; t_cmpf.blfsz = 100; ercd = cre_mpf( 3, &t_cmpf ); CYG_TEST_CHECK( E_NOMEM == ercd, "cre_mpf bad ercd" ); t_cmpf.mpfcnt = 100; t_cmpf.blfsz = 100000; ercd = cre_mpf( 3, &t_cmpf ); CYG_TEST_CHECK( E_NOMEM == ercd, "cre_mpf bad ercd" ); // now create it well t_cmpf.mpfatr = 0; t_cmpf.mpfcnt = 10; t_cmpf.blfsz = 100; ercd = cre_mpf( 3, &t_cmpf ); CYG_TEST_CHECK( E_OK == ercd, "cre_mpf bad ercd" ); // and check we can use it ercd = pget_blf( &vp, 3 ); CYG_TEST_CHECK( E_OK == ercd, "pget_blf bad ercd" ); ercd = tget_blf( &vp, 3, 10 ); CYG_TEST_CHECK( E_OK == ercd, "tget_blf bad ercd" ); ercd = get_blf( &vp, 3 ); CYG_TEST_CHECK( E_OK == ercd, "get_blf bad ercd" ); ercd = rel_blf( 3, vp ); // vp did come from new pool CYG_TEST_CHECK( E_OK == ercd, "rel_blf bad ercd" ); ercd = rel_blf( 3, vp ); // vp already freed CYG_TEST_CHECK( E_PAR == ercd, "rel_blf bad ercd !E_PAR" ); ercd = ref_mpf( &t_rmpf, 3 ); CYG_TEST_CHECK( E_OK == ercd, "ref_mpf bad ercd" ); // In order to wait on the pools, we must first consume all they have: while ( E_OK == (ercd = pget_blf( &vp, 1 )) ) /* nothing */; CYG_TEST_CHECK( E_TMOUT == ercd, "pget_blf bad ercd !E_TMOUT" ); while ( E_OK == (ercd = tget_blf( &vp, 2, 1 )) ) /* nothing */; CYG_TEST_CHECK( E_TMOUT == ercd, "tget_blf bad ercd !E_TMOUT" ); // now wait while task 2 deletes the wait objects ercd = wup_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" ); ercd = get_blf( &vp, 1 ); CYG_TEST_CHECK( E_DLT == ercd, "get_blf bad ercd !E_DLT" ); ercd = wup_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" ); ercd = tget_blf( &vp, 2, 20 ); CYG_TEST_CHECK( E_DLT == ercd, "tget_blf bad ercd !E_DLT" ); // check they are deleted ercd = get_blf( &vp, 1 ); CYG_TEST_CHECK( E_NOEXS == ercd, "get_blf bad ercd !E_NOEXS" ); ercd = pget_blf( &vp, 2 ); CYG_TEST_CHECK( E_NOEXS == ercd, "pget_blf bad ercd !E_NOEXS" ); // re-create and do it again t_cmpf.mpfcnt = 90; t_cmpf.blfsz = 20; ercd = cre_mpf( 1, &t_cmpf ); CYG_TEST_CHECK( E_OK == ercd, "cre_mpf bad ercd" ); t_cmpf.mpfcnt = 5; t_cmpf.blfsz = 200; ercd = cre_mpf( 2, &t_cmpf ); CYG_TEST_CHECK( E_OK == ercd, "cre_mpf bad ercd" ); // In order to wait on the pools, we must first consume all they have: while ( E_OK == (ercd = pget_blf( &vp, 1 )) ) /* nothing */; CYG_TEST_CHECK( E_TMOUT == ercd, "pget_blf bad ercd !E_TMOUT" ); while ( E_OK == (ercd = tget_blf( &vp, 2, 1 )) ) /* nothing */; CYG_TEST_CHECK( E_TMOUT == ercd, "tget_blf bad ercd !E_TMOUT" ); // now wait while task 2 deletes the wait objects ercd = wup_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" ); ercd = get_blf( &vp, 1 ); CYG_TEST_CHECK( E_DLT == ercd, "get_blf bad ercd !E_DLT" ); ercd = wup_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" ); ercd = tget_blf( &vp, 2, 10 ); CYG_TEST_CHECK( E_DLT == ercd, "tget_blf bad ercd !E_DLT" ); // check they are deleted ercd = tget_blf( &vp, 1, 1 ); CYG_TEST_CHECK( E_NOEXS == ercd, "get_blf bad ercd !E_NOEXS" ); ercd = get_blf( &vp, 2 ); CYG_TEST_CHECK( E_NOEXS == ercd, "pget_blf bad ercd !E_NOEXS" ); CYG_TEST_PASS("create/delete fixed mempools"); #endif // CYGPKG_UITRON_MEMPOOLFIXED_CREATE_DELETE #ifdef CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE tests++; #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS ercd = del_mpl( -6 ); CYG_TEST_CHECK( E_ID == ercd, "del_mpl bad ercd !E_ID" ); ercd = del_mpl( 99 ); CYG_TEST_CHECK( E_ID == ercd, "del_mpl bad ercd !E_ID" ); ercd = cre_mpl( -6, &t_cmpl ); CYG_TEST_CHECK( E_ID == ercd, "cre_mpl bad ercd !E_ID" ); ercd = cre_mpl( 99, &t_cmpl ); CYG_TEST_CHECK( E_ID == ercd, "cre_mpl bad ercd !E_ID" ); #endif // we can test bad param error returns // try a pre-existing object // [first get a valid block from it for the freeing test later] ercd = pget_blk( &vp, 3, 100 ); CYG_TEST_CHECK( E_OK == ercd, "pget_blk bad ercd" ); ercd = cre_mpl( 3, &t_cmpl ); CYG_TEST_CHECK( E_OBJ == ercd, "cre_mpl bad ercd !E_OBJ" ); // delete it so we can play ercd = del_mpl( 3 ); CYG_TEST_CHECK( E_OK == ercd, "del_mpl bad ercd" ); // check it is deleted ercd = rel_blk( 3, vp ); // vp did come from this pool CYG_TEST_CHECK( E_NOEXS == ercd, "rel_blk bad ercd !E_NOEXS" ); ercd = pget_blk( &vp, 3, 100 ); CYG_TEST_CHECK( E_NOEXS == ercd, "pget_blk bad ercd !E_NOEXS" ); ercd = tget_blk( &vp, 3, 100, 10 ); CYG_TEST_CHECK( E_NOEXS == ercd, "tget_blk bad ercd !E_NOEXS" ); ercd = get_blk( &vp, 3, 100 ); CYG_TEST_CHECK( E_NOEXS == ercd, "get_blk bad ercd !E_NOEXS" ); ercd = ref_mpl( &t_rmpl, 3 ); CYG_TEST_CHECK( E_NOEXS == ercd, "ref_mpl bad ercd !E_NOEXS" ); #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS // now try creating it (badly) #ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR ercd = cre_mpl( 3, NULL ); CYG_TEST_CHECK( E_PAR == ercd, "cre_mpl bad ercd !E_PAR" ); #endif ercd = cre_mpl( 3, NADR ); CYG_TEST_CHECK( E_PAR == ercd, "cre_mpl bad ercd !E_PAR" ); t_cmpl.mplatr = 0xfff; ercd = cre_mpl( 3, &t_cmpl ); CYG_TEST_CHECK( E_RSATR == ercd, "cre_mpl bad ercd !E_RSATR" ); #endif // we can test bad param error returns t_cmpl.mplatr = 0; t_cmpl.mplsz = 100000000; ercd = cre_mpl( 3, &t_cmpl ); CYG_TEST_CHECK( E_NOMEM == ercd, "cre_mpl bad ercd" ); // now create it well t_cmpl.mplatr = 0; t_cmpl.mplsz = 1000; ercd = cre_mpl( 3, &t_cmpl ); CYG_TEST_CHECK( E_OK == ercd, "cre_mpl bad ercd" ); // and check we can use it ercd = pget_blk( &vp, 3, 100 ); CYG_TEST_CHECK( E_OK == ercd, "pget_blk bad ercd" ); ercd = pget_blk( &vp, 3, 100000000 ); // way too large CYG_TEST_CHECK( E_TMOUT == ercd, "pget_blk bad ercd !E_TMOUT" ); ercd = tget_blk( &vp, 3, 100, 10 ); CYG_TEST_CHECK( E_OK == ercd, "tget_blk bad ercd" ); ercd = get_blk( &vp, 3, 100 ); CYG_TEST_CHECK( E_OK == ercd, "get_blk bad ercd" ); ercd = rel_blk( 3, vp ); // vp did come from new pool CYG_TEST_CHECK( E_OK == ercd, "rel_blk bad ercd" ); ercd = rel_blk( 3, vp ); // vp already freed CYG_TEST_CHECK( E_PAR == ercd, "rel_blk bad ercd !E_PAR" ); ercd = ref_mpl( &t_rmpl, 3 ); CYG_TEST_CHECK( E_OK == ercd, "ref_mpl bad ercd" ); // In order to wait on the pools, we must first consume all they have: while ( E_OK == (ercd = pget_blk( &vp, 1, 100 )) ) /* nothing */; CYG_TEST_CHECK( E_TMOUT == ercd, "pget_blk bad ercd !E_TMOUT" ); while ( E_OK == (ercd = tget_blk( &vp, 2, 100, 1 )) ) /* nothing */; CYG_TEST_CHECK( E_TMOUT == ercd, "tget_blk bad ercd !E_TMOUT" ); // now wait while task 2 deletes the wait objects ercd = wup_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" ); ercd = get_blk( &vp, 1, 200 ); CYG_TEST_CHECK( E_DLT == ercd, "get_blk bad ercd !E_DLT" ); ercd = wup_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" ); ercd = tget_blk( &vp, 2, 100, 20 ); CYG_TEST_CHECK( E_DLT == ercd, "tget_blk bad ercd !E_DLT" ); // check they are deleted ercd = get_blk( &vp, 1, 200 ); CYG_TEST_CHECK( E_NOEXS == ercd, "get_blk bad ercd !E_NOEXS" ); ercd = pget_blk( &vp, 2, 20 ); CYG_TEST_CHECK( E_NOEXS == ercd, "pget_blk bad ercd !E_NOEXS" ); // re-create and do it again ercd = cre_mpl( 1, &t_cmpl ); CYG_TEST_CHECK( E_OK == ercd, "cre_mpl bad ercd" ); ercd = cre_mpl( 2, &t_cmpl ); CYG_TEST_CHECK( E_OK == ercd, "cre_mpl bad ercd" ); // In order to wait on the pools, we must first consume all they have: while ( E_OK == (ercd = pget_blk( &vp, 1, 20 )) ) /* nothing */; CYG_TEST_CHECK( E_TMOUT == ercd, "pget_blk bad ercd !E_TMOUT" ); while ( E_OK == (ercd = tget_blk( &vp, 2, 400, 1 )) ) /* nothing */; CYG_TEST_CHECK( E_TMOUT == ercd, "tget_blk bad ercd !E_TMOUT" ); // now wait while task 2 deletes the wait objects ercd = wup_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" ); ercd = get_blk( &vp, 1, 200 ); CYG_TEST_CHECK( E_DLT == ercd, "get_blk bad ercd !E_DLT" ); ercd = wup_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" ); ercd = tget_blk( &vp, 2, 500, 20 ); CYG_TEST_CHECK( E_DLT == ercd, "tget_blk bad ercd !E_DLT" ); // check they are deleted ercd = tget_blk( &vp, 1, 200, 1 ); CYG_TEST_CHECK( E_NOEXS == ercd, "get_blk bad ercd !E_NOEXS" ); ercd = get_blk( &vp, 2, 20 ); CYG_TEST_CHECK( E_NOEXS == ercd, "pget_blk bad ercd !E_NOEXS" ); CYG_TEST_PASS("create/delete variable mempools"); #endif // CYGPKG_UITRON_MEMPOOLVAR_CREATE_DELETE ercd = ter_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" ); ercd = dly_tsk( 5 ); CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" ); // all done if ( 0 == tests ) { CYG_TEST_NA( "No objects have create/delete enabled" ); } else { CYG_TEST_EXIT( "All done" ); } ext_tsk(); }
void task1( unsigned int arg ) { ER ercd; int i; T_RSYS rsys; CYG_TEST_INFO( "Task 1 running" ); // check initial state ercd = ref_sys( &rsys ); CYG_TEST_CHECK( E_OK == ercd, "ref_sys bad ercd" ); CYG_TEST_CHECK( TSS_TSK == rsys.sysstat, "system state not TSS_TSK" ); // disable intrs and check state ercd = loc_cpu(); CYG_TEST_CHECK( E_OK == ercd, "loc_cpu bad ercd" ); ercd = ref_sys( &rsys ); CYG_TEST_CHECK( E_OK == ercd, "ref_sys bad ercd" ); CYG_TEST_CHECK( TSS_LOC == rsys.sysstat, "system state not TSS_LOC" ); #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS // try an illegal op ercd = dly_tsk( 10 ); CYG_TEST_CHECK( E_CTX == ercd, "dly_tsk bad ercd !E_CTX" ); #endif // CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS // enable intrs and check state and a legal sleep ercd = unl_cpu(); CYG_TEST_CHECK( E_OK == ercd, "unl_cpu bad ercd" ); ercd = ref_sys( &rsys ); CYG_TEST_CHECK( E_OK == ercd, "ref_sys bad ercd" ); CYG_TEST_CHECK( TSS_TSK == rsys.sysstat, "system state not TSS_TSK" ); ercd = dly_tsk( 1 ); CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" ); // disable intrs and try scheduler illegal ops ercd = loc_cpu(); CYG_TEST_CHECK( E_OK == ercd, "loc_cpu bad ercd" ); ercd = ref_sys( &rsys ); CYG_TEST_CHECK( E_OK == ercd, "ref_sys bad ercd" ); CYG_TEST_CHECK( TSS_LOC == rsys.sysstat, "system state not TSS_LOC" ); #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS ercd = dis_dsp(); CYG_TEST_CHECK( E_CTX == ercd, "dis_dsp bad ercd !E_CTX" ); ercd = ena_dsp(); CYG_TEST_CHECK( E_CTX == ercd, "ena_dsp bad ercd !E_CTX" ); #endif // CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS // enable again and check state ercd = unl_cpu(); CYG_TEST_CHECK( E_OK == ercd, "unl_cpu bad ercd" ); ercd = ref_sys( &rsys ); CYG_TEST_CHECK( E_OK == ercd, "ref_sys bad ercd" ); CYG_TEST_CHECK( TSS_TSK == rsys.sysstat, "system state not TSS_TSK" ); // disable the scheduler and check state ercd = dis_dsp(); CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" ); ercd = ref_sys( &rsys ); CYG_TEST_CHECK( E_OK == ercd, "ref_sys bad ercd" ); CYG_TEST_CHECK( TSS_DDSP == rsys.sysstat, "system state not TSS_DDSP" ); // disable intrs and check state ercd = loc_cpu(); CYG_TEST_CHECK( E_OK == ercd, "loc_cpu bad ercd" ); ercd = ref_sys( &rsys ); CYG_TEST_CHECK( E_OK == ercd, "ref_sys bad ercd" ); CYG_TEST_CHECK( TSS_LOC == rsys.sysstat, "system state not TSS_LOC" ); // then unlock and check state ercd = unl_cpu(); CYG_TEST_CHECK( E_OK == ercd, "unl_cpu bad ercd" ); ercd = ref_sys( &rsys ); CYG_TEST_CHECK( E_OK == ercd, "ref_sys bad ercd" ); CYG_TEST_CHECK( TSS_TSK == rsys.sysstat, "system state not TSS_TSK" ); CYG_TEST_PASS( "Interrupt dis/enabling and interactions" ); // and now we can do the rest of the test #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS ercd = rel_wai( 2 ); CYG_TEST_CHECK( E_OBJ == ercd, "rel_wai bad ercd !E_OBJ" ); ercd = rel_wai( 1 ); CYG_TEST_CHECK( E_OBJ == ercd, "rel_wai(me) bad ercd !E_OBJ" ); ercd = rel_wai( -6 ); CYG_TEST_CHECK( E_ID == ercd, "rel_wai bad ercd !E_ID" ); ercd = rel_wai( 99 ); CYG_TEST_CHECK( E_ID == ercd, "rel_wai bad ercd !E_ID" ); #endif // we can test bad param error returns ercd = dis_dsp(); CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" ); ercd = sta_tsk( 2, 22222 ); CYG_TEST_CHECK( E_OK == ercd, "sta_tsk bad ercd" ); ercd = chg_pri( 2, 5 ); CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" ); ercd = ena_dsp(); CYG_TEST_CHECK( E_OK == ercd, "ena_dsp bad ercd" ); #ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS ercd = rel_wai( 2 ); CYG_TEST_CHECK( E_OBJ == ercd, "rel_wai bad ercd !E_OBJ" ); ercd = rel_wai( 1 ); CYG_TEST_CHECK( E_OBJ == ercd, "rel_wai(me) bad ercd !E_OBJ" ); #endif // we can test bad param error returns ercd = wai_sem( 1 ); CYG_TEST_CHECK( E_RLWAI == ercd, "wai_sem bad ercd !E_RLWAI" ); ercd = twai_sem( 1, 20 ); CYG_TEST_CHECK( E_RLWAI == ercd, "twai_sem bad ercd !E_RLWAI" ); ercd = wai_flg( &scratch, 1, 9999, 0 ); CYG_TEST_CHECK( E_RLWAI == ercd, "wai_flg bad ercd !E_RLWAI" ); ercd = twai_flg( &scratch, 1, 9999, 0, 10 ); CYG_TEST_CHECK( E_RLWAI == ercd, "twai_flg bad ercd !E_RLWAI" ); ercd = rcv_msg( &t_msg, 1 ); CYG_TEST_CHECK( E_RLWAI == ercd, "rcv_msg bad ercd !E_RLWAI" ); ercd = trcv_msg( &t_msg, 1, 10 ); CYG_TEST_CHECK( E_RLWAI == ercd, "trcv_msg bad ercd !E_RLWAI" ); // these are loops so as to consume the whole of the mempool // in order to wait at the end for ( i = 0; i < 10; i++ ) if ( E_OK != (ercd = get_blf( &vp, 3 ) ) ) break; CYG_TEST_CHECK( E_RLWAI == ercd, "get_blf bad ercd !E_RLWAI" ); for ( i = 0; i < 10; i++ ) if ( E_OK != (ercd = tget_blf( &vp, 3, 10 ) ) ) break; CYG_TEST_CHECK( E_RLWAI == ercd, "tget_blf bad ercd !E_RLWAI" ); for ( i = 0; i < 10; i++ ) if ( E_OK != (ercd = get_blk( &vp, 1, 1000 ) ) ) break; CYG_TEST_CHECK( E_RLWAI == ercd, "get_blk bad ercd !E_RLWAI" ); for ( i = 0; i < 10; i++ ) if ( E_OK != (ercd = tget_blk( &vp, 1, 1000, 10 ) ) ) break; CYG_TEST_CHECK( E_RLWAI == ercd, "tget_blk bad ercd !E_RLWAI" ); ercd = dly_tsk( 10 ); CYG_TEST_CHECK( E_RLWAI == ercd, "dly_tsk bad ercd !E_RLWAI" ); ercd = tslp_tsk( 10 ); CYG_TEST_CHECK( E_RLWAI == ercd, "tslp_tsk bad ercd !E_RLWAI" ); ercd = slp_tsk(); CYG_TEST_CHECK( E_RLWAI == ercd, "slp_tsk bad ercd !E_RLWAI" ); ercd = ter_tsk( 2 ); CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" ); ercd = dly_tsk( 10 ); CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" ); CYG_TEST_PASS("release wait: various waiting calls"); // all done CYG_TEST_EXIT( "All done" ); ext_tsk(); }
INT32 UIFlowWndPlay_OnKeyEnter(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) { //#NT#2012/08/31#Calvin Chang#Porting Media Flow -begin //UINT32 uiCurindex; UINT32 uiPoolAddr; char pFilePath[FULL_FILE_PATH_LEN]; UINT32 fileType = DCF_FILE_TYPE_JPG; UINT32 uiPBFileFmt; switch(g_PlbData.State) { case PLB_ST_PLAY_MOV: case PLB_ST_FWD_MOV: case PLB_ST_BWD_MOV: Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_PAUSE_PLAY_MOVIE, 0); FlowPB_IconDrawMovPlay(TRUE); g_PlbData.State = PLB_ST_PAUSE_MOV; //#NT#2012/10/23#Philex Lin - begin // enable auto power off/USB detect timer // enable sound key tone flag KeyScan_EnableMisc(TRUE); //#NT#2012/10/23#Philex Lin - end break; case PLB_ST_PAUSE_MOV: //#NT#2012/10/23#Philex Lin - begin // disable auto power off/USB detect timer // disable key tone flag KeyScan_EnableMisc(FALSE); //#NT#2012/10/23#Philex Lin - end // Start to Play Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_PLAY_PLAY_MOVIE, 2, g_uiUIFlowWndPlayCurrenSpeed, g_uiUIFlowWndPlayCurrenDirection); FlowPB_IconDrawMovPlay(TRUE); g_PlbData.State = PLB_ST_PLAY_MOV; break; default: case PLB_ST_FULL: uiPBFileFmt = AppPlay_GetData(PLAY_FILEFMT); if (uiPBFileFmt & PBFMT_AVI || uiPBFileFmt & PBFMT_MOVMJPG || uiPBFileFmt & PBFMT_MP4) { // Open Video File if (gphUIFlowMovPlay_Filehdl) { FileSys_CloseFile(gphUIFlowMovPlay_Filehdl); gphUIFlowMovPlay_Filehdl = NULL; } if (uiPBFileFmt & PBFMT_AVI) fileType = DCF_FILE_TYPE_AVI; else if (uiPBFileFmt & PBFMT_MOVMJPG) fileType = DCF_FILE_TYPE_MOV; else if (uiPBFileFmt & PBFMT_MP4) fileType = DCF_FILE_TYPE_MOV; else { debug_msg("Wrong video file format!! \r\n"); break; } // Get Current index PB_GetParam(PBPRMID_CURR_FILEPATH, (UINT32 *)pFilePath); #if 0 uiCurindex = DCF_GetCurIndex(); DCF_GetObjPath(uiCurindex,fileType,pFilePath); #endif // Open Test Media File gphUIFlowMovPlay_Filehdl = FileSys_OpenFile(pFilePath, FST_OPEN_READ); if (!gphUIFlowMovPlay_Filehdl) { debug_msg("UIFlowWndPlay_OnKeyEnter: Can't open Video file!\r\n"); break; } //#NT#2012/10/23#Philex Lin - begin // disable auto power off/USB detect timer // disable key tone flag KeyScan_EnableMisc(FALSE); //#NT#2012/10/23#Philex Lin - end // Buffer Allocation get_blf((VP*)&(uiPoolAddr), POOL_ID_APP); rel_blf(POOL_ID_APP, (VP)uiPoolAddr); g_UIPlayMediaObj.hActMediafilehdl = gphUIFlowMovPlay_Filehdl; g_UIPlayMediaObj.CallBackFunc = Play_MovieCB; // g_UIPlayMediaObj.uiMemAddr = uiPoolAddr; g_UIPlayMediaObj.uiMemAddr = (UINT32)OS_GetMempoolAddr(POOL_ID_APP); g_UIPlayMediaObj.uiMemSize = POOL_SIZE_APP; //g_UIPlayMediaObj.iAudioType = AUDIO_OUTPUT_HP; g_UIPlayMediaObj.bDisableAudio = FALSE; UIFlowMoviePlay_SetSpeed(g_PlbData.VideoPBSpeed); g_uiUIFlowWndPlayCurrenDirection = MEDIAPLAY_DIR_FORWARD; //flush event first Ux_FlushEventByRange(NVTEVT_KEY_EVT_START,NVTEVT_KEY_EVT_END); //stop scan //SxTimer_SetFuncActive(SX_TIMER_DET_STRG_ID, FALSE); SxTimer_SetFuncActive(SX_TIMER_DET_SYSTEM_BUSY_ID, FALSE); Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_INIT_PLAY_MOVIE, 1, &g_UIPlayMediaObj); // Start to Play Ux_SendEvent(&UIMoviePlayObjCtrl, NVTEVT_PLAY_PLAY_MOVIE, 2, g_uiUIFlowWndPlayCurrenSpeed, g_uiUIFlowWndPlayCurrenDirection); if (KeyScan_GetPlugDev()!=PLUG_HDMI) { //FlowPB_IconDrawMovPlayVolumn(g_uiUIFlowWndPlayCurrentVolume); } FlowPB_IconDrawMovPlay(TRUE); g_PlbData.State = PLB_ST_PLAY_MOV; } break; } //#NT#2012/08/31#Calvin Chang -end return NVTEVT_CONSUME; }