solarium/PROJECT/app/journal.h

187 lines
6.5 KiB
C

#ifndef _JOURNAL_H_
#define _JOURNAL_H_
#include "control.h"
#include "fiscal.h"
#define ERROR_RECORDS_NUM 256 // ÷èñëî çàïèñåé â æóðíàëå
#define EVENT_RECORDS_NUM 256 // ÷èñëî çàïèñåé â æóðíàëå
// ñòðóêòóðà çàïèñè ñèñòåìíîãî æóðíàëà
typedef struct{
CPU_INT32U time;
// òèï îøèáêè, ïîêà àêñèìóì 256 îøèáîê
CPU_INT32U error;
// íåò îøèáêè
#define ERROR_EMPTY 0
// îøèáêà ñâÿçè ñ êóïþðíèêîì
#define ERROR_VALIDATOR_CONN 1
// êðèòè÷åñêàÿ îøèáêà ðàáîòû êóïþðíèêà
#define ERROR_VALIDATOR_FAILURE 2
// íåêðèòè÷åñêèå îøèáêè êóïþðîïðèåìíèêà
// Âûáðîñ êóïþðû ïðè çàìèíå
#define ERROR_VALIDATOR_INSERTION 3
// Âûáðîñ êóïþðû ïî ìàã.äàò÷èêó
#define ERROR_VALIDATOR_MAGNETIC 4
// Âûáðîñ êóïþðû ïðè òðàíñïîðòèðîâêå
#define ERROR_VALIDATOR_CONVEYING 5
// Âûáðîñ êóïþðû ïî èäåíòèôèêàöèè
#define ERROR_VALIDATOR_IDENT 6
// Âûáðîñ êóïþðû ïî âåðèôèêàöèè
#define ERROR_VALIDATOR_VRFY 7
// Âûáðîñ êóïþðû ïî îïòè÷.äàò÷èêó
#define ERROR_VALIDATOR_OPT 8
// Âûáðîñ êóïþðû ïî çàïðåòó
#define ERROR_VALIDATOR_INHIBIT 9
// Âûáðîñ êóïþðû ïî åìêîñòíîìó äàò÷èêó
#define ERROR_VALIDATOR_CAP 10
// Âûáðîñ êóïþðû ïî äëèíå
#define ERROR_VALIDATOR_LNG 11
// Êàññåòà çàïîëíåíà
#define ERROR_STACKER_FULL 12
// Êàññåòà îòñóòñòâóåò
#define ERROR_STACKER_REMOVED 13
// Çàìèí â êóïþðîïðèåìíèêå
#define ERROR_BV_JAMMED 14
// Çàìèí â êàññåòå
#define ERROR_ST_JAMMED 15
// Ïîïûòêà îáìàíà
#define ERROR_CHEATED 16
// Îøèáêà ñòåêåðíîãî ìîòîðà
#define ERROR_FLR_STACKER 17
// Îøèáêà ñêîðîñòè òðàíñïîðò.ìîòîðà
#define ERROR_TR_SPEED 18
// Îøèáêà òðàíñïîðò.ìîòîðà
#define ERROR_FLR_TRANSPORT 19
// Îøèáêà ìåõàíèçìà âûðàâíèâàíèÿ
#define ERROR_FLR_ALIGNIN 20
// Êàññåòà îòñóòñòâóåò
#define ERROR_FLR_INIT_CAS 21
// Îøèáêà îïòèêè
#define ERROR_FLR_OPT 22
// Îøèáêà ìàã.äàò÷èêà
#define ERROR_FLR_MAG 23
// Îøèáêà åìêîñòíîãî äàò÷èêà
#define ERROR_FLR_CAP 24
// îøèáêà ñâÿçè ñ ìîäåìîì
#define ERROR_MODEM_CONN 25
// îøèáêà ñâÿçè ñ ôèñêàëüíèêîì
#define ERROR_FR_CONN 26
// ÂÑÅ ÎØÈÁÊÈ ÔÐ ÔÀÒÀËÜÍÛÅ
#define ERROR_FR 27
#define ERRORS_NUM (ERROR_FR+FR_ERROR_NUMBER)
}TErrorRecord;
// ñòðóêòóðà çàïèñè æóðíàëà ðàáî÷èõ ñîáûòèé
typedef struct{
// âðåìÿ ñîçäàíèÿ çàïèñè
CPU_INT32U time;
// äàííûå: äëÿ ïîëó÷åíèÿ äåíåã - íîìèíàë êóïþðû, äëÿ ñåàíñà - äëèòåëüíîñòü îïëà÷åííîãî âðåìåíè, ìèí.
CPU_INT32U data;
// òèï ñîáûòèÿ
CPU_INT08U event;
#define JOURNAL_EVENT_NO_EVENT 0 // íåò ñîáûòèÿ
#define JOURNAL_EVENT_MONEY_NOTE 1 // ñîáûòèå ïîëó÷åíèÿ êóïþðû
#define JOURNAL_EVENT_MONEY_COIN 2 // ñîáûòèå ïîëó÷åíèÿ ìîíåòû (êîë-âî ðóáëåé) (òåïåðü ýòî áàíêîâñêèé òåðìèíàë)
#define JOURNAL_EVENT_START_SESSION 3 // ñîáûòèå íà÷àëà ñåàíñà
#define JOURNAL_EVENT_END_SESSION 4 // ñîáûòèå êîíöà ñåàíñà
#define JOURNAL_EVENT_DEVICE_ON 6 // âêëþ÷åíèå óñòðîéñòâà
#define JOURNAL_EVENT_PRINT_BILL 7 // ïå÷àòü ÷åêà
#define JOURNAL_EVENT_PRINT_Z 8 // ïå÷àòü z-îò÷åòà
#define JOURNAL_EVENT_PRINT_X 9 // ïå÷àòü x-îò÷åòà
#define JOURNAL_EVENT_PRINT_BUF 10 // ïå÷àòü x-îò÷åòà
#define JOURNAL_EVENT_CHANGE_MODE 11 // ñìåíà ðåæèìà
#define JOURNAL_EVENT_INCASSATION 12 // èíêàññàöèÿ
#define JOURNAL_EVENT_PASS_FAIL 13 // íåâåðíûé ââîä ïàðîëÿ
#define JOURNAL_EVENT_EMAIL_OK 14 // ïðàâèëüíî îòïðàâëåí email
#define JOURNAL_EVENT_EMAIL_FAIL 15 // îøèáêà ïðè îòïðàâêå email
#define JOURNAL_EVENT_PRINT_BILL_ONLINE 16 // ïå÷àòü ÷åêà ñ äåíüãàìè ñ áàíêîâñêîãî òåðìèíàëà
#define JOURNAL_EVENTS_NUM 17 // ÷èñëî ñîáûòèé
// êàíàë
CPU_INT08U channel;
}TEventRecord;
// ñòðóêòóðà äëÿ õðàíåíèÿ ñ÷åò÷èêîâ
typedef struct{
// ÷èñëî çàïóñêîâ ïîêàíàëüíî
CPU_INT32U CounterChannelRun[CHANNELS_NUM];
// Ñóììàðíîå âðåìÿ ðàáîòû ïîêàíàëüíî, ñåê.
CPU_INT32U CounterChannelTime[CHANNELS_NUM];
// Ñóììà äåíåã ïîêàíàëüíî
CPU_INT32U CounterChannelMoney[CHANNELS_NUM];
// Ñóììà áåçíàëè÷íûõ äåíåã ïîêàíàëüíî
CPU_INT32U CounterChannelBankMoney[CHANNELS_NUM];
// îáùåå ÷èñëî çàïóñêîâ
CPU_INT32U CounterRun;
// îáùåå Ñóììàðíîå âðåìÿ ðàáîòû, ñåê.
CPU_INT32U CounterTime;
// îáùåå Ñóììà äåíåã
CPU_INT32U CounterMoney;
// îáùåå Ñóììà äåíåã by card - áåçíàëè÷íûõ
CPU_INT32U CounterBankMoney;
// ñ÷åò÷èêè êóïþð â êóïþðíèêå ïî íîìèíàëàì
CPU_INT32U CounterBillNominals[24];
// îáùèé ñ÷åò÷èê êóïþð (âñåãî â êàññåòå)
CPU_INT32U BillsCount;
}TCounters;
// ñòðóêòóðà äëÿ õðàíåíèÿ äëèííûõ ñ÷åò÷èêîâ
// âåäåì ïîêà òîëüêî ýòè òðè äëèííûõ
typedef struct{
// ÷èñëî çàïóñêîâ ïîêàíàëüíî
CPU_INT32U CounterChannelRunLong[CHANNELS_NUM];
// Ñóììàðíîå âðåìÿ ðàáîòû ïîêàíàëüíî, ñåê.
CPU_INT32U CounterChannelTimeLong[CHANNELS_NUM];
// Ñóììà äåíåã ïîêàíàëüíî
CPU_INT32U CounterChannelMoneyLong[CHANNELS_NUM];
// Ñóììà áåçíàëè÷íûõ äåíåã ïîêàíàëüíî
CPU_INT32U CounterChannelBankMoneyLong[CHANNELS_NUM];
CPU_INT32U CounterRunLong;
CPU_INT32U CounterTimeLong;
CPU_INT32U CounterMoneyLong;
CPU_INT16U crc;
}TCountersLong;
extern CPU_INT32U GetShortMoney();
extern void IncBillnomCounter(CPU_INT32U index);
extern void CheckLongCounters(void);
extern void SaveErrorRecord(CPU_INT32U error);
extern void SaveEventRecord(CPU_INT08U channel, CPU_INT08U event, CPU_INT32U data);
extern void SetErrorFlag(CPU_INT08U error);
extern void ClrErrorFlag(CPU_INT08U error);
extern int TstErrorFlag(CPU_INT08U error);
extern int TstCriticalErrors(void);
extern void ClearErrorJournal(void);
extern void ClearEventJournal(void);
extern void GetEventStr(char* str, char event);
extern int GetEventRecord(TEventRecord* record, CPU_INT32U index);
extern int GetErrorRecord(TErrorRecord* record, CPU_INT32U index);
extern void IncCounter(CPU_INT08U ch, CPU_INT32U time, CPU_INT32U money, CPU_INT32U moneyBank);
extern void ClearCounters(void);
extern void ErrorServer(void);
extern int TstCriticalValidatorErrors(void);
extern void ClrValidatorErrors(void);
extern void PrintEventJournalRecordEng(char* str, TEventRecord *record);
extern void GetEventStrEng(char* str, char event);
extern void ClearBillnomCounter(void);
#endif //#ifndef _JOURNAL_H_