CCCPaste

edatec2002-101c

#!/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
'