1 /*
2 * Copyright (C) 2015 NXP Semiconductors
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 #include "JcDnld.h"
17 #include "JcopOsDownload.h"
18 #include <data_types.h>
19 #include <log/log.h>
20
21 JcopOsDwnld *jd;
22 IChannel_t *channel;
23 static bool inUse = false;
24 static INT16 jcHandle;
25 extern pJcopOs_Dwnld_Context_t gpJcopOs_Dwnld_Context;
26 /*******************************************************************************
27 **
28 ** Function: JCDNLD_Init
29 **
30 ** Description: Initializes the JCOP library and opens the DWP communication channel
31 **
32 ** Returns: TRUE if ok.
33 **
34 *******************************************************************************/
JCDNLD_Init(IChannel_t * channel)35 tJBL_STATUS JCDNLD_Init(IChannel_t *channel)
36 {
37 static const char fn[] = "JCDNLD_Init";
38 BOOLEAN stat = FALSE;
39 jcHandle = EE_ERROR_OPEN_FAIL;
40 ALOGD("%s: enter", fn);
41
42 if (inUse == true)
43 {
44 return STATUS_INUSE;
45 }
46 else if(channel == NULL)
47 {
48 return STATUS_FAILED;
49 }
50 /*TODO: inUse assignment should be with protection like using semaphore*/
51 inUse = true;
52 jd = JcopOsDwnld::getInstance();
53 stat = jd->initialize (channel);
54 if(stat != TRUE)
55 {
56 ALOGE("%s: failed", fn);
57 }
58 else
59 {
60 if((channel != NULL) &&
61 (channel->open) != NULL)
62 {
63 jcHandle = channel->open();
64 if(jcHandle == EE_ERROR_OPEN_FAIL)
65 {
66 ALOGE("%s:Open DWP communication is failed", fn);
67 stat = FALSE;
68 }
69 else
70 {
71 ALOGE("%s:Open DWP communication is success", fn);
72 stat = TRUE;
73 }
74 }
75 else
76 {
77 ALOGE("%s: NULL DWP channel", fn);
78 stat = FALSE;
79 }
80 }
81 return (stat == true)?STATUS_OK:STATUS_FAILED;
82 }
83
84 /*******************************************************************************
85 **
86 ** Function: JCDNLD_StartDownload
87 **
88 ** Description: Starts the JCOP update
89 **
90 ** Returns: SUCCESS if ok.
91 **
92 *******************************************************************************/
JCDNLD_StartDownload()93 tJBL_STATUS JCDNLD_StartDownload()
94 {
95 static const char fn[] = "JCDNLD_StartDownload";
96 tJBL_STATUS status = STATUS_FAILED;
97 BOOLEAN stat = FALSE;
98
99 status = jd->JcopOs_Download();
100 ALOGE("%s: Exit; status=0x0%X", fn, status);
101 return status;
102 }
103
104 /*******************************************************************************
105 **
106 ** Function: JCDNLD_DeInit
107 **
108 ** Description: Deinitializes the JCOP Lib
109 **
110 ** Returns: TRUE if ok.
111 **
112 *******************************************************************************/
JCDNLD_DeInit()113 bool JCDNLD_DeInit()
114 {
115 static const char fn[] = "JCDNLD_DeInit";
116 BOOLEAN stat = FALSE;
117 ALOGD("%s: enter", fn);
118
119 if(gpJcopOs_Dwnld_Context != NULL)
120 {
121 channel = gpJcopOs_Dwnld_Context->channel;
122 if((channel != NULL) && (channel->doeSE_JcopDownLoadReset != NULL))
123 {
124 channel->doeSE_JcopDownLoadReset();
125 if(channel->close != NULL)
126 {
127 stat = channel->close(jcHandle);
128 if(stat != TRUE)
129 {
130 ALOGE("%s:closing DWP channel is failed", fn);
131 }
132 }
133 else
134 {
135 ALOGE("%s: NULL fp DWP_close", fn);
136 stat = FALSE;
137 }
138 }
139 }
140 else
141 {
142 ALOGE("%s: NULL dwnld context", fn);
143 }
144 jd->finalize();
145 /*TODO: inUse assignment should be with protection like using semaphore*/
146 inUse = false;
147 return stat;
148 }
149
150 /*******************************************************************************
151 **
152 ** Function: JCDNLD_CheckVersion
153 **
154 ** Description: Check the existing JCOP OS version
155 **
156 ** Returns: TRUE if ok.
157 **
158 *******************************************************************************/
JCDNLD_CheckVersion()159 bool JCDNLD_CheckVersion()
160 {
161
162 /**
163 * Need to implement in case required
164 * */
165 return TRUE;
166 }
167