All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denis Kenzior <denkenz@gmail.com>
To: ofono@ofono.org
Subject: Re: [PATCH 1/2] qsimcommand: Add properties and TLV builders to support BIP commands
Date: Tue, 29 Mar 2011 22:35:07 -0500	[thread overview]
Message-ID: <4D92A4EB.1090508@gmail.com> (raw)
In-Reply-To: <1300799413-4479-2-git-send-email-philippe.nunes@linux.intel.com>

[-- Attachment #1: Type: text/plain, Size: 9906 bytes --]

Hi Philippe,

On 03/22/2011 08:10 AM, Philippe Nunes wrote:
> ---
>  src/qsimcommand.cpp |  201 +++++++++++++++++++++++++++++++++++++++++++++++++--
>  src/qsimcommand.h   |   34 +++++++++
>  2 files changed, 228 insertions(+), 7 deletions(-)
> 
> diff --git a/src/qsimcommand.cpp b/src/qsimcommand.cpp
> index ecdf43f..46b633f 100644
> --- a/src/qsimcommand.cpp
> +++ b/src/qsimcommand.cpp
> @@ -69,6 +69,8 @@ public:
>          timerId = 0;
>          device = -1;
>          qualifier = 0;
> +        bufferSize = 0;
> +        dataLength = 0;
>      }
>      QSimCommandPrivate( QSimCommandPrivate *other )
>      {
> @@ -102,6 +104,15 @@ public:
>          device = other->device;
>          qualifier = other->qualifier;
>          extensionData = other->extensionData;
> +        bearerDesc = other->bearerDesc;
> +        bufferSize = other->bufferSize;
> +        dataLength = other->dataLength;
> +        apn = other->apn;
> +        uti = other->uti;
> +        userLogin = other->userLogin;
> +        userPassword = other->userPassword;
> +        destAddress = other->destAddress;
> +        localAddress = other->localAddress;
>      }
>  
>      bool flag( int bit ) const
> @@ -165,7 +176,15 @@ public:
>      int device;
>      int qualifier;
>      QByteArray extensionData;
> -
> +    QByteArray bearerDesc;
> +    ushort bufferSize;
> +    uint dataLength;
> +    QByteArray apn;
> +    QByteArray uti;
> +    QString userLogin;
> +    QString userPassword;
> +    QByteArray destAddress;
> +    QByteArray localAddress;
>  };
>  
>  
> @@ -612,7 +631,7 @@ QSimMenuItem& QSimMenuItem::operator=( const QSimMenuItem & value )
>      \enum QSimCommand::Device
>      This enum defines the source or destination device for a SIM command, according
>      to 3GPP TS 11.14, section 12.7.
> -    
> +    \

Not that we care about qdoc, but this doesn't seem useful

