#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Error.h>
#include <GeoVme.h>
#include <dmap.h>

int main(int argc, char *argv[])
{
  int res;
  unsigned char chain,crate,slot,chan;
  DMAP_CHAN_EL data;

  if (argc!=9)
    {
      printf("Use: dmapfindcal GeoVmeMap dmap detector module plane column side card\n");
      return 1;
    }

  if (strcmp(argv[8],"CALADC")==0)
    data.btype = DMAP_BTYPE_CALADC;
  else if (strcmp(argv[8],"CALTDC")==0)
    data.btype = DMAP_BTYPE_CALTDC;
  else
    {
      printf("Error: Card nor CALADC nor CALTDC!\n");
      return 11;
    }

  if (strcmp(argv[3],"ECAPA")==0)
    data.data.cal.detector = DMAP_DET_ECAPA;
  else if (strcmp(argv[3],"ECAPB")==0)
    data.data.cal.detector = DMAP_DET_ECAPB;
  else if (strcmp(argv[3],"BARR")==0)
    data.data.cal.detector = DMAP_DET_BARREL;
  else
    {
      printf("Error: Detector nor ECAPA nor ECAPB nor BARR!\n");
      return 11;
    }

  data.data.cal.module = atoi(argv[4]);
  data.data.cal.plane = atoi(argv[5]);
  data.data.cal.column = atoi(argv[6]);
  data.data.cal.side = atoi(argv[7]);

  GeoVmeLoadMap(argv[1]);


  if (dmap_load(argv[2])!=DMAP_ERROR_OK)
    {
      printf("Error in dmap_load\n");
      return 2;
    }

  res = dmap_find(data,&chain,&crate,&slot,&chan);

  if (res==DMAP_ERROR_EMPTY)
    printf("Not found!\n");
  else if (res!=DMAP_ERROR_OK)
    printf("Error in dmap_find.\n");
  else
    {
      printf("Chain: %i Crate: %i Slot: %i Chan: %i\n",chain,crate,slot,chan);
    }
  

  dmap_dispose();
  GeoVmeUnloadMap();

  return 0;
}