#!/bin/sh

MAJOR=14
MAX_CARDS=4
PERM=666
DSP_MINOR=5

function create_device () {
  rm -f $1
  echo -n "Creating $1..."
  mknod -m $PERM $1 c $MAJOR $2
  echo " done"
}

function create_device1 () {
  rm -f $1
  minor=$[ $2 + 128 ]
  echo -n "Creating $1..."
  mknod -m $PERM $1 c $MAJOR $minor
  echo " done"
}

function create_devices () {
  tmp=0
  rm -f $1 $1?
  echo -n "Creating $1?..."
  while [ $tmp -lt $MAX_CARDS ]; do
    minor=$[ $tmp * 16 ]
    minor=$[ $2 + 128 + $minor ]
    mknod -m $PERM $1$tmp c $MAJOR $minor
    tmp=$[ $tmp + 1 ]
  done
  echo " done"
}

function create_devices2 () {
  tmp=0
  rm -f $1 $1?
  echo -n "Creating $1??..."
  while [ $tmp -lt $MAX_CARDS ]; do
    tmp1=0
    while [ $tmp1 -lt $3 ]; do
      minor=$[ $tmp * 16 ]
      minor=$[ $2 + 128 + $minor + $tmp1 ]
      mknod -m $PERM $1$tmp$tmp1 c $MAJOR $minor
      tmp1=$[ $tmp1 + 1 ]
    done
    tmp=$[ $tmp + 1 ]
  done
  echo " done"
}

if test "$1" = "-?" || test "$1" = "-h" || test "$1" = "--help"; then
  echo "Usage: ultradevices [max]"
  exit
fi

if test "$1" = "max"; then
  DSP_MINOR=19
fi

# OSS (Lite) compatible devices...

if test $MAJOR -eq 14; then
  create_device /dev/mixer	0
  create_device /dev/sequencer	1
  create_device /dev/midi	2
  create_device /dev/dsp	$DSP_MINOR
  create_device /dev/audio	4
  create_device /dev/dsp1	3
  create_device /dev/dsp16	5
  create_device /dev/sndstat	6
  create_device /dev/sequencer2	8
  create_device /dev/music	8
  create_device /dev/dmmidi0	9
  create_device /dev/dmfm0	10
  create_device /dev/adsp	12	# alternate dsp
  create_device /dev/amidi	13	# alternate midi
  create_device /dev/admmidi	14	# alternate direct midi
fi

# New devices...

rm -f /dev/ultra*
create_devices  /dev/ultrasynth		0
create_devices  /dev/ultracontrol	1
create_devices  /dev/ultraserver	2
create_devices  /dev/ultramidi		3
create_devices  /dev/ultrafm		4
create_devices2 /dev/ultramixer		6	2
create_devices2 /dev/ultrapcm		8	2
create_devices2 /dev/ultramidi		10	2
create_device1  /dev/ultradetect	14
create_device1  /dev/ultrainfo		15
