// serial.h : header file
//

/////////////////////////////////////////////////////////////////////////////////////////////////
// DATOVE STRUKTURY
typedef struct TPCOM		// struktura komunikacniho portu
{
	char port;
	BYTE panel;
	bool OnCheck;
}TPCOM;

typedef struct TPDATA		// struktura odesialnych / prijimanych dat
{
	int	adr;
	int	size;
	BYTE *data;
}TPDATA;

//////////////////////////////////////////////////////////////////////////////////////////////////
// KOMUNIKACNI FUNKCE
extern "C" __declspec(EXT_DLL) bool SetCOM(char port, int BAUD, BYTE StopBits);
extern "C" __declspec(EXT_DLL) bool SetTimeOut( char port, DWORD ReadTotalTimeoutMultiplier );
extern "C" __declspec(EXT_DLL) void DoneCOM(char port);

// TCP/IP
extern "C" __declspec(EXT_DLL) bool IPConnect( LPCTSTR strServerIp, long lPort, int timeout);
extern "C" __declspec(EXT_DLL) void IPDisConnected( );
extern "C" __declspec(EXT_DLL) bool IPIsConnected( );

// GSM modem funkce
extern "C" __declspec(EXT_DLL) BYTE ATCommandTransmit( char port, char *data, int count, bool enter );
extern "C" __declspec(EXT_DLL) BYTE ATCommand( char port, char *data, int count );
extern "C" __declspec(EXT_DLL) BYTE ATCommandReceive( char port, char *data );

extern "C" __declspec(EXT_DLL) BYTE TransmitData( BYTE command, TPCOM *tpcom, TPDATA *tpdata );
extern "C" __declspec(EXT_DLL) BYTE ReceiveData( BYTE command, TPCOM *tpcom, TPDATA *tpdata );
extern "C" __declspec(EXT_DLL) BYTE ResetPanelu( char port, BYTE panel );

/////////////////////////////////////////////////////////////////////////////////////////////////
// DEFINICE KONSTANT
// zapis dat do panelu
#define MSG_WRITE_EEPROM	0x40		/* zapis do pameti EEprom */
#define MSG_SET_SLINE		0x61		/* nastaveni casu statickeho prepinani */
#define MSG_WRITE_DIRECTP	0x62		/* zapis programu do externi ram */
#define MSG_SET_RTC			0x80
#define MSG_SET_TIMERS		0x81		/* nastaveni casovace */
#define MSG_SET_OVERTIME	0xE2		/* precteni reristru overtime */

// cteni dat z panelu
#define MSG_GET_SLINE		0x71		/* nacteni casu statickeho prepinani */
#define MSG_GET_RTC			0x90		/* nastavení realného času */
#define MSG_GET_TIMERS		0x91		/* precteni nastaveni casovace */
#define MSG_GET_LIGHT		0xD0		/* vraci aktuelni jas panelu */
#define MSG_GET_NAME_FONT	0xE1		/* zjisteni jmena fontu */
#define MSG_GET_OVERTIME	0xF2		/* nacteni registru overtime */

// ridici prikazy panelu
#define MSG_SET_CONTROLP	0xA0		/* prikaz rizeni programu v panelu */
#define MSG_GET_CONTROLP	0xB0		/* vraci cislo spsteneho programu */
#define MSG_SET_LIGHT		0xC0		/* nastaveni intenzity svitu */
#define MSG_GET_VERSION		0xE0		/* verze programu */
#define MSG_SET_PASWORD		0xE5		/* odeslani hesla do panelu */
#define MSG_SET_EEPROM		0xF4		/* nastaveni velikosti EEPROM */
#define MSG_COUNT_PSW		0xF5		/* vraci pocet dnu do vyprseni skusebni doby */
#define MSG_GET_ANALOG		0xE7		/* hodnota analogovych vstupu */
#define MSG_SET_ANALOG		0xF7
