fm/qcom/fmradio/FmTransmitter.java
public boolean startPSInfo(String psStr, int pty, int pi, int repeatCount){

       //Set the PTY
       if((pty < 0) || (pty > 31 )) {
           Log.d(TAG,"pTy is expected from 0 to 31");
           return false;
       }

       int err = FmReceiverJNI.setPTYNative( sFd, pty );
       if( err < 0 ){
           Log.d(TAG,"setPTYNative is failure");
          return false;
       }

       if((pi < 0) || (pi > 65535)) {
           Log.d(TAG,"pi is expected from 0 to 65535");
           return false;
       }

       //Set the PI
       err = FmReceiverJNI.setPINative( sFd, pi );
       if( err < 0 ){
           Log.d(TAG,"setPINative is failure");
          return false;
       }

       if((repeatCount < 0) || (repeatCount > 15)) {
           Log.d(TAG,"repeat count is expected from 0 to 15");
           return false;
       }

       err = FmReceiverJNI.setPSRepeatCountNative( sFd, repeatCount );
       if( err < 0 ){
           Log.d(TAG,"setPSRepeatCountNative is failure");
          return false;
       }

       if( psStr.length() > FM_TX_MAX_PS_LEN ){
          /*truncate the PS string to
          MAX possible length*/
          psStr = psStr.substring( 0, FM_TX_MAX_PS_LEN );

       }

       err = FmReceiverJNI.startPSNative( sFd, psStr , psStr.length() );
       Log.d(TAG,"return for startPS is "+err);

       if( err < 0 ){
           Log.d(TAG, "FmReceiverJNI.startPSNative returned false\n");
           return false;

       }   else {
           Log.d(TAG,"startPSNative is successful");
          mPSStarted = true;
          return true;
       }
   }
/**
    *  Continuously transmit RDS/RBDS Program Service information
    *  over an already tuned station.
    *  <p>
    *  This is a synchronous function used to continuously transmit Program
    *  Service information over an already tuned station. While
    *  Program Service information can be transmitted using {@link
    *  #transmitRdsGroups} and 0A/0B groups, this function makes
    *  the same output possible with limited input needed from the
    *  application.
    *  <p>
    *  Included in the Program Service information is an RDS/RBDS
    *  program type (PTY), and one or more Program Service
    *  strings. The program type (PTY) is used to describe the
    *  content being transmitted and follows the RDS/RBDS program
    *  types described in the RDS/RBDS specifications.
    *  <p>
    *  Program Service information also includes an eight
    *  character string. This string can be used to display any
    *  information, but is typically used to display information
    *  about the audio being transmitted. Although the RDS/RBDS
    *  standard defines a Program Service (PS) string as eight
    *  characters in length, the FM driver may have the ability to
    *  accept a string that is greater than eight characters. This
    *  extended string will then be broken up into multiple eight
    *  character strings which will be transmitted continuously.
    *  All strings passed to this function must be terminated by a
    *  null character (0x00).
    *  <p>
    *  When transmitting more than one string, the application may
    *  want to control the timing of how long each string is
    *  transmitted. To control this timing and to ensure that the FM
    *  receiver receives each string, the application can specify
    *  how many times each string is repeated before the next string
    *  is transmitted. This command can only be issued by the owner
    *  of an FM transmitter.
    *  <p>
    *  Maximux Programme service string lenght that can be sent is
    *  FM_TX_MAX_PS_LEN. If the application sends PS string longer than
    *  this threshold, string will be truncated to FM_TX_MAX_PS_LEN.
    *
    *  @param psStr the program service strings to transmit
    *  @param pty   the program type to use in the program Service
    *               information.
    *  @param pi    the program type to use in the program Service
    *               information.
    *  @param repeatCount the number of times each 8 char string is
    *                     repeated before next string
    *
    *  @return true if PS information was successfully sent to the
    *             driver, false if PS information could not be sent
    *             to the driver.
    *
    *  @see #getPSFeatures
    *  @see #stopPSInfo
    */
Continuously transmit RDS/RBDS Program Service information
over an already tuned station.

