Skip to content

Commit 68701bd

Browse files
committed
arc-functions: rewrite model selection menu
Signed-off-by: AuxXxilium <[email protected]>
1 parent e25142f commit 68701bd

File tree

1 file changed

+36
-26
lines changed

1 file changed

+36
-26
lines changed

files/initrd/opt/arc/arc-functions.sh

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -53,45 +53,67 @@ function arcModel() {
5353
[[ "${M}" = "DS220+" || "${M}" = "DS224+" || "${M}" = "DVA1622" ]] && M_2_CACHE=""
5454
[[ "${M}" = "DS220+" || "${M}" = "DS224+" || "${DT}" = "false" ]] && M_2_STORAGE="" || M_2_STORAGE="+"
5555
if [ "${RESTRICT}" -eq 1 ]; then
56-
for F in ${FLAGS}; do
57-
grep -q "^flags.*${F}.*" /proc/cpuinfo || COMPATIBLE=0
58-
done
59-
# for NF in ${NOFLAGS}; do
60-
# grep -q "^flags.*${NF}.*" /proc/cpuinfo && COMPATIBLE=0
61-
# done
6256
if is_in_array "${A}" "${KVER5L[@]}"; then
6357
if { [ "${NVMEDRIVES}" -eq 0 ] && [ "${BUS}" = "usb" ] && [ "${SATADRIVES}" -eq 0 ] && [ "${EXTERNALCONTROLLER}" = "false" ]; } ||
6458
{ [ "${NVMEDRIVES}" -eq 0 ] && [ "${BUS}" = "sata" ] && [ "${SATADRIVES}" -eq 1 ] && [ "${EXTERNALCONTROLLER}" = "false" ]; } ||
6559
[ "${SCSICONTROLLER}" -ge 1 ] || [ "${RAIDCONTROLLER}" -ge 1 ]; then
66-
COMPATIBLE=0
60+
COMPATIBLE=0
6761
fi
6862
else
6963
if { [ "${DT}" = "true" ] && [ "${EXTERNALCONTROLLER}" = "true" ]; } ||
7064
{ [ "${SATACONTROLLER}" -eq 0 ] && [ "${EXTERNALCONTROLLER}" = "false" ]; } ||
7165
{ [ "${NVMEDRIVES}" -gt 0 ] && [ "${BUS}" = "usb" ] && [ "${SATADRIVES}" -eq 0 ] && [ "${EXTERNALCONTROLLER}" = "false" ]; } ||
7266
{ [ "${NVMEDRIVES}" -gt 0 ] && [ "${BUS}" = "sata" ] && [ "${SATADRIVES}" -eq 1 ] && [ "${EXTERNALCONTROLLER}" = "false" ]; }; then
73-
COMPATIBLE=0
67+
COMPATIBLE=0
68+
fi
69+
fi
70+
WARN="" && rm -f "${TMP_PATH}/${M}_warn"
71+
if [ -n "${FLAGS}" ]; then
72+
for F in ${FLAGS}; do
73+
grep -q "^flags.*${F}.*" /proc/cpuinfo || echo -e "${WARN}- Missing required CPU flag: ${F}\n" >>"${TMP_PATH}/${M}_warn"
74+
done
75+
fi
76+
if [ -n "${NOFLAGS}" ]; then
77+
for NF in ${NOFLAGS}; do
78+
grep -q "^flags.*${NF}.*" /proc/cpuinfo && echo -e "${WARN}- Disable the following CPU flag: ${NF}\n" >>"${TMP_PATH}/${M}_warn"
79+
done
80+
fi
81+
if [ "${DT}" = "true" ]; then
82+
if [[ "${SCSICONTROLLER}" -ge 1 || "${RAIDCONTROLLER}" -ge 1 ]]; then
83+
echo -e "${WARN}- DT Model selected: Raid/SCSI will not work\n" >>"${TMP_PATH}/${M}_warn"
7484
fi
7585
fi
7686
[ -z "$(grep -w "${M}" "${S_FILE}")" ] && COMPATIBLE=0
7787
[ -z "$(grep -w "${A}" "${P_FILE}")" ] && COMPATIBLE=0
7888
fi
7989
[ -n "$(grep -w "${M}" "${S_FILE}")" ] && BETA="Loader" || BETA="Syno"
80-
[ "${COMPATIBLE}" -eq 1 ] && echo -e "${M} \"\t$(printf "\Zb%-15s\Zn \Zb%-8s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "${A}" "${KVERM}" "${DTS}" "${ARC}" "${IGPUS}" "${HBAS}" "${M_2_CACHE}" "${M_2_STORAGE}" "${USBS}" "${BETA}")\" ">>"${TMP_PATH}/menu"
90+
[ -s "${TMP_PATH}/${M}_warn" ] && A="\Z1${A}\Zn" || A="\Z4${A}\Zn"
91+
[ "${COMPATIBLE}" -eq 1 ] && echo -e "${M} \"\t$(printf "\Zb%-21s\Zn \Zb%-8s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "${A}" "${KVERM}" "${DTS}" "${ARC}" "${IGPUS}" "${HBAS}" "${M_2_CACHE}" "${M_2_STORAGE}" "${USBS}" "${BETA}")\" ">>"${TMP_PATH}/menu"
8192
done <<<"$(cat "${TMP_PATH}/modellist")"
82-
[ ! -s "${TMP_PATH}/menu" ] && echo "No supported models found." >"${TMP_PATH}/menu"
83-
[ "${RESTRICT}" -eq 1 ] && TITLEMSG="Supported Models for your Hardware" || TITLEMSG="Supported and unsupported Models for your Hardware"
84-
MSG="${TITLEMSG} (x = supported / + = need Addons)\n$(printf "\Zb%-16s\Zn \Zb%-15s\Zn \Zb%-8s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "Model" "Platform" "Kernel" "DT" "Arc" "iGPU" "HBA" "M.2 Cache" "M.2 Volume" "USB Mount" "Source")"
93+
[ ! -s "${TMP_PATH}/menu" ] && echo "No supported Models found." >"${TMP_PATH}/menu"
94+
[ "${RESTRICT}" -eq 1 ] && TITLEMSG="\Z4Supported\Zn and \Z1Unsupported\Zn Platforms for your Hardware" || TITLEMSG="All Platorms"
95+
MSG="${TITLEMSG} | Features: \Z4x = supported\Zn / \Z1+ = need Addon\Zn\n$(printf "\Zb%-16s\Zn \Zb%-15s\Zn \Zb%-8s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-5s\Zn \Zb%-10s\Zn \Zb%-12s\Zn \Zb%-10s\Zn \Zb%-10s\Zn" "Model" "Platform" "Kernel" "DT" "Arc" "iGPU" "HBA" "M.2 Cache" "M.2 Volume" "USB Mount" "Source")"
96+
[ "${RESTRICT}" -eq 1 ] && SHOWMSG="Show all" || SHOWMSG="Show supported"
8597
dialog --backtitle "$(backtitle)" --title "DSM Model" --colors \
86-
--cancel-label "Show all" --help-button --help-label "Exit" \
98+
--cancel-label "${SHOWMSG}" --help-button --help-label "Exit" \
8799
--menu "${MSG}" 0 120 0 \
88100
--file "${TMP_PATH}/menu" 2>"${TMP_PATH}/resp"
89101
RET=$?
90102
case ${RET} in
91103
0)
92104
resp="$(cat "${TMP_PATH}/resp" 2>/dev/null)"
93105
[ -z "${resp}" ] && return
94-
break
106+
if [ -s "${TMP_PATH}/${resp}_warn" ]; then
107+
MSG="Your Hardware is not compatible with the selected Model!\n\n\Z1$(cat "${TMP_PATH}/${resp}_warn")\Zn\n\nDo you still want to proceed?"
108+
dialog --backtitle "$(backtitle)" --title "Arc Warning" --colors \
109+
--yesno "${MSG}" 0 0
110+
RET=$?
111+
if [ $RET -eq 0 ]; then
112+
break
113+
fi
114+
else
115+
break
116+
fi
95117
;;
96118
1)
97119
[ "${RESTRICT}" -eq 1 ] && RESTRICT=0 || RESTRICT=1
@@ -260,18 +282,6 @@ function arcVersion() {
260282
fi
261283

262284
if [ "${ONLYVERSION}" != "true" ] && [ "${ARC_MODE}" = "config" ]; then
263-
if [ "${DT}" = "true" ]; then
264-
if [ "${SASCONTROLLER}" -ge 1 ]; then
265-
dialog --backtitle "$(backtitle)" --title "Arc Warning" \
266-
--yesno "WARN: You use a HBA Controller and selected a DT Model.\nThis is an experimental feature.\n\nContinue anyway?" 8 70
267-
[ $? -ne 0 ] && return 1
268-
fi
269-
if [ "${SCSICONTROLLER}" -ge 1 ] || [ "${RAIDCONTROLLER}" -ge 1 ]; then
270-
dialog --backtitle "$(backtitle)" --title "Arc Warning" \
271-
--yesno "WARN: You use a Raid/SCSI Controller and selected a DT Model.\nThis is not supported.\n\nContinue anyway?" 8 70
272-
[ $? -ne 0 ] && return 1
273-
fi
274-
fi
275285
USERID="$(readConfigKey "arc.userid" "${USER_CONFIG_FILE}")"
276286
ADDONS_LIST="$(readConfigMap "addons" "${USER_CONFIG_FILE}")"
277287
if [ -n "${USERID}" ] && ! echo "${ADDONS_LIST}" | grep -q "notification"; then

0 commit comments

Comments
 (0)