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); } }
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); }
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; }
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; } }
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; }