#pragma once #include #include namespace hgl { enum class SOCVendor { Unknow=0, Qualcomm, ///<高通 Hisilicon, ///<海思 Samsung, ///<三星 MediaTek, ///<联发科 Unisoc, ///<展锐 Spreadtrum, ///<展讯 JLQ, ///<瓴盛 //Maxvell, ///<马维尔 //Broadcom, ///<博通 //TI, ///<德州仪器 //Rockchip, ///<瑞芯微 //Intel, ///<英特尔 //nVidia, ///<英伟达 //AMD, /// * 注:这里的频率单位为MHz,而且只是默认频率,实际频率可能会更高或更低 */ struct ARMCpuClusterInfo { ARMCpuCoreInfo arm; ///<对应的ARM核心信息 uint core_count; ///<核心数量 uint base_freq; ///<基础频率 uint boost_freq; ///<最高频率 }; struct SOCInfo { SOCVendor vendor; char model[32]; public: CompOperatorMemcmp(const SOCInfo &); }; /** * 根据收集到的SOC信息,解晰具体的SOC厂商和主要型号 */ bool ParseSOCInfo(SOCInfo &,const char *); enum class SOCGPUVendor { Unknow=0, PowerVR, Mali, Adreno, Vivante, Intel, Radeon, Tegra, Maleoon, ENUM_CLASS_RANGE(Unknow,Maleoon) }; constexpr const char *SOCGPUVendorName[]= { "Unknow", "PowerVR", "Mali", "Adreno", "Vivante", "Intel", "Radeon", "Tegra", "Maleoon", }; const SOCGPUVendor ParseSOCGPUVendor(const char *str,const int len=0); struct SOCGPUInfo { SOCGPUVendor vendor; char model[32]; uint core_count; uint freq; public: int Comp(const SOCGPUInfo &info)const { int result; result=int(vendor)-int(info.vendor); if(result)return result; result=strcmp(model,info.model); if(result)return result; return core_count-info.core_count; } CompOperator(const SOCGPUInfo &,Comp); }; /** * SOC 产品信息 */ struct SOCProductInfo { char product_name[64]; ///<产品名称 SOCInfo soc_info; ///