TIIVISTELMÄ

Tämän erikoistyön toisena tavoitteena on antaa kokonaiskuva lyhytsanomapalvelusta ja lyhytsanomakeskuksesta osana GSM-verkkoa. Siis selvittää mikä on lyhytsanomakeskuksen tehtävä ja toisaalta kuinka lyhytsanomia voidaan käyttää. Toinen tavoite on antaa yksityiskohtainen kuvaus tietokonesovelluksista, jotka liittyvät lyhytsanomapalveluun toisaalta esittelemällä olemassaolevia sovelluksia yleisellä tasolla ja toisaalta ottamalla yksi sovellus tarkempaan tarkasteluun ja tutkimalla sen rakennetta ohjelmakooditasolle saakka.

Lyhytsanomien ympärille on rakennettu paljon erilaisia sovelluksia, tosin Suomessa niitä on vielä toistaiseksi melko vähän. Näyttää siltä, että kun operaattorit ensin saavat peruspalvelut kuntoon, he ryhtyvät sitten tukemaan myös yleensä kolmansien osapuolien harjoittamaa sovelluskehitystä aktiivisemmin. Sovelluksien määrä siis lisääntynee vielä tulevaisuudessa.

Tutkimusmenetelmänä tässä työssä on ollut kirjallisten lähteiden tutkimisen lisäksi huomattava määrä keskusteluita työtoverieni kanssa Nokia Telecommunicationsilla sekä omakohtaisista kokemuksistani kertyneen informaation analysointi.

SISÄLLYSLUETTELO

TIIVISTELMÄ 1SISÄLLYSLUETTELO 2LYHENNELUETTELO 31. JOHDANTO 42. LYHYTSANOMAPALVELU 43. LYHYTSANOMIEN KÄYTTÖ 64. LYHYTSANOMAKESKUS 75. SOVELLUSRAJAPINNAT 86. LYHYTSANOMASOVELLUKSET 9Jakelupalvelut 10Sähköpostisovellukset 10Informaatiopalvelut 11Finanssipalvelut 11Liikennepalvelut 12Muita lyhytsanomasovelluksia 12Uusia sovellsideoita 137. SOVELLUSESIMERKKI - SendMessage 13Taustaa 14Käyttöliittymä 14Vastaanottajatietojen ylläpito 15SendMessage - modeemiversio 15SendMessage - LAN versio 16SendMessage - PCMCIA versio 17Kokemuksia 188. YHTEENVETO 18LÄHDELUETTELO 20LIITTEET 21

LYHENNELUETTELO

CB Cell Broadcast, aluelähetys. Saman lyhytsanoman lähetys kaikille saman tukiaseman alueella oleville matkapuhelimille.

CIMD Computer Interface for Message Distribution. Nokian SMSC:n sovellusrajapinta.

ERMES Henkilöhakujärjestelmä.

ETSI European Telecommunications Standards Institute. Eurooppalainen telealan standardointijärjestö.

GPS Global Positioning System. Maailmanlaajuinen satelliittien avulla toimiva paikannusjärjestelmä.

HLR Home Location Register, kotirekisteri. Rekisteri MSC:ssä, joka sisältää MSC:n tilaajien tilaajatiedot.

LAN Local Area Network, lähiverkko.

MO Mobile Originated. Matkapuhelimesta lähetetty lyhytsanoma.

MS Mobile Station. Matkapuhelin.

MSC Mobile Switching Centre. GSM-puhelinkeskus.

MT Mobile Terminated. Matkapuhelimeen menevä lyhytsanoma.

PCMCIA Personal Computer Memory Card International Association. Lähinnä kannettavissa PC:issä käytettävä laajennuskorttistandardi.

SMSC Short Message Service Centre, lyhytsanomakeskus. Varastoi ja välittää lyhytsanomia.

SMTP Simple Mail Transfer Protocol. TCP/IP:tä käyttävä, erityisesti UNIX-ympäristössä käytetty sähköpostiprotokolla.

STT Suomen Tietotoimisto. Suomalainen uutistoimisto.

TCP/IP Internetissä laajasti käytetty tiedonsiirtoprotokolla.

UNIX Suosittu työasemakoneiden käyttöjärjestelmä.

VLR Visitor Location Register, vierasrekisteri. Rekisteri MSC:ssä, joka sisältää MSC:n alueella vierailevien matkapuhelimien tilaajatiedot.

VMS Voice Mail System, puhepostijärjestelmä. GSM-verkon elementti, johon voi jättää puhuttuja viestejä.

X.25 Tiedonsiirtoprotokolla.

X.400 OSI:n standardoima sähköpostistandardi.

1. JOHDANTO

Tässä erikoistyössä esitellään GSM-matkapuhelinjärjestelmän lyhytsanomapalvelut. Aluksi esitellään itse palvelun määrittely ja lyhytsanomien käyttö. Sen jälkeen tarkastellaan lyhytsanomakeskuksen arkkitehtuuria ja sen sovellusrajapintoja. Työn pääpaino on kuitenkin lyhytsanomia käyttävillä tietokonesovelluksilla, jotka esitellään tämän jälkeen. Viimeisenä käsitellään käytännön sovellusesimerkkinä Nokialle tehtyä SendMessage-ohjelmaa.

Lyhytsanomasta käytetään Suomessa myös nimitystä tekstiviesti tai lyhytviesti.

Tämä erikoistyö perustuu kurssin S-38.116 Teletietotekniikka seminaariesitelmääni.

2. LYHYTSANOMAPALVELU

GSM-matkapuhelinverkon point-to-point lyhytsanomapalvelu tarjoaa keinot enintään 160 merkkiä pitkien sanomien lähettämiseen GSM-puhelimesta ja GSM-puhelimeen. Lyhytsanomapalvelun toteuttamiseen tarvitaan lyhtsanomakeskus (SMSC), joka toimii store-and-forward tyyppisenä keskuksena lyhytsanomille [1].

