storage_ext_release_device(&dev);
return ret;
}
+
+int storage_ext_get_state(int storage_id, storage_state_e *state)
+{
+ storage_ext_device *dev;
+ int ret;
+
+ if (storage_id < 0 || !state)
+ return -EINVAL;
+
+ dev = calloc(1, sizeof(storage_ext_device));
+ if (!dev) {
+ _E("calloc failed");
+ return -ENOMEM;
+ }
+
+ ret = storage_ext_get_device_info(storage_id, dev);
+ if (ret < 0) {
+ _E("Cannot get the storage with id (%d, ret:%d)", storage_id, ret);
+ goto out;
+ }
+
+ ret = storage_ext_get_dev_state(dev, STORAGE_EXT_CHANGED, state);
+ if (ret < 0)
+ _E("Failed to get state of storage id (%d, ret:%d)", storage_id, ret);
+
+out:
+ storage_ext_release_device(&dev);
+ return ret;
+}
int storage_ext_register_cb(enum storage_cb_type type, struct storage_cb_info *info);
int storage_ext_unregister_cb(enum storage_cb_type type, struct storage_cb_info *info);
int storage_ext_get_root(int storage_id, char *path, size_t len);
+int storage_ext_get_state(int storage_id, storage_state_e *state);
#endif /* __STORAGE_EXTERNAL_H__ */
API int storage_get_state(int storage_id, storage_state_e *state)
{
const struct storage_ops *ops;
+ storage_state_e st;
dd_list *elem;
+ int ret;
- if (!state) {
+ if (!state || storage_id < 0) {
_E("Invalid parameger");
return STORAGE_ERROR_INVALID_PARAMETER;
}
}
/* external storage */
+ ret = storage_ext_get_state(storage_id, &st);
+ if (ret < 0) {
+ _E("Failed to get state (storage id(%d), ret(%d))", storage_id, ret);
+ return STORAGE_ERROR_OPERATION_FAILED;
+ }
+ *state = st;
return STORAGE_ERROR_NONE;
}