S Palm Piloty na internet snadno a rychle (2)

V minulém dílu jsme si představili knihovnu Net.lib. Jakmile zjistíme referenční číslo knihovny použitím funkce SysLibFind(), můžeme používat funkce, které jsou v knihovně obsažené.

2. Připojení k síti a odpojení od sítě

V minulém dílu jsme si představili knihovnu Net.lib. Jakmile zjistíme referenční číslo knihovny použitím funkce SysLibFind(), můžeme používat funkce, které jsou v knihovně obsažené.

Funkce knihovny Net.lib mají dvě společné věci. První z nich je společná předpona: všechny funkce začínají předponou NetLib.. Druhým společným znakem je, že všechny tyto funkce vyžadují jako první parametr referenční číslo knihovny.

První dvě popisované funkce slouží k připojení a odpojení sítě. Funkci NetLibOpen() voláme při požadavku na připojení k síti internet.

Err NetLibOpen(UInt16 refCislo, UInt16 *chybaInterface)

Připojí počítač Palm Pilot k internetu.

Vstupní parametry
  • refCislo - referenční číslo knihovny Net.lib
Výstupní parametry
  • chybaInterface - hodnota 0 pokud při inicializaci interface nedošlo k chybě. Došlo-li při inicializaci interface k chybě, je v této proměnné uloženo číslo chyby.
Vrácená hodnota
  • 0 - připojení se povedlo bez chyby
  • netErrAlreadyOpen - je-li již Palm Pilot připojen na síť internet
  • Jinak udává vrácená hodnota číslo chyby.

V panelu nastavení musí být nastaveny příslušné parametry (typ připojení modemu, telefonní číslo, uživatelské jméno a heslo). Funkce NetLibOpen() nevyžaduje žádné parametry - pro připojení k internetu je použit standardní modul interface.

Funkce NetLibOpen() vrací dva druhy chybových hodnot. Vrácená hodnota informuje o obecné chybě připojení k síti - například není-li definován žádný modul interface nebo není-li možné přidělit knihovně Net.lib dostatek operační paměti. Do proměnné chybaInterface je uloženo číslo chyby vrácené příslušným modulem interface.

Vrátí-li funkce NetLibOpen() hodnotu netErrAlreadyOpen, znamená to, že při volání této funkce byl počítač Palm Pilot již připojen k síti internet. Obalující funkce pro připojení k internetu může vypadat například takto:

static Boolean SitPripojit()
{
    UInt16 chybaInterface;
    Err chyba;

    chyba = NetLibOpen(gNetLibReference, &chybaInterface);

    if(chyba != 0 && chyba != netErrAlreadyOpen)
    {
        return false;
    }

    if(chybaInterface != 0)
    {
        return false;
    }

    return true;
}

Vrátí-li funkce SitPripojit() hodnotu true, je počítač Palm Pilot připojen k internetu a můžeme používat ostatní funkce knihovny Net.lib. K odpojení od internetu slouží funkce NetLibClose().

Err NetLibClose(UInt16 refCislo, UInt16 ihned)

Odpojí počítač Palm Pilot od internetu.

Vstupní parametry
  • refCislo - referenční číslo knihovny Net.lib
  • ihned - požadavek na okamžité odpojení
Vrácená hodnota
  • 0 - odpojení proběhlo bez chyby
  • netErrStillOpen - připojení k internetu používá i jiná aplikace
  • ostatní hodnoty - při odpojení došlo k chybě nebo Palm Pilot nebyl připojen k internetu

Druhý parametr funkce NetLibClose() může mít hodnotu true, nebo false. Předáme-li funkci NetLibClose() parametr true, bude počítač Palm Pilot od internetu odpojen okamžitě. Bude-li mít tento parametr hodnotu false, počká operační systém PalmOS chvíli na to, zda nezačne používat internet i jiné aplikace. Teprve pokud uplyne nějaká doba bez požadavků na internet, odpojí se.

Různé programy zacházejí s parametrem funkce NetLibClose() různě. Připojujeme-li se pomocí mobilního telefonu, tak jistě uvítáme, odpojí-li se aplikace okamžitě po stisknutí tlačítka. Na druhou stranu, pokud používáme připojení k internetu ve více aplikacích, je jednodušší s odpojením vyčkat. Také můžeme uživateli dát na vybranou, zda se chce při ukončení aplikace odpojit od internetu ihned nebo se zpožděním.

static Boolean SitOdpojitOkamzite()
{
    Err chyba;

    chyba = NetLibClose(gNetLibReference, true);

    if(chyba != 0)
    {
        return false;
    }

    return true;
}

Jsme-li již připojeni k internetu a zavoláme-li podruhé funkci NetLibOpen(), tato funkce vrátí hodnotu netErrAlreadyOpen. Knihovna Net.lib si pamatuje, kolik aplikací ji současně používá (volání funkce NetLibOpen() přičte a volání funkce NetLibClose() odečte jedničku od čítače připojení). Abychom se od internetu úspěšně odpojili, musíme zavolat funkci NetLibClose() tolikrát, kolikrát bylo připojení otevřeno funkcí NetLibOpen().

Err NetLibOpenCount(UInt16 refCislo, UInt16 *počet)

Zjistí, kolik aplikací využívá připojení na internet.

Vstupní parametry
  • refCislo - referenční číslo knihovny Net.lib
Výstupní parametry
  • počet - počet aplikací, které otevřely připojení na internet
Vrácená hodnota
  • vždy 0

Chceme-li zjistit, zda jsme připojeni k internetu, můžeme volat funkci NetLibOpenCount(). Tato funkce uloží do proměnné, jejíž adresu jí předáme, kolik aplikací zavolalo funkci NetLibOpen() k připojení na internet a ještě se neodpojilo. Má-li tato proměnná vyšší hodnotu než nula, je počítač Palm Pilot stále připojen na internet.

static Boolean SitPripojena()
{
    UInt16 pocet;
	
    NetLibOpenCount(gNetLibReference, &pocet);
    return (pocet > 0);
}

Můžeme použít jednoduchou obalující funkci SitPripojena(), která vrátí hodnotu true, je-li možné přistupovat na internet. Všechny obalující funkce, které budeme v tomto článku vytvářet, budou mít předponu Sit... a budou používat globální proměnnou gNetLibReference, ve které bude uloženo referenční číslo knihovny Net.lib.


Příště si nastavíme emulátor POSE tak, abychom na něm mohli vyzkoušet naši první aplikaci, která se jedním stiskem tlačítka k internetu připojí a druhým se odpojí.