Kaksi erilaista point-to-point palvelua on määritelty: matkapuhelimesta lähtenyt (MO) ja matkapuhelimeen menevä (MT) sanoma. MO-sanomat välitetään GSM-verkon välityksellä SMSC:lle ja ne ovat menossa toiseen puhelimeen tai sovelluksille. MT-sanomat välitetään GSM-verkon välityksellä GSM-puhelimeen ja ne ovat lähteneet joko toisesta puhelimesta tai sovelluksilta kuten esim. puhepostilta. Lyhytsanomapalvelun toinen osapuoli on aina matkapuhelin. ETSI on myös määritellyt kolmannen lyhytsanomapalvelun: aluelähetyspalvelun (cell broadcast, CB) [2].

GSM-puhelin pystyy vastaanottamaan ja lähettämään lyhytsanomia samanaikaisesti puhelun kanssa, koska sanomat välitetään puhelimeen signalointikanavan välityksellä.

Seuraavassa on esitetty lyhytsanoman kulku GSM-verkossa MSC:n ja SMSC kannalta katsottuna ensin MO, ja sitten MT tapauksessa [3].


  1. MS-A (mobile station) lähettää lyhytsanoman VMSC:lle (visitor mobile switching centre).
  2. VMSC tarkastaa tilaajan tiedot vierasrekisteristä VLR (visitor location register).
  3. VMSC reitittää lyhytsanoman IWMSC:lle (interworking MSC).
  4. IWMSC reitittää lyhytsanoman SMSC:lle.
  5. SMSC lähettää kuittauksen IWMSC:lle.
  6. IWMSC lähettää kuittauksen VMSC:lle.
  7. VMSC lähettää kuittauksen MS-A:lle.


  1. SMSC lähettää lyhytsanoman lyhytsanomagateway MSC:lle (SMS-GMSC).
  2. GMSC kysyy tilaajan kotirekisteristä (HLR) tilaajan reititystietoja.
  3. GMSC reitittää lyhytsanoman VMSC:lle.
  4. VMSC kysyy MS-B:n sijaintia VLR:stä.
  5. VMSC välittää sanoman MS-B:lle, joka lähettää kuittauksen vastaanotettuaan sanoman.
  6. VMSC lähettää kuittauksen GMSC.
  7. GMSC lähettää kuittauksen HLR:lle ja...
  8. ... SMSC:lle.

3. LYHYTSANOMIEN KÄYTTÖ

Lyhytsanomien käytön alkuperäinen perusajatus on tarjota GSM-käyttäjille tapa välittää informaatiota vastaanottajalle vastaanottajan ehdoilla. Vastaanottaja voi pitää puhelintaan suljettuna ja silti informaatio siirtyy hänelle, kun puhelimeen kytketään jälleen virta päälle.

Lyhytsanomia voi lähettää GSM-puhelimesta tai käyttämällä erilaisia operaattoreiden tarjoamia palveluita tai sovelluksia. Suurin osa markkonoilla olevista GSM-puhelimista tukee sanomien vastaanottoa, mutta sanomien lähetys onnistuu vain harvoilla malleilla. Ainakin Nokia, Siemens ja Panasonic valmistavat puhelimia, joista lähetys onnistuu. Sanoman lähettäminen tapahtuu valitsemalla puhelimen valikoista sanoman lähetys ja kirjoittamalla sanoma käyttäen puhelimen näppäimiä. Systeemi on ainakin aluksi hankala, mutta pienen harjoittelun jälkeen parinkymmenen merkin mittaisten sanomien kirjoittaminen onnistuu aika hyvin.

Vaihtoehto etenkin pitempien sanomien lähettämiseen on käyttää PC:tä apuna. GSM-puhelimen voi kytkeä kannettaavaan PC:hen käyttämällä Nokian valmistamaa PCMCIA-tyyppistä sovitinkorttia ja sopivaa kaapelia puhelimen ja kortin välillä. Korttia voidaan ohjata esim. Windowsin Terminal-ohjelmasta ja kortti sisältää interaktiivisen tulkin, jonka avulla sanomien lähetys onnistuu [4]. Nyt tietokonetta voidaan käyttää ikäänkuin puhelimen käyttöliittymänä. Kaapelit ja sovitinkortit ovat valmistajakohtaisia ja toistaisksi muiden valmistajien korteissa ei ilmeisesti ole lyhytsanomaominaisuuksia.

Uudempi vaihtoehto on käyttää Nokian tuotetta nimeltä Cellular Ware. Siinä PCMCIA-kortti ja kaapeli on korvattu kaapelilla, joka voidaan kytkeä suoraan GSM-puhelimen ja PC:n sarjaportin välille. Lisäksi mukana tulee Windows-käyttölittymä, jonka avulla voi hallita vastaanottajatietoja, vakiosanomia, ryhmälähetyksiä jne. Cellular Waren kanssa sanomia voi lähettää mistä tahansa PC:stä, eikä vain kannettavista PC:stä kuten PCMCIA-kortin kohdalla [5].

Sanomien lähettäminen ja vastaanottaminen toiseen GSM-puhelimeen onnistuu myös ilman, että lähettäjällä on GSM-puhelin käytössään. Tällöin otetaan yleensä modeemiyhteys lyhytsanomakeskukseen, minkä jälkeen sovellusohjelma käyttää sanomakeskuksen tarjoamaa sovellusrajapintaa. Molemmat GSM-operaattorit Suomessa tarjoavat Windows-ohjelmaa, joka hoitaa yhteydenoton ja sanomien lähetyksen. Yhteys onnistuu vain ko. operaattorin lyhytsanomakeskukseen.

Radiolinja tarjoaa vielä mahdollisuutta lähettää ja vastaanottaa sanomia Infotelin kautta. Myös erilaisia X.400 ja SMTP-lyhytsanoma gateway palveluita alkaa olla tarjolla ja näiden palveluiden avulla sähköposti-lyhtytsanomaliikenne onnistuu.

Ehdottomasti suurin lyhytsanomaliikenteen aiheuttaja on puheposti (VMS). Kun saavuttamattomissa olevaan GSM-puhelimeen tulee soitto, niin soittaja voi jättää viestin puhepostiin, jos palvelu on käytössä. Kun puhelin avataan tai se tulee katveesta, niin käyttäjä saa sanoman, jossa ilmoitetaan hänen saaneen puhepostia. Käyttäjän ei siis tarvitse itse tarkastaa onko hän saanut viestejä, vaan informaatio tulee automaattisesti lyhytsanoman avulla.

