/**
* @function test_sound_manager_info_changed_cb
+* deprecated since tizen_3.0
* @description callback function for volume change
* @parameter device : sound device, changed_info: device change info, user_data : user data
* @return NA
FPRINTF("[Line : %d][%s] Outside from callback \"test_sound_manager_device_connected_cb\"\\n", __LINE__, API_NAMESPACE);
}
+/**
+* @function test_sound_device_state_changed_cb
+* @description callback function for volume change
+* @parameter sound_device_h device, sound_device_state_e state, void *user_data
+* @return NA
+*/
+static void test_sound_device_state_changed_cb(sound_device_h device, sound_device_state_e state, void *user_data)
+{
+ FPRINTF("[Line : %d][%s] Inside callback \"test_sound_device_state_changed_cb\"\\n", __LINE__, API_NAMESPACE);
+ g_bCallbackResult = true;
+ if ( g_pMainLoop )
+ {
+ g_main_loop_quit(g_pMainLoop);
+ }
+ FPRINTF("[Line : %d][%s] Outside from callback \"test_sound_device_state_changed_cb\"\\n", __LINE__, API_NAMESPACE);
+}
+
/**
* @function ITs_sound_manager_device_startup
* @description Called before each test
//& type : auto
/**
* @testcase ITc_sound_manager_set_unset_device_connected_cb_p
+* @deprecated since tizen_3.0
* @since_tizen 2.3
* @author SRID(sameer.g1)
* @reviewer SRID(gupta.sanjay)
//& type : auto
/**
* @testcase ITc_sound_manager_set_unset_device_information_changed_cb_p
+* deprecated since tizen_3.0
* @since_tizen 2.3
* @author SRID(sameer.g1)
* @reviewer SRID(gupta.sanjay)
return 0;
}
+//& purpose: To check register/unregister a callback function to be invoked when the connection state of a sound device was changed.
+//& type : auto
+/**
+* @testcase ITc_sound_manager_add_remove_device_connection_changed_cb_p
+* @since_tizen 3.0
+* @author SRID(nibha.sharma)
+* @reviewer SRID(a.pandia1)
+* @type auto
+* @description To check register/unregister a callback function to be invoked when the connection state of a sound device was changed.
+* @scenario register a callback function on changing the connection state of sound device\n
+* unregister a callback function on changing the connection state of sound device
+* @apicovered sound_manager_add_device_connection_changed_cb, sound_manager_remove_device_connection_changed_cb
+* @passcase When API return SOUND_MANAGER_ERROR_NONE
+* @failcase When API not return SOUND_MANAGER_ERROR_NONE
+* @precondition None
+* @postcondition None
+*/
+int ITc_sound_manager_add_remove_device_connection_changed_cb_p(void)
+{
+ START_TEST;
+ // Initializing testing variable
+ int nRet = -1, nEnumLoopCount = 0;
+
+ #if defined(MOBILE) || defined(COMMON_IOT) || defined(WEARABLE) //Starts MOBILE or COMMON_IOT and WEARABLE
+ sound_device_mask_e e_device_mask = SOUND_DEVICE_IO_DIRECTION_IN_MASK;
+ #endif//MOBILE or COMMON_IOT or WEARABLE
+ #ifdef TV //Starts TV
+ sound_device_mask_e e_device_mask = SOUND_DEVICE_IO_DIRECTION_OUT_MASK;
+ #endif //TV //End TV
+
+ int arrSoundDeviceMask[] = {
+ SOUND_DEVICE_IO_DIRECTION_IN_MASK, /**< Mask for input devices */
+ SOUND_DEVICE_IO_DIRECTION_OUT_MASK, /**< Mask for output devices */
+ SOUND_DEVICE_IO_DIRECTION_BOTH_MASK, /**< Mask for input/output devices (both directions are available) */
+ SOUND_DEVICE_TYPE_INTERNAL_MASK, /**< Mask for built-in devices */
+ SOUND_DEVICE_TYPE_EXTERNAL_MASK, /**< Mask for external devices */
+ SOUND_DEVICE_STATE_DEACTIVATED_MASK, /**< Mask for deactivated devices */
+ SOUND_DEVICE_STATE_ACTIVATED_MASK, /**< Mask for activated devices */
+ SOUND_DEVICE_ALL_MASK /**< Mask for all devices */
+ };
+ int nSoundDeviceMaskCount = sizeof(arrSoundDeviceMask) / sizeof(arrSoundDeviceMask[0]);
+
+ for ( nEnumLoopCount = 0;nEnumLoopCount < nSoundDeviceMaskCount;nEnumLoopCount++ )
+ {
+ int nGetID;
+ e_device_mask = arrSoundDeviceMask[nEnumLoopCount];
+
+ nRet = sound_manager_add_device_connection_changed_cb(SOUND_DEVICE_ALL_MASK, test_sound_manager_device_connected_cb, NULL, &nGetID);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_add_device_connection_changed_cb", SoundManagerGetError(nRet));
+
+ nRet = sound_manager_remove_device_connection_changed_cb(nGetID);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_remove_device_connection_changed_cb", SoundManagerGetError(nRet));
+
+ }
+ return 0;
+}
+
+//& purpose: To check register/unregister a callback function to be invoked when the state of a sound device was changed.
+//& type : auto
+/**
+* @testcase ITc_sound_manager_add_remove_device_state_changed_cb_p
+* @since_tizen 3.0
+* @author SRID(nibha.sharma)
+* @reviewer SRID(a.pandia1)
+* @type auto
+* @description To check register/unregister a callback function to be invoked when the state of a sound device was changed.
+* @scenario register a callback function on changing the information of sound device\n
+* unregister a callback function on changing the information of sound device
+* @apicovered sound_manager_add_device_state_changed_cb, sound_manager_remove_device_state_changed_cb
+* @passcase When API return SOUND_MANAGER_ERROR_NONE
+* @failcase When API not return SOUND_MANAGER_ERROR_NONE
+* @precondition None
+* @postcondition None
+*/
+int ITc_sound_manager_add_remove_device_state_changed_cb_p(void)
+{
+ START_TEST;
+ // Initializing testing variable
+ int nRet = -1, nEnumLoopCount = 0;
+
+ #if defined(MOBILE) || defined(COMMON_IOT) || defined(WEARABLE) //Starts MOBILE or COMMON_IOT and WEARABLE
+ sound_device_mask_e e_device_mask = SOUND_DEVICE_IO_DIRECTION_IN_MASK;
+ #endif//MOBILE or COMMON_IOT or WEARABLE
+ #ifdef TV //Starts TV
+ sound_device_mask_e e_device_mask = SOUND_DEVICE_IO_DIRECTION_OUT_MASK;
+ #endif //TV //End TV
+ int arrSoundDeviceMask[] = {
+ SOUND_DEVICE_IO_DIRECTION_IN_MASK, /**< Mask for input devices */
+ SOUND_DEVICE_IO_DIRECTION_OUT_MASK, /**< Mask for output devices */
+ SOUND_DEVICE_IO_DIRECTION_BOTH_MASK, /**< Mask for input/output devices (both directions are available) */
+ SOUND_DEVICE_TYPE_INTERNAL_MASK, /**< Mask for built-in devices */
+ SOUND_DEVICE_TYPE_EXTERNAL_MASK, /**< Mask for external devices */
+ SOUND_DEVICE_STATE_DEACTIVATED_MASK, /**< Mask for deactivated devices */
+ SOUND_DEVICE_STATE_ACTIVATED_MASK, /**< Mask for activated devices */
+ SOUND_DEVICE_ALL_MASK /**< Mask for all devices */
+ };
+ int nSoundDeviceMaskCount = sizeof(arrSoundDeviceMask) / sizeof(arrSoundDeviceMask[0]);
+
+ for ( nEnumLoopCount = 0;nEnumLoopCount < nSoundDeviceMaskCount;nEnumLoopCount++ )
+ {
+ int nGetID;
+ e_device_mask = arrSoundDeviceMask[nEnumLoopCount];
+ nRet = sound_manager_add_device_state_changed_cb(SOUND_DEVICE_ALL_MASK, test_sound_device_state_changed_cb, NULL, &nGetID);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_add_device_state_changed_cb", SoundManagerGetError(nRet));
+
+ nRet = sound_manager_remove_device_state_changed_cb(nGetID);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_remove_device_state_changed_cb", SoundManagerGetError(nRet));
+ }
+ return 0;
+}
\ No newline at end of file
//& type : auto
/**
* @testcase ITc_sound_manager_set_unset_volume_changed_cb_p
+* @deprecated since tizen_3.0
* @since_tizen 2.3
* @author SRID(sameer.g1)
* @reviewer SRID(gupta.sanjay)
}
return 0;
}
+
+//& purpose: To check add/remove volume change callback
+//& type : auto
+/**
+* @testcase ITc_sound_manager_add_remove_volume_changed_cb_p
+* @since_tizen 3.0
+* @author SRID(nibha.sharma)
+* @reviewer SRID(a.pandia1)
+* @type auto
+* @description To check add/remove volume change callback
+* @scenario Call API to register callback and verify\n
+* check response from call back\n
+* Call API to unregister callback and verify\n
+* check response from call back
+* @apicovered sound_manager_get_volume, sound_manager_get_max_volume, sound_manager_set_volume, sound_manager_add_volume_changed_cb, sound_manager_remove_volume_changed_cb
+* @passcase When APIs return SOUND_MANAGER_ERROR_NONE
+* When response from callback on mute event
+* @failcase When APIs not return SOUND_MANAGER_ERROR_NONE
+* When no response from callback
+* @precondition None
+* @postcondition None
+*/
+int ITc_sound_manager_add_remove_volume_changed_cb_p(void)
+{
+ START_TEST;
+ int nRet = -1;
+ int nTtimeoutId = 0;
+ g_pMainLoop = g_main_loop_new(NULL, false);
+
+ sound_type_e eSoundType = SOUND_TYPE_NOTIFICATION;
+ int nMaxSoundLevel = 0;
+ int nFindSoundLevel = 0;
+ int nGetId;
+
+ nRet = sound_manager_get_max_volume(eSoundType, &nMaxSoundLevel);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_get_max_volume", SoundManagerGetError(nRet));
+
+ nRet = sound_manager_get_volume(eSoundType, &nFindSoundLevel);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_get_volume", SoundManagerGetError(nRet));
+
+ //Check to set less than max value
+ if ( (nMaxSoundLevel-2) < nFindSoundLevel )
+ {
+ nFindSoundLevel = 1;
+ }
+
+ nRet = sound_manager_add_volume_changed_cb(test_sound_manager_volume_changed_cb, NULL, &nGetId);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_add_volume_changed_cb", SoundManagerGetError(nRet));
+
+ nRet = sound_manager_set_volume(eSoundType, nFindSoundLevel++);
+ PRINT_RESULT_CLEANUP(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_set_volume", SoundManagerGetError(nRet), sound_manager_remove_volume_changed_cb(nGetId));
+
+ nTtimeoutId = g_timeout_add(2000, TimeoutFunction, g_pMainLoop);
+ g_main_loop_run(g_pMainLoop);
+ g_source_remove(nTtimeoutId);
+ if ( g_bCallbackResult == false )
+ {
+ FPRINTF("[Line : %d][%s] After sound_manager_add_volume_changed_cb, No response from callback\\n", __LINE__, API_NAMESPACE);
+ sound_manager_remove_volume_changed_cb(nGetId);
+ return 1;
+ }
+
+ nRet = sound_manager_remove_volume_changed_cb(nGetId);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_remove_volume_changed_cb", SoundManagerGetError(nRet));
+
+ g_bCallbackResult = false;
+ nRet = sound_manager_set_volume(eSoundType, nFindSoundLevel);
+ PRINT_RESULT(SOUND_MANAGER_ERROR_NONE, nRet, "sound_manager_set_volume", SoundManagerGetError(nRet));
+
+ nTtimeoutId = g_timeout_add(2000, TimeoutFunction, g_pMainLoop);
+ g_main_loop_run(g_pMainLoop);
+ g_source_remove(nTtimeoutId);
+ if ( g_bCallbackResult == true )
+ {
+ FPRINTF("[Line : %d][%s] After sound_manager_remove_volume_changed_cb,Getting response from callback\\n", __LINE__, API_NAMESPACE);
+ return 1;
+ }
+ return 0;
+}
\ No newline at end of file
extern int ITc_sound_manager_set_get_focus_reacquisition_p(void);
extern int ITc_sound_manager_get_sound_type_p(void);
extern int ITc_sound_manager_get_current_playback_recording_focus_p(void);
-extern int ITc_sound_manager_focus_get_requesting_requested_behavior_p(void);
+extern int ITc_sound_manager_focus_get_requesting_requested_behavior_get_changed_focus_state_p(void);
extern int ITc_sound_manager_get_max_volume_p(void);
extern int ITc_sound_manager_set_get_volume_p(void);
extern int ITc_sound_manager_set_unset_volume_changed_cb_p(void);
extern int ITc_sound_manager_get_current_sound_type_p(void);
extern int ITc_sound_manager_is_stream_on_device_p(void);
extern int ITc_sound_manager_get_current_media_playback_device_type_p(void);
+extern int ITc_sound_manager_add_remove_volume_changed_cb_p(void);
+extern int ITc_sound_manager_add_remove_device_connection_changed_cb_p(void);
+extern int ITc_sound_manager_add_remove_device_state_changed_cb_p(void);
testcase tc_array[] = {
+ {"ITc_sound_manager_add_remove_device_connection_changed_cb_p", ITc_sound_manager_add_remove_device_connection_changed_cb_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
+ {"ITc_sound_manager_add_remove_device_state_changed_cb_p", ITc_sound_manager_add_remove_device_state_changed_cb_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_device_list_p", ITc_sound_manager_get_device_list_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_current_device_list_p", ITc_sound_manager_get_current_device_list_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_next_device_free_device_p", ITc_sound_manager_get_next_device_free_device_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_set_get_focus_reacquisition_p", ITc_sound_manager_set_get_focus_reacquisition_p, ITs_sound_manager_stream_startup, ITs_sound_manager_stream_cleanup},
{"ITc_sound_manager_get_sound_type_p", ITc_sound_manager_get_sound_type_p, ITs_sound_manager_stream_startup, ITs_sound_manager_stream_cleanup},
{"ITc_sound_manager_get_current_playback_recording_focus_p", ITc_sound_manager_get_current_playback_recording_focus_p, ITs_sound_manager_stream_startup, ITs_sound_manager_stream_cleanup},
- {"ITc_sound_manager_focus_get_requesting_requested_behavior_p", ITc_sound_manager_focus_get_requesting_requested_behavior_p, ITs_sound_manager_stream_startup, ITs_sound_manager_stream_cleanup},
+ {"ITc_sound_manager_focus_get_requesting_requested_behavior_get_changed_focus_state_p", ITc_sound_manager_focus_get_requesting_requested_behavior_get_changed_focus_state_p, ITs_sound_manager_stream_startup, ITs_sound_manager_stream_cleanup},
{"ITc_sound_manager_get_max_volume_p", ITc_sound_manager_get_max_volume_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_get_volume_p", ITc_sound_manager_set_get_volume_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_unset_volume_changed_cb_p", ITc_sound_manager_set_unset_volume_changed_cb_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
+ {"ITc_sound_manager_add_remove_volume_changed_cb_p", ITc_sound_manager_add_remove_volume_changed_cb_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_unset_current_sound_type_p", ITc_sound_manager_set_unset_current_sound_type_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_get_current_sound_type_p", ITc_sound_manager_get_current_sound_type_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_is_stream_on_device_p", ITc_sound_manager_is_stream_on_device_p, ITs_sound_manager_stream_startup, ITs_sound_manager_stream_cleanup},
extern int ITc_sound_manager_get_current_sound_type_p(void);
extern int ITc_sound_manager_is_stream_on_device_p(void);
extern int ITc_sound_manager_get_current_media_playback_device_type_p(void);
+extern int ITc_sound_manager_add_remove_volume_changed_cb_p(void);
+extern int ITc_sound_manager_add_remove_device_connection_changed_cb_p(void);
+extern int ITc_sound_manager_add_remove_device_state_changed_cb_p(void);
testcase tc_array[] = {
+ {"ITc_sound_manager_add_remove_device_connection_changed_cb_p", ITc_sound_manager_add_remove_device_connection_changed_cb_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
+ {"ITc_sound_manager_add_remove_device_state_changed_cb_p", ITc_sound_manager_add_remove_device_state_changed_cb_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_device_list_p", ITc_sound_manager_get_device_list_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_current_device_list_p", ITc_sound_manager_get_current_device_list_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_next_device_free_device_p", ITc_sound_manager_get_next_device_free_device_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_max_volume_p", ITc_sound_manager_get_max_volume_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_get_volume_p", ITc_sound_manager_set_get_volume_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_unset_volume_changed_cb_p", ITc_sound_manager_set_unset_volume_changed_cb_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
+ {"ITc_sound_manager_add_remove_volume_changed_cb_p", ITc_sound_manager_add_remove_volume_changed_cb_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_unset_current_sound_type_p", ITc_sound_manager_set_unset_current_sound_type_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_get_current_sound_type_p", ITc_sound_manager_get_current_sound_type_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_is_stream_on_device_p", ITc_sound_manager_is_stream_on_device_p, ITs_sound_manager_stream_startup, ITs_sound_manager_stream_cleanup},
extern int ITc_sound_manager_add_remove_focus_state_watch_cb_p(void);
extern int ITc_sound_manager_is_stream_on_device_p(void);
extern int ITc_sound_manager_get_current_media_playback_device_type_p(void);
+extern int ITc_sound_manager_add_remove_volume_changed_cb_p(void);
+extern int ITc_sound_manager_add_remove_device_connection_changed_cb_p(void);
+extern int ITc_sound_manager_add_remove_device_state_changed_cb_p(void);
testcase tc_array[] = {
+ {"ITc_sound_manager_add_remove_device_connection_changed_cb_p", ITc_sound_manager_add_remove_device_connection_changed_cb_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
+ {"ITc_sound_manager_add_remove_device_state_changed_cb_p", ITc_sound_manager_add_remove_device_state_changed_cb_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_device_list_p", ITc_sound_manager_get_device_list_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_current_device_list_p", ITc_sound_manager_get_current_device_list_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_next_device_free_device_p", ITc_sound_manager_get_next_device_free_device_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
extern int ITc_sound_manager_get_current_sound_type_p(void);
extern int ITc_sound_manager_is_stream_on_device_p(void);
extern int ITc_sound_manager_get_current_media_playback_device_type_p(void);
+extern int ITc_sound_manager_add_remove_volume_changed_cb_p(void);
+extern int ITc_sound_manager_add_remove_device_connection_changed_cb_p(void);
+extern int ITc_sound_manager_add_remove_device_state_changed_cb_p(void);
testcase tc_array[] = {
+ {"ITc_sound_manager_add_remove_device_connection_changed_cb_p", ITc_sound_manager_add_remove_device_connection_changed_cb_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
+ {"ITc_sound_manager_add_remove_device_state_changed_cb_p", ITc_sound_manager_add_remove_device_state_changed_cb_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_device_list_p", ITc_sound_manager_get_device_list_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_current_device_list_p", ITc_sound_manager_get_current_device_list_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_next_device_free_device_p", ITc_sound_manager_get_next_device_free_device_p, ITs_sound_manager_device_startup, ITs_sound_manager_device_cleanup},
{"ITc_sound_manager_get_max_volume_p", ITc_sound_manager_get_max_volume_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_get_volume_p", ITc_sound_manager_set_get_volume_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_unset_volume_changed_cb_p", ITc_sound_manager_set_unset_volume_changed_cb_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
+ {"ITc_sound_manager_add_remove_volume_changed_cb_p", ITc_sound_manager_add_remove_volume_changed_cb_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_set_unset_current_sound_type_p", ITc_sound_manager_set_unset_current_sound_type_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_get_current_sound_type_p", ITc_sound_manager_get_current_sound_type_p, ITs_sound_manager_volume_startup, ITs_sound_manager_volume_cleanup},
{"ITc_sound_manager_is_stream_on_device_p", ITc_sound_manager_is_stream_on_device_p, ITs_sound_manager_stream_startup, ITs_sound_manager_stream_cleanup},