\chapter{P\v{r}enos dat v~s\'{\i}t\'{\i}ch GSM}
\label{GSM}
Síť GSM je vhodným a efektivním prostředkem pro přenos pacientských dat. Výhody jsou následující:

\begin{itemize}
  \item{vysoká míra pokrytí signálem,}
  \item{relativní spolehlivost,}
  \item{dostupnost hotových modulů,} 
  \item{relativně nízká cena zařízení.}
\end{itemize}

Protože se jedná o~síť provozovanou komerčními subjekty, plynou z~toho také nevýhody:

\begin{itemize}
  \item{nutnost platit poplatky operátorovi,}
  \item{v~řídce obydlených oblastech může být pokrytí signálem nedostatečné,}
  \item{možnost výpadku nebo přetížení sítě,}  
  \item{není zaručena kontinuita do budoucnosti.}
\end{itemize}

\section{Srovnání různých způsobů přenosu dat}

Architektura GSM díky své flexibilitě a snadné rozšířitelnosti nabízí několik způsobů přenosu dat, které po dlouhou dobu existují (nebo existovaly) vedle sebe. Každý ze způsobů má určitá specifika, která ho předurčují pro konkrétní segment využití. Pro přenos pacientských dat jsou vhodné pouze některé, jak bude rozebráno dále.

\begin{description}
\item[Kr\'{a}tk\'{e} textov\'{e} zpr\'{a}vy (SMS)]

Přestože SMS se běžně neřadí mezi způsob přenosu dat, pro účely této práce sem tuto službu budeme počítat. Jedna zpráva má délku maximálně 160 znaků. Způsob přenosu je podrobně rozebrán v~části \ref{SMS}. Problémem může být malá úroveň zabezpečení, a tedy snadná možnost zneužití.

\item[Klasický (komutovan\'{y}) p\v{r}enos dat (CSD)]{
Jak název napovídá, jedná se o~\emph{komutované} spojení, tedy spojení s~přepínáním okruhů. Pro spojení mezi účastníky je využíván stejný způsob jako při přenosu hovoru. Rozdíl spočívá pouze ve způsobu zabezpečení proti chybám (kanálové kódování). Data musí být zabezpečena důkladněji než hovor, neboť chyba v~jediném bitu může způsobit např. chybu řízení důležitého procesu. Uživatelská přenosová rychlost je maximálně 9,6 kbit/s \cite{hanus}. Přenos je účtován v~závislosti na době připojení.}

\item[High Speed Circuit Switched Data (HSCSD)]{
Tento standard nabízí vyšší přenosovou rychlost pouhou softwarovou úpravou sítě. Díky efektivnějšímu kódování je přenosová rychlost 14,4 kbit/s na jeden kanál, při obsazení 4 timeslotů se tak vytvoří sdružený kanál s~přenosovou rychlostí 57,6 kbit/s \cite{hanus}.}

\item[General Packet Radio Service (GPRS)]{
Narozdíl od komutovaného spojení je tato služba založena na \emph{paketovém} přenosu dat. Díky implementaci protokolu IP jí lze použít i pro přístup do sítě Internet. Je to standard nezávislý na síti GSM, využívá jen její rádiovou část. Přenosová rychlost závisí na zvoleném systému kódování (ten závisí na kvalitě signálu) a počtu využitých timeslotů. Při kódování CS-4 je uživatelská přenosová rychlost 16,7 kbit/s na jeden timeslot \cite{hanus}. Běžně se používají 4 timesloty pro downlink a 1 timeslot pro uplink \cite{wikipedie-GPRS}. Výhodou je účtování za množství přenesených dat.}

\item[Enhanced Data Rates for GSM Evolution (EDGE)]{
Tento systém, označovaný někdy jako EGPRS (Enhanced GPRS), vznikl úpravou GPRS a také tedy podporuje \emph{paketový} přenos dat. Rozdíl spočívá ve využití modulace 8PSK (Eight Phase Shift Keying), je tak možné dosáhnout přenosové rychlosti až 48 kbit/s v~jednom kanálu, při použití všech 8 timeslotů 384 kbit/s. Pro realizaci je nutná hardwarová úprava BTS, z~toho plyne menší pokrytí -- je dostupný pouze ve městech.}

% \item[Universal Mobile Telecommunication System (UMTS)]{
%Pro úplnost ještě uveďme systém UMTS, patřící do skupiny sítí třetí generace (3G), nejedná se již o síť GSM. Přenosová rychlost se zde pohybuje od 144 kbit/s až do 2Mbit/s. Problémem je zatím malé pokrytí, pouze v centrech velkých měst.}

\end{description}

Přehledné srovnání všech možností je v~tabulce \ref{srovpren}.

\begin{table}[!ht]
  \begin{tabular}{|l|l|l|l|l|}
    \hline
    Systém & přenos & přen. rychlost & pokrytí & platba \\
    \hline
    SMS & -- & (160 znaků) & celá síť & za zprávu \\
    \hline
    CSD & komutovaný & 9,6 kbit/s & celá síť & doba připojení \\
    \hline
    HSCSD & komutovaný & 57,6 kbit/s & celá síť & doba připojení\\
    \hline
    GPRS & paketový & 66,8 kbit/s & prakticky celá síť & množství dat \\
    \hline
    EDGE & paketový & 384 kbit/s & ve městech & množství dat \\
    \hline       
  \end{tabular}
  \caption{Srovnání datových přenosů v~síti GSM}
  \label{srovpren}
\end{table}

Pro účely této práce je vhodný přenos pomocí SMS v~případě malého objemu dat, napříkad upozornění nebo statistiky. Kdybychom chtěli přenášet větší objemy dat, jeví se jako vhodný standard GPRS. Komutované přenosy CSD a HSCSD jsou z~dnešního pohledu zastaralé.

\section{P\v{r}enos kr\'{a}tk\'{y}ch textov\'{y}ch zpr\'{a}v (SMS)}
\label{SMS}

Služba přenosu krátkých textových zpráv (Short Message Service, SMS) je standardizována organizací ETSI (European Telecommunications Standards Institute) \cite{etsi40}. 

\subsection{Form\'{a}t SMS zpr\'{a}vy}
Protože se budeme zabývat přenosem SMS zpráv, je účelné podrobně popsat formát SMS zprávy. Každá zpráva obsahuje kromě vlastního textu také informace o~odesílateli a příjemci, číslo SMS centra, časové značky a další data. Celá zpráva i s~řídicími informacemi se označuje jako \emph{Protocol Data Unit} (PDU). Transportní vrstva protokolu SMS zahrnuje celkem šest typů PDU (v~této vrstvě nazývaných TPDU). Pro nás je důležitý pouze SMS-SUBMIT (přenos z~MS do SC). Obsah těchto PDU ukazuje tabulka \ref{smssubmit} \cite{etsi40}. 

\begin{table}[!ht]
    \begin{tabular}{|c|l|c|}
    \hline
      Zkratka & Význam & Délka (B)\\
    \hline
      FB & First Byte & 1 \\
    \hline
      MR & Message Reference & 1 \\
    \hline
      DA & Destination Address & $\geq 3$ \\
    \hline
      PID & Protocol Identifier & 1 \\
    \hline
      DCS & Data Coding Scheme & 1 \\
    \hline
      VP & Validity Period & 1/7 \\
    \hline
      UDL & User Data Length & 1 \\
    \hline
      UD & User Data & $\leq 140$\\
    \hline
  \end{tabular}
  \caption{Základní struktura TPDU typu SMS-SUBMIT}
  \label{smssubmit}
\end{table}

\textbf{First byte} (první byte) \footnote{Přesně vzato nemusí být první, tomuto bytu může ještě předcházet nepovinná \emph{adresa servisního centra} \cite{pettersson}. I~přesto jej pro jednoduchost budeme nazývat \emph{První byte}}. Obsahuje celkem šest údajů, z~nichž dva posledně jmenované jsou nepovinné. Struktura prvního bytu je v~tabulce \ref{prvni_byte}.

\begin{table}[!ht]
\setlength{\tabcolsep}{0.1em}
\begin{tabular}{ *{8}{p{1.3cm}}}
\hspace*{\fill} 7 \hspace*{\fill} & \hspace*{\fill} 6 \hspace*{\fill} &
\hspace*{\fill} 5 \hspace*{\fill} & \hspace*{\fill} 4 \hspace*{\fill} &
\hspace*{\fill} 3 \hspace*{\fill} & \hspace*{\fill} 2 \hspace*{\fill} &
\hspace*{\fill} 1 \hspace*{\fill} & \hspace*{\fill} 0 \hspace*{\fill} \\
\hline
  \multicolumn{1}{|c|}{RP} &
  \multicolumn{1}{|c|}{UDHI} &
  \multicolumn{1}{|c|}{SRR} &
  \multicolumn{2}{|c|}{VPF} &
  \multicolumn{1}{|c|}{RD} &
  \multicolumn{2}{|c|}{MTI} \\
\hline
\end{tabular}
\caption{Obsah prvního byte PDU typu SMS-SUBMIT}
\label{prvni_byte}
\end{table}

Jednotlivá pole TPDU mají následující význam:

\begin{description}
  \item[MTI (Message Type Indicator)] -- {Dvoubitový parametr určující typ zprávy. Pro typ SMS-SUBMIT nabývá hodnoty \verb|01| .}
  \item[RD (Reject Duplicates)] -- {Parametr udávající, zda má být SC přijata zpráva, pokud je v~SC již uložena zpráva se stejným MR, DA a adresou odesílatele.}
  \item[VPF (Validity Period Format)] -- {Dvoubitový parametr udávající formát pole VP podle tabulky \ref{vpf}.
  
\begin{table}[!h]
  \begin{tabular}{|c|c|l|c|}
    \hline
    4. bit & 3. bit & Význam & Délka \\
    \hline
    0 & 0 & pole VP není přítomno & 0 B \\
    \hline
    0 & 1 & rozšířený formát & 7 B \\
    \hline
    1 & 0 & relativní formát & 1 B \\
    \hline
    1 & 1 & absolutní formát & 7 B \\
    \hline
  \end{tabular}  
  \caption{Význam bitů pole VPF}
  \label{vpf}
\end{table}

  }
  \item[SRR (Status Report Request)] -- {Udává, zda je požadována zpráva o~stavu.}
  \item[UDHI (User Data Header Indicator)] -- {Udává, zda se na počátku pole UD nalézá hlavička.}
  \item[RP (Reply Path)] -- {Slouží pro zjištění, zda existuje zpáteční cesta. Bližší informace se nalézají v~\cite{etsi40}.}

  \item[MR (Message Reference)] -- {Referenční číslo zprávy v~rozsahu 0--255.}
  \item[DA (Destination Address)] -- {Adresa příjemce. Formát adresy viz oddíl \ref{adresa}.}
  \item[PID (Protocol Identifier)] -- {Identifikace protokolu, použitého pro přenos. Implicitní hodnota \verb|00000000| se použije v~případě, že zařízení je jednoznačně určeno adresou, tedy případ mobilního telefonu. Jiné hodnoty se používají například pro paging nebo elektronickou poštu.}
  \item[DCS (Data Coding Scheme)] -- {Určuje typ kódování dat v~poli UD, zda byla použita komprese a případně třídu zprávy. Pro \emph{standardní znakovou sadu GSM}, bez komprese a bez určení třídy se použije hodnota \verb|00000000|.}
  \item[VP (Validity Period)] -- {Doba platnosti, tedy doba uložení zprávy v~SC. Formát je dán polem VPF. Nejčastěji se používá relativní formát, viz tabulku \ref{hodnota_vp}.

\begin{table}[!h]
  \begin{tabular}{|l|l|}
    \hline
    \hspace*{\fill} Hodnota VP \hspace*{\fill} & \hspace*{\fill} Doba uložení \hspace*{\fill} \\
    \hline
    0--143 & $(VP+1)\cdot 5 \ \jedn{minut}$  \\
    \hline
    144--167 & $12\ \jedn{hodin} + (VP-143)\cdot 30 \ \jedn{minut}$  \\
    \hline
    168--196 & $(VP-166)\cdot 1 \ \jedn{den}$  \\
    \hline
    197--255 & $(VP-192)\cdot 1$ týden  \\
    \hline
  \end{tabular}  
  \caption{Výpočet doby platnosti SMS zprávy z~pole VP}
  \label{hodnota_vp}
\end{table}

Ostatní formáty jsou blíže popsány v~\cite{etsi40}.}
  \item[UD (User Data Length)] -- {Délka pole UD v~bytech.}
  \item[UD (User Data)] -- {Uživatelská data, vlastní text zprávy. Bližší informace viz oddíl \ref{text_zpravy}.}
\end{description}

\subsection{Adresa}
\label{adresa}
Adresa obsahuje kromě telefonního čísla další údaje, jak je uvedeno v~tabulce \ref{format_adresy}. 

\begin{table}[!ht]
\setlength{\tabcolsep}{0.1em}
\begin{tabular}{ *{8}{p{0.8cm}}}
\hspace*{\fill} 7 \hspace*{\fill} & \hspace*{\fill} 6 \hspace*{\fill} &
\hspace*{\fill} 5 \hspace*{\fill} & \hspace*{\fill} 4 \hspace*{\fill} &
\hspace*{\fill} 3 \hspace*{\fill} & \hspace*{\fill} 2 \hspace*{\fill} &
\hspace*{\fill} 1 \hspace*{\fill} & \hspace*{\fill} 0 \hspace*{\fill} \\
\hline
  \multicolumn{8}{|c|}{Délka adresy} \\
\hline
  \multicolumn{1}{|c|}{\hspace*{\fill} 1 \hspace*{\fill}} & 
  \multicolumn{3}{|c|}{Typ čísla} & \multicolumn{4}{|c|}{Číslovací plán} \\
\hline
  \multicolumn{4}{|c|}{2. číslice} & \multicolumn{4}{|c|}{1. číslice} \\
\hline
  \multicolumn{4}{|c|}{4. číslice} & \multicolumn{4}{|c|}{3. číslice} \\
\hline
  \multicolumn{8}{c}{\dots}  \\
\hline
  \multicolumn{1}{|c|}{\hspace*{\fill} 1 \hspace*{\fill}} & 
  \multicolumn{1}{|c|}{\hspace*{\fill} 1 \hspace*{\fill}} &
  \multicolumn{1}{|c|}{\hspace*{\fill} 1 \hspace*{\fill}} &
  \multicolumn{1}{|c|}{\hspace*{\fill} 1 \hspace*{\fill}} &
  \multicolumn{4}{|c|}{poslední číslice} \\
\hline
\end{tabular}
\caption{Formát adresy}
\label{format_adresy}
\end{table}

\textbf{Délka adresy} je osmibitovým číslem vyjádřený počet číslic telefonního čísla. \textbf{Typ čísla} je vyjádřen třemi bity. \verb|001| \ znamená mezinárodní číslo, \verb|010| \ znamená národní číslo. Význam ostatních kombinací je uveden v~\cite{etsi40}.

\textbf{Číslovací plán} je čtyřbitové označení použitého číslovacího schématu. Použijeme \verb|0001| \ = ISDN/telefonní plán.

Číslice \textbf{telefonního čísla} jsou vyjádřeny v~kódu BCD. Další znaky se kódují takto: \verb|1010| \ = "*", \verb|1011| \ = "\#", \verb|1100| \ = "a", \verb|1101| \ = "b", \verb|1110| \ = "c". Pokud je počet číslic lichý, jsou nevyužité čtyři bity naplněny \verb|1111|).

\subsection{Text zpr\'{a}vy}
\label{text_zpravy}
Vlastní text zprávy je v~oddělení \textbf{UD (User Data)}. Znaky mohou být kódovány sedmi, osmi, nebo šestnácti bity, v~závislosti na tom, jakou znakovou sadu budeme používat. Sedmi bity se může kódovat jeden 128 znaků \emph{standardní znakové sady GSM}, která je popsána v~\cite{etsi38}. Osmibitové vyjádření se používá pro znakové sady definované uživatelem. 16 bitů je třeba použít, pokud chceme kódovat znaky znakové sady UCS2 (ISO/IEC10646). 

Pro převod sedmibitově kódovaných znaků do bytů po osmi bitech se musí jednotlivé bity přeskupit. Toho lze dosáhnout jednoduše tak, že čteme jednotlivé bity 7-bitových znaků a zapisujeme je do paměti po 8 bitech. Čtení bitů probíhá od LSB směrem k~MSB, od prvního znaku k~poslednímu. Zápis bitů probíhá taktéž od LSB k~MSB, od prvního znaku k~poslednímu. Nevyužité bity se naplní nulami.

\subsection{Příklad PDU}
\label{subsec:vytvoreni_PDU}

Strukturu PDU si ještě ukážeme na příkladu. Budeme posílat SMS zprávu s~textem \uv{Test} na telefonní číslo +420 123 456 789. Obsah PDU je podrobně rozepsán v~tabulce \ref{vytvoreni_pdu}.

\begin{table}[!ht]
\begin{tabular}{|p{0.8cm}|c|p{9.5cm}|}
\hline
  HEX & Pole & Popis \\
\hline
  \verb|00| & SC & Nepovinné pole s~adresou servisního střediska. Pokud je hodnota \verb|00|, použije se implicitní telefonní číslo uložené v~paměti MS.  \\
\hline
  \verb|11| & FB & Typ zprávy SMS-SUBMIT, MTI = \verb|01|; Zpracovat i duplicitní zprávy, RD = \verb|0|; Formát VP se použije relativní, VPF = \verb|10|; Není požadována zpráva o~stavu, SRR = \verb|0|; UD bez hlavičky, UDHI = 0; RP = 0.\\
\hline
  \verb|00| & MR & Referenční číslo zprávy doplní MS.\\
\hline
  \verb|14| & Délka ad. & Délka adresy (počet číslic telefonního čísla).\\
\hline
  \verb|91| & Typ ad. & Mezinárodní formát telefonního čísla \verb|001|; číslovací plán ISDN/telefonní, \verb|0001|.\\
\hline
  \verb|24| \newline \verb|10| \newline \verb|32| \newline \verb|54| \newline \verb|76| \newline \verb|98| & Tel. č. & Telefonní číslo v~mezinárodním tvaru, \emph{420 123 456 789}, číslice se řadí dle tabulky \ref{format_adresy}. \\
\hline
  \verb|00| & PID & Identifikace protokolu, použije se implicitní hodnota, kdy je zařízení jednoznačně určeno adresou. \\
\hline
  \verb|00| & DCS & Protože nebudeme posílat znaky s~diakritikou, použijeme standardní znakovou sadu GSM.\\
\hline
  \verb|C2| & VP & Dobu platnosti nastavíme například na 28 dní. K~výpočtu použijeme tabulku \ref{hodnota_vp}, 3. řádek. Pole VP bude mít hodnotu 166 + 28 dní = 194, tedy \verb|C2|.\\
\hline
  \verb|04| & UDL & Počet znaků zprávy  před zakódováním. V~našem případě 4.\\
\hline
  \verb|D4| \newline \verb|F2| \newline \verb|9C| \newline \verb|0E| & UD & Text zprávy: \uv{Test}. T = \verb|1010100|, e = \verb|1100101|, s~= \verb|1110011|, t = \verb|1110100|. Po přeskupení sedmibitových znaků dostaneme v~jednotlivých bytech: \verb|11010100|; \verb|11110010|; \verb|10011100|; \verb|00001110|.\\
\hline
\end{tabular}
\caption{Příklad PDU s~textem \uv{Test}}
\label{vytvoreni_pdu}
\end{table}