Sanomaliikenteen jakauma on operaattorikohtainen, mutta yleensä lyhytsanomaliikenteestä 90 % syntyy puhepostista ja loppu riippu operaattorien aktiivisuudesta sovelluksien tarjoamiseen.

4. LYHYTSANOMAKESKUS

Lyhytsanomakeskuksen tehtävänä on välittää ja varastoida sanomia. Jos sanomaa ei saada perille ensimmäisellä yrityksellä SMSC varastoi sanoman ja yrittää sanoman lähetystä myöhemmin uudelleen. Lyhytsanomakeskus tarjoaa myös sovellusrajapinnan, jonka avulla ulkopuoliset sovellukset voivat liittyä SMSC:hen ja tarjota palveluita käyttäjille. Tätä rajapintaa ei ole kuitenkaan standardoitu ja jokaisella SMSC valmistajalla on oma keskenään yhteensopimaton ratkaisunsa.

SMSC on toteutettu yleensä UNIX-työasemassa toimivana ohjelmistona. Työasemasta on kommunikaatiolinkki MSC:hen ja usein myös puhepostijärjestelmään sekä lisäksi mahdollisia sovelluskohtaisia yhteyksiä kuten modeemi, X.25 tai LAN-yhteyksiä.

Tällä hetkellä lyhytsanomakeskuksia tarjoaa ainakin neljä telekommunikaatioyritystä.

Aldiscon on irlantilainen yritys, jonka päätuote on lyhytsanomakeskukset ja se on alan markkinajohtaja. Aldisconin tarjoamat sovellusrajapinnat ovat UCP, joka on oikeastaan ERMES-henkilöhakulaitestandardin mukainen rajapinta ja SMPP, joka on Aldisconin oma rajapinta.

Nokia on toimittanut maailman ensimmäisen kaupallisessa käytössä toimineen lyhytsanomakeskuksen Ruotsiin 1993 ja on tällä hetkellä markkinoiden toiseksi suurin toimittaja. Nokian vahvin markkina-alue on Kauko-Itä. Suomen teleoperaattoreista Radiolinjalla on Nokian SMSC. Nokian sovellusrajapinta on nimeltään CIMD. Nokian lyhytsanomakeskuksia myydään vain Nokian GSM-puhelinkeskuksiin.

CMG on hollantilainen telealan yritys. Se on SMSC-markkinoiden kolmonen, mutta se on saanut vahvan aseman valtiollisten teleoperaattoreiden toimittajana. Suomessa Telellä on CMG:n lyhytsanomakeskus. Sovellusrajapinta on UCP.

Viimeinen tärkeä SMSC valmistaja on englantilainen Sema. Sema on Euroopan johtavia konsultti- ja ohjelmistosuunnitteluyrityksiä. Alcatel myy Semaa systeemiensä yhteydessä. Seman sovellusrajapinnan nimi on GPI.

Ericsson on myös viime aikoina ilmoittanut tarjoavansa SMSC toiminnallisuutta. Tarkempia tietoja systeemin yksityiskohdista ei ole kuitenkaan saatavilla.

5. SOVELLUSRAJAPINNAT

Lyhytsanomia lähettävän ja vastaanottavan sovellusohjelman tekeminen on helppoa melko yksinkertaisten sovellusrajapintojen vuoksi. Käytännössä suuremmaksi ongelmaksi voi muodostua itse yhteyden luotettava luominen lyhytsanomakeskukseen. Yhteysvaihtoehtoja ovat yleensä modeemi, X.25 ja TCP/IP-yhteydet.

Sovellukset ovat yleensä joko asikastyyppisiä tai palventyyppisiä. Asiakastyyppinen sovellus on esim. Windows-ohjelma, jonka avulla voidaan lähettää lyhytsanomia. Tällöin yhteys keskukseen otetaan, kun on jotain lähetettävää ja se katkaistaan lähetyksen jälkeen. Palvelinsovellukset vastaavat puhelimelta tuleviin sanomiin ja niiden on siis käytännössä pidettävä yhteys auki koko ajan.





Yhteysvaihtoehdoista Internet eli TCP/IP-yhteys on selvästi joustavin. Kytkentäaika on lyhyt ja yhteyden voi ottaa melkein mistä tahansa. Ongelmana on turvallisuus. Teleoperaattorit eivät yleensä ole kovin halukkaita tajoamaan Internet-yhteyttä koneisiinsa väärinkäytösten pelossa. Modeemit ovat yleisin vaihtoehto. Ne ovat turvallisia ja lyhytsanomien lähetys ja vastaanotto onnistuu myös hitaiden yhteyksien yli. Ongelmana on pitkä kytkentäaika ja operaattorin kannalta modeemipoolin hankkiminen ja konfiguroiminen. X.25 on jonkinlainen välivaihtoehto, mutta se alkaa

jo olla vanhaa tekniikkaa ja X.25-korttien hinnat PC:ille ovat todella korkeita. Sovelluskehityksen kannalta modeemin ja TCP/IP:n ohjelmoiminen on helppoa. Esim. Visual Basic:iin on olemassa kirjastoja sekä sarjaportin ohjaamista että Telnet- yhteyden ohjaamista varten. Suhteellisen kokematonkin koodaaja voi saada melko pienin ponnistuksin toimivan sovelluksen tehtyä.

Kun yhteys lyhytsanomakeskukseen on saatu, sovellusrajapinta käynnistyy yleensä automaattisesti. Kun rajapinta on valmis, liikennöinti tapahtuu rajapintaprotokollan mukaisesti. Esimerkiksi Nokian CIMD-rajapintaprotokolla tarjoaa seuraavat operaatiot [6]:
OPERAATIO:TOIMINTA:
loginistunnon aloitus ja käyttäjän tunnistus
logoutistunnon lopetus
submitsanoman lähetys
message status inquerysanoman tilan kysely
message retrievalsanoman vastaanottaminen
change passwordsalasanan vaihtaminen
message cancellähetetyn sanoman peruuttaminen


