// ============================================================
//  exTest.cc
//  11-December-2001
//  Go Iwai [iwai@hep.sc.niigata-u.ac.jp]
// ============================================================
#include <iostream.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "ExVMEReadoutList.hh"
#include "ExVMEReadoutModule.hh"
#include "ExVMEReadoutChannel.hh"
#include "ExOutputObjectFile.hh"
#include "ExInputObjectFile.hh"


int main( int argc, char** argv )
{





  
  cout << "########### WRITE MODE ##########" << endl;


  const int nlist = 2;
  int i = 10;

  ExVMEReadoutList* list = new ExVMEReadoutList( 3, 0x1000 + i );
  
  ExVMEReadoutModule* adc = new ExVMEReadoutModule( 4 );
  ExVMEReadoutModule* tdc = new ExVMEReadoutModule( 8 );
  ExVMEReadoutModule* scaler = new ExVMEReadoutModule( 6 );

  adc -> add( new ExVMEReadoutChannel( i+22 ) );
  adc -> add( new ExVMEReadoutChannel( i+44 ) );
  adc -> add( new ExVMEReadoutChannel( i+66 ) );
  adc -> add( new ExVMEReadoutChannel( i+88 ) );

  tdc -> add( new ExVMEReadoutChannel( i*10 ) );
  tdc -> add( new ExVMEReadoutChannel( i*20 ) );
  tdc -> add( new ExVMEReadoutChannel( i*30 ) );
  tdc -> add( new ExVMEReadoutChannel( i*40 ) );
  tdc -> add( new ExVMEReadoutChannel( i*50 ) );
  tdc -> add( new ExVMEReadoutChannel( i*60 ) );
  tdc -> add( new ExVMEReadoutChannel( i*70 ) );
  tdc -> add( new ExVMEReadoutChannel( i*80 ) );

  scaler -> add( new ExVMEReadoutChannel( i+99 ) );
  scaler -> add( new ExVMEReadoutChannel( i+77 ) );
  scaler -> add( new ExVMEReadoutChannel( i+66 ) );
  scaler -> add( new ExVMEReadoutChannel( i+55 ) );
  scaler -> add( new ExVMEReadoutChannel( i+33 ) );
  scaler -> add( new ExVMEReadoutChannel( i+11 ) );

  list -> add( adc );
  list -> add( tdc );
  list -> add( scaler );



   int w = open( "system.obj", O_RDWR|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH );
   write( w, list, list-> getDataSize() );
   write( w, list, list-> getDataSize() );
   perror("HOGE");
   close(w);

   int r = open( "system.obj", O_RDWR|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH );
   perror("HOGE");
   ExVMEReadoutList* test;
   read( r, test, test-> getDataSize() );
   perror("HOGE");

   test -> dump();
   close(r);

  return( 0 );
}








