예제 #1
0
void startServer() {
	/* Initialze lighting service */

	/* Create  a service for us */
	if (gethostname(hostname, INSTANCE_MAX) != 0) {
		fprintf(stderr, "Unable to retrieve the hostname");
		exit(1);
	}
	telldusService = xPL_createService("telldus", "core", hostname);
	xPL_setServiceVersion(telldusService, TELLDUS_VERSION);

	/* Add a responder */
	xPL_addServiceListener(telldusService, lightingRequestHandler, xPL_MESSAGE_COMMAND, "lighting", "request", NULL);
	xPL_addServiceListener(telldusService, lightingCommandHandler, xPL_MESSAGE_COMMAND, "lighting", "basic", NULL);

	/* Install signal traps for proper shutdown */
	signal(SIGTERM, shutdownHandler);
	signal(SIGINT, shutdownHandler);

	/* Enable the service */
	xPL_setServiceEnabled(telldusService, TRUE);
	sendGatewayReadyMessage();

	for (;;) {
		/* Let XPL run */
		xPL_processMessages(-1);
	}
}
예제 #2
0
void initXpl() {
 
 if (!xPL_initialize(xPL_getParsedConnectionType())) {
    fprintf(stderr, "Unable to start xPL");
    exit(1);
  } 

  /* Initialze clock service */

  /* Create  a service for us */
  pmaxdService = xPL_createService("visonic", "powermaxplus", "default");
  xPL_setServiceVersion(pmaxdService, PMAXD_VERSION);
  
  /* Add a responder for time setting */
  xPL_addServiceListener(pmaxdService, pmaxdMessageHandler, xPL_MESSAGE_COMMAND, "security", NULL, NULL);

  

  /* Install signal traps for proper shutdown */
  signal(SIGTERM, shutdownHandler);
  signal(SIGINT, shutdownHandler);

  /* Enable the service */
    xPL_setServiceEnabled(pmaxdService, TRUE);

}
예제 #3
0
int main(void)
{
	char *data;
	long m,n;
	printf("%s%c%c\n",
	"Content-Type:text/html;charset=iso-8859-1",13,10);

//	printf("<h3>Multiplication results</h3>\n");

	data = getenv("QUERY_STRING");

  

	stripSpace(data);
	char schemaclass[500];
	char schematype[500];
	char namedvaluearray[500];
	char name[500];
	char value[500];
	char command[500];
	char varcontent[500];
  char jsoncontent[500];
  char NVelement[500];
//  printf("URL %s<BR>\n",data);
  strcpy(command,data);
  unencode(command);
  findVarInURL(varcontent,data,"xplpacket");
  unencode(varcontent); 
  stripSpace(varcontent);
	
  xPL_initialize(xPL_getParsedConnectionType());
  webgateway = xPL_createService("viknet", "webgateway", "default");  
  xPL_setServiceVersion(webgateway, "1.0");

  
  /* Add a responder for time setting */
  xPL_addServiceListener(webgateway, webgatewayMessageHandler, xPL_MESSAGE_ANY, "security", NULL, NULL);
  xPL_setServiceEnabled(webgateway, TRUE);
  /* Create a message to send */
  xplMessage = xPL_createBroadcastMessage(webgateway, xPL_MESSAGE_COMMAND);

  if (JSONfindObject(schemaclass,varcontent,"msgschemaclass")!=NULL && JSONfindObject(schematype,varcontent,"msgschematype")!=NULL)
    xPL_setSchema(xplMessage, JSONtoString(schemaclass), JSONtoString(schematype));
	else
    xPL_setSchema(xplMessage, "schemaclass", "schematype");	
	
	JSONfindObject(namedvaluearray,varcontent,"namevaluelist");
  int i;
   for (i=0;i<JSONArrayLength(namedvaluearray);i++)
   {
     JSONArrayAt(NVelement,namedvaluearray,i);
	   if ( JSONfindObject(name,NVelement,"name") && JSONfindObject(value,NVelement,"value"))
	   xPL_addMessageNamedValue(xplMessage, JSONtoString(name), JSONtoString(value));	   
   }
   xPL_sendMessage(xplMessage);
//   xPL_processMessages(0);
	return 0;  
}       
예제 #4
0
int xpl4l_timer(node_t* argXmlConfig)
{
	static init = 1;
    static time_t oldClockTime, oldTickTime;
	time_t t;
    struct tm *ts;
    char       buf[80];

	Bool ret;
	
	if ( init )
	{
		t = 0;
		timer_loadConfig (argXmlConfig);
		init = 0;
		
		clockService = xPL_createService (XPLHAL4L_VENDOR, "clock", HAL4L_hostName);
		xPL_setServiceVersion (clockService, XPLHAL4L_VERSION);

		/* Add a responder for time setting */
		xPL_addServiceListener (clockService, clockServiceHandler, xPL_MESSAGE_ANY, "clock", NULL, NULL);
		
		/* Create a message to send */
		clockTickMessage = xPL_createBroadcastMessage (clockService, xPL_MESSAGE_STATUS);
		
		xPL_setSchema (clockTickMessage, "clock", "update");

		/* Internals messages */
		schedulerTickMessage = createInternalTickMessage();
		xPL_addMessageListener(internalMessageHandler, NULL);
		
		
	}
	
	t = time (NULL);
	ts = localtime(&t);

	if ( timerConfig.clock_enabled && t%timerConfig.clock_interval==0 && t!=oldClockTime)
	{

		strftime(buf, sizeof(buf), "%Y%m%d%H%M%S", ts);
		
		/* Install the value and send the message */
		xPL_setMessageNamedValue (clockTickMessage, "time", buf);
		
		/* Broadcast the message */
		xPL_sendMessage (clockTickMessage);

		oldClockTime = t;
	}

	if ( t%timerConfig.sched_interval==0 && t!=oldTickTime)
	{
		strftime(buf, sizeof(buf), "%a %Y-%m-%d %H:%M:%S %Z", ts);
		
		/* Crée le messageBody si NULL et y ajoute une seule ligne si elle n'existe pas, sinon la met à jour */
		xPL_setMessageNamedValue(schedulerTickMessage, "timestamp", buf);
		strftime(buf, sizeof(buf), "%H:%M", ts);
		xPL_setMessageNamedValue(schedulerTickMessage, "time", buf);
		strftime(buf, sizeof(buf), "%Y", ts);
		xPL_setMessageNamedValue(schedulerTickMessage, "year", buf);
		strftime(buf, sizeof(buf), "%m", ts);
		xPL_setMessageNamedValue(schedulerTickMessage, "month", buf);
		strftime(buf, sizeof(buf), "%Y%m%d", ts);
		xPL_setMessageNamedValue(schedulerTickMessage, "date", buf);
		strftime(buf, sizeof(buf), "%d", ts);
		xPL_setMessageNamedValue(schedulerTickMessage, "day", buf);

		sprintf(buf, "%d", t);
		xPL_setMessageNamedValue(schedulerTickMessage, "epoch", buf);


		
		ret = xPL_dispatchMessageEvent(schedulerTickMessage);

		printf ("Message dispatched = %s\n", ret == TRUE ? "TRUE":"FALSE");
    
		oldTickTime = t;

	}


}
예제 #5
0
int main(void)
{
  pmaxSystem.status[0]=0;
  pmaxSystem.pmaxstatus[0]=0;
  pmaxSystem.readytoarm[0]=0;
  pmaxSystem.PmaxStatus[0]=0;
  
  int k;
  for (k=0;k<31;k++)
  {
    pmaxSystem.sensor[k].type[0]=0;
    pmaxSystem.sensor[k].alert[0]=0;
    pmaxSystem.sensor[k].PmaxAlarmType[0]=0;
    pmaxSystem.sensor[k].armed[0]=0;                  
    pmaxSystem.sensor[k].alarmed[0]=0;
    pmaxSystem.sensor[k].lowbattery[0]=0;  
    pmaxSystem.sensor[k].enrolled[0]=0;
    pmaxSystem.sensor[k].tampered[0]=0;
    pmaxSystem.sensor[k].id[0]=0;
  } 
  
//	char *data;
	long m,n;
	printf("%s%c%c\n" ,
	"Content-Type:text/html;charset=iso-8859-1",13,10);

	
  xPL_initialize(xPL_getParsedConnectionType());
  webgateway = xPL_createService("viknet", "webgateway", "default");  
  xPL_setServiceVersion(webgateway, "1.0");

  /* Add a responder for time setting */
  xPL_addServiceListener(webgateway, webgatewayMessageHandler, xPL_MESSAGE_ANY, "security", NULL, NULL);
  xPL_setServiceEnabled(webgateway, TRUE);
//  int j;
  
//  for (j=0;j<10;j++)
//  {
  /* Create a message to send */
  xplMessage = xPL_createBroadcastMessage(webgateway, xPL_MESSAGE_COMMAND);
  xPL_setSchema(xplMessage, "security", "request");
  xPL_setMessageNamedValue(xplMessage, "request", "zonelist");	
  xPL_sendMessage(xplMessage);
//  printf("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");
  int i;
  
  
  xplMessage = xPL_createBroadcastMessage(webgateway, xPL_MESSAGE_COMMAND);
  xPL_setSchema(xplMessage, "security", "request");
  xPL_setMessageNamedValue(xplMessage, "request", "gatestat");	
  xPL_sendMessage(xplMessage);
  
  
  for (i=1;i<1000;i++)
  {
    usleep(1000);
    if (nbzone!=0) break;
    xPL_processMessages(0);
  }
  
  
  strcpy(tpzonelist,zonelist);
  char * element;
//  printf("yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy\n");
//  printf("zone: %d, %s\n",nbzone,zonelist);
//  for (i=0;i<nbzone;i++)  {
//  char * pch;
  element = strtok (tpzonelist,",");
   while (element != NULL)
  {
//    printf ("%s\n",element);
   
   // xplListAt(element,zonelist,i);
  //  sprintf(element,"%d",i);
  //  printf("element: %s\n",element);
    xplMessage = xPL_createBroadcastMessage(webgateway, xPL_MESSAGE_COMMAND);
    xPL_setSchema(xplMessage, "security", "request");
    xPL_setMessageNamedValue(xplMessage, "request", "zoneinfo");	
    xPL_setMessageNamedValue(xplMessage, "zone", element);	
    xPL_sendMessage(xplMessage);
    
    
    xplMessage = xPL_createBroadcastMessage(webgateway, xPL_MESSAGE_COMMAND);
    xPL_setSchema(xplMessage, "security", "request");
    xPL_setMessageNamedValue(xplMessage, "request", "zonestat");	
    xPL_setMessageNamedValue(xplMessage, "zone", element);	
    xPL_sendMessage(xplMessage);
    
    
    usleep(40000);
    xPL_processMessages(0);
    element = strtok (NULL, ",");  
  }
//  printf("zonelist: %s\n",zonelist);
  for (i=0;i<10;i++)
  { 
  usleep(15000);
  xPL_processMessages(0);
  }      
  printf("{ \"status\":\"%s\",\"pmaxstatus\":\"%s\",\"readytoarm\":\"%s\",\"sensor\":[",pmaxSystem.status,pmaxSystem.pmaxstatus,pmaxSystem.readytoarm);
 
// strcpy(tpzonelist,zonelist);
//  element = strtok (tpzonelist,",");
  i=0;
//  while (element != NULL)
  char tmpbuff[200];
  char buff[6000];
  buff[0]=0;
  for (i=0;i<31;i++)
  {
//    printf ("%s\n",element);
    if ( strcmp(pmaxSystem.sensor[i].id,"")!=0 ) { 
    sprintf(tmpbuff,"{\"zone\":\"%s\",\"type\":\"%s\",\"alert\":\"%s\",\"armed\":\"%s\",\"tamper\":\"%s\",\"low-battery\":\"%s\",\"alarm\":\"%s\"},",
    pmaxSystem.sensor[i].id,
    pmaxSystem.sensor[i].type,
    pmaxSystem.sensor[i].alert,
    pmaxSystem.sensor[i].armed,
    pmaxSystem.sensor[i].tampered,
    pmaxSystem.sensor[i].lowbattery,
    pmaxSystem.sensor[i].alarmed);
    strcat(buff,tmpbuff);
    //element = strtok (NULL, ",");
    //if (element!=NULL)
    
    //i++;
    }
  }
  buff[strlen(buff)-1]=0;
  printf("%s",buff);
  printf("]}"); 
  nbzone=0;
  zonelist[0]=0;

//}  
  
	return 0;  
}