From 3ee331434ea33d06161f6731c17fea43b51da90b Mon Sep 17 00:00:00 2001 From: Amritanshu Pandia Date: Mon, 12 Dec 2016 15:21:17 +0530 Subject: [PATCH] [ITC][voice-control][ACR-796][Added TCs for new APIs] Change-Id: Ib1517f4e43737e05569d1b4f0b9e7129aed5d662 Signed-off-by: Amritanshu Pandia --- .../voice-control/ITs-voice-control-common.c | 36 +-- src/itc/voice-control/ITs-voice-control.c | 248 ++++++++++++++++++ .../tct-voice-control-native_mobile.h | 10 + .../tct-voice-control-native_tv.h | 10 + .../tct-voice-control-native_wearable.h | 10 + 5 files changed, 298 insertions(+), 16 deletions(-) diff --git a/src/itc/voice-control/ITs-voice-control-common.c b/src/itc/voice-control/ITs-voice-control-common.c index 5a2a34e18..1e9148171 100755 --- a/src/itc/voice-control/ITs-voice-control-common.c +++ b/src/itc/voice-control/ITs-voice-control-common.c @@ -47,22 +47,26 @@ char* VoiceControlGetError(int nRet) char *szErrorVal = NULL; switch ( nRet ) { - case VC_ERROR_NONE: szErrorVal = "VC_ERROR_NONE"; break; - case VC_ERROR_OUT_OF_MEMORY: szErrorVal = "VC_ERROR_OUT_OF_MEMORY"; break; - case VC_ERROR_IO_ERROR: szErrorVal = "VC_ERROR_IO_ERROR"; break; - case VC_ERROR_INVALID_PARAMETER: szErrorVal = "VC_ERROR_INVALID_PARAMETER"; break; - case VC_ERROR_TIMED_OUT: szErrorVal = "VC_ERROR_TIMED_OUT"; break; - case VC_ERROR_RECORDER_BUSY: szErrorVal = "VC_ERROR_RECORDER_BUSY"; break; - case VC_ERROR_PERMISSION_DENIED: szErrorVal = "VC_ERROR_PERMISSION_DENIED"; break; - case VC_ERROR_NOT_SUPPORTED: szErrorVal = "VC_ERROR_NOT_SUPPORTED"; break; - case VC_ERROR_INVALID_STATE: szErrorVal = "VC_ERROR_INVALID_STATE"; break; - case VC_ERROR_INVALID_LANGUAGE: szErrorVal = "VC_ERROR_INVALID_LANGUAGE"; break; - case VC_ERROR_ENGINE_NOT_FOUND: szErrorVal = "VC_ERROR_ENGINE_NOT_FOUND"; break; - case VC_ERROR_OPERATION_FAILED: szErrorVal = "VC_ERROR_OPERATION_FAILED"; break; - case VC_ERROR_OPERATION_REJECTED: szErrorVal = "VC_ERROR_OPERATION_REJECTED"; break; - case VC_ERROR_ITERATION_END: szErrorVal = "VC_ERROR_ITERATION_END"; break; - case VC_ERROR_EMPTY: szErrorVal = "VC_ERROR_EMPTY"; break; - default: szErrorVal = "VC_ERROR_UNKNOWN"; break; + case VC_ERROR_NONE: szErrorVal = "VC_ERROR_NONE"; break; + case VC_ERROR_OUT_OF_MEMORY: szErrorVal = "VC_ERROR_OUT_OF_MEMORY"; break; + case VC_ERROR_IO_ERROR: szErrorVal = "VC_ERROR_IO_ERROR"; break; + case VC_ERROR_INVALID_PARAMETER: szErrorVal = "VC_ERROR_INVALID_PARAMETER"; break; + case VC_ERROR_TIMED_OUT: szErrorVal = "VC_ERROR_TIMED_OUT"; break; + case VC_ERROR_RECORDER_BUSY: szErrorVal = "VC_ERROR_RECORDER_BUSY"; break; + case VC_ERROR_PERMISSION_DENIED: szErrorVal = "VC_ERROR_PERMISSION_DENIED"; break; + case VC_ERROR_NOT_SUPPORTED: szErrorVal = "VC_ERROR_NOT_SUPPORTED"; break; + case VC_ERROR_INVALID_STATE: szErrorVal = "VC_ERROR_INVALID_STATE"; break; + case VC_ERROR_INVALID_LANGUAGE: szErrorVal = "VC_ERROR_INVALID_LANGUAGE"; break; + case VC_ERROR_ENGINE_NOT_FOUND: szErrorVal = "VC_ERROR_ENGINE_NOT_FOUND"; break; + case VC_ERROR_OPERATION_FAILED: szErrorVal = "VC_ERROR_OPERATION_FAILED"; break; + case VC_ERROR_OPERATION_REJECTED: szErrorVal = "VC_ERROR_OPERATION_REJECTED"; break; + case VC_ERROR_ITERATION_END: szErrorVal = "VC_ERROR_ITERATION_END"; break; + case VC_ERROR_EMPTY: szErrorVal = "VC_ERROR_EMPTY"; break; + case VC_ERROR_SERVICE_RESET: szErrorVal = "VC_ERROR_SERVICE_RESET"; break; + case VC_ERROR_IN_PROGRESS_TO_READY : szErrorVal = "VC_ERROR_IN_PROGRESS_TO_READY "; break; + case VC_ERROR_IN_PROGRESS_TO_RECORDING : szErrorVal = "VC_ERROR_IN_PROGRESS_TO_RECORDING "; break; + case VC_ERROR_IN_PROGRESS_TO_PROCESSING : szErrorVal = "VC_ERROR_IN_PROGRESS_TO_PROCESSING "; break; + default: szErrorVal = "VC_ERROR_UNKNOWN"; break; } return szErrorVal; } diff --git a/src/itc/voice-control/ITs-voice-control.c b/src/itc/voice-control/ITs-voice-control.c index 23e211e12..d352a6bb9 100755 --- a/src/itc/voice-control/ITs-voice-control.c +++ b/src/itc/voice-control/ITs-voice-control.c @@ -22,6 +22,7 @@ * @{ */ +static int g_vcState = -1; /****************************************************Callback Start****************************************************/ /** @@ -62,6 +63,8 @@ void StateChangedCallBack(vc_state_e previous, vc_state_e current, void* user_da FPRINTF("[Line : %d][%s] %s Callback Invoked\\n", __LINE__, API_NAMESPACE, "StateChangedCallBack"); #endif + g_vcState = current; + FPRINTF("[Line : %d][%s] Current state = %d\\n", __LINE__, API_NAMESPACE, g_vcState); g_CallBackHit = true; return; } @@ -1057,5 +1060,250 @@ int ITc_vc_foreach_supported_languages_p(void) return 0; } +/** + * @testcase ITc_vc_get_system_command_list_p + * @author SRID(a.pandia1) + * @reviewer SRID(shilpa.j) + * @type auto + * @since_tizen 3.0 + * @description Gets the system command list + * @scenario Gets the system command list + * @apicovered vc_get_system_command_list, vc_set_state_changed_cb, vc_prepare, vc_unprepare, vc_unset_state_changed_cb + * @passcase If vc_get_system_command_list and precondition APIS returns VC_ERROR_NONE + * @failcase If Precondition API or Target API Fails + * @precondition NA + * @postcondition NA + * */ +//& type: auto +//& purpose: Gets the system command list +int ITc_vc_get_system_command_list_p(void) +{ + START_TEST; + int nRet = -1; + vc_cmd_list_h h_List = NULL; + + nRet = vc_set_state_changed_cb(StateChangedCallBack, NULL); + PRINT_RESULT(VC_ERROR_NONE, nRet, "vc_set_state_changed_cb", VoiceControlGetError(nRet)); + + g_CallBackHit = false; + nRet = vc_prepare(); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_prepare", VoiceControlGetError(nRet), vc_unset_state_changed_cb()); + IterateEcoreLoop(); + PRINT_RESULT_CLEANUP(true, g_CallBackHit, "vc_prepare", "CallBack Not Invoked", vc_unset_state_changed_cb()); + + if(VC_STATE_READY != g_vcState) + { + FPRINTF("[Line : %d][%s] Current state is not VC_STATE_READY so exiting TC\\n", __LINE__, API_NAMESPACE); + vc_unprepare(); + vc_unset_state_changed_cb(); + return 1; + } + + // Target API + nRet = vc_get_system_command_list(&h_List); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_get_system_command_list", VoiceControlGetError(nRet), vc_unprepare();vc_unset_state_changed_cb()); + CHECK_HANDLE_CLEANUP(h_List, "vc_get_system_command_list", vc_unprepare();vc_unset_state_changed_cb()) + + FREE_MEMORY(h_List); + + nRet = vc_unprepare(); + PRINT_RESULT_NORETURN(VC_ERROR_NONE, nRet, "vc_unprepare", VoiceControlGetError(nRet)); + + nRet = vc_unset_state_changed_cb(); + PRINT_RESULT_NORETURN(VC_ERROR_NONE, nRet, "vc_unset_state_changed_cb", VoiceControlGetError(nRet)); + + return 0; +} + +/** + * @testcase ITc_vc_set_invocation_name_p + * @author SRID(a.pandia1) + * @reviewer SRID(shilpa.j) + * @type auto + * @since_tizen 3.0 + * @description Sets invocation name + * @scenario Sets invocation name + * @apicovered vc_set_invocation_name, vc_set_state_changed_cb, vc_prepare, vc_unprepare, vc_unset_state_changed_cb + * @passcase If vc_set_invocation_name and precondition APIS returns VC_ERROR_NONE + * @failcase If Precondition API or Target API Fails + * @precondition NA + * @postcondition NA + * */ +//& type: auto +//& purpose: Sets invocation name +int ITc_vc_set_invocation_name_p(void) +{ + START_TEST; + int nRet = -1; + const char* pszInvocName = "Test Name"; + + nRet = vc_set_state_changed_cb(StateChangedCallBack, NULL); + PRINT_RESULT(VC_ERROR_NONE, nRet, "vc_set_state_changed_cb", VoiceControlGetError(nRet)); + + g_CallBackHit = false; + nRet = vc_prepare(); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_prepare", VoiceControlGetError(nRet), vc_unset_state_changed_cb()); + IterateEcoreLoop(); + PRINT_RESULT_CLEANUP(true, g_CallBackHit, "vc_prepare", "CallBack Not Invoked", vc_unset_state_changed_cb()); + + if(VC_STATE_READY != g_vcState) + { + FPRINTF("[Line : %d][%s] Current state is not VC_STATE_READY so exiting TC\\n", __LINE__, API_NAMESPACE); + vc_unprepare(); + vc_unset_state_changed_cb(); + return 1; + } + + // Target API + nRet = vc_set_invocation_name(pszInvocName); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_set_invocation_name", VoiceControlGetError(nRet), vc_unprepare();vc_unset_state_changed_cb()); + + nRet = vc_unprepare(); + PRINT_RESULT_NORETURN(VC_ERROR_NONE, nRet, "vc_unprepare", VoiceControlGetError(nRet)); + + nRet = vc_unset_state_changed_cb(); + PRINT_RESULT_NORETURN(VC_ERROR_NONE, nRet, "vc_unset_state_changed_cb", VoiceControlGetError(nRet)); + + return 0; +} + +/** + * @testcase ITc_vc_request_dialog_p + * @author SRID(a.pandia1) + * @reviewer SRID(shilpa.j) + * @type auto + * @since_tizen 3.0 + * @description Requests to start the dialogue + * @scenario Requests to start the dialogue + * @apicovered vc_request_dialog, vc_set_state_changed_cb, vc_prepare, vc_unprepare, vc_unset_state_changed_cb + * @passcase If vc_request_dialog and precondition APIS returns VC_ERROR_NONE + * @failcase If Precondition API or Target API Fails + * @precondition NA + * @postcondition NA + * */ +//& type: auto +//& purpose: Requests to start the dialogue +int ITc_vc_request_dialog_p(void) +{ + START_TEST; + int nRet = -1; + const char* pszDispTxt = "Display Name"; + const char* pszUttTxt = "Spoken Text"; + bool bAutoStart = true; + + nRet = vc_set_state_changed_cb(StateChangedCallBack, NULL); + PRINT_RESULT(VC_ERROR_NONE, nRet, "vc_set_state_changed_cb", VoiceControlGetError(nRet)); + + g_CallBackHit = false; + nRet = vc_prepare(); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_prepare", VoiceControlGetError(nRet), vc_unset_state_changed_cb()); + IterateEcoreLoop(); + PRINT_RESULT_CLEANUP(true, g_CallBackHit, "vc_prepare", "CallBack Not Invoked", vc_unset_state_changed_cb()); + + if(VC_STATE_READY != g_vcState) + { + FPRINTF("[Line : %d][%s] Current state is not VC_STATE_READY so exiting TC\\n", __LINE__, API_NAMESPACE); + vc_unprepare(); + vc_unset_state_changed_cb(); + return 1; + } + + // Target API + nRet = vc_request_dialog(pszDispTxt, pszUttTxt, bAutoStart); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_request_dialog", VoiceControlGetError(nRet), vc_unprepare();vc_unset_state_changed_cb()); + + nRet = vc_unprepare(); + PRINT_RESULT_NORETURN(VC_ERROR_NONE, nRet, "vc_unprepare", VoiceControlGetError(nRet)); + + nRet = vc_unset_state_changed_cb(); + PRINT_RESULT_NORETURN(VC_ERROR_NONE, nRet, "vc_unset_state_changed_cb", VoiceControlGetError(nRet)); + + return 0; +} + +/** + * @testcase ITc_vc_cmd_get_unfixed_command_p + * @author SRID(a.pandia1) + * @reviewer SRID(shilpa.j) + * @type auto + * @since_tizen 3.0 + * @description Gets the unfixed command + * @scenario Gets the unfixed command + * @apicovered vc_cmd_get_unfixed_command, vc_cmd_create, vc_cmd_destroy + * @passcase If vc_cmd_create, vc_cmd_get_unfixed_command and vc_cmd_destroy returns VC_ERROR_NONE + * @failcase If Precondition API or Target API Fails + * @precondition NA + * @postcondition NA + * */ +//& type: auto +//& purpose: Gets the unfixed command +int ITc_vc_cmd_get_unfixed_command_p(void) +{ + START_TEST; + int nRet = -1; + vc_cmd_h hVcCommand = NULL; + char *pszCmd = NULL; + + nRet = vc_cmd_create(&hVcCommand); + PRINT_RESULT(VC_ERROR_NONE, nRet, "vc_cmd_create", VoiceControlGetError(nRet)); + CHECK_HANDLE(hVcCommand, "vc_cmd_create"); + + // Target API + nRet = vc_cmd_get_unfixed_command(hVcCommand, &pszCmd); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_cmd_get_unfixed_command", VoiceControlGetError(nRet),FREE_MEMORY(pszCmd);vc_cmd_destroy(hVcCommand)); + FREE_MEMORY(pszCmd); + + nRet = vc_cmd_destroy(hVcCommand); + PRINT_RESULT_NORETURN(VC_ERROR_NONE, nRet, "vc_cmd_destroy", VoiceControlGetError(nRet)); + + return 0; +} + +/** + * @testcase ITc_vc_cmd_set_get_format_p + * @author SRID(a.pandia1) + * @reviewer SRID(shilpa.j) + * @type auto + * @since_tizen 3.0 + * @description Sets and gets the command format + * @scenario Sets and gets the command format + * @apicovered vc_cmd_set_format, vc_cmd_get_format, vc_cmd_create, vc_cmd_destroy + * @passcase If vc_cmd_create, vc_cmd_set_format, vc_cmd_get_format and vc_cmd_destroy returns VC_ERROR_NONE + * @failcase If Precondition API or Target API Fails + * @precondition NA + * @postcondition NA + * */ +//& type: auto +//& purpose: Sets and gets the command format +int ITc_vc_cmd_set_get_format_p(void) +{ + START_TEST; + int nRet = -1; + vc_cmd_h hVcCommand = NULL; + int nGetFormat = -1; + + nRet = vc_cmd_create(&hVcCommand); + PRINT_RESULT(VC_ERROR_NONE, nRet, "vc_cmd_create", VoiceControlGetError(nRet)); + CHECK_HANDLE(hVcCommand, "vc_cmd_create"); + + // Target API + nRet = vc_cmd_set_format(hVcCommand, VC_COMMAND_FORMAT_FIXED); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_cmd_set_format", VoiceControlGetError(nRet), vc_cmd_destroy(hVcCommand)); + + nRet = vc_cmd_get_format(hVcCommand, &nGetFormat); + PRINT_RESULT_CLEANUP(VC_ERROR_NONE, nRet, "vc_cmd_get_format", VoiceControlGetError(nRet), vc_cmd_destroy(hVcCommand)); + + if(nGetFormat != VC_COMMAND_FORMAT_FIXED) + { + FPRINTF("[Line : %d][%s] Set and get format values mismatch\\n", __LINE__, API_NAMESPACE); + vc_cmd_destroy(hVcCommand); + return 1; + } + + nRet = vc_cmd_destroy(hVcCommand); + PRINT_RESULT_NORETURN(VC_ERROR_NONE, nRet, "vc_cmd_destroy", VoiceControlGetError(nRet)); + + return 0; +} /** @} */ /** @} */ \ No newline at end of file diff --git a/src/itc/voice-control/tct-voice-control-native_mobile.h b/src/itc/voice-control/tct-voice-control-native_mobile.h index 08c0c7147..ed69e39a8 100755 --- a/src/itc/voice-control/tct-voice-control-native_mobile.h +++ b/src/itc/voice-control/tct-voice-control-native_mobile.h @@ -44,6 +44,11 @@ extern int ITc_vc_set_unset_service_state_changed_cb_p(void); extern int ITc_vc_set_unset_result_cb_p(void); extern int ITc_vc_get_current_language_p(void); extern int ITc_vc_foreach_supported_languages_p(void); +extern int ITc_vc_get_system_command_list_p(void); +extern int ITc_vc_set_invocation_name_p(void); +extern int ITc_vc_request_dialog_p(void); +extern int ITc_vc_cmd_get_unfixed_command_p(void); +extern int ITc_vc_cmd_set_get_format_p(void); testcase tc_array[] = { {"ITc_vc_cmd_create_destroy_p", ITc_vc_cmd_create_destroy_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, @@ -68,6 +73,11 @@ testcase tc_array[] = { {"ITc_vc_set_unset_result_cb_p", ITc_vc_set_unset_result_cb_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {"ITc_vc_get_current_language_p", ITc_vc_get_current_language_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {"ITc_vc_foreach_supported_languages_p", ITc_vc_foreach_supported_languages_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_get_system_command_list_p", ITc_vc_get_system_command_list_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_set_invocation_name_p", ITc_vc_set_invocation_name_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_request_dialog_p", ITc_vc_request_dialog_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_cmd_get_unfixed_command_p", ITc_vc_cmd_get_unfixed_command_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_cmd_set_get_format_p", ITc_vc_cmd_set_get_format_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {NULL, NULL} }; diff --git a/src/itc/voice-control/tct-voice-control-native_tv.h b/src/itc/voice-control/tct-voice-control-native_tv.h index 099c1edbf..249450cd1 100755 --- a/src/itc/voice-control/tct-voice-control-native_tv.h +++ b/src/itc/voice-control/tct-voice-control-native_tv.h @@ -43,6 +43,11 @@ extern int ITc_vc_set_unset_service_state_changed_cb_p(void); extern int ITc_vc_set_unset_result_cb_p(void); extern int ITc_vc_get_current_language_p(void); extern int ITc_vc_foreach_supported_languages_p(void); +extern int ITc_vc_get_system_command_list_p(void); +extern int ITc_vc_set_invocation_name_p(void); +extern int ITc_vc_request_dialog_p(void); +extern int ITc_vc_cmd_get_unfixed_command_p(void); +extern int ITc_vc_cmd_set_get_format_p(void); testcase tc_array[] = { {"ITc_vc_cmd_create_destroy_p", ITc_vc_cmd_create_destroy_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, @@ -67,6 +72,11 @@ testcase tc_array[] = { {"ITc_vc_set_unset_result_cb_p", ITc_vc_set_unset_result_cb_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {"ITc_vc_get_current_language_p", ITc_vc_get_current_language_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {"ITc_vc_foreach_supported_languages_p", ITc_vc_foreach_supported_languages_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_get_system_command_list_p", ITc_vc_get_system_command_list_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_set_invocation_name_p", ITc_vc_set_invocation_name_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_request_dialog_p", ITc_vc_request_dialog_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_cmd_get_unfixed_command_p", ITc_vc_cmd_get_unfixed_command_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_cmd_set_get_format_p", ITc_vc_cmd_set_get_format_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {NULL, NULL} }; diff --git a/src/itc/voice-control/tct-voice-control-native_wearable.h b/src/itc/voice-control/tct-voice-control-native_wearable.h index 08c0c7147..ed69e39a8 100755 --- a/src/itc/voice-control/tct-voice-control-native_wearable.h +++ b/src/itc/voice-control/tct-voice-control-native_wearable.h @@ -44,6 +44,11 @@ extern int ITc_vc_set_unset_service_state_changed_cb_p(void); extern int ITc_vc_set_unset_result_cb_p(void); extern int ITc_vc_get_current_language_p(void); extern int ITc_vc_foreach_supported_languages_p(void); +extern int ITc_vc_get_system_command_list_p(void); +extern int ITc_vc_set_invocation_name_p(void); +extern int ITc_vc_request_dialog_p(void); +extern int ITc_vc_cmd_get_unfixed_command_p(void); +extern int ITc_vc_cmd_set_get_format_p(void); testcase tc_array[] = { {"ITc_vc_cmd_create_destroy_p", ITc_vc_cmd_create_destroy_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, @@ -68,6 +73,11 @@ testcase tc_array[] = { {"ITc_vc_set_unset_result_cb_p", ITc_vc_set_unset_result_cb_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {"ITc_vc_get_current_language_p", ITc_vc_get_current_language_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {"ITc_vc_foreach_supported_languages_p", ITc_vc_foreach_supported_languages_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_get_system_command_list_p", ITc_vc_get_system_command_list_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_set_invocation_name_p", ITc_vc_set_invocation_name_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_request_dialog_p", ITc_vc_request_dialog_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_cmd_get_unfixed_command_p", ITc_vc_cmd_get_unfixed_command_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, + {"ITc_vc_cmd_set_get_format_p", ITc_vc_cmd_set_get_format_p, ITs_voice_control_startup, ITs_voice_control_cleanup}, {NULL, NULL} }; -- 2.34.1