Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
0
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);
}