- Main Page
- Data Structures
- Files

- File List
- Globals

# TLV.c

Go to the documentation of this file.

    00001 /* ***********************************************************
    00002 * THIS PROGRAM IS PROVIDED "AS IS". TI MAKES NO WARRANTIES OR
    00003 * REPRESENTATIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
    00004 * INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
    00005 * FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
    00006 * COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE.
    00007 * TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET
    00008 * POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY
    00009 * INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE PROGRAM OR
    00010 * YOUR USE OF THE PROGRAM.
    00011 *
    00012 * IN NO EVENT SHALL TI BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
    00013 * CONSEQUENTIAL OR INDIRECT DAMAGES, HOWEVER CAUSED, ON ANY
    00014 * THEORY OF LIABILITY AND WHETHER OR NOT TI HAS BEEN ADVISED
    00015 * OF THE POSSIBILITY OF SUCH DAMAGES, ARISING IN ANY WAY OUT
    00016 * OF THIS AGREEMENT, THE PROGRAM, OR YOUR USE OF THE PROGRAM.
    00017 * EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF
    00018 * REMOVAL OR REINSTALLATION, COMPUTER TIME, LABOR COSTS, LOSS
    00019 * OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF
    00020 * USE OR INTERRUPTION OF BUSINESS. IN NO EVENT WILL TI'S
    00021 * AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF
    00022 * YOUR USE OF THE PROGRAM EXCEED FIVE HUNDRED DOLLARS
    00023 * (U.S.$500).
    00024 *
    00025 * Unless otherwise stated, the Program written and copyrighted
    00026 * by Texas Instruments is distributed as "freeware".  You may,
    00027 * only under TI's copyright in the Program, use and modify the
    00028 * Program without any charge or restriction.  You may
    00029 * distribute to third parties, provided that you transfer a
    00030 * copy of this license to the third party and the third party
    00031 * agrees to these terms by its first use of the Program. You
    00032 * must reproduce the copyright notice and any other legend of
    00033 * ownership on each copy or partial copy, of the Program.
    00034 *
    00035 * You acknowledge and agree that the Program contains
    00036 * copyrighted material, trade secrets and other TI proprietary
    00037 * information and is protected by copyright laws,
    00038 * international copyright treaties, and trade secret laws, as
    00039 * well as other intellectual property laws.  To protect TI's
    00040 * rights in the Program, you agree not to decompile, reverse
    00041 * engineer, disassemble or otherwise translate any object code
    00042 * versions of the Program to a human-readable form.  You agree
    00043 * that in no event will you alter, remove or destroy any
    00044 * copyright notice included in the Program.  TI reserves all
    00045 * rights not specifically granted under this license. Except
    00046 * as specifically provided herein, nothing in this agreement
    00047 * shall be construed as conferring by implication, estoppel,
    00048 * or otherwise, upon you, any license or other right under any
    00049 * TI patents, copyrights or trade secrets.
    00050 *
    00051 * You may not use the Program in non-TI devices.
    00052 //
    00053 //This software has been submitted to export control regulations
    00054 //The ECCN is EAR99
    00055 * ********************************************************* */
    00056 //*****************************************************************************
    00069 // TLV Access Function Definition file
    00070
    00071 #include "TLV_descriptors.h"
    00072
    00073 /* Function Defintion
    00074    Passing parameters:
    00075       tag - The specific/particular tag information (length and data address location) required by the user
    00076       *length - Address of the variable (byte long) where the number of bytes allocated for the particular 'tag' is to be stored
    00077       *data_address - Address of the variable (word long) which is used to access the value info of the the particular 'tag' (in the TLV structure)
    00078
    00079   NOTE: If 'length' and 'data_address' returned = 0, it implies that there was no tag match. This condition can be checked for in the
    00080         main function that calls this Get_TLV_info(..) function and appropriate actions can be taken
    00081 */
    00082
    00083 void Get_TLV_info(unsigned char tag, unsigned char *length, unsigned int *data_address)
    00084 {
    00085   char *TLV_address = (char *)TLV_START;               // TLV Structure Start Address
    00086
    00087
    00088   while((*TLV_address != tag) && (*TLV_address != TLV_TAGEND) && ((unsigned int)TLV_address < TLV_END))
    00089   {
    00090     TLV_address += *(TLV_address+1) + 2;               // add (Current TAG address + LENGTH) + 2
    00091   }
    00092   if (*TLV_address == tag)                             // Check if Tag match happened..
    00093   {
    00094     *length = *(TLV_address+1);                        // Return length = Address + 1
    00095     *data_address = (unsigned int)(TLV_address+2);     // Return address of first data/value info = Address + 2
    00096   }
    00097   else                                                 // If there was no tag match and the end of TLV structure was reached..
    00098   {
    00099     *length = 0;                                       // Return 0 for TAG not found
    00100     data_address = 0;                                  // Return 0 for TAG not found
    00101   }
    00102 }