FreeCalypso > hg > fc-tourmaline
view src/cs/services/dar/tests/dar_test_regr.c @ 62:089c1882788c
AT%CBC extended to report Ichg
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 22 Oct 2020 22:37:31 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/********************************************************************************/ /* */ /* File Name: dar_test_regr.c */ /* */ /* Purpose: This file gathers non regression tests for DAR. */ /* */ /* Note: None. */ /* */ /* Version 0.1 */ /* */ /* Date Modification */ /* ---------------------------------------------------------------------------*/ /* 27 September 2001 Create */ /* */ /* Author Stephanie Gerthoux */ /* */ /* (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved */ /********************************************************************************/ /********************************************************************************/ /* */ /* Include files used for Diaagnose riviera testing. */ /* */ /********************************************************************************/ #include "dar/tests/dar_test.h" #include "rv/rv_defined_swe.h" #ifdef RVM_DAR_SWE #if (DAR_REGR == SW_COMPILED) #include "rv/rv_general.h" #include "rvm/rvm_use_id_list.h" #include "rvm/rvm_gen.h" #include "dar/tests/dar_test_regr.h" #include "dar/dar_api.h" #include "dar/dar_structs_i.h" #include "dar/dar_messages_i.h" #include "rvf/rvf_target.h" #include "dar/dar_const_i.h" #include "dar/dar_error_hdlr_i.h" #include "dar/dar_macro_i.h" /**** Global variables ****/ /* Define a pointer to the Global Environment Control block */ extern T_DAR_ENV_CTRL_BLK *dar_gbl_var_p; /********************************************************************************/ /* */ /* Declare function prototype used for Riviera DAR testing. */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_test_regr_return_verdict ( T_RV_REGR_ERR_TYPE error_type); /* global variable to detect if the call back function was called */ INT8 dar_call_back_called = 1; extern char dar_write_buffer[DAR_MAX_BUFFER_SIZE]; /********************************************************************************/ /* */ /* DAR CALLBACK FUNCTION */ /* */ /* Description: call back funtion used for the DAR test */ /* */ /* */ /********************************************************************************/ T_RV_RET dar_callback_test_function (T_DAR_BUFFER buffer_p) { rvf_free_buf((T_RVF_BUFFER *)buffer_p); RV_TEST_TRACE_LOW ("DAR TEST REGR:DAR CALLBACK FUNCTION"); return(RV_OK); } /********************* End of dar_callback_function *****************************/ /********************************************************************************/ /* */ /* DAR STORE RECOVERY DATA FUNCTION */ /* */ /* Decription: Store data before a reset */ /* */ /* */ /********************************************************************************/ T_RV_RET dar_store_recovery_data(T_DAR_BUFFER buffer_p,UINT16 length) { UINT8 i=0; for(i=0;i<length;i++) { buffer_p[i] = 9; } return(RV_OK); } /********************************************************************************/ /* */ /* DAR TEST REGISTER */ /* */ /* Decription: test register funtion used to save the return path */ /* */ /* */ /********************************************************************************/ T_RV_RET dar_test_register (T_RV_RETURN return_path) { if (return_path.callback_func == NULL) { dar_gbl_var_p->return_path.addr_id = return_path.addr_id; dar_gbl_var_p->return_path.callback_func = NULL; } else { dar_gbl_var_p->return_path.callback_func = return_path.callback_func; } return(RV_OK); } /********************* End of dar_test_register ********************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 1 */ /* */ /* Decription: Test the dar filter function. */ /* Add a group */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_1 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id; T_RV_RETURN return_path; UINT8 i; /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter */ filter_use_id = KPD_USE_ID; /* start the dar filter - Add the group */ if (dar_diagnose_swe_filter(filter_use_id, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } rvf_delay(RVF_MS_TO_TICKS(3000)); return(TEST_PASSED); } /******************** End of dar_regr_test_1 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 2 */ /* */ /* Decription: Test the dar filter function. */ /* Search a group */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_2 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id1; T_RVM_USE_ID filter_use_id2; T_RV_RETURN return_path; UINT8 i; /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id1 = KPD_USE_ID; /* start the dar filter use1 */ if (dar_diagnose_swe_filter(filter_use_id1, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); /*----------------------------------------------------------------------------*/ /* Add the dar filter 2 */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter */ filter_use_id2 = RTC_USE_ID; /* start the dar filter - Warning level*/ if (dar_diagnose_swe_filter(filter_use_id2, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } /* start the dar filter - Debug level*/ if (dar_diagnose_swe_filter(filter_use_id2, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } return(TEST_PASSED); } /******************** End of dar_regr_test_2 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 3 */ /* */ /* Decription: Test the dar filter function. */ /* DELETE a group */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_3 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id; T_RV_RETURN return_path; UINT8 i; /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter */ filter_use_id = KPD_USE_ID; /* start the dar filter */ /* Add the Debug level (Add Debug + Warning level */ if (dar_diagnose_swe_filter(filter_use_id, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s*/ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } /* Delete the Warning level */ /* It deletes the Warning and Debug Level */ if (dar_diagnose_swe_filter(filter_use_id, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } return(TEST_PASSED); } /******************** End of dar_regr_test_3 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 4 */ /* */ /* Decription: Test the dar filter function. */ /* add more than DAR max number group */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_4 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id0; T_RVM_USE_ID filter_use_id1; T_RVM_USE_ID filter_use_id2; T_RVM_USE_ID filter_use_id3; T_RVM_USE_ID filter_use_id4; T_RV_RETURN return_path; UINT8 i; /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter */ filter_use_id0 = RVM_USE_ID; filter_use_id1 = KPD_USE_ID; filter_use_id2 = HCI_USE_ID; filter_use_id3 = AUDIO_USE_ID; filter_use_id4 = MKS_USE_ID; /* start the dar filter */ if (dar_diagnose_swe_filter(filter_use_id0, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); if (dar_diagnose_swe_filter(filter_use_id1, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); if (dar_diagnose_swe_filter(filter_use_id2, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); if (dar_diagnose_swe_filter(filter_use_id3, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); if (dar_diagnose_swe_filter(filter_use_id4, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { //DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } return(TEST_PASSED); } /******************** End of dar_regr_test_4 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 5 */ /* */ /* Decription: Test the dar write function. */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_5 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id; /* Use ID */ T_RVM_USE_ID filter_use_id_2; /* Use ID */ T_RV_RETURN return_path; UINT16 i; T_DAR_INFO *buffer_p= "KPD test"; /* diagnose data to store */ T_DAR_INFO *buffer_2_p= "KPD +1 test"; /* diagnose data to store */ T_DAR_INFO *buffer_3_p= "Warning Audio without filter"; /* diagnose data to store */ /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id = KPD_USE_ID; filter_use_id_2 = (KPD_USE_ID + 0x60); /* start the dar filter */ if (dar_diagnose_swe_filter(filter_use_id, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* start the dar filter */ if (dar_diagnose_swe_filter(filter_use_id_2, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } /* start the dar diagnose write function */ for (i=0; i<1000; i++) { if ( dar_diagnose_write( buffer_p, DAR_ASCII_FORMAT, DAR_WARNING, filter_use_id) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } } rvf_delay(RVF_MS_TO_TICKS(1000)); /* start the dar diagnose write function */ if ( dar_diagnose_write( buffer_2_p, DAR_ASCII_FORMAT, DAR_WARNING, filter_use_id_2) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); /* Audio warning without filtering */ rvf_send_trace (buffer_3_p,(sizeof("Warning Audio without filter")-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,AUDIO_USE_ID); //for (i=0; i<DAR_MAX_BUFFER_SIZE; i++) //{ // DAR_SEND_TRACE_PARAM("Diagnose write test",dar_write_buffer[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} return(TEST_PASSED); } /******************** End of dar_regr_test_5 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 6 */ /* */ /* Decription: Test the dar write function with a bad mask level. */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_6 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id; /* Use ID */ T_RV_RETURN return_path; UINT8 i; T_DAR_INFO *buffer_p= "Diagnose Test"; /* diagnose data to store */ /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id = AUDIO_USE_ID; /* start the dar filter */ if (dar_diagnose_swe_filter(filter_use_id, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { //DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } /* start the dar diagnose write function */ if ( dar_diagnose_write( buffer_p, DAR_ASCII_FORMAT, DAR_DEBUG, filter_use_id) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); //for (i=0; i<DAR_MAX_BUFFER_SIZE; i++) //{ //DAR_SEND_TRACE_PARAM("Diagnose write test",dar_write_buffer[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} return(TEST_PASSED); } /******************** End of dar_regr_test_6 function ***************************/ /***********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 7 */ /* */ /* Decription: Test the dar write function. */ /* Write more data than DAR Buffer max size in order to test the */ /* circular buffer. */ /* */ /***********************************************************************************/ T_RV_REGR_RET dar_regr_test_7 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id; /* Use ID */ T_RV_RETURN return_path; UINT8 i; /* diagnose data to store */ T_DAR_INFO *buffer_p= "DAR circular buffer tested "; /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id = AUDIO_USE_ID; /* start the dar filter */ if (dar_diagnose_swe_filter(filter_use_id, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); /* start the dar diagnose write function */ if ( dar_diagnose_write( buffer_p, DAR_ASCII_FORMAT, DAR_WARNING, filter_use_id) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); //for (i=0; i<DAR_MAX_BUFFER_SIZE; i++) // { //DAR_SEND_TRACE_PARAM("Diagnose write test",dar_write_buffer[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} return(TEST_PASSED); } /******************** End of dar_regr_test_7 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 8 */ /* */ /* Decription: Test the dar write function. */ /* Store 2 string */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_8 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id1; /* Use ID1 */ T_RVM_USE_ID filter_use_id2; /* Use ID2 */ T_RV_RETURN return_path; UINT8 i; T_DAR_INFO *buffer_p_1= "Diagnose test"; /* diagnose data to store */ T_DAR_INFO *buffer_p_2= "DAR"; /* diagnose data to store */ /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*------------------------------------------------------------------------------*/ /* start the dar filter 1 */ /*------------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id1= AUDIO_USE_ID; /* start the dar filter */ if (dar_diagnose_swe_filter(filter_use_id1, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /*------------------------------------------------------------------------------*/ /* start the dar filter 2 */ /*------------------------------------------------------------------------------*/ /* fill the filter parameter use2 */ filter_use_id2 = KPD_USE_ID; /* start the dar filter */ if (dar_diagnose_swe_filter(filter_use_id2, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { //DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } /*------------------------------------------------------------------------------*/ /* start the dar diagnose write */ /*------------------------------------------------------------------------------*/ /* start the dar_filter_1 diagnose write function */ if ( dar_diagnose_write( buffer_p_1, DAR_ASCII_FORMAT, DAR_WARNING, filter_use_id1) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* start the dar_filter_2 diagnose write function */ if ( dar_diagnose_write( buffer_p_2, DAR_ASCII_FORMAT, DAR_DEBUG, filter_use_id2) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); // for (i=0; i<DAR_MAX_BUFFER_SIZE; i++) //{ //DAR_SEND_TRACE_PARAM("Diagnose write test",dar_write_buffer[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} return(TEST_PASSED); } /******************** End of dar_regr_test_8 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 9 */ /* */ /* Decription: Test the dar write function. */ /* Test the DAR_NO_DIAGNOSE message */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_9 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id1; /* Use ID1 */ T_RV_RETURN return_path; UINT8 i; T_DAR_INFO *buffer_p_1= "Diagnose test"; /* diagnose data to store */ /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*------------------------------------------------------------------------------*/ /* start the dar filter 1 */ /*------------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id1= AUDIO_USE_ID; /* start the dar filter with debiug level */ if (dar_diagnose_swe_filter(filter_use_id1, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); /*------------------------------------------------------------------------------*/ /* start the dar diagnose write */ /*------------------------------------------------------------------------------*/ /* start the dar_filter_1 diagnose write function wih debug level */ if ( dar_diagnose_write( buffer_p_1, DAR_ASCII_FORMAT, DAR_DEBUG, filter_use_id1) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); //for (i=0; i<DAR_MAX_BUFFER_SIZE; i++) //{ //DAR_SEND_TRACE_PARAM("Diagnose write test",dar_write_buffer[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} /*------------------------------------------------------------------------------*/ /* start the dar filter 1 */ /*------------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id1 = AUDIO_USE_ID; /* start the dar filter with no_diagnose level*/ if (dar_diagnose_swe_filter(filter_use_id1, DAR_NO_DIAGNOSE) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { //DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } /* start the dar_filter_1 diagnose write function with debug level */ /* The dar filter has been started with no_diagnose_level. So an error must be occured*/ if ( dar_diagnose_write( buffer_p_1, DAR_ASCII_FORMAT, DAR_DEBUG, filter_use_id1) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); //for (i=0; i<DAR_MAX_BUFFER_SIZE; i++) //{ //DAR_SEND_TRACE_PARAM("Diagnose write test",dar_write_buffer[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); for (i=0; i<DAR_MAX_GROUP_NB; i++) { //DAR_SEND_TRACE_PARAM("filter_array group test",dar_gbl_var_p ->dar_filter_array[i].group_nb,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array warning test",dar_gbl_var_p ->dar_filter_array[i].mask_warning,RV_TRACE_LEVEL_DEBUG_HIGH); //DAR_SEND_TRACE_PARAM("filter_array debug test",dar_gbl_var_p ->dar_filter_array[i].mask_debug,RV_TRACE_LEVEL_DEBUG_HIGH); } /* start the dar_filter_1 diagnose write function with warning level*/ /* The dar filter has been started with no_diagnose_level. So an error must be occured*/ if ( dar_diagnose_write( buffer_p_1, DAR_ASCII_FORMAT, DAR_WARNING, filter_use_id1) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); //for (i=0; i<DAR_MAX_BUFFER_SIZE; i++) //{ //DAR_SEND_TRACE_PARAM("Diagnose write test",dar_write_buffer[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} return(TEST_PASSED); } /******************** End of dar_regr_test_9 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 10 */ /* */ /* Decription: Test the dar emergency function. */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_10 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id; /* Use ID */ T_RV_RETURN return_path; UINT8 i; T_DAR_INFO *buffer_p= "DAR emergency"; /* diagnose data to store */ /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); /*----------------------------------------------------------------------------*/ /* start the dar emergency */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id= AUDIO_USE_ID; DAR_SEND_TRACE("The system will be reset",RV_TRACE_LEVEL_DEBUG_HIGH); rvf_delay(RVF_MS_TO_TICKS(1000)); /* start the dar diagnose write function */ if ( dar_diagnose_generate_emergency( buffer_p, DAR_ASCII_FORMAT, filter_use_id) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_delay(RVF_MS_TO_TICKS(1000)); //for (i=0; i<DAR_MAX_BUFFER_SIZE; i++) //{ //DAR_SEND_TRACE_PARAM("Diagnose emergency test",(UINT8)dar_write_buffer[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} return(TEST_PASSED); } /******************** End of dar_regr_test_10 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 11 */ /* */ /* Decription: Test the dar_reccovery_get_status after a power ON/OFF */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_11 (T_RV_REGR_ERR_TYPE *error_type) { T_DAR_RECOVERY_STATUS status=0; /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); /*------------------------------------------------------------------------------*/ /* start the dar_recovery_get_status */ /*------------------------------------------------------------------------------*/ /* Get the status */ if (dar_recovery_get_status(&status)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } return(TEST_PASSED); } /******************** End of dar_regr_test_11 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 12 */ /* */ /* Decription: Test the dar_reset_system */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_12 (T_RV_REGR_ERR_TYPE *error_type) { /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); DAR_SEND_TRACE("The system will be reset",RV_TRACE_LEVEL_DEBUG_HIGH); rvf_delay(RVF_MS_TO_TICKS(1000)); /*---------------------------------------------------------------------------*/ /* start the dar_reset_system */ /*---------------------------------------------------------------------------*/ if (dar_reset_system()!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } return(TEST_PASSED); } /******************** End of dar_regr_test_12 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 13 */ /* */ /* Decription: Test the Dar_diagnose_generate_emergency. */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_13 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id; /* Use ID */ T_DAR_INFO *buffer_p= "DAR EMERGENCY "; /* diagnose data to store */ /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); /*----------------------------------------------------------------------------*/ /* start the dar emergency */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter use1 */ filter_use_id = AUDIO_USE_ID; DAR_SEND_TRACE("The system will be reset",RV_TRACE_LEVEL_DEBUG_HIGH); rvf_delay(RVF_MS_TO_TICKS(1000)); /* Generate an emergency */ if (dar_diagnose_generate_emergency(buffer_p,DAR_ASCII_FORMAT, filter_use_id)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } return(TEST_PASSED); } /******************** End of dar_regr_test_13 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 14 */ /* */ /* Decription: Test the dar_start_watchdog_timer. */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_14 (T_RV_REGR_ERR_TYPE *error_type) { UINT16 timer = 3000; /* 3000 millisecondes before the timer expires */ /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); /*----------------------------------------------------------------------------*/ /* start the dar_start_watchdog_timer */ /*----------------------------------------------------------------------------*/ if (dar_start_watchdog_timer(timer)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } return(TEST_PASSED); } /******************** End of dar_regr_test_14 function **************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 15 */ /* */ /* Decription: Test the dar_reload_watchdog_timer. */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_15 (T_RV_REGR_ERR_TYPE *error_type) { UINT16 timer = 3000; /* 3000 millisecondes before the timer expires */ /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); /*----------------------------------------------------------------------------*/ /* start the dar_start_watchdog_timer */ /*----------------------------------------------------------------------------*/ if (dar_start_watchdog_timer(timer)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /*----------------------------------------------------------------------------*/ /* start the dar_reload_watchdog_timer */ /*----------------------------------------------------------------------------*/ /* wait 1 s*/ rvf_delay(RVF_MS_TO_TICKS(1000)); /* reload the Watchdog timer */ if (dar_reload_watchdog_timer()!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* wait 1 s*/ rvf_delay(RVF_MS_TO_TICKS(1000)); /* reload the Watchdog timer */ if (dar_reload_watchdog_timer()!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* wait 1 s*/ rvf_delay(RVF_MS_TO_TICKS(1000)); DAR_SEND_TRACE("The system will be reset",RV_TRACE_LEVEL_DEBUG_HIGH); rvf_delay(RVF_MS_TO_TICKS(1000)); /* reload the Watchdog timer */ if (dar_reload_watchdog_timer()!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } return(TEST_PASSED); } /******************** End of dar_regr_test_15 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 16 */ /* */ /* Decription: Test the dar_start_watchdog_timer and then generate an infinite */ /* loop */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_16 (T_RV_REGR_ERR_TYPE *error_type) { UINT16 timer = 3000; /* 3000 millisecondes before the timer expires */ /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); /*----------------------------------------------------------------------------*/ /* start the dar_start_watchdog_timer */ /*----------------------------------------------------------------------------*/ if (dar_start_watchdog_timer(timer)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); DAR_SEND_TRACE("The system will be reset",RV_TRACE_LEVEL_DEBUG_HIGH); rvf_delay(RVF_MS_TO_TICKS(1000)); /* Generate an infinite loop */ #ifndef _WINDOWS while (1) { } #endif return(TEST_PASSED); } /******************** End of dar_regr_test_16 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 17 */ /* */ /* Decription: Test the dar_start_watchdog_timer, Stop it and generate a */ /* voluntary reset */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_17 (T_RV_REGR_ERR_TYPE *error_type) { UINT8 timer = 3; /* 3 secondes before the timer expires */ DAR_SEND_TRACE("The system will be reset",RV_TRACE_LEVEL_DEBUG_HIGH); rvf_delay(RVF_MS_TO_TICKS(1000)); /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); /*---------------------------------------------------------------------------*/ /* start the dar_start_watchdog_timer */ /*---------------------------------------------------------------------------*/ if (dar_start_watchdog_timer(timer)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Wait 1s */ rvf_delay(RVF_MS_TO_TICKS(1000)); /*----------------------------------------------------------------------------*/ /* stop the watchdog timer */ /*----------------------------------------------------------------------------*/ if (dar_stop_watchdog_timer()!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } DAR_SEND_TRACE("The system will be reset",RV_TRACE_LEVEL_DEBUG_HIGH); rvf_delay(RVF_MS_TO_TICKS(1000)); /*----------------------------------------------------------------------------*/ /* start the dar_reset_system */ /*----------------------------------------------------------------------------*/ if (dar_reset_system()!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } return(TEST_PASSED); } /******************** End of dar_regr_test_17 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 18 */ /* */ /* Decription: Test the exceptions */ /* Jump to an unknow address in order to generate an exception */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_18 (T_RV_REGR_ERR_TYPE *error_type) { /*---------------------------------------------------------------------------*/ /*jump to an unreferenced address in order to crash the board */ /*---------------------------------------------------------------------------*/ /* Jump to address 3000000 where nothing is defined */ /* an exception must be generated */ #ifndef _WINDOWS /* Variable declaration */ void (*jump_address)() = (void (*)()) ((unsigned)0x2000000); rvf_delay(RVF_MS_TO_TICKS(2000)); /* call the dar recovery config */ if (dar_recovery_config(dar_store_recovery_data)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } (*jump_address)(); #endif return(TEST_PASSED); } /******************** End of dar_regr_test_18 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 19 */ /* */ /* Decription: Test the exceptions */ /* Jump to an address that contains variables in order */ /* to generate an exception */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_19 (T_RV_REGR_ERR_TYPE *error_type) { /*--------------------------------------------------------------------------*/ /*jump to an unreferenced address in order to crash the board */ /*--------------------------------------------------------------------------*/ /* Jump to address 1000000 which contains variables */ /* an exception must be generated */ #ifndef _WINDOWS /* Variable declaration */ void (*jump_address)() = (void (*)()) ((unsigned)0x1000000); /* call the dar recovery config */ if (dar_recovery_config(dar_store_recovery_data)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } (*jump_address)(); #endif return(TEST_PASSED); } /******************** End of dar_regr_test_19 function **************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 20 */ /* */ /* Description: Give the status and the recovery data */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_20 (T_RV_REGR_ERR_TYPE *error_type) { /* Declare local variables */ T_DAR_RECOVERY_STATUS status = 0; T_DAR_BUFFER buffer_p = NULL; UINT8 i = 0; T_RVF_MB_STATUS mb_status = RVF_GREEN; /* allocate the memory for the buffer_p */ mb_status =rvf_get_buf (dar_gbl_var_p->mb_dar, DAR_RECOVERY_DATA_MAX_BUFFER_SIZE, (T_RVF_BUFFER **) (&buffer_p)); /* If insufficient resources, then report a memory error and abort. */ if (mb_status == RVF_YELLOW) { /* deallocate the memory */ rvf_free_buf((T_RVF_BUFFER *)buffer_p); dar_error_trace(DAR_ENTITY_NO_MEMORY); return (RV_NOT_SUPPORTED); } else if (mb_status == RVF_RED) { dar_error_trace(DAR_ENTITY_NO_MEMORY); return (RV_MEMORY_ERR); } /*----------------------------------------------------------------------------*/ /* start the dar_recovery_get_status */ /*----------------------------------------------------------------------------*/ /* Get the status */ if (dar_recovery_get_status(&status)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /*----------------------------------------------------------------------------*/ /* start the dar_get_recovery_data */ /*----------------------------------------------------------------------------*/ /* Retrieve data that have been stored in the buffer_p just before reset*/ if ( dar_get_recovery_data(buffer_p,DAR_RECOVERY_DATA_MAX_BUFFER_SIZE)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } /* Trace the buffer - used for Debug */ //for (i=0;i<DAR_RECOVERY_DATA_MAX_BUFFER_SIZE;i++) //{ //DAR_SEND_TRACE_PARAM("Dar recovery buffer before reset",buffer_p[i],RV_TRACE_LEVEL_DEBUG_HIGH); //} /* free the Header of the message */ rvf_free_buf((T_RVF_BUFFER *)buffer_p); return(TEST_PASSED); } /******************** End of dar_regr_test_20 function **************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 21 */ /* */ /* Decription: Test the branch to 0, if the callback is NULL */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_21 (T_RV_REGR_ERR_TYPE *error_type) { T_DAR_RECOVERY_STATUS status=0; /* call the dar recovery config */ dar_recovery_config(NULL); /*----------------------------------------------------------------------------*/ /* start the dar_recovery_get_status */ /*----------------------------------------------------------------------------*/ DAR_SEND_TRACE("The system will be reset",RV_TRACE_LEVEL_DEBUG_HIGH); rvf_delay(RVF_MS_TO_TICKS(1000)); /* Get the status */ if (dar_recovery_get_status(&status)!= RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } return(TEST_PASSED); } /******************** End of dar_regr_test_21 function **************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 22 */ /* */ /* Decription: Redirect trace(Warning/Debug) to DAR */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_22 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id_1; T_RVM_USE_ID filter_use_id_2; T_RV_RETURN return_path; /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter */ filter_use_id_1 = KPD_USE_ID; filter_use_id_2 = DAR_USE_ID; /* start the dar filter - Add the group */ if (dar_diagnose_swe_filter(filter_use_id_1, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } if (dar_diagnose_swe_filter(filter_use_id_2, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_send_trace ("KPD warning",(sizeof("KPD warning")-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,filter_use_id_1); rvf_send_trace ("KPD debug",(sizeof("KPD debug")-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_HIGH,filter_use_id_1); rvf_send_trace ("DAR warning",(sizeof("DAR warning")-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,filter_use_id_2); rvf_send_trace ("DAR debug",(sizeof("DAR debug")-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_HIGH,filter_use_id_2); rvf_delay(RVF_MS_TO_TICKS(3000)); return(TEST_PASSED); } /******************** End of dar_regr_test_22 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 23 */ /* */ /* Decription: Redirect trace(Warning/Error) to DAR */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_23 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id_1; T_RVM_USE_ID filter_use_id_2; T_RV_RETURN return_path; /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter */ filter_use_id_1 = AUDIO_USE_ID; filter_use_id_2 = DAR_USE_ID; /* start the dar filter - Add the group */ if (dar_diagnose_swe_filter(filter_use_id_1, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } if (dar_diagnose_swe_filter(filter_use_id_2, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_send_trace ("AUDIO warning",(sizeof("AUDIO warning")-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,filter_use_id_1); rvf_send_trace ("AUDIO debug",(sizeof("AUDIO debug")-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_HIGH,filter_use_id_1); rvf_send_trace ("DAR warning",(sizeof("DAR warning")-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,filter_use_id_2); rvf_send_trace ("DAR debug",(sizeof("DAR debug")-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_HIGH,filter_use_id_2); rvf_send_trace ("ETM error",(sizeof("ETM error")-1),NULL_PARAM,RV_TRACE_LEVEL_ERROR,ETM_USE_ID); rvf_delay(RVF_MS_TO_TICKS(3000)); return(TEST_PASSED); } /******************** End of dar_regr_test_23 function ***************************/ /********************************************************************************/ /* */ /* DAR NON REGRESSION TEST 24 */ /* */ /* Decription: Redirect trace(Error/Warning) to DAR */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_regr_test_24 (T_RV_REGR_ERR_TYPE *error_type) { T_RVM_USE_ID filter_use_id_1; T_RVM_USE_ID filter_use_id_2; T_RV_RETURN return_path; /* initalize the return path, for this test the return path is a message */ return_path.callback_func = NULL; return_path.addr_id = rvf_get_taskid(); /*----------------------------------------------------------------------------*/ /* start the dar filter */ /*----------------------------------------------------------------------------*/ /* fill the filter parameter */ filter_use_id_1 = AUDIO_USE_ID; filter_use_id_2 = DAR_USE_ID; /* start the dar filter - Add the group */ if (dar_diagnose_swe_filter(filter_use_id_1, DAR_WARNING) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } if (dar_diagnose_swe_filter(filter_use_id_2, DAR_DEBUG) != RV_OK) { *error_type = FUNCTION_ERROR; return (dar_test_regr_return_verdict(*error_type)); } rvf_send_trace ("ETM error",(sizeof("ETM error")-1),NULL_PARAM,RV_TRACE_LEVEL_ERROR,ETM_USE_ID); rvf_send_trace ("AUDIO warning",(sizeof("AUDIO warning")-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,filter_use_id_1); rvf_send_trace ("AUDIO debug",(sizeof("AUDIO debug")-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_HIGH,filter_use_id_1); rvf_send_trace ("DAR warning",(sizeof("DAR warning")-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,filter_use_id_2); rvf_send_trace ("DAR debug",(sizeof("DAR debug")-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_HIGH,filter_use_id_2); rvf_delay(RVF_MS_TO_TICKS(3000)); return(TEST_PASSED); } /******************** End of dar_regr_test_24 function ***************************/ /**********************************************************************************/ /* */ /* Function Name: dar_test_regr_return_verdict */ /* */ /* Purpose: The purpose of this function is to return the DAR test verdict */ /* coresponding to the type of error. */ /* */ /* Input Parameters: */ /* error_type : type_of_error */ /* */ /* Output Parameters: */ /* verdict of the test. */ /* */ /* Note: */ /* None. */ /* */ /* Revision History: */ /* 19 October 2001 Stephanie Gerthoux: Creation. */ /* */ /**********************************************************************************/ T_RV_REGR_RET dar_test_regr_return_verdict ( T_RV_REGR_ERR_TYPE error_type) { /******************** dar_test_regr_return_verdict function begins ************/ switch(error_type) { case NO_EVENT_RECV: case BAD_EVENT_RECV: case EVENT_PARAM_ERROR: case FUNCTION_ERROR: { return(TEST_FAILED); break; } case MEMORY_ERROR: { return(TEST_IRRECOVERABLY_FAILED); break; } default: { return(TEST_IRRECOVERABLY_FAILED); break; } } /* switch(error_type) */ } /******************** End of dar_test_regr_return_verdict function **************/ /********************************************************************************/ /* */ /* Function Name: trace_dar_test_verdict */ /* */ /* Purpose: The purpose of this function is to trace test verdict. */ /* */ /* Input Parameters: */ /* test_verdict : verdict of the test */ /* nb_of_test_in_list : number of test to pass */ /* nb_of_test_succeeded : number of the test passed */ /* error_flag : error flag of the test */ /* */ /* Output Parameters: */ /* None. */ /* */ /* Note: */ /* None. */ /* */ /* Revision History: */ /* 19 October 2001 Stephanie Gerthoux: Creation. */ /* */ /********************************************************************************/ T_RV_RET trace_dar_test_verdict ( T_RV_TEST_RET test_verdict, T_RV_REGR_TEST_TOT nb_of_test_in_list, T_RV_REGR_TEST_TOT nb_of_test_succeeded, T_RV_REGR_ERR_TYPE *error_type) { /******************** trace_dar_test_verdict function begins ******************/ if (nb_of_test_succeeded != nb_of_test_in_list) { switch (test_verdict) { case TEST_PASSED: { RV_TEST_TRACE_HIGH ("PASS DAR TEST"); break; } case TEST_FAILED: { RV_TEST_TRACE_HIGH ("FAIL DAR TEST"); switch(*error_type) { case NO_EVENT_RECV: { RV_TEST_TRACE_HIGH ("Received no event from DAR entity"); break; } case BAD_EVENT_RECV: { RV_TEST_TRACE_HIGH ("Received event not waited in DAR entity"); break; } case EVENT_PARAM_ERROR: { RV_TEST_TRACE_HIGH ("Received event with wrong parameters in DAR entity"); break; } case FUNCTION_ERROR: { RV_TEST_TRACE_HIGH ("A DAR API function has been called and an unexpected error occurred"); break; } case MEMORY_ERROR: { RV_TEST_TRACE_HIGH ("A memory error occurs in the DAR entity"); break; } } break; } case TEST_IRRECOVERABLY_FAILED: { RV_TEST_TRACE_HIGH ("FAIL DAR TEST"); switch(*error_type) { case NO_EVENT_RECV: { RV_TEST_TRACE_HIGH ("Received no event from DAR entity"); break; } case BAD_EVENT_RECV: { RV_TEST_TRACE_HIGH ("DAR entity received event not waited "); break; } case EVENT_PARAM_ERROR: { RV_TEST_TRACE_HIGH ("Received event with wrong parameters"); break; } case FUNCTION_ERROR: { RV_TEST_TRACE_HIGH ("A DAR API function has been called and an unexpected error occurred"); break; } case MEMORY_ERROR: { RV_TEST_TRACE_HIGH ("A memory error occurs in the DAR entity"); break; } } break; } default: { RV_TEST_TRACE_ERROR ("!!! DAR ERROR !!! Wrong test_verdict value"); break; } } /* switch(test_verdict) */ } /* if (nb_of_test_succeeded != nb_of_test_in_list) */ else /* (nb_of_test_succeeded == nb_of_test_in_list) -> All tests performed */ { if (*error_type != NO_ERR) { RV_TEST_TRACE_HIGH ("!!! ERROR !!! DAR NON REGRESSION PERFORMED WITH ERROR(S)"); } else { RV_TEST_TRACE_HIGH ("DAR NON REGRESSION PERFORMED WITH NO ERROR"); } RV_TEST_TRACE_HIGH ("*************** END OF DAR NON REGRESSION ***************"); } return (RV_OK); } /******************** End of trace_dar_test_verdict function ********************/ /********************************************************************************/ /* */ /* Function Name: dar_test_rgr */ /* */ /* Purpose: This function executes the DAR non regression tests. */ /* */ /* Input Parameters: */ /* None. */ /* */ /* Output Parameters: */ /* None. */ /* */ /* Note: */ /* None. */ /* */ /* Revision History: */ /* 27 September 2001 Stephanie Gerthoux: Creation. */ /* */ /********************************************************************************/ T_RV_REGR_RET dar_test_regr ( T_RV_REGR_TEST_LIST list[], T_RV_REGR_TEST_TOT nb_of_test_in_list, T_RV_REGR_TEST_OCC test_occ) { T_RV_REGR_ERR_TYPE error_type = NO_ERR; T_RV_REGR_RET test_verdict = TEST_PASSED; T_RV_REGR_TEST_TOT i = 0; T_RV_REGR_TEST_OCC j = 0; /************************* Start dar_test_regr function ***********************/ RV_TEST_TRACE_HIGH ("**************** START DAR NON REGRESSION **************"); /************************************************************************/ /* */ /* Memory dump -> check memory and stack used before testing. */ /* */ /************************************************************************/ rvf_dump_mem (); rvf_dump_tasks(); for (i=0; i<nb_of_test_in_list; i++) { for (j=0; j<test_occ; j++) { if (test_verdict != TEST_IRRECOVERABLY_FAILED) { switch (list[i].list_nbr) { case 1: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 1: Dar filter start- add a group"); test_verdict = dar_regr_test_1 (&error_type); break; } case 2: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 2: Dar filter start- search a group"); test_verdict = dar_regr_test_2 (&error_type); break; } case 3: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 3: Dar filter start- delete a group"); test_verdict = dar_regr_test_3 (&error_type); break; } case 4: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 4: DAR filter - add more than DAR max number group "); test_verdict = dar_regr_test_4 (&error_type); break; } case 5: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 5: DAR write function "); test_verdict = dar_regr_test_5 (&error_type); break; } case 6: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 6: DAR write function with bad debug level"); test_verdict = dar_regr_test_6 (&error_type); break; } case 7: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 7: DAR write function - Long data "); test_verdict = dar_regr_test_7 (&error_type); break; } case 8: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 8: DAR write function - Store 2 string"); test_verdict = dar_regr_test_8 (&error_type); break; } case 9: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 9: DAR write function - DAR_NO_DIAGNOSE message"); test_verdict = dar_regr_test_9 (&error_type); break; } case 10: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 10: DAR emergency function ( PC)"); test_verdict = dar_regr_test_10 (&error_type); break; } case 11: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 11: DAR recovery get status after a reset or an ON/OFF"); test_verdict = dar_regr_test_11 (&error_type); break; } case 12: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 12: DAR reset system"); test_verdict = dar_regr_test_12 (&error_type); break; } case 13: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 13: DAR diagnose generate emergency (board)"); test_verdict = dar_regr_test_13 (&error_type); break; } case 14: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 14: DAR start watchdog timer"); test_verdict = dar_regr_test_14 (&error_type); break; } case 15: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 15: DAR reload watchdog timer"); test_verdict = dar_regr_test_15 (&error_type); break; } case 16: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 16: DAR start watchdog timer + infinite loop"); test_verdict = dar_regr_test_16 (&error_type); break; } case 17: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 17: DAR start watchdog timer + stop + voluntary reset"); test_verdict = dar_regr_test_17 (&error_type); break; } case 18: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 18: DAR Exception: Jump to unknown address "); test_verdict = dar_regr_test_18 (&error_type); break; } case 19: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 19: DAR Exception : Jump to variables address"); /* call the dar recovery config */ dar_recovery_config(dar_store_recovery_data); test_verdict = dar_regr_test_19 (&error_type); break; } case 20: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 20: DAR recovery get status and get recovery data"); test_verdict = dar_regr_test_20 (&error_type); break; } case 21: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 21: DAR - Branch to 0 with a callback = NULL "); test_verdict = dar_regr_test_21 (&error_type); break; } case 22: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 22: Redirect trace(Warning/Debug) to DAR"); test_verdict = dar_regr_test_22 (&error_type); break; } case 23: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 23: Redirect trace(Warning/Error) to DAR"); test_verdict = dar_regr_test_23 (&error_type); break; } case 24: { RV_TEST_TRACE_HIGH ("**DAR TEST REGR 24: Redirect trace(Error/Warning) to DAR"); test_verdict = dar_regr_test_24 (&error_type); break; } default: { RV_TEST_TRACE_ERROR ("!!! ERROR !!! Invalid DAR test_number value for REGR test_type"); test_verdict = TEST_IRRECOVERABLY_FAILED; break; } } trace_dar_test_verdict (test_verdict, nb_of_test_in_list, i, &error_type); } /* End of "if (test_verdict != TEST_IRRECOVERABLY_FAILED)" */ } /* End of "for (j = 0; j < test_occ; j ++)" */ } /* End of "for (i = 0; i < nb_of_test_in_list; i ++)" */ trace_dar_test_verdict (test_verdict, nb_of_test_in_list, nb_of_test_in_list, &error_type); /************************************************************************/ /* */ /* Memory dump -> check memory and stack used before testing. */ /* */ /************************************************************************/ rvf_dump_mem (); rvf_dump_tasks(); return (test_verdict); } /************************** dar_test_regr function *************************/ #endif #endif /* ((DAR_REGR == SW_COMPILED) || (DAR_MISC == SW_COMPILED)) */ /********************************************************************************/ /* */ /* ------------------------------------------------ */ /* | WARNING - IMPORTANT | */ /* ------------------------------------------------ */ /* */ /* */ /* Function Name: dar_lib_test */ /* */ /* Purpose: This function is only used in order to have a function in the*/ /* dar_lib when the DAR is NOT_COMPILED */ /* */ /* Input Parameters: */ /* None */ /* */ /* Output Parameters: */ /* NONE */ /* */ /********************************************************************************/ void dar_lib_test(void) { }