mirror of
https://github.com/openharmony/developtools_syscap_codec.git
synced 2026-08-27 02:11:19 -04:00
Merge branch 'master' of gitee.com:openharmony/developtools_syscap_codec into master
Signed-off-by: chongteng wang <wangchongteng@huawei.com>
This commit is contained in:
@@ -316,6 +316,9 @@ typedef enum SystemCapabilityNum {
|
||||
WINDOW_SESSIONMANAGER,
|
||||
PRINT_PRINT_FRAMEWORK_NATIVEPRINT,
|
||||
ARKUI_GRAPHICS3D,
|
||||
FILEMANAGEMENT_FILE_ENVIRONMENT_FOLDEROBTAIN,
|
||||
FILEMANAGEMENT_USERFILESERVICE_FOLDERSELECTION,
|
||||
FILEMANAGEMENT_APPFILESERVICE_FOLDERAUTHORIZATION,
|
||||
MULTIMEDIA_AUDIO_SPATIALIZATION,
|
||||
// Add before here
|
||||
SYSCAP_BASIC_END = 500,
|
||||
@@ -615,6 +618,10 @@ const static SyscapWithNum g_arraySyscap[] = {
|
||||
{"SystemCapability.Window.SessionManager", WINDOW_SESSIONMANAGER},
|
||||
{"SystemCapability.Print.PrintFramework.NativePrint", PRINT_PRINT_FRAMEWORK_NATIVEPRINT},
|
||||
{"SystemCapability.ArkUi.Graphics3D", ARKUI_GRAPHICS3D},
|
||||
{"SystemCapability.FileManagement.File.Environment.FolderObtain", FILEMANAGEMENT_FILE_ENVIRONMENT_FOLDEROBTAIN},
|
||||
{"SystemCapability.FileManagement.UserFileService.FolderSelection", FILEMANAGEMENT_USERFILESERVICE_FOLDERSELECTION},
|
||||
{"SystemCapability.FileManagement.AppFileService.FolderAuthorization",
|
||||
FILEMANAGEMENT_APPFILESERVICE_FOLDERAUTHORIZATION},
|
||||
{"SystemCapability.Multimedia.Audio.Spatialization", MULTIMEDIA_AUDIO_SPATIALIZATION},
|
||||
};
|
||||
|
||||
|
||||
@@ -374,7 +374,6 @@ static void PrintResultToOutBuffer(struct FreeAfterDecodeRpcidInfo freeAfterDeco
|
||||
if (ret == -1) {
|
||||
PRINT_ERR("sprintf_s failed.\n");
|
||||
free(outBuffer);
|
||||
outBuffer = NULL;
|
||||
return;
|
||||
}
|
||||
for (i = 1; i < RPCID_OUT_BUFFER; i++) {
|
||||
@@ -382,7 +381,6 @@ static void PrintResultToOutBuffer(struct FreeAfterDecodeRpcidInfo freeAfterDeco
|
||||
if (ret == -1) {
|
||||
PRINT_ERR("sprintf_s failed.\n");
|
||||
free(outBuffer);
|
||||
outBuffer = NULL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -392,7 +390,6 @@ static void PrintResultToOutBuffer(struct FreeAfterDecodeRpcidInfo freeAfterDeco
|
||||
if (ret == -1) {
|
||||
PRINT_ERR("sprintf_s failed.\n");
|
||||
free(outBuffer);
|
||||
outBuffer = NULL;
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -413,8 +410,13 @@ static void PartSysCapAndOutBuffer(struct FreeAfterDecodeRpcidInfo freeAfterDeco
|
||||
// part os syscap and ptivate syscap
|
||||
for (i = 0; i < (uint32_t)freeAfterDecodeRpcidInfo.sysCapArraySize; i++) {
|
||||
cJSON *cJsonItem = cJSON_GetArrayItem(sysCapArray, i);
|
||||
if (cJsonItem->valuestring == NULL) {
|
||||
cJSON_Delete(cJsonItem);
|
||||
return;
|
||||
}
|
||||
|
||||
cJsonTemp = cJSON_GetObjectItem(freeAfterDecodeRpcidInfo.sysCapDefine, cJsonItem->valuestring);
|
||||
if (cJsonTemp != NULL) {
|
||||
if (cJsonTemp != NULL && cJSON_IsNumber(cJsonTemp)) {
|
||||
freeAfterDecodeRpcidInfo.osSysCapIndex[indexOs++] = (uint16_t)(cJsonTemp->valueint);
|
||||
} else {
|
||||
ret = strcpy_s(freeAfterDecodeRpcidInfo.priSyscap, SINGLE_SYSCAP_LEN, cJsonItem->valuestring);
|
||||
@@ -435,16 +437,26 @@ static char *FreeAfterDecodeRpcidToString(struct FreeAfterDecodeRpcidInfo freeAf
|
||||
switch (type) {
|
||||
case FREE_MALLOC_PRISYSCAP_AFTER_DECODE_RPCID:
|
||||
free(freeAfterDecodeRpcidInfo.priSyscap);
|
||||
/* fall-through */
|
||||
free(freeAfterDecodeRpcidInfo.osSysCapIndex);
|
||||
cJSON_Delete(freeAfterDecodeRpcidInfo.sysCapDefine);
|
||||
cJSON_Delete(freeAfterDecodeRpcidInfo.rpcidRoot);
|
||||
FreeContextBuffer(freeAfterDecodeRpcidInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_MALLOC_OSSYSCAP_AFTER_DECODE_RPCID:
|
||||
free(freeAfterDecodeRpcidInfo.osSysCapIndex);
|
||||
/* fall-through */
|
||||
cJSON_Delete(freeAfterDecodeRpcidInfo.sysCapDefine);
|
||||
cJSON_Delete(freeAfterDecodeRpcidInfo.rpcidRoot);
|
||||
FreeContextBuffer(freeAfterDecodeRpcidInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_WHOLE_SYSCAP_AFTER_DECODE_RPCID:
|
||||
cJSON_Delete(freeAfterDecodeRpcidInfo.sysCapDefine);
|
||||
/* fall-through */
|
||||
cJSON_Delete(freeAfterDecodeRpcidInfo.rpcidRoot);
|
||||
FreeContextBuffer(freeAfterDecodeRpcidInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_RPCID_ROOT_AFTER_DECODE_RPCID:
|
||||
cJSON_Delete(freeAfterDecodeRpcidInfo.rpcidRoot);
|
||||
/* fall-through */
|
||||
FreeContextBuffer(freeAfterDecodeRpcidInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_CONTEXT_OUT_AFTER_DECODE_RPCID:
|
||||
default:
|
||||
FreeContextBuffer(freeAfterDecodeRpcidInfo.contextBuffer);
|
||||
|
||||
+14
-5
@@ -427,13 +427,19 @@ static int32_t FreeAfterDecodePCID(struct FreeDecodePcidJsonInfo freePcidJsonInf
|
||||
switch (type) {
|
||||
case FREE_DECODE_PCID_CONVERT_OUT:
|
||||
free(freePcidJsonInfo.strJson);
|
||||
/* fall-through */
|
||||
cJSON_Delete(freePcidJsonInfo.jsonRootObj);
|
||||
cJSON_Delete(freePcidJsonInfo.sysCapObj);
|
||||
FreeContextBuffer(freePcidJsonInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_DECODE_PCID_ROOT_OUT:
|
||||
cJSON_Delete(freePcidJsonInfo.jsonRootObj);
|
||||
/* fall-through */
|
||||
cJSON_Delete(freePcidJsonInfo.sysCapObj);
|
||||
FreeContextBuffer(freePcidJsonInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_DECODE_PCID_SYSCAP_OUT:
|
||||
cJSON_Delete(freePcidJsonInfo.sysCapObj);
|
||||
/* fall-through */
|
||||
FreeContextBuffer(freePcidJsonInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_DECODE_PCID_CONTEXT_OUT:
|
||||
default:
|
||||
FreeContextBuffer(freePcidJsonInfo.contextBuffer);
|
||||
@@ -722,10 +728,13 @@ static int32_t FreeAfterEncodePCID(struct FreeEncodePcidInfo freePcidInfo, int32
|
||||
switch (type) {
|
||||
case FREE_ENCODE_PCID_OUT:
|
||||
free(freePcidInfo.output);
|
||||
/* fall-through */
|
||||
free(freePcidInfo.priSyscapFull);
|
||||
free(freePcidInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_ENCODE_PCID_PRISYSCAP_FULL_OUT:
|
||||
free(freePcidInfo.priSyscapFull);
|
||||
/* fall-through */
|
||||
free(freePcidInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_ENCODE_PCID_CONTEXT_OUT:
|
||||
default:
|
||||
free(freePcidInfo.contextBuffer);
|
||||
|
||||
+40
-16
@@ -95,6 +95,11 @@ static int32_t FillOsCapLength(char *convertedBuffer, char *contextBuffer, struc
|
||||
fillTmpPtr += sizeof(uint16_t);
|
||||
for (uint32_t i = 0; i < sysCapSize; i++) {
|
||||
arrayItemPtr = cJSON_GetArrayItem(gJsonObjectSysCap.sysCapPtr, (int)i);
|
||||
if (arrayItemPtr->valuestring == NULL) {
|
||||
PRINT_ERR("arrayItemPtr->valuestring is NULL\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *pointPos = strchr(arrayItemPtr->valuestring, '.');
|
||||
if (pointPos == NULL) {
|
||||
PRINT_ERR("context of \"syscap\" array is invalid\n");
|
||||
@@ -287,10 +292,19 @@ static int SetOsSysCapBitMap(uint8_t *out, uint16_t outLen, const uint16_t *inde
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t PrintOutputToFile(struct FreeAfterEncodeRpcidscInfo freeAfterEncodeRpcidscInfo, uint16_t outBufferLen,
|
||||
static int32_t PrintOutputToFile(struct FreeAfterEncodeRpcidscInfo freeAfterEncodeRpcidscInfo,
|
||||
uint32_t outUint[RPCID_OUT_BUFFER], uint16_t indexPri, char *outDirPath)
|
||||
{
|
||||
int32_t ret = 0;
|
||||
|
||||
uint16_t outBufferLen = U32_TO_STR_MAX_LEN * RPCID_OUT_BUFFER + SINGLE_SYSCAP_LEN * indexPri;
|
||||
freeAfterEncodeRpcidscInfo.outBuffer = (char *)malloc(outBufferLen);
|
||||
if (freeAfterEncodeRpcidscInfo.outBuffer == NULL) {
|
||||
PRINT_ERR("malloc(%u) failed.\n", outBufferLen);
|
||||
freeAfterEncodeRpcidscInfo.flag = 1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
freeAfterEncodeRpcidscInfo.type = FREE_OUTBUFFER_AFTER_RPCIDSC;
|
||||
(void)memset_s(freeAfterEncodeRpcidscInfo.outBuffer, outBufferLen, 0, outBufferLen);
|
||||
ret = sprintf_s(freeAfterEncodeRpcidscInfo.outBuffer, outBufferLen, "%u", outUint[0]);
|
||||
@@ -354,8 +368,11 @@ static int32_t OutputSetMemAndPrintToFile(struct FreeAfterEncodeRpcidscInfo free
|
||||
uint16_t indexOs = 0;
|
||||
for (int i = 0; i < sysCapArraySize; i++) {
|
||||
cJSON *cJsonItem = cJSON_GetArrayItem(sysCapArray, i);
|
||||
if (cJsonItem->valuestring == NULL) {
|
||||
continue;
|
||||
}
|
||||
cJsonTemp = cJSON_GetObjectItem(freeAfterEncodeRpcidscInfo.sysCapDefine, cJsonItem->valuestring);
|
||||
if (cJsonTemp != NULL) {
|
||||
if (cJsonTemp != NULL && cJSON_IsNumber(cJsonTemp)) {
|
||||
freeAfterEncodeRpcidscInfo.osSysCapIndex[indexOs++] = (uint16_t)(cJsonTemp->valueint);
|
||||
} else {
|
||||
ret = strcpy_s(priSyscap, SINGLE_SYSCAP_LEN, cJsonItem->valuestring);
|
||||
@@ -378,15 +395,7 @@ static int32_t OutputSetMemAndPrintToFile(struct FreeAfterEncodeRpcidscInfo free
|
||||
freeAfterEncodeRpcidscInfo.flag = 1;
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint16_t outBufferLen = U32_TO_STR_MAX_LEN * RPCID_OUT_BUFFER + SINGLE_SYSCAP_LEN * indexPri;
|
||||
freeAfterEncodeRpcidscInfo.outBuffer = (char *)malloc(outBufferLen);
|
||||
if (freeAfterEncodeRpcidscInfo.outBuffer == NULL) {
|
||||
PRINT_ERR("malloc(%u) failed.\n", outBufferLen);
|
||||
freeAfterEncodeRpcidscInfo.flag = 1;
|
||||
return ret;
|
||||
}
|
||||
return PrintOutputToFile(freeAfterEncodeRpcidscInfo, outBufferLen, outUint, indexPri, outDirPath);
|
||||
return PrintOutputToFile(freeAfterEncodeRpcidscInfo, outUint, indexPri, outDirPath);
|
||||
}
|
||||
|
||||
static int32_t FreeAfterEncodeRpcidsc(struct FreeAfterEncodeRpcidscInfo freeAfterEncodeRpcidscInfo, int32_t type,
|
||||
@@ -395,19 +404,34 @@ static int32_t FreeAfterEncodeRpcidsc(struct FreeAfterEncodeRpcidscInfo freeAfte
|
||||
switch (type) {
|
||||
case FREE_OUTBUFFER_AFTER_RPCIDSC:
|
||||
free(freeAfterEncodeRpcidscInfo.outBuffer);
|
||||
/* fall-through */
|
||||
free(freeAfterEncodeRpcidscInfo.priSyscapArray);
|
||||
free(freeAfterEncodeRpcidscInfo.osSysCapIndex);
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.sysCapDefine);
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.rpcidRoot);
|
||||
FreeContextBuffer(freeAfterEncodeRpcidscInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_MALLOC_RPISYSCAP_AFTER_RPCIDSC:
|
||||
free(freeAfterEncodeRpcidscInfo.priSyscapArray);
|
||||
/* fall-through */
|
||||
free(freeAfterEncodeRpcidscInfo.osSysCapIndex);
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.sysCapDefine);
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.rpcidRoot);
|
||||
FreeContextBuffer(freeAfterEncodeRpcidscInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_MALLOC_OSSYSCAP_AFTER_RPCIDSC:
|
||||
free(freeAfterEncodeRpcidscInfo.osSysCapIndex);
|
||||
/* fall-through */
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.sysCapDefine);
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.rpcidRoot);
|
||||
FreeContextBuffer(freeAfterEncodeRpcidscInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_WHOLE_SYSCAP_AFTER_RPCIDSC:
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.sysCapDefine);
|
||||
/* fall-through */
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.rpcidRoot);
|
||||
FreeContextBuffer(freeAfterEncodeRpcidscInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_RPCID_ROOT_AFTER_RPCIDSC:
|
||||
cJSON_Delete(freeAfterEncodeRpcidscInfo.rpcidRoot);
|
||||
/* fall-through */
|
||||
FreeContextBuffer(freeAfterEncodeRpcidscInfo.contextBuffer);
|
||||
break;
|
||||
case FREE_CONTEXT_OUT_AFTER_RPCIDSC:
|
||||
default:
|
||||
FreeContextBuffer(freeAfterEncodeRpcidscInfo.contextBuffer);
|
||||
|
||||
Reference in New Issue
Block a user