1
0
mirror of https://github.com/djhackersdev/bemanitools.git synced 2024-11-27 16:00:52 +01:00

feat: Add new module to scope avs related "utility" stuff

Use this to share helpers or other extensions to the
original avs API across modules.

Start with including error codes to readable strings
to improve velocity on AVS API error analysis.
This commit is contained in:
icex2 2024-01-28 22:01:33 +01:00 committed by icex2
parent 06317d63e7
commit 4fedf34d6b
4 changed files with 114 additions and 0 deletions

View File

@ -91,6 +91,7 @@ include src/main/acioemu/Module.mk
include src/main/aciomgr/Module.mk
include src/main/aciotest/Module.mk
include src/main/asio/Module.mk
include src/main/avs-util/Module.mk
include src/main/bio2drv/Module.mk
include src/main/bio2emu-iidx/Module.mk
include src/main/bio2emu/Module.mk

View File

@ -0,0 +1,6 @@
libs += avs-util
libs_avs-util := \
src_avs-util := \
error.c \

99
src/main/avs-util/error.c Normal file
View File

@ -0,0 +1,99 @@
#include "avs-util/error.h"
#include "util/defs.h"
struct avs_util_avs_error_str {
avs_error error;
const char *msg;
};
static const char *avs_util_error_unknown = "unknown error";
// Source: https://github.com/spicetools/spicetools
static const struct avs_util_avs_error_str AVS_UTIL_ERRORS[] = {
{0x80092000, "invalid type"},
{0x80092001, "type cannot use as array"},
{0x80092002, "invalid"},
{0x80092003, "too large data size"},
{0x80092004, "too small buffer size"},
{0x80092005, "passcode 0 is not allowed"},
{0x80092040, "invalid node name"},
{0x80092041, "invalid attribute name"},
{0x80092042, "reserved attribute name"},
{0x80092043, "cannot find node/attribute"},
{0x80092080, "cannot allocate node"},
{0x80092081, "cannot allocate node value"},
{0x80092082, "cannot allocate mdigest for finger-print"},
{0x80092083, "cannot allocate nodename"},
{0x800920C0, "node type differs"},
{0x800920C1, "node type is VOID"},
{0x800920C2, "node is array"},
{0x800920C3, "node is not array"},
{0x80092100, "node is create-disabled"},
{0x80092101, "node is read-disabled"},
{0x80092102, "node is write-disabled"},
{0x80092103, "flag is already locked"},
{0x80092104, "passcode differs"},
{0x80092105, "insert_read() is applied to attribute"},
{0x80092106, "part_write() is applied to attribute"},
{0x80092107, "MODE_EXTEND flag differs"},
{0x80092140, "root node already exists"},
{0x80092141, "attribute cannot have children"},
{0x80092142, "node/attribute already exists"},
{0x80092143, "number of nodes exceeds 65535"},
{0x80092144, "cannot interpret as number"},
{0x80092145, "property is empty"},
{0x80092180, "I/O error"},
{0x80092181, "unexpected EOF"},
{0x80092182, "unknown format"},
{0x800921C0, "broken magic"},
{0x800921C1, "broken metadata"},
{0x800921C2, "broken databody"},
{0x800921C3, "invalid type"},
{0x800921C4, "too large data size"},
{0x800921C5, "too long node/attribute name"},
{0x800921C6, "attribute name is too long"},
{0x800921C7, "node/attribute already exists"},
{0x80092200, "invalid encoding"},
{0x80092201, "invalid XML token"},
{0x80092202, "XML syntax error"},
{0x80092203, "start tag / end tag mismatch"},
{0x80092204, "too large node data (__size mismatch)"},
{0x80092205, "too deep node tree"},
{0x80092206, "invalid type"},
{0x80092207, "invalid size"},
{0x80092208, "invalid count"},
{0x80092209, "invalid value"},
{0x8009220A, "invalid node name"},
{0x8009220B, "invalid attribute name"},
{0x8009220C, "reserved attribute name"},
{0x8009220D, "node/attribute already exists"},
{0x8009220E, "too many elements in node data"},
{0x80092240, "JSON syntax error"},
{0x80092241, "invalid JSON literal"},
{0x80092242, "invalid JSON number"},
{0x80092243, "invalid JSON string"},
{0x80092244, "invalid JSON object name"},
{0x80092245, "object name already exists"},
{0x80092246, "too long JSON object name"},
{0x80092247, "too deep JSON object/array nesting"},
{0x80092248, "cannot convert JSON array to property"},
{0x80092249, "cannot convert empty JSON object to property"},
{0x8009224A, "root node already exists"},
{0x8009224B, "cannot convert root node to TYPE_ARRAY"},
{0x8009224C, "name represents reserved attribute"},
{0x80092280, "finger-print differs"},
{0x800922C0, "operation is not supported"}};
const char *avs_util_error_str(avs_error error)
{
int i;
for (i = 0; i < lengthof(AVS_UTIL_ERRORS); i++) {
if (error == AVS_UTIL_ERRORS[i].error) {
return AVS_UTIL_ERRORS[i].msg;
}
}
return avs_util_error_unknown;
}

View File

@ -0,0 +1,8 @@
#ifndef AVS_UTIL_ERROR_H
#define AVS_UTIL_ERROR_H
#include "imports/avs.h"
const char *avs_util_error_str(avs_error error);
#endif