>      \value Keypad Keypad device
>      \value Display Display device
>      \value Earpiece Earpiece device
> @@ -2202,6 +2221,86 @@ void QSimCommand::setTimerId( int id )
>      dwrite()->timerId = id;
>  }
>  
> +ushort QSimCommand::bufferSize() const
> +{
> +    return d->bufferSize;
> +}
> +
> +void QSimCommand::setBufferSize( ushort value )
> +{
> +    dwrite()->bufferSize = value;
> +}
> +
> +uint QSimCommand::dataLength() const
> +{
> +    return d->dataLength;
> +}
> +
> +void QSimCommand::setDataLength( uint value )
> +{
> +    dwrite()->dataLength = value;
> +}
> +
> +QString QSimCommand::userLogin() const
> +{
> +    return d->userLogin;
> +}
> +
> +void QSimCommand::setUserLogin( const QString& value )
> +{
> +    dwrite()->userLogin = value;
> +}
> +
> +QString QSimCommand::userPassword() const
> +{
> +    return d->userPassword;
> +}
> +
> +void QSimCommand::setUserPassword( const QString& value )
> +{
> +    dwrite()->userPassword = value;
> +}
> +
> +QByteArray QSimCommand::uti() const
> +{
> +    return d->uti;
> +}
> +
> +void QSimCommand::setUti( const QByteArray& value )
> +{
> +    dwrite()->uti = value;
> +}
> +
> +QByteArray QSimCommand::bearerDesc() const
> +{
> +    return d->bearerDesc;
> +}
> +
> +void QSimCommand::setBearerDesc( const QByteArray& value )
> +{
> +    dwrite()->bearerDesc = value;
> +}
> +
> +QByteArray QSimCommand::destAddress() const
> +{
> +    return d->destAddress;
> +}
> +
> +void QSimCommand::setDestAddress( const QByteArray& value )
> +{
> +    dwrite()->destAddress = value;
> +}
> +
> +QByteArray QSimCommand::apn() const
> +{
> +    return d->apn;
> +}
> +
> +void QSimCommand::setApn( const QByteArray& value )
> +{
> +    dwrite()->apn = value;
> +}
> +
>  /*!
>      Copy the QSimCommand object \a value.
>  */
> @@ -3045,6 +3144,62 @@ void _qtopiaphone_writeTimerValue( QByteArray& data, uint value )
>  }
>  #define writeTimerValue _qtopiaphone_writeTimerValue
>  
> +// Write a Bearer description field.
> +static void writeBearerDesc( QByteArray& data, const QByteArray& bearerDesc )
> +{
> +    if ( !bearerDesc.isEmpty() ) {
> +        data += (char)0x35;
> +        writeBerLength( data, bearerDesc.length() );
> +        data += bearerDesc;
> +    }
> +}
> +
> +// Write a Network Access Name field as specified in TS 23.003
> +static void writeApn( QByteArray& data, const QByteArray& apn )
> +{
> +    if ( !apn.isEmpty() ) {
> +	data += (char)0x47;
> +	writeBerLength( data, apn.length() );
> +	data += apn;
> +    }

I'm not particularly picky on phonesim coding style, but lets at least
try to be semi-consistent with indentation.  phonesim uses 4 spaces for
indentation (just because that's what the original Trolltech/Nokia code
used).  So lets at least try to stick to that ;)

> +}
> +
> +// Write a Buffer size field.
> +static void writeBufferSize( QByteArray& data, ushort size )
> +{
> +	if ( size ) {
> +		data += 0x39;
> +		data += 0x02;
> +		data += (char)(size >> 8);
> +		data += (char)size;
> +	}
> +}
> +
> +// Write a data length field.
> +static void writeDataLength( QByteArray& data, uint value )
> +{
> +	data += 0x37;
> +	data += 0x01;
> +	data += (char) value;
> +}
> +
> +static void writeUti( QByteArray& data, const QByteArray& uti )
> +{
> +	if ( !uti.isEmpty() ) {
> +		data += (char)0x3C;
> +		writeBerLength( data, uti.length() );
> +		data += uti;
> +	}
> +}
> +
> +static void writeOtherAddress( QByteArray& data, const QByteArray& otherAddress )
> +{
> +	if ( !otherAddress.isEmpty() ) {
> +			data += (char)0x3E;
> +			writeBerLength( data, otherAddress.length() );
> +			data += otherAddress;
> +	}

And another variation with 3 tabs, why is this one special ;)

