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

📄 mmisimtoolkit.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                TRACE_EVENT("call.info2 contains data.");
                data->call_setup_parameter->TextString2 = sat_create_TEXT_ASCIIZ(&sat_command->c.call.info2);
#ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialogue displays them correctly*/
			 sat_add_unicode_tag_if_needed(data->call_setup_parameter->TextString2);
#endif
            }
            else
            {
                /* provide an empty string; NULL would crash in info_dialog() */
                TRACE_EVENT("call.info2 contains no data!");
                sat_command->c.call.info2.len = 0;

                 /* SPR#1700 - DS - Set string to NULL */
                data->call_setup_parameter->TextString2 = NULL;

                 /* SPR#1700 - DS - Commented out code below. Checks in call() in mmiCall.c ensure 
                  *  a NULL string is not sent to info_dialog
                  */
#if 0
                data->call_setup_parameter->TextString2 = sat_create_TEXT_ASCIIZ(&sat_command->c.call.info2);
#ifdef NO_ASCIIZ/*MC SPR 940/2 Add tag to Unicode strings so info dialogue displays them correctly*/
			 sat_add_unicode_tag_if_needed(data->call_setup_parameter->TextString2);
#endif
#endif /* 0 */
            }
            break;

        case SAT_CALL_RESULT:
            if (data->call_setup_parameter EQ NULL)
            {
        /* we are NOT in a SETUP CALL session;this is a "normal" Call Result */
        TRACE_EVENT("SAT_CALL_RESULT a");
        /*
        * --> display alpha identifier if available
        */
		
		TRACE_EVENT_P1("Redial Time %d",sat_command->c.ccres.redialTime);

        if ((sat_command->c.ccres.info.len NEQ 0) &&
          (sat_command->c.ccres.info.len NEQ (U8)-1))
        {
        	char *TextString = (char *)sat_create_TEXT_ASCIIZ (&sat_command->c.ccres.info);


        /*
        * Setup an editor to display a string
          */
          /* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
			AUI_edit_SetDefault(&data->editor_data);
			AUI_edit_SetTextStr(&data->editor_data, TxtNull, TxtNull, TxtNull, (UBYTE *)TextString);
			AUI_edit_SetMode(&data->editor_data, ED_MODE_READONLY, ED_CURSOR_NONE);
			AUI_edit_SetEvents(&data->editor_data, event, TRUE, FOREVER, (T_AUI_EDIT_CB)sat_info_cb);

	        data->info_win = AUI_edit_Start(win, &data->editor_data);
#else /* NEW_EDITOR */
			SmsSend_loadEditDefault(&data->editor_data);
			data->editor_data.LeftSoftKey          = TxtNull;
			data->editor_data.AlternateLeftSoftKey = TxtNull;
			data->editor_data.RightSoftKey         = TxtNull;
			data->editor_data.hide                 = FALSE;
			data->editor_data.mode                 = E_EDIT_READ_ONLY_MODE;
			data->editor_data.timeout              = FOREVER;
			data->editor_data.Identifier           = event;
			data->editor_data.Callback   = (T_EDIT_CB)sat_info_cb;
			data->editor_data.destroyEditor        =  TRUE;
			data->editor_data.TextId      		= TxtNull;
			data->editor_data.TextString       = TextString;
			data->editor_data.min_enter  = 0;
			data->info_win = editor_start(win, &data->editor_data);
#endif /* NEW_EDITOR */

        }
				
				/*NM 100702
				 SAT initiate a setup call, 
				 we want to make sure that instead of showing nothing 
				 on the screen do have a simple indication of MO-call
				*/
				else
				{
					/* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
					AUI_edit_SetDefault(&data->editor_data);
					AUI_edit_SetTextStr(&data->editor_data, TxtNull, TxtNull, TxtOutgoing, NULL);
					AUI_edit_SetMode(&data->editor_data, ED_MODE_READONLY, ED_CURSOR_NONE);
					AUI_edit_SetEvents(&data->editor_data, event, TRUE, FOREVER, (T_AUI_EDIT_CB)sat_info_cb);

			        data->info_win = AUI_edit_Start(win, &data->editor_data);
#else /* NEW_EDITOR */
					SmsSend_loadEditDefault(&data->editor_data);
				
					data->editor_data.LeftSoftKey          = TxtNull;
					data->editor_data.AlternateLeftSoftKey = TxtNull; 
					data->editor_data.RightSoftKey         = TxtNull;
					data->editor_data.hide                 = FALSE;
					data->editor_data.mode                 = E_EDIT_READ_ONLY_MODE; 
					data->editor_data.timeout              = FOREVER; 
					data->editor_data.Identifier           = event;
					data->editor_data.Callback   = (T_EDIT_CB)sat_info_cb;
					data->editor_data.destroyEditor        =  TRUE;
					data->editor_data.TextString       = NULL;
					data->editor_data.TextId       = TxtOutgoing;					
					data->editor_data.min_enter  = 0; 							 						  
					data->info_win = editor_start(win, &data->editor_data);
#endif /* NEW_EDITOR */

				}
				/*NM 100702 END*/
      }
      else
      {
        /* we are in a SETUP CALL session;this is a SATN return */
        U8 general_result;
        U8 additional_info;

        TRACE_EVENT("SAT_CALL_RESULT b");

        /* process result of a call setup */
        general_result = (U8)(sat_command->c.ccres.redialTime);
        additional_info = (U8)(sat_command->c.ccres.callId);

        if (((general_result & (U8)0xF0) EQ (U8)0x00) ||
          ((general_result & (U8)0xF0) EQ (U8)0x10))
        {
          /* command has been performed */
          /*
          * destroying the display of SETUP MENU will focus the idle screen (in order to show the incall info)
          * furthermore it's necessary to keep track of the used resources
          */
          TRACE_EVENT("destroy SETUP menu");
          SEND_EVENT (sat_get_setup_menu_win(), SAT_EXIT, 0, NULL);
          return;
        }
        else if ((general_result & (U8)0xF0) EQ (U8)0x20)
        {
          /* command failed: may be worth to retry */
          switch (general_result)
          {
          case 0x20: /* ME currently unable to process command */
            TRACE_EVENT("SAT: ME unable");
            break;
          case 0x21: /* NW currently unable to process command */
            TRACE_EVENT("SAT: NW unable");
            if ((additional_info EQ (U8)CAUSE_USER_BUSY) &&
              (data->call_setup_parameter NEQ NULL))
            {
              SEND_EVENT (sat_get_call_setup_win(), SAT_CALL_REDIAL, 0, data->call_setup_parameter); /* redial */
              return; /* do NOT release the call setup parameter */
            }
            break;
          case 0x22: /* user rejected call setup */
            TRACE_EVENT("user rejected call setup");
          case 0x23: /* user cleared down call */
            TRACE_EVENT("user cleared down call");
          default:
            TRACE_EVENT("default reason");
            break;
          }
        }
        else if ((general_result & (U8)0xF0) EQ (U8)0x30)
        {
          /* command failed: not worth to retry with identical command */
          TRACE_EVENT("SAT_CALL_RESULT permanent problem");
          /* await SAT_SESSION_END in order to react */
        }
        else
        {
          TRACE_EVENT("SAT_CALL_RESULT unexp. result code");
        }
        SEND_EVENT (win, SAT_CALL_END, 0, NULL); /* release the call setup parameter */
      }
            break;

        case SAT_CALL_ALERT:
            TRACE_EVENT("SAT_CALL_ALERT");
            if (data->call_setup_parameter EQ NULL)
            {
                /* in case we are called withoud previous CALL_SETUP (which shouldn't happen!) */
                data->call_setup_parameter =
                    (T_SAT_call_setup_parameter *)ALLOC_MEMORY (sizeof(T_SAT_call_setup_parameter));

                /* provide an empty string; NULL would crash in info_dialog() */
                sat_command->c.ccres.info.len = 0;
                data->call_setup_parameter->TextString = sat_create_TEXT_ASCIIZ(&sat_command->c.ccres.info);

            }

            /* gather callId and redialTime */
            data->call_setup_parameter->callId = sat_command->c.ccres.callId;
            data->call_setup_parameter->redialTime = sat_command->c.ccres.redialTime;

            /* start a dialog to accept or reject the call */
      sat_win = sat_call_setup_create(data->win);
            if (sat_win)
      {
        data->sat_command = sat_command;
        SEND_EVENT (sat_win, event,0,data->call_setup_parameter);
      }
            else
      {
        sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
        sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
        sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
      }
            break;

        case SAT_SESSION_END:
            ETRACE(sprintf(buf, "SAT_SESSION_END %d", data->active_sat_session));
      data->active_sat_session = event;

            if (data->info_win NEQ NULL)
      {
        /* destroy any infoscreen */
        /* SPR#1428 - SH - New Editor changes */
#ifdef NEW_EDITOR
		SEND_EVENT (data->info_win, E_ED_DEINIT, 0, NULL);
#else /* NEW_EDITOR */
        SEND_EVENT (data->info_win, E_EDITOR_DEINIT, 0, NULL);
#endif /* NEW_EDITOR */
        data->info_win = NULL;
      }


  /*
       * Marcus: Issue 1057: 21/01/2003: Made SEND_EVENT conditional on
       * call_SATCall being FALSE. 
       */
      if (call_SATCall == FALSE)
      {
        SEND_EVENT (sat_get_setup_menu_win(), SAT_RETURN, 0, NULL); /* recreate the SETUP MENU */
      }
        break;

        case SAT_CALL_END:
            TRACE_EVENT("SAT_CALL_END");
            if (data->call_setup_parameter NEQ NULL)
            {
                /* release the call setup parameters */
                sat_destroy_TEXT_ASCIIZ(data->call_setup_parameter->TextString);
                FREE_MEMORY ((U8 *)data->call_setup_parameter, sizeof (T_SAT_call_setup_parameter));
                data->call_setup_parameter = NULL;
                SEND_EVENT (sat_get_call_setup_win(), event, 0, NULL); /* destroy the window */
            }

             /* SPR#1784 - DS - Destroy any information screen.
             */
              if (data->info_win NEQ NULL)
              {
                TRACE_EVENT("Destroy the info screen");
                
                /* destroy any infoscreen */
#ifdef NEW_EDITOR
                SEND_EVENT (data->info_win, E_ED_DEINIT, 0, NULL);
#else /* NEW_EDITOR */
                SEND_EVENT (data->info_win, E_EDITOR_DEINIT, 0, NULL);
#endif /* NEW_EDITOR */
                data->info_win = NULL;
              }

            break;

        case SAT_UNKNOWN:
            TRACE_EVENT("SAT_UNKNOWN");
            /*
             * unknown SAT commands are rejected
             */
      sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
      sat_res[SAT_AI_INDEX]  = SatResAiNoService;
            sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
            break;

       case SAT_REFRESH:
            TRACE_EVENT("SAT_REFRESH");
