telephonyserverplugins/simatktsy/utility/src/ctlv.cpp
branchRCL_3
changeset 20 07a122eea281
parent 19 630d2f34d719
equal deleted inserted replaced
19:630d2f34d719 20:07a122eea281
     1 // Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    19 //
    19 //
    20 
    20 
    21 
    21 
    22 
    22 
    23 //  Include Files  
    23 //  Include Files  
    24 
    24 #include "tflogger.h"				// For logging
    25 #include "OstTraceDefinitions.h"
       
    26 #ifdef OST_TRACE_COMPILER_IN_USE
       
    27 #include "ctlvTraces.h"
       
    28 #endif
       
    29 
       
    30 #include "CTlv.h"				    // Header of this class
    25 #include "CTlv.h"				    // Header of this class
    31 #include "TSatUtility.h"			// Utility methods
    26 #include "TSatUtility.h"			// Utility methods
    32 
    27 
    33 // -----------------------------------------------------------------------------
    28 // -----------------------------------------------------------------------------
    34 // CTlvBase::CTlvBase
    29 // CTlvBase::CTlvBase
    51 EXPORT_C TPtrC8 CTlvBase::Data
    46 EXPORT_C TPtrC8 CTlvBase::Data
    52         ( 
    47         ( 
    53         // None
    48         // None
    54         ) const
    49         ) const
    55     {
    50     {
    56     OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLVBASE_DATA_1, "UTILITY: CTlvBase::Data");
    51     TFLOGSTRING("UTILITY: CTlvBase::Data");
    57     return iData;
    52     return iData;
    58     }
    53     }
    59 
    54 
    60 
    55 
    61 // -----------------------------------------------------------------------------
    56 // -----------------------------------------------------------------------------
    66 EXPORT_C void CTlvBase::SetData
    61 EXPORT_C void CTlvBase::SetData
    67         ( 
    62         ( 
    68         TPtrC8 aData
    63         TPtrC8 aData
    69         )
    64         )
    70     {
    65     {
    71     OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLVBASE_SETDATA_1, "UTILITY: CTlvBase::SetData");
    66     TFLOGSTRING("UTILITY: CTlvBase::SetData");
    72     iData.Set( aData );
    67     iData.Set( aData );
    73     }
    68     }
    74 
    69 
    75 // -----------------------------------------------------------------------------
    70 // -----------------------------------------------------------------------------
    76 // CTlvBase::GetSize
    71 // CTlvBase::GetSize
    80 EXPORT_C TInt CTlvBase::GetSize
    75 EXPORT_C TInt CTlvBase::GetSize
    81         ( 
    76         ( 
    82         // None
    77         // None
    83         ) const
    78         ) const
    84     {
    79     {
    85     OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLVBASE_GETSIZE_1, "UTILITY: CTlvBase::GetSize");
    80     TFLOGSTRING("UTILITY: CTlvBase::GetSize");
    86     return iData.Length();
    81     return iData.Length();
    87     }
    82     }
    88 
    83 
    89 // -----------------------------------------------------------------------------
    84 // -----------------------------------------------------------------------------
    90 // CTlvBase::GetTag
    85 // CTlvBase::GetTag
    94 EXPORT_C TUint8 CTlvBase::GetTag
    89 EXPORT_C TUint8 CTlvBase::GetTag
    95         ( 
    90         ( 
    96         // None
    91         // None
    97         ) const
    92         ) const
    98     {
    93     {
    99     OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLVBASE_GETTAG_1, "UTILITY: CTlvBase::GetTag");
    94     TFLOGSTRING("UTILITY: CTlvBase::GetTag");
   100     return TUint8(iData[0] & KTagValueMask);
    95     return TUint8(iData[0] & KTagValueMask);
   101     }
    96     }
   102 
    97 
   103 // -----------------------------------------------------------------------------
    98 // -----------------------------------------------------------------------------
   104 // CTlvBase::GetComprehensionRequired
    99 // CTlvBase::GetComprehensionRequired
   108 EXPORT_C TBool CTlvBase::GetComprehensionRequired
   103 EXPORT_C TBool CTlvBase::GetComprehensionRequired
   109         ( 
   104         ( 
   110         // None
   105         // None
   111         ) const
   106         ) const
   112     {
   107     {
   113     OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLVBASE_GETCOMPREHENSIONREQUIRED_1, "UTILITY: CTlvBase::GetComprehensionRequired");
   108     TFLOGSTRING("UTILITY: CTlvBase::GetComprehensionRequired");
   114     return (iData[0] & KTagCrMask) ? ETrue : EFalse;
   109     return (iData[0] & KTagCrMask) ? ETrue : EFalse;
   115     }
   110     }
   116 
   111 
   117 // -----------------------------------------------------------------------------
   112 // -----------------------------------------------------------------------------
   118 // CTlvBase::GetLength
   113 // CTlvBase::GetLength
   122 EXPORT_C TUint8 CTlvBase::GetLength
   117 EXPORT_C TUint8 CTlvBase::GetLength
   123         ( 
   118         ( 
   124         // None
   119         // None
   125         ) const
   120         ) const
   126     {
   121     {
   127     OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLVBASE_GETLENGTH_1, "UTILITY: CTlvBase::GetLength");
   122     TFLOGSTRING("UTILITY: CTlvBase::GetLength");
   128     return (KTwoByteLengthCoding == iData[KTlvLengthStartPosition]) ?
   123     return (KTwoByteLengthCoding == iData[KTlvLengthStartPosition]) ?
   129         iData[KTlvLengthStartPosition + 1] :
   124         iData[KTlvLengthStartPosition + 1] :
   130         iData[KTlvLengthStartPosition];
   125         iData[KTlvLengthStartPosition];
   131     }
   126     }
   132 
   127 
   138 EXPORT_C TPtrC8 CTlvBase::GetValue
   133 EXPORT_C TPtrC8 CTlvBase::GetValue
   139         ( 
   134         ( 
   140         // None
   135         // None
   141         ) const
   136         ) const
   142     {
   137     {
   143     OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLVBASE_GETVALUE_1, "UTILITY: CTlvBase::GetValue");
   138     TFLOGSTRING("UTILITY: CTlvBase::GetValue");
   144     TInt offset = (KTwoByteLengthCoding == iData[1]) ? 1 : 0;
   139     TInt offset = (KTwoByteLengthCoding == iData[1]) ? 1 : 0;
   145     return iData.Mid(2+offset, iData[1+offset]);
   140     return iData.Mid(2+offset, iData[1+offset]);
   146     }
   141     }
   147 
   142 
   148 // -----------------------------------------------------------------------------
   143 // -----------------------------------------------------------------------------
   166 EXPORT_C TUint8 CTlv::GetShortInfo
   161 EXPORT_C TUint8 CTlv::GetShortInfo
   167         (
   162         (
   168         TTlvSpesificDataType aType // Info spesific data type
   163         TTlvSpesificDataType aType // Info spesific data type
   169         )    
   164         )    
   170     {
   165     {
   171     OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLV_GETSHORTINFO_1, "UTILITY: CTlv::GetShortInfo, type: %d", aType);
   166     TFLOGSTRING2("UTILITY: CTlv::GetShortInfo, type: %d", aType);
   172     // Information is generally at index 2.
   167     // Information is generally at index 2.
   173     TInt ind ( KTlvDataAreaStartPosition ); 
   168     TInt ind ( KTlvDataAreaStartPosition ); 
   174     TUint8 offset( 0 );
   169     TUint8 offset( 0 );
   175 
   170 
   176     // First determine if the length of the TLV is coded with 1 or 2 bytes to
   171     // First determine if the length of the TLV is coded with 1 or 2 bytes to
   270             ind = KTlvDataAreaStartPosition + offset + GetLength() - 2 + 2;
   265             ind = KTlvDataAreaStartPosition + offset + GetLength() - 2 + 2;
   271             break;	
   266             break;	
   272             } 
   267             } 
   273         default:
   268         default:
   274             {
   269             {
   275             OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLV_GETSHORTINFO_2, "UTILITY: CTlv::GetShortInfo, Type unknown");
   270             TFLOGSTRING("UTILITY: CTlv::GetShortInfo, Type unknown");
   276             break;	
   271             break;	
   277             }                                                                                                                                                              	
   272             }                                                                                                                                                              	
   278         }
   273         }
   279 
   274 
   280     return iData[ind];
   275     return iData[ind];
   288 EXPORT_C  TPtrC8 CTlv::GetData
   283 EXPORT_C  TPtrC8 CTlv::GetData
   289         (
   284         (
   290         TTlvSpesificDataType aType //Info spesific data type
   285         TTlvSpesificDataType aType //Info spesific data type
   291         )    
   286         )    
   292     {
   287     {
   293     OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLV_GETDATA_1, "UTILITY: CTlv::GetData, Data length: %d", iData.Length());
   288     TFLOGSTRING2("UTILITY: CTlv::GetData, Data length: %d", iData.Length());
   294     // Information is generally at index 2.
   289     // Information is generally at index 2.
   295     TInt ind ( 2 ); 
   290     TInt ind ( 2 ); 
   296     TUint8 offset( 0 );
   291     TUint8 offset( 0 );
   297     TInt length( 1 );
   292     TInt length( 1 );
   298 
   293 
   382                 ind = KTlvDataAreaStartPosition + offset + 5;
   377                 ind = KTlvDataAreaStartPosition + offset + 5;
   383                 length = dataLength;
   378                 length = dataLength;
   384                 }
   379                 }
   385             else
   380             else
   386                 {
   381                 {
   387                 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLV_GETDATA_2, "UTILITY: CTlv::GetData, Data length 0");
   382                 TFLOGSTRING("UTILITY: CTlv::GetData, Data length 0");
   388                 return 0;
   383                 return 0;
   389                 }            
   384                 }            
   390             break;	
   385             break;	
   391             }
   386             }
   392         default:
   387         default:
   393             {
   388             {
   394             OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLV_GETDATA_3, "UTILITY: CTlv::GetData, Type unknown");
   389             TFLOGSTRING("UTILITY: CTlv::GetData, Type unknown");
   395             break;	
   390             break;	
   396             } 
   391             } 
   397         }
   392         }
   398 
   393 
   399     OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLV_GETDATA_4, "UTILITY: CTlv::GetData, length: %d, ind: %d", length, ind);
   394     TFLOGSTRING3("UTILITY: CTlv::GetData, length: %d, ind: %d", 
       
   395         length, ind);
   400     return iData.Mid( ind, length );
   396     return iData.Mid( ind, length );
   401     }
   397     }
   402 
   398 
   403 // -----------------------------------------------------------------------------
   399 // -----------------------------------------------------------------------------
   404 // CTlv::GetLongInfo
   400 // CTlv::GetLongInfo
   408 EXPORT_C  TUint16 CTlv::GetLongInfo
   404 EXPORT_C  TUint16 CTlv::GetLongInfo
   409         ( 
   405         ( 
   410         TTlvSpesificDataType aType // Info spesific data type
   406         TTlvSpesificDataType aType // Info spesific data type
   411         )
   407         )
   412     {
   408     {
   413     OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLV_GETLONGINFO_1, "UTILITY: CTlv::GetLongInfo, type: %d", aType);
   409     TFLOGSTRING2("UTILITY: CTlv::GetLongInfo, type: %d", aType);
   414     TUint16 ret( 0x0000 );
   410     TUint16 ret( 0x0000 );
   415 
   411 
   416     switch( aType )
   412     switch( aType )
   417         { 
   413         { 
   418         case ETLV_LocationAreaCode:                                                                                                                                                                                                                            
   414         case ETLV_LocationAreaCode:                                                                                                                                                                                                                            
   452                 KTlvDataAreaStartPosition + 1 );
   448                 KTlvDataAreaStartPosition + 1 );
   453             break;	
   449             break;	
   454             }   
   450             }   
   455         default:
   451         default:
   456             {
   452             {
   457             OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CTLV_GETLONGINFO_2, "UTILITY: CTlv::GetLongInfo, Type unknown");
   453             TFLOGSTRING("UTILITY: CTlv::GetLongInfo, Type unknown");
   458             break;
   454             break;
   459             }
   455             }
   460         }
   456         }
   461 
   457 
   462     return ret;
   458     return ret;