> +}
>  /*!
>      \enum QSimCommand::ToPduOptions
>      This enum defines additional options to use when encoding SIM commands with QSimCommand::toPdu().
> @@ -3324,18 +3479,50 @@ QByteArray QSimCommand::toPdu( QSimCommand::ToPduOptions options ) const
>              if ( !text().isEmpty() || ( options & QSimCommand::EncodeEmptyStrings ) != 0 )
>                  writeEFADN( data, text(), options, 0x05 );
>              writeIcon( data, iconId(), iconSelfExplanatory(), true );
> -            if ( !number().isEmpty() )
> -                writeEFADNNumber( data, number() );
> -            if ( !subAddress().isEmpty() )
> -                writeSubAddress( data, subAddress() );
> +
> +            writeBearerDesc( data, bearerDesc() );
> +            writeBufferSize( data, bufferSize() );
> +
> +            if ( !apn().isEmpty() ) {
> +        	    writeApn( data, apn() );
> +            }
> +
> +            if ( !userLogin().isEmpty() ) {
> +        	    writeTextString( data, userLogin(), QSimCommand::NoPduOptions, 0x0D );
> +            }
> +
> +            if ( !userPassword().isEmpty() ) {
> +        	    writeTextString( data, userPassword(), QSimCommand::NoPduOptions, 0x0D );
> +            }
> +            writeUti( data, uti() );
> +            writeOtherAddress( data, destAddress() );
>              writeTextAttribute( data, textAttribute() );
>          }
>          break;
>  
> -        case CloseChannel:
>          case ReceiveData:
> +        {
> +        	if ( !text().isEmpty() || ( options & QSimCommand::EncodeEmptyStrings ) != 0 )
> +        	                writeEFADN( data, text(), options, 0x05 );
> +        	writeDataLength( data, dataLength() );
> +        	writeIcon( data, iconId(), iconSelfExplanatory(), true );
> +        	writeTextAttribute( data, textAttribute() );
> +        }
> +        break;
> +
>          case SendData:
>          {
> +        	if ( !text().isEmpty() || ( options & QSimCommand::EncodeEmptyStrings ) != 0 )
> +        			writeEFADN( data, text(), options, 0x05 );
> +        	writeIcon( data, iconId(), iconSelfExplanatory(), true );
> +        	data += extData;
> +        	writeTextAttribute( data, textAttribute() );
> +        }
> +        break;
> +
> +        case CloseChannel:
> +        case GetChannelStatus:
> +        {
>              if ( !text().isEmpty() || ( options & QSimCommand::EncodeEmptyStrings ) != 0 )
>                  writeEFADN( data, text(), options, 0x05 );
>              writeIcon( data, iconId(), iconSelfExplanatory(), true );
> diff --git a/src/qsimcommand.h b/src/qsimcommand.h
> index eadd768..2c55339 100644
> --- a/src/qsimcommand.h
> +++ b/src/qsimcommand.h
> @@ -215,6 +215,16 @@ public:
>          Network             = 0x83
>      };
>  
> +    enum OpenChannelQualifier {
> +	    OpenchannelOnDemand	 = 0x00,
> +	    OpenchannelImmediate = 0x01,
> +    };
> +
> +    enum SendDataQualifier {
> +	    SendDataStoreData	= 0x00,
> +	    SendDataImmediately	= 0x01,
> +    };
> +
>      int commandNumber() const;
>      void setCommandNumber( int value );
>  
> @@ -362,6 +372,30 @@ public:
>      int qualifier() const;
>      void setQualifier( int value );
>  
> +    QByteArray bearerDesc() const;
> +    void setBearerDesc( const QByteArray& value );
> +
> +    ushort bufferSize() const;
> +    void setBufferSize( ushort value );
> +
> +    uint dataLength() const;
> +    void setDataLength( uint value );
> +
> +    QByteArray apn() const;
> +    void setApn( const QByteArray& value );
> +
> +    QByteArray destAddress() const;
> +    void setDestAddress( const QByteArray& value );
> +
> +    QString userLogin() const;
> +    void setUserLogin( const QString& value );
> +
> +    QString userPassword() const;
> +     void setUserPassword( const QString& value );
> +
> +    QByteArray uti() const;
> +    void setUti( const QByteArray& value );
> +
>      QByteArray extensionData() const;
>      void setExtensionData( QByteArray value );
>  

Regards,
-Denis

      reply	other threads:[~2011-03-30  3:35 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-22 13:10 [PATCH 1/2] qsimcommand: Add properties and TLV builders to support BIP commands Philippe Nunes
2011-03-30  3:35 ` Denis Kenzior [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D92A4EB.1090508@gmail.com \
    --to=denkenz@gmail.com \
    --cc=ofono@ofono.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.