SIMRefresh.c
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:14k
源码类别:

MTK

开发平台:

C/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.  * Filename:
  37.  * ---------
  38.  *   SIMRefresh.c
  39.  *
  40.  * Project:
  41.  * --------
  42.  *   MAUI
  43.  *
  44.  * Description:
  45.  * ------------
  46.  *   SIM application toolkit related functions
  47.  *
  48.  * Author:
  49.  * -------
  50.  * -------
  51.  *
  52.  *==============================================================================
  53.  *             HISTORY
  54.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  55.  *------------------------------------------------------------------------------
  56.  * removed!
  57.  *
  58.  * removed!
  59.  * removed!
  60.  * removed!
  61.  *
  62.  * removed!
  63.  * removed!
  64.  * removed!
  65.  *
  66.  *------------------------------------------------------------------------------
  67.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  68.  *============================================================================== 
  69.  *******************************************************************************/
  70. #include "stdC.h"
  71. #include "L4Dr1.h"
  72. #include "L4Dr.h"
  73. #include "MMI_features.h"
  74. #include "FrameworkStruct.h"
  75. #include"KeyBrd.h"
  76. #include "SATDefs.h"
  77. #include "SATStruct.h"
  78. #include "SATGProts.h"
  79. #include "SATProts.h"
  80. #include "ProtocolEvents.h"
  81. #include "TimerEvents.h"
  82. #include "CallManagementStruct.h"
  83. #include "CallManagementGprot.h"
  84. #include "GSM7BitDefaultAlphabet.h"
  85. #include "CommonScreens.h"
  86. #include "NVRAMType.h"
  87. #include "NVRAMProt.h"
  88. #include "NVRAMEnum.h"
  89. #include "SSCStringHandle.h"
  90. #include "gdi_include.h"
  91. #include "lcd_sw_rnd.h"
  92. #include "QueueGprot.h"
  93. #include "BootUp.h"
  94. #include "PowerOnChargerProt.h"
  95. #include "SimDetectionDef.h"
  96. #include "SimDetectionGexdcl.h"
  97. #include "SimDetectionGprot.h"
  98. #include "sat_def.h"
  99. /*****************************************************************************
  100.  * FUNCTION
  101.  *  mmi_sat_get_msisdn_data_handler
  102.  * DESCRIPTION
  103.  *  Get MSISDN data response handler
  104.  * PARAMETERS
  105.  *  info        [IN]        
  106.  * RETURNS
  107.  *  void
  108.  *****************************************************************************/
  109. void mmi_sat_get_msisdn_data_handler(void *info)
  110. {
  111.     /*----------------------------------------------------------------*/
  112.     /* Local Variables                                                */
  113.     /*----------------------------------------------------------------*/
  114.     mmi_smu_read_sim_rsp_struct *msisdn_data;
  115.     mmi_cphs_mmi_info_ind_struct cphs_mmi_info;
  116.     U8 i, alpha_len, bcd_len;
  117.     /*----------------------------------------------------------------*/
  118.     /* Code Body                                                      */
  119.     /*----------------------------------------------------------------*/
  120.     msisdn_data = (mmi_smu_read_sim_rsp_struct*) info;
  121.     ClearProtocolEventHandler(PRT_MMI_SMU_READ_SIM_RSP);
  122.     if (msisdn_data->result.flag == 0)
  123.     {
  124.         memset((void*)&cphs_mmi_info, 0, sizeof(mmi_cphs_mmi_info_ind_struct));
  125.         cphs_mmi_info.no_msisdn = 1;
  126.         if (msisdn_data->data[0] >= 0x80 && msisdn_data->data[0] <= 0x82)
  127.         {
  128.             for (alpha_len = 0; *(msisdn_data->data + 1 + alpha_len) != 0xFF; alpha_len++);
  129.             cphs_mmi_info.msisdn[0].alpha_id_size = alpha_len;
  130.             cphs_mmi_info.msisdn[0].alpha_id_dcs = MMI_UCS2_DCS + msisdn_data->data[0] - 0x80;
  131.             memcpy(cphs_mmi_info.msisdn[0].alpha_id, msisdn_data->data + 1, alpha_len);
  132.         }
  133.         else
  134.         {
  135.             for (alpha_len = 0; *(msisdn_data->data + alpha_len) != 0xFF; alpha_len++);
  136.             cphs_mmi_info.msisdn[0].alpha_id_size = alpha_len;
  137.             cphs_mmi_info.msisdn[0].alpha_id_dcs = MMI_DEFAULT_DCS;
  138.             memcpy(cphs_mmi_info.msisdn[0].alpha_id, msisdn_data->data, alpha_len);
  139.         }
  140.         cphs_mmi_info.msisdn[0].alpha_id[alpha_len] = 0;
  141.         cphs_mmi_info.msisdn[0].ton_npi = *(msisdn_data->data + msisdn_data->length - 13);
  142.         for (bcd_len = 0; *(msisdn_data->data + msisdn_data->length - 12 + bcd_len) != 0xFF; bcd_len++);
  143.         cphs_mmi_info.msisdn[0].digit_size = bcd_len * 2;
  144.         for (i = 0; i < bcd_len; i++)
  145.         {
  146.             cphs_mmi_info.msisdn[0].digit[i * 2] = 0x30 + (*(msisdn_data->data + msisdn_data->length - 12 + i) & 0x0F);
  147.             cphs_mmi_info.msisdn[0].digit[i * 2 + 1] = 0x30 + ((*(msisdn_data->data + msisdn_data->length - 12 + i) & 0xF0) >> 4);
  148.         }
  149.         ServiceIndicationStringDisplay((void*)&cphs_mmi_info);
  150.     }
  151. }
  152. /*****************************************************************************
  153.  * FUNCTION
  154.  *  mmi_sat_get_msisdn_data
  155.  * DESCRIPTION
  156.  *  Get MSISDN data request
  157.  * PARAMETERS
  158.  *  msisdn_record_size      [IN]        
  159.  * RETURNS
  160.  *  void
  161.  *****************************************************************************/
  162. void mmi_sat_get_msisdn_data(U16 msisdn_record_size)
  163. {
  164.     /*----------------------------------------------------------------*/
  165.     /* Local Variables                                                */
  166.     /*----------------------------------------------------------------*/
  167.     MYQUEUE Message;
  168.     mmi_smu_read_sim_req_struct *dataPtr;
  169.     /*----------------------------------------------------------------*/
  170.     /* Code Body                                                      */
  171.     /*----------------------------------------------------------------*/
  172.     SetProtocolEventHandler(mmi_sat_get_msisdn_data_handler, PRT_MMI_SMU_READ_SIM_RSP);
  173.     Message.oslSrcId = MOD_MMI;
  174.     Message.oslDestId = MOD_L4C;
  175.     Message.oslMsgId = PRT_MMI_SMU_READ_SIM_REQ;
  176.     dataPtr = (mmi_smu_read_sim_req_struct*) OslConstructDataPtr(sizeof(mmi_smu_read_sim_req_struct));
  177.     dataPtr->file_idx = (U8) FILE_MSISDN_IDX;
  178.     dataPtr->para = 1;
  179.     dataPtr->length = msisdn_record_size;
  180.     Message.oslDataPtr = (oslParaType*) dataPtr;
  181.     Message.oslPeerBuffPtr = NULL;
  182.     OslMsgSendExtQueue(&Message);
  183. }
  184. /*****************************************************************************
  185.  * FUNCTION
  186.  *  mmi_sat_get_msisdn_info_handler
  187.  * DESCRIPTION
  188.  *  Get MSISDN info response handler
  189.  * PARAMETERS
  190.  *  info        [IN]        
  191.  * RETURNS
  192.  *  void
  193.  *****************************************************************************/
  194. void mmi_sat_get_msisdn_info_handler(void *info)
  195. {
  196.     /*----------------------------------------------------------------*/
  197.     /* Local Variables                                                */
  198.     /*----------------------------------------------------------------*/
  199.     mmi_smu_read_file_info_rsp_struct *msisdn_info;
  200.     /*----------------------------------------------------------------*/
  201.     /* Code Body                                                      */
  202.     /*----------------------------------------------------------------*/
  203.     msisdn_info = (mmi_smu_read_file_info_rsp_struct*) (info);
  204.     ClearProtocolEventHandler(PRT_MMI_SMU_READ_FILE_INFO_RSP);
  205.     if (msisdn_info->result.flag == 0)
  206.     {
  207.         mmi_sat_get_msisdn_data((U16) (msisdn_info->file_size / msisdn_info->num_of_rec));
  208.     }
  209. }
  210. /*****************************************************************************
  211.  * FUNCTION
  212.  *  mmi_sat_get_msisdn_info
  213.  * DESCRIPTION
  214.  *  Get MSISDN info request
  215.  * PARAMETERS
  216.  *  void
  217.  * RETURNS
  218.  *  void
  219.  *****************************************************************************/
  220. void mmi_sat_get_msisdn_info(void)
  221. {
  222.     /*----------------------------------------------------------------*/
  223.     /* Local Variables                                                */
  224.     /*----------------------------------------------------------------*/
  225.     MYQUEUE Message;
  226.     mmi_smu_read_file_info_req_struct *dataPtr;
  227.     /*----------------------------------------------------------------*/
  228.     /* Code Body                                                      */
  229.     /*----------------------------------------------------------------*/
  230.     SetProtocolEventHandler(mmi_sat_get_msisdn_info_handler, PRT_MMI_SMU_READ_FILE_INFO_RSP);
  231.     Message.oslSrcId = MOD_MMI;
  232.     Message.oslDestId = MOD_L4C;
  233.     Message.oslMsgId = PRT_MMI_SMU_READ_FILE_INFO_REQ;
  234.     dataPtr = (mmi_smu_read_file_info_req_struct*) OslConstructDataPtr(sizeof(mmi_smu_read_file_info_req_struct));
  235.     dataPtr->file_idx = (U8) FILE_MSISDN_IDX;
  236.     Message.oslDataPtr = (oslParaType*) dataPtr;
  237.     Message.oslPeerBuffPtr = NULL;
  238.     OslMsgSendExtQueue(&Message);
  239. }
  240. /*****************************************************************************
  241.  * FUNCTION
  242.  *  mmi_sat_get_spn_data_handler
  243.  * DESCRIPTION
  244.  *  Get SPN data response handler
  245.  * PARAMETERS
  246.  *  info        [IN]        
  247.  * RETURNS
  248.  *  void
  249.  *****************************************************************************/
  250. void mmi_sat_get_spn_data_handler(void *info)
  251. {
  252.     /*----------------------------------------------------------------*/
  253.     /* Local Variables                                                */
  254.     /*----------------------------------------------------------------*/
  255.     mmi_smu_read_sim_rsp_struct *spn_data;
  256.     U16 alpha_len;
  257.     U8 *convertedData;
  258.     /*----------------------------------------------------------------*/
  259.     /* Code Body                                                      */
  260.     /*----------------------------------------------------------------*/
  261.     spn_data = (mmi_smu_read_sim_rsp_struct*) info;
  262.     ClearProtocolEventHandler(PRT_MMI_SMU_READ_SIM_RSP);
  263.     if (spn_data->result.flag == 0)
  264.     {
  265.         if (spn_data->data[1] != 0)
  266.         {
  267.             gSpnValid = 1;
  268.             g_pwr_context.RequireRPLMN = spn_data->data[0] & 0x01;
  269.             if (spn_data->data[1] >= 0x80 && spn_data->data[1] <= 0x82)
  270.             {
  271.                 for (alpha_len = 0; *(spn_data->data + 2 + alpha_len) != 0xFF; alpha_len++);
  272.                 convertedData = CovertStringForPlatform(
  273.                                     spn_data->data + 2,
  274.                                     alpha_len,
  275.                                     (U8) (MMI_UCS2_DCS + spn_data->data[1] - 0x80),
  276.                                     NULL);
  277.             }
  278.             else
  279.             {
  280.                 for (alpha_len = 0; *(spn_data->data + 1 + alpha_len) != 0xFF; alpha_len++);
  281.                 convertedData = CovertStringForPlatform(
  282.                                     spn_data->data + 1,
  283.                                     alpha_len,
  284.                                     MMI_DEFAULT_DCS,
  285.                                     NULL);
  286.             }
  287.             pfnUnicodeStrcpy((PS8) gServProvderName, (PS8) convertedData);
  288.             OslMfree(convertedData);
  289.             if (g_idle_context.IsOnIdleScreen)
  290.             {
  291.                 EntryIdleScreen();
  292.             }
  293.         }
  294.         else
  295.         {
  296.             gSpnValid = 0;
  297.         }
  298.     }
  299. }
  300. /*****************************************************************************
  301.  * FUNCTION
  302.  *  mmi_sat_get_spn_data
  303.  * DESCRIPTION
  304.  *  Get SPN data request
  305.  * PARAMETERS
  306.  *  void
  307.  * RETURNS
  308.  *  void
  309.  *****************************************************************************/
  310. void mmi_sat_get_spn_data(void)
  311. {
  312.     /*----------------------------------------------------------------*/
  313.     /* Local Variables                                                */
  314.     /*----------------------------------------------------------------*/
  315.     MYQUEUE Message;
  316.     mmi_smu_read_sim_req_struct *dataPtr;
  317.     /*----------------------------------------------------------------*/
  318.     /* Code Body                                                      */
  319.     /*----------------------------------------------------------------*/
  320.     SetProtocolEventHandler(mmi_sat_get_spn_data_handler, PRT_MMI_SMU_READ_SIM_RSP);
  321.     Message.oslSrcId = MOD_MMI;
  322.     Message.oslDestId = MOD_L4C;
  323.     Message.oslMsgId = PRT_MMI_SMU_READ_SIM_REQ;
  324.     dataPtr = (mmi_smu_read_sim_req_struct*) OslConstructDataPtr(sizeof(mmi_smu_read_sim_req_struct));
  325.     dataPtr->file_idx = (U8) FILE_SPN_IDX;
  326.     dataPtr->para = 0;
  327.     dataPtr->length = 0x11;
  328.     Message.oslDataPtr = (oslParaType*) dataPtr;
  329.     Message.oslPeerBuffPtr = NULL;
  330.     OslMsgSendExtQueue(&Message);
  331. }