IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 16, 2005, 6:01:28 AM (21 years ago)
Author:
eugene
Message:

added user scheduler/controller commands, fixed up I/F issues

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pantasks/ControllerOps.c

    r4552 r4573  
    55static int status = FALSE;
    66static int stdin_cntl, stdout_cntl, stderr_cntl;
     7static IOBuffer stdout_buffer;
     8static IOBuffer stderr_buffer;
    79
    810int CheckControllerStatus () {
     
    108110  line = NULL;
    109111  status = -1;
    110   for (i = 0; (i < CONTROLLER_TIMEOUT) && (status == -1) && (line == NULL); i++) {
     112  for (i = 0; (i < CONTROLLER_TIMEOUT) && (status != 0) && (line == NULL); i++) {
    111113    status = ReadtoIOBuffer (buffer, stdout_cntl);
    112114    if ((buffer[0].Nbuffer - Nstart) >= Nbytes) {
     
    261263  p = NULL;
    262264  status = -1;
    263   for (i = 0; (i < CONNECT_TIMEOUT) && (status == -1) && (p == NULL); i++) {
     265  for (i = 0; (i < CONNECT_TIMEOUT) && (status != 0) && (p == NULL); i++) {
    264266    status = ReadtoIOBuffer (&buffer, stdout_fd[0]);
    265267    p = memstr (buffer.buffer, "CONNECTED", buffer.Nbuffer);
     
    274276  stdout_cntl = stdout_fd[0];
    275277  stderr_cntl = stderr_fd[0];
     278
     279  InitIOBuffer (&stdout_buffer, 0x100);
     280  InitIOBuffer (&stderr_buffer, 0x100);
    276281
    277282  fprintf (stderr, "Connected\n");
     
    319324  line = NULL;
    320325  status = -1;
    321   for (i = 0; (i < CONTROLLER_TIMEOUT) && (status == -1) && (line == NULL); i++) {
     326  for (i = 0; (i < CONTROLLER_TIMEOUT) && (status != 0) && (line == NULL); i++) {
    322327    status = ReadtoIOBuffer (buffer, stdout_cntl);
    323328    line = memstr (buffer[0].buffer, response, buffer[0].Nbuffer);
     
    330335}
    331336
     337int CheckControllerOutput () {
     338
     339  int Nread;
     340
     341  /* read stdout buffer */
     342  Nread = ReadtoIOBuffer (&stdout_buffer, stdout_cntl);
     343  switch (Nread) {
     344    case -2:  /* error in read (programming error?  system level error?) */
     345      fprintf (stderr, "serious IO error\n");
     346      exit (2);
     347    case -1:  /* no data in pipe */
     348      break;
     349    case 0:   /* pipe is closed */
     350      /** change child state? **/
     351      break;
     352    default:  /* data in pipe */
     353      break;
     354  }
     355 
     356  /* read stderr buffer */
     357  Nread = ReadtoIOBuffer (&stderr_buffer, stderr_cntl);
     358  switch (Nread) {
     359    case -2:  /* error in read (programming error?  system level error?) */
     360      fprintf (stderr, "serious IO error\n");
     361      exit (2);
     362    case -1:  /* no data in pipe */
     363      break;
     364    case 0:   /* pipe is closed */
     365      /** change child state? **/
     366      break;
     367    default:  /* data in pipe */
     368      break;
     369  }
     370  return (TRUE);
     371}
     372
     373int PrintControllerOutput () {
     374
     375  fprintf (stderr, "--- stdout ---\n");
     376  fwrite (stdout_buffer.buffer, 1, stdout_buffer.Nbuffer, stderr);
     377  fprintf (stderr, "--- stdout ---\n");
     378  fwrite (stderr_buffer.buffer, 1, stderr_buffer.Nbuffer, stderr);
     379  fprintf (stderr, "---  done  ---\n");
     380  return (TRUE);
     381}
     382
     383
    332384/* memstr returns a view, not an allocated string : don't free */
Note: See TracChangeset for help on using the changeset viewer.