Operaatioiden syntaksista pari esimerkkiä:

<STX>01<TAB>Id<TAB>Passwd<TAB>sess_dcs<TAB>chksum<ETX><LF>

positiivinen vaste:

<STX>Ack<TAB>C:01<TAB>chksum<ETX><LF>

<STX>03<TAB>dest<TAB>s_msg<TAB>vp<TAB>orig<TAB>pid<TAB>fd

<TAB>chksum<TAB><ETX><LF>

positiivinen vaste:

<STX>Ack<TAB>C:03<TAB>chksum<ETX><LF>

<STX>05<TAB>chksum<ETX><LF>

positiivinen vaste:

<STX>Ack<TAB>C:05<TAB>dest<TAB>orig<TAB>s_msg<TAB>scts<TAB>

chksum<ETX><LF>

Komennot ovat siis yleisesti muotoa: alkutunniste, operaatiokoodi, parametrilista jossa parametrit on eroteltu kontrollimerkillä (osa parametreistä voi olla optionaalisia), tarkistussumma ja lopputunniste.

CIMD voidaan käynnistää erilaisilla käyttäjäprofiileilla. Osa optioista mahdollistaa operaattorin asettaa rajoituksia tietyille käyttäjille tai käyttäjäryhmille. Myös istunnon aloitus ilman loginia on mahdollinen, mutta tällöin käyttäjä ei voi vastaanottaa sanomia.


6. LYHYTSANOMASOVELLUKSET

Erilaisia lyhytsanomasovelluksia on jo toteuttu runsaasti ja lisää on kehitteillä koko ajan. Erityisesti Ruotsissa on käytössä muutamia tärkeitä sovelluksia [7]. Suomessa teleoperaattorit tuntuvat suhtautvan nihkeämmin sovelluskehitykseen.



Jakelupalvelut

Jakelupalvelut ovat tärkeä jo olemassaoleva lyhytsanomien sovellusalue. Systeemi toimii seuraavasti: toimintaohjeet syötetään sovellukselle, joka lähettää lyhytsanoman jakeluautoa ajavalle kuriirille. Tämä kuittaa sanoman tai kysyy mahdollisesti lisäohjeita lähettämällä sanoman sovellukselle. Kun työ on tehty, kuriiri lähettää vahvistuksen ja systeemi voi laskuttaa asiakasta välittömästi. Tällainen sovellus on toteutettu Ruotsissa ja Italiassa. Suomessa ICL on kehittämässä vastaanvantyylistä logistiikkasovellusta.

Sähköpostisovellukset

Puhepostin tapaan myös saapuneesta sähköpostista voidaan lähettää ilmoitus vastaanottajan GSM-puhelimeen lyhytsanomana. Käyttäjän ei tarvtse tarkistaa itse onko hän vastaanottanut uutta sähköpostia, vaan ilmoitus tulee automaattisesti. Ilmoitus voi olla joko pelkkä sanoma, joka ilmoittaa uudesta sähköpostista tai se voi sisältää sähköpostin lähettäjän, aiheen tai jopa osan sähköpostista. Tällainen sovellus on hyödyllinen matkustelevalle sähköpostinkäyttäjälle esim. myyntimiehelle. Myös erilaisia sähköposti-lyhytsanoma gateway sovelluksia on toteuttu ainakin X.400 ja SMTP sähköpostiprotokolliin sekä Windowsin MS-Mail ja CCmail ohjelmiin. Suomessa molemmat GSM-operaattorit tarjoavat X.400 gateway palvelua.

Informaatiopalvelut

Lyhytsanomien avulla voidaan toteuttaa monentyyppisiä informaatiopalveluita. Tilaaja voi saada palveluun liittyviä sanomia automaattisesti esim. päivittäin tai hän voi pyytää haluamaansa informaatiota lähettämällä lyhytsanoman GSM-puhelimestaan palveluntarjoajan sovellukselle.

Yksi esimerkki tällaisesta palvelusta on uutispalvelu. Tässä palvelussa uutisotsikot lähetetään GSM-puhelimeen pari kertaa päivässä lyhytsanomina. Sanoman mukana tulee puhelinnumero, johon soittamalla palvelun tilaaja saa lisää informaatiota lähetetyistä uutisotsikoista. Tätä palvelua tarjoaa Suomessa Aamulehti molempien GSM-operaattorien välityksellä ja STT Telen välityksellä.

Toinen mahdollinen palvelu on sääpalvelu. Tilaaja voi lähettää lyhytsanoman palveluntarjoajalle, jossa hän tiedustelee säätietoja tietyllä kohdealueella, esim. kesämökillä, merellä tai ulkomailla. Vastauksena tulee lyhytsanoma, joka sisältää säätiedoituksen. Tällainen palvelu on toteutettu ainakin Hollannissa ja Ruotsissa.

Finanssipalvelut

Erilaisia pankkiasioihin, osakekursseihin ja valuuttakursseihin liittyviä palveluita on myös toteutettu runsaasti. Näissä palveluissa tilaajalle lähetetään tietoja tilitapahtumista tai osakekurssien ja valuuttakurssien muutoksista lyhytsanomina. Ruotsissa ja Hollannissa oleva palvelu mahdollistaa tietyn osakkeen kurssin tiedustelemisen ja vastaus tulee lyhytsanomana. Pisimmälle viety finanssipalvelu on Reutersin lyhytsanomapalvelu.

Reuters käyttää ns. Reuter Terminaleja (RT). Ne ovat PC:itä Reutersin asiakkaiden tiloissa. Nämä PC:t ovat kytketty Reutersin tietokantoihin ja niihin lähetetään jatkuvasti finanssitietoja ja uutisotsikoita Reutersilta. RT:n käyttäjä voi nyt käyttää lyhytsanomien avulla RT:tä ja saada informaatiota, vaikka hän olisi poissa RT:n läheisyydestä. Reuter lyhytsanomapalvelun avulla on mahdollista:

