#!/usr/bin/env bash
# usage: led.sh <port>
set -o xtrace

# config default
GPIO_PORT="${1:-18}"

function export_port() {
  port="${1}"
  echo "${port}" > /sys/class/gpio/export
}
function unexport_port() {
  port="${1}"
  echo "${port}" > /sys/class/gpio/unexport
}

function set_direction() {
  port="${1}"
  value="${2}"
  echo "${value}" > "/sys/class/gpio/gpio${port}/direction"
}

function set_value() {
  port="${1}"
  value="${2}"
  echo "${value}" > "/sys/class/gpio/gpio${port}/value"
}

function on() {
  port="${1}"
  set_value "${port}" "0"
}
function off() {
  port="${1}"
  set_value "${port}" "1"
}

# set exit trap
trap 'unexport_port "${GPIO_PORT}"' EXIT

# init GPIO port
export_port "${GPIO_PORT}"
set_direction "${GPIO_PORT}" "out"

# loop led on/off
while true; do
  on "${GPIO_PORT}"
  sleep 1
  off "${GPIO_PORT}"
  sleep 1
done