This is a synchronous function used to continuously transmit Program
Service information over an already tuned station. While
Program Service information can be transmitted using {@link
#transmitRdsGroups} and 0A/0B groups, this function makes
the same output possible with limited input needed from the
application.

Included in the Program Service information is an RDS/RBDS
program type (PTY), and one or more Program Service
strings. The program type (PTY) is used to describe the
content being transmitted and follows the RDS/RBDS program
types described in the RDS/RBDS specifications.

Program Service information also includes an eight
character string. This string can be used to display any
information, but is typically used to display information
about the audio being transmitted. Although the RDS/RBDS
standard defines a Program Service (PS) string as eight
characters in length, the FM driver may have the ability to
accept a string that is greater than eight characters. This
extended string will then be broken up into multiple eight
character strings which will be transmitted continuously.
All strings passed to this function must be terminated by a
null character (0x00).

When transmitting more than one string, the application may
want to control the timing of how long each string is
transmitted. To control this timing and to ensure that the FM
receiver receives each string, the application can specify
how many times each string is repeated before the next string
is transmitted. This command can only be issued by the owner
of an FM transmitter.

Maximux Programme service string lenght that can be sent is
FM_TX_MAX_PS_LEN. If the application sends PS string longer than
this threshold, string will be truncated to FM_TX_MAX_PS_LEN.

@param psStr the program service strings to transmit
@param pty   the program type to use in the program Service
information.
@param pi    the program type to use in the program Service
information.
@param repeatCount the number of times each 8 char string is
repeated before next string

@return true if PS information was successfully sent to the
driver, false if PS information could not be sent
to the driver.


Continuously transmit RDS / RBDS Program Service information over an already tuned station . This is a synchronous function used to continuously transmit Program Service information over an already tuned station . While Program Service information can be transmitted using { @link #transmitRdsGroups } and 0A / 0B groups this function makes the same output possible with limited input needed from the application . Included in the Program Service information is an RDS / RBDS program type ( PTY ) and one or more Program Service strings . The program type ( PTY ) is used to describe the content being transmitted and follows the RDS / RBDS program types described in the RDS / RBDS specifications . Program Service information also includes an eight character string . This string can be used to display any information but is typically used to display information about the audio being transmitted . Although the RDS / RBDS standard defines a Program Service ( PS ) string as eight characters in length the FM driver may have the ability to accept a string that is greater than eight characters . This extended string will then be broken up into multiple eight character strings which will be transmitted continuously . All strings passed to this function must be terminated by a null character ( 0x00 ) . When transmitting more than one string the application may want to control the timing of how long each string is transmitted . To control this timing and to ensure that the FM receiver receives each string the application can specify how many times each string is repeated before the next string is transmitted . This command can only be issued by the owner of an FM transmitter . Maximux Programme service string lenght that can be sent is FM_TX_MAX_PS_LEN . If the application sends PS string longer than this threshold string will be truncated to FM_TX_MAX_PS_LEN . @param psStr the program service strings to transmit @param pty the program type to use in the program Service information . @param pi the program type to use in the program Service information . @param repeatCount the number of times each 8 char string is repeated before next string @return true if PS information was successfully sent to the driver false if PS information could not be sent to the driver .
public boolean startPSInfo(String psStr, int pty, int pi, int repeatCount){
       if((pty < 0) || (pty > 31 )) {
           Log.d(TAG,"pTy is expected from 0 to 31");
           return false;
       }
       int err = FmReceiverJNI.setPTYNative( sFd, pty );
       if( err < 0 ){
           Log.d(TAG,"setPTYNative is failure");
          return false;
       }
       if((pi < 0) || (pi > 65535)) {
           Log.d(TAG,"pi is expected from 0 to 65535");
           return false;
       }
       err = FmReceiverJNI.setPINative( sFd, pi );
       if( err < 0 ){
           Log.d(TAG,"setPINative is failure");
          return false;
       }
       if((repeatCount < 0) || (repeatCount > 15)) {
           Log.d(TAG,"repeat count is expected from 0 to 15");
           return false;
       }
       err = FmReceiverJNI.setPSRepeatCountNative( sFd, repeatCount );
       if( err < 0 ){
           Log.d(TAG,"setPSRepeatCountNative is failure");
          return false;
       }
       if( psStr.length() > FM_TX_MAX_PS_LEN ){
          /*truncate the PS string to
          MAX possible length*/
          psStr = psStr.substring( 0, FM_TX_MAX_PS_LEN );
       }
       err = FmReceiverJNI.startPSNative( sFd, psStr , psStr.length() );
       Log.d(TAG,"return for startPS is "+err);
       if( err < 0 ){
           Log.d(TAG, "FmReceiverJNI.startPSNative returned false\n");
           return false;
       }   else {
           Log.d(TAG,"startPSNative is successful");
          mPSStarted = true;
          return true;
       }
   }
public boolean startPSInfo ( String psStr , int pty , int pi , int repeatCount ) { if ( ( pty < 0 ) || ( pty > 31 ) ) { Log . d ( TAG , "pTy is expected from 0 to 31" ) ; return false ; } int err = FmReceiverJNI . setPTYNative ( sFd , pty ) ; if ( err < 0 ) { Log . d ( TAG , "setPTYNative is failure" ) ; return false ; } if ( ( pi < 0 ) || ( pi > 65535 ) ) { Log . d ( TAG , "pi is expected from 0 to 65535" ) ; return false ; } err = FmReceiverJNI . setPINative ( sFd , pi ) ; if ( err < 0 ) { Log . d ( TAG , "setPINative is failure" ) ; return false ; } if ( ( repeatCount < 0 ) || ( repeatCount > 15 ) ) { Log . d ( TAG , "repeat count is expected from 0 to 15" ) ; return false ; } err = FmReceiverJNI . setPSRepeatCountNative ( sFd , repeatCount ) ; if ( err < 0 ) { Log . d ( TAG , "setPSRepeatCountNative is failure" ) ; return false ; } if ( psStr . length ( ) > FM_TX_MAX_PS_LEN ) { /*truncate the PS string to
          MAX possible length*/ psStr = psStr . substring ( 0 , FM_TX_MAX_PS_LEN ) ; } err = FmReceiverJNI . startPSNative ( sFd , psStr , psStr . length ( ) ) ; Log . d ( TAG , "return for startPS is " + err ) ; if ( err < 0 ) { Log . d ( TAG , "FmReceiverJNI.startPSNative returned false\n" ) ; return false ; } else { Log . d ( TAG , "startPSNative is successful" ) ; mPSStarted = true ; return true ; } }
Continuously transmit RDS/RBDS Program Service information
  over an already tuned station.
Continuously transmit RDS / RBDS Program Service information over an already tuned station .
//Set the PTY //Set the PI