Пример #1
0
TASKTYPE TASKMOD tmon4(void * nv)
{
	HEventRec e;
	HWin w;

	printf("WinMsg Monitor task running\n"); fflush(stdout);
	w = MakeAWindow("monitor",40,40,200,50,1);
	do {
		e = HGetEvent(NULL,NULL);
		printf("event %d\n",e.event);
	} while (e.event != HMOUSEDOWN);
	return 0;
}
Пример #2
0
// ASyn task
TASKTYPE TASKMOD ASyn_Task(void * p)
{
   ASyn *asp = (ASyn *)p;
   APacket pkt,mkr;
   char buf[100],cname[100];
   HEventRec e;

   try{
      strcpy(cname,asp->cname.c_str());
      asp->ackbuf->RequestBufferEvents(ACKBUFID);
      asp->RequestMessageEvents();
      while (!asp->IsTerminated()){
         e = HGetEvent(0,0);
         switch(e.event){
            case HTBUFFER:
               switch(e.c){
                  case MSGEVENTID:
                     asp->ChkMessage();
                     while (asp->IsSuspended()) asp->ChkMessage(TRUE);
                     break;
                  case ACKBUFID:
                     asp->ChkAckBuf();
		               break;
               } /* switch(e.c) */
               break;
            case HWINCLOSE:
               sprintf(buf, "terminating");
               HPostMessage(HThreadSelf(),buf);
               asp->terminated = TRUE;
               break;
         }
      }
      if (asp->trace&T_TOP) printf("%s synthesiser exiting\n",asp->cname.c_str());
      HExitThread(0);
      return 0;
   }
   catch (ATK_Error e){ ReportErrors("ATK",e.i); return 0;}
   catch (HTK_Error e){ ReportErrors("HTK",e.i); return 0;}
}
Пример #3
0
/* EXPORT->TrackButtons: tracks the buttons until the mouse button is released */
ButtonId TrackButtons(HButton *btnlist, HEventRec hev)
{
   HButton *pressed, *released;
   bool done;
     
   pressed = CheckButtonList(btnlist, hev.x, hev.y);
   if (pressed != NULL){
      SetButtonLit(pressed, TRUE);
      done = FALSE;
#ifdef USE_TIMER
      HFlush(); Timer(BTN_WAIT);
#endif
      do {
         hev = HGetEvent(TRUE, pressed->action);
         done = (hev.event==HMOUSEUP);
      } while (!done);
      released = CheckButtonList(btnlist, hev.x, hev.y);
      SetButtonLit(pressed, FALSE);
      if ( pressed == released)
         return pressed->id;
   }
   return 0;
}
Пример #4
0
TASKTYPE TASKMOD CopyFe(void *p)
{
  ATee *acp = (ATee *)p;
  APacket pkt;
  HEventRec e;
  try{
    acp->in->RequestBufferEvents(INBUFID);
    acp->RequestMessageEvents();

    while(!acp->IsTerminated()){
      e = HGetEvent(0,0);
      switch(e.event){
      case HTBUFFER:
      	switch(e.c) {
	case MSGEVENTID:
	  acp->ChkMessage();
	  while (acp->IsSuspended()) acp->ChkMessage(TRUE);
	  break;
	case INBUFID:
	  if (! acp->in->IsEmpty()) {
	    while (! acp->in->IsEmpty()) {
	      pkt=acp->in->GetPacket();
	      acp->out1->PutPacket(pkt);
	      acp->out2->PutPacket(pkt);
	    }
	  }
	  break;
	}
      }
    }
    HExitThread(0);
    return 0;
  }
  catch (ATK_Error e){ReportErrors("ATK",e.i); return 0;}
  catch (HTK_Error e){ReportErrors("HTK",e.i); return 0;}
}
Пример #5
0
// ARec task
TASKTYPE TASKMOD ARec_Task(void * p)
{
   ARec *avp = (ARec *)p;
   char buf[100],cname[100];
   HEventRec e;

   try{
      strcpy(cname,avp->cname.c_str());
      if (avp->showRD){
         avp->win = MakeHWin(cname,avp->rdx0,avp->rdy0,avp->width,avp->height,1);
         avp->InitDrawRD();
      }
      // Initialise Recogniser
      avp->InitRecogniser();
      avp->in->RequestBufferEvents(INBUFID);
      avp->RequestMessageEvents();
      while (!avp->IsTerminated()){
         e = HGetEvent(0,0);
         if (avp->trace&T_RST)
            printf(" ARec event=%d ev.c=%d state=%d mode=%o\n",
            e.event,e.c,(int)avp->runstate,(int)avp->runmode);
         switch(e.event){
         case HTBUFFER:
            switch(e.c){
            case MSGEVENTID:
               avp->ChkMessage();
               while (avp->IsSuspended()) avp->ChkMessage(TRUE);
               if (avp->runstate==ANS_STATE){
                  avp->ComputeAnswer();
                  avp->runstate = (avp->runmode&CONTINUOUS_MODE)?PRIME_STATE:WAIT_STATE;
               }
               break;
            case INBUFID:
               switch (avp->runstate) {
               case PRIME_STATE:
                  avp->PrimeRecogniser();
                  avp->runstate = FLUSH_STATE;
               case FLUSH_STATE:
                  if (avp->FlushObservation()) {
                     if (avp->terminated) break;   // only possible if file input
                     avp->runstate = RUN_STATE;
                  } else
                     break;
               case RUN_STATE:
                  if (avp->RecObservation())
                     avp->runstate = ANS_STATE;
                  else
                     break;
               case ANS_STATE:
                  avp->ComputeAnswer();
                  avp->runstate = (avp->runmode&CONTINUOUS_MODE)?PRIME_STATE:WAIT_STATE;
                  break;
               }
               // update display
               if (avp->showRD) avp->DrawStatus();
               break;
            }
            break;
            case HWINCLOSE:
               sprintf(buf, "Terminating\n");
               HPostMessage(HThreadSelf(),buf);
               avp->terminated = TRUE;
               break;
         }
      }
      // forward a terminated message to output buffer
      if (avp->trace&T_TOP) printf("%s recogniser exiting\n",avp->cname.c_str());
      avp->SendMarkerPkt("TERMINATED");
      HExitThread(0);
      return 0;
   }
   catch (ATK_Error e){ ReportErrors("ATK",e.i); return 0;}
   catch (HTK_Error e){ ReportErrors("HTK",e.i); return 0;}

}