Beispiel #1
0
void sensor_cmd(char cmd, uint8_t *args)
{
	//DEBUG
	args[0] -= '0';
	args[1] -= '0';
	args[2] -= '0';
	//DEBUG

	switch (cmd)
	{
	case CMD_IDENTIFY:				handleIdentify(); break;
	case CMD_GET_NO_SENSORS:		handleGetNoOfSensors(); break;
	case CMD_GET_SENSOR:			handleGetSensor(args[0]); break;
	case CMD_GET_NO_MEAS:			handleGetNoOfMeasurements(args[0]); break;
	case CMD_GET_SENSOR_MEAS:		handleGetMeasurement(args[0], args[1]); break;
	case CMD_GET_SENSOR_VALUE:		handleGetValue(args[0], args[1]); break;
	case CMD_SET_SENSOR_RANGE:		handleSetSensorRange(args[0], args[1], args[2]); break;
	case CMD_SET_SENSOR_OFF:		handleSetSensorOff(args[0]); break;
	case CMD_SET_SENSOR_ON:			handleSetSensorOn(args[0]); break;

// ----------------------------------------------------------------------------

	default:
	case CMD_NO_CMD: handleUnknownCommand(cmd); break;
	}

	serial_putc(10);
}
void WebosSurfaceManagerRemoteClient::onIncomingData()
{
	int ret;
	WebosMessageHeader hdr;
	OffscreenNativeWindowBuffer *buffer;
	unsigned int windowId = 0;

	memset(&hdr, 0, sizeof(WebosMessageHeader));

	ret = read(m_socketFd, &hdr, sizeof(WebosMessageHeader));
	if (ret <= 0) {
		g_message("%s: Client closed connection; removing ...", __PRETTY_FUNCTION__);
		m_parent->onClientDisconnected(this);
		return;
	}

	switch (hdr.command) {
	case WEBOS_MESSAGE_TYPE_IDENTIFY:
		ret = read(m_socketFd, &windowId, sizeof(unsigned int));
		if (ret <= 0) {
			g_warning("%s: Failed to read window identifier", __PRETTY_FUNCTION__);
			m_parent->onClientDisconnected(this);
			return;
		}

		m_winId = windowId;
		handleIdentify(windowId);
		break;
	case WEBOS_MESSAGE_TYPE_POST_BUFFER:
		buffer = new OffscreenNativeWindowBuffer();
		buffer->incStrong(0);

		ret = buffer->readFromFd(m_socketFd);
		if (ret < 0) {
			g_warning("%s: Failed to read buffer", __PRETTY_FUNCTION__);
			m_parent->onClientDisconnected(this);
			return;
		}

		handleIncomingBuffer(buffer);
		break;
	default:
		g_warning("%s: unhandled message type %i",
			__PRETTY_FUNCTION__, hdr.command);
		break;
	}
}