#!/bin/sh /etc/rc.common

START=05
STOP=10

USE_PROCD=1

start_service() {
    # Instance 1: create PTY pair
    procd_open_instance
    procd_set_param command socat -d -d pty,link=/dev/ttySMD11IN,raw,echo=0,group=20,perm=660 \
                                    pty,link=/dev/ttySMD11,raw,echo=1,group=20,perm=660
    procd_set_param respawn 0 0 0
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance

    # Instance 2: forward /dev/smd11 → /dev/ttySMD11IN
    procd_open_instance
    procd_set_param command /bin/sh -c '
        while [ ! -e /dev/ttySMD11IN ]; do sleep 0.1; done
        exec cat /dev/smd11 > /dev/ttySMD11IN
    '
    procd_set_param respawn 0 0 0
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance

    # Instance 3: forward /dev/ttySMD11IN → /dev/smd11
    procd_open_instance
    procd_set_param command /bin/sh -c '
        while [ ! -e /dev/ttySMD11IN ]; do sleep 0.1; done
        exec cat /dev/ttySMD11IN > /dev/smd11
    '
    procd_set_param respawn 0 0 0
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_close_instance
}

stop_service() {
    echo "Stopping socat bridge and cleaning up..."
    rm -f /dev/ttySMD11 /dev/ttySMD11IN
}
