#!/bin/sh
#usage: fd.sh <type>
#AKIKAWA, Hisashi 2017.3.5

#GPIO number
index=4
drvsel=17
motor=18
dirsel=27
step=22
write=23
gate=24
trk0=25
read=8
side1=7

#media type
case $1 in
    1D | 1d)
	cylstep=2
	sidemax=0
    ;;
    1DD | 1dd)
	cylstep=1
	sidemax=0
    ;;
    2D | 2d)
	cylstep=2
	sidemax=1
    ;;
    *)
	cylstep=1
	sidemax=1
    ;;
esac
cylmax=81


#need Wiring pi
echo set GPIO
gpio -g mode ${index} in
gpio -g mode ${index} up
gpio -g mode ${trk0} in
gpio -g mode ${trk0} up
gpio -g mode ${read} in
gpio -g mode ${read} up

gpio -g write ${drvsel} 1
gpio -g mode ${drvsel} out
gpio -g write ${motor} 1
gpio -g mode ${motor} out
gpio -g write ${dirsel} 1
gpio -g mode ${dirsel} out
gpio -g write ${step} 1
gpio -g mode ${step} out
gpio -g write ${write} 1
gpio -g mode ${write} out
gpio -g write ${gate} 1
gpio -g mode ${gate} out
gpio -g write ${side1} 1
gpio -g mode ${side1} out


echo FDD motor on

trap "gpio -g write ${motor} 1; gpio -g write ${drvsel} 1; exit" 1 2 3 15

gpio -g write ${drvsel} 0
gpio -g write ${motor} 0

sleep 0.5

echo recalibrate

while [ `gpio -g read ${trk0}` = 1 ]
do
  gpio -g write ${step} 0
  sleep 0.000001
  gpio -g write ${step} 1
  sleep 0.003
done

gpio -g write ${dirsel} 0

echo unformatting...

for cylinder in `seq -f %02g 0 ${cylstep} ${cylmax}`
do
  for side in `seq 0 ${sidemax}`
  do
    gpio -g write ${side1} `expr 1 - ${side}`
    sleep 0.0001
    echo cylinder=${cylinder}, side=${side}
    fname=c${cylinder}h${side}.dat
    sleep 0.0001
    gpio -g write ${gate} 0
    sleep 0.4
    gpio -g write ${gate} 1
    sleep 0.001
  done

  for i in `seq 1 ${cylstep}`
  do
    gpio -g write ${step} 0
    gpio -g write ${step} 1
    sleep 0.003
  done
  sleep 0.015
done


gpio -g write ${motor} 1
gpio -g write ${drvsel} 1
