bladox.com Forum Index bladox.com
Turbo SIM Toolkit Adapter Forums
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

supplementary service call control during a call

 
Post new topic   Reply to topic    bladox.com Forum Index -> Development
View previous topic :: View next topic  
Author Message
mwiget



Joined: 07 Sep 2008
Posts: 3

PostPosted: Mon Sep 15, 2008 11:07 am    Post subject: supplementary service call control during a call Reply with quote

Hi,

I'm trying to get control over supplementary services initiated by the ME during a call (hold, transfer), but it doesn't seem to trigger the action call control. When I'm not in a call and query e.g. call forwarding status, ACTION_CALL_CONTROL gets triggered.

I couldn't find any hints in the standards doc describing a different behavior regarding call control before and during a call.

Interesting enough, when I initiate a call transfer by dialing a second call (while the first is on hold), I do get a call_control trigger, but for the additional call, not the supplementary service (which puts the previous call on hold).

What am I missing here? Tried two different handset manufacturers. Are call hold and transfer handled directly by the ME?

Thanks
Back to top
View user's profile Send private message
pz
Guest





PostPosted: Wed Sep 17, 2008 5:46 am    Post subject: Reply with quote

This can be device depending - what phones do you have? Do you have terminal profiles? What is the terminal response of the send_ss commands?
Back to top
mwiget



Joined: 07 Sep 2008
Posts: 3

PostPosted: Wed Sep 17, 2008 6:04 am    Post subject: Reply with quote

pz wrote:
This can be device depending - what phones do you have? Do you have terminal profiles? What is the terminal response of the send_ss commands?

Motorola Razr v3i, TP AF FF FF FF FF 0F 1F 1F 7F 00 00 1F 23 88 9A 03 03
iphone 3G 2.1: TP FF 9F FF FF 7F 01 00 DF BF 00 00 00 00 00 80 02

Haven't tried to use send_ss yet, I'm trying to intercept the ME for now, which works unless I'm on a call.

Will check functionality with additional phones I have available.
Back to top
View user's profile Send private message
mwiget



Joined: 07 Sep 2008
Posts: 3

PostPosted: Sun Sep 21, 2008 5:29 pm    Post subject: sample test code for supplementary service trigger Reply with quote

here's a little dummy test program that explores the problem. Call control gets triggered with a TLV of T_SS_STRING when querying e.g. the status of call divertion, but there is no such trigger when doing a call transfer or put the call on hold or resume.

I assumed both should also trigger such events. Maybe I'm wrong?


Code:

/*
  simple app to show when call-control gets called
  and if it contains a SS, USSD or ADDRESS Tag

  This should bring a popup message, or, wenn compiled
  with DEBUG, a debug message via programmer, whenever
  call control gets called.
*/

#include <config.h>
#include <turbo/turbo.h>

#include <stdlib.h>
#include <string.h>

#define NUMBER_BUFFER_SIZE  50

static lc_char PROGMEM lc_SS[]={
        LC_EN("SS!")
        LC_END
};

static lc_char PROGMEM lc_USSD[]={
        LC_EN("USSD!")
        LC_END
};

static lc_char PROGMEM lc_ADDRESS[]={
        LC_EN("ADDRESS!")
        LC_END
};

u8 *get_resp_call;
u8 get_resp_call_len;

#define CALL_STAT_ALLOW         0x00
#define CALL_STAT_CANCEL        0x01
#define CALL_STAT_MODIFY        0x02

void bum (void * x)
{
    u8  *res;
      display_text_raw (x, Q_DISPLAY_TEXT_HIGH_PRIORITY |
            Q_DISPLAY_TEXT_DELAY_CLEAR);
}

void call_control (u8 * s)
{
  u8 j;
  u8 stat;
  u16 ret;

  get_resp_call_len = 0;
  stat = CALL_STAT_ALLOW;

  j = get_tag (s, T_SS_STRING);
  if (j != 0)
#ifdef DEBUG
    dbsp("T_SS_STRING\n");
#else
    stk_thread(bum, locale(lc_SS));
#endif

  j = get_tag (s, T_USSD_STRING);
  if (j != 0)
#ifdef DEBUG
    dbsp("T_SS_STRING\n");
#else
    stk_thread(bum, locale(lc_USSD));
#endif

  j = get_tag (s, T_ADDRESS);
  if (j != 0)
#ifdef DEBUG
    dbsp("T_SS_STRING\n");
#else
    stk_thread(bum, locale(lc_ADDRESS));
#endif

  if (stat == CALL_STAT_ALLOW)
  {
    get_resp_call[get_resp_call_len] = CALL_STAT_ALLOW;
    get_resp_call_len++;
    get_resp_call[get_resp_call_len] = 0x00;
    get_resp_call_len++;
  }

  if (stat == CALL_STAT_CANCEL)
  {
    get_resp_call[get_resp_call_len] = CALL_STAT_CANCEL;
    get_resp_call_len++;
    get_resp_call[get_resp_call_len] = 0x00;
    get_resp_call_len++;
  }

  ret = 0x9F00 | get_resp_call_len;

  get_resp_call[get_resp_call_len] = 0x90;
  get_resp_call_len++;
  get_resp_call[get_resp_call_len] = 0x00;
  get_resp_call_len++;

  retval (ret);
}

/* -------------------------------------------------------------------- */
void turbo_handler (u8 action, void *data)
{
  switch (action)
  {
    case ACTION_APP_INIT:
      get_resp_call = malloc (NUMBER_BUFFER_SIZE);
      reg_action (ACTION_CALL_CONTROL);
      break;

    case ACTION_CALL_CONTROL:
      call_control (data);
      break;

    case ACTION_FILE_APDU:

      if (((File_apdu_data *) data)->prev_ins == ME_CMD_ENVELOPE
     && ((File_apdu_data *) data)->ins == ME_CMD_GET_RESPONSE)
      {
   u8 *r = buf_B ();
   u8 i;

   for (i = 0; i < get_resp_call_len; i++)
     r[i] = get_resp_call[i];
      }
      break;

    default:
      break;
  }
}
Back to top
View user's profile Send private message
pz
Guest





PostPosted: Tue Sep 30, 2008 12:36 pm    Post subject: Reply with quote

I did some tests myself and it seems that those services related to call on hold/transfer are not accessible - you cannot initiate them and are not reported with call control. I don't know where this is specified though - in what standard. Quite a pity - could be used to many nice things.
Back to top
Display posts from previous:   
Post new topic   Reply to topic    bladox.com Forum Index -> Development All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group