void sendDevList(xPL_MessagePtr msg) { int deviceCount = 0, i; char deviceList[128]; xPL_MessagePtr message = NULL; message = xPL_createBroadcastMessage(telldusService, xPL_MESSAGE_STATUS); xPL_setSchema(message, "lighting", "devlist"); xPL_setMessageNamedValue(message, "network", xPL_getMessageNamedValue(msg, "network")); if (xPL_strcmpIgnoreCase(xPL_getMessageNamedValue(msg, "network"), "1") == 0) { xPL_setMessageNamedValue(message, "status", "ok"); deviceCount = tdGetNumberOfDevices(); for( i = 0; i < deviceCount; ++i ) { if (i == 0) { /* First */ strcpy(deviceList, xPL_intToStr(tdGetDeviceId(i))); } else { strcat(deviceList, ","); strcat(deviceList, xPL_intToStr(tdGetDeviceId(i))); } } xPL_setMessageNamedValue(message, "device-count", xPL_intToStr(deviceCount) ); xPL_setMessageNamedValue(message, "device", deviceList ); } else { xPL_setMessageNamedValue(message, "status", "not-found"); } xPL_sendMessage(message); xPL_releaseMessage(message); }
static xPL_MessagePtr createHeartbeatMessage(xPL_ServicePtr theService, HeartbeatType heartbeatType) { xPL_MessagePtr theHeartbeat; /* Create the Heartbeat message */ theHeartbeat = xPL_createBroadcastMessage(theService, xPL_MESSAGE_STATUS); /* Configure the heartbeat */ switch (heartbeatType) { case HBEAT_NORMAL: xPL_setSchemaClass(theHeartbeat, "hbeat"); xPL_setSchemaType(theHeartbeat, "app"); xPL_addMessageNamedValue(theHeartbeat, "interval", xPL_intToStr(theService->heartbeatInterval / 60)); break; case HBEAT_NORMAL_END: xPL_setSchemaClass(theHeartbeat, "hbeat"); xPL_setSchemaType(theHeartbeat, "end"); xPL_addMessageNamedValue(theHeartbeat, "interval", xPL_intToStr(theService->heartbeatInterval / 60)); break; case HBEAT_CONFIG: xPL_setSchemaClass(theHeartbeat, "config"); xPL_setSchemaType(theHeartbeat, "app"); xPL_addMessageNamedValue(theHeartbeat, "interval", xPL_intToStr(CONFIG_HEARTBEAT_INTERVAL / 60)); break; case HBEAT_CONFIG_END: xPL_setSchemaClass(theHeartbeat, "config"); xPL_setSchemaType(theHeartbeat, "end"); xPL_addMessageNamedValue(theHeartbeat, "interval", xPL_intToStr(CONFIG_HEARTBEAT_INTERVAL / 60)); break; default: return NULL; } /* Add standard heartbeat data */ xPL_addMessageNamedValue(theHeartbeat, "port", xPL_intToStr(xPL_getPort())); xPL_addMessageNamedValue(theHeartbeat, "remote-ip", xPL_getListenerIPAddr()); if (theService->serviceVersion) { xPL_addMessageNamedValue(theHeartbeat, "version", theService->serviceVersion); } return theHeartbeat; }
void sendNetInfo(xPL_MessagePtr msg) { xPL_MessagePtr message = NULL; message = xPL_createBroadcastMessage(telldusService, xPL_MESSAGE_STATUS); xPL_setSchema(message, "lighting", "netinfo"); xPL_setMessageNamedValue(message, "network", xPL_getMessageNamedValue(msg, "network")); if (xPL_strcmpIgnoreCase(xPL_getMessageNamedValue(msg, "network"), "1") == 0) { xPL_setMessageNamedValue(message, "status", "ok"); xPL_setMessageNamedValue(message, "name", hostname ); xPL_setMessageNamedValue(message, "device-count", xPL_intToStr(tdGetNumberOfDevices()) ); xPL_setMessageNamedValue(message, "scene-count", "0" ); } else { xPL_setMessageNamedValue(message, "status", "not-found"); } xPL_sendMessage(message); xPL_releaseMessage(message); }