#!/bin/sh
. /etc/utils.sh

# Prints the ethernet MAC address of eth0.
get_mac_addr()
{
  ip link show eth0 | (
    read junk
    read words macaddr junk
    echo $macaddr
  )
}


# Prints the first word of the first line on stdin
firstword()
{
  read word junk
  echo "$word"
}


# Given an ssid format string in $1, replace a %d or %s in the format string
# with a number between 1 and 5, based on a number generated from the
# machine's ethernet MAC address.  If no %-substitution exists in the
# string, returns the string unmodified.
render_ssid()
{
  local ssid="$1"
  local macaddr=$(get_mac_addr)
  local macsha="$(echo $macaddr | sha1sum | firstword)"
  local last_4_digits=0x${macsha#????????????????????????????????????}
  local ssid="$(printf "$ssid" $(($last_4_digits % 5 + 1)))"
  echo "$ssid"
}


# Returns true if the machine is a fat bruno (ie. has storage)
is_fat()
{
  [ -e $(find_sata_blkdev) ] && grep GFMS /tmp/platform >/dev/null
}


if [ -n "$1" ]; then
  SSID=$1
else
  SSID=Gladis_%d
fi
SSID=$(render_ssid "$SSID")

set -x

if ! is_fat; then
  brctl delif br0 eth2
  wl radio on
  wl down
  wl ap 0
  wl band auto
  wl up
  wl scan
  sleep 3
  wl scanresults
  wl join "$SSID"
  sleep 1
  wl status
  dhclient eth2
fi

exit 0
