⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hardverrt.h

📁 s/w handheld terminal ( based on Cygnal 8051f230)
💻 H
字号:
/*
    Klase sa procedurama za rad sa resursima rucnog terminala ( memorija, konfiguracija ... ).
*/
#ifndef HADRVERRT_H
#define HADRVERRT_H
#include <string>
#include <vector>
using namespace std;

#include "Interpret.h"
#include "Komanda.h"

//******************************* Deklaracije << BEGIN >> *******************************
//      - kalse
class   KKontrolaEEPROMa;
class   KKonfiguracijaEEPROMa;
//      - tipovi
typedef vector<KKonfiguracijaEEPROMa>   TKKonfiguracijaEEPROMa;
//      - konstante
const unsigned int  BROJ_MEMORIJSKIH_BANAKA      = 2;
const unsigned int  BROJ_MODULA_PO_BANCI         = 8;
const unsigned int  OSNOVNI_MODUL_NEDEFINISAN    = 0xFFFF;
//******************************** Deklaracije << END >> ********************************

// Podaci o memorijskom modulu
class KKonfiguracijaEEPROMa{
public:
    KKonfiguracijaEEPROMa( unsigned int nAdr, bool bUgradjen ) : nAdresa(nAdr), bFlag(bUgradjen) {};

    unsigned int nAdresa;   // adresa EEPROM modula ( adresa banke i cipa )
    bool         bFlag;     // true ako je modul ugradjen na plocicu
};

class KKontrolaEEPROMa {
public:
    // Procedura za pristup jedinom objektu klase
    static KKontrolaEEPROMa* Instance( void );

    // Procedura izdvaja banku i modul iz date adrese ( banka je bit 3, modul su bitovi 0-2 )
    void IzdvojiBankuIModul( unsigned int nAdresaEEPROMmodula,
                             unsigned char& nBanka, unsigned char& nModul );

    // Procedura spaja banku i modul u jednu adresu
    unsigned int SpojiBankuIModul( unsigned char nBanka, unsigned char nModul );

    // Procedura sracunava sledecu adresu za podatke u EEPROM-u u odnosu na datu adresu.
    // U slucaju da nema vise mesta u EEPROM-u vraca false.
    bool DajAdresuSledecegPodatka( const KAdminInfo& adminInfo,
                                   const KOpisRT& opisRT,
                                   unsigned int& nAdresaEEPROMmodula, 
                                   unsigned int& nAdresaPodatakaUEEPROMu );

    // Funkcija koja postavlja konfiguraciju EEPROM-a i to :
    //  - konfiguracione flegove ( indikacija da li je modul prisutan ) i
    //  - velicinu modula u KB
    //  - adresu u osnovnom modulu od koje pocinje smestanje spiska brojila
    void PostaviKonfiguraciju( string cFlegovi, unsigned int nVModula, unsigned int nAdresaSpiskaBrojila );

    // Funkcija vraca adresu 'osnovnog modula' ili OSNOVNI_MODUL_NEDEFINISAN ako modul ne postoji.
    // Osnovni modul je prvi koji postoji ( koji je zalemljen ) na plocici rucnog terminala
    // racunajuci od modula sa adresom 0 u prvoj banci do modula sa adresom 7 u drugoj banci.
    // U osnovnom modulu se cuva spisak brojila i ostavle 'administrativne' informacije.
    unsigned int DajOsnovniModul( void );


    // Funkcija pakuje adresu podatka u EEPROM-u i 'bank/chip select' u string duzine 3 bajta
    // i to na sledeci nacin : 
    //  - bajt 0 sadrzi bitove 8-15 adrese podatka
    //  - bajt 1 sadrzi bitove 0-7 adrese podatka
    //  - bajt 2 sadrzi bitove 16-19 adrese podatka( visi nibl ) i bank/chip select( nizi nibl )
    KString KKontrolaEEPROMa::SpakujAdresu( unsigned int nAdresaPodatakaUEEPROMu, 
                                            unsigned int nAdresaEEPROMmodula );

private:
    // Posto je klasa singlton, konstruktor je privatni
    KKontrolaEEPROMa( void );

    // Opis memorije rucnog terminala
    TKKonfiguracijaEEPROMa  Konfiguracija;              // Adrese modula i indikacija da li 
                                                        // su moduli prisutni na plocici

    unsigned int            nVelicinaModula;            // U KB

    unsigned int            nPocetnaAdresaSpiskaBrojila;// Adresu u osnovnom modulu od koje 
                                                        // pocinje smestanje spiska brojila
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -