<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>ZVBI Library: Error correction functions</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> </div> <div class="contents"> <h1>Error correction functions<br> <small> [<a class="el" href="group__Raw.html">Raw VBI</a>]</small> </h1>Helper functions to decode sliced VBI data. <a href="#_details">More...</a> <p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#gac266ab17d0044d1adbcf7f113329290">vbi_par</a> (uint8_t *p, unsigned int n)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#gfa73f04f095b154f3237f7d4e98f18b7">vbi_unpar</a> (uint8_t *p, unsigned int n)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#g997d16edd4deed54dfca6943f5b7b885">vbi_ham24p</a> (uint8_t *p, unsigned int c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#g5d764f42094e48760cf3e754776ac3fd">vbi_unham24p</a> (const uint8_t *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#gb59fd75a6908d9b03166c9be36d2f4ce">vbi_rev8</a> (unsigned int c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#g0b14a7e987786a8746987b7dcb0c955f">vbi_rev16</a> (unsigned int c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#gf0a2792d50100576982c44cd64fa7fd4">vbi_rev16p</a> (const uint8_t *p)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#gf85ae2c13320d8dd664863ebff8165ff">vbi_par8</a> (unsigned int c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#g49d1cf6af476a4fa10c0312f373ac1a0">vbi_unpar8</a> (unsigned int c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#g34d1be5fbcad2db35b7003f8d5e2b905">vbi_ham8</a> (unsigned int c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#g91fcc67515be04557c53c3e076159507">vbi_unham8</a> (unsigned int c)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">_vbi_inline int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Error.html#gb62090ec932d135dea3dde39e4e4cc55">vbi_unham16p</a> (const uint8_t *p)</td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> Helper functions to decode sliced VBI data. <hr><h2>Function Documentation</h2> <a class="anchor" name="gac266ab17d0044d1adbcf7f113329290"></a><!-- doxytag: member="hamm.c::vbi_par" ref="gac266ab17d0044d1adbcf7f113329290" args="(uint8_t *p, unsigned int n)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void vbi_par </td> <td>(</td> <td class="paramtype">uint8_t * </td> <td class="paramname"> <em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>n</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>Array of unsigned bytes. </td></tr> <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>Size of array.</td></tr> </table> </dl> Of each byte of the array, changes the most significant bit to make the number of set bits odd.<p> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="gfa73f04f095b154f3237f7d4e98f18b7"></a><!-- doxytag: member="hamm.c::vbi_unpar" ref="gfa73f04f095b154f3237f7d4e98f18b7" args="(uint8_t *p, unsigned int n)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int vbi_unpar </td> <td>(</td> <td class="paramtype">uint8_t * </td> <td class="paramname"> <em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>n</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>Array of unsigned bytes. </td></tr> <tr><td valign="top"></td><td valign="top"><em>n</em> </td><td>Size of array.</td></tr> </table> </dl> Tests the parity and clears the most significant bit of each byte of the array.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>A negative value if any byte of the array had even parity (sum of bits modulo 2 is 0).</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="g997d16edd4deed54dfca6943f5b7b885"></a><!-- doxytag: member="hamm.c::vbi_ham24p" ref="g997d16edd4deed54dfca6943f5b7b885" args="(uint8_t *p, unsigned int c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void vbi_ham24p </td> <td>(</td> <td class="paramtype">uint8_t * </td> <td class="paramname"> <em>p</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>A Hamming 24/18 protected 24 bit word will be stored here, last significant byte first, lsb first transmitted. </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>Integer between 0 ... 1 << 18 - 1.</td></tr> </table> </dl> Encodes an 18 bit word with Hamming 24/18 protection as specified in ETS 300 706, Section 8.3.<p> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.27 </dd></dl> </div> </div><p> <a class="anchor" name="g5d764f42094e48760cf3e754776ac3fd"></a><!-- doxytag: member="hamm.c::vbi_unham24p" ref="g5d764f42094e48760cf3e754776ac3fd" args="(const uint8_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int vbi_unham24p </td> <td>(</td> <td class="paramtype">const uint8_t * </td> <td class="paramname"> <em>p</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>Pointer to a Hamming 24/18 protected 24 bit word, last significant byte first, lsb first transmitted.</td></tr> </table> </dl> Decodes a Hamming 24/18 protected byte triplet as specified in ETS 300 706, Section 8.3.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Triplet data bits D18 [msb] ... D1 [lsb] or a negative value if the triplet contained incorrectable errors.</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="gb59fd75a6908d9b03166c9be36d2f4ce"></a><!-- doxytag: member="hamm.h::vbi_rev8" ref="gb59fd75a6908d9b03166c9be36d2f4ce" args="(unsigned int c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_vbi_inline unsigned int vbi_rev8 </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>c</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>Unsigned byte.</td></tr> </table> </dl> Reverses the bits of the argument.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Data bits 0 [msb] ... 7 [lsb].</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="g0b14a7e987786a8746987b7dcb0c955f"></a><!-- doxytag: member="hamm.h::vbi_rev16" ref="g0b14a7e987786a8746987b7dcb0c955f" args="(unsigned int c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_vbi_inline unsigned int vbi_rev16 </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>c</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>Unsigned 16 bit word.</td></tr> </table> </dl> Reverses (or "reflects") the bits of the argument.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Data bits 0 [msb] ... 15 [lsb].</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="gf0a2792d50100576982c44cd64fa7fd4"></a><!-- doxytag: member="hamm.h::vbi_rev16p" ref="gf0a2792d50100576982c44cd64fa7fd4" args="(const uint8_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_vbi_inline unsigned int vbi_rev16p </td> <td>(</td> <td class="paramtype">const uint8_t * </td> <td class="paramname"> <em>p</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>Pointer to a 16 bit word, last significant byte first.</td></tr> </table> </dl> Reverses (or "reflects") the bits of the argument.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Data bits 0 [msb] ... 15 [lsb].</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="gf85ae2c13320d8dd664863ebff8165ff"></a><!-- doxytag: member="hamm.h::vbi_par8" ref="gf85ae2c13320d8dd664863ebff8165ff" args="(unsigned int c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_vbi_inline unsigned int vbi_par8 </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>c</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>Unsigned byte.</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Changes the most significant bit of the byte to make the number of set bits odd.</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="g49d1cf6af476a4fa10c0312f373ac1a0"></a><!-- doxytag: member="hamm.h::vbi_unpar8" ref="g49d1cf6af476a4fa10c0312f373ac1a0" args="(unsigned int c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_vbi_inline int vbi_unpar8 </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>c</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>Unsigned byte.</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>If the byte has odd parity (sum of bits modulo 2 is 1) the byte AND 127, otherwise a negative value.</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="g34d1be5fbcad2db35b7003f8d5e2b905"></a><!-- doxytag: member="hamm.h::vbi_ham8" ref="g34d1be5fbcad2db35b7003f8d5e2b905" args="(unsigned int c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_vbi_inline unsigned int vbi_ham8 </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>c</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>Integer between 0 ... 15.</td></tr> </table> </dl> Encodes a nibble with Hamming 8/4 protection as specified in EN 300 706, Section 8.2.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Hamming encoded unsigned byte, lsb first transmitted.</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="g91fcc67515be04557c53c3e076159507"></a><!-- doxytag: member="hamm.h::vbi_unham8" ref="g91fcc67515be04557c53c3e076159507" args="(unsigned int c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_vbi_inline int vbi_unham8 </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"> <em>c</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>Hamming 8/4 protected byte, lsb first transmitted.</td></tr> </table> </dl> Decodes a Hamming 8/4 protected byte as specified in EN 300 706, Section 8.2.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Data bits (D4 [msb] ... D1 [lsb]) or a negative value if the byte contained incorrectable errors.</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> <a class="anchor" name="gb62090ec932d135dea3dde39e4e4cc55"></a><!-- doxytag: member="hamm.h::vbi_unham16p" ref="gb62090ec932d135dea3dde39e4e4cc55" args="(const uint8_t *p)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">_vbi_inline int vbi_unham16p </td> <td>(</td> <td class="paramtype">const uint8_t * </td> <td class="paramname"> <em>p</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>Pointer to a Hamming 8/4 protected 16 bit word, last significant byte first, lsb first transmitted.</td></tr> </table> </dl> Decodes a Hamming 8/4 protected byte pair as specified in EN 300 706, Section 8.2.<p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>Data bits D4 [msb] ... D1 of first byte and D4 ... D1 [lsb] of second byte, or a negative value if any of the bytes contained incorrectable errors.</dd></dl> <dl class="since" compact><dt><b>Since:</b></dt><dd>0.2.12 </dd></dl> </div> </div><p> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Wed May 27 04:47:58 2009 for ZVBI Library by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> </body> </html>