Esempio n. 1
0
int	Ev::outunit_connect( pwr_tObjid	user)
{
  int		sts;

  // Wait for mh has flagged initizated
  mh_UtilWaitForMh();

  sts = mh_OutunitConnect(
		user,
		mh_eOutunitType_Operator,
		0,
		mh_ack_bc,
		mh_alarm_bc,
		mh_block_bc,
		mh_cancel_bc,
		mh_clear_alarmlist_bc,
		mh_clear_blocklist_bc,
		mh_info_bc,
		mh_return_bc
		);
  if (EVEN(sts)) return sts;

  connected = 1;
  return XNAV__SUCCESS;
}
Esempio n. 2
0
JNIEXPORT jobject JNICALL Java_jpwr_rt_Mh_outunitConnect
  (JNIEnv *env, jclass obj, jobject objid_obj)
{
  int		sts;
  jclass 	PwrtObjid_id;
  jmethodID 	PwrtObjid_getOix;
  jmethodID 	PwrtObjid_getVid;
  jmethodID 	PwrtObjid_cid;
  pwr_tObjid 	user;
  jclass 	pwrtStatus_id;
  jmethodID 	pwrtStatus_cid;
  jobject 	return_obj;
  jint 		jsts;

  //hämta upp classid och sedan pekare till konstruktorn för PwrtStatus
  pwrtStatus_id = (*env)->FindClass( env, "jpwr/rt/PwrtStatus");
  pwrtStatus_cid = (*env)->GetMethodID( env, pwrtStatus_id,
    	"<init>", "(I)V");
  
  //hämta upp classid och sedan pekare till konstruktorn för PwrtObjid
  PwrtObjid_id = (*env)->FindClass( env, "jpwr/rt/PwrtObjid");
  if(PwrtObjid_id == NULL) printf("Pwrtobjid_id är NULL");
  
  PwrtObjid_cid = (*env)->GetMethodID( env, PwrtObjid_id, "<init>", "(II)V");
  if(PwrtObjid_cid == NULL) printf("Pwrtobjid_cid är NULL");
  
  //hämta pekare till getOix och getVid i PwrtObjid    
  PwrtObjid_getOix = (*env)->GetMethodID( env, PwrtObjid_id, "getOix", "()I");
  if(PwrtObjid_getOix == NULL) printf("Pwrtobjid_getoix är NULL");
  
  PwrtObjid_getVid = (*env)->GetMethodID( env, PwrtObjid_id, "getVid", "()I");
  if(PwrtObjid_getVid == NULL) printf("Pwrtobjid_getVid är NULL");
  
  //hämta oix och vid för objektet som skickats med från anroparen
  user.oix = (*env)->CallIntMethod( env, objid_obj, PwrtObjid_getOix);
  user.vid = (*env)->CallIntMethod( env, objid_obj, PwrtObjid_getVid);
    
  //gör connect
  sts = mh_OutunitConnect(
		user,
		mh_eOutunitType_Operator,
		mh_mOutunitFlags_ReadWait,
		ev_mh_ack_bc,
		ev_mh_alarm_bc,
		NULL,
		NULL,
		ev_mh_clear_alarmlist_bc,
		NULL,
		ev_mh_info_bc,
		ev_mh_return_bc
		);
  jsts = (jint) sts;
  
  //skapa returobjekt
  return_obj = (*env)->NewObject( env, pwrtStatus_id,
  	pwrtStatus_cid, jsts);
  
  return return_obj;
}
Esempio n. 3
0
int main(int argc, char *argv[])
{
  pwr_tStatus	   sts;
  pwr_tObjid	   Object;
  pwr_tClassId	   Class;
  mh_eOutunitType  Type;
  mh_mOutunitFlags Flags;
  pwr_tInt32	   TenthsOfSeconds = 10;
  pwr_tInt32	   TimerId = 10;


  sts = gdh_Init("pwr_epri");
  if (EVEN(sts)) {
    exit (sts);
  }

  if (argc > 1)	{
    if (strcmp(argv[1], "-t") == 0) {
      /* test mode */
      Object = pwr_cNObjid;
      Type = mh_eOutunitType_Logger;
      Flags = mh_mOutunitFlags_ReadWait;
    } else {
      Type = mh_eOutunitType_Printer;
      Flags = mh_mOutunitFlags_ReadWait;
      strcpy(EventPrinter ,argv[1]);
      sts = gdh_NameToObjid(argv[1], &Object);
      if (EVEN(sts)) {
	printf("%%PRI-E-NOVALID_EVENTPRINT. No valid EventPrinter object\n");
	exit(sts);
      }
      sts = gdh_GetObjectClass(Object , &Class);
      if (Class != pwr_cClass_EventPrinter) {
	printf("%%PRI-E-NOVALID_EVENTPRINT. EventPrinter object, wrong class\n");
	exit(sts);
      }
    }
  } else {
    printf("%%PRI-E-NO_EVENT_PRINTER. No EventPrinter object\n");
    exit(2);
  }
  
  sts = mh_OutunitConnect(
    Object,
    Type,
    Flags,
    (mh_cbOutunitAck)PrintEvent,
    (mh_cbOutunitAlarm)PrintEvent,
    (mh_cbOutunitBlock)PrintEvent,
    (mh_cbOutunitCancel)PrintEvent,
    NULL,
    NULL,
    (mh_cbOutunitInfo)PrintEvent,
    (mh_cbOutunitReturn)PrintEvent,
    NULL
  );

  if (EVEN(sts)) {
    printf("%%PRI-E-CONNECT. Could not connect Outunit to message handler.\n");
    exit(sts);
  }  

  if (Type == mh_eOutunitType_Printer) {
    sts = gdh_GetObjectInfo(EventPrinter, &EventPrinterObj,
      sizeof(EventPrinterObj)
    );
    if (EVEN(sts)) {
      printf("%%PRI-E-EVENTPRINT Cannot get EventPrinter object\n");
      exit(sts);
    }
    if ((Printer = fopen(EventPrinterObj.DeviceName, "w")) == NULL) {
      printf("%%PRI-E-NOPRINT  Cannot open printer: %s\n", Printer);
      exit(1);
    }
    if (EventPrinterObj.RowSize == 0)
      EventPrinterObj.RowSize = 80;

  } else {
#if 0
    sts = mh_OutunitSetTimer(&TenthsOfSeconds, &TimerId);
#endif
    Printer = stdout;
    EventPrinterObj.RowSize = 80;
  }

  for(;;) {
    sts = mh_OutunitReceive();     
  }
}
Esempio n. 4
0
void rt_post::open()
{
  pwr_tStatus sts;
  pwr_tObjid oid;
  pwr_tFileName filename;

  // Open server configuration object PostConfig
  sts = gdh_GetClassList( pwr_cClass_PostConfig, &oid);
  if ( ODD(sts)) {
    sts = gdh_ObjidToPointer( oid, (void **)&conf);
    if ( EVEN(sts)) throw co_error( sts);

    aproc_RegisterObject( oid);
  }
  else {
    errh_Info( "No Post configuration");
    errh_SetStatus( 0);
    exit(0);
  }

  conf->Status = PWR__SRVSTARTUP;

  // Connect to mh
  mh_UtilWaitForMh();

  sts = mh_OutunitConnect(
		oid,
		mh_eOutunitType_Post,
		0,
		mh_ack_bc,
		mh_alarm_bc,
		mh_block_bc,
		mh_cancel_bc,
		mh_clear_alarmlist_bc,
		mh_clear_blocklist_bc,
		mh_info_bc,
		mh_return_bc,
		NULL
		);
  if ( EVEN(sts)) {
    errh_Error( "Post terminated: %m", sts);
    conf->Status = sts;
    exit(0);
  }

  // Load user database
	
  sts = gdh_GetObjectInfo( "pwrNode-System.SystemGroup", &systemgroup, 
			   sizeof(systemgroup));
  if ( EVEN(sts)) {
    errh_Error( "Post terminated: %m", sts);
    conf->Status = sts;
    exit(0);
  }

  udb = new GeUser();
  sts = dcli_get_defaultfilename( user_cFilename, filename, "");
  udb->load( filename);

  conf->Status = PWR__SRUN;

}
Esempio n. 5
0
int 
main ()
{
  pwr_tStatus sts;
  pwr_tObjid  oid;
  qcom_sQid   my_q = qcom_cNQid;
  qcom_sGet   get;

  pwr_tBoolean firstTime = TRUE;
  pwr_tUInt32 nrOfEvents = 0;
  pwr_tUInt32 nrOfKeys = 0;
  
  errh_Init("pwr_elog", errh_eAnix_elog);
  errh_SetStatus( PWR__SRVSTARTUP);

  memset(&lHelCB, 0, sizeof(lHelCB));

  /* Declare process */
  sts = gdh_Init("pwr_elog");
  If_Error_Log_Exit(sts, "gdh_Init");

  Init();

  /* Create queue for receival of events */
  if (!qcom_CreateQ(&sts, &my_q, NULL, "events")) {
    errh_Fatal("qcom_CreateQ, %m", sts);
    errh_SetStatus( PWR__APPLTERM);
    exit(sts);
  } 

  if (!qcom_Bind(&sts, &my_q, &qcom_cQini)) {
    errh_Fatal("qcom_Bind(Qini), %m", sts);
    errh_SetStatus( PWR__APPLTERM);
    exit(-1);
  }
  
  oid.vid = lHelCB.Nid;
  oid.oix = pwr_cNVolumeId;

  sts = mh_OutunitConnect(
    oid, 
    mh_eOutunitType_Logger, 
    mh_mOutunitFlags_ReadWait, 
    (mh_cbOutunitAck)Insert, 
    (mh_cbOutunitAlarm)Insert, 
    (mh_cbOutunitBlock)Insert, 
    (mh_cbOutunitCancel)Insert, 
    NULL, 
    NULL, 
    (mh_cbOutunitInfo)Insert,
    (mh_cbOutunitReturn)Insert,
    NULL
  );
  If_Error_Log_Exit(sts, "mh_OutunitConnect");

  sts = mh_OutunitSetTimeout(lHelCB.ScanTime);

  errh_SetStatus( PWR__SRUN);

  for (;;) {
    sts = mh_OutunitReceive();
    if (EVEN(sts) && sts != MH__TMO)
      Log_Error(sts, "mh_OutunitReceive");
    Store(&firstTime, &nrOfEvents, &nrOfKeys);

    get.data = NULL;
    qcom_Get(&sts, &my_q, &get, 0);
    if (sts != QCOM__TMO && sts != QCOM__QEMPTY) {
      if (get.type.b == qcom_eBtype_event) {
        qcom_sEvent  *ep = (qcom_sEvent*) get.data;
        ini_mEvent    new_event;
        if (get.type.s == qcom_cIini) {
          new_event.m = ep->mask;
          if (new_event.b.terminate) {
            errh_SetStatus( PWR__APPLTERM);
            exit(0);
          }
        }
      }
      qcom_Free(&sts, get.data);
    }

    aproc_TimeStamp( lHelCB.ScanTime/1000, 5.0);
  }
}