#!/bin/bash

LOCK_FILE="/tmp/hobot-suspend.lock"

if [ -e "$LOCK_FILE" ]; then
    echo "Already running"
    exit 1
fi

touch "$LOCK_FILE"

MODULES=("snd_soc_hobot_sound_duplex_host" "snd_soc_es8326" "aic8800_fdrv" "aic8800_bsp")
NUM_MODULES=${#MODULES[@]}

for MODULE in "${MODULES[@]}"; do
    if lsmod | grep -q "$MODULE"; then
        rmmod "$MODULE"
        echo "$(date): rmmod $MODULE" > /dev/kmsg
    fi
done

systemctl stop lightdm

ifconfig eth0 down

sleep 3

echo mem > /sys/power/state

ifconfig eth0 up

MAX_RETRIES=5
RETRY=0

while [ $RETRY -lt $MAX_RETRIES ]; do
    all_loaded=true

    for ((i=NUM_MODULES-1; i>=0; i--)); do
        MODULE="${MODULES[$i]}"
        if ! lsmod | grep -q "^$MODULE"; then
            if modprobe "$MODULE"; then
                echo "$(date): Loaded $MODULE" > /dev/kmsg
            else
                echo "$(date): Failed to load $MODULE" > /dev/kmsg
                all_loaded=false
            fi
        fi
    done

    if $all_loaded; then
        echo "$(date): All modules loaded successfully. Exiting loop." > /dev/kmsg
        break
    fi

    RETRY=$((RETRY + 1))
    echo "$(date): Retry $RETRY/$MAX_RETRIES" > /dev/kmsg
    sleep 1
done

sleep 1
systemctl start lightdm
sleep 5
rm -f "$LOCK_FILE"
exit 0


