1e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley /* 2e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * Copyright (C) 2015 NXP Semiconductors 3e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * 4e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * Licensed under the Apache License, Version 2.0 (the "License"); 5e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * you may not use this file except in compliance with the License. 6e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * You may obtain a copy of the License at 7e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * 8e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * http://www.apache.org/licenses/LICENSE-2.0 9e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * 10e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * Unless required by applicable law or agreed to in writing, software 11e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * distributed under the License is distributed on an "AS IS" BASIS, 12e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * See the License for the specific language governing permissions and 14e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * limitations under the License. 15e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley */ 16e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley#include "JcDnld.h" 17e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley#include "JcopOsDownload.h" 18e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley#include <data_types.h> 19e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley#include <cutils/log.h> 20e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley 21e7d386dcacc9733cd0347da2871415449006f7f7Paul CrowleyJcopOsDwnld *jd; 22e7d386dcacc9733cd0347da2871415449006f7f7Paul CrowleyIChannel_t *channel; 23e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowleystatic bool inUse = false; 24e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowleystatic INT16 jcHandle; 25e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowleyextern pJcopOs_Dwnld_Context_t gpJcopOs_Dwnld_Context; 26e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley/******************************************************************************* 27e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 28e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Function: JCDNLD_Init 29e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 30e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Description: Initializes the JCOP library and opens the DWP communication channel 31e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 32e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Returns: TRUE if ok. 33e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 34e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley*******************************************************************************/ 35e7d386dcacc9733cd0347da2871415449006f7f7Paul CrowleytJBL_STATUS JCDNLD_Init(IChannel_t *channel) 36e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley{ 37e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley static const char fn[] = "JCDNLD_Init"; 38e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley BOOLEAN stat = FALSE; 39e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley jcHandle = EE_ERROR_OPEN_FAIL; 40e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGD("%s: enter", fn); 41e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley 42e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley if (inUse == true) 43e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 44e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley return STATUS_INUSE; 45e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 46e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley else if(channel == NULL) 47e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 48e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley return STATUS_FAILED; 49e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 50e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley /*TODO: inUse assignment should be with protection like using semaphore*/ 51e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley inUse = true; 52e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley jd = JcopOsDwnld::getInstance(); 53e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley stat = jd->initialize (channel); 54e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley if(stat != TRUE) 55e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 56e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGE("%s: failed", fn); 57e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 58e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley else 59e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 60e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley if((channel != NULL) && 61e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley (channel->open) != NULL) 62e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 63e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley jcHandle = channel->open(); 64e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley if(jcHandle == EE_ERROR_OPEN_FAIL) 65e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 66e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGE("%s:Open DWP communication is failed", fn); 67e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley stat = FALSE; 68e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 69e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley else 70e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 71e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGE("%s:Open DWP communication is success", fn); 72e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley stat = TRUE; 73e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 74e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 75e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley else 76e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 77e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGE("%s: NULL DWP channel", fn); 78e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley stat = FALSE; 79e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 80e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 81e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley return (stat == true)?STATUS_OK:STATUS_FAILED; 82e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley} 83e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley 84e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley/******************************************************************************* 85e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 86e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Function: JCDNLD_StartDownload 87e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 88e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Description: Starts the JCOP update 89e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 90e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Returns: SUCCESS if ok. 91e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 92e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley*******************************************************************************/ 93e7d386dcacc9733cd0347da2871415449006f7f7Paul CrowleytJBL_STATUS JCDNLD_StartDownload() 94e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley{ 95e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley static const char fn[] = "JCDNLD_StartDownload"; 96e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley tJBL_STATUS status = STATUS_FAILED; 97e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley BOOLEAN stat = FALSE; 98e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley 99e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley status = jd->JcopOs_Download(); 100e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGE("%s: Exit; status=0x0%X", fn, status); 101e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley return status; 102e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley} 103e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley 104e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley/******************************************************************************* 105e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 106e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Function: JCDNLD_DeInit 107e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 108e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Description: Deinitializes the JCOP Lib 109e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 110e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Returns: TRUE if ok. 111e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 112e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley*******************************************************************************/ 113e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowleybool JCDNLD_DeInit() 114e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley{ 115e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley static const char fn[] = "JCDNLD_DeInit"; 116e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley BOOLEAN stat = FALSE; 117e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGD("%s: enter", fn); 118e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley 119e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley if(gpJcopOs_Dwnld_Context != NULL) 120e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 121e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley channel = gpJcopOs_Dwnld_Context->channel; 122e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley if((channel != NULL) && (channel->doeSE_JcopDownLoadReset != NULL)) 123e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 124e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley channel->doeSE_JcopDownLoadReset(); 125e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley if(channel->close != NULL) 126e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 127e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley stat = channel->close(jcHandle); 128e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley if(stat != TRUE) 129e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 130e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGE("%s:closing DWP channel is failed", fn); 131e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 132e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 133e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley else 134e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 135e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGE("%s: NULL fp DWP_close", fn); 136e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley stat = FALSE; 137e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 138e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 139e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 140e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley else 141e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley { 142e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley ALOGE("%s: NULL dwnld context", fn); 143e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley } 144e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley jd->finalize(); 145e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley /*TODO: inUse assignment should be with protection like using semaphore*/ 146e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley inUse = false; 147e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley return stat; 148e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley} 149e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley 150e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley/******************************************************************************* 151e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 152e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Function: JCDNLD_CheckVersion 153e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 154e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Description: Check the existing JCOP OS version 155e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 156e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** Returns: TRUE if ok. 157e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley** 158e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley*******************************************************************************/ 159e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowleybool JCDNLD_CheckVersion() 160e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley{ 161e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley 162e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley /** 163e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * Need to implement in case required 164e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley * */ 165e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley return TRUE; 166e7d386dcacc9733cd0347da2871415449006f7f7Paul Crowley} 167