RT:n käyttäjä voi määritellä toimintamoodiin sanomien lähetykselle. Sanoma voidaan lähettää päivittäin, osakekurssin muuttuessa tai kun kurssi ylittää määritellyn vaihteluvälin. Reutersilla on oma lyhytsanomakeskus Lontoossa, joka on yhdistetty toisaalta Reutersin omaan verkkoon ja toisaalta GSM-verkkoon.

Liikennepalvelut

EU:n PROMISE-projekti tutkii kannettavan matkainformaatiosysteemin kehittämistä. Tässä projektissa lyhytsanomia käytetään monenlaisen tiedon levittämiseen. Ainakin seuraavaa informaatiota voidaan jakaa lyhytsanomien avulla:

Hyvä esimerkki on linja-autojen aikataulusovellus. Käyttäjä voi lähettää kyselyn lyhytsanomana, jossa hän ilmoittaa haluavansa olla rautatieasemalla klo 16:00. Tietokantapalvelin käsittelee kyselyn ja lähettää vastauksen lyhytsanomana, joka sisältää täydelliset kulkuohjeet rautatieasemalle tyyliin:

PROMISE:n vaihe 1 päättyi Göteborgissa 1994 ja vaihe 2 on käynnissä tällä hetkellä [8].

Hollannissa on jo nyt toteutettu ruuhkainformaatiopalvelu, jossa tilaaja lähettää lyhytsanomassa moottoritien numeron ja vastauksena tulee liikennetilanne kyseisellä tiellä.

Lyhytsanomien käyttöä yhdessä GPS-paikannusjärjestelmän kanssa on myös tutkittu. GPS-systeemiltä saatu ajoneuvon paikkatieto voidaan lähettää lyhytsanomana valvomoon ja ajoneuvon kulkua voidaan näin valvoa etäältä.

Muita lyhytsanomasovelluksia

Myös monia muita, kuin edellä mainittuja lyhytsanomasovelluksia on toteutettu. Seuraavassa esitetään muutamia mielenkiitoisimpia toteutuksia.

Hälytykset prosessinohjausjärjestelmältä voidaan lähettää lyhytsanomana valvontahenkilöiden GSM-puhelimiin. Systeemi voidaan liittää esim. teollisuusprosesseihin, vartiointisysteemeihin tai tietokonesysteemeihin, jolloin epätavallisissa tilanteissa järjestelmävastaava tai mikrotukihenkilö saa ilmoituksen GSM-puhelimeensa.

Numerotiedustelun vastaus voidaan lähettää lyhytsanomana kyselyn tekijän GSM-puhelimeen. Tällöin kysyjän ei tarvitse erikseen kirjoittaa numeroa muistiin ja sen jälkeen näppäillä puhelimelle, vaan numero voidaan ottaa suoraan vastauksena tulleesta lyhytsanomasta ja tallettaa se puhelimen muistiin.

Lyhyiden faxien lähetys GSM-puhelimesta voidaan tehdä lyhytsanomien avulla. Tilaaja lähettää faxin ja vastaanottajan fax-numeron lyhytsanomana fax-sovellukselle. Sovellus lähettää faxin ja lisää ennalta määritellyn otsikon ja mahdollisesti henkilökohtaisen logon tai tervehdyskentän faxiin.

Jotkin yksittäiset lyhytsanomasovellukset voivat yhdistää useita edellä mainittuja sovellusideoita. Tälläinen sovellus on hollantilaisen GIN-yhtiön sovellus, jolle voidaan lähettää erilaisia informaatiopyyntöjä. GSM-puhelimesta lähetetään sovellukselle lyhytsanoma, joka sisältää tietyn avainsanan ja sovellus vastaa lähettämällä informaatiota kyseiseen avainsanaan liittyvästä aiheesta. GIN-sovellus lähettää informaatota mm. seuraavista aiheista [9]:


Uusia sovellsideoita

Seuraavista aiheista on mietty lyhytsanomasovelluksen toteuttamista enemmän tai vähemmän, mutta julkistettua toimivaa sovellusta ei ilmeisesti vielä ole julkaistu:

Myös lyhytsanomien mahdollista roolia Mowgli-protokollan yhteydessä tutkitaan. Mowgli tarjoaa TCP/IP:tä käyttäville sovelluksille socket-rajapinnan Trumpet Winsocketin tapaan. Lyhytsanomien osuus olisi todennäköisesti välittää erilaista kontrolli-informaatiota.

7. SOVELLUSESIMERKKI - SendMessage

Käytännön esimerkiksi lyhytsanomasovelluksesta voidaan ottaa SendMessage-ohjelma, jonka avulla voidaan lähettää ja vastaanottaa lyhytsanomia PC:ltä.

Taustaa

SendMessagen kehitystyö alkoi kesällä 1994. Tarkoituksena oli tehdä testi- ja demo-ohjelma, jota voitaisiin käyttää Nokian CIMD-rajapintaprotokollan esittelyyn ja testaamiseen. Ohjelma päätettiin tehdä Windows-ympäristöön, käyttää työkaluna Visual Basic ohjelmistoa ja käyttää modeemiyhteyttä lyhytsanomakeskuksen ja sovelluksen välillä. Lisäksi ohjelmasta päätettiin tehdä saman toiminnallisuuden omaava versio, joka toimisi kannettavan PC:n ja PCMCIA-datakortin kanssa. Tämä versio ei siis käytä CIMD-protokollaa sanomien käsittelyyn, vaan datakortilla olevaa lyhytsanomatulkkia. Kolmantena versiona tuli mukaan 1995 LAN-versio, jossa yhteys lyhytsanomakeskukseen otetaan modeemin sijasta lähiverkon yli käyttäen Telnet-yhteyttä.

Käyttöliittymä

Kaikissa kolmessa versiossa on periaattessa sama peruskäyttöliittymä. Toolbarin yhteydenmuodostusbuttonit ja pull-down valikoitten tekstit ovat hieman erilaisia, mutta sanomien kirjoitus, lähetys, vastaanottaminen ja vastaanottajan valinta tapahtuu kaikissa versioissa samalla tavalla.

