diff --git a/include/codec_config/syscap_define.h b/include/codec_config/syscap_define.h index dfdaed0..416d9e2 100755 --- a/include/codec_config/syscap_define.h +++ b/include/codec_config/syscap_define.h @@ -319,6 +319,8 @@ typedef enum SystemCapabilityNum { FILEMANAGEMENT_FILE_ENVIRONMENT_FOLDEROBTAIN, FILEMANAGEMENT_USERFILESERVICE_FOLDERSELECTION, FILEMANAGEMENT_APPFILESERVICE_FOLDERAUTHORIZATION, + MULTIMEDIA_MEDIA_AUDIOCODEC, + GRAPHICS_DRAWING, MULTIMEDIA_AUDIO_SPATIALIZATION, // Add before here SYSCAP_BASIC_END = 500, @@ -413,6 +415,7 @@ const static SyscapWithNum g_arraySyscap[] = { {"SystemCapability.Multimedia.Media.AudioRecorder", MULTIMEDIA_MEDIA_AUDIORECORDER}, {"SystemCapability.Multimedia.Media.AudioDecoder", MULTIMEDIA_MEDIA_AUDIODECODER}, {"SystemCapability.Multimedia.Media.AudioEncoder", MULTIMEDIA_MEDIA_AUDIOENCODER}, + {"SystemCapability.Multimedia.Media.AudioCodec", MULTIMEDIA_MEDIA_AUDIOCODEC}, {"SystemCapability.Multimedia.Media.VideoDecoder", MULTIMEDIA_MEDIA_VIDEODECODER}, {"SystemCapability.Multimedia.Media.VideoEncoder", MULTIMEDIA_MEDIA_VIDEOENCODER}, {"SystemCapability.Multimedia.Media.CodecBase", MULTIMEDIA_MEDIA_CODECBASE}, @@ -622,6 +625,7 @@ const static SyscapWithNum g_arraySyscap[] = { {"SystemCapability.FileManagement.UserFileService.FolderSelection", FILEMANAGEMENT_USERFILESERVICE_FOLDERSELECTION}, {"SystemCapability.FileManagement.AppFileService.FolderAuthorization", FILEMANAGEMENT_APPFILESERVICE_FOLDERAUTHORIZATION}, + {"SystemCapability.Graphics.Drawing", GRAPHICS_DRAWING}, {"SystemCapability.Multimedia.Audio.Spatialization", MULTIMEDIA_AUDIO_SPATIALIZATION}, }; diff --git a/interfaces/inner_api/syscap_interface.c b/interfaces/inner_api/syscap_interface.c index 9fd163b..81ee2e8 100644 --- a/interfaces/inner_api/syscap_interface.c +++ b/interfaces/inner_api/syscap_interface.c @@ -327,7 +327,6 @@ static int32_t TransStringFormatAndSaveSyscap(struct FreeAfterDecodeRpcidInfo fr cJSON *sysCapArray, const char *inputFile) { // trans to string format - freeAfterDecodeRpcidInfo.sysCapDefine = CreateWholeSyscapJsonObj(); sysCapArray = cJSON_GetObjectItem(freeAfterDecodeRpcidInfo.rpcidRoot, "syscap"); if (sysCapArray == NULL || !cJSON_IsArray(sysCapArray)) { PRINT_ERR("Get syscap failed. Input file: %s\n", inputFile); @@ -404,6 +403,7 @@ static void PartSysCapAndOutBuffer(struct FreeAfterDecodeRpcidInfo freeAfterDeco uint16_t indexPri = 0; cJSON *cJsonTemp = NULL; + freeAfterDecodeRpcidInfo.sysCapDefine = CreateWholeSyscapJsonObj(); (void)memset_s(priSyscapArray, freeAfterDecodeRpcidInfo.sysCapArraySize * SINGLE_SYSCAP_LEN, 0, freeAfterDecodeRpcidInfo.sysCapArraySize * SINGLE_SYSCAP_LEN); freeAfterDecodeRpcidInfo.priSyscap = priSyscapArray; @@ -492,7 +492,6 @@ char *DecodeRpcidToStringFormat(const char *inputFile) PRINT_ERR("Prase rpcid to json failed. Input file: %s\n", inputFile); return FreeAfterDecodeRpcidToString(freeAfterDecodeRpcidInfo, FREE_RPCID_ROOT_AFTER_DECODE_RPCID, outBuffer); } - ret = TransStringFormatAndSaveSyscap(freeAfterDecodeRpcidInfo, sysCapArray, inputFile); if (ret == -1) { return FreeAfterDecodeRpcidToString(freeAfterDecodeRpcidInfo, FREE_WHOLE_SYSCAP_AFTER_DECODE_RPCID, outBuffer); @@ -533,7 +532,7 @@ static int32_t CopySyscopToRet(struct PcidPriSyscapInfo pcidPriSyscapInfo, const static int32_t CheckPcidEachBit(struct PcidPriSyscapInfo pcidPriSyscapInfo, CompareError *result, const size_t allSyscapNum, uint32_t i, uint32_t blockBits) { - int32_t flag = 0; + int32_t ret = 0; for (uint8_t k = 0; k < INT_BIT; k++) { if (blockBits & (1U << k)) { char *tempSyscap = (char *)malloc(sizeof(char) * SINGLE_SYSCAP_LEN); @@ -542,8 +541,8 @@ static int32_t CheckPcidEachBit(struct PcidPriSyscapInfo pcidPriSyscapInfo, Comp FreeCompareError(result); return -1; } - flag = CopySyscopToRet(pcidPriSyscapInfo, allSyscapNum, tempSyscap, i, k); - if (flag != EOK) { + ret = CopySyscopToRet(pcidPriSyscapInfo, allSyscapNum, tempSyscap, i, k); + if (ret != EOK) { PRINT_ERR("strcpy_s failed.\n"); FreeCompareError(result); return -1; @@ -551,11 +550,11 @@ static int32_t CheckPcidEachBit(struct PcidPriSyscapInfo pcidPriSyscapInfo, Comp result->syscap[pcidPriSyscapInfo.ossyscapFlag++] = tempSyscap; } } - return 0; + return ret; } static int32_t ComparePcidWithOsSyscap(struct PcidPriSyscapInfo pcidPriSyscapInfo, - uint32_t pcidOsAarry[PCID_OUT_BUFFER], uint32_t rpcidOsAarry[PCID_OUT_BUFFER], CompareError *result, + const uint32_t pcidOsAarry[PCID_OUT_BUFFER], const uint32_t rpcidOsAarry[PCID_OUT_BUFFER], CompareError *result, const size_t allSyscapNum) { uint32_t i; diff --git a/src/create_pcid.c b/src/create_pcid.c index 7ad15aa..cea4e57 100644 --- a/src/create_pcid.c +++ b/src/create_pcid.c @@ -384,7 +384,6 @@ int32_t GetPriSyscap(PCIDMain *pcidMain, cJSON *sysCapObject, size_t contextBufL static int32_t CheckSysCapObj(struct FreeDecodePcidJsonInfo freePcidJsonInfo, PCIDMain *pcidMain, uint32_t contextBufLen, int32_t ret) { - freePcidJsonInfo.flag = 0; if (freePcidJsonInfo.sysCapObj == NULL) { PRINT_ERR("cJSON_CreateObject failed\n"); freePcidJsonInfo.flag = -1; @@ -456,6 +455,7 @@ int32_t DecodePCID(char *inputFile, char *outDirPath) freePcidJsonInfo.contextBuffer = NULL; freePcidJsonInfo.jsonRootObj = NULL; freePcidJsonInfo.sysCapObj = NULL; + freePcidJsonInfo.flag = 0; ret = GetFileContext(inputFile, &freePcidJsonInfo.contextBuffer, (uint32_t *)&contextBufLen); if (ret != 0) { diff --git a/src/syscap_tool.c b/src/syscap_tool.c index cf66e7d..ff4e084 100644 --- a/src/syscap_tool.c +++ b/src/syscap_tool.c @@ -450,6 +450,7 @@ int32_t EncodeRpcidscToString(char *inputFile, char *outDirPath) freeAfterEncodeRpcidscInfo.osSysCapIndex = NULL; freeAfterEncodeRpcidscInfo.sysCapDefine = NULL; freeAfterEncodeRpcidscInfo.rpcidRoot = NULL; + freeAfterEncodeRpcidscInfo.outBuffer = NULL; freeAfterEncodeRpcidscInfo.contextBuffer = NULL; freeAfterEncodeRpcidscInfo.type = 0; freeAfterEncodeRpcidscInfo.flag = 0; diff --git a/tools/syscap_collector.py b/tools/syscap_collector.py index 0902dda..ea00085 100755 --- a/tools/syscap_collector.py +++ b/tools/syscap_collector.py @@ -33,6 +33,12 @@ def get_args(): def dict_to_json(output_path: str, syscaps_dict: dict): + """ + output diff product syscaps json to output path + :param output_path: + :param syscaps_dict: + :return: + """ print("start generate syscap json...") flags = os.O_WRONLY | os.O_CREAT modes = stat.S_IWUSR | stat.S_IRUSR @@ -52,6 +58,12 @@ def check_syscap(syscap_str: str): def bundle_syscap_list_handler(bundle_syscap_list: list, component_syscaps_list: list): + """ + check syscap + :param bundle_syscap_list: + :param component_syscaps_list: + :return: + """ for component_syscap in component_syscaps_list: component_syscap = check_syscap(component_syscap) if component_syscap: @@ -92,6 +104,11 @@ def path_component_to_bundle(path: str) -> str: def handle_bundle_json_file(component_path_dict: dict): + """ + from product required part bundle.json to all products parts list + :param component_path_dict: + :return: all products parts list + """ print("start collect syscap path...") syscap_dict = dict() errors_list = list() @@ -130,6 +147,13 @@ def traversal_path(parts_path_info: dict, project_path: str, product_define_dict def collect_all_product_component_syscap_dict(parts_path_info: dict, project_path: str, product_define_dict): + """ + get all syscap to dict + :param parts_path_info: + :param project_path: + :param product_define_dict: + :return: + """ if parts_path_info: print("start collect component path...") component_path_dict = traversal_path(parts_path_info, project_path, product_define_dict) @@ -140,6 +164,12 @@ def collect_all_product_component_syscap_dict(parts_path_info: dict, project_pat def get_subsystem_info(subsystem_config_file, source_root_dir): + """ + get subsystem name and subsystem path from oh/build/subsystem_config.json + :param subsystem_config_file: subsystem_config_file path + :param source_root_dir: oh project path + :return: subsystem name and subsystem path + """ subsystem_configs = scan(subsystem_config_file, source_root_dir) _all_components_path = [] for _, value in subsystem_configs.get('subsystem').items(): @@ -226,7 +256,7 @@ def scan(subsystem_config_file, source_root_dir): 'source_path': source_root_dir, 'subsystem': _build_configs, } - print('subsytem config scan completed') + print('subsystem config scan completed') return scan_result @@ -376,7 +406,12 @@ class LoadBuildConfig(object): def get_parts_info(source_root_dir, subsystem_info, build_xts=False): - """parts info, get info from build config file. + """ + get parts path info from subsystem info + :param source_root_dir: oh project path + :param subsystem_info: + :param build_xts: + :return: parts path info """ _phony_target = {} _parts_path_info = {} @@ -458,8 +493,9 @@ def get_product_define_dict(source_root_dir): def output_path_handler(project_path): output_path = os.path.join(project_path, 'interface', 'sdk-js', 'api', 'device-define-common') folder = os.path.exists(output_path) + # 多线程创建文件夹问题 if not folder: - os.mkdir(output_path) + os.makedirs(output_path, exist_ok=True) return output_path