use super::OpenMode;
use crate::kprint;
use crate::service::fat_file_system_server;
use crate::service::client;
use crate::service::service_request::ServiceRequestData;
use crate::service::service_reply::ServiceReplyData;
use crate::alloc::string::ToString;
pub fn open_file(file_path: &str, flags: OpenMode) -> Result<crate::file::File, crate::error_kind::ErrorKind> {
let mut file = crate::file::File::new();
let file_path_bytes = file_path.as_bytes();
let request_data = ServiceRequestData::new(&file_path_bytes[0], file_path_bytes.len());
let result = client::send_service_request_and_wait_for_reply("fat_file_system_server",
fat_file_system_server::FAT_FILE_SYSTEM_SERVER_OPEN_FILE, &request_data);
if result.is_err() {
return Err(crate::error_kind::ErrorKind::from(result.err().unwrap()));
} else {
let reply: ServiceReplyData<crate::file::File> = result.unwrap();
let reply_message_ref: &crate::file::File = reply.get_reply_message_ref();
return Ok(reply_message_ref.clone());
}
}