SendMessagen modeemiversion peruskäyttöliittymä

Toolbarista löytyvät seuraavat buttonit vasemmalta lukien: yhteyden muodostus, yhteyden katkaisu, sanoman vastaanottaminen, vastaaminen sanomaan (reply), sanoman lähetys, sanoman tilan kysely ja poistuminen ohjelmasta (quit). Toolbarin alta löytyy pikavalintalistat vastaanottajalle ja vakiosanomille. Näiden alapuolella on varsinaiset vastaanottajan puhelinnumero ja sanoma tekstikentät. Vastaanottajan numero ja sanoman teksti otetaan joko pikavalintalistojen mukaan tai ne voidaan myös kirjoittaa suoraan ko. kenttiin. Alhaalla vasemmalla on status-kenttä johon ohjelma kirjoittaa sekä ohjelman omia, että lähetettyjä sanomia koskevia tilatietoja. Vastaanotetut sanomat näytetään sanoma tekstikentässä. Toolbarin buttonit ovat harmaita, jos toiminne ei ole mahdollinen, esim. sanoman lähetys onnistuu vasta kun yhteys lyhytsanomakeskukseen on ensin avattu.

Vastaanottajatietojen ylläpito

Vastaanottajatietojen ylläpito tapahtuu kaikissa versioissa täsmälleen samalla tavalla. Change valikosta löytyy Phonebook, jossa kaikki vastaanottajat ovat listattuna.


SendMessagen vastaanottajatietojen ylläpitoikkuna

Oikella olevien buttonien avulla voidaan lisätä, muutta ja poistaa vastaanottajien tietoja sekä luoda lähetyslistoja, joissa usealle vastaanottajalle lähetetään sama sanoma. Ylin button valitsee aktiivisen vastaanottajan perusikkunan pikavalintalistalle.

Teletekniikan kannalta ohjelmien kiinnostavimmat osat ovat yhteydenmuodostus ja CIMD liikenne, joten esitän tässä takemmin vain ohjelmien em. toiminnallisuuksia koskevat osat.

SendMessage - modeemiversio

Yhteydenmuodostus:

Yhteydenmuodostuksessa käytetään hyväksi Visual Basic 3.0 Professional-versiosta löytyvää sarjaliikenneportin ohjauskirjastoa. Sen avulla sarjaportin ohjaaminen onnistuu komennoilla, jotka ovat muotoa: Comm1.PortOpen = True, Comm1.Output = "Merkkijono" ja Muuttuja = Comm1.Input. Tässä Comm1 on sarjaliikennekommunikointi-instanssi eikä käytettävä sarjaliikenneportti.

Yhteyttä muodostettaessa ohjelmakoodi tekee seuraavaa:

Ohjelmakoodi on liitteessä 1.

Sanoman lähetys:

Sanomaa lähetettäessä ohjelmakoodi tekee seuraavaa:

Ohjelmakoodi on liitteessä 2.

SendMessage - LAN versio

Yhteydenmuodostus:

Yhteydenmuodostuksessa käytetään hyväksi Distinctin tekemää TCP/IP kirjastoa Visual Basicille. Sen avulla voidaan helposti esim. avata Telnet yhteys lyhytsanomakeskukseen. Komenneot ovat muotoa: Telnet1.Action = CONNECT, Telnet1.Send = "Merkkijono" ja Muuttuja = Telnet1.Receive [10]. Kirjaston toiminta on joissakin erikoistilanteissa hieman puutteelinen. Virhetilanteet kaatavat joskus koko Visual Basicin ja kahden lähes samanaikaisen tapahtuman sattuessa (esim. yhteys muodostunut ja dataa vastaanotettu) jälkimmäinen saattoi joskus hukkua.

Yhteyttä muodostettaessa ohjelmakoodi tekee seuraavaa:

Ohjelman rakenne on siis selvästi yksinkertaisempi, kuin modeemiversion kohdalla. Itse lyhytsanomaliikenteeseen liittyvä ohjelmakoodi on lähes täysin samanlaista sekä modeemi- että LAN-versioissa. Ainoa ero on sarjaliikenteen ohjauskomentojen korvaaminen Telnet-yhteyden ohjauskomennoilla.

SendMessage - PCMCIA versio

Tämä versio eroaa toiminnallisuudeltaan huomattavasti edellisistä ohjeman versioista vaikka käyttäjän näkymä ohjelmaan pysyy lähes samana. Nyt lyhytsanomaliikenne ei tapahdu sovelluksen ja lyhytsanomakeskuksen välillä CIMD-protokollan mukaan, vaan sovelluksen ja GSM-puhelimen välillä PCMCIA-datakortin avulla. Puhelin ei puolestaan välitä sanoman alkuperästä mitään lähettäessään ja vastaanottaessaan sanomia vaan toimii aivan kuten sanomat olisivat kirjoitettu puhelimen näppäimistöltä.

PCMCIA-kortin sanomatulkki on tehty ihmisen käytettäväksi, joten se ei ole kovin hyvä ohjelmointirajapinta. Kortilla pitäisi olla myös ETSI:n suosituksen 07.05 mukainen ohjelmointirajapinta [11], mutta ainakaan vielä kesällä 1994 se ei ollut toimintakunnossa.

Yhteydenmuodostus:

Yhteyttä muodostettaessa ohjelmakoodi tekee seuraavaa:

Sanoman lähetys:

Perustilanne on tässä sama kuin muitten versioitten tapauksessa, mutta CIMD-protokollan sijasta sanomat lähetetään viemällä tulkki sanomien lähetystilaan ja antamalla sitten sanoman vastaanottajan puhelinnumero ja itse sanoma. Tilanteen tekee monimutkaiseksi kuitenkin se, että tulkki ilmoittaa uusista vastaanotetuista sanomista milloin tahansa, myös kesken lähetyssekvenssin. Tämä ilmoitus lisäksi siirtää tulkin lähetystilasta takaisin perustilaan. Tämän vuoksi sanomaa lähettävän funktion pitää koko ajan tarkastaa kortilta tulevaa dataa ja havaitessaan ilmoituksen uudesta sanomasta näyttää se ja jatkaa lähetystä kutsumalla itseään uudestaan.

