int ret = CAMERA_ERROR_NONE;
muse_camera_api_e api = MUSE_CAMERA_API_CHANGE_DEVICE;
camera_cli_s *pc = (camera_cli_s *)camera;
+ camera_state_e current_state = CAMERA_STATE_NONE;
camera_msg_param param;
CAMERA_CHECK_HANDLE_RETURN_VAL(pc, CAMERA_ERROR_INVALID_PARAMETER);
+ ret = camera_get_state(camera, ¤t_state);
+ if (ret != CAMERA_ERROR_NONE) {
+ CAM_LOG_ERROR("failed to get current state 0x%x", ret);
+ return ret;
+ }
+
CAMERA_MSG_PARAM_SET(param, INT, device);
_camera_msg_send_param1(api, pc->cb_info, &ret, ¶m, CAMERA_CB_TIMEOUT);
- if (ret == CAMERA_ERROR_NONE) {
+ if (ret == CAMERA_ERROR_NONE &&
+ current_state == CAMERA_STATE_CREATED) {
/* reset callback and user data */
for (i = 0 ; i < MUSE_CAMERA_EVENT_TYPE_NUM ; i++) {
pc->cb_info->user_cb[i] = NULL;
g_print("\t '6' Set/Unset extra preview callback\n");
g_print("\t '7' Set/Unset media packet preview callback\n");
g_print("\t '8' Set/Unset media packet preview internal callback\n");
+ g_print("\t '9' Switch device\n");
g_print("\t 'b' back\n");
g_print("\t=======================================\n");
break;
int err = 0;
int interval = 0;
int count = 0;
+ int device = 0;
switch (buf) {
case '1': /* Capture */
err = _camera_set_preview_cb(PREVIEW_CB_TYPE_MEDIA_PACKET_INTERNAL);
g_print("\tresult[0x%x]\n\n", err);
break;
+ case '9': /* Switch device */
+ g_print("\n\tswitch device: ");
+ err = scanf("%d", &device);
+ flush_stdin();
+
+ err = camera_change_device(hcamcorder->camera, device);
+ g_print("\tresult[0x%x]\n\n", err);
+ break;
case 'b': /* back */
__release_media_bridge();