mirror of
https://github.com/openharmony/developtools_syscap_codec.git
synced 2026-08-27 20:29:57 -04:00
@@ -510,7 +510,7 @@ static int32_t CopySyscopToRet(struct PcidPriSyscapInfo pcidPriSyscapInfo, const
|
||||
break;
|
||||
}
|
||||
}
|
||||
pcidPriSyscapInfo.ret = strcpy_s(tempSyscap, sizeof(char) * SINGLE_SYSCAP_LEN, g_arraySyscap[t].str);
|
||||
pcidPriSyscapInfo.ret = strcpy_s(tempSyscap, sizeof(char) * SINGLE_SYSCAP_LEN, g_arraySyscap[t].str);
|
||||
// 2, header of pcid & rpcid
|
||||
if (pcidPriSyscapInfo.ret != EOK) {
|
||||
return -1;
|
||||
@@ -542,7 +542,7 @@ static int32_t CheckPcidEachBit(struct PcidPriSyscapInfo pcidPriSyscapInfo, Comp
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t ComparePcidWithOsSyscap(struct PcidPriSyscapInfo pcidPriSyscapInfo,
|
||||
static int32_t ComparePcidWithOsSyscap(struct PcidPriSyscapInfo pcidPriSyscapInfo,
|
||||
uint32_t pcidOsAarry[PCID_OUT_BUFFER], uint32_t rpcidOsAarry[PCID_OUT_BUFFER], CompareError *result,
|
||||
const size_t allSyscapNum)
|
||||
{
|
||||
|
||||
+14
-23
@@ -29,9 +29,6 @@ constexpr size_t PCID_MAIN_U32 = OS_SYSCAP_U32_NUM + 2;
|
||||
constexpr size_t U32_TO_STR_MAX_LEN = 11;
|
||||
constexpr size_t KEY_BUFFER_SIZE = 32;
|
||||
|
||||
#define FREE_PRICAP_ARRAY_AFTER_GET_SYS_CAP 1
|
||||
#define FREE_PRIOUTPUT_AFTER_GET_SYS_CAP 2
|
||||
|
||||
#define GET_PARAMS(env, info, num) \
|
||||
size_t argc = num; \
|
||||
napi_value argv[num] = {0}; \
|
||||
@@ -53,16 +50,15 @@ struct SystemCapabilityAsyncContext {
|
||||
int status = 0;
|
||||
};
|
||||
|
||||
static char* CalculateAllStringLength(char *priOutput, char osCapArray[PCID_MAIN_U32][U32_TO_STR_MAX_LEN],
|
||||
char (*priCapArray)[SINGLE_SYSCAP_LEN], char *allSyscapBuffer)
|
||||
static char* CalculateAllStringLength(char osCapArray[PCID_MAIN_U32][U32_TO_STR_MAX_LEN],
|
||||
char (*priCapArray)[SINGLE_SYSCAP_LEN], bool retBool, int priCapArrayCnt)
|
||||
{
|
||||
bool retBool;
|
||||
errno_t err = EOK;
|
||||
char *temp = nullptr;
|
||||
int retError, priCapArrayCnt;
|
||||
int retError;
|
||||
int sumLen = 0;
|
||||
char *allSyscapBuffer = nullptr;
|
||||
|
||||
retBool = DecodePrivateSyscap(priOutput, &priCapArray, &priCapArrayCnt);
|
||||
if (!retBool) {
|
||||
PRINT_ERR("get encoded private syscap failed.");
|
||||
return allSyscapBuffer;
|
||||
@@ -111,20 +107,10 @@ static char* CalculateAllStringLength(char *priOutput, char osCapArray[PCID_MAIN
|
||||
return allSyscapBuffer;
|
||||
}
|
||||
|
||||
static char* FreeAfterGetSysCap(char *priOutput, char (*priCapArray)[SINGLE_SYSCAP_LEN], char *allSyscapBuffer,
|
||||
int32_t type)
|
||||
{
|
||||
if (type == FREE_PRICAP_ARRAY_AFTER_GET_SYS_CAP) {
|
||||
free(priCapArray);
|
||||
}
|
||||
free(priOutput);
|
||||
return allSyscapBuffer;
|
||||
}
|
||||
|
||||
static char* GetSystemCapability()
|
||||
{
|
||||
bool retBool;
|
||||
int retError, priOutputLen;
|
||||
int retError, priOutputLen, priCapArrayCnt;
|
||||
char osOutput[SINGLE_SYSCAP_LEN] = {};
|
||||
|
||||
uint32_t *osCapU32 = nullptr;
|
||||
@@ -142,7 +128,7 @@ static char* GetSystemCapability()
|
||||
retBool = EncodePrivateSyscap(&priOutput, &priOutputLen);
|
||||
if (!retBool) {
|
||||
PRINT_ERR("get encoded private syscap failed.");
|
||||
return FreeAfterGetSysCap(priOutput, priCapArray, allSyscapBuffer, FREE_PRIOUTPUT_AFTER_GET_SYS_CAP);
|
||||
goto FREE_PRIOUTPUT;
|
||||
}
|
||||
|
||||
osCapU32 = reinterpret_cast<uint32_t *>(osOutput);
|
||||
@@ -150,12 +136,17 @@ static char* GetSystemCapability()
|
||||
retError = sprintf_s(osCapArray[i], U32_TO_STR_MAX_LEN, "%u", osCapU32[i]);
|
||||
if (retError == -1) {
|
||||
PRINT_ERR("get uint32_t syscap string failed.");
|
||||
return FreeAfterGetSysCap(priOutput, priCapArray, allSyscapBuffer, FREE_PRIOUTPUT_AFTER_GET_SYS_CAP);
|
||||
goto FREE_PRIOUTPUT;
|
||||
}
|
||||
}
|
||||
retBool = DecodePrivateSyscap(priOutput, &priCapArray, &priCapArrayCnt);
|
||||
allSyscapBuffer = CalculateAllStringLength(osCapArray, priCapArray, retBool, priCapArrayCnt);
|
||||
free(priCapArray);
|
||||
|
||||
allSyscapBuffer = CalculateAllStringLength(priOutput, osCapArray, priCapArray, allSyscapBuffer);
|
||||
return FreeAfterGetSysCap(priOutput, priCapArray, allSyscapBuffer, FREE_PRICAP_ARRAY_AFTER_GET_SYS_CAP);
|
||||
FREE_PRIOUTPUT:
|
||||
free(priOutput);
|
||||
|
||||
return allSyscapBuffer;
|
||||
}
|
||||
|
||||
napi_value QuerySystemCapability(napi_env env, napi_callback_info info)
|
||||
|
||||
+31
-18
@@ -775,11 +775,36 @@ static int32_t GetEncodePCIDOut(uint16_t priSyscapCount, uint32_t privateSyscapL
|
||||
return FreeAfterEncodePCID(freePcidInfo, FREE_ENCODE_PCID_OUT, ret);
|
||||
}
|
||||
|
||||
static int32_t CheckPrivateSyCap(struct FreeEncodePcidInfo freePcidInfo, uint32_t privateSyscapLen,
|
||||
char *privateSyscap, int32_t ret)
|
||||
{
|
||||
uint32_t i, j;
|
||||
char tempSyscap[SINGLE_SYSCAP_LEN] = {0};
|
||||
char *temp = tempSyscap;
|
||||
for (i = 0, j = 0; i < privateSyscapLen; i++) {
|
||||
if (*privateSyscap == ',') {
|
||||
*temp = '\0';
|
||||
ret = sprintf_s(freePcidInfo.priSyscapFull + j * SINGLE_SYSCAP_LEN, SINGLE_SYSCAP_LEN,
|
||||
"SystemCapability.%s", tempSyscap);
|
||||
if (ret == -1) {
|
||||
PRINT_ERR("sprintf_s failed\n");
|
||||
return ret;
|
||||
}
|
||||
temp = tempSyscap;
|
||||
privateSyscap++;
|
||||
j++;
|
||||
continue;
|
||||
}
|
||||
*temp++ = *privateSyscap++;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int32_t EncodePcidscToString(char *inputFile, char *outDirPath)
|
||||
{
|
||||
int32_t ret = 0;
|
||||
uint32_t bufferLen, privateSyscapLen;
|
||||
uint32_t i, j;
|
||||
uint32_t i;
|
||||
uint32_t *mainSyscap = NULL;
|
||||
uint16_t priSyscapCount = 0;
|
||||
|
||||
@@ -825,24 +850,12 @@ int32_t EncodePcidscToString(char *inputFile, char *outDirPath)
|
||||
}
|
||||
(void)memset_s(freePcidInfo.priSyscapFull, priSyscapCount * SINGLE_SYSCAP_LEN,
|
||||
0, priSyscapCount * SINGLE_SYSCAP_LEN);
|
||||
char tempSyscap[SINGLE_SYSCAP_LEN] = {0};
|
||||
char *temp = tempSyscap;
|
||||
for (i = 0, j = 0; i < privateSyscapLen; i++) {
|
||||
if (*privateSyscap == ',') {
|
||||
*temp = '\0';
|
||||
ret = sprintf_s(freePcidInfo.priSyscapFull + j * SINGLE_SYSCAP_LEN, SINGLE_SYSCAP_LEN,
|
||||
"SystemCapability.%s", tempSyscap);
|
||||
if (ret == -1) {
|
||||
PRINT_ERR("sprintf_s failed\n");
|
||||
return FreeAfterEncodePCID(freePcidInfo, FREE_ENCODE_PCID_PRISYSCAP_FULL_OUT, ret);
|
||||
}
|
||||
temp = tempSyscap;
|
||||
privateSyscap++;
|
||||
j++;
|
||||
continue;
|
||||
}
|
||||
*temp++ = *privateSyscap++;
|
||||
|
||||
ret = CheckPrivateSyCap(freePcidInfo, privateSyscapLen, privateSyscap, ret);
|
||||
if (ret == -1) {
|
||||
return FreeAfterEncodePCID(freePcidInfo, FREE_ENCODE_PCID_PRISYSCAP_FULL_OUT, ret);
|
||||
}
|
||||
|
||||
// output
|
||||
return GetEncodePCIDOut(priSyscapCount, privateSyscapLen, mainSyscap, freePcidInfo, ret);
|
||||
}
|
||||
+2
-2
@@ -54,7 +54,7 @@
|
||||
#define FREE_RPCID_ROOT_AFTER_RPCIDSC 5
|
||||
#define FREE_CONTEXT_OUT_AFTER_RPCIDSC 6
|
||||
|
||||
struct JsonObjectSysCap{
|
||||
struct JsonObjectSysCap {
|
||||
cJSON *cjsonObjectRoot;
|
||||
cJSON *sysCapPtr;
|
||||
};
|
||||
@@ -373,7 +373,7 @@ static int32_t OutputSetMemAndPrintToFile(struct FreeAfterEncodeRpcidscInfo free
|
||||
outUint[1] = *(uint32_t *)(freeAfterEncodeRpcidscInfo.contextBuffer + sizeof(uint32_t));
|
||||
uint8_t *osOutUint = (uint8_t *)(outUint + 2);
|
||||
// 120, len of osOutUint
|
||||
if (SetOsSysCapBitMap(osOutUint, 120, freeAfterEncodeRpcidscInfo.osSysCapIndex, indexOs) != 0) {
|
||||
if (SetOsSysCapBitMap(osOutUint, 120, freeAfterEncodeRpcidscInfo.osSysCapIndex, indexOs) != 0) {
|
||||
PRINT_ERR("Set os syscap bit map failed.\n");
|
||||
freeAfterEncodeRpcidscInfo.flag = 1;
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user