⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jam_msg_util.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 5 页
字号:
{
    /*----------------------------------------------------------------*/
    /* 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 + -