From 35c2aa7e6fc8bb1bfcd03cf7d9a9bf57b2a683f3 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Sat, 28 Nov 2020 13:51:02 +0100 Subject: [PATCH] [v0.94][ARM] Add Kirin and Broadcom ASCII arts. Fix Broadcom SoCs detection --- src/arm/soc.c | 15 ++++++++------ src/common/ascii.h | 47 ++++++++++++++++++++++++++++++++++++++++++-- src/common/printer.c | 20 ++++++++++++++++++- 3 files changed, 73 insertions(+), 9 deletions(-) diff --git a/src/arm/soc.c b/src/arm/soc.c index 6f9cbcd..d0526e4 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -11,11 +11,11 @@ #define STRING_UNKNOWN "Unknown" static char* soc_trademark_string[] = { - [SOC_SNAPDRAGON] = "Snapdragon", - [SOC_MEDIATEK] = "MediaTek", - [SOC_EXYNOS] = "Exynos", - [SOC_KIRIN] = "Kirin", - [SOC_BROADCOM] = "Broadcom", + [SOC_SNAPDRAGON] = "Snapdragon ", + [SOC_MEDIATEK] = "MediaTek ", + [SOC_EXYNOS] = "Exynos ", + [SOC_KIRIN] = "Kirin ", + [SOC_BROADCOM] = "Broadcom BCM", }; void fill_soc(struct system_on_chip* soc, char* soc_name, VENDOR soc_vendor, int32_t process) { @@ -24,7 +24,7 @@ void fill_soc(struct system_on_chip* soc, char* soc_name, VENDOR soc_vendor, int int len = strlen(soc_name) + strlen(soc_trademark_string[soc->soc_vendor]) + 1; soc->soc_name = malloc(sizeof(char) * len); memset(soc->soc_name, 0, sizeof(char) * len); - sprintf(soc->soc_name, "%s %s", soc_trademark_string[soc->soc_vendor], soc_name); + sprintf(soc->soc_name, "%s%s", soc_trademark_string[soc->soc_vendor], soc_name); } bool match_soc(struct system_on_chip* soc, char* raw_name, char* expected_name, char* soc_name, VENDOR soc_vendor, int32_t process) { @@ -415,6 +415,9 @@ struct system_on_chip* parse_soc_from_string(struct system_on_chip* soc) { if(match_hisilicon(raw_name, soc)) return soc; + if(match_broadcom(raw_name, soc)) + return soc; + match_special(raw_name, soc); return soc; diff --git a/src/common/ascii.h b/src/common/ascii.h index bb38cd3..97e0efc 100644 --- a/src/common/ascii.h +++ b/src/common/ascii.h @@ -108,8 +108,49 @@ \ \ " - - + +#define KIRIN_ASCII \ +" \ + \ + \ + \ + \ + ####### \ + ##### #################### \ + ###################################### \ + ####################################### \ + ####################################### \ + ############################## \ + ########################## \ + ######################### \ + ######################## \ + ######################## \ + ######################### \ + ######################### \ + \ + " + +#define BROADCOM_ASCII \ +" \ + ################ \ + ######################### \ + ############################### \ + ################@@@@################ \ + ################@@@@@@################ \ + #################@@@@@@################ \ + #################@@@@@@@@################# \ + #################@@@@@@@@################# \ + #################@@@@##@@@@################ \ + ################@@@@##@@@@################ \ + ###############@@@@####@@@@############### \ + @@@@@@@@@@####@@@@####@@@@####@@@@@@@@@@ \ + ######@@@@@@@@@@######@@@@@@@@@@###### \ + ################################## \ + ############################## \ + ######################## \ + ############### \ + " + #define ARM_ASCII \ " \ \ @@ -159,6 +200,8 @@ static const char* ASCII_ARRAY [] = { SNAPDRAGON_ASCII, MEDIATEK_ASCII, EXYNOS_ASCII, + KIRIN_ASCII, + BROADCOM_ASCII, UNKNOWN_ASCII }; diff --git a/src/common/printer.c b/src/common/printer.c index 267f0e5..7d5695c 100644 --- a/src/common/printer.c +++ b/src/common/printer.c @@ -190,6 +190,20 @@ struct ascii* set_ascii(VENDOR vendor, STYLE style, struct colors* cs) { COL_FANCY_4 = COLOR_FG_WHITE; art->ascii_chars[0] = '@'; } + else if(art->vendor == SOC_KIRIN) { + COL_FANCY_1 = COLOR_BG_WHITE; + COL_FANCY_2 = COLOR_BG_RED; + COL_FANCY_3 = COLOR_FG_WHITE; + COL_FANCY_4 = COLOR_FG_RED; + art->ascii_chars[0] = '@'; + } + else if(art->vendor == SOC_BROADCOM) { + COL_FANCY_1 = COLOR_BG_WHITE; + COL_FANCY_2 = COLOR_BG_RED; + COL_FANCY_3 = COLOR_FG_WHITE; + COL_FANCY_4 = COLOR_FG_RED; + art->ascii_chars[0] = '@'; + } else { COL_FANCY_1 = COLOR_BG_CYAN; COL_FANCY_2 = COLOR_BG_CYAN; @@ -295,6 +309,10 @@ struct ascii* set_ascii(VENDOR vendor, STYLE style, struct colors* cs) { strcpy(tmp, MEDIATEK_ASCII); else if(art->vendor == SOC_EXYNOS) strcpy(tmp, EXYNOS_ASCII); + else if(art->vendor == SOC_KIRIN) + strcpy(tmp, KIRIN_ASCII); + else if(art->vendor == SOC_BROADCOM) + strcpy(tmp, BROADCOM_ASCII); else strcpy(tmp, ARM_ASCII); #endif @@ -574,7 +592,7 @@ void print_ascii_arm(struct ascii* art, uint32_t la, void (*callback_print_algor void print_ascii(struct ascii* art) { uint32_t longest_attribute = longest_attribute_length(art); - if(art->vendor == SOC_SNAPDRAGON || art->vendor == SOC_MEDIATEK) + if(art->vendor == SOC_SNAPDRAGON || art->vendor == SOC_MEDIATEK || art->vendor == SOC_KIRIN || art->vendor == SOC_BROADCOM) print_ascii_arm(art, longest_attribute, &print_algorithm_snapd_mtk); else if(art->vendor == SOC_EXYNOS) print_ascii_arm(art, longest_attribute, &print_algorithm_samsung);