Changeset 10639
- Timestamp:
- 03/28/11 09:53:27 (2 years ago)
- Location:
- ossiedev/branches/jgaeddert/0.8.0/components
- Files:
-
- 6 modified
-
include/PacketDecoder.h (modified) (1 diff)
-
include/PacketEncoder.h (modified) (1 diff)
-
src/FlexframeGen.cpp (modified) (1 diff)
-
src/FlexframeSync.cpp (modified) (3 diffs)
-
src/PacketDecoder.cpp (modified) (3 diffs)
-
src/PacketEncoder.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ossiedev/branches/jgaeddert/0.8.0/components/include/PacketDecoder.h
r10052 r10639 92 92 // dsp objects 93 93 packetizer p; ///< packetizer object 94 crc_scheme check; ///< data validity check (e.g. CRC) 94 95 fec_scheme fec_inner; ///< inner FEC scheme 95 96 fec_scheme fec_outer; ///< outer FEC scheme -
ossiedev/branches/jgaeddert/0.8.0/components/include/PacketEncoder.h
r10052 r10639 91 91 // dsp objects 92 92 packetizer p; ///< packetizer object 93 crc_scheme check; ///< data validity check (e.g. CRC) 93 94 fec_scheme fec_inner; ///< inner FEC scheme 94 95 fec_scheme fec_outer; ///< outer FEC scheme -
ossiedev/branches/jgaeddert/0.8.0/components/src/FlexframeGen.cpp
r10077 r10639 62 62 float dt = 0; 63 63 64 interp = interp_crcf_create_r rc(k,m,beta,dt);64 interp = interp_crcf_create_rnyquist(LIQUID_RNYQUIST_RRC,k,m,beta,dt); 65 65 66 66 interp2 = resamp2_crcf_create(37,0,60); -
ossiedev/branches/jgaeddert/0.8.0/components/src/FlexframeSync.cpp
r10453 r10639 37 37 unsigned char * _payload, 38 38 unsigned int _payload_len, 39 int _payload_valid, 39 40 framesyncstats_s _stats, 40 41 void * _userdata); … … 308 309 unsigned char * _payload, 309 310 unsigned int _payload_len, 311 int _payload_valid, 310 312 framesyncstats_s _stats, 311 313 void * _userdata) … … 317 319 printf("callback invoked\n"); 318 320 319 printf(" header crc : %s\n", _header_valid ? "pass" : "FAIL"); 320 } 321 322 if (_header_valid) { 321 printf(" header [%4s] payload [%4s]\n", _header_valid ? "pass" : "FAIL", 322 _payload_valid ? "pass" : "FAIL"); 323 } 324 325 if (_header_valid && _payload_valid) { 323 326 fs_i->PushHeaderData(_header); 324 327 fs_i->PushPayloadData(_payload, _payload_len); -
ossiedev/branches/jgaeddert/0.8.0/components/src/PacketDecoder.cpp
r10052 r10639 24 24 25 25 // create DSP packetizer object 26 check = CRC_16; 26 27 fec_inner = FEC_NONE; 27 fec_outer = FEC_HAMMING 74;28 fec_outer = FEC_HAMMING128; 28 29 dec_msg_len = 0; 29 enc_msg_len = packetizer_ get_packet_length(dec_msg_len,fec_inner,fec_outer);30 p = packetizer_create(dec_msg_len, fec_inner,fec_outer);30 enc_msg_len = packetizer_compute_enc_msg_len(dec_msg_len,check,fec_inner,fec_outer); 31 p = packetizer_create(dec_msg_len,check,fec_inner,fec_outer); 31 32 } 32 33 … … 177 178 enc_msg_len = encodedDataIn_length; 178 179 179 // initial estimate of dec_msg_len 180 float rate_inner = fec_get_rate(fec_inner); 181 float rate_outer = fec_get_rate(fec_outer); 182 dec_msg_len = (unsigned int)(0.8f * rate_inner * rate_outer * enc_msg_len); 183 unsigned int n; 184 do { 185 dec_msg_len++; 186 n = packetizer_get_packet_length(dec_msg_len, 187 fec_inner, 188 fec_outer); 189 } while (n < enc_msg_len); 180 dec_msg_len = packetizer_compute_dec_msg_len(enc_msg_len, 181 check, 182 fec_inner, 183 fec_outer); 184 185 // re-create packetizer object 186 p = packetizer_recreate(p,dec_msg_len,check,fec_inner,fec_outer); 187 188 // validate that encoded message lengths match 189 unsigned int n = packetizer_get_enc_msg_len(p); 190 190 191 191 if (n != enc_msg_len) { 192 //std::cerr << "error: PacketDecoder cannot decode packet with this configuration" << std::endl;193 192 fprintf(stderr,"error: PacketDecoder cannot decode packet with this configuration"); 194 fprintf(stderr," fec_inner : %2u (rate = %12.8f)\n", fec_inner, rate_inner); 195 fprintf(stderr," fec_outer : %2u (rate = %12.8f)\n", fec_outer, rate_outer); 193 fprintf(stderr," (received %u encoded bytes, expected %u)\n", enc_msg_len, n); 194 fprintf(stderr," check : %10s\n", crc_scheme_str[check][0]); 195 fprintf(stderr," fec_inner : %10s\n", fec_scheme_str[fec_inner][0]); 196 fprintf(stderr," fec_outer : %10s\n", fec_scheme_str[fec_outer][0]); 197 fprintf(stderr," dec msg len : %4u\n", dec_msg_len); 196 198 fprintf(stderr," enc msg len : %4u\n", enc_msg_len); 197 199 throw(0); 198 200 } 199 201 200 // destroy and re-create packetizer object201 packetizer_destroy(p);202 p = packetizer_create(dec_msg_len,203 fec_inner,204 fec_outer);205 202 } 206 203 207 204 // create buffers (not efficient to do every time) 205 // TODO : allocate buffers internally, realloc only when necessary 208 206 unsigned char dec_msg[dec_msg_len]; 209 207 unsigned char enc_msg[enc_msg_len]; … … 222 220 decodedDataOut[i] = dec_msg[i]; 223 221 222 // push decoded data packet 224 223 portDecodedDataOut->pushPacket(decodedDataOut); 225 224 } -
ossiedev/branches/jgaeddert/0.8.0/components/src/PacketEncoder.cpp
r10052 r10639 24 24 25 25 // create DSP packetizer object 26 check = CRC_16; 26 27 fec_inner = FEC_NONE; 27 fec_outer = FEC_HAMMING 74;28 fec_outer = FEC_HAMMING128; 28 29 dec_msg_len = 0; 29 enc_msg_len = packetizer_ get_packet_length(dec_msg_len,fec_inner,fec_outer);30 p = packetizer_create(dec_msg_len, fec_inner,fec_outer);30 enc_msg_len = packetizer_compute_enc_msg_len(dec_msg_len,check,fec_inner,fec_outer); 31 p = packetizer_create(dec_msg_len,check,fec_inner,fec_outer); 31 32 } 32 33 … … 179 180 // re-compute message lengths 180 181 dec_msg_len = decodedDataIn_length; 181 enc_msg_len = packetizer_get_packet_length(dec_msg_len, 182 fec_inner, 183 fec_outer); 184 185 // destroy and re-create packetizer object 186 packetizer_destroy(p); 187 p = packetizer_create(dec_msg_len, 188 fec_inner, 189 fec_outer); 182 enc_msg_len = packetizer_compute_enc_msg_len(dec_msg_len, 183 check, 184 fec_inner, 185 fec_outer); 186 187 // re-create packetizer object 188 p = packetizer_recreate(p, 189 dec_msg_len, 190 check, 191 fec_inner, 192 fec_outer); 190 193 } 191 194 192 195 // create buffers (not efficient) 196 // TODO : allocate buffers internally, realloc only when necessary 193 197 unsigned char dec_msg[dec_msg_len]; 194 198 unsigned char enc_msg[enc_msg_len];