Operator_logo.c
上传用户:helaifa584
上传日期:2022-06-15
资源大小:29k
文件大小:11k
源码类别:

MTK

开发平台:

Objective-C

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  * Operator_logo.c
  40.  *
  41.  * Project:
  42.  * --------
  43.  * Nokia Smart Messaging
  44.  *
  45.  * Description:
  46.  * ------------
  47.  * This file implements Nokia Smart Operator logo.
  48.  *
  49.  * Date :
  50.  * ------
  51.  * 9th May 2005   
  52.  *
  53.  * Author:  
  54.  * --------
  55.  * -------
  56.  * 
  57.  *****************************************************************************/
  58. /**************** Start : INCLUDE SECTION *************************/
  59. #include "MMI_include.h"
  60. #ifdef __MMI_OPERATOR_LOGO__
  61. #include "ems.h"
  62. #include "Operator_logo.h"
  63. /**************** End : INCLUDE SECTION ***************************/
  64. /**************** Start : DEFINE SECTION*************************/
  65. /**************** End : DEFINE SECTION***************************/
  66. /**************** Start : TYPEDEFS SECTION *************************/
  67. /**************** End : TYPEDEFS SECTION ***************************/
  68. /**************** Start:GLOBAL VARIABLES *************************/
  69. extern U8 gPictureMessageError;
  70. extern U16 RemoveZerosInBetween(U8 *pOutBuffer, U8 *pInBuffer, U16 size);
  71. extern EMSData *GetEMSDataForView(EMSData **p, U8 force);
  72. extern void EntryNsmPicturemsg(void);
  73. /**************** End : GLOBAL VARIABLES *************************/
  74. /**************** Start:LOCAL FUNCTIONS DECLARATION *************************/
  75. static void mmi_oplogo_get_header_info(OP_LOGO_HEADER_STRUCT *ota_bmp_header, OTA_DATA_STRUCT *op_logo_ota_data);
  76. static void mmi_op_logo_get_mcc(U16 *mcc, const BOOL ver_flag, OTA_DATA_STRUCT *op_logo_ota_data);
  77. static void mmi_op_logo_get_mnc(U8 *mnc, OTA_DATA_STRUCT *op_logo_ota_data);
  78. static void mmi_op_logo_skip_line_feed(OTA_DATA_STRUCT *op_logo_ota_data);
  79. /**************** End : LOCAL FUNCTIONS DECLARATION *************************/
  80. /*****************************************************************************
  81.  * FUNCTION
  82.  *  mmi_op_logo_parse_ota_data
  83.  * DESCRIPTION
  84.  *  Parse operator Logo OTA data into bmp header and bmp buffer
  85.  * PARAMETERS
  86.  *  void
  87.  * RETURNS
  88.  *  void
  89.  *****************************************************************************/
  90. extern void mmi_op_logo_parse_ota_data(void)
  91. {
  92.     /*----------------------------------------------------------------*/
  93.     /* Local Variables                                                */
  94.     /*----------------------------------------------------------------*/
  95.     EMSData *pEms = NULL;
  96.     OTA_DATA_STRUCT op_logo_ota_data = {NULL, 0};
  97.     OP_LOGO_HEADER_STRUCT op_logo_header = {0};
  98.     U32 temp;
  99.     /*----------------------------------------------------------------*/
  100.     /* Code Body                                                      */
  101.     /*----------------------------------------------------------------*/
  102.     GetEMSDataForView(&pEms, 0);
  103.     op_logo_ota_data.OTA_data = (U8*) OslMalloc((pEms->textLength >> 1) + 1);
  104.     ASSERT(op_logo_ota_data.OTA_data != NULL);
  105.     memset(op_logo_ota_data.OTA_data, 0x00, ((pEms->textLength >> 1) + 1));
  106.     temp = RemoveZerosInBetween(op_logo_ota_data.OTA_data, pEms->textBuffer, pEms->textLength);
  107.     mmi_oplogo_get_header_info(&op_logo_header, &op_logo_ota_data);
  108.     mmi_nsm_create_bmp_buffer(&op_logo_ota_data, &(op_logo_header.op_logo_ota_bmp_header));
  109.     gPictureMessageError = 0;   /* Hack : MMI_NSM_PIC_SUCCESS */
  110.     if (op_logo_ota_data.OTA_data != NULL)
  111.     {
  112.         OslMfree(op_logo_ota_data.OTA_data);
  113.     }
  114.     /* Hack : Operator logo is treated as picture message */
  115.     EntryNsmPicturemsg();
  116. }
  117. /*****************************************************************************
  118.  * FUNCTION
  119.  *  mmi_oplogo_get_header_info
  120.  * DESCRIPTION
  121.  *  Get header info for bmp image
  122.  * PARAMETERS
  123.  *  ota_bmp_header          [IN]        BMP header structure
  124.  *  op_logo_ota_data        [IN]        Operator logo OTA data structure
  125.  * RETURNS
  126.  *  void
  127.  *****************************************************************************/
  128. static void mmi_oplogo_get_header_info(OP_LOGO_HEADER_STRUCT *ota_bmp_header, OTA_DATA_STRUCT *op_logo_ota_data)
  129. {
  130.     /*----------------------------------------------------------------*/
  131.     /* Local Variables                                                */
  132.     /*----------------------------------------------------------------*/
  133.     /*----------------------------------------------------------------*/
  134.     /* Code Body                                                      */
  135.     /*----------------------------------------------------------------*/
  136.     mmi_nsm_get_ver_no(&(ota_bmp_header->op_logo_ota_ver), op_logo_ota_data);
  137.     mmi_op_logo_get_mcc(&(ota_bmp_header->mmc), ota_bmp_header->op_logo_ota_ver.is_ver_present, op_logo_ota_data);
  138.     mmi_op_logo_get_mnc(&(ota_bmp_header->mnc), op_logo_ota_data);
  139.     mmi_op_logo_skip_line_feed(op_logo_ota_data);   /* Skip only if <line-feed> character present */
  140.     mmi_nsm_get_ota_bmp_header(&(ota_bmp_header->op_logo_ota_bmp_header), op_logo_ota_data);
  141. }
  142. /*****************************************************************************
  143.  * FUNCTION
  144.  *  mmi_op_logo_get_mcc
  145.  * DESCRIPTION
  146.  *  Get mcc number from OTA data
  147.  * PARAMETERS
  148.  *  mcc             [IN]        Mobile country code
  149.  *  ver_flag        [IN]        Version flag
  150.  *  ota             [IN]        OTA data structure
  151.  * RETURNS
  152.  *  void
  153.  *****************************************************************************/
  154. static void mmi_op_logo_get_mcc(U16 *mcc, const BOOL ver_flag, OTA_DATA_STRUCT *ota)
  155. {
  156.     /*----------------------------------------------------------------*/
  157.     /* Local Variables                                                */
  158.     /*----------------------------------------------------------------*/
  159.     /* 
  160.      * MMC is in little endian BCD format filled with 0xf to make even bytes.
  161.      * eg.   BCD little endian filled with 0xf: 42f4.
  162.      *    Actual value in mcc : 244
  163.      */
  164.     U16 temp1 = 0;
  165.     U16 temp2 = 0;
  166.     U16 result = 0;
  167. #if 0
  168. /* under construction !*/
  169. /* under construction !*/
  170. #endif /* 0 */ 
  171.     /*----------------------------------------------------------------*/
  172.     /* Code Body                                                      */
  173.     /*----------------------------------------------------------------*/
  174.     temp1 = (ota->OTA_data[ota->curr_index] & 0x0F);
  175.     temp2 = ((ota->OTA_data[ota->curr_index] >> 4) & 0x0F);
  176.     result = ((temp1 * 10) + temp2);
  177.     ota->curr_index += 1;
  178.     result = ((result * 10) + (ota->OTA_data[ota->curr_index] & 0x0F));
  179.     ota->curr_index += 1;
  180.     *mcc = result;
  181. }
  182. /*****************************************************************************
  183.  * FUNCTION
  184.  *  mmi_op_logo_get_mnc
  185.  * DESCRIPTION
  186.  *  Get mnc number from OTA data
  187.  * PARAMETERS
  188.  *  mnc     [IN]        Mobile network code
  189.  *  ota     [IN]        OTA data structure
  190.  * RETURNS
  191.  *  void
  192.  *****************************************************************************/
  193. static void mmi_op_logo_get_mnc(U8 *mnc, OTA_DATA_STRUCT *ota)
  194. {
  195.     /*----------------------------------------------------------------*/
  196.     /* Local Variables                                                */
  197.     /*----------------------------------------------------------------*/
  198.     /*----------------------------------------------------------------*/
  199.     /* Code Body                                                      */
  200.     /*----------------------------------------------------------------*/
  201.     /* 
  202.      * MNC is in little endian BCD format filled with 0xf to make even bytes.
  203.      * eg.   BCD little endian filled with 0xf: 50.
  204.      *    Actual value in mnc : 5
  205.      */
  206.     *mnc = ota->OTA_data[ota->curr_index];
  207.     ota->curr_index += 1;
  208. }
  209. /*****************************************************************************
  210.  * FUNCTION
  211.  *  mmi_op_logo_skip_line_feed
  212.  * DESCRIPTION
  213.  *  Get OTA BMP header info
  214.  * PARAMETERS
  215.  *  ota     [IN]        Structure OTA data
  216.  * RETURNS
  217.  *  void
  218.  *****************************************************************************/
  219. static void mmi_op_logo_skip_line_feed(OTA_DATA_STRUCT *ota)
  220. {
  221.     /*----------------------------------------------------------------*/
  222.     /* Local Variables                                                */
  223.     /*----------------------------------------------------------------*/
  224.     U8 temp;
  225.     /*----------------------------------------------------------------*/
  226.     /* Code Body                                                      */
  227.     /*----------------------------------------------------------------*/
  228.     temp = ota->OTA_data[ota->curr_index];
  229.     if (0x0a == temp)
  230.     {
  231.         ota->curr_index += 1;
  232.     }
  233. }
  234. #endif /* __MMI_OPERATOR_LOGO__ */