Kokemuksia

SendMessage - ohjelmia on käytetty demo- ja testikäytössä kohta kahden vuoden ajan. Demokäytössä niitä käytetään esimerkkinä CIMD-rajapintaa käyttävästä ohjelmasta ja niitä ollaan esitelty lukuisille Nokian asiakkaille Suomessa ja ulkomailla. Lisäksi ohjelmien Visual Basic koodia on lähetetty suoraan muutamalle asiakkaalle.

Myös testikäytössä SendMessage-ohjelmista on ollut paljon hyötyä. Niillä ollaan testattu CIMD-rajapintaprotokollaa ja sen oikeaa toimintaa. Nokian SMSC:n virallisessa testiohjelmassa on useita testejä, joissa testataan CIMD:n toimintaa SendMessagen avulla. Erityisen hyödylliseksi apuvälineeksi on osoittautunut tässä CommSpy niminen ohjelma, jonka avulla voi seurata sarjaportista kulkevaa liikennettä merkki merkiltä. Näin ohjelman ja protokollan lähettämien protokollakehysten muotoa ja oikeellisuutta on päästy kätevästi tarkastelemaan. Lisäksi SendMessagesta on testiversio, joka lähettää sanomia jatkuvasti silmukassa ja näin saadaan luotua sanomaliikennettä kapasiteetti- ja rasitustestejä varten.

Koska SendMessage on ollut alusta saakka erillinen PC-ympäristössä toteutettu projekti, sitä ei ole koskaan laitettu Nokian SMSC osaston versionhallintasysteemiin. Tämä on joskus aiheuttanut pieniä ongelmia, koska nimenomaan testikäyttöä varten ohjelmiin on tehty usein pieniä muutoksia, ja ohjelma siis elää koko ajan CIMD protokollan kehittyessä ja saadessa uusia ominaisuuksia.

8. YHTEENVETO

Lyhytsanomien käyttö painottuu tulevaisuudessa yhä enemmän sanomapalveluiden suuntaan. Lyhytsanomien käytön yleistymiseen vaikuttanee voimakkaimmin hinnoittelu, mainonta ja tajolla olevat sovellukset. Operaattorien panostus edellä mainittuihin seikkoihin on ratkaiseva. GSM-lyhytsanomapalvelun sovelluskehitys jatkunee vilkkaana ainakin lähitulevaisuudessa. Suomessa on vielä toistaiseksi vähän lyhytsanomapalveluita ja niitä tullaan varmasti näkemään lisää lähivuosina. Pitemmän ajan kehitys on vielä epävarmaa, koska lyhytsanoman kohtalo tulevaisuuden matkapuhelinjärjestelmissä on vielä avoinna, mutta luultavasti se tulee olemaan mukana muodossa tai toisessa.

LÄHDELUETTELO

[1] ETSI GSM 03.40. European digital cellular telecommunications system (Phase 2); Technical realization of the Short Message Service (SMS) Point-to-Point (PP), 1995.

[2] Hutteger Nina. Lyhytsanomien hyödyntäminen, Nokia internal document, 1995.

[3] DX 200 MSC/HLR Short Message Services, Nokia training document, 1995.

[4] Nokia Cellular Data: Cellular Data Card, esite.

[5] Nokia Cellular Data: Cellular Ware, esite.

[6] Gustafsson Patrik. Computer Interface to Message Distribution, Nokia customer document, 1995.

[7] Torvinen Olli, Nokia SMSC Integrates the Value-added Services, Nokia internal document, 1995.

[8] PROMISE. For a better choice in transport, esite.

[9] GSM Information Network. GIN User Manual, 1995.

[10] Distinct: Distinct TCP/IP SDK Visual Edition, 1993, 1994

[11] Nokia Cellular Data: Cellular Data Card DTP-2 User's Guide, 1994

LIITTEET

Liite 1.

'Initializes the modem, calls to SMSC, makes the UNIX

'login, makes the CIMD login and checks for new messages.

'

Sub Connect_Click ()

Login = Chr$(2) & "01" & Chr$(9) & UsrSettings.TMDLogin.Text & Chr$(9) & UsrSettings.TMDPasswd.Text & Chr$(9)

Connect.Enabled = False

Connect.Picture = LoadPicture(Path$ & "phone.bmp")

UsrSettings.TMDPasswd.Enabled = False

If ModSettings.Port1.Value Then

Comm1.CommPort = 1

ElseIf ModSettings.Port2.Value Then

Comm1.CommPort = 2

ElseIf ModSettings.Port3.Value Then

Comm1.CommPort = 3

Else

Comm1.CommPort = 4

End If

If ModSettings.bps9600.Value Then

br$ = "9600"

ElseIf ModSettings.bps2400.Value Then

br$ = "2400"

Else

br$ = "14400"

End If

If ModSettings.Bits7.Value Then

db$ = "7"

Else

db$ = "8"

End If

If ModSettings.Stop1.Value Then

sb$ = "1"

Else

sb$ = "2"

End If

If ModSettings.Par(0).Value Then

pa$ = "E"

ElseIf ModSettings.Par(1).Value Then

pa$ = "N"

ElseIf ModSettings.Par(2).Value Then

pa$ = "O"

ElseIf ModSettings.Par(3).Value Then

pa$ = "M"

Else

pa$ = "S"

End If

Comm1.DTREnable = True

Comm1.RTSEnable = True

Comm1.Settings = br$ & "," & pa$ & "," & db$ & "," & sb$

Comm1.InputLen = 0

Comm1.PortOpen = True

Comm1.Output = "ATE0V0X3" + Chr$(13)

Status.Caption = "Initializing modem"

Wait 3

If Comm1.InBufferCount >= 1 And Val(Comm1.Input) = 0 Then

Status.Caption = "OK"

Else

Status.Caption = "Modem not found"

Wait 2

Comm1.PortOpen = False

Connect.Enabled = True

Connect.Picture = LoadPicture(Path$ & "phone3.bmp")

