#!/bin/bash
#DEVICES=" aic_200w aic_230w aic_hq gwl2010_470 gwl2010_868 gwl2010_915 gwl2110_470 gwl2110_868 gwl2110_915 hmi2002_070c hmi2002_101c hmi2020_070c hmi2020_101c hmi2120_070c hmi2120_101c hmi2220-070c hmi2220-101c hmi232x_backlight_f hmi232x_backlight_r hmi2610_101c hmi2620_101c hmi2630_101c hmi3010_070c hmi3010_101c hmi3020_070c hmi3020_101c hmi3120_070c hmi3120_101c hmi332x_backlight_f hmi332x_backlight_r hmi3610_101c hmi3620_101c hmi3630_101c ind ipc2010 ipc2110 ipc2200 ipc2410 ipc2420 ipc2430 ipc2610 ipc2620 ipc2630 ipc3020 ipc3110 ipc3610 ipc3620 ipc3630 plc2010 sbc231x sbc331x sen"
DEVICES="hmi2002_101c"
#TIMEOUT=30
#BASE_URL=https://apt.edatec.cn/bsp
TMP_PATH="$HOME/eda-common"
# if [ $# -ne 1 ];then
# echo "Please specify the target."
# exit 1
# fi
#TARGET=$1
TARGET=$DEVICES
function log_error(){
echo "log_error Function reached"
read
local msg=$1
echo -e "\033[31m ${msg} \033[0m"
}
function log_info(){
echo "log_info Function reached"
read
local msg=$1
echo -e "\033[32m ${msg} \033[0m"
}
function load_json(){
echo "load_json Function reached"
read
case $# in
2)
echo $1 | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['"$2"'])"
;;
3)
echo $1 | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['"$2"']['"$3"'])"
;;
4)
echo $1 | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['"$2"']['"$3"']['"$4"'])"
;;
5)
echo $1 | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['"$2"']['"$3"']['"$4"']['"$5"'])"
;;
6)
echo $1 | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['"$2"']['"$3"']['"$4"']['"$5"']['"$6"'])"
;;
7)
echo $1 | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['"$2"']['"$3"']['"$4"']['"$5"']['"$6"']['"$7"'])"
;;
8)
echo $1 | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['"$2"']['"$3"']['"$4"']['"$5"']['"$6"']['"$7"']['"$8"'])"
;;
esac
# python3 -c "import sys, json; data=json.load(sys.stdin); print(data['test']['target'])
}
function is_in_json(){
echo "is_in_json Function reached"
read
local t_data=$1
local t_key=$2
echo $t_data | python3 -c "import sys, json; data=json.load(sys.stdin); print('"${t_key}"' in data)"
}
function load_json_len(){
echo "load_json Function reached"
read
local t_data=$1
local t_key=$2
echo $t_data | python3 -c "import sys, json; data=json.load(sys.stdin); print(len(data['"${t_key}"']))"
}
function load_json_array(){
echo "load_json Function reached"
read
local t_data=$1
local t_key=$2
local t_index=$3
echo $t_data | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['"${t_key}"']["${t_index}"])"
}
function run_cmd(){
echo "run_cmd Function reached arg1== " $1
read
local cmd=$1
log_info "[DEBUG] ${cmd}"
eval "$cmd"
}
function install_eda(){
echo "install_eda Function reached"
read
local tmp_dir="${TMP_PATH}/eda/"
#mkdir -p $tmp_dir
#wget "${BASE_URL}/splash.png" -O "${tmp_dir}splash.png"
#install -m 644 "${tmp_dir}splash.png" "/usr/share/plymouth/themes/pix/"
local code_name=$(cat /etc/os-release | grep VERSION_CODENAME=)
local cmd_file="/boot/firmware/cmdline.txt"
code_name=${code_name#VERSION_CODENAME=}
if [ "${code_name}" = "bookworm" ];then
cmd_file="/boot/firmware/cmdline.txt"
else
cmd_file="/boot/cmdline.txt"
fi
grep -q "net.ifnames=0" ${cmd_file} || sed -i "1{s/$/ net.ifnames=0/}" ${cmd_file}
echo $cmd_file " cmd_file "
read
#NOPE
#wget "https://apt.edatec.cn/pubkey.gpg" -O "${tmp_dir}edatec.gpg"
#cat ${tmp_dir}edatec.gpg | gpg --dearmor > "/etc/apt/trusted.gpg.d/edatec-archive-stable.gpg"
#echo "deb https://apt.edatec.cn/raspbian stable main" | sudo tee /etc/apt/sources.list.d/edatec.list
#sudo apt update
}
function start(){
echo "start Function reached arg?: " $?
read
#local data=$(curl ${BASE_URL}/devices/${TARGET}.json --connect-timeout ${TIMEOUT})
#if [ $? -ne 0 ];then
# echo "Load device info failed."
# exit 2
#fi
echo "calling Function install-eda"
read
install_eda
local b_state=$(is_in_json "${data}" "debs")
echo " b_state " $b_state " Data: " $data
read
if [ "${b_state}" == "True" ];then
local debs=$(load_json "${data}" "debs")
echo $debs=$(load_json "${data}" "debs")
read
log_info "[DEBUG] apt install -y ${debs}"
echo $log_info "[DEBUG] apt install -y ${debs}"
read
#sudo apt install -y ${debs}
if [ $? -ne 0 ];then
log_error "Failed to install package"
#exit 1
fi
fi
b_state=$(is_in_json "${data}" "cmd")
if [ "${b_state}" == "True" ];then
local t_len=$(load_json_len "${data}" "cmd")
index=0
for i in $(seq 0 $((${t_len} -1)));do
t_cmd=$(load_json_array "${data}" "cmd" $i)
run_cmd "${t_cmd}"
done
fi
echo " reboot? lol no"
read
# reboot
}
function useage(){
#log_info "curl -s ${BASE_URL}/ed-install.sh | sudo bash -s "
#log_info "Suport device:"
#for d in ${DEVICES[@]}
#do
# log_info " ${d}"
#done
echo " potential missuse lol "
read
}
if [ -z "${TARGET}" ]; then
log_error "Please specify the target."
useage
else
if [ -n "${DEVICES}" ];then
echo "${DEVICES}" | grep -q "${TARGET}"
if [ $? -eq 0 ];then
start $TARGET
else
log_error "Unknown target."
useage
fi
else
start $TARGET
fi
# start $TARGET
fi
#POSINST
echo " postinstal reached"
read
CODENAME=$(cat /etc/os-release | grep VERSION_CODENAME=)
CODENAME=${CODENAME#VERSION_CODENAME=}
CONFIG_FILE="/boot/firmware/config.txt"
if [ "${CODENAME}" = "bookworm" ];then
CONFIG_FILE="/boot/firmware/config.txt"
if [ ! -f "$CONFIG_FILE" ];then
exit 0
fi
else
CONFIG_FILE="/boot/config.txt"
if [ ! -f "$CONFIG_FILE" ];then
exit 0
fi
fi
auto_add(){
local value=$1
grep -q "^${value}" $CONFIG_FILE
if [ $? -ne 0 ];then
sed -i '$a '"${value}" $CONFIG_FILE
fi
}
write_ini(){
local t_user=$1
mkdir -p /home/${t_user}/.config
cat > /home/${t_user}/.config/wayfire.ini << EOF
[command]
repeatable_binding_volume_up = KEY_VOLUMEUP
command_volume_up = wfpanelctl volumepulse volu
repeatable_binding_volume_down = KEY_VOLUMEDOWN
command_volume_down = wfpanelctl volumepulse vold
binding_mute = KEY_MUTE
command_mute = wfpanelctl volumepulse mute
binding_menu =
command_menu = wfpanelctl smenu menu
binding_terminal = KEY_T
command_terminal = lxterminal
binding_bluetooth = KEY_B
command_bluetooth = wfpanelctl bluetooth menu
binding_netman = KEY_W
command_netman = wfpanelctl netman menu
binding_grim = KEY_SYSRQ
command_grim = grim
binding_orca = KEY_SPACE
command_orca = gui-pkinst orca reboot
binding_quit = KEY_DELETE
command_quit = lxde-pi-shutdown-helper
binding_power = KEY_POWER
command_power = pwrkey
[input-device:generic ft5x06 (79)]
output = DSI-1
[input-device:generic ft5x06 (80)]
output = DSI-1
[input-device:FT5406 memory based driver]
output = DSI-1
[input]
xkb_model = pc105
xkb_layout = gb
xkb_variant =
[output:DSI-1]
mode = 800x1280@40000
position = 0,0
transform = 90
[input-device:Goodix Capacitive TouchScreen]
output = DSI-1
[input-device:10-0014 Goodix Capacitive TouchScreen]
output = DSI-1
[window-rules]
rule-1 = on created if title is "LXTerminal" then maximize
EOF
chown -R ${t_user}:${t_user} /home/${t_user}/.config
}
do_labwc(){
local t_user=$1
mkdir -p /home/${t_user}/.config/
mkdir -p /home/${t_user}/.config/labwc
mkdir -p /home/${t_user}/.config/kanshi
cat > /home/${t_user}/.config/kanshi/config << EOF
profile {
output DSI-1 mode 800x1280 position 0,0 transform 90
}
EOF
cat > /home/${t_user}/.config/labwc/rc.xml << EOF
EOF
chown -R ${t_user}:${t_user} /home/${t_user}/.config
}
write_ini_auto(){
if [ -f "/usr/bin/labwc" ];then
raspi-config nonint do_wayland W3
fi
for t_user in `ls /home/`
do
if [ -d "/home/${t_user}" ];then
if [ -f "/usr/bin/labwc" ];then
do_labwc ${t_user}
fi
write_ini "${t_user}"
fi
done
}
start(){
auto_add "dtoverlay=vc4-kms-dsi-rzw-t101p136cq-rpi4-2lane,interrupt=2"
auto_add "dtoverlay=imx219"
echo "" >> $CONFIG_FILE
if [ "${CODENAME}" = "bookworm" ];then
write_ini_auto
fi
}
start
############## fix post install #################
:'
#validate users with getent
for t_user in $(getent passwd | awk -F: '$6 ~ /^\/home\// {print $1}'); do
if [ -d "/home/${t_user}" ]; then
if [ -f "/usr/bin/labwc" ]; then
do_labwc "${t_user}"
fi
write_ini "${t_user}"
fi
done
'
:'
# this is only really compable with bookworm though its not clearly stated
if ! grep -q 'VERSION_CODENAME=bookworm' /etc/os-release; then
echo "Unsupported OS version. Exiting." >&2
exit 1
fi
'