#include <stdio.h>
#include <stdlib.h>
#include "DataManager.h"
#include "DmErrno.h"

main(int argc, char **argv)
{

  if (dm_init(NULL) != OK)
  {
    fprintf(stderr, "dm_init() failed\n");
    exit(1);
  }
  
  char *name = "TIBURON.TELEMETRY.ROV.RELAY_CONTROL";
  char errorBuf[errorMsgSize];

  DmNat32Object *dmObject = new DmNat32Object(name);
  if (dmObject->error())
  {
    dmObject->prtErrorMsg();
    exit(1);
  }
  
  DM_Item handle = dmObject->getHandle();

  DM_Group group = dm_create_group();

  DWord idBit;
  Errno errno;
  
  if ((errno = dm_group_add_item(group, handle, &idBit))
      != SUCCESS)
  {
    sprintDmError(errno, "dm_group_add_item()", errorBuf);
    fprintf(stderr, "%s\n", errorBuf);
    exit(1);
  }
 
  SEM_ID sem = semBCreate(SEM_Q_FIFO, SEM_EMPTY);
  if (!sem)
  {
    fprintf(stderr, "semBCreate() failed\n");
    exit(1);
  }
  
  if ((errno = dm_start_consumer(handle, DM_STATIC, sem)) != SUCCESS)
  {
    sprintDmError(errno, "DmMonitor::addItem() - dm_start_consumer()", 
		  errorBuf);

    fprintf(stderr, errorBuf);
    exit(1);
  }

  while (TRUE)
  {
    fprintf(stderr, "semTake()...");
    semTake(sem, WAIT_FOREVER);
    fprintf(stderr, "got it!\n\n");
  }

  exit(0);
}
