4 Replies Latest reply on Aug 20, 2013 10:31 AM by user2094113

    ENVELOPE: CALL CONTROL BY SIM

    843851
      Hi,

      looks like on Nokia (tested with 6230 and one more model) phones after baring the call, it's impossible to execute a SELECT ITEM PAC. The following code will not work as expected:

      private static byte[] title = {'C', 'h', 'o', 'o', 's', 'e', ' ', 'i', 't', 'e', 'm', ':'};

      // ...

      switch (event) {
      case EVENT_CALL_CONTROL_BY_SIM:
      myEnvRespHdlr = EnvelopeResponseHandler.getTheHandler();
      myEnvRespHdlr.postAsBERTLV((byte)0x9F, (byte)0x01);

      myProHdlr.init(PRO_CMD_SELECT_ITEM, (byte)0, DEV_ID_ME);
      myProHdlr.appe ndTLV((byte)(TAG_ALPHA_IDENTIFIER | TAG_SET_CR), title, (short)0, (short)title.length);
      myProHdlr.appe ndTLV((byte)(TAG_ITEM | TAG_SET_CR), (byte)1, title, (short)0, (short)title.length);
      status = myProHdlr.send();
      break;
      }

      Could someone test the similar code on other Nokia phones and commit that it doesn't work? I only get "Call not allowed" (since the alpha identifier was not provided), but items list is not displayed.

      Thanks,
      Dziugas
        • 1. Re: ENVELOPE: CALL CONTROL BY SIM
          843851
          I recently figured out, that ME responds to PRO_CMD_SELECT item with RES_TEMP_PB_ME_UNABLE_PROC (General Result : ME currently unable to process command = 0x20).

          Dziugas
          • 2. Re: ENVELOPE: CALL CONTROL BY SIM
            843851
            menulis,

            Nokia handsets generally tend to reject any Proactive Command that uses the screen while a call is ongoing.

            If you log the comm between SIM and ME during that situation, you would observe that, in the TERMINAL RESPONSE to you SELECT ITEM command, the RESULT tag will be

            0x20 0x01 or 0x20 0x02,

            which are (ME currently unable to process command) responses with additional info:
            -     '01' = Screen is busy;
            -     '02' = ME currently busy on call;

            It is generally not a good idea to try a proactive command in CALL CONTROL anyway. Any unhandled problem could disrupt normal GSM operation, which is not a very good thing ;-)

            Cheers,
            Burak
            • 3. Re: ENVELOPE: CALL CONTROL BY SIM
              843851
              Hi,
              I have a same problem. I need to send sms to user instead call.

              I receive ( status = myProHdlr.send(); ) = 0x20.

              You explained that it is generally not a good idea to try a proactive command in CALL CONTROL .

              Can you help me? How can I send sms?
              Elena.
              • 4. Re: ENVELOPE: CALL CONTROL BY SIM
                user2094113

                I think Elena Solved this problem thats why no replay for this very old post. :-)

                 

                For for rest I am posting this solution:-

                 

                switch (event) {

                case EVENT_CALL_CONTROL_BY_SIM:

                myEnvRespHdlr = EnvelopeResponseHandler.getTheHandler();

                myEnvRespHdlr.postAsBERTLV((byte)0x9F, (byte)0x01);

                myProHdlr.init(PRO_CMD_SELECT_ITEM, (byte)0, DEV_ID_ME);

                myProHdlr.appe ndTLV((byte)(TAG_ALPHA_IDENTIFIER | TAG_SET_CR), title, (short)0, (short)title.length);

                myProHdlr.appe ndTLV((byte)(TAG_ITEM | TAG_SET_CR), (byte)1, title, (short)0, (short)title.length);

                status = myProHdlr.send();

                if(result==(byte)0x20)

                {

                  reg.setEvent(EVENT_EVENT_DOWNLOAD_IDLE_SCREEN_AVAILABLE);

                }

                break;

                case EVENT_EVENT_DOWNLOAD_IDLE_SCREEN_AVAILABLE:

                myProHdlr.init(PRO_CMD_SELECT_ITEM, (byte)0, DEV_ID_ME);

                myProHdlr.appe ndTLV((byte)(TAG_ALPHA_IDENTIFIER | TAG_SET_CR), title, (short)0, (short)title.length);

                myProHdlr.appe ndTLV((byte)(TAG_ITEM | TAG_SET_CR), (byte)1, title, (short)0, (short)title.length);

                status = myProHdlr.send();

                reg.clearEvent(EVENT_EVENT_DOWNLOAD_IDLE_SCREEN_AVAILABLE);

                break;

                }