/**
* @internal
+ * @brief Called when the connection state of a camera device was changed.
+ * @since_tizen 6.5
+ * @param[in] device The camera device
+ * @param[in] is_connected The state of device connection: (@c true = connected, @c false = disconnected)
+ * @param[in] user_data The user data passed from the callback registration function
+ * @see camera_device_manager_add_device_connection_changed_cb()
+ * @see camera_device_manager_remove_device_connection_changed_cb()
+ */
+typedef void (*camera_device_connection_changed_cb)(camera_device_s *device, bool is_connected, void *user_data);
+
+/**
+ * @internal
* @brief Called to register for notifications about delivering a copy of the new extra preview frames.
* @since_tizen 6.5
* @param[in] frame The reference pointer to extra preview stream data
/**
* @internal
+ * @brief Registers a callback function to be called when the connection state of camera device is changed.
+ * @since_tizen 6.5
+ * @param[in] manager The handle to the camera device manager
+ * @param[in] callback The callback function to register
+ * @param[in] user_data The user data to be passed to the callback function
+ * @param[out] cb_id The id of registered callback
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
+ * @retval #CAMERA_ERROR_OUT_OF_MEMORY Out of memory
+ * @post camera_device_connection_changed_cb() will be invoked when the connection state of camera device is changed.
+ * @see camera_device_manager_remove_device_connection_changed_cb()
+ * @see camera_device_connection_changed_cb()
+ */
+int camera_device_manager_add_device_connection_changed_cb(camera_device_manager_h manager, camera_device_connection_changed_cb callback, void *user_data, int *cb_id);
+
+/**
+ * @internal
+ * @brief Unregisters the callback function.
+ * @since_tizen 6.5
+ * @param[in] manager The handle to the camera device manager
+ * @param[in] cb_id The id of registered callback
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #CAMERA_ERROR_NONE Successful
+ * @retval #CAMERA_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #CAMERA_ERROR_INVALID_OPERATION Invalid operation
+ * @see camera_device_manager_add_device_changed_cb()
+ */
+int camera_device_manager_remove_device_connection_changed_cb(camera_device_manager_h manager, int cb_id);
+
+/**
+ * @internal
* @brief Sets the brightness level of flash.
* @since_tizen 6.5
* @remarks If the min value is greater than the max value from camera_attr_get_flash_brightness_range(), \n
int (*get_device_list)(void *list);
int (*add_device_list_changed_cb)(void *, void *, int *);
int (*remove_device_list_changed_cb)(int);
+ int (*add_device_connection_changed_cb)(void *, void *, int *);
+ int (*remove_device_connection_changed_cb)(int);
} camera_device_manager;
Name: capi-media-camera
Summary: A Camera API
-Version: 0.4.58
+Version: 0.4.59
Release: 0
Group: Multimedia/API
License: Apache-2.0
{(void **)&new_manager->get_device_list, "cdm_get_device_list"},
{(void **)&new_manager->add_device_list_changed_cb, "cdm_add_device_list_changed_cb"},
{(void **)&new_manager->remove_device_list_changed_cb, "cdm_remove_device_list_changed_cb"},
+ {(void **)&new_manager->add_device_connection_changed_cb, "cdm_add_device_connection_changed_cb"},
+ {(void **)&new_manager->remove_device_connection_changed_cb, "cdm_remove_device_connection_changed_cb"},
};
if (!manager) {
CAM_LOG_INFO("finalized");
- return ret;
+ return CAMERA_ERROR_NONE;
}
list->device[i].name, list->device[i].id);
}
- return ret;
+ return CAMERA_ERROR_NONE;
}
CAM_LOG_INFO("cb_id[%d] added", *cb_id);
- return ret;
+ return CAMERA_ERROR_NONE;
}
CAM_LOG_INFO("cb_id[%d] removed", cb_id);
- return ret;
+ return CAMERA_ERROR_NONE;
+}
+
+
+int camera_device_manager_add_device_connection_changed_cb(camera_device_manager_h manager,
+ camera_device_connection_changed_cb callback, void *user_data, int *cb_id)
+{
+ int ret = CAMERA_ERROR_NONE;
+ camera_device_manager *m = (camera_device_manager *)manager;
+
+ if (!m || !callback || !cb_id) {
+ CAM_LOG_ERROR("NULL parameter[%p,%p,%p]", m, callback, cb_id);
+ return CAMERA_ERROR_INVALID_PARAMETER;
+ }
+
+ CAM_LOG_INFO("enter");
+
+ ret = m->add_device_connection_changed_cb(callback, user_data, cb_id);
+ if (ret != CAMERA_ERROR_NONE) {
+ CAM_LOG_ERROR("failed[0x%x]", ret);
+ return ret;
+ }
+
+ CAM_LOG_INFO("cb_id[%d] added", *cb_id);
+
+ return CAMERA_ERROR_NONE;
+}
+
+
+int camera_device_manager_remove_device_connection_changed_cb(camera_device_manager_h manager, int cb_id)
+{
+ int ret = CAMERA_ERROR_NONE;
+ camera_device_manager *m = (camera_device_manager *)manager;
+
+ if (!m) {
+ CAM_LOG_ERROR("NULL manager");
+ return CAMERA_ERROR_INVALID_PARAMETER;
+ }
+
+ CAM_LOG_INFO("enter - cb_id[%d]", cb_id);
+
+ ret = m->remove_device_connection_changed_cb(cb_id);
+ if (ret != CAMERA_ERROR_NONE) {
+ CAM_LOG_ERROR("failed[0x%x]", ret);
+ return ret;
+ }
+
+ CAM_LOG_INFO("cb_id[%d] removed", cb_id);
+
+ return CAMERA_ERROR_NONE;
}
static GTimer *timer;
static int g_camera_device_state_changed_cb_id;
static int g_camera_device_list_changed_cb_id;
+static int g_camera_device_connection_changed_cb_id;
static int g_camera_preview_cb_dump;
static int g_camera_extra_preview_cb_dump;
static int g_camera_mp_preview_cb_dump;
return;
}
+static void _camera_device_connection_changed_cb(camera_device_s *device, bool is_connected, void *user_data)
+{
+ if (!device) {
+ g_print("NULL list");
+ return;
+ }
+
+ g_print("\n\tcamera device changed[is_connected:%d][Type:%d,index:%d,name:%s,id:%s,exstreamnum:%d]\n",
+ is_connected, device->type, device->index, device->name, device->id, device->extra_stream_num);
+
+ return;
+}
+
static void _camera_interrupted_cb(camera_policy_e policy, camera_state_e previous, camera_state_e current, void *user_data)
{
g_print("\n\tcamera interrupted callback called[state %d -> %d, policy %d]\n",
g_print("\t '2' Get camera device list\n");
g_print("\t '3' Add camera device list changed callback\n");
g_print("\t '4' Remove camera device list changed callback\n");
- g_print("\t '5' Deinitialize device manager\n");
+ g_print("\t '5' Add camera device connection changed callback\n");
+ g_print("\t '6' Remove camera device connection changed callback\n");
+ g_print("\t '9' Deinitialize device manager\n");
g_print("\t 'b' back\n");
g_print("\t=======================================\n");
break;
g_print("\n\tinvalid cb id[%d]\n", g_camera_device_list_changed_cb_id);
}
break;
- case '5': /* Deinitialize device manager */
+ case '5': /* Add device connection changed callback */
+ ret = camera_device_manager_add_device_connection_changed_cb(g_device_manager,
+ _camera_device_connection_changed_cb, NULL, &g_camera_device_connection_changed_cb_id);
+ g_print("\n\tadd result[0x%x] - cb id[%d]\n", ret, g_camera_device_connection_changed_cb_id);
+ break;
+ case '6': /* Remove device connection changed callback */
+ if (g_camera_device_connection_changed_cb_id > 0) {
+ ret = camera_device_manager_remove_device_connection_changed_cb(g_device_manager,
+ g_camera_device_connection_changed_cb_id);
+ g_print("\n\tremove result[0x%x] - cb id[%d]\n", ret, g_camera_device_connection_changed_cb_id);
+ g_camera_device_connection_changed_cb_id = 0;
+ } else {
+ g_print("\n\tinvalid cb id[%d]\n", g_camera_device_connection_changed_cb_id);
+ }
+ break;
+ case '9': /* Deinitialize device manager */
ret = camera_device_manager_deinitialize(g_device_manager);
g_print("\n\tDevice manager[%p] deinitialize result[0x%x]\n",
g_device_manager, ret);