#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!=7)
    {
      printf("Use: dmapfindqcal GeoVmeMap dmap detector module card\n");
      return 1;
    }

  if (strcmp(argv[5],"QCALADC")==0)
    data.btype = DMAP_BTYPE_QCALADC;
  else if (strcmp(argv[5],"QCALTDC")==0)
    data.btype = DMAP_BTYPE_QCALTDC;
  else
    {
      printf("Error: Card nor QCALADC nor QCALTDC!\n");
      return 11;
    }

  if (strcmp(argv[3],"QCALA")==0)
    data.data.qcal.detector = DMAP_DET_QCALA;
  else if (strcmp(argv[3],"QCALB")==0)
    data.data.qcal.detector = DMAP_DET_QCALB;
  else
    {
      printf("Error: Detector nor QCALA nor QCALB!\n");
      return 11;
    }

  data.data.qcal.module = atoi(argv[4]);

  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;
}