📄 jam_msg_util.c
字号:
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint32 size;
kal_int32 handle;
kal_char *jadContent;
kal_int32 scanPos = 0;
kal_char *jar_url;
kal_int32 sizeOfURL;
kal_int32 extraSize;
kal_int32 i = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (url == NULL)
{
return -1;
}
sizeOfURL = strlen(url);
handle = FS_Open(jad_file_name, FS_READ_ONLY | FS_OPEN_SHARED);
if (handle != NULL)
{
kal_uint32 tempSize = 0;
if (FS_GetFileSize(handle, &size) != FS_NO_ERROR)
{
FS_Close(handle);
return -1;
}
jadContent = jvm_malloc(size + 1);
if ((FS_Read(handle, jadContent, sizeof(char) * size, &tempSize) != FS_NO_ERROR) || tempSize != size)
{
FS_Close(handle);
jvm_free(jadContent);
return -1;
}
FS_Close(handle);
while (strncmp(jadContent + scanPos, "MIDlet-Jar-URL:", 15) && scanPos < size)
{
while (jadContent[scanPos] != '\n' && scanPos < size)
{
scanPos++;
}
if (jadContent[scanPos] == 0x0d || jadContent[scanPos] == 0x0a) /* 0x0d, 0x0a */
{
scanPos++;
}
}
if (scanPos >= size)
{ /* the JAD does not have the MIDlet-Jar-URL attribute */
jvm_free(jadContent);
return -1;
}
scanPos += 15; /* MIDlet-Jar-URL: */
while (jadContent[scanPos] == 0x20 && scanPos < size) /* delete space */
{
scanPos++;
}
jar_url = jadContent + scanPos;
while (jadContent[scanPos] != 0x0d && jadContent[scanPos] != 0x0a && scanPos < size)
{
scanPos++;
}
extraSize = sizeOfURL - (int)(&jadContent[scanPos] - jar_url);
if (extraSize < 0)
{
while (scanPos < size)
{
(jar_url + sizeOfURL)[i++] = jadContent[scanPos++];
}
}
else if (extraSize > 0)
{
kal_int32 scanEnd = scanPos;
scanPos = size;
while (scanPos >= scanEnd)
{
jadContent[scanPos + extraSize] = jadContent[scanPos];
scanPos--;
}
}
for (i = 0; i < sizeOfURL; i++)
{
jar_url[i] = url[i];
}
handle = FS_Open(jad_file_name, FS_CREATE_ALWAYS);
if (handle != NULL)
{
if (FS_Write(handle, jadContent, sizeof(char) * (size + extraSize), &tempSize) != FS_NO_ERROR ||
tempSize != size + extraSize)
{
jvm_free(jadContent);
FS_Close(handle);
return -1;
}
jvm_free(jadContent);
FS_Close(handle);
return 0;
}
}
return -1;
}
/*****************************************************************************
* FUNCTION
* get_string_by_error_code
* DESCRIPTION
*
* PARAMETERS
* error_code [IN]
* RETURNS
*
*****************************************************************************/
kal_wchar *get_string_by_error_code(kal_int32 error_code)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 MMIStringID;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
switch (error_code)
{
case OLD_VERSION:
MMIStringID = STR_JAVA_ERROR_CODE_OLD_VERSION;
break;
case ALREADY_INSTALLED:
MMIStringID = STR_JAVA_ERROR_CODE_ALREADY_INSTALLED;
break;
case NEW_VERSION:
MMIStringID = STR_JAVA_ERROR_CODE_NEW_VERSION;
break;
case INVALID_JAD_URL:
MMIStringID = STR_JAVA_ERROR_CODE_NOT_FOUND;
break;
case MISSING_PROVIDER_CERT:
case MISSING_SUITE_NAME:
case MISSING_VENDOR:
case MISSING_VERSION:
case MISSING_JAR_URL:
case MISSING_JAR_SIZE:
MMIStringID = STR_JAVA_ERROR_CODE_MISSING_INFO_JAD;
break;
case MISSING_CONFIGURATION:
case MISSING_PROFILE:
MMIStringID = STR_JAVA_ERROR_CODE_MISSING_INFO_JAR;
break;
case INVALID_KEY:
case INVALID_VALUE:
case INVALID_VERSION:
case PUSH_FORMAT_FAILURE:
case PUSH_CLASS_FAILURE:
MMIStringID = STR_JAVA_ERROR_CODE_INVALID_JAD;
break;
case DEVICE_INCOMPATIBLE:
MMIStringID = STR_JAVA_ERROR_CODE_DEVICE_INCOMPATIBLE;
break;
case JAD_MOVED:
MMIStringID = STR_JAVA_ERROR_CODE_JAD_MOVED;
break;
case INSUFFICIENT_STORAGE:
/* MMIStringID = STR_JAVA_ERROR_CODE_INSUFFICIENT_STORAGE; */
/* modify to not display actually insufficient size */
MMIStringID = STR_JAVA_ERROR_CODE_INSUFFICIENT_STORAGE;
break;
case JAR_NOT_FOUND:
MMIStringID = STR_JAVA_ERROR_CODE_JAR_NOT_FOUND;
break;
case INVALID_JAR_URL:
MMIStringID = STR_JAVA_ERROR_CODE_INVALID_JAR_URL;
break;
case CORRUPT_JAR:
MMIStringID = STR_JAVA_ERROR_CODE_CORRUPT_JAR;
break;
case SUITE_NAME_MISMATCH:
case VERSION_MISMATCH:
case VENDOR_MISMATCH:
case JAR_SIZE_MISMATCH:
case ATTRIBUTE_MISMATCH:
MMIStringID = STR_JAVA_ERROR_CODE_INFO_MISMATCH;
break;
case CORRUPT_PROVIDER_CERT:
case INVALID_PROVIDER_CERT:
case CORRUPT_SIGNATURE:
case INVALID_SIGNATURE:
case UNSUPPORTED_CERT:
case UNKNOWN_CA:
case EXPIRED_PROVIDER_CERT:
case EXPIRED_CA_KEY:
MMIStringID = STR_JAVA_ERROR_CODE_VERIFY_FAILED;
break;
case AUTHORIZATION_FAILURE:
MMIStringID = STR_JAVA_ERROR_CODE_AUTHORIZATION_FAILURE;
break;
case PUSH_DUP_FAILURE:
MMIStringID = STR_JAVA_ERROR_CODE_PUSH_DUP_FAILURE;
break;
case PUSH_PROTO_FAILURE:
MMIStringID = STR_JAVA_ERROR_CODE_PUSH_PROTO_FAILURE;
break;
case TRUSTED_OVERWRITE_FAILURE:
MMIStringID = STR_JAVA_ERROR_CODE_TRUSTED_OVERWRITE_FAILURE;
break;
case DEFAULT_GAME:
MMIStringID = STR_JAVA_ERROR_CODE_DEFAULT_GAME;
break;
case DISK_OPERATION_FAIL:
MMIStringID = STR_JAVA_ERROR_CODE_DISK_OP_FAILURE;
break;
case USER_CANCEL:
MMIStringID = STR_JAVA_ERROR_CODE_CANCEL;
break;
case PUSH_INSTALL:
MMIStringID = STR_JAVA_PUSH_INSTALL;
break;
case NORMAL_INSTALL:
MMIStringID = STR_JAVA_NORMAL_INSTALL;
break;
case INSTALL_NA:
MMIStringID = STR_JAVA_INSTALL_NA;
break;
case OVER_MAX_INSTALL:
MMIStringID = STR_JAVA_ERROR_CODE_OVER_MAX_INSTALL;
break;
case POST_ERROR:
MMIStringID = STR_JAVA_ERROR_CODE_POST_ERROR;
break;
#ifdef __DRM_SUPPORT__
case DRM_PROHIBIT:
MMIStringID = STR_GLOBAL_DRM_PROHIBITED;
break;
#endif
case COMMAND_OK:
MMIStringID = STR_GLOBAL_OK;
break;
case COMMAND_CANCEL:
MMIStringID = STR_GLOBAL_CANCEL;
break;
case COMMAND_BACK:
MMIStringID = STR_GLOBAL_BACK;
break;
case COMMAND_DONE:
MMIStringID = STR_GLOBAL_DONE;
break;
case COMMAND_SAVE:
MMIStringID = STR_GLOBAL_SAVE;
break;
case COMMAND_OPTIONS:
MMIStringID = STR_GLOBAL_OPTIONS;
break;
case MIDLET_RUNNING:
MMIStringID = STR_JAVA_ERROR_CODE_MIDLET_RUNNING;
break;
case STRING_DATE:
MMIStringID = STR_GLOBAL_DATE;
break;
case STRING_TIME:
MMIStringID = STR_GLOBAL_TIME;
break;
case WRITE_PROTECTION:
MMIStringID = STR_JAVA_ERROR_CODE_WRITE_PROTECTION;
break;
case MEMORY_ALLACTION_FAILURE:
MMIStringID = STR_JAVA_ERROR_CODE_MEMORY_INSUFFICIENT;
break;
case ROOT_DIR_FULL:
MMIStringID = FMGR_FS_ROOT_DIR_FULL_TEXT;
break;
case JAVA_NO_CARD:
MMIStringID = STR_JAVA_ERROR_CODE_NO_CARD;
break;
default:
MMIStringID = STR_JAVA_ERROR_CODE_UNKNOWN_FAILURE;
break;
}
return (kal_wchar*) get_string((kal_uint16) MMIStringID);
}
/*****************************************************************************
* FUNCTION
* get_mids_avail_storage
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_uint32 get_mids_avail_storage()
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return jam_call_back_functions.jam_get_avail_storage(GAMETYPE_JAVA_GAME);
}
/*****************************************************************************
* FUNCTION
* get_mids_total_storage
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_uint32 get_mids_total_storage()
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return jam_call_back_functions.jam_get_total_storage(GAMETYPE_JAVA_GAME);
}
/* To move to JUI */
/*****************************************************************************
* FUNCTION
* JPEGdecodeImage
* DESCRIPTION
* The API is used to decode a JPEG image data.
* PARAMETERS
* buffer [IN] The JPEG raw data to be decoded
* length [IN] The length of the raw data in buffer
* get_image [IN] The function pointer to get a new Java
* image for drawing JPEG decoded image (must be 565 format).
* errThrowClassName [OUT] The class name to be thrown to Java level. If the pointer
* of the variable is modified as non-NULL pointer, it represents error.
* RETURNS
* Return a non-NULL the image buffer if the decoding is successful.
* Return NULL if decoding is failed.
*****************************************************************************/
kal_char*
JPEGdecodeImage(
kal_char *buffer,
kal_int32 length,
kal_int32(*get_image) (kal_int32 width, kal_int32 height, kal_char **dst),
kal_char **errThrowClassName)
{
#if defined(GDI_USING_HW_JPEG) || defined(GDI_USING_HW_JPEG_V2)
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 width, height;
kal_char *dst = NULL;
kal_int32 orgwidth, orgheight;
kal_char *tempBuffer;
#if defined (SUPPORT_MMAPI) && !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_CAMERA__)
kal_bool is_pause_camera = KAL_FALSE;
#endif
kal_char *srcBuffer;
kal_char *dstBuffer;
kal_int32 i = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Video player and Jpeg decode can not work at the same time */
#if defined (SUPPORT_MMAPI) && !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_VIDEO_PLAYER__)
if (video_player.device_type == JAVA_MEDIA_MPEG_PLAYER_DEVICE)
{
*errThrowClassName = "java/lang/OutOfMemoryError";
return NULL;
}
#endif
#if defined (SUPPORT_MMAPI) && !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_CAMERA__)
/* Stop camera preview */
if (video_player.device_type == JAVA_MEDIA_CAM_PLAYER_DEVICE &&
video_player.state == JAVA_MEDIA_STATE_PLAYING)
{
jma_cam_player_preview_stop_keep_layer();
is_pause_camera = KAL_TRUE;
}
#endif
#if DATACACHE_FBBR_ON
/* this function is only workable when DATACACHE_FBBR_ON is 1 */
buffer = (char*)FBBR_invalid_l1_cache(buffer, length);
#endif /* DATACACHE_FBBR_ON */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -