blob: 108b060586b83b6e46c66d423ddee9111561b7c7 [file] [log] [blame]
/****************************************************************************
**
** This file contains the SAT conformance test cases
**
** Copyright 2011 EB(Elektrobit).
**
**
** This file may be used under the terms of the GNU General Public License
** version 2.0 as published by the Free Software Foundation and appearing
** in the file LICENSE.GPL included in the packaging of this file.
**
** Please review the following information to ensure GNU General Public
** Licensing requirements will be met:
** http://www.fsf.org/licensing/licenses/info/GPLv2.html.
**
**
****************************************************************************/
#include "simapplication.h"
#include <qatutils.h>
#include <qdebug.h>
#include <QTextCodec>
#include "qsmsmessage.h"
ConformanceSimApplication::ConformanceSimApplication( SimRules *rules,
QObject *parent )
: SimApplication( rules, parent )
{
}
ConformanceSimApplication::~ConformanceSimApplication()
{
}
const QString ConformanceSimApplication::getName()
{
return "Conformance SIM Application";
}
#define ConformanceMenu_DisplayText 1
#define ConformanceMenu_GetInkey 2
#define ConformanceMenu_GetInput 3
#define ConformanceMenu_MoreTime 4
#define ConformanceMenu_SetupCall 5
#define NormalMenu_1_1 1
#define NormalMenu_1_2 2
#define NormalMenu_1_3 3
#define NormalMenu_1_4 4
#define NormalMenu_1_5 5
#define NormalMenu_1_6 6
#define NormalMenu_1_7 7
#define NormalMenu_1_8 8
#define NormalMenu_1_9 9
#define NormalMenu_1_10 10
#define NormalMenu_1_11 11
#define NormalMenu_Main 12
#define IconMenu_1A 1
#define IconMenu_2A 2
#define IconMenu_3A 3
#define IconMenu_4A 4
#define IconMenu_5A 5
#define IconMenu_6A 6
#define IconMenu_Main 7
#define Display_Text_Normal 1
#define Display_Text_No_Response 2
#define Display_Text_Extension_Text 3
#define Display_Text_Sustained_Text_1 4
#define Display_Text_Sustained_Text_2 5
#define Display_Text_Sustained_Text_3 6
#define Display_Text_Icon 7
#define Display_Text_UCS2_Cyrillic 8
#define Display_Text_Variable_Time_Out 9
#define Display_Text_Attribute 10
#define Display_Text_Main 11
#define GetInkeyMenu_Normal 1
#define GetInkeyMenu_No_Response 2
#define GetInkeyMenu_Cyrillic_Display_1 3
#define GetInkeyMenu_Cyrillic_Display_2 4
#define GetInkeyMenu_Cyrillic_Entry 5
#define GetInkeyMenu_YesNo_Response 6
#define GetInkeyMenu_ImmediateResponse 7
#define GetInkeyMenu_Icon 8
#define GetInkeyMenu_Help 9
#define GetInkeyMenu_Variable_Timeout 10
#define GetInkeyMenu_Text_Attribute 11
#define GetInkeyMenu_Main 12
#define GetInputMenu_Normal 1
#define GetInputMenu_No_Response 2
#define GetInputMenu_Cyrillic_Display_1 3
#define GetInputMenu_Cyrillic_Display_2 4
#define GetInputMenu_Cyrillic_Entry_1 5
#define GetInputMenu_Cyrillic_Entry_2 6
#define GetInputMenu_Default_Text_1 7
#define GetInputMenu_Default_Text_2 8
#define GetInputMenu_Icon 9
#define GetInputMenu_Help 10
#define GetInputMenu_Text_Attribute 11
#define GetInputMenu_Main 12
#define SetupCall_Confirmed 1
#define SetupCall_Long_AID 2
#define SetupCall_Subaddress_Not_Supported 3
#define SetupCall_Rejected 4
#define SetupCall_Putting_On_Hold 5
#define SetupCall_Disconnect_Others 6
#define SetupCall_If_Not_Busy 7
#define SetupCall_On_Hold_Not_allowed 8
#define SetupCall_Max_Dialing_Number 9
#define SetupCall_Two_AID 10
#define SetupCall_Basic_icon 11
#define SetupCall_Self_basic_icon 12
#define SetupCall_Basic_icon_during_call 13
void ConformanceSimApplication::mainMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SetupMenu );
cmd.setTitle( "Conformance menu" );
item.setIdentifier( ConformanceMenu_DisplayText );
item.setLabel( "Display Text" );
items += item;
item.setIdentifier( ConformanceMenu_GetInkey );
item.setLabel( "Get Inkey" );
items += item;
item.setIdentifier( ConformanceMenu_GetInput );
item.setLabel( "Get Input" );
items += item;
item.setIdentifier( ConformanceMenu_MoreTime );
item.setLabel( "More Time" );
items += item;
item.setIdentifier( ConformanceMenu_SetupCall );
item.setLabel( "Setup Call" );
items += item;
cmd.setMenuItems( items );
command( cmd, 0, 0 );
}
void ConformanceSimApplication::mainMenuSelection( int id )
{
QSimCommand cmd;
switch ( id ) {
case ConformanceMenu_DisplayText:
{
sendDisplayTextMenu();
}
break;
case ConformanceMenu_GetInkey:
{
sendGetInkeyMenu();
}
break;
case ConformanceMenu_GetInput:
{
sendGetInputMenu();
}
break;
case ConformanceMenu_MoreTime:
{
cmd.setType( QSimCommand::MoreTime );
cmd.setDestinationDevice( QSimCommand::ME );
command( cmd, this, SLOT(endSession()) );
}
break;
case ConformanceMenu_SetupCall:
{
sendSetupCallMenu();
}
break;
default:
{
// Don't know what this item is, so just re-display the main menu.
endSession();
}
break;
}
}
void ConformanceSimApplication::sendDisplayTextMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Display Text" );
item.setIdentifier( Display_Text_Normal );
item.setLabel( "Normal" );
items += item;
item.setIdentifier( Display_Text_No_Response );
item.setLabel( "Support of No response from user" );
items += item;
item.setIdentifier( Display_Text_Extension_Text );
item.setLabel( "Display of the extension text" );
items += item;
item.setIdentifier( Display_Text_Sustained_Text_1 );
item.setLabel( "Sustained text, unpacked 8-bit data" );
items += item;
item.setIdentifier( Display_Text_Sustained_Text_2 );
item.setLabel( "Sustained text, clear message after delay" );
items += item;
item.setIdentifier( Display_Text_Sustained_Text_3 );
item.setLabel( "Sustained text, wait for user MMI to clear" );
items += item;
item.setIdentifier( Display_Text_Icon );
item.setLabel( "Display of icon" );
items += item;
item.setIdentifier( Display_Text_UCS2_Cyrillic );
item.setLabel( "UCS2 display supported in Cyrillic" );
items += item;
item.setIdentifier( Display_Text_Variable_Time_Out );
item.setLabel( "Variable Time out" );
items += item;
item.setIdentifier( Display_Text_Attribute );
item.setLabel( "Support of Text Attribute" );
items += item;
item.setIdentifier( Display_Text_Main );
item.setLabel( "Return to main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(DisplayTextMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::sendDisplayTextNormalMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Display Text (Normal)" );
item.setIdentifier( NormalMenu_1_1 );
item.setLabel( "normal priority, Unpacked 8 bit data,successful" );
items += item;
item.setIdentifier( NormalMenu_1_2 );
item.setLabel( "Unpacked 8 bit data,screen busy" );
items += item;
item.setIdentifier( NormalMenu_1_3 );
item.setLabel( "high priority, Unpacked 8 bit data,successful" );
items += item;
item.setIdentifier( NormalMenu_1_4 );
item.setLabel( "Packed, SMS default alphabet,successful" );
items += item;
item.setIdentifier( NormalMenu_1_5 );
item.setLabel( "Clear message after delay,successful" );
items += item;
item.setIdentifier( NormalMenu_1_6 );
item.setLabel( "Text string with 160 bytes,successful" );
items += item;
item.setIdentifier( NormalMenu_1_7 );
item.setLabel( "Backward move, successful" );
items += item;
item.setIdentifier( NormalMenu_1_8 );
item.setLabel( "session terminated by user" );
items += item;
item.setIdentifier( NormalMenu_1_9 );
item.setLabel( "Null text string, successful" );
items += item;
item.setIdentifier( NormalMenu_1_10 );
item.setLabel( "Empty text string, successful" );
items += item;
item.setIdentifier( NormalMenu_Main );
item.setLabel( "Return to Display Text main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(DisplayTextNormalMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::sendDisplayTextIconMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Display Text (Icon support)" );
item.setIdentifier( IconMenu_1A );
item.setLabel( "basic icon, self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_2A );
item.setLabel( "display of colour icon, successful" );
items += item;
item.setIdentifier( IconMenu_3A );
item.setLabel( "basic icon, not self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_4A );
item.setLabel( "basic icon, empty text string, unsuccessful" );
items += item;
item.setIdentifier( IconMenu_Main );
item.setLabel( "Return to Display Text main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(DisplayTextIconMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::DisplayTextMenu( const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case Display_Text_Normal:
{
sendDisplayTextNormalMenu();
}
break;
case Display_Text_No_Response:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "<TIME-OUT>" );
command( cmd, this, SLOT(sendDisplayTextMenu()) );
}
break;
case Display_Text_Extension_Text:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "This command instructs the ME to display a"
" text message and/or an icon (see 6.5.4). "
"It allows the SIM to define the priority"
" of that message, and the text string format."
" Two types of priority are defined:- display "
" normal priority text and/");
command( cmd, this, SLOT(sendDisplayTextMenu()) );
}
break;
case Display_Text_Sustained_Text_1:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Toolkit Test 1" );
cmd.setImmediateResponse( true );
command( cmd, this, SLOT(sendDisplayTextMenu()) );
}
break;
case Display_Text_Sustained_Text_2:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( true );
cmd.setText( "Toolkit Test 2" );
cmd.setImmediateResponse( true );
command( cmd, this, SLOT(sendDisplayTextMenu()) );
}
break;
case Display_Text_Sustained_Text_3:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Toolkit Test 3" );
cmd.setImmediateResponse( true );
command( cmd, this, SLOT(sendDisplayTextMenu()) );
}
break;
case Display_Text_Icon:
{
sendDisplayTextIconMenu();
}
break;
case Display_Text_UCS2_Cyrillic:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
QTextCodec *codec = QTextCodec::codecForName( "utf8" );
cmd.setText( codec->toUnicode( "ЗДРАВСТВУЙТЕ" ) );
command( cmd, this, SLOT(sendDisplayTextMenu()),
QSimCommand::UCS2Strings );
}
break;
case Display_Text_Variable_Time_Out:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "10 Second" );
cmd.setDuration( 10000 );
command( cmd, this, SLOT(sendDisplayTextMenu()) );
}
break;
case Display_Text_Attribute:
{
QByteArray ba;
ba.resize( 4 );
ba[0] = 0x00;
ba[1] = 0x10;
ba[2] = 0x00;
ba[3] = 0xB4;
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Text Attribute 1" );
cmd.setTextAttribute( ba );
command( cmd, this, SLOT(sendDisplayTextMenu()) );
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::DisplayTextNormalMenu(
const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case NormalMenu_1_1:
case NormalMenu_1_2:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Toolkit Test 1" );
command( cmd, this, SLOT(sendDisplayTextNormalMenu()) );
}
break;
case NormalMenu_1_3:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setHighPriority( true );
cmd.setClearAfterDelay( false );
cmd.setText( "Toolkit Test 2" );
command( cmd, this, SLOT(sendDisplayTextNormalMenu()) );
}
break;
case NormalMenu_1_4:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Toolkit Test 3" );
command( cmd, this, SLOT(sendDisplayTextNormalMenu()),
QSimCommand::PackedStrings );
}
break;
case NormalMenu_1_5:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( true );
cmd.setText( "Toolkit Test 4" );
command( cmd, this, SLOT(sendDisplayTextNormalMenu()) );
}
break;
case NormalMenu_1_6:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "This command instructs the ME to display a"
" text message. It allows the SIM to define"
" the priority of that message, and the text"
" string format. Two types of prio" );
command( cmd, this, SLOT(sendDisplayTextNormalMenu()) );
}
break;
case NormalMenu_1_7:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "<GO-BACKWARDS>" );
command( cmd, this, SLOT(sendDisplayTextNormalMenu()) );
}
break;
case NormalMenu_1_8:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "<ABORT>" );
command( cmd, this, SLOT(sendDisplayTextNormalMenu()) );
}
break;
case NormalMenu_1_9:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText("");
command( cmd, this, SLOT(sendDisplayTextNormalMenu()) );
}
break;
case NormalMenu_1_10:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( QString() );
command( cmd, this, SLOT(sendDisplayTextNormalMenu()) );
}
break;
case NormalMenu_Main:
{
sendDisplayTextMenu();
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::DisplayTextIconMenu(
const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case IconMenu_1A:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Basic Icon" );
cmd.setIconId( 1 );
cmd.setIconSelfExplanatory( true );
command( cmd, this, SLOT(sendDisplayTextIconMenu()) );
}
break;
case IconMenu_2A:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Colour Icon" );
cmd.setIconId( 2 );
cmd.setIconSelfExplanatory( true );
command( cmd, this, SLOT(sendDisplayTextIconMenu()) );
}
break;
case IconMenu_3A:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Basic Icon" );
cmd.setIconId( 1 );
command( cmd, this, SLOT(sendDisplayTextIconMenu()) );
}
break;
case IconMenu_4A:
{
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( QString() );
cmd.setIconId( 1 );
command( cmd, this, SLOT(sendDisplayTextIconMenu()) );
}
break;
case IconMenu_Main:
{
sendDisplayTextMenu();
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::sendGetInkeyMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Get Inkey" );
item.setIdentifier( GetInkeyMenu_Normal );
item.setLabel( "Normal" );
items += item;
item.setIdentifier( GetInkeyMenu_No_Response );
item.setLabel( "No response from user" );
items += item;
item.setIdentifier( GetInkeyMenu_Cyrillic_Display_1 );
item.setLabel( "UCS2 display in Cyrillic" );
items += item;
item.setIdentifier( GetInkeyMenu_Cyrillic_Display_2 );
item.setLabel( "max. length UCS2 display in Cyrillic" );
items += item;
item.setIdentifier( GetInkeyMenu_Cyrillic_Entry );
item.setLabel( "UCS2 entry in Cyrillic" );
items += item;
item.setIdentifier( GetInkeyMenu_YesNo_Response );
item.setLabel( "Yes/No response for the input" );
items += item;
item.setIdentifier( GetInkeyMenu_ImmediateResponse );
item.setLabel( "Immediate response for the digit input" );
items += item;
item.setIdentifier( GetInkeyMenu_Icon );
item.setLabel( "Display of icon" );
items += item;
item.setIdentifier( GetInkeyMenu_Help );
item.setLabel( "Help Information" );
items += item;
item.setIdentifier( GetInkeyMenu_Variable_Timeout );
item.setLabel( "Variable Time out" );
items += item;
item.setIdentifier( GetInkeyMenu_Text_Attribute );
item.setLabel( "Support of Text Attribute" );
items += item;
item.setIdentifier( GetInkeyMenu_Main );
item.setLabel( "Return to main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(GetInkeyMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::sendGetInkeyNormalMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Get Inkey (Normal)" );
item.setIdentifier( NormalMenu_1_1 );
item.setLabel( "Digits only for character set, unpacked 8-bit" );
items += item;
item.setIdentifier( NormalMenu_1_2 );
item.setLabel( "Digits only for character set, packed text string" );
items += item;
item.setIdentifier( NormalMenu_1_3 );
item.setLabel( "Backward move" );
items += item;
item.setIdentifier( NormalMenu_1_4 );
item.setLabel( "Abort" );
items += item;
item.setIdentifier( NormalMenu_1_5 );
item.setLabel( "SMS default alphabet for character set, unpacked 8-bit" );
items += item;
item.setIdentifier( NormalMenu_1_6 );
item.setLabel( "Max length for the Text String, successful" );
items += item;
item.setIdentifier( NormalMenu_Main );
item.setLabel( "Return to Get Inkey main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(GetInkeyNormalMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::sendGetInkeyIconMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Get Inkey (Icon support)" );
item.setIdentifier( IconMenu_1A );
item.setLabel( "basic icon, self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_2A );
item.setLabel( "display of colour icon, successful" );
items += item;
item.setIdentifier( IconMenu_3A );
item.setLabel( "basic icon, not self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_4A );
item.setLabel( "Colour icon, non self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_5A );
item.setLabel( "basic icon, null text string, unsuccessful" );
items += item;
item.setIdentifier( IconMenu_6A );
item.setLabel( "basic icon, empty text string, unsuccessful" );
items += item;
item.setIdentifier( IconMenu_Main );
item.setLabel( "Return to Get Inkey main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(GetInkeyIconMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::sendHelpInfo( const QSimTerminalResponse& resp )
{
if ( resp.result() == QSimTerminalResponse::HelpInformationRequested ) {
QSimCommand cmd;
cmd.setType( QSimCommand::DisplayText );
cmd.setDestinationDevice( QSimCommand::Display );
cmd.setClearAfterDelay( false );
cmd.setText( "Help information" );
command( cmd, this, SLOT(GetInkeyMenu(QSimTerminalResponse)) );
} else
endSession();
}
void ConformanceSimApplication::GetInkeyMenu( const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.command().type() == QSimCommand::DisplayText &&
resp.result() == QSimTerminalResponse::Success ) {
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setHasHelp( true );
cmd.setText( "Enter \"+\"" );
command( cmd, this, SLOT(sendGetInkeyMenu()) );
return;
}
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case GetInkeyMenu_Normal:
{
sendGetInkeyNormalMenu();
}
break;
case GetInkeyMenu_No_Response:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<TIME-OUT>" );
command( cmd, this, SLOT(sendGetInkeyMenu()) );
}
break;
case GetInkeyMenu_Cyrillic_Display_1:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
QTextCodec *codec = QTextCodec::codecForName( "utf8" );
cmd.setText( codec->toUnicode( "ЗДРАВСТВУЙТЕ" ) );
command( cmd, this, SLOT(sendGetInkeyMenu()),
QSimCommand::UCS2Strings );
}
break;
case GetInkeyMenu_Cyrillic_Display_2:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
QTextCodec *codec = QTextCodec::codecForName( "utf8" );
cmd.setText( codec->toUnicode( "ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ"
"ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ"
"ЗДРАВСТВУЙТЕЗДРАВСТВУЙ" ) );
command( cmd, this, SLOT(sendGetInkeyMenu()),
QSimCommand::UCS2Strings );
}
break;
case GetInkeyMenu_Cyrillic_Entry:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits( false );
cmd.setUcs2Input( true );
cmd.setText( "Enter" );
command( cmd, this, SLOT(sendGetInkeyMenu()) );
}
break;
case GetInkeyMenu_YesNo_Response:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantYesNo( true );
cmd.setText( "Enter YES" );
command( cmd, this, SLOT(sendGetInkeyMenu()) );
}
break;
case GetInkeyMenu_ImmediateResponse:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantImmediateResponse( true );
cmd.setText( "Enter 1" );
command( cmd, this, SLOT(sendGetInkeyMenu()) );
}
break;
case GetInkeyMenu_Icon:
{
sendGetInkeyIconMenu();
}
break;
case GetInkeyMenu_Help:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setHasHelp( true );
cmd.setText( "Enter \"+\"" );
command( cmd, this, SLOT(sendHelpInfo(QSimTerminalResponse)) );
}
break;
case GetInkeyMenu_Variable_Timeout:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "Enter \"+\"" );
cmd.setDuration( 10000 );
command( cmd, this, SLOT(sendGetInkeyMenu()) );
}
break;
case GetInkeyMenu_Text_Attribute:
{
QByteArray ba;
ba.resize( 4 );
ba[0] = 0x00;
ba[1] = 0x09;
ba[2] = 0x00;
ba[3] = 0xB4;
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "Enter \"+\"" );
cmd.setTextAttribute( ba );
command( cmd, this, SLOT(sendGetInkeyMenu()) );
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::GetInkeyNormalMenu( const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case NormalMenu_1_1:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "Enter \"+\"" );
command( cmd, this, SLOT(sendGetInkeyNormalMenu()) );
}
break;
case NormalMenu_1_2:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "Enter \"0\"" );
command( cmd, this, SLOT(sendGetInkeyNormalMenu()),
QSimCommand::PackedStrings );
}
break;
case NormalMenu_1_3:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<GO-BACKWARDS>" );
command( cmd, this, SLOT(sendGetInkeyNormalMenu()) );
}
break;
case NormalMenu_1_4:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<ABORT>" );
command( cmd, this, SLOT(sendGetInkeyNormalMenu()) );
}
break;
case NormalMenu_1_5:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(false);
cmd.setText( "Enter \"q\"" );
command( cmd, this, SLOT(sendGetInkeyNormalMenu()) );
}
break;
case NormalMenu_1_6:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(false);
cmd.setText( "Enter \"x\". This command instructs the ME to display "
"text, and to expect the user to enter a single character."
" Any response entered by the user shall be passed t" );
command( cmd, this, SLOT(sendGetInkeyNormalMenu()) );
}
break;
case NormalMenu_Main:
{
sendGetInkeyMenu();
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::GetInkeyIconMenu( const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case IconMenu_1A:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<NO-ICON>" );
cmd.setIconId( 1 );
cmd.setIconSelfExplanatory( true );
command( cmd, this, SLOT(sendGetInkeyIconMenu()) );
}
break;
case IconMenu_2A:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<BASIC-ICON>" );
cmd.setIconId( 1 );
command( cmd, this, SLOT(sendGetInkeyIconMenu()) );
}
break;
case IconMenu_3A:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<NO-ICON>" );
cmd.setIconId( 2 );
cmd.setIconSelfExplanatory( true );
command( cmd, this, SLOT(sendGetInkeyIconMenu()) );
}
break;
case IconMenu_4A:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<COLOUR-ICON>" );
cmd.setIconId( 2 );
command( cmd, this, SLOT(sendGetInkeyIconMenu()) );
}
break;
case IconMenu_5A:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "" );
cmd.setIconId( 1 );
command( cmd, this, SLOT(sendGetInkeyIconMenu()) );
}
break;
case IconMenu_6A:
{
cmd.setType( QSimCommand::GetInkey );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( QString() );
cmd.setIconId( 1 );
command( cmd, this, SLOT(sendGetInkeyIconMenu()) );
}
break;
case IconMenu_Main:
{
sendGetInkeyMenu();
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::sendGetInputMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Get Input" );
item.setIdentifier( GetInputMenu_Normal );
item.setLabel( "Normal" );
items += item;
item.setIdentifier( GetInputMenu_No_Response );
item.setLabel( "No response from user" );
items += item;
item.setIdentifier( GetInputMenu_Cyrillic_Display_1 );
item.setLabel( "UCS2 display in Cyrillic" );
items += item;
item.setIdentifier( GetInputMenu_Cyrillic_Display_2 );
item.setLabel( "max.length UCS2 display in Cyrillic" );
items += item;
item.setIdentifier( GetInputMenu_Cyrillic_Entry_1 );
item.setLabel( "UCS2 entry in Cyrillic" );
items += item;
item.setIdentifier( GetInputMenu_Cyrillic_Entry_2 );
item.setLabel( "max.length UCS2 entry in Cyrillic" );
items += item;
item.setIdentifier( GetInputMenu_Default_Text_1 );
item.setLabel( "Default Text" );
items += item;
item.setIdentifier( GetInputMenu_Default_Text_2 );
item.setLabel( "Default Text with max. length" );
items += item;
item.setIdentifier( GetInputMenu_Icon );
item.setLabel( "Display of icon" );
items += item;
item.setIdentifier( GetInputMenu_Help );
item.setLabel( "Help Information" );
items += item;
item.setIdentifier( GetInputMenu_Text_Attribute );
item.setLabel( "Support of Text Attribute" );
items += item;
item.setIdentifier( GetInputMenu_Main );
item.setLabel( "Return to main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(GetInputMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::sendGetInputNormalMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Get Input (Normal)" );
item.setIdentifier( NormalMenu_1_1 );
item.setLabel( "digits only, SMS default alphabet, echo text" );
items += item;
item.setIdentifier( NormalMenu_1_2 );
item.setLabel( "digits only, SMS default alphabet, echo text, packed SMS" );
items += item;
item.setIdentifier( NormalMenu_1_3 );
item.setLabel( "character set, SMS default alphabet, echo text" );
items += item;
item.setIdentifier( NormalMenu_1_4 );
item.setLabel( "digits only, SMS default alphabet, hide text" );
items += item;
item.setIdentifier( NormalMenu_1_5 );
item.setLabel( "digits only, SMS default alphabet, echo text" );
items += item;
item.setIdentifier( NormalMenu_1_6 );
item.setLabel( "backwards move" );
items += item;
item.setIdentifier( NormalMenu_1_7 );
item.setLabel( "abort" );
items += item;
item.setIdentifier( NormalMenu_1_8 );
item.setLabel( "response length range 160-160" );
items += item;
item.setIdentifier( NormalMenu_1_9 );
item.setLabel( "response length range 0-1" );
items += item;
item.setIdentifier( NormalMenu_1_10 );
item.setLabel( "null length for the text string" );
items += item;
item.setIdentifier( NormalMenu_1_11 );
item.setLabel( "empty text string" );
items += item;
item.setIdentifier( NormalMenu_Main );
item.setLabel( "Return to Get Input main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(GetInputNormalMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::sendGetInputIconMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Get Input (Icon support)" );
item.setIdentifier( IconMenu_1A );
item.setLabel( "basic icon, self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_2A );
item.setLabel( "basic icon, non self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_3A );
item.setLabel( "Colour icon, self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_4A );
item.setLabel( "Colour icon, non self-explanatory, successful" );
items += item;
item.setIdentifier( IconMenu_5A );
item.setLabel( "basic icon, null text string, unsuccessful" );
items += item;
item.setIdentifier( IconMenu_6A );
item.setLabel( "basic icon, empty text string, unsuccessful" );
items += item;
item.setIdentifier( IconMenu_Main );
item.setLabel( "Return to Get Input main menu" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(GetInputIconMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::GetInputMenu( const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case GetInputMenu_Normal:
{
sendGetInputNormalMenu();
}
break;
case GetInputMenu_No_Response:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "<TIME-OUT>" );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 10 );
command( cmd, this, SLOT(sendGetInputMenu()) );
}
break;
case GetInputMenu_Cyrillic_Display_1:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setEcho( true );
cmd.setWantDigits( false );
QTextCodec *codec = QTextCodec::codecForName( "utf8" );
cmd.setText( codec->toUnicode( "ЗДРАВСТВУЙТЕ" ) );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength( 5 );
command( cmd, this, SLOT(sendGetInputMenu()),
QSimCommand::UCS2Strings );
}
break;
case GetInputMenu_Cyrillic_Display_2:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setEcho( true );
cmd.setWantDigits( false );
QTextCodec *codec = QTextCodec::codecForName( "utf8" );
cmd.setText( codec->toUnicode( "ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ"
"ЗДРАВСТВУЙТЕЗДРАВСТВУЙТЕ"
"ЗДРАВСТВУЙТЕЗДРАВСТВУЙ" ) );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength( 5 );
command( cmd, this, SLOT(sendGetInputMenu()),
QSimCommand::UCS2Strings );
}
break;
case GetInputMenu_Cyrillic_Entry_1:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits( false );
cmd.setUcs2Input( true );
cmd.setText( "Enter Hello" );
cmd.setMinimumLength( 12 );
cmd.setMaximumLength( 12 );
command( cmd, this, SLOT(sendGetInputMenu()) );
}
break;
case GetInputMenu_Cyrillic_Entry_2:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits( false );
cmd.setUcs2Input( true );
cmd.setText( "Enter Hello" );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength(0xFF);
command( cmd, this, SLOT(sendGetInputMenu()) );
}
break;
case GetInputMenu_Default_Text_1:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "Enter 12345" );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength( 5 );
cmd.setDefaultText( "12345" );
command( cmd, this, SLOT(sendGetInputMenu()) );
}
break;
case GetInputMenu_Default_Text_2:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "Enter:" );
cmd.setMinimumLength( 160 );
cmd.setMaximumLength( 160 );
cmd.setDefaultText( "***1111111111###***2222222222###***3333333333"
"###***4444444444###***5555555555###***6666666"
"666###***7777777777###***8888888888###***9999"
"999999###***0000000000###" );
command( cmd, this, SLOT(sendGetInputMenu()) );
}
break;
case GetInputMenu_Icon:
{
sendGetInputIconMenu();
}
break;
case GetInputMenu_Help:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setHasHelp( true );
cmd.setText( "Enter 12345" );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength( 5 );
command( cmd, this, SLOT(sendGetInputMenu()) );
}
break;
case GetInputMenu_Text_Attribute:
{
QByteArray ba;
ba.resize( 4 );
ba[0] = 0x00;
ba[1] = 0x0B;
ba[2] = 0x00;
ba[3] = 0xB4;
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "Enter 12345" );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength( 5 );
cmd.setTextAttribute( ba );
command( cmd, this, SLOT(sendGetInputMenu()) );
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::GetInputNormalMenu( const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case NormalMenu_1_1:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "Enter 12345" );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength( 5 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_2:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setPackedInput( true );
cmd.setText( "Enter 67*#+" );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength( 5 );
command( cmd, this, SLOT(sendGetInputNormalMenu()),
QSimCommand::PackedStrings );
}
break;
case NormalMenu_1_3:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits( false );
cmd.setEcho( true );
cmd.setText( "Enter AbCdE" );
cmd.setMinimumLength( 5 );
cmd.setMaximumLength( 5 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_4:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setUcs2Input( false );
cmd.setEcho( false );
cmd.setText( "Password 1<SEND>2345678" );
cmd.setMinimumLength( 4 );
cmd.setMaximumLength( 8 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_5:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "Enter 1..9,0..9,0(1)" );
cmd.setMinimumLength( 1 );
cmd.setMaximumLength( 20 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_6:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "<GO-BACKWARDS>" );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 8 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_7:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "<ABORT>" );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 8 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_8:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "***1111111111###***2222222222###***3333333333###***44"
"44444444###***5555555555###***6666666666###***7777777"
"777###***8888888888###***9999999999###***0000000000###" );
cmd.setMinimumLength( 160 );
cmd.setMaximumLength( 160 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_9:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "<SEND>" );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 1 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_10:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( QString() );
cmd.setMinimumLength( 1 );
cmd.setMaximumLength( 5 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_1_11:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setEcho( true );
cmd.setText( "" );
cmd.setMinimumLength( 1 );
cmd.setMaximumLength( 5 );
command( cmd, this, SLOT(sendGetInputNormalMenu()) );
}
break;
case NormalMenu_Main:
{
sendGetInputMenu();
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::GetInputIconMenu( const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case IconMenu_1A:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<NO-ICON>" );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 10 );
cmd.setIconId( 1 );
cmd.setIconSelfExplanatory( true );
command( cmd, this, SLOT(sendGetInputIconMenu()) );
}
break;
case IconMenu_2A:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<BASIC-ICON>" );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 10 );
cmd.setIconId( 1 );
command( cmd, this, SLOT(sendGetInputIconMenu()) );
}
break;
case IconMenu_3A:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<NO-ICON>" );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 10 );
cmd.setIconId( 2 );
cmd.setIconSelfExplanatory( true );
command( cmd, this, SLOT(sendGetInputIconMenu()) );
}
break;
case IconMenu_4A:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "<COLOUR-ICON>" );
cmd.setIconId( 2 );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 10 );
command( cmd, this, SLOT(sendGetInputIconMenu()) );
}
break;
case IconMenu_5A:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( "" );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 10 );
cmd.setIconId( 1 );
command( cmd, this, SLOT(sendGetInputIconMenu()) );
}
break;
case IconMenu_6A:
{
cmd.setType( QSimCommand::GetInput );
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setWantDigits(true);
cmd.setText( QString() );
cmd.setMinimumLength( 0 );
cmd.setMaximumLength( 10 );
cmd.setIconId( 1 );
command( cmd, this, SLOT(sendGetInputIconMenu()) );
}
break;
case IconMenu_Main:
{
sendGetInputMenu();
}
break;
default:
endSession();
break;
}
}
void ConformanceSimApplication::sendSetupCallMenu()
{
QSimCommand cmd;
QSimMenuItem item;
QList<QSimMenuItem> items;
cmd.setType( QSimCommand::SelectItem );
cmd.setTitle( "Setup Call (Icon support)" );
item.setIdentifier( SetupCall_Confirmed );
item.setLabel( "Call confirmed and connected" );
items += item;
item.setIdentifier( SetupCall_Long_AID );
item.setLabel( "Long first alpha identifier" );
items += item;
item.setIdentifier( SetupCall_Subaddress_Not_Supported );
item.setLabel( "Called party subaddress not supported" );
items += item;
item.setIdentifier( SetupCall_Rejected );
item.setLabel( "Call rejected by the user" );
items += item;
item.setIdentifier( SetupCall_Putting_On_Hold );
item.setLabel( "Putting all other calls on hold" );
items += item;
item.setIdentifier( SetupCall_Disconnect_Others );
item.setLabel( "Disconnecting all other calls" );
items += item;
item.setIdentifier( SetupCall_If_Not_Busy );
item.setLabel( "Only if not currently busy on another call" );
items += item;
item.setIdentifier( SetupCall_On_Hold_Not_allowed );
item.setLabel( "Call hold is not allowed" );
items += item;
item.setIdentifier( SetupCall_Max_Dialing_Number );
item.setLabel( "Max dialing number string, no alpha" );
items += item;
item.setIdentifier( SetupCall_Two_AID );
item.setLabel( "Two alpha identifiers" );
items += item;
item.setIdentifier( SetupCall_Basic_icon );
item.setLabel( "Basic icon" );
items += item;
item.setIdentifier( SetupCall_Self_basic_icon );
item.setLabel( "Self-explanatory basic icon" );
items += item;
item.setIdentifier( SetupCall_Basic_icon_during_call );
item.setLabel( "Icon during setup call" );
items += item;
cmd.setMenuItems( items );
command( cmd, this, SLOT(SetupCallMenu(QSimTerminalResponse)) );
}
void ConformanceSimApplication::SetupCallMenu( const QSimTerminalResponse& resp )
{
QSimCommand cmd;
if ( resp.result() != QSimTerminalResponse::Success ) {
/* Unknown response - just go back to the main menu. */
endSession();
return;
}
/* Item selected. */
switch ( resp.menuItem() ) {
case SetupCall_Confirmed:
case SetupCall_If_Not_Busy:
case SetupCall_Rejected:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "Not busy" );
cmd.setNumber( "+012340123456p1p2" );
cmd.setDisposition( QSimCommand::IfNoOtherCalls );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Long_AID:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "Three types are defined: - set up a call, but only "
"if not currently busy on another call; - set up a call"
", putting all other calls (if any) on hold; - set up a"
" call, disconnecting all other calls (if any) first."
" For each of these types," );
cmd.setNumber( "+01" );
cmd.setDisposition( QSimCommand::IfNoOtherCalls );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Subaddress_Not_Supported:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "Called party" );
cmd.setNumber( "+012340123456p1p2" );
cmd.setSubAddress ("9595959595");
cmd.setDisposition( QSimCommand::IfNoOtherCalls );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Putting_On_Hold:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "On hold" );
cmd.setNumber( "+012340123456p1p2" );
cmd.setDisposition( QSimCommand::PutOnHold );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_On_Hold_Not_allowed:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "On hold" );
cmd.setNumber( "+0123401234" );
cmd.setDisposition( QSimCommand::PutOnHold );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Disconnect_Others:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "Disconnect" );
cmd.setNumber( "+012340123456p1p2" );
cmd.setDisposition( QSimCommand::Disconnect );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Max_Dialing_Number:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setNumber( "+01234567890123456789012345678901" );
cmd.setDisposition( QSimCommand::Disconnect );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Two_AID:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "CONFIRMATION" );
cmd.setOtherText( "CALL" );
cmd.setNumber( "+012340123456p1p2" );
cmd.setDisposition( QSimCommand::Disconnect );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Basic_icon:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "Set up call Icon 3.1.1" );
cmd.setNumber( "+012340123456p1p2" );
cmd.setIconId( 1 );
cmd.setIconSelfExplanatory( false );
cmd.setDisposition( QSimCommand::IfNoOtherCalls );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Self_basic_icon:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "Set up call Icon 3.2.1" );
cmd.setNumber( "+012340123456p1p2" );
cmd.setIconId( 1 );
cmd.setIconSelfExplanatory( true );
cmd.setDisposition( QSimCommand::IfNoOtherCalls );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
case SetupCall_Basic_icon_during_call:
{
cmd.setType( QSimCommand::SetupCall );
cmd.setDestinationDevice( QSimCommand::Network );
cmd.setText( "Set up call Icon 3.4.1" );
cmd.setNumber( "+012340123456p1p2" );
cmd.setIconId( 1 );
cmd.setIconSelfExplanatory( true );
cmd.setOtherText( "Set up call Icon 3.4.2" );
cmd.setOtherIconId( 1 );
cmd.setOtherIconSelfExplanatory( true );
cmd.setDisposition( QSimCommand::IfNoOtherCalls );
command( cmd, this, SLOT(sendSetupCallMenu()) );
}
break;
default:
endSession();
break;
}
}
OSZAR »