Exit Sub

End If

Comm1.Output = "ATDT" + UsrSettings.DialNum.Text + Chr$(13)

Status.Caption = "Dialing to SMSC"

Do

Dummy = DoEvents()

Loop Until Comm1.InBufferCount >= 1

Inp1$ = Comm1.Input

If Val(Inp1$) = 6 Then

Status.Caption = "No dial tone"

HangUp

Exit Sub

ElseIf Val(Inp1$) = 7 Then

Status.Caption = "Busy"

Wait 2

Comm1.PortOpen = False

Connect.Enabled = True

Connect.Picture = LoadPicture(Path$ & "phone3.bmp")

Exit Sub

ElseIf Val(Inp1$) = 8 Or Val(Inp1$) = 3 Then

Status.Caption = "No answer"

Comm1.PortOpen = False

Connect.Enabled = True

Connect.Picture = LoadPicture(Path$ & "phone3.bmp")

Exit Sub

ElseIf Val(Inp1$) >= 9 Then

Status.Caption = "Connect"

End If

Wait 2 'for Radiolinja testing

Status.Caption = "Logging in"

Do

Dummy = DoEvents()

Wait 1

Temp$ = Temp$ & Comm1.Input

Loop Until InStr(1, Temp$, "login", 1) > 0

Wait 2

Comm1.Output = UsrSettings.Login.Text & Chr$(10)

If Len(UsrSettings.Passwd.Text) > 0 Then

Do

Dummy = DoEvents()

Wait 1

Temp1$ = Temp1$ & Comm1.Input

Loop Until InStr(1, Temp1$, "password", 1) > 0

Comm1.Output = UsrSettings.Passwd.Text & Chr$(10)

End If

Do

Dummy = DoEvents()

Wait 1

Temp2$ = Temp2$ & Comm1.Input

Loop Until InStr(1, Temp2$, "CIMD rel", 1) > 0 Or InStr(1, Temp2$, "smsc", 1) > 0 Or InStr(1, Temp2$, "incorrect", 1) > 0

If InStr(1, Temp2$, "incorrect", 1) > 0 Then

Status.Caption = "Login incorrect"

HangUp

Exit Sub

End If

Status.Caption = "Starting CIMD"

Wait 1

Dummy = Comm1.Input

Comm1.Output = Login & Checksum(Login) & Chr$(3) & Chr$(10)

Do

Dummy = DoEvents()

Wait 1

Inp1$ = Inp1$ & Comm1.Input

Loop Until InStr(1, Inp1$, "C:01", 0) > 0

If InStr(Inp1$, Chr$(6)) < 1 Then

Geterr (Inp1$)

HangUp

Exit Sub

End If

Disconnect.Enabled = True

Disconnect.Picture = LoadPicture(Path$ & "phone4.bmp")

ReadMes

Enable4

UsrSettings.M_Change.Enabled = True

End Sub

Liite 2

'Sends the submit a message command to CIMD in a loop which

'upper limit is defined by length of the delivery list. For

'normal recipient the loop is done once. Ack send if

'delivery query option in TMD subsc. is ON.

'

Sub Send_Click ()

If Len(Message.Text) = 0 Or Len(DestNum.Text) < 2 Then

MsgBox "Empty message or too short phonenumber", , "Send"

Exit Sub

End If

Timer1.Enabled = False

Send.Enabled = False

Send.Picture = LoadPicture(Path$ & "envelop1.bmp")

ReadNext.Enabled = False

ReadNext.Picture = LoadPicture(Path$ & "mail3.bmp")

GetStatus.Enabled = False

GetStatus.Picture = LoadPicture(Path$ & "eyeglas2.bmp")

Num% = 1

Do

Place = 1

Search$ = NameList.List(NameList.ListIndex)

Submit = Chr$(2) & "03" & Chr$(9) & DestNum.Text & Chr$(9) & ConvertMessage() & Chr$(9) & Trim$(UsrSettings.ValPer.Text) & Chr$(9) & Chr$(9) & Chr$(9) & "i0" & Chr$(9)

If Mid$(Search$, 1, 1) = Chr$(248) Then

TmpStr1$ = Trim$(Findlist(Search$))

Num% = GetLen(TmpStr1$)

End If

For j% = 1 To Num%

Inp1$ = ""

If Mid$(Search$, 1, 1) = Chr$(248) Then

Dest$ = Getnext(TmpStr1$)

Submit = Chr$(2) & "03" & Chr$(9) & Dest$ & Chr$(9) & ConvertMessage() & Chr$(9) & Trim$(UsrSettings.ValPer.Text) & Chr$(9) & Chr$(9) & Chr$(9) & "i0" & Chr$(9)

End If

Comm1.Output = Submit & Checksum(Submit) & Chr$(3) & Chr$(10)

Status.Caption = "Sending message..."

Do

Dummy = DoEvents()

Wait 1

Inp1$ = Inp1$ & Comm1.Input

Loop Until InStr(1, Inp1$, "C:03", 0) > 0 Or (InStr(1, Inp1$, "C:04", 0) > 0 And InStr(1, Inp1$, Chr$(3), 0) > 0)

i% = InStr(1, Inp1$, "C:04", 0)

If i% > 0 Then

i% = i% + 5

Sta$ = GetIt(Inp1$, i%)

i% = i% + 1

Desc$ = GetIt(Inp1$, i%)

Status.Caption = Sta$ + " " + Desc$

Wait 2

Comm1.Output = Chr$(2) & Chr$(6) & Chr$(9) & "11" & Chr$(3) & Chr$(10)

ElseIf InStr(Inp1$, Chr$(6)) < 1 Then

Geterr (Inp1$)

Status.Caption = "Message not sent"

Wait 2

Enable4

Status.Caption = "Ready to send messages"

Exit Sub

Else

Status.Caption = "Message sent"

End If

If UsrSettings.Looped = True Then

ReadMes

Wait CInt(UsrSettings.Delay.Text)

End If

Next j%

Loop Until UsrSettings.Looped = False

Wait 2

Status.Caption = "Ready to send messages"

Enable4

End Sub