Make/Model  Device VersionConnection Type
GSM ModemsGSM Modems supporting Text mode SMSSerial

Description:

This driver interfaces CQC to a GSM modem for the purpose of sending and receiving SMS messages The inbound messages are made available to CQC through fields that can be used to trigger actions within CQC.

This driver's server side component is CML based. The server driver classes for this device are in the MEng.CQC.System.Drivers.SMS scope.

This driver provides the following functionality:

  1. Sends SMS messages from CQC.
  2. Receives SMS messages intoCQC.
  3. Provides RSSI (Received Signal Strength) indication for the current connection.
  4. Provides BER (Bit Error Rate) indication for the current connection.

Limitations:

An important point is the Sim card used must not be locked in any way. So if you place it in a phone and it requests a PIN then it won't work. You need to disable this feature first.

The reason for this is it would be far too easy for a user to accidentally enter the wrong PIN and when CQC cycles the driver and tries to enter the wrong PIN multiple times it will lock the SIM requiring the PUK to unlock it. And if I enabled PUK support and you got it wrong enough times then it will permanently destroy the SIM. All this leads to bad tempers and general unhappiness, so I decided against it.

Connection Details

The SMS Driver connects directly to a GSM modem using a standard modem cable. The SendMessage field is formatted like number,message, e.g. "+61xxxxxxxxx,this is the message".

The number has to be in international format so drop the leading 0 and add +61, e.g. 0423 111 222 becomes +61423111222 (in Australia at least)

To send an inbound message, it has to begin with +m: or +M: and an inbound command has to begin with +c: or +C:

Driver Fields

This section lists the fields that the driver makes available, their types, minimum and maximum values, etc...

NameTypeR/WDescription/Limits
SendMessageStringR/WThis is the field you manipulate to cause a message to be sent. The format is; "number,message"
ReceiveMessageStringR/WThis is a field that can just be used for text display, so for example you can SMS a message in and display it like an electronic whiteboard for somebody to read. The message must be prefixed with +M: or it will be ignored.
ReceiveCommandStringR/WThis is the field that you should use to make CQC do something. There is no structure to the command message, thats up to the event system to understand what's being sent in your context. It is also up to you to implement some sort of security, like embedding a password in the message and using the events language to check for it. The message must be prefixed with +C: or it will be ignored.
RSSIStringR/WContains the Received Signal Strength.
BERStringR/WContains the Bit Error Rate.
RegistrationStatusStringR/WTell if the modem is currently registered on the network.
NewMessageBooleanR/WSet when a new message arrives
NewCommandBooleanR/WSet when a new command arrives