Changeset 5532
- Timestamp:
- 10/26/07 16:07:17 (6 years ago)
- Location:
- experimental/components/Packetizer/trunk/Packetizer-metadata
- Files:
-
- 3 modified
-
src/PacketizerDSP.cpp (modified) (10 diffs)
-
src/PacketizerDSP.h (modified) (2 diffs)
-
tests/CreateExtract_testsuite.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
experimental/components/Packetizer/trunk/Packetizer-metadata/src/PacketizerDSP.cpp
r5520 r5532 189 189 packet_subheader_length = 21; 190 190 packet_data_length = 400; 191 packet_data_length_trunc = 400; 191 192 packet_data_length_encoded = 400; 192 193 break; … … 196 197 packet_subheader_length = 213; 197 198 packet_data_length = 512; 199 packet_data_length_trunc = 512; 198 200 packet_data_length_encoded = 720; 199 201 fec_inner = RS_4_15_11; … … 221 223 packet_subheader_length = 21; 222 224 packet_data_length = 400; 225 packet_data_length_trunc = 400; 223 226 packet_data_length_encoded = 400; 224 227 break; … … 227 230 packet_subheader_length = 213; 228 231 packet_data_length = 512; 232 packet_data_length_trunc = 512; 229 233 packet_data_length_encoded = 720; 230 234 fec_inner = RS_4_15_11; … … 255 259 unsigned int encoded_packet_length; 256 260 unsigned int nr; 261 262 if (input_length != packet_data_length) { 263 packet_data_length_trunc = input_length; 264 } 265 257 266 EncodePacketData( 258 267 input, … … 414 423 415 424 op_mode = FIND_HEADER; 425 426 // truncate output appropriately 427 num_written = packet_data_length_trunc; 416 428 417 429 if ( success ) { … … 574 586 buf1[7] = (port_id >> 0 ) & 0xFF; 575 587 576 buf1[8] = (packet_data_length >> 0 ) & 0xFF;577 buf1[9] = (packet_data_length >> 8 ) & 0xFF;588 buf1[8] = (packet_data_length_trunc >> 0 ) & 0xFF; 589 buf1[9] = (packet_data_length_trunc >> 8 ) & 0xFF; 578 590 579 591 buf1[10] = 7; … … 840 852 port_id |= buf2[7]; 841 853 842 packet_data_length = 0; 843 packet_data_length |= buf2[8]; 844 packet_data_length |= buf2[9]; 854 packet_data_length_trunc = 0; 855 packet_data_length_trunc |= (buf2[8] << 0); 856 packet_data_length_trunc |= (buf2[9] << 8); 857 858 // packet_data_length_trunk is at maximum packet_data_length 859 packet_data_length_trunc = 860 (packet_data_length_trunc > packet_data_length) ? 861 packet_data_length : packet_data_length_trunc; 845 862 846 863 return true; … … 972 989 unsigned int nw; 973 990 991 // check input 992 if (input_length > packet_data_length) { 993 std::cerr << "WARNING! PacketEncoder::EncodePacketData_PACKET_RS_512() " << std::endl 994 << " => input data length (" << input_length << ") exceeds maximum (512)" << std::endl; 995 return false; 996 } 997 974 998 // 1. pack data into symbols 975 999 // 512 1-bit symbols -> 128 4-bit symbols 976 SigProc::repack_bytes(input, 1, 512, buf2, 4, buf_len, &nw); 1000 SigProc::repack_bytes(input, 1, input_length, buf2, 4, buf_len, &nw); 1001 // pad buffer to be 512 bits long 1002 for (unsigned int i=nw; i<packet_data_length; i++) 1003 buf2[i] = rand() & 0x01; 977 1004 978 1005 // 2. add crc/checksum: 16-bit checksum … … 1007 1034 // 4. unpack data: move 4-bit symbols from buf1 to 1-bit symbols in output 1008 1035 SigProc::repack_bytes(buf1, 4, nw, output, 1, output_length, &num_written); 1009 num_read = 512;1036 num_read = input_length; 1010 1037 1011 1038 return true; -
experimental/components/Packetizer/trunk/Packetizer-metadata/src/PacketizerDSP.h
r5520 r5532 145 145 146 146 // Application layer definitions 147 unsigned long app_id; ///< portidentifier147 unsigned long app_id; ///< application identifier 148 148 149 149 protected: … … 151 151 152 152 bool dynamic_packet_size; 153 unsigned int packet_header_length; 154 unsigned int packet_subheader_length; 155 unsigned int packet_data_length; 156 unsigned int packet_data_length_encoded; 153 unsigned int packet_header_length; ///< num bits in packet header 154 unsigned int packet_subheader_length; ///< num bits in packet subheader 155 unsigned int packet_data_length; ///< num uncoded data bits in packet 156 unsigned int packet_data_length_trunc; ///< num uncoded data bits in packet (truncated) 157 unsigned int packet_data_length_encoded; ///< num total encoded data bits 157 158 158 159 // Physical layer definitions -
experimental/components/Packetizer/trunk/Packetizer-metadata/tests/CreateExtract_testsuite.h
r5519 r5532 151 151 } 152 152 153 // 154 // Test for creating and extracting a truncated packet of type PACKET_RS_512 155 // 156 void test_CreateExtract_PACKET_RS_512_02() { 157 PacketEncoder p; 158 PacketDecoder d; 159 160 // generate truncated input buffer 161 unsigned char input[147]; 162 for (unsigned int i=0; i<147; i++) 163 input[i] = rand() & 0x01; 164 165 // generate packet buffer 166 unsigned char packet[2048]; 167 memset( packet, 0x01, 2048*sizeof(char) ); 168 unsigned int nr; 169 unsigned int nw; 170 171 // generate output buffer 172 unsigned char output[2048]; 173 memset( output, 0xFF, 2048*sizeof(char) ); 174 175 // Initialize properties 176 p.packet_id = 32768; 177 p.src_id = 247; 178 p.dst_id = 129; 179 p.port_id = 189; 180 p.app_id = 10; 181 p.ConfigurePacketType( PACKET_RS_512 ); 182 183 // encode packet data 184 185 p.CreatePacket( input, 147, nr, &packet[0], 2048, nw ); 186 TS_ASSERT_EQUALS( nr, 147 ); 187 TS_ASSERT_EQUALS( nw, 1024 ); 188 189 // extract and decode packet data 190 191 bool packet_extracted; 192 d.packet_id = 0; 193 d.src_id = 0; 194 d.dst_id = 0; 195 d.port_id = 0; 196 d.app_id = 0; 197 packet_extracted = d.ExtractPacket(packet, 2048, nr, output, 2048, nw); 198 199 TS_ASSERT_EQUALS( packet_extracted, true ); 200 TS_ASSERT_EQUALS( d.packet_id, p.packet_id ); 201 TS_ASSERT_EQUALS( d.src_id, p.src_id ); 202 TS_ASSERT_EQUALS( d.dst_id, p.dst_id ); 203 TS_ASSERT_EQUALS( d.port_id, p.port_id ); 204 TS_ASSERT_EQUALS( d.app_id, p.app_id ); 205 TS_ASSERT_EQUALS( nr, 1024 ); 206 TS_ASSERT_EQUALS( nw, 147 ); 207 TS_ASSERT_SAME_DATA( input, output, 147 ); 208 209 } 210 153 211 }; 154 212