# ferreus_orbit Plugins for GIGABYTE "MZ01-CE1-00"

fo_get_sorted_name(){
  local host=$(echo $DEVPATH | cut -d/ -f6)
  case "$host" in
    ata1|ata2)
      local ata=$(echo "${host}" |awk -F'ata' '{print $2}')
      let "id = ata - 1"
      local num=$id
      ;;
    *)
      local drawer=$(echo ${ID_PATH} | cut -d- -f2 | cut -d: -f2)
      local num=$(echo ${ID_PATH} | cut -d- -f4 | awk -F'phy' '{print $2}')
      case "$drawer" in
        81)
          drawer=0
          let "id = num + 2"
          ;;
        41)
          drawer=1
          let "id = num + 10"
          ;;
        01)
          local drawer=2
          let "id = num + 18"
         ;;
        *)
           logger -t "udev" "Device $DEVPATH detected but not supported"; exit 1
          ;;
      esac
      ;;
  esac
    
  if [ "$USE_FO_NAME" -lt 1 ]; then
    echo sd$(fo_get_dev_letter ${id})
    exit 0
  else
    if [ -z "${drawer}" ]; then
      echo "Disk${num}"
    else
      echo "Drawer${drawer}-Disk${num}"
    fi
    exit 0
  fi
}

fo_get_did(){
  fo_get_id $1
}

fo_get_id(){
  local host=$(echo $DEVPATH | cut -d/ -f6)
  case "$host" in
    ata1|ata2)
      local ata=$(echo "${host}" |awk -F'ata' '{print $2}')
      let "id = ata - 1"
      ;;
    *)
      local num=$(echo ${ID_PATH} | cut -d- -f4 | awk -F'phy' '{print $2}')
      case "$drawer" in
        81)
           let "id = num + 2"
          ;;
        41)
          let "id = num + 10"
          ;;
        01)
          let "id = num + 18"
         ;;
        *)
           logger -t "udev" "Device $DEVPATH detected but not supported"; exit 1
          ;;
      esac
      ;;
  esac
  echo $id
}

fo_build_dispo(){
  if [ "$USE_FO_NAME" -ne 1 ]; then
    FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s/{Disk0}/{sda}/")
    FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s/{SN_Disk0}/{SN_sda}/")
    FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s/{Disk1}/{sdb}/")
    FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s/{SN_Disk1}/{SN_sdb}/")
  fi
  local cpt=2
  for d in 0 1 2; do
    local drawer=${FO_DRAWER_DISPOSITION}
    drawer=$(printf "${drawer}"|sed "s/{DRAWER}/${d}/g")
    if [ "$USE_FO_NAME" -ne 1 ]; then
      for i in $(seq 0 7);do
        drawer=$(printf "${drawer}"|sed "s/{Drawer${d}-Disk${i}}/{sd$(fo_get_dev_letter ${cpt})}/g")
        drawer=$(printf "${drawer}"|sed "s/{SN_Drawer${d}-Disk${i}}/{SN_sd$(fo_get_dev_letter ${cpt})}/g")
        let "cpt = cpt + 1"
      done
    fi
    FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s%{DRAWER${d}}%${drawer}%g")
  done
}

FO_DRAWER_DISPOSITION="    /{Drawer{DRAWER}-Disk2}/{Drawer{DRAWER}-Disk3}|{Drawer{DRAWER}-Disk1}@{Drawer{DRAWER}-Disk0}@\
{new_line}   /{SN_Drawer{DRAWER}-Disk2}/{SN_Drawer{DRAWER}-Disk3} | {SN_Drawer{DRAWER}-Disk1}@{SN_Drawer{DRAWER}-Disk0}@\
{new_line}  --{MINUS}---{MINUS}-------{MINUS}---{MINUS}--\
{new_line} /{Drawer{DRAWER}-Disk6}/{Drawer{DRAWER}-Disk7}   |   {Drawer{DRAWER}-Disk5}@{Drawer{DRAWER}-Disk4}@\
{new_line}/{SN_Drawer{DRAWER}-Disk6}/{SN_Drawer{DRAWER}-Disk7}    |    {SN_Drawer{DRAWER}-Disk5}@{SN_Drawer{DRAWER}-Disk4}@\
{new_line}__{UNDERSCORE}___{UNDERSCORE} Drawer {DRAWER} __{UNDERSCORE}___{UNDERSCORE}__"

FO_DISPOSITION="""
HDD disposition (Front Panel)
    __{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
{DRAWER0}
{DRAWER1}
{DRAWER2}

HDD disposition (Rear Panel):
__{UNDERSCORE}___{UNDERSCORE}__
|{Disk0}|{Disk1}|
|{SN_Disk0}|{SN_Disk1}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯
"""
