📄 hardverrt.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 + -