#!/bin/sh
. /usr/share/libubox/jshn.sh
. /usr/libexec/delos/delos-wps-handle
. /usr/libexec/delos/delos-wps-clone-handle
case "$1" in
        list)
		echo '{ "enable": { "mode":"value", "pin":0 }, "get_status": { }, "clone": { }, "get_pin_status": { "device":"value" }, "get_interface_status": { } }'
        ;;

        call)
            case "$2" in
                    enable)
                        read input
                        json_load "$input"
                        json_get_var mode mode
                        [ -n "$mode" ] || { echo '{"error":"no mode argument given"}'; exit 0; }

                        case "$mode" in
                            wps_pbc)
                                json=$(start_wps_pbc)
                                # return json object
                                echo "$json"
                            ;;
                            wps_pin)
                                json_get_var pin pin
                                [ -n "$mode" ] || { echo '{"error":no pin argument given"}' ; exit 0;};
                                json=$(start_wps_pin $pin)
                                echo "$json"
                            ;;
                        esac
                    ;;
                    get_status)
                        json=$(get_wps_status)
                        # return json object
                        echo "$json"
                    ;;
                    get_pin_status)
                        read input
                        json_load "$input"
                        json_get_var device device
                        json=$(get_wps_pin_status $device)
                        # return json object
                        echo "$json"
                    ;;
                    clone)
                        json=$(start_wps_clone)
                        echo "$json"
                    ;;
                    get_interface_status)
                        json=$(get_interface_state)
                        echo "$json"
                    ;;
            esac
        ;;
esac