mirror of
https://github.com/wiiu-env/libwupsbackend.git
synced 2024-11-21 17:29:19 +01:00
WUPS 0.6.1 support
This commit is contained in:
parent
330fb36195
commit
bd10088784
@ -47,8 +47,8 @@ public:
|
||||
return this->description;
|
||||
}
|
||||
|
||||
[[nodiscard]] const std::string &getId() const {
|
||||
return this->description;
|
||||
[[nodiscard]] const std::string &getStorageId() const {
|
||||
return this->storageId;
|
||||
}
|
||||
|
||||
[[nodiscard]] size_t getSize() const {
|
||||
@ -61,7 +61,7 @@ public:
|
||||
const std::string& license,
|
||||
const std::string& buildtimestamp,
|
||||
const std::string& description,
|
||||
const std::string& id,
|
||||
const std::string& storageId,
|
||||
size_t size);
|
||||
|
||||
private:
|
||||
@ -91,8 +91,8 @@ private:
|
||||
this->description = description_;
|
||||
}
|
||||
|
||||
void setId(const std::string &id_) {
|
||||
this->id = id_;
|
||||
void setStorageId(const std::string &storageId_) {
|
||||
this->storageId = storageId_;
|
||||
}
|
||||
|
||||
void setSize(size_t size_) {
|
||||
@ -105,6 +105,6 @@ private:
|
||||
std::string license;
|
||||
std::string buildtimestamp;
|
||||
std::string description;
|
||||
std::string id;
|
||||
std::string storageId;
|
||||
size_t size{};
|
||||
};
|
||||
|
@ -18,22 +18,25 @@
|
||||
#pragma once
|
||||
|
||||
typedef enum GetPluginInformationInputType {
|
||||
PLUGIN_INFORMATION_INPUT_TYPE_PATH = 0,
|
||||
PLUGIN_INFORMATION_INPUT_TYPE_BUFFER = 1,
|
||||
PLUGIN_INFORMATION_INPUT_TYPE_PATH = 0,
|
||||
PLUGIN_INFORMATION_INPUT_TYPE_BUFFER = 1,
|
||||
} GetPluginInformationInputType;
|
||||
|
||||
typedef uint32_t plugin_container_handle;
|
||||
typedef uint32_t plugin_data_handle;
|
||||
|
||||
#define PLUGIN_INFORMATION_VERSION 0x00000001
|
||||
|
||||
/* plugin_information message */
|
||||
typedef struct __attribute__((__packed__)) plugin_information {
|
||||
char id[256];
|
||||
uint32_t plugin_information_version;
|
||||
char name[256];
|
||||
char author[256];
|
||||
char buildTimestamp[256];
|
||||
char description[256];
|
||||
char license[256];
|
||||
char version[256];
|
||||
char storageId[256];
|
||||
size_t size;
|
||||
} plugin_information;
|
||||
|
||||
|
@ -27,7 +27,7 @@ PluginMetaInformation::PluginMetaInformation(const std::string& name_,
|
||||
const std::string& license_,
|
||||
const std::string& buildtimestamp_,
|
||||
const std::string& description_,
|
||||
const std::string& id_,
|
||||
const std::string& storageId_,
|
||||
size_t size_) {
|
||||
this->name = name_;
|
||||
this->author = author_;
|
||||
@ -36,5 +36,5 @@ PluginMetaInformation::PluginMetaInformation(const std::string& name_,
|
||||
this->description = description_;
|
||||
this->license = license_;
|
||||
this->version = version_;
|
||||
this->id = id_;
|
||||
this->storageId = storageId_;
|
||||
}
|
||||
|
@ -28,13 +28,17 @@ std::optional<PluginMetaInformation> PluginUtils::getMetaInformationForBuffer(ch
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
if (info.plugin_information_version != PLUGIN_INFORMATION_VERSION) {
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
PluginMetaInformation metaInfo(info.name,
|
||||
info.author,
|
||||
info.version,
|
||||
info.license,
|
||||
info.buildTimestamp,
|
||||
info.description,
|
||||
info.id,
|
||||
info.storageId,
|
||||
info.size);
|
||||
|
||||
return metaInfo;
|
||||
@ -47,13 +51,16 @@ std::optional<PluginMetaInformation> PluginUtils::getMetaInformationForPath(cons
|
||||
// DEBUG_FUNCTION_LINE("Failed to load meta infos for %s\n", path.c_str());
|
||||
return std::nullopt;
|
||||
}
|
||||
if (info.plugin_information_version != PLUGIN_INFORMATION_VERSION) {
|
||||
return std::nullopt;
|
||||
}
|
||||
PluginMetaInformation metaInfo(info.name,
|
||||
info.author,
|
||||
info.version,
|
||||
info.license,
|
||||
info.buildTimestamp,
|
||||
info.description,
|
||||
info.id,
|
||||
info.storageId,
|
||||
info.size);
|
||||
return metaInfo;
|
||||
}
|
||||
@ -100,12 +107,14 @@ std::vector<PluginContainer> PluginUtils::getLoadedPlugins(uint32_t maxSize) {
|
||||
handles[i] = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
if (WUPSGetLoadedPlugins(handles, maxSize, &realSize) != PLUGIN_BACKEND_API_ERROR_NONE) {
|
||||
uint32_t plugin_information_version = 0;
|
||||
|
||||
if (WUPSGetLoadedPlugins(handles, maxSize, &realSize, &plugin_information_version) != PLUGIN_BACKEND_API_ERROR_NONE) {
|
||||
free(handles);
|
||||
// DEBUG_FUNCTION_LINE("Failed");
|
||||
return result;
|
||||
}
|
||||
if (realSize == 0) {
|
||||
if (realSize == 0 || plugin_information_version != PLUGIN_INFORMATION_VERSION) {
|
||||
free(handles);
|
||||
// DEBUG_FUNCTION_LINE("realsize is 0");
|
||||
return result;
|
||||
@ -139,13 +148,16 @@ std::vector<PluginContainer> PluginUtils::getLoadedPlugins(uint32_t maxSize) {
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < realSize; i++) {
|
||||
if (information[i].plugin_information_version != PLUGIN_INFORMATION_VERSION) {
|
||||
continue;
|
||||
}
|
||||
PluginMetaInformation metaInfo(information[i].name,
|
||||
information[i].author,
|
||||
information[i].version,
|
||||
information[i].license,
|
||||
information[i].buildTimestamp,
|
||||
information[i].description,
|
||||
information[i].id,
|
||||
information[i].storageId,
|
||||
information[i].size);
|
||||
PluginData pluginData((uint32_t) dataHandles[i]);
|
||||
result.emplace_back(pluginData, metaInfo, handles[i]);
|
||||
|
@ -45,7 +45,7 @@ extern PluginBackendApiErrorType WUPSGetPluginDataForContainerHandles(const plug
|
||||
|
||||
extern PluginBackendApiErrorType WUPSGetMetaInformation(const plugin_container_handle *plugin_container_handle_list, plugin_information *plugin_information_list, uint32_t buffer_size);
|
||||
|
||||
extern PluginBackendApiErrorType WUPSGetLoadedPlugins(const plugin_container_handle *io_handles, uint32_t buffer_size, uint32_t *outSize);
|
||||
extern PluginBackendApiErrorType WUPSGetLoadedPlugins(const plugin_container_handle *io_handles, uint32_t buffer_size, uint32_t *outSize, uint32_t *plugin_information_version);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user