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

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.  *
  37.  * Filename:
  38.  * ---------
  39.  * JProvWap.C
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   MAUI
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   This is general source file for OTA provisioning
  48.  *
  49.  * Author:
  50.  * -------
  51.  * -------
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * removed!
  58.  * removed!
  59.  * removed!
  60.  *
  61.  * removed!
  62.  * removed!
  63.  * removed!
  64.  *
  65.  * removed!
  66.  * removed!
  67.  * removed!
  68.  *
  69.  * removed!
  70.  * removed!
  71.  * removed!
  72.  *
  73.  * removed!
  74.  * removed!
  75.  * removed!
  76.  *
  77.  *------------------------------------------------------------------------------
  78.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  79.  *============================================================================
  80.  ****************************************************************************/
  81. #ifndef _JPROVWAP_C
  82. #define _JPROVWAP_C
  83. #include "MMI_features.h"
  84. #if defined (JATAAYU_SUPPORT) && (defined (WAP_SUPPORT) || (defined (MMS_SUPPORT)))
  85. #include "stdC.h"
  86. #include "L4Dr1.h"
  87. #include "PixtelDataTypes.h"
  88. #include "DebugInitDef.h"       /* Debug Info */
  89. #include "FileSystemDef.h"
  90. #include "FileManagerDef.h"
  91. #include "FileSystemGProt.h"
  92. #include "FileMgr.h"
  93. #include "Ucs2prot.h"
  94. #include "NVRAMType.h"
  95. #include "NVRAMProt.h"
  96. #include "NVRAMEnum.h"
  97. #include "custom_nvram_editor_data_item.h"
  98. #include "JProvWap.h"
  99. #include "JProvOma.h"
  100. #include "JProvNE.h"
  101. #include <ddl.h>
  102. #include <jcal.h>
  103. #include <jdi_XML.h>
  104. #include <jdi_WBXML.h>
  105. #include <jdi_urivalidation.h>
  106. #include "JProfileHandlerTypes.h"
  107. #include "JProfileHandlerDefs.h"
  108. #include "JProfileHandlerProts.h"
  109. #include "app_mine.h"
  110. #include "MessagesResourceData.h"       /* IMG_NEW_MESSAGE_NOTIFICATION_MSG */
  111. #include "SmsGuiInterfaceType.h"
  112. #include "SmsGuiInterfaceProt.h"
  113. #include "gpioInc.h"    /* TurnOnBacklight */
  114. static prov_queue_data_struct *prov_data_queue[PROV_MAX_NBR_DOCUMENTS];
  115. static S8 g_prov_data_queue_current_item = 0;
  116. static S8 g_prov_data_queue_last_item = 0;
  117. S8 g_prov_data_queue_size = 0;
  118. static U8 g_prov_settings_present = 0x00;
  119. U8 g_prov_bearer = PROV_INVALID_BEARER;
  120. U8 g_prov_setting_type = PROV_BRS_SETTINGS;
  121. U8 g_prov_data_account_index = 0x00;
  122. U8 g_prov_appl_flag = PROV_NO_APPLICATION;
  123. U8 g_prov_pend_set = 0;
  124. mmi_cc_set_csd_profile_req_struct *g_prov_set_csd_req_p = NULL;
  125. #ifdef __GPRS_MODE__
  126. mmi_ps_set_gprs_data_account_req_struct *g_prov_set_gprs_req_p = NULL;
  127. #endif 
  128. U8 *g_prov_profile_name_p = NULL;
  129. static U16 g_prov_instal_stringID;
  130. U16 g_prov_newsetting_stringID = STR_ID_PROV_NEW_SETTINGS;
  131. FuncPtr g_prov_timeout_hdlr = NULL;
  132. extern void (*g_DTCNTReadyCallback) (void);
  133. extern void PlayMessageArrivalTone(void);
  134. extern pBOOL GetUCS2Flag(PS8 buffer);
  135. extern MMI_BOOL mmi_brw_validate_url(U8 *url_p);
  136. extern U16 g_ph_title_img_id;
  137. /*****************************************************************************
  138.  * FUNCTION
  139.  *  mmi_prov_deinit
  140.  * DESCRIPTION
  141.  *  It deinits the Provisioing module
  142.  * PARAMETERS
  143.  *  void
  144.  * RETURNS
  145.  *  void
  146.  *****************************************************************************/
  147. void mmi_prov_deinit(void)
  148. {
  149.     /*----------------------------------------------------------------*/
  150.     /* Local Variables                                                */
  151.     /*----------------------------------------------------------------*/
  152.     /*----------------------------------------------------------------*/
  153.     /* Code Body                                                      */
  154.     /*----------------------------------------------------------------*/
  155.     /* g_prov_settings_present=0x00; */
  156. }
  157. /*****************************************************************************
  158.  * FUNCTION
  159.  *  mmi_prov_receive_da_file
  160.  * DESCRIPTION
  161.  *  
  162.  * PARAMETERS
  163.  *  mime_type                   [IN]        
  164.  *  mime_subtype                [IN]        
  165.  *  action_type                 [IN]        
  166.  *  filename                    [IN]        
  167.  *  download_url                [IN]        
  168.  *  mime_type_str_string        [IN]        
  169.  *  mime_type_str_string[IN](?)
  170.  * RETURNS
  171.  *  void
  172.  *****************************************************************************/
  173. void mmi_prov_receive_da_file(
  174. S32 session_id,
  175.         S32 mime_type,
  176.         S32 mime_subtype,
  177.         S32 action_type,
  178.         PU16 filename,
  179.         PS8 download_url,
  180.         PS8 mime_type_str_string)
  181. {
  182.     /*----------------------------------------------------------------*/
  183.     /* Local Variables                                                */
  184.     /*----------------------------------------------------------------*/
  185.     JC_RETCODE ret_code = JC_OK;
  186.     JC_UINT32 uiFileSize = 0;
  187.     JDD_FSHANDLE FileSysHandle = NULL;
  188.     JDD_FILE FileHandle = NULL;
  189.     JC_INT32 iNumberofItems;
  190.     U32 provLength = 0;
  191.     S8 *prov_buffer_p = NULL;
  192.     /*----------------------------------------------------------------*/
  193.     /* Code Body                                                      */
  194.     /*----------------------------------------------------------------*/
  195.     ret_code = jdd_FSInitialize(&FileSysHandle);
  196.     if (ret_code != JC_OK)
  197.     {
  198.         ASSERT(0);
  199.     }
  200.     FileHandle = (JDD_FILE) jdd_FSOpen(FileSysHandle, (U16*) filename, E_OPEN_READ_MODE);
  201.     jdd_FSGetSize(FileHandle, &uiFileSize);
  202.     provLength = uiFileSize;
  203.     prov_buffer_p = jdd_MemAlloc((provLength + 1), 1);
  204.     if (prov_buffer_p == NULL)
  205.     {
  206.         ASSERT(0);
  207.     }
  208.     iNumberofItems = jdd_FSRead(prov_buffer_p, provLength, 1, FileHandle);
  209.     jdd_FSClose(FileHandle);
  210.     mmi_prov_handle_provisioning_data_ext(prov_buffer_p, provLength, (S8*) mime_type_str_string);
  211.     jdd_MemFree(prov_buffer_p);
  212.     prov_buffer_p = NULL;
  213.     jdd_FSDeinitialize(FileSysHandle);
  214. }
  215. /*****************************************************************************
  216.  * FUNCTION
  217.  *  mmi_prov_handle_provisioning_data
  218.  * DESCRIPTION
  219.  *  It opens the file at the path specified,reads the file & copy data into buffer and then pass
  220.  *  the buffer for further processing
  221.  * PARAMETERS
  222.  *  content_type_p      [IN]        
  223.  *  filePath            [IN]        
  224.  * RETURNS
  225.  *  kal_int32
  226.  *****************************************************************************/
  227. kal_int32 mmi_prov_handle_provisioning_data(kal_int8 *content_type_p, kal_wchar *filePath)
  228. {
  229.     /*----------------------------------------------------------------*/
  230.     /* Local Variables                                                */
  231.     /*----------------------------------------------------------------*/
  232.     JC_RETCODE ret_code = JC_OK;
  233.     JC_UINT32 uiFileSize = 0;
  234.     JDD_FSHANDLE FileSysHandle = NULL;
  235.     JDD_FILE FileHandle = NULL;
  236.     JC_INT32 iNumberofItems;
  237.     U32 provLength = 0;
  238.     S8 *prov_buffer_p = NULL;
  239.     /*----------------------------------------------------------------*/
  240.     /* Code Body                                                      */
  241.     /*----------------------------------------------------------------*/
  242.     ret_code = jdd_FSInitialize(&FileSysHandle);
  243.     if (ret_code != JC_OK)
  244.     {
  245.         return ret_code;
  246.     }
  247.     FileHandle = (JDD_FILE) jdd_FSOpen(FileSysHandle, (U16*) filePath, E_OPEN_READ_MODE);
  248.     jdd_FSGetSize(FileHandle, &uiFileSize);
  249.     provLength = uiFileSize;
  250.     prov_buffer_p = jdd_MemAlloc((provLength + 1), 1);
  251.     iNumberofItems = jdd_FSRead(prov_buffer_p, provLength, 1, FileHandle);
  252.     jdd_FSClose(FileHandle);
  253.     mmi_prov_handle_provisioning_data_ext(prov_buffer_p, provLength, (S8*) content_type_p);
  254.     jdd_MemFree(prov_buffer_p);
  255.     prov_buffer_p = NULL;
  256.     jdd_FSDeinitialize(FileSysHandle);
  257.     return ret_code;
  258. }
  259. /*****************************************************************************
  260.  * FUNCTION
  261.  *  mmi_prov_handle_provisioning_data_ext
  262.  * DESCRIPTION
  263.  *  It handles the prov. data buffer received
  264.  *  based on if it is an OMA or Nokia format, a popup is shown if max queue size is reached
  265.  * PARAMETERS
  266.  *  prov_buffer_p       [IN]        
  267.  *  prov_length         [IN]        
  268.  *  content_type_p      [IN]        
  269.  * RETURNS
  270.  *  void
  271.  *****************************************************************************/
  272. void mmi_prov_handle_provisioning_data_ext(S8 *prov_buffer_p, U32 prov_length, S8 *content_type_p)
  273. {
  274.     /*----------------------------------------------------------------*/
  275.     /* Local Variables                                                */
  276.     /*----------------------------------------------------------------*/
  277.     /*----------------------------------------------------------------*/
  278.     /* Code Body                                                      */
  279.     /*----------------------------------------------------------------*/
  280.     if (g_prov_data_queue_size == PROV_MAX_NBR_DOCUMENTS)
  281.     {
  282.         DisplayPopup(
  283.             (PU8) GetString(STR_ID_PROV_MAX_QUE_SIZE),
  284.             IMG_GLOBAL_WARNING,
  285.             1,
  286.             UI_POPUP_NOTIFYDURATION_TIME,
  287.             WARNING_TONE);
  288.         return;
  289.     }
  290.     else
  291.     {
  292.         if (mmi_prov_check_if_substring(content_type_p, APPLICATION_VND_WAP_CONNECTIVITY_WBXML) == 0)
  293.         {
  294.             g_prov_instal_stringID = STR_ID_PROV_INSTALL_SETTINGS;
  295. g_prov_newsetting_stringID = STR_ID_PROV_NEW_SETTINGS;
  296.             mmi_prov_oma_handle_settings(prov_buffer_p, prov_length, content_type_p);
  297.         }
  298.         else if (mmi_prov_check_if_substring(content_type_p, APPLICATION_X_WAP_PROV_BROWSER_SETTINGS) == 0)
  299.         {
  300.             g_prov_instal_stringID = STR_ID_PROV_INSTALL_SETTINGS;
  301. g_prov_newsetting_stringID = STR_ID_PROV_NEW_SETTINGS;
  302.             mmi_prov_NE_handle_WSP_headers((U8 **) & prov_buffer_p, (U32*) & prov_length);
  303.             mmi_prov_NE_handle_settings(prov_buffer_p, prov_length);
  304.         }
  305.         else if (mmi_prov_check_if_substring(content_type_p, APPLICATION_X_WAP_PROV_BROWSER_BOOKMARKS) == 0)
  306.         {
  307.             g_prov_instal_stringID = STR_ID_PROV_INSTALL_BOOKMARK;
  308. g_prov_newsetting_stringID = STR_ID_PROV_NEW_BOOKMARK;
  309.             mmi_prov_NE_handle_WSP_headers((U8 **) & prov_buffer_p, (U32*) & prov_length);
  310.             mmi_prov_NE_handle_settings(prov_buffer_p, prov_length);
  311.         }
  312.     }
  313. }
  314. /*****************************************************************************
  315.  * FUNCTION
  316.  *  mmi_prov_show_new_settings_popup
  317.  * DESCRIPTION
  318.  *  This will take the control to the Idle screen or will show an new settings popup screen
  319.  * PARAMETERS
  320.  *  void
  321.  * RETURNS
  322.  *  void
  323.  *****************************************************************************/
  324. void mmi_prov_show_new_settings_popup(void)
  325. {
  326.     /*----------------------------------------------------------------*/
  327.     /* Local Variables                                                */
  328.     /*----------------------------------------------------------------*/
  329.     /*----------------------------------------------------------------*/
  330.     /* Code Body                                                      */
  331.     /*----------------------------------------------------------------*/
  332.     TurnOnBacklight(1);
  333.     g_prov_settings_present = 0x01;
  334.     if ((g_idle_context.IsOnIdleScreen || g_idle_context.ScreenSaverRunFlag) && !isInCall())
  335.     {
  336.         PlayMessageArrivalTone();
  337.         /* EntryIdleScreen(); */
  338.            if (g_prov_data_queue_size == 1)
  339. {
  340.         mmi_prov_show_install_settings_dialog();
  341. }
  342.     }
  343.     else
  344.     {
  345. if ((!isInCall()) && (!AlmIsTonePlaying()))
  346.         {
  347. if(GetActiveScreenId() != SCR_ID_PROV_INSTALL_NEW_SETTINGS && 
  348. GetActiveScreenId() != SCR_ID_PROV_PROF_NEW_SETTINGS_POPUP)
  349.         {
  350.             //commented by tk
  351.             // PlayMessageArrivalTone();
  352.             // mmi_prov_entry_show_new_settings_popup();
  353.             mmi_msg_entry_new_msg_popup(MSG_NEW_PROV_SETTING);  /* Added by Tk */
  354.         }
  355. else
  356. {
  357. PlayMessageArrivalTone();
  358. }
  359.         }
  360.     }
  361. }
  362. /*****************************************************************************
  363.  * FUNCTION
  364.  *  mmi_prov_entry_show_new_settings_popup
  365.  * DESCRIPTION
  366.  *  This is entry function for New Settings popup
  367.  * PARAMETERS
  368.  *  void
  369.  * RETURNS
  370.  *  void
  371.  *****************************************************************************/
  372. void mmi_prov_entry_show_new_settings_popup(void)
  373. {
  374.     /*----------------------------------------------------------------*/
  375.     /* Local Variables                                                */
  376.     /*----------------------------------------------------------------*/
  377.     /*----------------------------------------------------------------*/
  378.     /* Code Body                                                      */
  379.     /*----------------------------------------------------------------*/
  380.     EntryNewScreen(SCR_ID_PROV_PROF_NEW_SETTINGS_POPUP, NULL, mmi_prov_entry_show_new_settings_popup, NULL);
  381.     /* ShowCategory65Screen((PU8) GetString(STR_ID_PROV_NEW_SETTINGS), IMG_ID_PROV_NEW_NOTIFICATION_MSG, NULL); */
  382. //    ShowCategory65Screen((PU8) GetString(STR_ID_PROV_NEW_SETTINGS), IMG_NEW_MESSAGE_NOTIFICATION_MSG, NULL);
  383. // ShowCategory164Screen(STR_GLOBAL_OK, IMG_GLOBAL_OK, STR_GLOBAL_CANCEL, IMG_ID_PROV_CANCEL, (U16) STR_ID_PROV_INSTALL_SETTINGS, IMG_GLOBAL_QUESTION, NULL);
  384. ShowCategory123Screen(
  385.         0,
  386.         0,
  387.         STR_GLOBAL_OK,
  388.         IMG_GLOBAL_OK,
  389.         STR_GLOBAL_CANCEL,
  390.         IMG_ID_PROV_CANCEL,
  391.         STR_ID_PROV_INSTALL_SETTINGS,
  392.         IMG_GLOBAL_QUESTION,
  393.         0);
  394.     /*
  395.      * End key is also disabled. We set GoBackHistory on key up such that KeyUp indication wont be used 
  396.      * * by the overlapped screen. 
  397.      */
  398.     /* SetGroupKeyHandler(NULL,(PU16)PresentAllKeys,(U8) TOTAL_KEYS, (U16) KEY_EVENT_UP); */
  399. //    SetGroupKeyHandler(GoBackHistory, (PU16) PresentAllKeys, (U8) TOTAL_KEYS, (U16) KEY_EVENT_UP);
  400. //    SetGroupKeyHandler(NULL, (PU16) PresentAllKeys, (U8) TOTAL_KEYS, (U16) KEY_EVENT_DOWN);
  401.     SetLeftSoftkeyFunction(mmi_prov_oma_handle_install_application, KEY_EVENT_UP);
  402.     SetRightSoftkeyFunction(mmi_prov_handle_cancel, KEY_EVENT_UP);
  403. }
  404. /*****************************************************************************
  405.  * FUNCTION
  406.  *  mmi_prov_show_install_settings_dialog
  407.  * DESCRIPTION
  408.  *  This displays Confirmation screen for the settings to be installed or cancled
  409.  * PARAMETERS
  410.  *  void
  411.  * RETURNS
  412.  *  void
  413.  *****************************************************************************/
  414. void mmi_prov_show_install_settings_dialog(void)
  415. {
  416.     /*----------------------------------------------------------------*/
  417.     /* Local Variables                                                */
  418.     /*----------------------------------------------------------------*/
  419.     /*----------------------------------------------------------------*/
  420.     /* Code Body                                                      */
  421.     /*----------------------------------------------------------------*/
  422. #if 0
  423. /* under construction !*/
  424. /* under construction !*/
  425. /* under construction !*/
  426. /* under construction !*/
  427. /* under construction !*/
  428. /* under construction !*/
  429. /* under construction !*/
  430. /* under construction !*/
  431. /* under construction !*/
  432. #endif /* 0 */ 
  433. mmi_prov_set_current_instal_stringID();
  434.     EntryNewScreen(SCR_ID_PROV_INSTALL_NEW_SETTINGS, NULL, mmi_prov_show_install_settings_dialog, NULL);
  435.     ShowCategory123Screen(
  436.         0,
  437.         0,
  438.         STR_GLOBAL_OK,
  439.         IMG_GLOBAL_OK,
  440.         STR_GLOBAL_CANCEL,
  441.         IMG_ID_PROV_CANCEL,
  442.         /* STR_ID_PROV_INSTALL_SETTINGS, */ g_prov_instal_stringID,
  443.         IMG_GLOBAL_QUESTION,
  444.         0);
  445.     SetLeftSoftkeyFunction(mmi_prov_handle_ok, KEY_EVENT_UP);
  446.     SetRightSoftkeyFunction(mmi_prov_handle_cancel, KEY_EVENT_UP);
  447.     SetKeyHandler(mmi_prov_handle_cancel, KEY_END, KEY_EVENT_DOWN);
  448. }
  449. /*****************************************************************************
  450.  * FUNCTION
  451.  *  mmi_prov_handle_ok
  452.  * DESCRIPTION
  453.  *  This deals with the sequences that happen when a user accepts the setings to be installed
  454.  *  in this the wbxml prov. doc is decoded and information is extracted from it
  455.  * PARAMETERS
  456.  *  void
  457.  * RETURNS
  458.  *  void
  459.  *****************************************************************************/
  460. void mmi_prov_handle_ok(void)
  461. {
  462.     /*----------------------------------------------------------------*/
  463.     /* Local Variables                                                */
  464.     /*----------------------------------------------------------------*/
  465.     struct xml XMLInfo = {0, };
  466.     WBXML_HANDLE WBXMLHandle;
  467.     PROV_RETCODE i_ret = PROV_OK;
  468.     prov_queue_data_struct *prov_data_p;
  469.     /*----------------------------------------------------------------*/
  470.     /* Code Body                                                      */
  471.     /*----------------------------------------------------------------*/
  472.     g_prov_setting_type = 0x00; /* dara  reset all the previous values */
  473.     g_prov_setting_type |= PROV_BRS_SETTINGS;
  474.     prov_data_p = prov_data_queue[g_prov_data_queue_current_item];
  475.     //      i_ret = jdi_XMLMakeTree ((JC_UINT8 *) prov_data_p->pbuffer, prov_data_p->plength, NULL, &XMLInfo, NULL, 0, 0, &XMLHandle) ;
  476.     //dara temp end 
  477.     i_ret = jdi_WBXMLDecode((U8*) prov_data_p->pbuffer, prov_data_p->plength, &XMLInfo, NULL, 0, 0, &WBXMLHandle);
  478.     if (i_ret != PROV_OK)
  479.     {
  480.         g_prov_timeout_hdlr = mmi_prov_handle_error_state_callback;
  481.         PRINT_INFORMATION(("Inside mmi_prov_handle_ok, checks WBXMLDecode"));
  482.         DisplayPopupCallBack(
  483.             (PU8) GetString(STR_ID_PROV_INVALID_SETTINGS),
  484.             IMG_GLOBAL_ERROR,
  485.             1,
  486.             PROV_INVALID_SETTINGS_TIMEOUT,
  487.             ERROR_TONE,
  488.             g_prov_timeout_hdlr);
  489. goto error_handle;
  490.     }
  491. mmi_prov_handle_data_account_mem_free();/*Added by tk to handle empty APN case*/
  492.     mmi_prov_handle_data_account_mem_allocate();
  493.     mmi_prov_handle_profile_mem_allocate();
  494.     if (strcmp(XMLInfo.root->name, NE_ROOT_TAG) == 0)
  495.     {
  496.         g_prov_setting_type |= PROV_NOKIA_SETTINGS;
  497.         i_ret = mmi_prov_NE_insert_settings_parm(XMLInfo.root);
  498.         if (i_ret == PROV_ERR)
  499.         {
  500.             g_prov_timeout_hdlr = mmi_prov_handle_error_state_callback;
  501.             PRINT_INFORMATION(("Inside mmi_prov_handle_ok, checks mmi_prov_NE_insert_settings_parm"));
  502.             DisplayPopupCallBack(
  503.                 (PU8) GetString(STR_ID_PROV_INVALID_SETTINGS),
  504.                 IMG_GLOBAL_ERROR,
  505.                 1,
  506.                 PROV_INVALID_SETTINGS_TIMEOUT,
  507.                 ERROR_TONE,
  508.                 g_prov_timeout_hdlr);
  509.             goto error_handle;
  510.         }
  511.     }
  512.     else if (strcmp(XMLInfo.root->name, OMA_ROOT_TAG) == 0)
  513.     {
  514.         g_prov_setting_type |= PROV_OMA_SETTINGS;
  515.         i_ret = mmi_prov_oma_insert_settings_parm(XMLInfo.root);
  516.         if ((i_ret == PROV_OK) && (g_prov_appl_flag != PROV_NO_APPLICATION))
  517.         {
  518.             mmi_prov_oma_handle_install_application();
  519.             goto error_handle;
  520.         }
  521.         else
  522.         {
  523.             g_prov_timeout_hdlr = mmi_prov_handle_error_state_callback;
  524.             PRINT_INFORMATION(("Inside mmi_prov_handle_ok, checks mmi_prov_oma_insert_settings_parm"));
  525.             DisplayPopupCallBack(
  526.                 (PU8) GetString(STR_ID_PROV_INVALID_SETTINGS),
  527.                 IMG_GLOBAL_ERROR,
  528.                 1,
  529.                 PROV_INVALID_SETTINGS_TIMEOUT,
  530.                 ERROR_TONE,
  531.                 g_prov_timeout_hdlr);
  532.             goto error_handle;
  533.         }
  534.     }
  535.     else
  536.     {
  537.         mmi_prov_handle_error_state();
  538.         goto error_handle;
  539.     }
  540.     if (g_prov_setting_type & PROV_BOOKMARK_SETTINGS)
  541.     {
  542.         g_prov_timeout_hdlr = mmi_prov_handle_error_state_callback;
  543.         if (i_ret == PROV_BKM_OK)
  544.         {
  545.             DisplayPopupCallBack(
  546.                 (PU8) GetString(STR_ID_PROV_BOOKMARK_STORED),
  547.                 IMG_GLOBAL_ACTIVATED,
  548.                 1,
  549.                 UI_POPUP_NOTIFYDURATION_TIME,
  550.                 SUCCESS_TONE,
  551.                 g_prov_timeout_hdlr);
  552.         }
  553.         else if (i_ret == PROV_BKM_FULL)
  554.         {
  555.             DisplayPopupCallBack(
  556.                 (PU8) GetString(STR_ID_PROV_BOOKMARK_FULL),
  557.                 IMG_GLOBAL_WARNING,
  558.                 1,
  559.                 UI_POPUP_NOTIFYDURATION_TIME,
  560.                 WARNING_TONE,
  561.                 g_prov_timeout_hdlr);
  562.         }
  563.         else if (i_ret == PROV_BKM_INVALID)
  564.         {
  565.             DisplayPopupCallBack(
  566.                 (PU8) GetString(STR_ID_PROV_BOOKMARK_INVALID),
  567.                 IMG_GLOBAL_ERROR,
  568.                 1,
  569.                 UI_POPUP_NOTIFYDURATION_TIME,
  570.                 ERROR_TONE,
  571.                 g_prov_timeout_hdlr);
  572.         }
  573.         goto error_handle;
  574.     }
  575.     if ((i_ret == PROV_ERR) || (g_prov_bearer == PROV_INVALID_BEARER))
  576.     {
  577.         g_prov_timeout_hdlr = mmi_prov_handle_error_state_callback;
  578.         DisplayPopupCallBack(
  579.             (PU8) GetString(STR_ID_PROV_INVALID_BEARER),
  580.             IMG_GLOBAL_ERROR,
  581.             1,
  582.             PROV_INVALID_SETTINGS_TIMEOUT,
  583.             ERROR_TONE,
  584.             g_prov_timeout_hdlr);
  585.         goto error_handle;
  586.     }
  587.     mmi_prov_show_profile_list_menu();
  588. error_handle:
  589. jdi_XMLFreeTree (&XMLInfo) ;
  590. }
  591. /*****************************************************************************
  592.  * FUNCTION
  593.  *  mmi_prov_set_curent_instal_stringID
  594.  * DESCRIPTION
  595.  *  This API is to set the current instal string id to display.
  596.  * PARAMETERS
  597.  *  void
  598.  * RETURNS
  599.  *  void
  600.  *****************************************************************************/
  601. void mmi_prov_set_current_instal_stringID(void)
  602. {
  603. if(prov_data_queue[g_prov_data_queue_current_item])
  604. {
  605. g_prov_instal_stringID = prov_data_queue[g_prov_data_queue_current_item]->instal_stringID;
  606. }
  607. }
  608. /*****************************************************************************
  609.  * FUNCTION
  610.  *  mmi_prov_handle_get_next_prov_data
  611.  * DESCRIPTION
  612.  *  This API is to remove the present entry from the queue & get the next provisioing doc if any
  613.  * PARAMETERS
  614.  *  void
  615.  * RETURNS
  616.  *  void
  617.  *****************************************************************************/
  618. void mmi_prov_handle_get_next_prov_data(void)
  619. {
  620.     /*----------------------------------------------------------------*/
  621.     /* Local Variables                                                */
  622.     /*----------------------------------------------------------------*/
  623.     /*----------------------------------------------------------------*/
  624.     /* Code Body                                                      */
  625.     /*----------------------------------------------------------------*/
  626. g_prov_pend_set = 0;
  627.     g_prov_bearer = PROV_INVALID_BEARER;
  628.     g_prov_setting_type |= PROV_BRS_SETTINGS;
  629.     g_ph_cntx.profile_module = PH_PROFILE_NULL;
  630.     if (g_prov_data_queue_size > 0)
  631.     {
  632.         mmi_prov_delete_queue_entry();
  633.     }
  634.     mmi_prov_handle_profile_mem_free();
  635.     if (g_prov_data_queue_size > 0)
  636.     {
  637.         /* Do not merge with the above condition ..its intentional */
  638.         mmi_prov_show_install_settings_dialog();
  639.     }
  640.     else
  641.     {
  642.         /* EntryIdleScreen(); */
  643.         DisplayIdleScreen();
  644.         /* DeleteUptoScrID(IDLE_SCREEN_ID); */
  645.     }
  646. }
  647. /*****************************************************************************
  648.  * FUNCTION
  649.  *  mmi_prov_handle_error_state
  650.  * DESCRIPTION
  651.  *  It handles the error state if any occured during installing the settings
  652.  * PARAMETERS
  653.  *  void
  654.  * RETURNS
  655.  *  void
  656.  *****************************************************************************/
  657. void mmi_prov_handle_error_state(void)
  658. {
  659.     /*----------------------------------------------------------------*/
  660.     /* Local Variables                                                */
  661.     /*----------------------------------------------------------------*/
  662.     /*----------------------------------------------------------------*/
  663.     /* Code Body                                                      */
  664.     /*----------------------------------------------------------------*/
  665.     mmi_prov_handle_get_next_prov_data();
  666. }
  667. /*****************************************************************************
  668.  * FUNCTION
  669.  *  mmi_prov_handle_error_state_callback
  670.  * DESCRIPTION
  671.  *  It handles the error state if any occured during installing the settings
  672.  * PARAMETERS
  673.  *  void
  674.  * RETURNS
  675.  *  void
  676.  *****************************************************************************/
  677. void mmi_prov_handle_error_state_callback(void)
  678. {
  679.     /*----------------------------------------------------------------*/
  680.     /* Local Variables                                                */
  681.     /*----------------------------------------------------------------*/
  682.     /*----------------------------------------------------------------*/
  683.     /* Code Body                                                      */
  684.     /*----------------------------------------------------------------*/
  685.     /* GoBackHistory(); */
  686.     mmi_prov_handle_get_next_prov_data();
  687. }
  688. /*****************************************************************************
  689.  * FUNCTION
  690.  *  mmi_prov_handle_cancel
  691.  * DESCRIPTION
  692.  *  This API is to handle if the RSK cancel is pressed for the new settings arrived confirmation screen
  693.  * PARAMETERS
  694.  *  void
  695.  * RETURNS
  696.  *  void
  697.  *****************************************************************************/
  698. void mmi_prov_handle_cancel(void)
  699. {
  700.     /*----------------------------------------------------------------*/
  701.     /* Local Variables                                                */
  702.     /*----------------------------------------------------------------*/
  703.     /*----------------------------------------------------------------*/
  704.     /* Code Body                                                      */
  705.     /*----------------------------------------------------------------*/
  706.     mmi_prov_handle_get_next_prov_data();
  707. }
  708. /*****************************************************************************
  709.  * FUNCTION
  710.  *  mmi_prov_show_profile_list_menu
  711.  * DESCRIPTION
  712.  *  This API is to get the profile list menu (browser or MMS)
  713.  * PARAMETERS
  714.  *  void
  715.  * RETURNS
  716.  *  void
  717.  *****************************************************************************/
  718. void mmi_prov_show_profile_list_menu(void)
  719. {
  720.     /*----------------------------------------------------------------*/
  721.     /* Local Variables                                                */
  722.     /*----------------------------------------------------------------*/
  723.     /*----------------------------------------------------------------*/
  724.     /* Code Body                                                      */
  725.     /*----------------------------------------------------------------*/
  726.     if ((g_prov_setting_type & PROV_BRS_SETTINGS) && (!(g_prov_setting_type & PROV_MMS_SETTINGS)))
  727.     {
  728.         mmi_ph_pre_entry_show_profile_list_menu(PH_BROWSER_PROV_PROFILE);
  729.     }
  730.     else if (g_prov_setting_type & PROV_MMS_SETTINGS)
  731.     {
  732.         mmi_ph_pre_entry_show_profile_list_menu(PH_MMS_PROV_PROFILE);
  733.     }
  734. }
  735. /*****************************************************************************
  736.  * FUNCTION
  737.  *  mmi_prov_get_dataaccount_data
  738.  * DESCRIPTION
  739.  *  This API gets the CSD or GPRS data account list for the user to select from
  740.  * PARAMETERS
  741.  *  void
  742.  * RETURNS
  743.  *  void
  744.  *****************************************************************************/
  745. void mmi_prov_get_dataaccount_data(void)
  746. {
  747.     /*----------------------------------------------------------------*/
  748.     /* Local Variables                                                */
  749.     /*----------------------------------------------------------------*/
  750.     /*----------------------------------------------------------------*/
  751.     /* Code Body                                                      */
  752.     /*----------------------------------------------------------------*/
  753. g_prov_pend_set = 1;
  754.     if (g_prov_bearer == PROV_CSD_BEARER)
  755.     {
  756.         mmi_dtcnt_select_account(mmi_ph_prof_callback, g_ph_title_img_id, DATA_ACCOUNT_BEARER_CSD);
  757.     }
  758.     else if (g_prov_bearer == PROV_GPRS_BEARER)
  759.     {
  760.         mmi_dtcnt_select_account(mmi_ph_prof_callback, g_ph_title_img_id, DATA_ACCOUNT_BEARER_GPRS);
  761.     }
  762. }
  763. #if 0
  764. /* under construction !*/
  765. /* under construction !*/
  766. /* under construction !*/
  767. /* under construction !*/
  768. /* under construction !*/
  769. /* under construction !*/
  770. /* under construction !*/
  771. /* under construction !*/
  772. /* under construction !*/
  773. /* under construction !*/
  774. /* under construction !*/
  775. /* under construction !*/
  776. /* under construction !*/
  777. #ifdef __GPRS_MODE__
  778. /* under construction !*/
  779. /* under construction !*/
  780. /* under construction !*/
  781. /* under construction !*/
  782. /* under construction !*/
  783. /* under construction !*/
  784. /* under construction !*/
  785. /* under construction !*/
  786. /* under construction !*/
  787. /* under construction !*/
  788. /* under construction !*/
  789. /* under construction !*/
  790. /* under construction !*/
  791. /* under construction !*/
  792. /* under construction !*/
  793. /* under construction !*/
  794. /* under construction !*/
  795. /* under construction !*/
  796. /* under construction !*/
  797. /* under construction !*/
  798. /* under construction !*/
  799. /* under construction !*/
  800. /* under construction !*/
  801. /* under construction !*/
  802. /* under construction !*/
  803. /* under construction !*/
  804. /* under construction !*/
  805. #endif /* __GPRS_MODE__ */ 
  806. /* under construction !*/
  807. /* under construction !*/
  808. /* under construction !*/
  809. /* under construction !*/
  810. /* under construction !*/
  811. /* under construction !*/
  812. /* under construction !*/
  813. /* under construction !*/
  814. /* under construction !*/
  815. /* under construction !*/
  816. /* under construction !*/
  817. /* under construction !*/
  818. /* under construction !*/
  819. /* under construction !*/
  820. /* under construction !*/
  821. /* under construction !*/
  822. /* under construction !*/
  823. /* under construction !*/
  824. /* under construction !*/
  825. /* under construction !*/
  826. /* under construction !*/
  827. #ifdef __GPRS_MODE__
  828. /* under construction !*/
  829. /* under construction !*/
  830. /* under construction !*/
  831. /* under construction !*/
  832. /* under construction !*/
  833. /* under construction !*/
  834. /* under construction !*/
  835. /* under construction !*/
  836. /* under construction !*/
  837. /* under construction !*/
  838. /* under construction !*/
  839. /* under construction !*/
  840. /* under construction !*/
  841. /* under construction !*/
  842. /* under construction !*/
  843. /* under construction !*/
  844. /* under construction !*/
  845. /* under construction !*/
  846. /* under construction !*/
  847. /* under construction !*/
  848. /* under construction !*/
  849. /* under construction !*/
  850. /* under construction !*/
  851. /* under construction !*/
  852. /* under construction !*/
  853. /* under construction !*/
  854. /* under construction !*/
  855. /* under construction !*/
  856. /* under construction !*/
  857. /* under construction !*/
  858. /* under construction !*/
  859. /* under construction !*/
  860. /* under construction !*/
  861. /* under construction !*/
  862. /* under construction !*/
  863. /* under construction !*/
  864. /* under construction !*/
  865. /* under construction !*/
  866. /* under construction !*/
  867. /* under construction !*/
  868. /* under construction !*/
  869. /* under construction !*/
  870. /* under construction !*/
  871. /* under construction !*/
  872. /* under construction !*/
  873. /* under construction !*/
  874. /* under construction !*/
  875. /* under construction !*/
  876. /* under construction !*/
  877. /* under construction !*/
  878. /* under construction !*/
  879. /* under construction !*/
  880. /* under construction !*/
  881. /* under construction !*/
  882. /* under construction !*/
  883. /* under construction !*/
  884. /* under construction !*/
  885. /* under construction !*/
  886. /* under construction !*/
  887. /* under construction !*/
  888. /* under construction !*/
  889. /* under construction !*/
  890. /* under construction !*/
  891. /* under construction !*/
  892. /* under construction !*/
  893. /* under construction !*/
  894. /* under construction !*/
  895. /* under construction !*/
  896. /* under construction !*/
  897. /* under construction !*/
  898. #endif /* __GPRS_MODE__ */ 
  899. /* under construction !*/
  900. /* under construction !*/
  901. /* under construction !*/
  902. /* under construction !*/
  903. /* under construction !*/
  904. /* under construction !*/
  905. /* under construction !*/
  906. /* under construction !*/
  907. /* under construction !*/
  908. /* under construction !*/
  909. /* under construction !*/
  910. /* under construction !*/
  911. /* under construction !*/
  912. /* under construction !*/
  913. /* under construction !*/
  914. /* under construction !*/
  915. /* under construction !*/
  916. /* under construction !*/
  917. /* under construction !*/
  918. /* under construction !*/
  919. /* under construction !*/
  920. /* under construction !*/
  921. /* under construction !*/
  922. /* under construction !*/
  923. /* under construction !*/
  924. /* under construction !*/
  925. /* under construction !*/
  926. /* under construction !*/
  927. /* under construction !*/
  928. /* under construction !*/
  929. /* under construction !*/
  930. /* under construction !*/
  931. /* under construction !*/
  932. /* under construction !*/
  933. /* under construction !*/
  934. /* under construction !*/
  935. /* under construction !*/
  936. /* under construction !*/
  937. /* under construction !*/
  938. /* under construction !*/
  939. /* under construction !*/
  940. /* under construction !*/
  941. /* under construction !*/
  942. /* under construction !*/
  943. /* under construction !*/
  944. /* under construction !*/
  945. /* under construction !*/
  946. /* under construction !*/
  947. /* under construction !*/
  948. /* under construction !*/
  949. /* under construction !*/
  950. /* under construction !*/
  951. /* under construction !*/
  952. /* under construction !*/
  953. /* under construction !*/
  954. /* under construction !*/
  955. /* under construction !*/
  956. /* under construction !*/
  957. /* under construction !*/
  958. /* under construction !*/
  959. /* under construction !*/
  960. /* under construction !*/
  961. /* under construction !*/
  962. /* under construction !*/
  963. /* under construction !*/
  964. /* under construction !*/
  965. /* under construction !*/
  966. /* under construction !*/
  967. /* under construction !*/
  968. /* under construction !*/
  969. /* under construction !*/
  970. /* under construction !*/
  971. /* under construction !*/
  972. /* under construction !*/
  973. /* under construction !*/
  974. /* under construction !*/
  975. /* under construction !*/
  976. /* under construction !*/
  977. /* under construction !*/
  978. /* under construction !*/
  979. /* under construction !*/
  980. /* under construction !*/
  981. /* under construction !*/
  982. /* under construction !*/
  983. /* under construction !*/
  984. /* under construction !*/
  985. /* under construction !*/
  986. /* under construction !*/
  987. /* under construction !*/
  988. /* under construction !*/
  989. /* under construction !*/
  990. /* under construction !*/
  991. /* under construction !*/
  992. /* under construction !*/
  993. /* under construction !*/
  994. /* under construction !*/
  995. /* under construction !*/
  996. /* under construction !*/
  997. /* under construction !*/
  998. /* under construction !*/
  999. /* under construction !*/
  1000. /* under construction !*/
  1001. /* under construction !*/
  1002. /* under construction !*/
  1003. /* under construction !*/
  1004. /* under construction !*/
  1005. /* under construction !*/
  1006. /* under construction !*/
  1007. /* under construction !*/
  1008. /* under construction !*/
  1009. /* under construction !*/
  1010. /* under construction !*/
  1011. /* under construction !*/
  1012. /* under construction !*/
  1013. /* under construction !*/
  1014. /* under construction !*/
  1015. /* under construction !*/
  1016. /* under construction !*/
  1017. /* under construction !*/
  1018. /* under construction !*/
  1019. /* under construction !*/
  1020. /* under construction !*/
  1021. /* under construction !*/
  1022. /* under construction !*/
  1023. /* under construction !*/
  1024. /* under construction !*/
  1025. /* under construction !*/
  1026. /* under construction !*/
  1027. /* under construction !*/
  1028. /* under construction !*/
  1029. /* under construction !*/
  1030. /* under construction !*/
  1031. /* under construction !*/
  1032. /* under construction !*/
  1033. /* under construction !*/
  1034. /* under construction !*/
  1035. /* under construction !*/
  1036. /* under construction !*/
  1037. /* under construction !*/
  1038. /* under construction !*/
  1039. /* under construction !*/
  1040. /* under construction !*/
  1041. /* under construction !*/
  1042. /* under construction !*/
  1043. /* under construction !*/
  1044. /* under construction !*/
  1045. /* under construction !*/
  1046. /* under construction !*/
  1047. /* under construction !*/
  1048. /* under construction !*/
  1049. /* under construction !*/
  1050. /* under construction !*/
  1051. /* under construction !*/
  1052. /* under construction !*/
  1053. /* under construction !*/
  1054. /* under construction !*/
  1055. /* under construction !*/
  1056. /* under construction !*/
  1057. /* under construction !*/
  1058. /* under construction !*/
  1059. /* under construction !*/
  1060. /* under construction !*/
  1061. /* under construction !*/
  1062. /* under construction !*/
  1063. /* under construction !*/
  1064. /* under construction !*/
  1065. /* under construction !*/
  1066. /* under construction !*/
  1067. /* under construction !*/
  1068. /* under construction !*/
  1069. /* under construction !*/
  1070. /* under construction !*/
  1071. /* under construction !*/
  1072. /* under construction !*/
  1073. /* under construction !*/
  1074. /* under construction !*/
  1075. /* under construction !*/
  1076. /* under construction !*/
  1077. /* under construction !*/
  1078. /* under construction !*/
  1079. /* under construction !*/
  1080. /* under construction !*/
  1081. /* under construction !*/
  1082. /* under construction !*/
  1083. /* under construction !*/
  1084. /* under construction !*/
  1085. /* under construction !*/
  1086. /* under construction !*/
  1087. /* under construction !*/
  1088. /* under construction !*/
  1089. /* under construction !*/
  1090. /* under construction !*/
  1091. /* under construction !*/
  1092. /* under construction !*/
  1093. /* under construction !*/
  1094. /* under construction !*/
  1095. /* under construction !*/
  1096. /* under construction !*/
  1097. /* under construction !*/
  1098. /* under construction !*/
  1099. /* under construction !*/
  1100. /* under construction !*/
  1101. /* under construction !*/
  1102. /* under construction !*/
  1103. /* under construction !*/
  1104. /* under construction !*/
  1105. /* under construction !*/
  1106. /* under construction !*/
  1107. /* under construction !*/
  1108. /* under construction !*/
  1109. /* under construction !*/
  1110. /* under construction !*/
  1111. /* under construction !*/
  1112. /* under construction !*/
  1113. /* under construction !*/
  1114. /* under construction !*/
  1115. /* under construction !*/
  1116. /* under construction !*/
  1117. /* under construction !*/
  1118. /* under construction !*/
  1119. /* under construction !*/
  1120. /* under construction !*/
  1121. /* under construction !*/
  1122. /* under construction !*/
  1123. /* under construction !*/
  1124. /* under construction !*/
  1125. /* under construction !*/
  1126. /* under construction !*/
  1127. /* under construction !*/
  1128. /* under construction !*/
  1129. /* under construction !*/
  1130. /* under construction !*/
  1131. /* under construction !*/
  1132. /* under construction !*/
  1133. /* under construction !*/
  1134. /* under construction !*/
  1135. /* under construction !*/
  1136. /* under construction !*/
  1137. /* under construction !*/
  1138. /* under construction !*/
  1139. /* under construction !*/
  1140. #endif /* 0 */ 
  1141. /*****************************************************************************
  1142.  * FUNCTION
  1143.  *  mmi_prov_prof_save_gprs_data_acct
  1144.  * DESCRIPTION
  1145.  *  This is API for sending the Set request to L4 for the selected GPRS data acount
  1146.  * PARAMETERS
  1147.  *  void
  1148.  * RETURNS
  1149.  *  void
  1150.  *****************************************************************************/
  1151. void mmi_prov_prof_save_gprs_data_acct(void)
  1152. {
  1153.     /*----------------------------------------------------------------*/
  1154.     /* Local Variables                                                */
  1155.     /*----------------------------------------------------------------*/
  1156.     /*----------------------------------------------------------------*/
  1157.     /* Code Body                                                      */
  1158.     /*----------------------------------------------------------------*/
  1159.     mmi_prov_set_gprs_req();
  1160. }
  1161. /*****************************************************************************
  1162.  * FUNCTION
  1163.  *  mmi_prov_prof_save_csd_data_acct
  1164.  * DESCRIPTION
  1165.  *  This is API for sending the Set request to L4 for the selected CSD data acount
  1166.  * PARAMETERS
  1167.  *  void
  1168.  * RETURNS
  1169.  *  void
  1170.  *****************************************************************************/
  1171. void mmi_prov_prof_save_csd_data_acct(void)
  1172. {
  1173.     /*----------------------------------------------------------------*/
  1174.     /* Local Variables                                                */
  1175.     /*----------------------------------------------------------------*/
  1176.     /*----------------------------------------------------------------*/
  1177.     /* Code Body                                                      */
  1178.     /*----------------------------------------------------------------*/
  1179.     mmi_prov_set_csd_req();
  1180. }
  1181. /*****************************************************************************
  1182.  * FUNCTION
  1183.  *  mmi_prov_handle_back
  1184.  * DESCRIPTION
  1185.  *  To handle the BACK key pressed during the time of installation of received prov. settings
  1186.  * PARAMETERS
  1187.  *  void
  1188.  * RETURNS
  1189.  *  void
  1190.  *****************************************************************************/
  1191. void mmi_prov_handle_back(void)
  1192. {
  1193.     /*----------------------------------------------------------------*/
  1194.     /* Local Variables                                                */
  1195.     /*----------------------------------------------------------------*/
  1196.     /*----------------------------------------------------------------*/
  1197.     /* Code Body                                                      */
  1198.     /*----------------------------------------------------------------*/
  1199.     mmi_prov_handle_data_account_mem_free();
  1200.     if (g_prov_appl_flag > 0)
  1201.     {
  1202.         mmi_prov_oma_check_pending_application();
  1203.     }
  1204.     else
  1205.     {
  1206.         mmi_prov_handle_get_next_prov_data();
  1207.     }
  1208. }
  1209. /*****************************************************************************
  1210.  * FUNCTION
  1211.  *  mmi_prov_add_to_queue
  1212.  * DESCRIPTION
  1213.  *  This Add's the new settings received into the queue to be processed later on.
  1214.  * PARAMETERS
  1215.  *  prov_buffer_p       [IN]        Provisioing data buffer
  1216.  *  prov_length         [IN]        
  1217.  *  provLength(?)       [IN]        Buffer length
  1218.  * RETURNS
  1219.  *  void
  1220.  *****************************************************************************/
  1221. void mmi_prov_add_to_queue(S8 *prov_buffer_p, U32 prov_length)
  1222. {
  1223.     /*----------------------------------------------------------------*/
  1224.     /* Local Variables                                                */
  1225.     /*----------------------------------------------------------------*/
  1226.     /*----------------------------------------------------------------*/
  1227.     /* Code Body                                                      */
  1228.     /*----------------------------------------------------------------*/
  1229.     if (g_prov_data_queue_last_item >= PROV_MAX_NBR_DOCUMENTS)
  1230.     {
  1231.         g_prov_data_queue_last_item = 0;
  1232.     }
  1233.     prov_data_queue[g_prov_data_queue_last_item] =
  1234.         (prov_queue_data_struct*) jdd_MemAlloc(sizeof(prov_queue_data_struct), 1);
  1235.     prov_data_queue[g_prov_data_queue_last_item]->pbuffer = jdd_MemAlloc(prov_length, 1);
  1236.     memcpy(prov_data_queue[g_prov_data_queue_last_item]->pbuffer, prov_buffer_p, prov_length);
  1237.     prov_data_queue[g_prov_data_queue_last_item]->plength = prov_length;
  1238. prov_data_queue[g_prov_data_queue_last_item]->instal_stringID = g_prov_instal_stringID;
  1239.     g_prov_data_queue_last_item++;
  1240.     g_prov_data_queue_size++;
  1241. }
  1242. /*****************************************************************************
  1243.  * FUNCTION
  1244.  *  mmi_prov_delete_queue_entry
  1245.  * DESCRIPTION
  1246.  *  Deletes the current queue entry
  1247.  * PARAMETERS
  1248.  *  void
  1249.  * RETURNS
  1250.  *  void
  1251.  *****************************************************************************/
  1252. void mmi_prov_delete_queue_entry(void)
  1253. {
  1254.     /*----------------------------------------------------------------*/
  1255.     /* Local Variables                                                */
  1256.     /*----------------------------------------------------------------*/
  1257.     /*----------------------------------------------------------------*/
  1258.     /* Code Body                                                      */
  1259.     /*----------------------------------------------------------------*/
  1260.     if (prov_data_queue[g_prov_data_queue_current_item]->pbuffer)
  1261.     {
  1262.         jdd_MemFree(prov_data_queue[g_prov_data_queue_current_item]->pbuffer);
  1263.         prov_data_queue[g_prov_data_queue_current_item]->pbuffer = NULL;
  1264.     }
  1265.     if (prov_data_queue[g_prov_data_queue_current_item])
  1266.     {
  1267.         jdd_MemFree(prov_data_queue[g_prov_data_queue_current_item]);
  1268.         prov_data_queue[g_prov_data_queue_current_item] = NULL;
  1269.     }
  1270.     ++g_prov_data_queue_current_item;
  1271.     --g_prov_data_queue_size;
  1272.     if (g_prov_data_queue_current_item >= PROV_MAX_NBR_DOCUMENTS)
  1273.     {
  1274.         g_prov_data_queue_current_item = 0;
  1275.     }
  1276. }
  1277. /*****************************************************************************
  1278.  * FUNCTION
  1279.  *  mmi_prov_handle_terminate
  1280.  * DESCRIPTION
  1281.  *  THis API terminates the Provisoining module
  1282.  * PARAMETERS
  1283.  *  void
  1284.  * RETURNS
  1285.  *  void
  1286.  *****************************************************************************/
  1287. void mmi_prov_handle_terminate(void)
  1288. {
  1289.     /*----------------------------------------------------------------*/
  1290.     /* Local Variables                                                */
  1291.     /*----------------------------------------------------------------*/
  1292.     /*----------------------------------------------------------------*/
  1293.     /* Code Body                                                      */
  1294.     /*----------------------------------------------------------------*/
  1295.     while (g_prov_data_queue_size > 0)
  1296.     {
  1297.         if (prov_data_queue[g_prov_data_queue_current_item]->pbuffer)
  1298.         {
  1299.             jdd_MemFree(prov_data_queue[g_prov_data_queue_current_item]->pbuffer);
  1300.             prov_data_queue[g_prov_data_queue_current_item]->pbuffer = NULL;
  1301.         }
  1302.         if (prov_data_queue[g_prov_data_queue_current_item])
  1303.         {
  1304.             jdd_MemFree(prov_data_queue[g_prov_data_queue_current_item]);
  1305.             prov_data_queue[g_prov_data_queue_current_item] = NULL;
  1306.         }
  1307.         g_prov_data_queue_size--;
  1308.         g_prov_data_queue_current_item++;
  1309.         if (g_prov_data_queue_current_item >= PROV_MAX_NBR_DOCUMENTS)
  1310.         {
  1311.             g_prov_data_queue_current_item = 0;
  1312.         }
  1313.     }
  1314.     g_prov_bearer = PROV_INVALID_BEARER;
  1315.     g_prov_setting_type |= PROV_BRS_SETTINGS;
  1316.     mmi_prov_handle_data_account_mem_free();
  1317.     mmi_prov_handle_profile_mem_free();
  1318. }
  1319. /*****************************************************************************
  1320.  * FUNCTION
  1321.  *  mmi_prov_hilite_data_account
  1322.  * DESCRIPTION
  1323.  *  
  1324.  * PARAMETERS
  1325.  *  index       [IN]        
  1326.  * RETURNS
  1327.  *  void
  1328.  *****************************************************************************/
  1329. void mmi_prov_hilite_data_account(S32 index)
  1330. {
  1331.     /*----------------------------------------------------------------*/
  1332.     /* Local Variables                                                */
  1333.     /*----------------------------------------------------------------*/
  1334.     /*----------------------------------------------------------------*/
  1335.     /* Code Body                                                      */
  1336.     /*----------------------------------------------------------------*/
  1337.     g_prov_data_account_index = (U8) index;
  1338. }
  1339. /*****************************************************************************
  1340.  * FUNCTION
  1341.  *  mmi_prov_check_and_install_new_settings
  1342.  * DESCRIPTION
  1343.  *  THis Checks if there is any provisioning data availbale to be installed
  1344.  * PARAMETERS
  1345.  *  void
  1346.  * RETURNS
  1347.  *  U8
  1348.  *****************************************************************************/
  1349. U8 mmi_prov_check_and_install_new_settings(void)
  1350. {
  1351.     /*----------------------------------------------------------------*/
  1352.     /* Local Variables                                                */
  1353.     /*----------------------------------------------------------------*/
  1354.     /*----------------------------------------------------------------*/
  1355.     /* Code Body                                                      */
  1356.     /*----------------------------------------------------------------*/
  1357. if(g_prov_pend_set)
  1358. {
  1359. mmi_prov_handle_get_next_prov_data();
  1360. }
  1361.     if (g_prov_settings_present)
  1362.     {
  1363.         if (g_prov_data_queue_size > 0)
  1364.         {
  1365.             /* mmi_prov_show_install_settings_dialog(); */
  1366.             return 1;
  1367.         }
  1368.         else
  1369.         {
  1370.             g_prov_settings_present = 0x00;
  1371.             return 0;
  1372.         }
  1373.     }
  1374.     else
  1375.     {
  1376.         return 0;
  1377.     }
  1378. }
  1379. /*****************************************************************************
  1380.  * FUNCTION
  1381.  *  mmi_prov_check_if_substring
  1382.  * DESCRIPTION
  1383.  *  This function checks whether the sub-string starts with the given string.
  1384.  *  on an error it returns -1 else returns 0.
  1385.  * PARAMETERS
  1386.  *  string_p            [IN]        The main string
  1387.  *  sub_string_p        [IN]        The sub string to be checked
  1388.  * RETURNS
  1389.  *  S32
  1390.  *****************************************************************************/
  1391. S32 mmi_prov_check_if_substring(const S8 *string_p, const S8 *sub_string_p)
  1392. {
  1393.     /*----------------------------------------------------------------*/
  1394.     /* Local Variables                                                */
  1395.     /*----------------------------------------------------------------*/
  1396.     S32 buf_len;
  1397.     S32 start_len;
  1398.     S32 i;
  1399.     /*----------------------------------------------------------------*/
  1400.     /* Code Body                                                      */
  1401.     /*----------------------------------------------------------------*/
  1402.     if (string_p == NULL)
  1403.     {
  1404.         return -1;
  1405.     }
  1406.     if (sub_string_p == NULL)
  1407.     {
  1408.         return -1;
  1409.     }
  1410.     buf_len = strlen(string_p);
  1411.     start_len = strlen(sub_string_p);
  1412.     if (start_len > buf_len)
  1413.     {
  1414.         return -1;
  1415.     }
  1416.     for (i = 0; i < start_len; i++)
  1417.     {
  1418.         if (sub_string_p[i] != string_p[i])
  1419.         {
  1420.             return -1;
  1421.         }
  1422.     }
  1423.     return 0;
  1424. }
  1425. /*****************************************************************************
  1426.  * FUNCTION
  1427.  *  mmi_prov_set_csd_req
  1428.  * DESCRIPTION
  1429.  *  This API send an request to the L4 to set the CSD data filled for the selected index
  1430.  * PARAMETERS
  1431.  *  void
  1432.  * RETURNS
  1433.  *  void
  1434.  *****************************************************************************/
  1435. void mmi_prov_set_csd_req(void)
  1436. {
  1437.     /*----------------------------------------------------------------*/
  1438.     /* Local Variables                                                */
  1439.     /*----------------------------------------------------------------*/
  1440.     MYQUEUE Message;
  1441. U8 ref_count;
  1442. U16 msg_len;
  1443.     mmi_cc_set_csd_profile_req_struct *set_csd_req_p = NULL , *set_csd_req_p1 = NULL;
  1444.     /*----------------------------------------------------------------*/
  1445.     /* Code Body                                                      */
  1446.     /*----------------------------------------------------------------*/
  1447.     if (g_ph_cntx.ph_dataaccount_index >= MAX_DATA_ACCOUNT_GSM_LIMIT)
  1448.     {
  1449.         return;
  1450.     }
  1451.     if (g_prov_setting_type & PROV_NOKIA_SETTINGS)
  1452.     {
  1453.         if (g_prov_set_csd_req_p != NULL)
  1454.         {
  1455.             g_prov_set_csd_req_p->csd_module = 0;
  1456.             g_prov_set_csd_req_p->auth_type = 0;
  1457.             g_prov_set_csd_req_p->prof_id = g_ph_cntx.profile_display_p->data_account;
  1458.             if (g_prov_profile_name_p != NULL)
  1459.             {
  1460.                 U32 len = 0;
  1461.                 len = strlen((S8*) g_prov_profile_name_p);
  1462.                 if (len >= PROV_MAX_DATA_ACCOUNT_NAME_LEN)
  1463.                 {
  1464.                     len = PROV_MAX_DATA_ACCOUNT_NAME_LEN - 1;
  1465.                 }
  1466.                 memcpy((S8*) g_prov_set_csd_req_p->name.name, (S8*) g_prov_profile_name_p, len);
  1467.                 g_prov_set_csd_req_p->name.name[len] = '';
  1468.                 g_prov_set_csd_req_p->name.name_dcs = PHB_ASCII;
  1469.                 g_prov_set_csd_req_p->name.name_length = len;
  1470.             }
  1471.         }
  1472.     }
  1473.     else if (g_prov_setting_type & PROV_OMA_SETTINGS)
  1474.     {
  1475.         set_csd_req_p = jdd_MemAlloc(sizeof(mmi_cc_set_csd_profile_req_struct), 1);
  1476.         set_csd_req_p->prof_id = g_ph_cntx.profile_display_p->data_account;
  1477.         if (g_prov_dataAccountData_p != NULL)
  1478.         {
  1479.             mmi_prov_oma_fill_csd_data_account_info(g_prov_dataAccountData_p, &set_csd_req_p);
  1480.         }
  1481.         else
  1482.         {
  1483.             PRINT_INFORMATION_2((MMI_TRACE_INFO,
  1484.                                  " JProvWap.c ........No Valid Data Account(NAPDEF) Available in the OMA Provisionig settingn"));
  1485. if(set_csd_req_p)
  1486. {
  1487. jdd_MemFree(set_csd_req_p);
  1488. set_csd_req_p = NULL;
  1489. }
  1490.             return;
  1491.         }
  1492.     }
  1493. set_csd_req_p1 = (mmi_cc_set_csd_profile_req_struct *)
  1494. OslConstructDataPtr(sizeof(mmi_cc_set_csd_profile_req_struct));
  1495. ref_count = set_csd_req_p1->ref_count;
  1496. msg_len = set_csd_req_p1->msg_len;
  1497.  
  1498.     Message.oslSrcId = MOD_MMI;
  1499.     Message.oslDestId = MOD_L4C;
  1500.     Message.oslMsgId = PRT_MMI_CC_SET_CSD_PROFILE_REQ;
  1501.     if (g_prov_setting_type & PROV_NOKIA_SETTINGS)
  1502.     {
  1503. memcpy((void *)set_csd_req_p1, 
  1504. (void*)g_prov_set_csd_req_p, sizeof(mmi_cc_set_csd_profile_req_struct));
  1505. set_csd_req_p1->ref_count = ref_count ;
  1506. set_csd_req_p1->msg_len = msg_len ;
  1507.         Message.oslDataPtr = (oslParaType*) set_csd_req_p1;
  1508.     }
  1509.     else if (g_prov_setting_type & PROV_OMA_SETTINGS)
  1510.     {
  1511. memcpy((void *)set_csd_req_p1, 
  1512. (void*)set_csd_req_p, sizeof(mmi_cc_set_csd_profile_req_struct));
  1513. set_csd_req_p1->ref_count = ref_count ;
  1514. set_csd_req_p1->msg_len = msg_len ;
  1515.         Message.oslDataPtr = (oslParaType*) set_csd_req_p1;
  1516. if(set_csd_req_p)
  1517. {
  1518. jdd_MemFree(set_csd_req_p);
  1519. set_csd_req_p = NULL;
  1520. }
  1521.     }
  1522.     Message.oslPeerBuffPtr = NULL;
  1523.     SetProtocolEventHandler(mmi_prov_set_csd_rsp, PRT_MMI_CC_SET_CSD_PROFILE_RSP);
  1524.     OslMsgSendExtQueue(&Message);
  1525. }
  1526. /*****************************************************************************
  1527.  * FUNCTION
  1528.  *  mmi_prov_set_csd_rsp
  1529.  * DESCRIPTION
  1530.  *  This API handles the RSP sent by L4 for Set CSD req .
  1531.  *  Done popup is shown if rsp is positive
  1532.  * PARAMETERS
  1533.  *  info_p      [IN]        Rsp obtained from L4
  1534.  * RETURNS
  1535.  *  void
  1536.  *****************************************************************************/
  1537. void mmi_prov_set_csd_rsp(void *info_p)
  1538. {
  1539.     /*----------------------------------------------------------------*/
  1540.     /* Local Variables                                                */
  1541.     /*----------------------------------------------------------------*/
  1542.     mmi_cc_set_csd_profile_rsp_struct *localPtr;
  1543.     /*----------------------------------------------------------------*/
  1544.     /* Code Body                                                      */
  1545.     /*----------------------------------------------------------------*/
  1546.     localPtr = (mmi_cc_set_csd_profile_rsp_struct*) info_p;
  1547.     g_prov_timeout_hdlr = mmi_prov_get_next_appl_or_new_doc_callback;
  1548.     if (localPtr->result == KAL_TRUE)
  1549.     {
  1550.         mmi_prov_handle_data_account_set_rsp((U8) PROV_CSD_BEARER);
  1551.     }
  1552.     else
  1553.     {
  1554.         DisplayPopupCallBack(
  1555.             (PU8) GetString(STR_GLOBAL_NOT_DONE),
  1556.             IMG_GLOBAL_UNFINISHED,
  1557.             1,
  1558.             PROV_DATA_ACCOUNT_NOTIFY_TIMEOUT,
  1559.             ERROR_TONE,
  1560.             g_prov_timeout_hdlr);
  1561.         DeleteUptoScrID(IDLE_SCREEN_ID);
  1562.     }
  1563. }
  1564. /*****************************************************************************
  1565.  * FUNCTION
  1566.  *  mmi_prov_set_gprs_req
  1567.  * DESCRIPTION
  1568.  *  This API send an request to the L4 to set the GPRS data filled for the selected index
  1569.  * PARAMETERS
  1570.  *  void
  1571.  * RETURNS
  1572.  *  void
  1573.  *****************************************************************************/
  1574. void mmi_prov_set_gprs_req(void)
  1575. {
  1576.     /*----------------------------------------------------------------*/
  1577.     /* Local Variables                                                */
  1578.     /*----------------------------------------------------------------*/
  1579.     MYQUEUE Message;
  1580.     mmi_ps_set_gprs_data_account_req_struct *set_gprs_req_p = NULL , *set_gprs_req_p1 = NULL;
  1581.     /*----------------------------------------------------------------*/
  1582.     /* Code Body                                                      */
  1583.     /*----------------------------------------------------------------*/
  1584.     if (g_ph_cntx.ph_dataaccount_index >= MAX_DATA_ACCOUNT_GPRS_LIMIT)
  1585.     {
  1586.         return;
  1587.     }
  1588.     if (g_prov_setting_type & PROV_NOKIA_SETTINGS)
  1589.     {
  1590. if (g_prov_set_gprs_req_p != NULL)
  1591.         {
  1592. /*Added by tk to handle empty APN case*/
  1593. if(g_prov_set_gprs_req_p->gprs_account.apn_length == 0)
  1594. {
  1595. g_prov_timeout_hdlr = mmi_prov_get_next_appl_or_new_doc_callback;
  1596. mmi_prov_handle_data_account_set_rsp((U8) PROV_GPRS_BEARER);
  1597. return;
  1598. }
  1599. /*end*/
  1600.             g_prov_set_gprs_req_p->gprs_account.context_id =
  1601.             g_ph_cntx.profile_display_p->data_account - MAX_DATA_ACCOUNT_GSM_LIMIT + 1;
  1602.             if (g_prov_profile_name_p != NULL)
  1603.             {
  1604.                 U32 len = 0;
  1605.                 len = strlen((S8*) g_prov_profile_name_p);
  1606.                 if (len >= PROV_MAX_GPRS_DATAACCOUNT_NAME)
  1607.                 {
  1608.                     len = PROV_MAX_GPRS_DATAACCOUNT_NAME - 1;
  1609.                 }
  1610.             #if 0   /* added by tk */
  1611. /* under construction !*/
  1612. /* under construction !*/
  1613. /* under construction !*/
  1614. /* under construction !*/
  1615. /* under construction !*/
  1616.             #endif /* 0 */ 
  1617.                 memcpy((S8*) g_prov_set_gprs_req_p->gprs_account.name, (S8*) g_prov_profile_name_p, len);
  1618.                 g_prov_set_gprs_req_p->gprs_account.name[len] = '';
  1619.                 g_prov_set_gprs_req_p->gprs_account.name_dcs = PHB_ASCII;
  1620.                 g_prov_set_gprs_req_p->gprs_account.name_length = len;
  1621.             }
  1622.         }
  1623.     }
  1624.     else if (g_prov_setting_type & PROV_OMA_SETTINGS)
  1625.     {
  1626.         set_gprs_req_p = jdd_MemAlloc(sizeof(mmi_ps_set_gprs_data_account_req_struct), 1);
  1627.         set_gprs_req_p->gprs_account.context_id =
  1628.             g_ph_cntx.profile_display_p->data_account - MAX_DATA_ACCOUNT_GSM_LIMIT + 1;
  1629.         if (g_prov_dataAccountData_p != NULL)
  1630.         {
  1631.             mmi_prov_oma_fill_gprs_data_account_info(g_prov_dataAccountData_p, &set_gprs_req_p);
  1632.         }
  1633.         else
  1634.         {
  1635.             PRINT_INFORMATION_2((MMI_TRACE_INFO,
  1636.                                  " JProvWap.c ........No Valid Data Account(NAPDEF) Available in the OMA Provisionig settingn"));
  1637. if(set_gprs_req_p)
  1638. {
  1639. jdd_MemFree(set_gprs_req_p);
  1640. set_gprs_req_p = NULL;
  1641. }
  1642.             return;
  1643.         }
  1644. /*Added by tk to handle empty APN case*/
  1645. if(set_gprs_req_p->gprs_account.apn_length == 0)
  1646. {
  1647. g_prov_timeout_hdlr = mmi_prov_get_next_appl_or_new_doc_callback;
  1648. mmi_prov_handle_data_account_set_rsp((U8) PROV_GPRS_BEARER);
  1649. if(set_gprs_req_p)
  1650. {
  1651. jdd_MemFree(set_gprs_req_p);
  1652. set_gprs_req_p = NULL;
  1653. }
  1654. return;
  1655. }
  1656. /*end*/
  1657.     }
  1658. set_gprs_req_p1 = (mmi_ps_set_gprs_data_account_req_struct *)
  1659. OslConstructDataPtr(sizeof(mmi_ps_set_gprs_data_account_req_struct));
  1660.     Message.oslSrcId = MOD_MMI;
  1661.     Message.oslDestId = MOD_L4C;
  1662.     Message.oslMsgId = PRT_MMI_PS_SET_GPRS_DATA_ACCOUNT_REQ;
  1663.     if (g_prov_setting_type & PROV_NOKIA_SETTINGS)
  1664.     {
  1665. memcpy((void *)&set_gprs_req_p1->gprs_account, 
  1666. (void*)&g_prov_set_gprs_req_p->gprs_account, sizeof(g_prov_set_gprs_req_p->gprs_account));
  1667. Message.oslDataPtr = (oslParaType*) set_gprs_req_p1;
  1668.     }
  1669.     else if (g_prov_setting_type & PROV_OMA_SETTINGS)
  1670.     {
  1671. memcpy((void *)&set_gprs_req_p1->gprs_account, 
  1672. (void*)&set_gprs_req_p->gprs_account, sizeof(set_gprs_req_p->gprs_account));
  1673.         Message.oslDataPtr = (oslParaType*) set_gprs_req_p1;
  1674.         if(set_gprs_req_p)
  1675. {
  1676. jdd_MemFree(set_gprs_req_p);
  1677. set_gprs_req_p = NULL;
  1678. }
  1679.     }
  1680.     Message.oslPeerBuffPtr = NULL;
  1681.     SetProtocolEventHandler(mmi_prov_set_gprs_rsp, PRT_MMI_PS_SET_GPRS_DATA_ACCOUNT_RSP);
  1682.     OslMsgSendExtQueue(&Message);
  1683. }
  1684. /*****************************************************************************
  1685.  * FUNCTION
  1686.  *  mmi_prov_set_gprs_rsp
  1687.  * DESCRIPTION
  1688.  *  This API handles the RSP sent by L4 for Set GPRS req .
  1689.  *  Done popup is shown if rsp is positive
  1690.  * PARAMETERS
  1691.  *  info_p      [IN]        
  1692.  * RETURNS
  1693.  *  void
  1694.  *****************************************************************************/
  1695. void mmi_prov_set_gprs_rsp(void *info_p)
  1696. {
  1697.     /*----------------------------------------------------------------*/
  1698.     /* Local Variables                                                */
  1699.     /*----------------------------------------------------------------*/
  1700. #ifdef __GPRS_MODE__
  1701.     mmi_ps_set_gprs_data_account_rsp_struct *localPtr;
  1702.     /*----------------------------------------------------------------*/
  1703.     /* Code Body                                                      */
  1704.     /*----------------------------------------------------------------*/
  1705.     localPtr = (mmi_ps_set_gprs_data_account_rsp_struct*) info_p;
  1706.     g_prov_timeout_hdlr = mmi_prov_get_next_appl_or_new_doc_callback;
  1707.     if (localPtr->result == KAL_TRUE)
  1708.     {
  1709.         mmi_prov_handle_data_account_set_rsp((U8) PROV_GPRS_BEARER);
  1710.     }
  1711.     else
  1712.     {
  1713.         DisplayPopupCallBack(
  1714.             (PU8) GetString(STR_GLOBAL_NOT_DONE),
  1715.             IMG_GLOBAL_UNFINISHED,
  1716.             1,
  1717.             PROV_DATA_ACCOUNT_NOTIFY_TIMEOUT,
  1718.             ERROR_TONE,
  1719.             g_prov_timeout_hdlr);
  1720.         DeleteUptoScrID(IDLE_SCREEN_ID);
  1721.     }
  1722. #endif /* __GPRS_MODE__ */ 
  1723. }
  1724. /*****************************************************************************
  1725.  * FUNCTION
  1726.  *  mmi_prov_handle_data_account_set_rsp
  1727.  * DESCRIPTION
  1728.  *  This is general API to handle the data account rsp for both CSD & GPRS Data Account
  1729.  *  Profile data is updated into NVRAM & done popup is shown.
  1730.  * PARAMETERS
  1731.  *  data_account        [IN]        CSD or GPRS
  1732.  * RETURNS
  1733.  *  void
  1734.  *****************************************************************************/
  1735. void mmi_prov_handle_data_account_set_rsp(U8 data_account)
  1736. {
  1737.     /*----------------------------------------------------------------*/
  1738.     /* Local Variables                                                */
  1739.     /*----------------------------------------------------------------*/
  1740.     /*----------------------------------------------------------------*/
  1741.     /* Code Body                                                      */
  1742.     /*----------------------------------------------------------------*/
  1743.     if (g_prov_setting_type & PROV_NOKIA_SETTINGS)
  1744.     {
  1745.         if (g_prov_setting_type & PROV_BRS_SETTINGS)
  1746.         {
  1747.             if ((strlen((S8*) g_ph_wap_profile_p->homepage_url) == 0) 
  1748.                 &&(strlen((S8*) g_ph_mms_profile_p->mmsc_url) == 0)
  1749.                 )
  1750.             {
  1751.                 S8 default_url[] = "http://";
  1752.                 strcpy((S8*) g_ph_wap_profile_p->homepage_url, default_url);
  1753.             }
  1754.             mmi_ph_update_prov_nvram_wap_profile();
  1755.         }
  1756.         else if (g_prov_setting_type & PROV_MMS_SETTINGS)
  1757.         {
  1758.             mmi_ph_update_prov_nvram_mms_profile();
  1759.         }
  1760.     }
  1761.     else if (g_prov_setting_type & PROV_OMA_SETTINGS)
  1762.     {
  1763.         if ((g_prov_setting_type & PROV_BRS_SETTINGS) && (g_prov_appl_flag & PROV_BROWSER_APPLICATION))
  1764.         {
  1765.             mmi_ph_update_prov_nvram_wap_profile();
  1766.         }
  1767.         else if ((g_prov_setting_type & PROV_MMS_SETTINGS) && (g_prov_appl_flag & PROV_MMS_APPLICATION))
  1768.         {
  1769.             mmi_ph_update_prov_nvram_mms_profile();
  1770.         }
  1771.     }
  1772.     DisplayPopupCallBack(
  1773.         (PU8) GetString(STR_GLOBAL_DONE),
  1774.         IMG_GLOBAL_ACTIVATED,
  1775.         1,
  1776.         PROV_DATA_ACCOUNT_NOTIFY_TIMEOUT,
  1777.         SUCCESS_TONE,
  1778.         g_prov_timeout_hdlr);
  1779.     DeleteUptoScrID(IDLE_SCREEN_ID);
  1780. }
  1781. /*****************************************************************************
  1782.  * FUNCTION
  1783.  *  mmi_prov_handle_proxy_ip
  1784.  * DESCRIPTION
  1785.  *  This function handles the proxy IP when received in the settings
  1786.  * PARAMETERS
  1787.  *  attr_p      [IN]        
  1788.  * RETURNS
  1789.  *  void
  1790.  *****************************************************************************/
  1791. void mmi_prov_handle_proxy_ip(ATTRIBUTE *attr_p)
  1792. {
  1793.     /*----------------------------------------------------------------*/
  1794.     /* Local Variables                                                */
  1795.     /*----------------------------------------------------------------*/
  1796.     U8 proxy_ip[MAX_PART_IP_ADDRESS];
  1797.     S8 parm_element[PROV_MIN_SIZE_REQ + 1];
  1798.     PROV_RETCODE i_ret = PROV_OK;
  1799.     /*----------------------------------------------------------------*/
  1800.     /* Code Body                                                      */
  1801.     /*----------------------------------------------------------------*/
  1802.     if (strcmp(attr_p->name, VALUE) == 0)
  1803.     {
  1804.         UnicodeToAnsii(parm_element, (S8*) attr_p->value);
  1805.         i_ret = mmi_prov_convert_ip_string_to_array(parm_element, proxy_ip);
  1806.         if (i_ret == PROV_ERR)
  1807.         {
  1808.             memset(proxy_ip, 0, MAX_PART_IP_ADDRESS);
  1809.         }
  1810.         memcpy(g_ph_wap_profile_p->proxy_ip, proxy_ip, MAX_PART_IP_ADDRESS);
  1811.         memcpy(g_ph_mms_profile_p->proxy_ip, proxy_ip, MAX_PART_IP_ADDRESS);
  1812.     }
  1813. }
  1814. /*****************************************************************************
  1815.  * FUNCTION
  1816.  *  mmi_prov_handle_nap_auth_type
  1817.  * DESCRIPTION
  1818.  *  This function handles the different nap authentication types
  1819.  *  received in the settings
  1820.  * PARAMETERS
  1821.  *  attr_p      [?]     
  1822.  * RETURNS
  1823.  *  void
  1824.  *****************************************************************************/
  1825. void mmi_prov_handle_nap_auth_type(ATTRIBUTE *attr_p)
  1826. {
  1827.     /*----------------------------------------------------------------*/
  1828.     /* Local Variables                                                */
  1829.     /*----------------------------------------------------------------*/
  1830.     S8 parm_element[PROV_MIN_SIZE_REQ + 1];
  1831.     /*----------------------------------------------------------------*/
  1832.     /* Code Body                                                      */
  1833.     /*----------------------------------------------------------------*/
  1834.     if (strcmp(attr_p->name, VALUE) == 0)
  1835.     {
  1836.         UnicodeToAnsii(parm_element, (S8*) attr_p->value);
  1837.         if (g_prov_bearer == PROV_CSD_BEARER)
  1838.         {
  1839.             if (strcmp(parm_element, PAP) == 0)
  1840.             {
  1841.                 if (g_prov_set_csd_req_p)
  1842.                 {
  1843.                     g_prov_set_csd_req_p->auth_type = PROV_AUTHTYPE_PAP;
  1844.                 }
  1845.             }
  1846.             else if (strcmp(parm_element, CHAP) == 0)
  1847.             {
  1848.                 if (g_prov_set_csd_req_p)
  1849.                 {
  1850.                     g_prov_set_csd_req_p->auth_type = PROV_AUTHTYPE_CHAP;
  1851.                 }
  1852.             }
  1853.         }
  1854.         else if (g_prov_bearer == PROV_GPRS_BEARER)
  1855.         {
  1856.             if (strcmp(parm_element, PAP) == 0)
  1857.             {
  1858.                 if (g_prov_set_gprs_req_p)
  1859.                 {
  1860.                     g_prov_set_gprs_req_p->gprs_account.authentication_type = PROV_AUTHTYPE_PAP;
  1861.                 }
  1862.             }
  1863.             else if (strcmp(parm_element, CHAP) == 0)
  1864.             {
  1865.                 if (g_prov_set_gprs_req_p)
  1866.                 {
  1867.                     g_prov_set_gprs_req_p->gprs_account.authentication_type = PROV_AUTHTYPE_CHAP;
  1868.                 }
  1869.             }
  1870.         }
  1871.     }
  1872. }
  1873. /*****************************************************************************
  1874.  * FUNCTION
  1875.  *  mmi_prov_handle_nap_auth_name
  1876.  * DESCRIPTION
  1877.  *  This function handles the NAP name parameter received in the settings
  1878.  * PARAMETERS
  1879.  *  attr_p      [?]     
  1880.  * RETURNS
  1881.  *  void
  1882.  *****************************************************************************/
  1883. void mmi_prov_handle_nap_auth_name(ATTRIBUTE *attr_p)
  1884. {
  1885.     /*----------------------------------------------------------------*/
  1886.     /* Local Variables                                                */
  1887.     /*----------------------------------------------------------------*/
  1888.     U32 len;
  1889.     /*----------------------------------------------------------------*/
  1890.     /* Code Body                                                      */
  1891.     /*----------------------------------------------------------------*/
  1892.     if (strcmp(attr_p->name, VALUE) == 0)
  1893.     {
  1894.         len = UCS2Strlen((S8*) attr_p->value);
  1895.         if (g_prov_bearer == PROV_CSD_BEARER)
  1896.         {
  1897.             if (g_prov_set_csd_req_p)
  1898.             {
  1899.                 if (len >= PROV_MAX_USER_LEN)
  1900.                 {
  1901.                     len = PROV_MAX_USER_LEN - 1;
  1902.                 }
  1903.                 UnicodeNToAnsii((S8*) g_prov_set_csd_req_p->user_id, (S8*) attr_p->value, len * ENCODING_LENGTH);
  1904.                 g_prov_set_csd_req_p->user_id[len] = '';
  1905.             }
  1906.         }
  1907.     #ifdef __GPRS_MODE__
  1908.         else if (g_prov_bearer == PROV_GPRS_BEARER)
  1909.         {
  1910.             if (g_prov_set_gprs_req_p)
  1911.             {
  1912.                 if (len >= PROV_MAX_GPRS_USERNAME)
  1913.                 {
  1914.                     len = PROV_MAX_GPRS_USERNAME - 1;
  1915.                 }
  1916.                 UnicodeNToAnsii(
  1917.                     (S8*) g_prov_set_gprs_req_p->gprs_account.user_name,
  1918.                     (S8*) attr_p->value,
  1919.                     len * ENCODING_LENGTH);
  1920.                 g_prov_set_gprs_req_p->gprs_account.user_name[len] = '';
  1921.             }
  1922.         }
  1923.     #endif /* __GPRS_MODE__ */ 
  1924.     }
  1925. }
  1926. /*****************************************************************************
  1927.  * FUNCTION
  1928.  *  mmi_prov_handle_nap_auth_pw
  1929.  * DESCRIPTION
  1930.  *  This function handles the NAP password received in the settings
  1931.  * PARAMETERS
  1932.  *  attr_p      [IN]        
  1933.  * RETURNS
  1934.  *  void
  1935.  *****************************************************************************/
  1936. void mmi_prov_handle_nap_auth_pw(ATTRIBUTE *attr_p)
  1937. {
  1938.     /*----------------------------------------------------------------*/
  1939.     /* Local Variables                                                */
  1940.     /*----------------------------------------------------------------*/
  1941.     U32 len;
  1942.     /*----------------------------------------------------------------*/
  1943.     /* Code Body                                                      */
  1944.     /*----------------------------------------------------------------*/
  1945.     if (strcmp(attr_p->name, VALUE) == 0)
  1946.     {
  1947.         len = UCS2Strlen((S8*) attr_p->value);
  1948.         if (g_prov_bearer == PROV_CSD_BEARER)
  1949.         {
  1950.             if (g_prov_set_csd_req_p)
  1951.             {
  1952.                 if (len >= PROV_MAX_PASSWD_LEN)
  1953.                 {
  1954.                     len = PROV_MAX_PASSWD_LEN - 1;
  1955.                 }
  1956.                 UnicodeNToAnsii((S8*) g_prov_set_csd_req_p->passwd, (S8*) attr_p->value, len * ENCODING_LENGTH);
  1957.                 g_prov_set_csd_req_p->passwd[len] = '';
  1958.             }
  1959.         }
  1960.     #ifdef __GPRS_MODE__
  1961.         else if (g_prov_bearer == PROV_GPRS_BEARER)
  1962.         {
  1963.             if (len >= PROV_MAX_GPRS_USERPASSWD)
  1964.             {
  1965.                 len = PROV_MAX_GPRS_USERPASSWD - 1;
  1966.             }
  1967.             if (g_prov_set_gprs_req_p)
  1968.             {
  1969.                 UnicodeNToAnsii(
  1970.                     (S8*) g_prov_set_gprs_req_p->gprs_account.password,
  1971.                     (S8*) attr_p->value,
  1972.                     len * ENCODING_LENGTH);
  1973.                 g_prov_set_gprs_req_p->gprs_account.password[len] = '';
  1974.             }
  1975.         }
  1976.     #endif /* __GPRS_MODE__ */ 
  1977.     }
  1978. }
  1979. /*****************************************************************************
  1980.  * FUNCTION
  1981.  *  mmi_prov_handle_profile_name
  1982.  * DESCRIPTION
  1983.  *  This function handles the profile name parameter received in the settings
  1984.  * PARAMETERS
  1985.  *  attr_p      [IN]        
  1986.  * RETURNS
  1987.  *  void
  1988.  *****************************************************************************/
  1989. void mmi_prov_handle_profile_name(ATTRIBUTE *attr_p)
  1990. {
  1991.     /*----------------------------------------------------------------*/
  1992.     /* Local Variables                                                */
  1993.     /*----------------------------------------------------------------*/
  1994.     U32 len;
  1995.     /*----------------------------------------------------------------*/
  1996.     /* Code Body                                                      */
  1997.     /*----------------------------------------------------------------*/
  1998.     g_prov_profile_name_p = (U8*) jdd_MemAlloc(PROV_PROFILE_PROFILE_NAME_LEN + 1, 1);
  1999.     if (strcmp(attr_p->name, VALUE) == 0)
  2000.     {
  2001.         if(GetUCS2Flag((S8*)attr_p->value))
  2002. {
  2003. UnicodeToAnsii((S8*) g_prov_profile_name_p, (S8*)GetString(STR_ID_PROF_HDLR_DEFAULT_PROFILE_NAME));
  2004. }
  2005. else
  2006. {
  2007.         len = UCS2Strlen((S8*) attr_p->value);
  2008.         if (len >= PROV_PROFILE_PROFILE_NAME_LEN)
  2009.         {
  2010.             len = PROV_PROFILE_PROFILE_NAME_LEN - 1;
  2011.         }
  2012.         UnicodeNToAnsii((S8*) g_prov_profile_name_p, (S8*) attr_p->value, len * ENCODING_LENGTH);
  2013.         g_prov_profile_name_p[len] = '';
  2014.     }
  2015. }
  2016. }
  2017. /*****************************************************************************
  2018.  * FUNCTION
  2019.  *  mmi_prov_handle_homepage_url
  2020.  * DESCRIPTION
  2021.  *  This function handles homepage url received in the settings
  2022.  * PARAMETERS
  2023.  *  attr_p      [IN]        
  2024.  * RETURNS
  2025.  *  void
  2026.  *****************************************************************************/
  2027. void mmi_prov_handle_homepage_url(ATTRIBUTE *attr_p)
  2028. {
  2029.     /*----------------------------------------------------------------*/
  2030.     /* Local Variables                                                */
  2031.     /*----------------------------------------------------------------*/
  2032.     U32 len;
  2033.     /*----------------------------------------------------------------*/
  2034.     /* Code Body                                                      */
  2035.     /*----------------------------------------------------------------*/
  2036.     if (strcmp(attr_p->name, VALUE) == 0)
  2037.     {
  2038.         len = UCS2Strlen((S8*) attr_p->value);
  2039.         if (len >= PROV_PROFILE_HOMEPAGE_URL_LEN)
  2040.         {
  2041.             len = PROV_PROFILE_HOMEPAGE_URL_LEN - 1;
  2042.         }
  2043.         UnicodeNToAnsii((S8*) g_ph_wap_profile_p->homepage_url, (S8*) attr_p->value, len * ENCODING_LENGTH);
  2044.         g_ph_wap_profile_p->homepage_url[len] = '';
  2045.         if (jdi_isValidUrl((JC_UINT8*) g_ph_wap_profile_p->homepage_url))
  2046.         {
  2047.             if (mmi_prov_check_if_substring((PS8) g_ph_wap_profile_p->homepage_url, (PS8) "http://") != 0x00)
  2048.             {
  2049.                 S8 homepage[PROV_PROFILE_HOMEPAGE_URL_LEN + 10] = "http://";
  2050.                 strcat(homepage, (PS8) g_ph_wap_profile_p->homepage_url);
  2051.                 memset(g_ph_wap_profile_p->homepage_url, 0, PROV_PROFILE_HOMEPAGE_URL_LEN);
  2052.                 len = strlen(homepage);
  2053.                 if (len >= PROV_PROFILE_HOMEPAGE_URL_LEN)
  2054.                 {
  2055.                     len = PROV_PROFILE_HOMEPAGE_URL_LEN - 1;
  2056.                 }
  2057.                 memcpy(g_ph_wap_profile_p->homepage_url, homepage, len);
  2058.                 g_ph_wap_profile_p->homepage_url[len] = '';
  2059.             }
  2060.         }
  2061.         else
  2062.         {
  2063.             S8 *default_url = "http://";
  2064.             memset(g_ph_wap_profile_p->homepage_url, 0, PROV_PROFILE_HOMEPAGE_URL_LEN);
  2065.             strcpy((PS8) g_ph_wap_profile_p->homepage_url, default_url);
  2066.         }
  2067.     }
  2068. }
  2069. /*****************************************************************************
  2070.  * FUNCTION
  2071.  *  mmi_prov_handle_mmsc_url
  2072.  * DESCRIPTION
  2073.  *  This function handles homepage url received in the settings
  2074.  * PARAMETERS
  2075.  *  attr_p      [IN]        
  2076.  * RETURNS
  2077.  *  void
  2078.  *****************************************************************************/
  2079. void mmi_prov_handle_mmsc_url(ATTRIBUTE *attr_p)
  2080. {
  2081.     /*----------------------------------------------------------------*/
  2082.     /* Local Variables                                                */
  2083.     /*----------------------------------------------------------------*/
  2084.     U32 len;
  2085.     /*----------------------------------------------------------------*/
  2086.     /* Code Body                                                      */
  2087.     /*----------------------------------------------------------------*/
  2088.     if (strcmp(attr_p->name, VALUE) == 0)
  2089.     {
  2090.         len = UCS2Strlen((S8*) attr_p->value);
  2091.         if (len >= PROV_PROFILE_MMSC_URL_LEN)
  2092.         {
  2093.             len = PROV_PROFILE_MMSC_URL_LEN - 1;
  2094.         }
  2095.         UnicodeNToAnsii((S8*) g_ph_mms_profile_p->mmsc_url, (S8*) attr_p->value, len * ENCODING_LENGTH);
  2096.         g_ph_mms_profile_p->mmsc_url[len] = '';
  2097.         if (jdi_isValidUrl((JC_UINT8*) g_ph_mms_profile_p->mmsc_url))
  2098.         {
  2099.             if (mmi_prov_check_if_substring((PS8) g_ph_mms_profile_p->mmsc_url, (PS8) "http://") != 0x00)
  2100.             {
  2101.                 S8 homepage[PROV_PROFILE_MMSC_URL_LEN + 10] = "http://";
  2102.                 strcat(homepage, (PS8) g_ph_mms_profile_p->mmsc_url);
  2103.                 memset(g_ph_mms_profile_p->mmsc_url, 0, PROV_PROFILE_MMSC_URL_LEN);
  2104.                 len = strlen(homepage);
  2105.                 if (len >= PROV_PROFILE_MMSC_URL_LEN)
  2106.                 {
  2107.                     len = PROV_PROFILE_MMSC_URL_LEN - 1;
  2108.                 }
  2109.                 memcpy(g_ph_mms_profile_p->mmsc_url, homepage, len);
  2110.                 g_ph_mms_profile_p->mmsc_url[len] = '';
  2111.             }
  2112.         }
  2113.         else
  2114.         {
  2115.             S8 *default_url = "http://";
  2116.             memset(g_ph_mms_profile_p->mmsc_url, 0, PROV_PROFILE_MMSC_URL_LEN);
  2117.             strcpy((PS8) g_ph_mms_profile_p->mmsc_url, default_url);
  2118.         }
  2119.     }
  2120. }
  2121. /*****************************************************************************
  2122.  * FUNCTION
  2123.  *  mmi_prov_handle_data_account_mem_allocate
  2124.  * DESCRIPTION
  2125.  *  This allocates memory for the CSD & GPRS data account set request
  2126.  * PARAMETERS
  2127.  *  void
  2128.  * RETURNS
  2129.  *  void
  2130.  *****************************************************************************/
  2131. void mmi_prov_handle_data_account_mem_allocate(void)
  2132. {
  2133.     /*----------------------------------------------------------------*/
  2134.     /* Local Variables                                                */
  2135.     /*----------------------------------------------------------------*/
  2136.     /*----------------------------------------------------------------*/
  2137.     /* Code Body                                                      */
  2138.     /*----------------------------------------------------------------*/
  2139.     if (g_prov_set_csd_req_p == NULL)
  2140.     {
  2141.         g_prov_set_csd_req_p = (mmi_cc_set_csd_profile_req_struct*)
  2142.             jdd_MemAlloc(sizeof(mmi_cc_set_csd_profile_req_struct), 1);
  2143.     }
  2144.     if (g_prov_set_gprs_req_p == NULL)
  2145.     {
  2146.         g_prov_set_gprs_req_p = (mmi_ps_set_gprs_data_account_req_struct*)
  2147.             jdd_MemAlloc(sizeof(mmi_ps_set_gprs_data_account_req_struct), 1);
  2148.     }
  2149. }
  2150. /*****************************************************************************
  2151.  * FUNCTION
  2152.  *  mmi_prov_handle_profile_mem_allocate
  2153.  * DESCRIPTION
  2154.  *  This allocates dynamic memory to the WAP & MMS profiles
  2155.  * PARAMETERS
  2156.  *  void
  2157.  * RETURNS
  2158.  *  void
  2159.  *****************************************************************************/
  2160. void mmi_prov_handle_profile_mem_allocate(void)
  2161. {
  2162.     /*----------------------------------------------------------------*/
  2163.     /* Local Variables                                                */
  2164.     /*----------------------------------------------------------------*/
  2165.     /*----------------------------------------------------------------*/
  2166.     /* Code Body                                                      */
  2167.     /*----------------------------------------------------------------*/
  2168.     if (g_ph_wap_profile_p == NULL)
  2169.     {
  2170.         g_ph_wap_profile_p = (nvram_wap_profile_content_struct*) jdd_MemAlloc(NVRAM_EF_WAP_PROFILE_CONTENT_SIZE, 1);
  2171.     }
  2172.     if (g_ph_mms_profile_p == NULL)
  2173.     {
  2174.         g_ph_mms_profile_p = (nvram_mms_profile_content_struct*) jdd_MemAlloc(NVRAM_EF_MMS_PROFILE_CONTENT_SIZE, 1);
  2175.     }
  2176. }
  2177. /*****************************************************************************
  2178.  * FUNCTION
  2179.  *  mmi_prov_handle_profile_mem_free
  2180.  * DESCRIPTION
  2181.  *  This Frees the memory used for the wap & MMS profile structs
  2182.  * PARAMETERS
  2183.  *  void
  2184.  * RETURNS
  2185.  *  void
  2186.  *****************************************************************************/
  2187. void mmi_prov_handle_profile_mem_free(void)
  2188. {
  2189.     /*----------------------------------------------------------------*/
  2190.     /* Local Variables                                                */
  2191.     /*----------------------------------------------------------------*/
  2192.     /*----------------------------------------------------------------*/
  2193.     /* Code Body                                                      */
  2194.     /*----------------------------------------------------------------*/
  2195.     if (g_ph_wap_profile_p != NULL)
  2196.     {
  2197.         jdd_MemFree(g_ph_wap_profile_p);
  2198.         g_ph_wap_profile_p = NULL;
  2199.     }
  2200.     if (g_ph_mms_profile_p == NULL)
  2201.     {
  2202.         jdd_MemFree(g_ph_mms_profile_p);
  2203.         g_ph_mms_profile_p = NULL;
  2204.     }
  2205. }
  2206. /*****************************************************************************
  2207.  * FUNCTION
  2208.  *  mmi_prov_handle_data_account_mem_free
  2209.  * DESCRIPTION
  2210.  *  This frees the memory used by the CSD & GPRS data account req. structs
  2211.  * PARAMETERS
  2212.  *  void
  2213.  * RETURNS
  2214.  *  void
  2215.  *****************************************************************************/
  2216. void mmi_prov_handle_data_account_mem_free(void)
  2217. {
  2218.     /*----------------------------------------------------------------*/
  2219.     /* Local Variables                                                */
  2220.     /*----------------------------------------------------------------*/
  2221.     /*----------------------------------------------------------------*/
  2222.     /* Code Body                                                      */
  2223.     /*----------------------------------------------------------------*/
  2224.     if (g_prov_set_csd_req_p != NULL)
  2225.     {
  2226.         jdd_MemFree(g_prov_set_csd_req_p);
  2227.         g_prov_set_csd_req_p = NULL;
  2228.     }
  2229.     if (g_prov_set_gprs_req_p != NULL)
  2230.     {
  2231.         jdd_MemFree(g_prov_set_gprs_req_p);
  2232.         g_prov_set_gprs_req_p = NULL;
  2233.     }
  2234. }
  2235. /*****************************************************************************
  2236.  * FUNCTION
  2237.  *  mmi_prov_get_next_appl_or_new_doc_callback
  2238.  * DESCRIPTION
  2239.  *  Checks if some application settings are pending or any other prov. doc is available
  2240.  * PARAMETERS
  2241.  *  void
  2242.  * RETURNS
  2243.  *  void
  2244.  *****************************************************************************/
  2245. void mmi_prov_get_next_appl_or_new_doc_callback(void)
  2246. {
  2247.     /*----------------------------------------------------------------*/
  2248.     /* Local Variables                                                */
  2249.     /*----------------------------------------------------------------*/
  2250.     /*----------------------------------------------------------------*/
  2251.     /* Code Body                                                      */
  2252.     /*----------------------------------------------------------------*/
  2253.     /* GoBackHistory(); */
  2254.     if (g_prov_appl_flag > 0)
  2255.     {
  2256.         mmi_prov_oma_check_pending_application();
  2257.     }
  2258.     else
  2259.     {
  2260.         mmi_prov_handle_get_next_prov_data();
  2261.     }
  2262. }
  2263. #endif /* defined (JATAAYU_SUPPORT) && (defined (WAP_SUPPORT) || (defined (MMS_SUPPORT))) */ 
  2264. #endif /* _JPROVWAP_C */