#ifdef MMI_HOMEZONE_ENABLED
{
int i;
    for (i=0;i<sat_command->c.refFiles.files_nr;i++)
    {
      switch(sat_command->c.refFiles.files[i])
      {
         case HZ_SIM_PARAMETERS:
         case HZ_SIM_CELL_CACHE:
         case HZ_SIM_CELL_CACHE+1:
         case HZ_SIM_CELL_CACHE+2:
         case HZ_SIM_CELL_CACHE+3:
         	/* Read new sim fields into memory.  SPR877 - SH - Parameter specifies that SIM fields
         	 * should be read in, even if they were already read at startup. */
         	homezoneReadSim(HZ_READ_SIM_AGAIN);
         	return;
         default:
         break;
      }
    }
}  
#endif
            break;

	   case SAT_SET_EVENTS:
			break;
#ifdef MMI_WAP_ENABLED
       case SAT_LAUNCH_BROWSER:
        
		break;
#endif
        case SAT_OPEN_CHANNEL:
            TRACE_EVENT("SAT_OPEN_CHANNEL");

             /*
             * Create and initiate Open Channel Window
             */
            sat_win = sat_class_e_create (data->win);
             
            if (sat_win)
            {
                data->sat_command = sat_command;
                SEND_EVENT (sat_win, event, 0, data->sat_command);
            }
            else
            {
                sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
            }
            break;
        case SAT_CLOSE_CHANNEL:
            TRACE_EVENT("SAT_CLOSE_CHANNEL");

             /*
             * Create and initiate Close Channel window
             */
            sat_win = sat_class_e_create (data->win);
             
            if (sat_win)
            {
                data->sat_command = sat_command;
                SEND_EVENT (sat_win, event, 0, data->sat_command);
            }
            else
            {
                sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
            }
            break;
        case SAT_SEND_DATA:
            TRACE_EVENT("SAT_SEND_DATA");

             /*
             * Create and initiate Send Data window
             */
            sat_win = sat_class_e_create (data->win);
             
            if (sat_win)
            {
                data->sat_command = sat_command;
                SEND_EVENT (sat_win, event, 0, data->sat_command);
            }
            else
            {
                sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
            }
            break;
        case SAT_RECEIVE_DATA:

            TRACE_EVENT("SAT_RECEIVE_DATA");

             /*
             * Create and initiate Receive Data window
             */
            sat_win = sat_class_e_create (data->win);
             
            if (sat_win)
            {
                data->sat_command = sat_command;
                SEND_EVENT (sat_win, event, 0, data->sat_command);
            }
            else
            {
                sat_res[SAT_ERR_INDEX] = SAT_RES_IMPOSSIBLE;
                sat_res[SAT_AI_INDEX]  = SatResAiNoCause;
                sat_done (sat_command, sat_res, sizeof(T_SAT_RES));
            }
            break;
        default:
            TRACE_EVENT("sim_toolkit_exec() unexp. event");
            break;
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -