History

major pass on cleaning up voxel packets to have flags, sequence numbers, and flight time, add compression menu item

ZappoMan committed 12 years ago

Commit 2ce99371 parent 491512f5 files · +40 −50Browse files

Showing the changes to interface/src/VoxelSystem.cpp (1 of 5 files). Show all

Unified · Split

interface/src/VoxelSystem.cpp+36−47
@@ -595,62 +595,51 @@ int VoxelSystem::parseData(unsigned char* sourceBuffer, int numBytes) { · 594 unmodified lines
595595
596596 unsigned char command = *sourceBuffer;
597597 int numBytesPacketHeader = numBytesForPacketHeader(sourceBuffer);
598− unsigned char* voxelData = sourceBuffer + numBytesPacketHeader;
599−
600598 switch(command) {
601599 case PACKET_TYPE_VOXEL_DATA: {
602600 PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings),
603601 "readBitstreamToTree()");
604− // ask the VoxelTree to read the bitstream into the tree
605− ReadBitstreamToTreeParams args(WANT_COLOR, WANT_EXISTS_BITS, NULL, getDataSourceUUID());
606− lockTree();
607− VoxelPacket packet(VOXEL_PACKET_COMPRESSION_DEFAULT);
608− int compressedSize = numBytes - numBytesPacketHeader;
609− packet.loadFinalizedContent(voxelData, compressedSize);
610− if (Menu::getInstance()->isOptionChecked(MenuOption::ExtraDebugging)) {
611− qDebug("got packet numBytes=%d finalized size %d uncompressed size %d\n",numBytes, compressedSize, packet.getUncompressedSize());
602+
603+ unsigned char* dataAt = sourceBuffer + numBytesPacketHeader;
604+
605+ VOXEL_PACKET_FLAGS flags = (*(VOXEL_PACKET_FLAGS*)(dataAt));
606+ dataAt += sizeof(VOXEL_PACKET_FLAGS);
607+ VOXEL_PACKET_SEQUENCE sequence = (*(VOXEL_PACKET_SEQUENCE*)dataAt);
608+ dataAt += sizeof(VOXEL_PACKET_SEQUENCE);
609+
610+ VOXEL_PACKET_SENT_TIME sentAt = (*(VOXEL_PACKET_SENT_TIME*)dataAt);
611+ dataAt += sizeof(VOXEL_PACKET_SENT_TIME);
612+
613+ unsigned char* voxelData = dataAt;
614+
615+ bool packetIsColored = oneAtBit(flags, PACKET_IS_COLOR_BIT);
616+ bool packetIsCompressed = oneAtBit(flags, PACKET_IS_COMPRESSED_BIT);
617+
618+ VOXEL_PACKET_SENT_TIME arrivedAt = usecTimestampNow();
619+ int flightTime = arrivedAt - sentAt;
620+
621+ int dataBytes = numBytes - VOXEL_PACKET_HEADER_SIZE;
622+ if (true || Menu::getInstance()->isOptionChecked(MenuOption::ExtraDebugging)) {
623+ printf("Got Packet... color:%s compressed:%s sequence: %u flightTime:%d size:%d data:%d\n",
624+ debug::valueOf(packetIsColored), debug::valueOf(packetIsCompressed),
625+ sequence, flightTime, numBytes, dataBytes);
612626 }
613− _tree->readBitstreamToTree(packet.getUncompressedData(), packet.getUncompressedSize(), args);
614− unlockTree();
615− }
616− break;
617− case PACKET_TYPE_VOXEL_DATA_MONOCHROME: {
618− PerformanceWarning warn(Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings),
619− "readBitstreamToTree()");
620− // ask the VoxelTree to read the MONOCHROME bitstream into the tree
621− ReadBitstreamToTreeParams args(NO_COLOR, WANT_EXISTS_BITS, NULL, getDataSourceUUID());
627+
628+ // ask the VoxelTree to read the bitstream into the tree
629+
630+ // need to check for WANT_COLOR vs NO_COLOR
631+ // need to also setup packet properly with enableCompression true/false
632+ ReadBitstreamToTreeParams args(packetIsColored ? WANT_COLOR : NO_COLOR, WANT_EXISTS_BITS, NULL, getDataSourceUUID());
622633 lockTree();
623− VoxelPacket packet(VOXEL_PACKET_COMPRESSION_DEFAULT);
624− int compressedSize = numBytes - numBytesPacketHeader;
625− packet.loadFinalizedContent(voxelData, compressedSize);
626− if (Menu::getInstance()->isOptionChecked(MenuOption::ExtraDebugging)) {
627− qDebug("got packet numBytes=%d finalized size %d uncompressed size %d\n",numBytes, compressedSize, packet.getUncompressedSize());
634+ VoxelPacketData packetData(packetIsCompressed);
635+ packetData.loadFinalizedContent(voxelData, dataBytes);
636+ if (true || Menu::getInstance()->isOptionChecked(MenuOption::ExtraDebugging)) {
637+ qDebug("got packet numBytes=%d finalized size %d uncompressed size %d\n",
638+ numBytes, dataBytes, packetData.getUncompressedSize());
628639 }
629− _tree->readBitstreamToTree(packet.getUncompressedData(), packet.getUncompressedSize(), args);
640+ _tree->readBitstreamToTree(packetData.getUncompressedData(), packetData.getUncompressedSize(), args);
630641 unlockTree();
631642 }
632− break;
633− case PACKET_TYPE_Z_COMMAND:
634−
635− // the Z command is a special command that allows the sender to send high level semantic
636− // requests, like erase all, or add sphere scene, different receivers may handle these
637− // messages differently
638− char* packetData = (char *)sourceBuffer;
639− char* command = &packetData[numBytesPacketHeader]; // start of the command
640− int commandLength = strlen(command); // commands are null terminated strings
641− int totalLength = 1+commandLength+1;
642−
643− qDebug("got Z message len(%d)= %s\n", numBytes, command);
644−
645− while (totalLength <= numBytes) {
646− if (0==strcmp(command,(char*)"erase all")) {
647− qDebug("got Z message == erase all - NOT SUPPORTED ON INTERFACE\n");
648− }
649− if (0==strcmp(command,(char*)"add scene")) {
650− qDebug("got Z message == add scene - NOT SUPPORTED ON INTERFACE\n");
651− }
652− totalLength += commandLength+1;
653− }
654643 break;
655644 }
656645