Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (C) 2014 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 /*=============================================================================
     18 
     19                   Module Name: dmtDataChunk.cc
     20 
     21            General Description: Implementation of DmtDataChunk class.
     22 
     23 =============================================================================*/
     24 
     25 #include "dmt.hpp"
     26 #include "xpl_dm_Manager.h"
     27 #include "dmMemory.h"
     28 
     29 /*=============================================================================
     30 *Function called:   DmtDataChunk
     31 *Parameters :
     32 *Returns:
     33 *Synopsis:          The constructor of DmtDataChunk
     34 *Pre-conditions:
     35 *Post-Conditions:
     36 
     37 =============================================================================*/
     38 DmtDataChunk::DmtDataChunk()
     39 {
     40     chunkBuffer = NULL;
     41     dataSize = 0L;
     42     returnLen = 0L;
     43     maxDataSize =  XPL_DM_GetChunkSize();
     44 }
     45 
     46 /*=============================================================================
     47 *Function called:   DmtDataChunk::attach
     48 *Parameters :
     49 *Returns:
     50 *Synopsis:          Attach chunk buffer
     51 *Pre-conditions:
     52 *Post-Conditions:
     53 
     54 =============================================================================*/
     55 void DmtDataChunk::attach(UINT8    *chunkBuffer, UINT32 dataSize)
     56 {
     57     this->chunkBuffer = chunkBuffer;
     58     this->dataSize = dataSize;
     59     returnLen = 0L;
     60     maxDataSize =  XPL_DM_GetChunkSize();
     61 }
     62 
     63 /*=============================================================================
     64 *Function called:   DmtDataChunk::detach
     65 *Parameters :
     66 *Returns:
     67 *Synopsis:          Detach chunk buffer
     68 *Pre-conditions:
     69 *Post-Conditions:
     70 
     71 =============================================================================*/
     72 UINT8 * DmtDataChunk::detach()
     73 {
     74     UINT8 *pBuffer = this->chunkBuffer;
     75     this->chunkBuffer = NULL;
     76     this->dataSize = 0;
     77     returnLen = 0L;
     78     return pBuffer;
     79 }
     80 
     81 /*=============================================================================
     82 *Function called:   ~DmtDataChunk
     83 *Parameters :
     84 *Returns:
     85 *Synopsis:          The destructor of DmtDataChunk
     86 *Pre-conditions:
     87 *Post-Conditions:
     88 
     89 =============================================================================*/
     90 DmtDataChunk::~DmtDataChunk()
     91 {
     92     if(chunkBuffer != NULL)
     93         DmFreeMem(chunkBuffer);
     94 }
     95 
     96 /*=============================================================================
     97 *Function called:  GetChunkSize
     98 *Parameters :
     99 *Returns:       Return chunk buffer size to acess ESN data
    100 *Synopsis:
    101 *Pre-conditions:
    102 *Post-Conditions:
    103 
    104 =============================================================================*/
    105  UINT32 DmtDataChunk::GetChunkSize()
    106 {
    107      return XPL_DM_GetChunkSize();
    108 }
    109 
    110 /*=============================================================================
    111 *Function called:   GetChunkData
    112 *Parameters :
    113 *            bufp --Pointer to the pointer of  chunk data
    114 *Returns:
    115 *    return SYNCML_DM_SUCCESS if get data successfully
    116 *    return other in case of error
    117 
    118 *Synopsis:
    119 
    120 *Pre-conditions:
    121 *Post-Conditions:
    122 =============================================================================*/
    123  SYNCML_DM_RET_STATUS_T DmtDataChunk::GetChunkData( UINT8 **bufp)
    124  {
    125  *bufp = chunkBuffer;
    126   return SYNCML_DM_SUCCESS;
    127  }
    128 
    129 /*=============================================================================
    130 *Function called:   GetChunkDataSize
    131 *Parameters :
    132 *             dataSize - return data size
    133 *Returns:
    134 *    return SYNCML_DM_SUCCESS if get data size successfully
    135 *    return other in case of error
    136 
    137 *Synopsis:
    138 
    139 *Pre-conditions:
    140 *Post-Conditions:
    141 =============================================================================*/
    142  SYNCML_DM_RET_STATUS_T DmtDataChunk::GetChunkDataSize( UINT32& dataSize)
    143 {
    144  dataSize = this->dataSize;
    145   return SYNCML_DM_SUCCESS;
    146 }
    147 
    148 /*=============================================================================
    149 *Function called:   GetReturnLen
    150 *Parameters :
    151 *            len --Reference to return data size in chunk buffer
    152 *Returns:
    153 *    return SYNCML_DM_SUCCESS if get  return size successfully
    154 *    return other in case of error
    155 
    156 *Synopsis:
    157 
    158 *Pre-conditions:
    159 *Post-Conditions:
    160 =============================================================================*/
    161 
    162  SYNCML_DM_RET_STATUS_T DmtDataChunk::GetReturnLen( UINT32& len ) const
    163 {
    164     len = returnLen;
    165       return SYNCML_DM_SUCCESS;
    166 }
    167 /*=============================================================================
    168 *Function called:   SetReturnLen
    169 *Parameters :
    170 *            len --Reference to return data size in chunk buffer
    171 *Returns:
    172 *    return SYNCML_DM_SUCCESS if set return length successfully
    173 *    return other in case of error
    174 
    175 *Synopsis:
    176 
    177 *Pre-conditions:
    178 *Post-Conditions:
    179 =============================================================================*/
    180  SYNCML_DM_RET_STATUS_T DmtDataChunk::SetReturnLen( UINT32& len )
    181 {
    182   returnLen = len;
    183   return SYNCML_DM_SUCCESS;
    184 }
    185 
    186 /*=============================================================================
    187 *Function called:   SetChunkData
    188 *Parameters :
    189             buf --Pointer to data buffer need to copy to chunk buffer
    190             dataSize -- Data size in the buf
    191 *Returns:
    192 *    return SYNCML_DM_SUCCESS if if set chunk data successfully
    193 *    return other in case of error
    194 
    195 *Synopsis:
    196 
    197 *Pre-conditions:
    198 *Post-Conditions:
    199 =============================================================================*/
    200 
    201 SYNCML_DM_RET_STATUS_T DmtDataChunk::SetChunkData(const UINT8 *buf, UINT32 dataSize)
    202 {
    203 SYNCML_DM_RET_STATUS_T resStatus = SYNCML_DM_SUCCESS;
    204     if( buf != NULL)
    205     {
    206         if(dataSize > maxDataSize)
    207             return  SYNCML_DM_INVALID_PARAMETER;
    208 
    209         if(chunkBuffer == NULL)
    210         {      chunkBuffer = (UINT8*)DmAllocMem(maxDataSize);
    211             if(chunkBuffer == NULL)
    212                 return SYNCML_DM_DEVICE_FULL;
    213         }
    214         memcpy(chunkBuffer, buf , dataSize);
    215     }
    216     this->dataSize = dataSize;
    217     return resStatus;
    218 }
    219 /*=============================================================================
    220 *Function called:   AllocateChunkBuffer
    221 *Parameters :
    222 *Returns:
    223 *    return SYNCML_DM_SUCCESS if if allocate chunk buffer successfully
    224 *    return other in case of error
    225 
    226 *Synopsis:
    227 
    228 *Pre-conditions:
    229 *Post-Conditions:
    230 =============================================================================*/
    231 SYNCML_DM_RET_STATUS_T DmtDataChunk::AllocateChunkBuffer()
    232 {
    233     if (chunkBuffer == NULL)
    234     {
    235         chunkBuffer = (UINT8*)DmAllocMem(maxDataSize);
    236         if (chunkBuffer == NULL)
    237             return SYNCML_DM_DEVICE_FULL;
    238     }
    239     return SYNCML_DM_SUCCESS;
    240 }
    241 /*=============================================================================
    242 *Function called:   FreeChunkBuffer
    243 *Parameters :
    244 *Returns:
    245 *    return SYNCML_DM_SUCCESS if if free chunk buffer successfully
    246 *    return other in case of error
    247 
    248 *Synopsis:
    249 
    250 *Pre-conditions:
    251 *Post-Conditions:
    252 =============================================================================*/
    253 SYNCML_DM_RET_STATUS_T DmtDataChunk::FreeChunkBuffer()
    254 {
    255     if (chunkBuffer != NULL)
    256     {
    257         DmFreeMem(chunkBuffer);
    258         chunkBuffer = NULL;
    259     }
    260     return SYNCML_DM_SUCCESS;
    261 }
    262