Changeset 10689

Show
Ignore:
Timestamp:
04/15/11 17:03:53 (4 years ago)
Author:
jgaeddert
Message:

FlexframeGen?: enabling forward-error correction in properties

Location:
ossiedev/branches/jgaeddert/0.8.0
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • ossiedev/branches/jgaeddert/0.8.0/components/src/FlexframeGen.cpp

    r10675 r10689  
    201201    std::cout << "props length : " << props.length() << std::endl; 
    202202 
    203     unsigned int ms = fgprops.mod_scheme; 
    204     unsigned int bps = fgprops.mod_bps; 
     203    unsigned int ms         = fgprops.mod_scheme; 
     204    unsigned int bps        = fgprops.mod_bps; 
     205    unsigned int fec0       = fgprops.fec0; 
     206    unsigned int fec1       = fgprops.fec1; 
     207    unsigned int check      = fgprops.check; 
     208    unsigned int rampup_len = fgprops.rampup_len; 
     209    unsigned int rampdn_len = fgprops.rampdn_len; 
     210    unsigned int phasing_len= fgprops.phasing_len; 
    205211 
    206212    for ( unsigned int i = 0; i <props.length(); i++) { 
     
    265271            } 
    266272 
    267         } else if (strcmp(props[i].id, "DCE:d1ff6dee-6d83-11df-a93b-001aa089d644") == 0) { 
    268             // mod_depth 
    269             //CORBA::Short simple_temp; 
    270             //props[i].value >>= simple_temp; 
    271  
    272             std::cerr << "warning: mod_depth property ignored" << std::endl; 
    273273        } else if (strcmp(props[i].id, "DCE:1ca10d80-6d84-11df-b66a-001aa089d644") == 0) { 
    274274            // phasing_length 
    275275            CORBA::Short simple_temp; 
    276276            props[i].value >>= simple_temp; 
    277             std::cerr << "warning: phasing_length property ignored" << std::endl; 
     277            phasing_len = simple_temp; 
    278278        } else if (strcmp(props[i].id, "DCE:29b6bcc2-6d84-11df-bfd7-001aa089d644") == 0) { 
    279279            // ramp_length 
    280280            CORBA::Short simple_temp; 
    281281            props[i].value >>= simple_temp; 
    282             std::cerr << "warning: ramp_length property ignored" << std::endl; 
     282            rampup_len = simple_temp; 
     283            rampdn_len = simple_temp; 
     284        } else if (strcmp(props[i].id, "DCE:dcc656f6-67e1-4f15-b919-7a9e6c181c05") == 0) { 
     285            // fec0 (inner coding scheme) 
     286 
     287            const char * prop_str; 
     288            props[i].value >>= prop_str; 
     289 
     290            // convert string to FEC scheme 
     291            fec0 = liquid_getopt_str2fec(prop_str); 
     292            if (fec0 == LIQUID_FEC_UNKNOWN) { 
     293                std::cerr << "error: FlexframeGen::configure(), invalid FEC scheme: '" << prop_str << "'" << std::endl; 
     294                throw (0); 
     295            } 
     296        } else if (strcmp(props[i].id, "DCE:8d65b6d8-df33-43c5-9e4e-238eca7c4424") == 0) { 
     297            // fec1 (outer coding scheme) 
     298 
     299            const char * prop_str; 
     300            props[i].value >>= prop_str; 
     301 
     302            // convert string to FEC scheme 
     303            fec1 = liquid_getopt_str2fec(prop_str); 
     304            if (fec1 == LIQUID_FEC_UNKNOWN) { 
     305                std::cerr << "error: FlexframeGen::configure(), invalid FEC scheme: '" << prop_str << "'" << std::endl; 
     306                throw (0); 
     307            } 
     308        } else if (strcmp(props[i].id, "DCE:6c05c229-da43-4f14-9865-d2f9bcb51013") == 0) { 
     309            // check (data validity check: crc/checksum) 
     310 
     311            const char * prop_str; 
     312            props[i].value >>= prop_str; 
     313 
     314            // convert string to CRC scheme 
     315            check = liquid_getopt_str2crc(prop_str); 
     316            if (check == LIQUID_CRC_UNKNOWN) { 
     317                std::cerr << "error: FlexframeGen::configure(), invalid CRC scheme: '" << prop_str << "'" << std::endl; 
     318                throw (0); 
     319            } 
    283320        } else { 
    284321            std::cerr << "error: unknown property" << std::endl; 
     
    288325    } 
    289326 
    290     // re-configure frame generator 
    291     fgprops.mod_scheme = ms; 
    292     fgprops.mod_bps    = bps; 
    293     flexframegen_setprops(fg,&fgprops); 
     327    // set frame generator properties (NOTE: actual frame generator object 
     328    // will be reconfigured on next frame) 
     329    fgprops.mod_scheme  = ms; 
     330    fgprops.mod_bps     = bps; 
     331    fgprops.fec0        = fec0; 
     332    fgprops.fec1        = fec1; 
     333    fgprops.check       = check; 
     334    fgprops.rampup_len  = rampup_len; 
     335    fgprops.rampdn_len  = rampdn_len; 
     336    fgprops.phasing_len = phasing_len; 
    294337} 
    295338 
  • ossiedev/branches/jgaeddert/0.8.0/components/src/FlexframeSync.cpp

    r10682 r10689  
    213213        if (strcmp(props[i].id, "DCE:4be797b4-6d87-11df-a193-001aa089d644") == 0) { 
    214214            // verbose 
    215             props[i].value >>= verbose; 
     215            CORBA::Boolean simple_tmp; 
     216            props[i].value >>= simple_tmp; 
     217            verbose = simple_tmp; 
    216218        } else if (strcmp(props[i].id, "DCE:c6e38c1a-5273-4edc-9be9-d12a7e84fe0e") == 0) { 
    217219            // squelch_enabled 
  • ossiedev/branches/jgaeddert/0.8.0/components/xml/FlexframeGen.prf.xml

    r10077 r10689  
    55<properties> 
    66    <description>These are the properties to configure the device manager</description>  
     7 
     8    <!--output verbosity flag: 0 (quiet), 1 (verbose) --> 
    79    <simple id="DCE:5b852bf4-6d83-11df-80dc-001aa089d644" mode="readwrite" name="verbose" type="boolean"> 
    810        <value>0</value>  
     
    1012        <kind kindtype="configure"/> 
    1113    </simple> 
     14 
     15    <!-- 
     16    modulation scheme for encoding the frame 
     17      * bpsk (specific binary phase-shift keying) 
     18      * qpsk (specific quadrature phase-shift keying) 
     19      * psk2, psk4, psk8, ... psk256 (phase-shift keying) 
     20      * dpsk2, dpsk4, dpsk8, ... dpsk256 (differential phase-shift keying) 
     21      * qam4, qam8, qam16, ... qam256 (quadrature amplitude modulation) 
     22      * apsk4, apsk8, apsk16, ... apsk128 (amplitude/phase-shift keying) 
     23      * ask2, ask4, ask8, ... ask256 (amplitude-shift keying) 
     24      * arb16opt (arbitrary/optimal 16-QAM) 
     25      * arb64vt (arbitrary/Virginia Tech logo) 
     26    --> 
    1227    <simple id="DCE:c1612e14-6d83-11df-8500-001aa089d644" mode="readwrite" name="mod_scheme" type="string"> 
    1328        <value>qpsk</value>  
     
    1530        <kind kindtype="configure"/> 
    1631    </simple> 
    17     <simple id="DCE:d1ff6dee-6d83-11df-a93b-001aa089d644" mode="readwrite" name="mod_depth" type="short"> 
    18         <value>2</value>  
    19         <description>[NOTE: this property is ignored] modulation depth (1,...,8)</description>  
     32 
     33    <!-- 
     34    Available forward error-correction codes 
     35    Note that only the Hamming and repeat codes are available by default. The 
     36    convolutional and Reed-Solomon codes are available only if libfec is installed 
     37    (see http://www.ka9q.net/code/fec/). Details about installation can be found 
     38    by reading the liquid-dsp documentation (see the source code or 
     39    http://ganymede.ece.vt.edu). 
     40        [none]      none 
     41        [r3]        repeat(3) 
     42        [r5]        repeat(5) 
     43        [h74]       Hamming(7,4) 
     44        [h84]       Hamming(8,4) 
     45        [h128]      Hamming(12,8) 
     46        [v27]       convolutional r1/2 K=7 
     47        [v29]       convolutional r1/2 K=9 
     48        [v39]       convolutional r1/3 K=9 
     49        [v615]      convolutional r1/6 K=15 
     50        [v27p23]    convolutional r2/3 K=7 (punctured) 
     51        [v27p34]    convolutional r3/4 K=7 (punctured) 
     52        [v27p45]    convolutional r4/5 K=7 (punctured) 
     53        [v27p56]    convolutional r5/6 K=7 (punctured) 
     54        [v27p67]    convolutional r6/7 K=7 (punctured) 
     55        [v27p78]    convolutional r7/8 K=7 (punctured) 
     56        [v29p23]    convolutional r2/3 K=9 (punctured) 
     57        [v29p34]    convolutional r3/4 K=9 (punctured) 
     58        [v29p45]    convolutional r4/5 K=9 (punctured) 
     59        [v29p56]    convolutional r5/6 K=9 (punctured) 
     60        [v29p67]    convolutional r6/7 K=9 (punctured) 
     61        [v29p78]    convolutional r7/8 K=9 (punctured) 
     62        [rs8]       Reed-Solomon, 223/255 
     63    --> 
     64    <simple id="DCE:dcc656f6-67e1-4f15-b919-7a9e6c181c05" mode="readwrite" name="fec_inner" type="string"> 
     65        <value>none</value>  
     66        <description>Inner forward error-correction code (none, r3, r5, h74, h84, h128, [v27, v29, v39, v615,...])</description>  
    2067        <kind kindtype="configure"/> 
    2168    </simple> 
     69 
     70    <simple id="DCE:8d65b6d8-df33-43c5-9e4e-238eca7c4424" mode="readwrite" name="fec_outer" type="string"> 
     71        <value>none</value>  
     72        <description>Outer forward error-correction code (none, r3, r5, h74, h84, h128, [v27, v29, v39, v615,...])</description>  
     73        <kind kindtype="configure"/> 
     74    </simple> 
     75 
     76    <!-- 
     77    Available data validity checks 
     78    Tabulated below is a list of the available data validity checks. When no check 
     79    is used ('none') the data will always be returned as 'valid.' The available 
     80    cyclic redundancy checks range from 8 to 32 bits and are considerably stronger 
     81    than the simple 8-bit checksum. 
     82        [none]      none 
     83        [checksum]  checksum (8-bit) 
     84        [crc8]      CRC (8-bit) 
     85        [crc16]     CRC (16-bit) 
     86        [crc24]     CRC (24-bit) 
     87        [crc32]     CRC (32-bit) 
     88    --> 
     89    <simple id="DCE:6c05c229-da43-4f14-9865-d2f9bcb51013" mode="readwrite" name="check" type="string"> 
     90        <value>crc32</value>  
     91        <description>data validity check: crc/checksum (none, checksum, crc8, crc16, crc24, crc32)</description>  
     92        <kind kindtype="configure"/> 
     93    </simple> 
     94 
    2295    <simple id="DCE:1ca10d80-6d84-11df-b66a-001aa089d644" mode="readwrite" name="phasing_length" type="short"> 
    2396        <value>64</value>  
     
    2598        <kind kindtype="configure"/> 
    2699    </simple> 
     100 
    27101    <simple id="DCE:29b6bcc2-6d84-11df-bfd7-001aa089d644" mode="readonly" name="ramp_length" type="short"> 
    28102        <value>16</value>  
  • ossiedev/branches/jgaeddert/0.8.0/components/xml/PacketDecoder.prf.xml

    r10679 r10689  
    55<properties> 
    66    <description>These are the properties to configure the device manager</description>  
     7 
    78    <simple id="DCE:659f6164-1017-11df-baab-001aa089d644" mode="readonly" name="verbose" type="boolean"> 
    89        <value>0</value>  
     
    1011        <kind kindtype="configure"/> 
    1112    </simple> 
     13 
     14    <!-- 
     15    Available forward error-correction codes 
     16    Note that only the Hamming and repeat codes are available by default. The 
     17    convolutional and Reed-Solomon codes are available only if libfec is installed 
     18    (see http://www.ka9q.net/code/fec/). Details about installation can be found 
     19    by reading the liquid-dsp documentation (see the source code or 
     20    http://ganymede.ece.vt.edu). 
     21        [none]      none 
     22        [r3]        repeat(3) 
     23        [r5]        repeat(5) 
     24        [h74]       Hamming(7,4) 
     25        [h84]       Hamming(8,4) 
     26        [h128]      Hamming(12,8) 
     27        [v27]       convolutional r1/2 K=7 
     28        [v29]       convolutional r1/2 K=9 
     29        [v39]       convolutional r1/3 K=9 
     30        [v615]      convolutional r1/6 K=15 
     31        [v27p23]    convolutional r2/3 K=7 (punctured) 
     32        [v27p34]    convolutional r3/4 K=7 (punctured) 
     33        [v27p45]    convolutional r4/5 K=7 (punctured) 
     34        [v27p56]    convolutional r5/6 K=7 (punctured) 
     35        [v27p67]    convolutional r6/7 K=7 (punctured) 
     36        [v27p78]    convolutional r7/8 K=7 (punctured) 
     37        [v29p23]    convolutional r2/3 K=9 (punctured) 
     38        [v29p34]    convolutional r3/4 K=9 (punctured) 
     39        [v29p45]    convolutional r4/5 K=9 (punctured) 
     40        [v29p56]    convolutional r5/6 K=9 (punctured) 
     41        [v29p67]    convolutional r6/7 K=9 (punctured) 
     42        [v29p78]    convolutional r7/8 K=9 (punctured) 
     43        [rs8]       Reed-Solomon, 223/255 
     44    --> 
    1245    <simple id="DCE:6cbcdea4-1017-11df-baab-001aa089d644" mode="readwrite" name="fec_inner" type="string"> 
    1346        <value>none</value>  
     
    1548        <kind kindtype="configure"/> 
    1649    </simple> 
     50 
    1751    <simple id="DCE:71e71fe8-1017-11df-baab-001aa089d644" mode="readwrite" name="fec_outer" type="string"> 
    1852        <value>none</value>  
     
    2054        <kind kindtype="configure"/> 
    2155    </simple> 
     56 
     57    <!-- 
     58    Available data validity checks 
     59    Tabulated below is a list of the available data validity checks. When no check 
     60    is used ('none') the data will always be returned as 'valid.' The available 
     61    cyclic redundancy checks range from 8 to 32 bits and are considerably stronger 
     62    than the simple 8-bit checksum. 
     63        [none]      none 
     64        [checksum]  checksum (8-bit) 
     65        [crc8]      CRC (8-bit) 
     66        [crc16]     CRC (16-bit) 
     67        [crc24]     CRC (24-bit) 
     68        [crc32]     CRC (32-bit) 
     69    --> 
    2270    <simple id="DCE:eea4d0a3-99fe-492d-860a-ca77e5483549" mode="readwrite" name="check" type="string"> 
    2371        <value>crc32</value>  
     
    2573        <kind kindtype="configure"/> 
    2674    </simple> 
     75 
    2776</properties> 
  • ossiedev/branches/jgaeddert/0.8.0/components/xml/PacketEncoder.prf.xml

    r10678 r10689  
    1010        <kind kindtype="configure"/> 
    1111    </simple> 
     12 
     13    <!-- 
     14    Available forward error-correction codes 
     15    Note that only the Hamming and repeat codes are available by default. The 
     16    convolutional and Reed-Solomon codes are available only if libfec is installed 
     17    (see http://www.ka9q.net/code/fec/). Details about installation can be found 
     18    by reading the liquid-dsp documentation (see the source code or 
     19    http://ganymede.ece.vt.edu). 
     20        [none]      none 
     21        [r3]        repeat(3) 
     22        [r5]        repeat(5) 
     23        [h74]       Hamming(7,4) 
     24        [h84]       Hamming(8,4) 
     25        [h128]      Hamming(12,8) 
     26        [v27]       convolutional r1/2 K=7 
     27        [v29]       convolutional r1/2 K=9 
     28        [v39]       convolutional r1/3 K=9 
     29        [v615]      convolutional r1/6 K=15 
     30        [v27p23]    convolutional r2/3 K=7 (punctured) 
     31        [v27p34]    convolutional r3/4 K=7 (punctured) 
     32        [v27p45]    convolutional r4/5 K=7 (punctured) 
     33        [v27p56]    convolutional r5/6 K=7 (punctured) 
     34        [v27p67]    convolutional r6/7 K=7 (punctured) 
     35        [v27p78]    convolutional r7/8 K=7 (punctured) 
     36        [v29p23]    convolutional r2/3 K=9 (punctured) 
     37        [v29p34]    convolutional r3/4 K=9 (punctured) 
     38        [v29p45]    convolutional r4/5 K=9 (punctured) 
     39        [v29p56]    convolutional r5/6 K=9 (punctured) 
     40        [v29p67]    convolutional r6/7 K=9 (punctured) 
     41        [v29p78]    convolutional r7/8 K=9 (punctured) 
     42        [rs8]       Reed-Solomon, 223/255 
     43    --> 
    1244    <simple id="DCE:094770a0-1017-11df-baab-001aa089d644" mode="readwrite" name="fec_inner" type="string"> 
    1345        <value>none</value>  
     
    1547        <kind kindtype="configure"/> 
    1648    </simple> 
     49 
    1750    <simple id="DCE:126dca6c-1017-11df-baab-001aa089d644" mode="readwrite" name="fec_outer" type="string"> 
    1851        <value>none</value>  
     
    2053        <kind kindtype="configure"/> 
    2154    </simple> 
     55 
     56    <!-- 
     57    Available data validity checks 
     58    Tabulated below is a list of the available data validity checks. When no check 
     59    is used ('none') the data will always be returned as 'valid.' The available 
     60    cyclic redundancy checks range from 8 to 32 bits and are considerably stronger 
     61    than the simple 8-bit checksum. 
     62        [none]      none 
     63        [checksum]  checksum (8-bit) 
     64        [crc8]      CRC (8-bit) 
     65        [crc16]     CRC (16-bit) 
     66        [crc24]     CRC (24-bit) 
     67        [crc32]     CRC (32-bit) 
     68    --> 
    2269    <simple id="DCE:c294c02c-1de1-4f98-89ec-836158c4dd25" mode="readwrite" name="check" type="string"> 
    2370        <value>crc32</value>  
     
    2572        <kind kindtype="configure"/> 
    2673    </simple> 
     74 
    2775</properties> 
  • ossiedev/branches/jgaeddert/0.8.0/waveforms/FlexframeLoopback/FlexframeLoopback.sad.xml

    r10688 r10689  
    4343            <componentinstantiation id="DCE:87b39572-749e-11df-8930-001aa089d644"> 
    4444                <componentproperties> 
    45                     <simpleref description="" name="verbose" refid="DCE:5b852bf4-6d83-11df-80dc-001aa089d644" value="1"/> 
    46                     <simpleref description="" name="mod_scheme" refid="DCE:c1612e14-6d83-11df-8500-001aa089d644" value="qpsk"/> 
     45                    <simpleref description="" name="verbose"        refid="DCE:5b852bf4-6d83-11df-80dc-001aa089d644" value="1"/> 
     46                    <simpleref description="" name="mod_scheme"     refid="DCE:c1612e14-6d83-11df-8500-001aa089d644" value="qpsk"/> 
     47                    <simpleref description="" name="fec_inner"      refid="DCE:dcc656f6-67e1-4f15-b919-7a9e6c181c05" value="none"/> 
     48                    <simpleref description="" name="fec_outer"      refid="DCE:8d65b6d8-df33-43c5-9e4e-238eca7c4424" value="none"/> 
     49                    <simpleref description="" name="check"          refid="DCE:6c05c229-da43-4f14-9865-d2f9bcb51013" value="crc32"/> 
    4750                    <simpleref description="" name="phasing_length" refid="DCE:1ca10d80-6d84-11df-b66a-001aa089d644" value="80"/> 
    48                     <simpleref description="" name="ramp_length" refid="DCE:29b6bcc2-6d84-11df-bfd7-001aa089d644" value="32"/> 
     51                    <simpleref description="" name="ramp_length"    refid="DCE:29b6bcc2-6d84-11df-bfd7-001aa089d644" value="32"/> 
    4952                </componentproperties> 
    5053                <usagename>FlexframeGen1</usagename>  
     
    5861            <componentinstantiation id="DCE:085ae52c-749f-11df-98ea-001aa089d644"> 
    5962                <componentproperties> 
    60                     <simpleref description="" name="SNRdB" refid="DCE:47d35f86-749a-11df-8174-001aa089d644" value="23.0"/> 
     63                    <simpleref description="" name="SNRdB" refid="DCE:47d35f86-749a-11df-8174-001aa089d644" value="12.0"/> 
    6164                    <simpleref description="" name="channel_gain" refid="DCE:55ac60c6-749a-11df-b526-001aa089d644" value="1"/> 
    6265                    <simpleref description="" name="CFO" refid="DCE:7113ea14-749a-11df-9663-001aa089d644" value="0"/> 
  • ossiedev/branches/jgaeddert/0.8.0/waveforms/FlexframeTX/FlexframeTX.sad.xml

    r10688 r10689  
    5858            <componentinstantiation id="DCE:5103026e-6dc9-11df-bd25-001aa089d644"> 
    5959                <componentproperties> 
    60                     <simpleref description="" name="verbose" refid="DCE:5b852bf4-6d83-11df-80dc-001aa089d644" value="1"/> 
    61                     <simpleref description="" name="mod_scheme" refid="DCE:c1612e14-6d83-11df-8500-001aa089d644" value="qpsk"/> 
     60                    <simpleref description="" name="verbose"        refid="DCE:5b852bf4-6d83-11df-80dc-001aa089d644" value="1"/> 
     61                    <simpleref description="" name="mod_scheme"     refid="DCE:c1612e14-6d83-11df-8500-001aa089d644" value="qpsk"/> 
     62                    <simpleref description="" name="fec_inner"      refid="DCE:dcc656f6-67e1-4f15-b919-7a9e6c181c05" value="h128"/> 
     63                    <simpleref description="" name="fec_outer"      refid="DCE:8d65b6d8-df33-43c5-9e4e-238eca7c4424" value="none"/> 
     64                    <simpleref description="" name="check"          refid="DCE:6c05c229-da43-4f14-9865-d2f9bcb51013" value="crc32"/> 
    6265                    <simpleref description="" name="phasing_length" refid="DCE:1ca10d80-6d84-11df-b66a-001aa089d644" value="128"/> 
    63                     <simpleref description="" name="ramp_length" refid="DCE:29b6bcc2-6d84-11df-bfd7-001aa089d644" value="32"/> 
     66                    <simpleref description="" name="ramp_length"    refid="DCE:29b6bcc2-6d84-11df-bfd7-001aa089d644" value="32"/> 
    6467                </componentproperties> 
    6568                <usagename>FlexframeGen1</usagename>