Home · All Classes · Annotated · Functions

GSM Modem Integration

GSM Modem Integration

The implementation of the GSM specification varies between GSM modules, with most modules supporting proprietary commands for special features. Therefore it is likely that modifications will be needed to $QPEDIR/src/libraries/qtopiaphone.

To simplify matters, most of the module-specific code can be placed in a vendor-specific plug-in, located under $QPEDIR/src/plugins/phonevendors. The plug-in should inherit the QPhoneVendorAt class and override its methods to implement the vendor specifics.

Qtopia Phone will load every vendor plug-in that is installed and query each one to see which is capable of handling the GSM modem. A vendor plug-in will typically issue vendor-specific AT commands to determine if the modem is supported.

The QTOPIA_PHONE_VENDOR macro in custom.h can be used to force Qtopia Phone to load only that plug-in, ignoring any others that may be present in the system. For example, setting QTOPIA_PHONE_VENDOR to wavecom will instruct Qtopia Phone to load libwavecomvendor.so to provide vendor-specific AT commands.

The QTOPIA_PHONE_VENDOR value can also be set as an environment variable.

Multiplexing

GSM 07.10 multiplexing is a common source of problems. During initial testing it can be disabled by setting the QTOPIA_PHONE_MUX environment variable to no. Qtopia Phone will still function, but you will be unable to make GPRS calls without multiplexing support.

If your modem does not support GSM 07.10 multiplexing, or you need to modify the GSM 07.10 parameters, it will be necessary to write a multiplexer plug-in, located under $QPEDIR/src/plugins/multiplexers.

The Writing a Multiplexer Plug-in tutorial describes how to write such a plug-in.

The QTOPIA_PHONE_VENDOR macro in custom.h is used to select the multiplexer plug-in. For example, setting QTOPIA_PHONE_VENDOR to wavecom will instruct Qtopia Phone to load libwavecommultiplex.so as its multiplexer implementation. The QTOPIA_PHONE_VENDOR environment variable can also be used for this purpose.

If QTOPIA_PHONE_VENDOR is not set, Qtopia Phone will attempt to use GSM 07.10 in the default Basic mode with a frame size of 31. If that attempt fails, it will fall back to non-multiplexing mode.

GSM Modem Porting Sequence

To support a GSM module the following sequence may be used as a guide:

  1. Check the AT commands that Qtopia requires in Qtopia Phone Library and determine which ones your GSM module supports.
  2. Determine the appropriate alternative AT commands suited to your GSM module and write the vendor-specific plug-in to issue these commands.
  3. Run Qtopia with QTOPIA_PHONE_MUX set to no.
  4. Check the error/message log for commands that are reported as error.
  5. Using the error log, modify the plug-in and/or the phone library so that the modem-supported AT command parameters are used.

    For example: AT+CMUX=1,0,5 vs AT+CMUX=0,0,5

  6. Repeat from the third step until GSM calls are possible and SIM details are being read.
  7. Write a multiplexer plug-in if your module does not support GSM 07.10.
  8. Enable multiplexing by setting QTOPIA_PHONE_MUX to yes.
  9. Re-test Qtopia, until the multiplexer is functioning correctly.

Serial Proxy

Most modern phones have an external serial interface, which is used to connect to a computer for the purposes of data calls, FAX transmissions, or synchronization with desktop applications.

The SerialProxy class assists with this process.

The phone.conf file needs to be placed under the etc/default directory on the vendor system.

Warning: Using a serial proxy is not possible when connecting Qtopia to:

In such a case ensure that Phone.conf file does not contain an entry for ExternalAccessDevice.


Copyright © 2006 Trolltech Trademarks
Qtopia 4.1.7