mirror of
https://github.com/openharmony/developtools_syscap_codec.git
synced 2026-08-27 02:11:19 -04:00
add DecodeOsSyscap function.
Signed-off-by: yudechen <chenyude@huawei.com> Change-Id: I2f41837187755a88430a7b689fd5d951cd3d59f7
This commit is contained in:
@@ -96,6 +96,7 @@ ohos_shared_library("syscap_tool_shared") {
|
||||
|
||||
ohos_shared_library("syscap_interface_shared") {
|
||||
include_dirs = [ "./interfaces/inner_api/" ]
|
||||
public_configs = [ ":pubilc" ]
|
||||
sources = [ "./interfaces/inner_api/syscap_interface.c" ]
|
||||
|
||||
deps = [ "//third_party/bounds_checking_function:libsec_static" ]
|
||||
|
||||
@@ -19,10 +19,13 @@
|
||||
#include <securec.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "create_pcid.h"
|
||||
#include "syscap_interface.h"
|
||||
|
||||
#define PCID_OUT_BUFFER 32
|
||||
#define MAX_SYSCAP_STR_LEN 128
|
||||
#define OS_SYSCAP_BYTES 120
|
||||
#define BITS_OF_BYTE 8
|
||||
|
||||
#define PRINT_ERR(...) \
|
||||
do { \
|
||||
@@ -30,7 +33,137 @@
|
||||
printf(__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
bool EncodeOsSyscap(int output[32])
|
||||
static SyscapWithNum arraySyscap[] = {
|
||||
{"SystemCapability.Account.AppAccount", ACCOUNT_APPACCOUNT},
|
||||
{"SystemCapability.Account.OsAccount", ACCOUNT_OSACCOUNT},
|
||||
{"SystemCapability.Ace.AceEngineLite", ACE_ACEENGINELITE},
|
||||
{"SystemCapability.Ai.AiEngine", AI_AIENGINE},
|
||||
{"SystemCapability.Applications.ContactsData", APPLICATIONS_CONTACTSDATA},
|
||||
{"SystemCapability.Barrierfree.Accessibility.Core", BARRIERFREE_ACCESSIBILITY_CORE},
|
||||
{"SystemCapability.BundleManager.BundleFramework", BUNDLEMANAGER_BUNDLEFRAMEWORK},
|
||||
{"SystemCapability.BundleManager.BundleTool", BUNDLEMANAGER_BUNDLETOOL},
|
||||
{"SystemCapability.BundleManager.DistributedBundleFramework", BUNDLEMANAGER_DISTRIBUTEDBUNDLEFRAMEWORK},
|
||||
{"SystemCapability.BundleManager.Zlib", BUNDLEMANAGER_ZLIB},
|
||||
{"SystemCapability.Communication.Bluetooth.Core", COMMUNICATION_BLUETOOTH_CORE},
|
||||
{"SystemCapability.Communication.NetManager.Core", COMMUNICATION_NETMANAGER_CORE},
|
||||
{"SystemCapability.Communication.NetManager.Extension", COMMUNICATION_NETMANAGER_EXTENSION},
|
||||
{"SystemCapability.Communication.NetStack", COMMUNICATION_NETSTACK},
|
||||
{"SystemCapability.Communication.SoftBus.Core", COMMUNICATION_SOFTBUS_CORE},
|
||||
{"SystemCapability.Communication.WiFi.AP", COMMUNICATION_WIFI_AP},
|
||||
{"SystemCapability.Communication.WiFi.Core", COMMUNICATION_WIFI_CORE},
|
||||
{"SystemCapability.Communication.WiFi.HotspotExt", COMMUNICATION_WIFI_HOTSPOTEXT},
|
||||
{"SystemCapability.Communication.WiFi.P2P", COMMUNICATION_WIFI_P2P},
|
||||
{"SystemCapability.Communication.WiFi.STA", COMMUNICATION_WIFI_STA},
|
||||
{"SystemCapability.Customization.ConfigPolicy", CUSTOMIZATION_CONFIGPOLICY},
|
||||
{"SystemCapability.Customization.EnterpriseDeviceManager", CUSTOMIZATION_ENTERPRISEDEVICEMANAGER},
|
||||
{"SystemCapability.DistributedDataManager.DataObject.DistributedObject", DISTRIBUTEDDATAMANAGER_DATAOBJECT_DISTRIBUTEDOBJECT},
|
||||
{"SystemCapability.DistributedDataManager.DataShare.Consumer", DISTRIBUTEDDATAMANAGER_DATASHARE_CONSUMER},
|
||||
{"SystemCapability.DistributedDataManager.DataShare.Core", DISTRIBUTEDDATAMANAGER_DATASHARE_CORE},
|
||||
{"SystemCapability.DistributedDataManager.DataShare.Provider", DISTRIBUTEDDATAMANAGER_DATASHARE_PROVIDER},
|
||||
{"SystemCapability.DistributedDataManager.KVStore.Core", DISTRIBUTEDDATAMANAGER_KVSTORE_CORE},
|
||||
{"SystemCapability.DistributedDataManager.KVStore.DistributedKVStore", DISTRIBUTEDDATAMANAGER_KVSTORE_DISTRIBUTEDKVSTORE},
|
||||
{"SystemCapability.DistributedDataManager.KVStore.Lite", DISTRIBUTEDDATAMANAGER_KVSTORE_LITE},
|
||||
{"SystemCapability.DistributedDataManager.Preferences.Core", DISTRIBUTEDDATAMANAGER_PREFERENCES_CORE},
|
||||
{"SystemCapability.DistributedDataManager.RelationalStore.Core", DISTRIBUTEDDATAMANAGER_RELATIONALSTORE_CORE},
|
||||
{"SystemCapability.DistributedHardware.DeviceManager", DISTRIBUTEDHARDWARE_DEVICEMANAGER},
|
||||
{"SystemCapability.distributedhardware.distributed_camera", DISTRIBUTEDHARDWARE_DISTRIBUTED_CAMERA},
|
||||
{"SystemCapability.distributedhardware.distributed_hardware_fwk", DISTRIBUTEDHARDWARE_DISTRIBUTED_HARDWARE_FWK},
|
||||
{"SystemCapability.distributedhardware.distributed_screen", DISTRIBUTEDHARDWARE_DISTRIBUTED_SCREEN},
|
||||
{"SystemCapability.FileManagement.FileManagerService", FILEMANAGEMENT_FILEMANAGERSERVICE},
|
||||
{"SystemCapability.FileManagement.RemoteFileShare", FILEMANAGEMENT_REMOTEFILESHARE},
|
||||
{"SystemCapability.Global.ResourceManager", GLOBAL_RESOURCEMANAGER},
|
||||
{"SystemCapability.Graphic.Graphic2D.NativeDrawing", GRAPHIC_GRAPHIC2D_NATIVEDRAWING},
|
||||
{"SystemCapability.Graphic.Graphic2D.NativeWindow", GRAPHIC_GRAPHIC2D_NATIVEDRAWING},
|
||||
{"SystemCapability.Graphic.Graphic2D.WebGL", GRAPHIC_GRAPHIC2D_WEBGL},
|
||||
{"SystemCapability.Graphic.Graphic2D.WebGL2", GRAPHIC_GRAPHIC2D_WEBGL2},
|
||||
{"SystemCapability.Graphic.Surface", GRAPHIC_SURFACE},
|
||||
{"SystemCapability.Graphic.UI", GRAPHIC_UI},
|
||||
{"SystemCapability.Graphic.Utils", GRAPHIC_UTILS},
|
||||
{"SystemCapability.Graphic.Wms", GRAPHIC_WMS},
|
||||
{"SystemCapability.HiviewDFX.HiAppEvent", HIVIEWDFX_HIAPPEVENT},
|
||||
{"SystemCapability.HiviewDFX.HiDumper", HIVIEWDFX_HIDUMPER},
|
||||
{"SystemCapability.HiviewDFX.HiLog", HIVIEWDFX_HILOG},
|
||||
{"SystemCapability.HiviewDFX.HiLogLite", HIVIEWDFX_HILOGLITE},
|
||||
{"SystemCapability.HiviewDFX.HiProfiler.HiDebug", HIVIEWDFX_HIPROFILER_HIDEBUG},
|
||||
{"SystemCapability.HiviewDFX.HiSysEvent", HIVIEWDFX_HISYSEVENT},
|
||||
{"SystemCapability.HiviewDFX.HiTrace", HIVIEWDFX_HITRACE},
|
||||
{"SystemCapability.HiviewDFX.Hiview", HIVIEWDFX_HIVIEW},
|
||||
{"SystemCapability.HiviewDFX.Hiview.FaultLogger", HIVIEWDFX_HIVIEW_FAULTLOGGER},
|
||||
{"SystemCapability.I18N", I18N},
|
||||
{"SystemCapability.Global.I18n", GLOBAL_I18N},
|
||||
{"SystemCapability.Kernel.liteos-a", KERNEL_LITEOS_A},
|
||||
{"SystemCapability.Location.Location", LOCATION_LOCATION},
|
||||
{"SystemCapability.MiscServices.download", MISCSERVICES_DOWNLOAD},
|
||||
{"SystemCapability.Miscservices.InputMethod", MISCSERVICES_INPUTMETHOD},
|
||||
{"SystemCapability.Miscservices.Pasteboard", MISCSERVICES_PASTEBOARD},
|
||||
{"SystemCapability.MiscServices.ScreenLock", MISCSERVICES_SCREENLOCK},
|
||||
{"SystemCapability.MiscServices.Time", MISCSERVICES_TIME},
|
||||
{"SystemCapability.MiscServices.Upload", MISCSERVICES_UPLOAD},
|
||||
{"SystemCapability.MiscServices.Wallpaper", MISCSERVICES_WALLPAPER},
|
||||
{"SystemCapability.Msdp.DeviceStatus", MSDP_DEVICESTATUS},
|
||||
{"SystemCapability.Multimedia.MediaLibrary", MULTIMEDIA_MEDIALIBRARY},
|
||||
{"SystemCapability.Multimedia.Media.AudioPlayer", MULTIMEDIA_MEDIA_AUDIOPLAYER},
|
||||
{"SystemCapability.Multimedia.Media.AudioRecorder", MULTIMEDIA_MEDIA_AUDIORECORDER},
|
||||
{"SystemCapability.Multimedia.Media.Codec", MULTIMEDIA_MEDIA_CODEC},
|
||||
{"SystemCapability.Multimedia.Media.Core", MULTIMEDIA_MEDIA_CORE},
|
||||
{"SystemCapability.Multimedia.Media.Muxer", MULTIMEDIA_MEDIA_MUXER},
|
||||
{"SystemCapability.Multimedia.Image", MULTIMEDIA_IMAGE},
|
||||
{"SystemCapability.Multimedia.Image.Core", MULTIMEDIA_IMAGE_CORE},
|
||||
{"SystemCapability.Multimedia.Image.ImageSource", MULTIMEDIA_IMAGE_IMAGESOURCE},
|
||||
{"SystemCapability.Multimedia.Image.ImagePacker", MULTIMEDIA_IMAGE_IMAGEPACKER},
|
||||
{"SystemCapability.Multimedia.Image.ImageReceiver", MULTIMEDIA_IMAGE_IMAGERECEIVER},
|
||||
{"SystemCapability.Multimedia.Media.Spliter", MULTIMEDIA_MEDIA_SPLITER},
|
||||
{"SystemCapability.Multimedia.Media.VideoPlayer", MULTIMEDIA_MEDIA_VIDEOPLAYER},
|
||||
{"SystemCapability.Multimedia.Media.VideoRecorder", MULTIMEDIA_MEDIA_VIDEORECORDER},
|
||||
{"SystemCapability.multimodalinput.input", MULTIMODALINPUT_INPUT},
|
||||
{"SystemCapability.Notification.CommonEvent", NOTIFICATION_COMMONEVENT},
|
||||
{"SystemCapability.Notification.Emitter", NOTIFICATION_EMITTER},
|
||||
{"SystemCapability.Notification.Notification", NOTIFICATION_NOTIFICATION},
|
||||
{"SystemCapability.Notification.ReminderAgent", NOTIFICATION_REMINDERAGENT},
|
||||
{"SystemCapability.PowerManager.BatteryManager.Core", POWERMANAGER_BATTERYMANAGER_CORE},
|
||||
{"SystemCapability.PowerManager.BatteryManager.Extension", POWERMANAGER_BATTERYMANAGER_EXTENSION},
|
||||
{"SystemCapability.PowerManager.BatteryManager.Lite", POWERMANAGER_BATTERYMANAGER_LITE},
|
||||
{"SystemCapability.PowerManager.BatteryStatistics", POWERMANAGER_BATTERYSTATISTICS},
|
||||
{"SystemCapability.PowerManager.DisplayPowerManager", POWERMANAGER_DISPLAYPOWERMANAGER},
|
||||
{"SystemCapability.PowerManager.PowerManager.Core", POWERMANAGER_POWERMANAGER_CORE},
|
||||
{"SystemCapability.PowerManager.PowerManager.Extension", POWERMANAGER_POWERMANAGER_EXTENSION},
|
||||
{"SystemCapability.PowerManager.PowerManager.Lite", POWERMANAGER_POWERMANAGER_LITE},
|
||||
{"SystemCapability.PowerManager.ThermalManager", POWERMANAGER_THERMALMANAGER},
|
||||
{"SystemCapability.ResourceSchedule.BackgroundTaskManager.ContinuousTask", RESOURCESCHEDULE_BACKGROUNDTASKMANAGER_CONTINUOUSTASK},
|
||||
{"SystemCapability.ResourceSchedule.BackgroundTaskManager.TransientTask", RESOURCESCHEDULE_BACKGROUNDTASKMANAGER_TRANSIENTTASK},
|
||||
{"SystemCapability.ResourceSchedule.UsageStatistics.App", RESOURCESCHEDULE_USAGESTATISTICS_APP},
|
||||
{"SystemCapability.ResourceSchedule.UsageStatistics.AppGroup", RESOURCESCHEDULE_USAGESTATISTICS_APPGROUP},
|
||||
{"SystemCapability.ResourceSchedule.WorkScheduler", RESOURCESCHEDULE_WORKSCHEDULER},
|
||||
{"SystemCapability.Security.AccessToken", SECURITY_ACCESSTOKEN},
|
||||
{"SystemCapability.Security.AppVerify", SECURITY_APPVERIFY},
|
||||
{"SystemCapability.Security.DataTransitManager", SECURITY_DATATRANSITMANAGER},
|
||||
{"SystemCapability.Security.DeviceAuth", SECURITY_DEVICEAUTH},
|
||||
{"SystemCapability.Security.DeviceSecurityLevel", SECURITY_DEVICESECURITYLEVEL},
|
||||
{"SystemCapability.Security.Huks", SECURITY_HUKS},
|
||||
{"SystemCapability.Sensors.MiscDevice", SENSORS_MISCDEVICE},
|
||||
{"SystemCapability.Sensors.Sensor", SENSORS_SENSOR},
|
||||
{"SystemCapability.Sensors.Sensor_lite", SENSORS_SENSOR_LITE},
|
||||
{"SystemCapability.Telephony.CallManager", TELEPHONY_CALLMANAGER},
|
||||
{"SystemCapability.Telephony.CellularCall", TELEPHONY_CELLULARCALL},
|
||||
{"SystemCapability.Telephony.CellularData", TELEPHONY_CELLULARDATA},
|
||||
{"SystemCapability.Telephony.CoreService", TELEPHONY_CORESERVICE},
|
||||
{"SystemCapability.Telephony.DataStorage", TELEPHONY_DATASTORAGE},
|
||||
{"SystemCapability.Telephony.DCall", TELEPHONY_DCALL},
|
||||
{"SystemCapability.Telephony.SmsMms", TELEPHONY_SMSMMS},
|
||||
{"SystemCapability.Telephony.StateRegistry", TELEPHONY_STATEREGISTRY},
|
||||
{"SystemCapability.Test.UiTest", TEST_UITEST},
|
||||
{"SystemCapability.Test.WuKong", TEST_WUKONG},
|
||||
{"SystemCapability.Updater.Raw", UPDATER_RAW},
|
||||
{"SystemCapability.Update.UpdateService", UPDATE_UPDATESERVICE},
|
||||
{"SystemCapability.USB.USBManager", USB_USBMANAGER},
|
||||
{"SystemCapability.UserIAM.AuthExecutorManager", USERIAM_AUTHEXECUTORMANAGER},
|
||||
{"SystemCapability.UserIAM.UserAuth.Core", USERIAM_USERAUTH_CORE},
|
||||
{"SystemCapability.UserIAM.UserAuth.FaceAuth", USERIAM_USERAUTH_FACEAUTH},
|
||||
{"SystemCapability.UserIAM.UserAuth.PinAuth", USERIAM_USERAUTH_PINAUTH},
|
||||
{"SystemCapability.UserIAM.UserIdm", USERIAM_USERIDM}
|
||||
};
|
||||
|
||||
bool EncodeOsSyscap(int (*output)[32])
|
||||
{
|
||||
uint8_t *outputArray = (uint8_t *)malloc(sizeof(int) * PCID_OUT_BUFFER);
|
||||
if (outputArray == NULL) {
|
||||
@@ -43,7 +176,7 @@ bool EncodeOsSyscap(int output[32])
|
||||
for (uint16_t i = 0; i < countBytes; i++) {
|
||||
outputArray[i] |= 0XFF;
|
||||
}
|
||||
int ret = memcpy_s(output, sizeof(int) * PCID_OUT_BUFFER, outputArray, sizeof(int) * PCID_OUT_BUFFER);
|
||||
int ret = memcpy_s(*output, sizeof(int) * PCID_OUT_BUFFER, outputArray, sizeof(int) * PCID_OUT_BUFFER);
|
||||
if (ret != 0) {
|
||||
PRINT_ERR("memcpy_s failed.");
|
||||
free(outputArray);
|
||||
@@ -53,7 +186,7 @@ bool EncodeOsSyscap(int output[32])
|
||||
return true;
|
||||
}
|
||||
|
||||
bool EncodePrivateSyscap(char *output, int *outputLen)
|
||||
bool EncodePrivateSyscap(char **output, int *outputLen)
|
||||
{
|
||||
static char syscapStr[MAX_SYSCAP_STR_LEN] = "Systemcapability.Ai.AiEngine";
|
||||
int ret = strcpy_s(output, MAX_SYSCAP_STR_LEN, syscapStr);
|
||||
@@ -63,5 +196,57 @@ bool EncodePrivateSyscap(char *output, int *outputLen)
|
||||
}
|
||||
*outputLen = strlen(syscapStr);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DecodeOsSyscap(int input[32], char ***output, int *outputCnt)
|
||||
{
|
||||
errno_t nRet = 0;
|
||||
const int headerWithInt = 2; // 2, int[2] of pcid header
|
||||
int *tmp = NULL;
|
||||
uint8_t osSyscap[OS_SYSCAP_BYTES];
|
||||
uint16_t indexOfSyscap[OS_SYSCAP_BYTES * OS_SYSCAP_BYTES] = {0};
|
||||
int countOfSyscap = 0, i, j, k = 0;
|
||||
|
||||
tmp = input + headerWithInt;
|
||||
nRet = memcpy_s(osSyscap, OS_SYSCAP_BYTES, tmp, OS_SYSCAP_BYTES);
|
||||
if (nRet != EOK) {
|
||||
PRINT_ERR("memcpy_s failed.");
|
||||
*outputCnt = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < OS_SYSCAP_BYTES; i++) {
|
||||
for (j = 0; j < BITS_OF_BYTE; j++) {
|
||||
if (osSyscap[i] & (0x01 << j)) {
|
||||
indexOfSyscap[countOfSyscap++] = i * BITS_OF_BYTE + j;
|
||||
}
|
||||
}
|
||||
}
|
||||
*outputCnt = countOfSyscap;
|
||||
char (*strSyscap)[MAX_SYSCAP_STR_LEN] = \
|
||||
(char (*)[MAX_SYSCAP_STR_LEN])malloc(countOfSyscap * MAX_SYSCAP_STR_LEN);
|
||||
if (strSyscap == NULL) {
|
||||
PRINT_ERR("malloc failed.");
|
||||
*outputCnt = 0;
|
||||
return false;
|
||||
}
|
||||
(void)memset_s(strSyscap, countOfSyscap * MAX_SYSCAP_STR_LEN, \
|
||||
0, countOfSyscap * MAX_SYSCAP_STR_LEN);
|
||||
|
||||
for (i = 0; i < countOfSyscap; i++) {
|
||||
for (j = 0; j < sizeof(arraySyscap) / sizeof(SyscapWithNum); j++) {
|
||||
if (arraySyscap[j].num == indexOfSyscap[i]) {
|
||||
nRet = strcpy_s(strSyscap[k++], MAX_SYSCAP_STR_LEN - 1, arraySyscap[j].syscapStr);
|
||||
}
|
||||
if (nRet != EOK) {
|
||||
PRINT_ERR("strcpy_s failed.");
|
||||
*outputCnt = 0;
|
||||
free(strSyscap);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
*output = (char **)strSyscap;
|
||||
return true;
|
||||
}
|
||||
@@ -34,10 +34,10 @@ typedef struct ProductCompatibilityIDHead {
|
||||
} PCIDHead; // to do
|
||||
|
||||
|
||||
bool EncodeOsSyscap(int output[32]);
|
||||
bool DecodeOsSyscap(int input[32], char **output, int *outputCnt, int** outputLen);
|
||||
bool EncodePrivateSyscap(char *output, int *outputLen);
|
||||
bool DecodePrivateSyscap(char *input, int inputLen, char *output, int *outputCnt, int **outputLen);
|
||||
bool EncodeOsSyscap(int (*output)[32]);
|
||||
bool DecodeOsSyscap(int input[32], char ***output, int *outputCnt);
|
||||
bool EncodePrivateSyscap(char **output, int *outputLen);
|
||||
bool DecodePrivateSyscap(char *input, char ***output, int *outputCnt);
|
||||
|
||||
#ifdef __cplusplus
|
||||
#if __cplusplus
|
||||
|
||||
Reference in New Issue
Block a user