7552 lines
344 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <includes.h>
#include "data.h"
#include "datadesc.h"
#include "menu.h"
#include "menudesc.h"
#include "fram_map.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include "control.h"
#include "fiscal.h"
#include "time.h"
#include "CRC16.h"
#include "modem_task.h"
#include "modem.h"
#include "keyboard.h"
#include "fram.h"
#include "host_app.h"
#include "music_tsk.h"
#include "score_tsk.h"
#include "mode.h"
#include "ftp_app.h"
extern CPU_INT32U modem_status;
extern CPU_INT08U start_pass_ok;
extern int player_conn;
extern void PlayMusicFile(int file_index);
/*************************************
Èíäåêñ êàíàëà
*************************************/
CPU_INT32U ChannelIndex=0;
TRangeValueULONG const ChannelIndexRange = {0, CHANNELS_NUM-1};
#if defined(BOARD_SOLARIUM_VLAD)
CPU_INT08U const ChannelIndexName[] = " ÑÎËßÐÈé";
#else
CPU_INT08U const ChannelIndexName[] = " ÏÎÑÒ";
#endif
CPU_INT08U const* ChannelItems[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
void OnChangeChannelIndex()
{
#if defined(BOARD_CENTRAL_CARWASH)
PostUserEvent(EVENT_REREAD_SIGNAL_LEVEL);
#endif
}
TDataDescStruct const ChannelIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&ChannelIndex, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ChannelIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeChannelIndex, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ChannelIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ChannelItems, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Èíäåêñ êàíàëà â ìåíþ êàíàëüíîé ñòàòèñòèè
*************************************/
CPU_INT08U const ChannelStIndexName[] = "ÊÎÐ.Ñ×.ÏÎÑÒ";
TDataDescStruct const ChannelStIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&ChannelIndex, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ChannelIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ChannelStIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ChannelItems, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Èíäåêñ êàíàëà â ìåíþ êàíàëüíîé ñòàòèñòèè
*************************************/
CPU_INT08U const ChannelStLongIndexName[] = "ÄË.Ñ×.ÊÀÍÀË";
TDataDescStruct const ChannelStLongIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&ChannelIndex, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ChannelIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ChannelStLongIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ChannelItems, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Ïîñëåäíåå âðåìÿ îòïðàâêè email
*************************************/
extern TRangeValueULONG const WorkTimeRange;
TDataDescStruct const LastEmailSendTime = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, LastEmailTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&WorkTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Âêëþ÷åíèå êàíàëà
*************************************/
TRangeValueULONG const EnableChannelRange = {0, 1};
CPU_INT08U const EnableChannelName[] = "Âêëþ÷èòü";
CPU_INT08U const EnableChannelList_str0[] = "íåò";
CPU_INT08U const EnableChannelList_str1[] = "äà";
CPU_INT08U const *EnableChannelList[] = {EnableChannelList_str0, EnableChannelList_str1};
TDataDescStruct const EnableChannelDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.Enable), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableChannelRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableChannelName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableChannelList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
IP-àäðåñ ïîñòà
*************************************/
CPU_INT08U const PostIpAddrName[] = "IP";
TDataDescStruct const PostIpAddrDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_IP_ADDR, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.post_ip), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostIpAddrName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0xC0A80065
};
/*************************************
Ñòàòóñ ñâÿçè ñ ïîñòîì
*************************************/
CPU_INT08U const PostIpStatusName[] = "Ñòàòóñ";
TRangeValueULONG const PostIpStatusNameRange = {0, 1};
CPU_INT08U const PostIpStatusNameList_str0[] = "îôôëàéí";
CPU_INT08U const PostIpStatusNameList_str1[] = "îíëàéí";
CPU_INT08U const *PostIpStatusNameList[] = {PostIpStatusNameList_str0, PostIpStatusNameList_str1};
CPU_INT32U PostStatus[CHANNELS_NUM];
TDataDescStruct const PostIpStatusDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&PostStatus, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PostIpStatusNameRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostIpStatusName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
(void*)&PostIpStatusNameList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
IP-àäðåñ áàíêîâñêîãî òåðìèíàëà
*************************************/
CPU_INT08U const TerminalIpAddrName[] = "IP";
TDataDescStruct const TerminalIpAddrDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_IP_ADDR, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.terminal_ip), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
TerminalIpAddrName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0xC0A8006E
};
/*************************************
Èñïîëüçîâàòü çàïðåò âûáîðà ïîñòà
*************************************/
TRangeValueULONG const SelectProtectNameRange = {0, 1};
CPU_INT08U const SelectProtectNameName[] = "Çàïðåò âûáîðà";
CPU_INT08U const SelectProtectNameList_str0[] = "íåò";
CPU_INT08U const SelectProtectNameList_str1[] = "äà";
CPU_INT08U const *SelectProtectNameList[] = {SelectProtectNameList_str0, SelectProtectNameList_str1};
TDataDescStruct const SelectProtectDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.select_protect), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SelectProtectNameRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SelectProtectNameName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SelectProtectNameList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
};
/*************************************
Öåíà èìïóëüñà êîíòðîëëåðà ÏÎÑÒÀ
*************************************/
TRangeValueULONG const PostImpCostRange = {1, 9999};
CPU_INT08U const PostImpCostName[] = "Ðóá./èìï.";
TDataDescStruct const PostImpCostDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.imp_cost), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PostImpCostRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostImpCostName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
10 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Äëèíà èìïóëüñà êîíòðîëëåðà ÏÎÑÒÀ
*************************************/
TRangeValueULONG const PostImpLenRange = {1, 9999};
CPU_INT08U const PostImpLenName[] = "Äë.èìï.,ìñ";
TDataDescStruct const PostLenCostDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.imp_len), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PostImpLenRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostImpLenName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
50 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Äëèíà ïàóçû èìïóëüñà êîíòðîëëåðà ÏÎÑÒÀ
*************************************/
TRangeValueULONG const PostImpPauseLenRange = {0, 9999};
CPU_INT08U const PostImpPauseLenName[] = "Äë.ïàóçû,ìñ";
TDataDescStruct const PostPauseLenCostDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.pause_len), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PostImpPauseLenRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostImpPauseLenName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
150 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Ïàóçà äî âûäà÷è èìïóëüñîâ êîíòðîëëåðà ÏÎÑÒÀ
*************************************/
TRangeValueULONG const PostPauseRange = {0, 60};
CPU_INT08U const PostPauseName[] = "Ïàóçà";
TDataDescStruct const PostPauseDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.pause), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PostPauseRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostPauseName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Öåíà ìèíóòû
*************************************/
TRangeValueULONG const PostMinutePriceRange = {1, 999};
CPU_INT08U const PostMinutePriceName[] = "Ñòîèì.ìèí.";
TDataDescStruct const PostMinutePriceDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.minute_cost), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PostMinutePriceRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostMinutePriceName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
20 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Íàçâàíèå êàíàëà
*************************************/
TRangeValueULONG const NameChannelRange = {0, 2};
CPU_INT08U const NameChannelName[] = "Íàçâàíèå";
CPU_INT08U const NameChannelList_str0[] = "#";
CPU_INT08U const NameChannelList_str1[] = "Ñîëÿðèé";
CPU_INT08U const NameChannelList_str2[] = "Óñòðîéñòâî";
CPU_INT08U const *NameChannelList[] = {NameChannelList_str0, NameChannelList_str1, NameChannelList_str2};
TDataDescStruct const NameChannelDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.Name), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&NameChannelRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NameChannelName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NameChannelList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Íàçâàíèå êíîïêè ÑÒÀÐÒ (ÑÒÀÐÒ èëè ÏÓÑÊ)
*************************************/
TRangeValueULONG const StartButtonNameRange = {0, 1};
CPU_INT08U const StartButtonNameName[] = "Êíîïêà";
CPU_INT08U const StartButtonNameList_str0[] = "ÑÒÀÐÒ";
CPU_INT08U const StartButtonNameList_str1[] = "ÏÓÑÊ";
CPU_INT08U const *StartButtonNameList[] = {StartButtonNameList_str0, StartButtonNameList_str1};
TDataDescStruct const StartButtonNameDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, StartButtonName), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&StartButtonNameRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
StartButtonNameName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
StartButtonNameList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Âêëþ÷åíèå êóïþðîïðèåìíèêà
*************************************/
TRangeValueULONG const EnableValidatorRange = {0, 1};
CPU_INT08U const EnableValidatorName[] = "Êóïþðîïð-ê";
CPU_INT08U const OnOffList_str0[] = "âûêë.";
CPU_INT08U const OnOffList_str1[] = "âêë.";
CPU_INT08U const *EnableValidatorList[] = {OnOffList_str0, OnOffList_str1};
TDataDescStruct const EnableValidatorDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnableValidator), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableValidatorRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableValidatorName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableValidatorList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Âêëþ÷åíèå ìîäåìà
*************************************/
TRangeValueULONG const EnableModemRange = {0, 1};
CPU_INT08U const EnableModemName[] = "Ìîäåì";
CPU_INT08U const *EnableModemList[] = {OnOffList_str0, OnOffList_str1};
void OnchangeEnableModem(void)
{
CPU_INT32U en = 0;
GetData(&EnableModemDesc, &en, 0, DATA_FLAG_SYSTEM_INDEX);
if (en)
{
if (!IsModemConn())
{
modem_status = 2;
}
else if (!IsModemConf())
{
modem_status = 1;
}
PostModemTask(MODEM_TASK_RECONNECT);
}
}
TDataDescStruct const EnableModemDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnableModem), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableModemRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnchangeEnableModem, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableModemName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableModemList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Âêëþ÷èòü îïîâåùåíèå îá îøèáêàõ ïî e-mail
*************************************/
TRangeValueULONG const EnableEmailErrorSendRange = {0, 1};
CPU_INT08U const EnableEmailErrorSendName[] = "Îïîâ.îá îø.";
CPU_INT08U const *EnableEmailErrorSendList[] = {OnOffList_str0, OnOffList_str1};
TDataDescStruct const EnableEmailErrorSendDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnableEmailErrorSend), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableEmailErrorSendRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableEmailErrorSendName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableEmailErrorSendList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Ñòàòóñ ïîäêëþ÷åíèÿ ìîäåìà
*************************************/
CPU_INT08U const ModemStatusName[] = "Ñòàòóñ";
CPU_INT08U const ModemStatusList_str0[] = "OK";
CPU_INT08U const ModemStatusList_str1[] = "Îø.êîíô.";
CPU_INT08U const ModemStatusList_str2[] = "Íåò ñâÿçè";
CPU_INT08U const *ModemStatusList[] = {ModemStatusList_str0, ModemStatusList_str1, ModemStatusList_str2};
TDataDescStruct const ModemStatusDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&modem_status, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ModemStatusName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ModemStatusList,// óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Âêëþ÷èòü îòïðàâêó æóðíàëîâ ïî e-mail
*************************************/
CPU_INT08U const EnableEmailJournalSendName[] = "Îòïð.æóðíàëû";
TDataDescStruct const EnableEmailJournalSendDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnableEmailJournalSend), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableEmailErrorSendRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableEmailJournalSendName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableEmailErrorSendList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Î÷èùàòü æóðíàë ïîñëå îòïðàâêè ïî e-mail ÍÅ ÈÑÏÎËÜÇÓÅÒÑß
*************************************/
CPU_INT08U const ClearJournalAfterSendName[] = "Î÷.æóðíàëû";
TDataDescStruct const ClearJournalAfterSendDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.ClearJournalAfterSend), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableEmailErrorSendRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ClearJournalAfterSendName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableEmailErrorSendList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Âðåìÿ îòïðàâêè ñòàòèñòèêè, ÷àñ : ìèí
*************************************/
TRangeValueULONG const StatSendHourRange = {0, 60*24 - 1};
CPU_INT08U const StatSendHourName[] = "Tîòïð.";
TDataDescStruct const StatSendHourMinDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_HOUR_MIN, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.StatSendHourMin), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&StatSendHourRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
StatSendHourName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
9
};
/*************************************
Âêëþ÷åíèå ìîíåòîïðèåìíèêà
*************************************/
TRangeValueULONG const EnableCoinRange = {0, 1};
CPU_INT08U const EnableCoinName[] = "Ìîíåòîïð-ê";
CPU_INT08U const *EnableCoinList[] = {OnOffList_str0, OnOffList_str1};
void OnchangeEnableCoin(void)
{
}
TDataDescStruct const EnableCoinDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnableCoinAcceptor), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableCoinRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnchangeEnableCoin, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableCoinName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableCoinList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Âêëþ÷åíèå àáîíåìåíòà
*************************************/
TRangeValueULONG const EnableAbonementRange = {0, 1};
CPU_INT08U const EnableAbonementName[] = "Àáîíåìåíò";
CPU_INT08U const *EnableAbonementList[] = {OnOffList_str0, OnOffList_str1};
void OnchangeEnableAbonement(void)
{
}
TDataDescStruct const EnableAbonementDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnableAbonementAcceptor), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableAbonementRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnchangeEnableAbonement, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableAbonementName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableAbonementList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Öåíà èìïóëüñà ìîíåòîïðèåìíèêà
*************************************/
TRangeValueULONG const CoinPerPulseRange = {1, 9999};
CPU_INT08U const CoinPerPulseName[] = "Ðóá./èìï.";
TDataDescStruct const CoinPerPulseDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.CoinPerPulse), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&CoinPerPulseRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CoinPerPulseName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
10 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Äëèíà èìïóëüñà ìîíåòîïðèåìíèêà
*************************************/
TRangeValueULONG const CoinPulseLenRange = {10, 1000};
CPU_INT08U const CoinPulseLenName[] = "Äëèíà èìï.,ìñ";
TDataDescStruct const CoinPulseLenDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CoinPulseLen), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&CoinPulseLenRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CoinPulseLenName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
50 // çíà÷åíèå ïî óìîë÷àíèþ
};
char const CoinPulseLenDescId[] = "CoinPulseLenDesc";
/*************************************
Äëèíà ïàóçû ìîíåòîïðèåìíèêà
*************************************/
TRangeValueULONG const CoinPauseLenRange = {5, 1000};
CPU_INT08U const CoinPauseLenName[] = "Äëèíà ïàóçû,ìñ";
TDataDescStruct const CoinPauseLenDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CoinPauseLen), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&CoinPauseLenRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CoinPauseLenName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
20 // çíà÷åíèå ïî óìîë÷àíèþ
};
char const CoinPauseLenDescId[] = "CoinPauseLenDesc";
/*************************************
Äîïóñê äëèíû èìïóëüñà ìîíåòîïðèåìíèêà
*************************************/
TRangeValueULONG const CoinPulseDeltaRange = {10, 1000};
CPU_INT08U const CoinPulseDeltaName[] = "Äîïóñê,ìñ";
TDataDescStruct const CoinPulseDeltaDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CoinPulseDelta), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&CoinPulseDeltaRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CoinPulseDeltaName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
20 // çíà÷åíèå ïî óìîë÷àíèþ
};
char const CoinPulseDeltaDescId[] = "CoinPulseDeltaDesc";
/*************************************
Âêëþ÷åíèå ÔÐ
*************************************/
TRangeValueULONG const EnableFiscalRange = {0, 1};
CPU_INT08U const EnableFiscalName[] = "ÔÐ";
CPU_INT08U const *EnableFiscalList[] = {OnOffList_str0, OnOffList_str1};
TDataDescStruct const EnableFiscalDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnableFiscal), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableFiscalRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableFiscalName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableFiscalList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
};
/*************************************
Èãíîð îøèáîê ÔÐ
*************************************/
TRangeValueULONG const DisableFiscalErrorsRange = {0, 1};
CPU_INT08U const DisableFiscalErrorsName[] = "Èãíîðèð.îø.ÔÐ";
CPU_INT08U const DisableFiscalErrorsList_str0[] = "íåò";
CPU_INT08U const DisableFiscalErrorsList_str1[] = "äà";
CPU_INT08U const *DisableFiscalErrorsList[] = {DisableFiscalErrorsList_str0, DisableFiscalErrorsList_str1};
TDataDescStruct const DisableFiscalErrorsDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.DisableFiscalErrors), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DisableFiscalErrorsRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DisableFiscalErrorsName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DisableFiscalErrorsList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Âðåìÿ èäóùåãî ñåàíñà
*************************************/
CPU_INT32U WorkTime[CHANNELS_NUM];
TRangeValueULONG const WorkTimeRange = {0, 0xffffffffL};
CPU_INT08U const WorkTimeName[] = "Âð.ðàáîòû";
TDataDescStruct const WorkTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&WorkTime, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&WorkTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
WorkTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Òàéì-àóò ïåðåä çàïóñêîì ïîêàíàëüíî
*************************************/
TRangeValueULONG const TimeOutBeforeRange = {0, 999};
CPU_INT08U const TimeOutBeforeName[] = "Ïàóçà äî,ñåê.";
TDataDescStruct const TimeOutBeforeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.TimeOutBefore), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&TimeOutBeforeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
TimeOutBeforeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
30
};
/*************************************
Òàéì-àóò ïîñëå ðàáîòû ïîêàíàëüíî
*************************************/
TRangeValueULONG const TimeOutAfterRange = {0, 99};
CPU_INT08U const TimeOutAfterName[] = "Ïàóçà ïîñëå,ìèí.";
TDataDescStruct const TimeOutAfterDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.TimeOutAfter), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&TimeOutAfterRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
TimeOutAfterName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
3
};
/*************************************
Ìàêñèìàëüíîå âðåìÿ ïîêàíàëüíî, ìèí.
*************************************/
TRangeValueULONG const MaxWorkTimeRange = {1, 999};
CPU_INT08U const MaxWorkTimeName[] = "Tmax,ìèí.";
TDataDescStruct const MaxWorkTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.MaxWorkTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&MaxWorkTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
MaxWorkTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
20
};
/*************************************
Ìèíèìàëüíîå âðåìÿ ïîêàíàëüíî, ìèí.
*************************************/
TRangeValueULONG const MinWorkTimeRange = {1, 999};
CPU_INT08U const MinWorkTimeName[] = "Tmin,ìèí.";
TDataDescStruct const MinWorkTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.MinWorkTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&MinWorkTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
MinWorkTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
5
};
/*************************************
Íàñòðîéêà âûõîäíûõ
*************************************/
TRangeValueULONG const WeekEndRange = {0, 4};
CPU_INT08U const WeekEndName[] = "Âûõîäíûå:";
CPU_INT08U const WeekEndList_str0[] = "íåò";
CPU_INT08U const WeekEndList_str1[] = "ïò-âñ";
CPU_INT08U const WeekEndList_str2[] = "ñá-âñ";
CPU_INT08U const WeekEndList_str3[] = "ïò-ñá";
CPU_INT08U const WeekEndList_str4[] = "ïò-ïí";
CPU_INT08U const *WeekEndList[] = {WeekEndList_str0, WeekEndList_str1, WeekEndList_str2, WeekEndList_str3, WeekEndList_str4, NULL};
TDataDescStruct const WeekEndDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.WeekEnd), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&WeekEndRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
WeekEndName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
WeekEndList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Íàñòðîéêà îòëîæåííîãî ñòàðòà
*************************************/
TRangeValueULONG const DeferredStartRange = {0, 1};
CPU_INT08U const DeferredStartName[] = "Îòëîæ.ñòàðò";
CPU_INT08U const DeferredStart_str0[] = "íåò";
CPU_INT08U const DeferredStart_str1[] = "äà";
CPU_INT08U const *DeferredStartList[] = {DeferredStart_str0, DeferredStart_str1, NULL};
TDataDescStruct const DeferredStartDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DefferedStartEnabled), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DeferredStartRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DeferredStartName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DeferredStartList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Èíäåêñ ïðè íàñòðîéêå öåí
*************************************/
TRangeValueULONG const PeriodIndexRange = {0, 0xffffffff/*CHANNELS_NUM*PRICE_PERIODS_NUM-1*/};
CPU_INT08U const PeriodIndexName[] = "";
CPU_INT08U const *PeriodWeekendIndexList[] = {
"ÊÀÍ.1 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.1 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.1 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.1 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.2 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.2 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.2 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.2 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.3 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.3 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.3 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.3 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.4 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.4 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.4 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.4 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.5 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.5 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.5 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.5 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.6 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.6 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.6 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.6 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.7 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.7 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.7 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.7 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.8 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.8 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.8 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.8 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.9 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.9 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.9 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.9 ÏÅÐ.4 ÂÛÕ.",
"ÊÀÍ.10 ÏÅÐ.1 ÂÛÕ.",
"ÊÀÍ.10 ÏÅÐ.2 ÂÛÕ.",
"ÊÀÍ.10 ÏÅÐ.3 ÂÛÕ.",
"ÊÀÍ.10 ÏÅÐ.4 ÂÛÕ.",
NULL};
CPU_INT32U PeriodIndex = 0;
void OnChangePeriodIndex(void)
{
if ((PeriodIndex == 0xffffffff) || (PeriodIndex < ChannelIndex*PRICE_PERIODS_NUM)) PeriodIndex = (ChannelIndex+1)*PRICE_PERIODS_NUM-1;
else if (PeriodIndex >= (ChannelIndex+1)*PRICE_PERIODS_NUM) PeriodIndex = (ChannelIndex)*PRICE_PERIODS_NUM;
}
TDataDescStruct const PeriodWeekendIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&PeriodIndex, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PeriodIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePeriodIndex, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PeriodIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
PeriodWeekendIndexList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
CPU_INT08U const *PeriodWeekdaysIndexList[] = {
"ÊÀÍ.1 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.1 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.1 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.1 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.2 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.2 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.2 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.2 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.3 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.3 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.3 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.3 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.4 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.4 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.4 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.4 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.5 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.5 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.5 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.5 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.6 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.6 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.6 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.6 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.7 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.7 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.7 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.7 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.8 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.8 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.8 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.8 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.9 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.9 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.9 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.9 ÏÅÐ.4 ÁÓÄ.",
"ÊÀÍ.10 ÏÅÐ.1 ÁÓÄ.",
"ÊÀÍ.10 ÏÅÐ.2 ÁÓÄ.",
"ÊÀÍ.10 ÏÅÐ.3 ÁÓÄ.",
"ÊÀÍ.10 ÏÅÐ.4 ÁÓÄ.",
NULL};
TDataDescStruct const PeriodWeekdaysIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&PeriodIndex, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PeriodIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePeriodIndex, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PeriodIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
PeriodWeekdaysIndexList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Öåíà ïî âûõîäíûì
*************************************/
TRangeValueULONG const PriceWeekendRange = {1, MAX_PRICE};
CPU_INT08U const PriceWeekendName[] = "Öåíà,ðóá.";
TDataDescStruct const PriceWeekendDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM*PRICE_PERIODS_NUM, // ðàçìåð ìàññèâà
&PeriodWeekendIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.Price_Weekend), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PriceWeekendRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PriceWeekendName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
15
};
/*************************************
Öåíà ïî áóäíÿì
*************************************/
TRangeValueULONG const PriceWeekdaysRange = {1, MAX_PRICE};
CPU_INT08U const PriceWeekdaysName[] = "Öåíà,ðóá.";
TDataDescStruct const PriceWeekdaysDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM*PRICE_PERIODS_NUM, // ðàçìåð ìàññèâà
&PeriodWeekdaysIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.Price_Weekdays), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PriceWeekdaysRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PriceWeekdaysName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
15
};
/*************************************
Âðåìÿ çà öåíó ïî âûõîäíûì
*************************************/
TRangeValueULONG const PriceTimeWeekendRange = {1, 999};
CPU_INT08U const PriceTimeWeekendName[] = "Çà âðåìÿ,ìèí.";
TDataDescStruct const PriceTimeWeekendDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM*PRICE_PERIODS_NUM, // ðàçìåð ìàññèâà
&PeriodWeekendIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.PriceTime_Weekend), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PriceTimeWeekendRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PriceTimeWeekendName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
};
/*************************************
Âðåìÿ çà öåíó ïî áóäíÿì
*************************************/
TRangeValueULONG const PriceTimeWeekdaysRange = {1, 999};
CPU_INT08U const PriceTimeWeekdaysName[] = "Çà âðåìÿ,ìèí.";
TDataDescStruct const PriceTimeWeekdaysDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM*PRICE_PERIODS_NUM, // ðàçìåð ìàññèâà
&PeriodWeekdaysIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.PriceTime_Weekdays), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PriceTimeWeekdaysRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PriceTimeWeekdaysName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
};
/*************************************
Íà÷àëî ïåðèîäîâ ïî áóäíÿì
*************************************/
TRangeValueULONG const T_Start_WeekdaysRange = {0, 24};
CPU_INT08U const T_Start_WeekdaysName[] = "Íà÷àëî,÷";
TDataDescStruct const T_Start_WeekdaysDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM*PRICE_PERIODS_NUM, // ðàçìåð ìàññèâà
&PeriodWeekdaysIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.T_Start_Weekdays), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&T_Start_WeekdaysRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
T_Start_WeekdaysName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êîíåö ïåðèîäîâ ïî áóäíÿì
*************************************/
TRangeValueULONG const T_End_WeekdaysRange = {0, 24};
CPU_INT08U const T_End_WeekdaysName[] = "Êîíåö,÷";
TDataDescStruct const T_End_WeekdaysDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM*PRICE_PERIODS_NUM, // ðàçìåð ìàññèâà
&PeriodWeekdaysIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.T_End_Weekdays), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&T_End_WeekdaysRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
T_End_WeekdaysName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
24
};
/*************************************
Íà÷àëî ïåðèîäîâ ïî âûõîäíûì
*************************************/
TRangeValueULONG const T_Start_WeekendRange = {0, 24};
CPU_INT08U const T_Start_WeekendName[] = "Íà÷àëî,÷";
TDataDescStruct const T_Start_WeekendDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM*PRICE_PERIODS_NUM, // ðàçìåð ìàññèâà
&PeriodWeekendIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.T_Start_Weekend), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&T_Start_WeekendRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
T_Start_WeekendName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êîíåö ïåðèîäîâ ïî âûõîäíûì
*************************************/
TRangeValueULONG const T_End_WeekendRange = {0, 24};
CPU_INT08U const T_End_WeekendName[] = "Êîíåö,÷";
TDataDescStruct const T_End_WeekendDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM*PRICE_PERIODS_NUM, // ðàçìåð ìàññèâà
&PeriodWeekendIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.T_End_Weekend), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&T_End_WeekendRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
T_End_WeekendName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
24
};
/*************************************
Êîìàíäà èíèöèàëèçàöèè ïî óìîë÷àíèþ
*************************************/
CPU_INT32U InitByDefault = 0;
TRangeValueULONG const InitByDefaultRange = {0, 1};
CPU_INT08U const InitByDefaultName[] = "Èíèöèàëèçàöèÿ";
CPU_INT08U const InitByDefaultList_str0[] = "íåò";
CPU_INT08U const InitByDefaultList_str1[] = "äà";
CPU_INT08U const *InitByDefaultList[] = {InitByDefaultList_str0, InitByDefaultList_str1};
extern void ClearTerminalInfo();
void ClearPrecheckText()
{
#if defined(BOARD_CENTRAL_CARWASH)
CPU_INT16U crc_calc;
SetArrayFram((unsigned short)offsetof(TFramMap, precheck_text), PRETEXT_LINE_COUNT * 40, 0x00);
crc_calc = crc16_fram((unsigned short)offsetof(TFramMap, precheck_text), PRETEXT_LINE_COUNT * 40);
WriteArrayFram((unsigned short)offsetof(TFramMap, precheck_crc), sizeof(CPU_INT16U), (unsigned char *)&crc_calc);
#endif
}
void InitPrecheckText()
{
#if defined(BOARD_CENTRAL_CARWASH)
CPU_INT16U crc_calc, crc_read;
crc_calc = crc16_fram((unsigned short)offsetof(TFramMap, precheck_text), PRETEXT_LINE_COUNT * 40);
ReadArrayFram((unsigned short)offsetof(TFramMap, precheck_crc), sizeof(CPU_INT16U), (unsigned char *)&crc_read);
if (crc_calc != crc_read)
{
ClearPrecheckText();
}
#endif
}
int ReadPrecheckText(char *buf, int i)
{
#if defined(BOARD_CENTRAL_CARWASH)
ReadArrayFram((unsigned short)offsetof(TFramMap, precheck_text) + 40 * i, 40, (unsigned char *)buf);
buf[40] = 0;
return strlen(buf);
#else
return 0;
#endif
}
void OnChangeInitByDefault(void)
{
int i = 0;
if (InitByDefault == 0) return;
while (AllDataArray[i].ptr != NULL)
{
if (AllDataArray[i].ptr != &SystemTimeEditDesc)
InitDescByDefault(AllDataArray[i].ptr);
i++;
}
CPU_INT32U ip;
ip = 0xC0A80065;
SetData(&PostIpAddrDesc, &ip, 0, DATA_FLAG_DIRECT_INDEX);
ip = 0xC0A80066;
SetData(&PostIpAddrDesc, &ip, 1, DATA_FLAG_DIRECT_INDEX);
ip = 0xC0A80067;
SetData(&PostIpAddrDesc, &ip, 2, DATA_FLAG_DIRECT_INDEX);
ip = 0xC0A80068;
SetData(&PostIpAddrDesc, &ip, 3, DATA_FLAG_DIRECT_INDEX);
ip = 0xC0A80069;
SetData(&PostIpAddrDesc, &ip, 4, DATA_FLAG_DIRECT_INDEX);
ip = 0xC0A8006A;
SetData(&PostIpAddrDesc, &ip, 5, DATA_FLAG_DIRECT_INDEX);
ip = 0xC0A8006B;
SetData(&PostIpAddrDesc, &ip, 6, DATA_FLAG_DIRECT_INDEX);
ip = 0xC0A8006C;
SetData(&PostIpAddrDesc, &ip, 7, DATA_FLAG_DIRECT_INDEX);
ClearTerminalInfo();
CPU_INT32U money;
money = 50;
SetData(&SelectedMoneyDesc, &money, 0, DATA_FLAG_DIRECT_INDEX);
money = 100;
SetData(&SelectedMoneyDesc, &money, 1, DATA_FLAG_DIRECT_INDEX);
money = 150;
SetData(&SelectedMoneyDesc, &money, 2, DATA_FLAG_DIRECT_INDEX);
money = 200;
SetData(&SelectedMoneyDesc, &money, 3, DATA_FLAG_DIRECT_INDEX);
money = 250;
SetData(&SelectedMoneyDesc, &money, 4, DATA_FLAG_DIRECT_INDEX);
money = 300;
SetData(&SelectedMoneyDesc, &money, 5, DATA_FLAG_DIRECT_INDEX);
money = 0;
SetData(&SelectedMoneyDesc, &money, 6, DATA_FLAG_DIRECT_INDEX);
money = 0;
SetData(&SelectedMoneyDesc, &money, 7, DATA_FLAG_DIRECT_INDEX);
CPU_INT32U action;
action = KEY_ACTION_UP;
SetData(&KeyActionDesc, &action, 0, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_DOWN;
SetData(&KeyActionDesc, &action, 1, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_EMPTY;
SetData(&KeyActionDesc, &action, 2, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_LEFT;
SetData(&KeyActionDesc, &action, 3, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_RIGHT;
SetData(&KeyActionDesc, &action, 4, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_EMPTY;
SetData(&KeyActionDesc, &action, 5, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_EMPTY;
SetData(&KeyActionDesc, &action, 6, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_EMPTY;
SetData(&KeyActionDesc, &action, 7, DATA_FLAG_DIRECT_INDEX);
ClearPrecheckText();
#if defined(BOARD_SOLARIUM_VLAD)
for (i = 0; i < SOLAR_MODES_COUNT; i++)
{
CPU_INT32U temp32;
temp32 = 18;
SetData(&SolarLampsCountDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_COLLATEN, DATA_FLAG_DIRECT_INDEX);
temp32 = 36;
SetData(&SolarLampsCountDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_UF, DATA_FLAG_DIRECT_INDEX);
temp32 = 54;
SetData(&SolarLampsCountDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_MAX, DATA_FLAG_DIRECT_INDEX);
temp32 = 1800;
SetData(&SolarPricePerMinuteDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_COLLATEN, DATA_FLAG_DIRECT_INDEX);
temp32 = 2100;
SetData(&SolarPricePerMinuteDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_UF, DATA_FLAG_DIRECT_INDEX);
temp32 = 3900;
SetData(&SolarPricePerMinuteDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_MAX, DATA_FLAG_DIRECT_INDEX);
temp32 = 20;
SetData(&SolarMaximumTimeMinutesDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_COLLATEN, DATA_FLAG_DIRECT_INDEX);
temp32 = 16;
SetData(&SolarMaximumTimeMinutesDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_UF, DATA_FLAG_DIRECT_INDEX);
temp32 = 14;
SetData(&SolarMaximumTimeMinutesDesc, &temp32, SOLAR_MODES_COUNT * i + SOLAR_MODE_MAX, DATA_FLAG_DIRECT_INDEX);
}
CPU_INT32U temp32;
temp32 = 0;
SetData(&DiscountBeginHourDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 7;
SetData(&DiscountEndHourDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 8;
SetData(&DiscountBeginHourDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 11;
SetData(&DiscountEndHourDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 12;
SetData(&DiscountBeginHourDesc, &temp32, 2, DATA_FLAG_DIRECT_INDEX);
temp32 = 19;
SetData(&DiscountEndHourDesc, &temp32, 2, DATA_FLAG_DIRECT_INDEX);
temp32 = 20;
SetData(&DiscountBeginHourDesc, &temp32, 3, DATA_FLAG_DIRECT_INDEX);
temp32 = 23;
SetData(&DiscountEndHourDesc, &temp32, 3, DATA_FLAG_DIRECT_INDEX);
temp32 = 1;
SetData(&ScoreRs485AddressDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 2;
SetData(&ScoreRs485AddressDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 3;
SetData(&ScoreRs485AddressDesc, &temp32, 2, DATA_FLAG_DIRECT_INDEX);
temp32 = 16;
SetData(&ScoreRs485AddressDesc, &temp32, 3, DATA_FLAG_DIRECT_INDEX);
temp32 = 19;
SetData(&ScoreRs485AddressDesc, &temp32, 4, DATA_FLAG_DIRECT_INDEX);
temp32 = 22;
SetData(&ScoreRs485AddressDesc, &temp32, 5, DATA_FLAG_DIRECT_INDEX);
temp32 = 10;
SetData(&SkinCollatenMaxTimeDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 20;
SetData(&SkinCollatenMaxTimeDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 40;
SetData(&SkinCollatenMaxTimeDesc, &temp32, 2, DATA_FLAG_DIRECT_INDEX);
temp32 = 60;
SetData(&SkinCollatenMaxTimeDesc, &temp32, 3, DATA_FLAG_DIRECT_INDEX);
temp32 = 5;
SetData(&SkinUFMaxTimeDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 10;
SetData(&SkinUFMaxTimeDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 18;
SetData(&SkinUFMaxTimeDesc, &temp32, 2, DATA_FLAG_DIRECT_INDEX);
temp32 = 25;
SetData(&SkinUFMaxTimeDesc, &temp32, 3, DATA_FLAG_DIRECT_INDEX);
temp32 = 2;
SetData(&SkinMaximalMaxTimeDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 5;
SetData(&SkinMaximalMaxTimeDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 10;
SetData(&SkinMaximalMaxTimeDesc, &temp32, 2, DATA_FLAG_DIRECT_INDEX);
temp32 = 15;
SetData(&SkinMaximalMaxTimeDesc, &temp32, 3, DATA_FLAG_DIRECT_INDEX);
temp32 = 0;
SetData(&SolarControlChannelDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 1;
SetData(&SolarControlChannelDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 2;
SetData(&SolarControlChannelDesc, &temp32, 2, DATA_FLAG_DIRECT_INDEX);
temp32 = 3000;
SetData(&AbonementMoneyDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 600;
SetData(&AbonementBonusDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 45;
SetData(&AbonementBestBeforeDesc, &temp32, 0, DATA_FLAG_DIRECT_INDEX);
temp32 = 6000;
SetData(&AbonementMoneyDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 1800;
SetData(&AbonementBonusDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
temp32 = 90;
SetData(&AbonementBestBeforeDesc, &temp32, 1, DATA_FLAG_DIRECT_INDEX);
#endif
InitByDefault = 0;
}
TDataDescStruct const InitByDefaultDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&InitByDefault, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&InitByDefaultRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeInitByDefault, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
InitByDefaultName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
InitByDefaultList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Êîìàíäà âûïîëíèòü ñâåðêó
*************************************/
CPU_INT32U MakeSverkaCmd = 0;
TRangeValueULONG const MakeSverkaRange = {0, 1};
CPU_INT08U const MakeSverkaName[] = "Ñâåðêà";
CPU_INT08U const *MakeSverkaList[] = {InitByDefaultList_str0, InitByDefaultList_str1};
void OnChangeMakeSverka()
{
if (MakeSverkaCmd)
{
MakeSverkaCmd = 0;
SetTermCommand(TERM_COMMAND_MAKE_SVERKA, NULL);
}
}
TDataDescStruct const MakeSverkaDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&MakeSverkaCmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&MakeSverkaRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeMakeSverka, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
MakeSverkaName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
MakeSverkaList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Êîìàíäà âûïîëíèòü ñèíõðîíèçàöèþ
*************************************/
CPU_INT32U MakeSyncCmd = 0;
CPU_INT08U const MakeSyncName[] = "Ñèíõðîíèçàöèÿ";
void OnChangeMakeSync()
{
if (MakeSyncCmd)
{
MakeSyncCmd = 0;
SetTermCommand(TERM_COMMAND_MAKE_SYNCHRO, NULL);
}
}
TDataDescStruct const MakeSyncDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&MakeSyncCmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&MakeSverkaRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeMakeSync, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
MakeSyncName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
MakeSverkaList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Êîìàíäà íà ïå÷àòü Z-îò÷åòà
*************************************/
CPU_INT32U PrintZReportCmd = 0;
CPU_INT08U const PrintZReportName[] = "Z-îò÷åò";
CPU_INT08U const PrintZReportList_str0[] = "íåò";
CPU_INT08U const PrintZReportList_str1[] = "ïå÷àòü";
CPU_INT08U const *PrintZReportList[] = {PrintZReportList_str0, PrintZReportList_str1};
void OnChangePrintZReportCmd(void)
{
}
TDataDescStruct const PrintZReportDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&PrintZReportCmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&InitByDefaultRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePrintZReportCmd, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PrintZReportName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
PrintZReportList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Êîìàíäà íà ïå÷àòü X-îò÷åòà
*************************************/
CPU_INT32U PrintXReportCmd = 0;
CPU_INT08U const PrintXReportName[] = "X-îò÷åò";
void OnChangePrintXReportCmd(void)
{
}
TDataDescStruct const PrintXReportDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&PrintXReportCmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&InitByDefaultRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePrintXReportCmd, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PrintXReportName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
PrintZReportList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Îøèáêà â æóðíàëå îøèáîê
*************************************/
TRangeValueULONG const ErrorNumberRange = {0, JOURNAL_EVENTS_COUNT - 1};
CPU_INT08U const *ErrorNumberList0[JOURNAL_EVENTS_COUNT] = {"íåò", "", "", "",
"", "", "", "",
"", "", "", "",
"", "", "", "", "", "",
"", "", "", "", "", "", "",
"îøèáêà ñâÿçè ñ",
"îøèáêà ðàáîòû",
"1Ch60h-âûáð.êóïþðû",
"1Ch61h-âûáð.êóïþðû",
"1Ch64h-âûáð.êóïþðû",
"1Ch65h-âûáð.êóïþðû",
"1Ch66h-âûáð.êóïþðû",
"1Ch67h-âûáð.êóïþðû",
"1Ch68h-âûáð.êóïþðû",
"1Ch69h-âûáð.êóïþðû",
"1Ch6Ch-âûáð.êóïþðû",
"ê/ï:41h-êàññåòà",
"ê/ï:42h-êàññåòà",
"ê/ï:43h-çàìèí â ",
"ê/ï:44h-çàìèí",
"ê/ï:45h-ïîïûòêà",
"ê/ï:50h-îøèáêà",
"ê/ï:51h-îøèáêà ñêîð.",
"ê/ï:52h-îøèáêà",
"ê/ï:53h-îøèáêà ìåõ.",
"ê/ï:54h-êàññåòà",
"ê/ï:65h-îøèáêà",
"ê/ï:66h-îøèáêà",
"ê/ï:67h-îøèáêà åìê.",
"îøèáêà",
"",
"îøèáêà",
"îøèáêà",
"ÔÐ:01h-Íåèçâåñòíàÿ",
"ÔÐ:02h-Íåâåðíîå",
"ÔÐ:03h-Îøèáêà ÔÍ",
"ÔÐ:04h-Îøèáêà ÊÑ",
"ÔÐ:05h-Çàêîí÷åí ñðîê",
"ÔÐ:06h-Àðõèâ ÔÍ",
"ÔÐ:07h-Íåâåðíûå äàòà",
"ÔÐ:08h-Íåò ",
"ÔÐ:09h-Íåêîðð.",
"ÔÐ:10h-Ïðåâûøåíèå",
"ÔÐ:11h-Íåò",
"ÔÐ:12h-Èñ÷åðïàí",
"ÔÐ:14h-Èñ÷åðïàí",
"ÔÐ:15h-Èñ÷åðïàí",
"ÔÐ:16h-Ñìåíà áîëåå",
"ÔÐ:17h-Íåâåðíàÿ",
"ÔÐ:20h-Ñîîáùåíèå",
"ÔÐ:2Fh-Òàéìàóò ",
"ÔÐ:30h-ÔÍ ",
"ÔÐ:33h-Íåêîððåêòíûå",
"ÔÐ:34h-Íåò",
"ÔÐ:35h-Íåêîððåêòíûé",
"ÔÐ:36h-Íåêîððåêòíûå",
"ÔÐ:37h-Êîìàíäà",
"ÔÐ:38h-Îøèáêà",
"ÔÐ:39h-Âíóòðåííÿÿ",
"ÔÐ:3Ah-Ïåðåïîëíåíèå",
"ÔÐ:3Ch-Ñìåíà",
"ÔÐ:3Dh-Ñìåíà",
"ÔÐ:3Eh-Ïåðåïîëíåíèå",
"ÔÐ:3Fh-Ïåðåïîëíåíèå",
"ÔÐ:40h-Ïåðåïîëíåíèå",
"ÔÐ:41h-Ïåðåïîëíåíèå",
"ÔÐ:42h-Ïåðåïîëíåíèå",
"ÔÐ:43h-Ïåðåïîëíåíèå",
"ÔÐ:44h-Ïåðåïîëíåíèå",
"ÔÐ:45h-Cóììà",
"ÔÐ:46h-Íå õâàòàåò",
"ÔÐ:47h-Ïåðåïîëíåíèå",
"ÔÐ:48h-Ïåðåïîëíåíèå",
"ÔÐ:49h-Îïåð.íåâîçì.",
"ÔÐ:4Ah-Îòêðûò ÷åê",
"ÔÐ:4Bh-Áóôåð ÷åêà",
"ÔÐ:4Ch-Ïåðåïîëíåíèå",
"ÔÐ:4Dh-Âíîñèìàÿ",
"ÔÐ:4Eh-Ñìåíà",
"ÔÐ:4Fh-Íåâåðíûé ïàðîëü",
"ÔÐ:50h-Èäåò ïå÷àòü",
"ÔÐ:51h-Ïåðåïîëíåíèå",
"ÔÐ:52h-Ïåðåïîëíåíèå",
"ÔÐ:53h-Ïåðåïîëíåíèå",
"ÔÐ:54h-Ïåðåïîëíåíèå",
"ÔÐ:55h-×åê çàêðûò",
"ÔÐ:56h-Íåò äîê.",
"ÔÐ:58h-Îæèäàíèå",
"ÔÐ:59h-Äîêóìåíò",
"ÔÐ:5Bh-Ïåðåïîëíåíèå",
"ÔÐ:5Ch-Ïîíèæåíî",
"ÔÐ:5Dh-Òàáëèöà",
"ÔÐ:5Eh-Íåêîððåêòíàÿ",
"ÔÐ:5Fh-Îòðèö.",
"ÔÐ:60h-Ïåðåïîëíåíèå",
"ÔÐ:61h-Ïåðåïîëíåíèå",
"ÔÐ:62h-Ïåðåïîëíåíèå",
"ÔÐ:63h-Ïåðåïîëíåíèå",
"ÔÐ:65h-Íå õâàòàåò",
"ÔÐ:66h-Ïåðåïîëíåíèå",
"ÔÐ:68h-Íå õâàòàåò",
"ÔÐ:69h-Ïåðåïîëíåíèå",
"ÔÐ:6Ah-Îøèáêà",
"ÔÐ:6Bh-Íåò ÷åêîâîé",
"ÔÐ:6Ch-Íåò êîíòð.",
"ÔÐ:6Dh-Íå õâàòàåò",
"ÔÐ:6Eh-Ïåðåïîëíåíèå",
"ÔÐ:6Fh-Ïåðåïîëíåíèå",
"ÔÐ:71h-Îøèáêà",
"ÔÐ:72h-Êîìàíäà íå",
"ÔÐ:73h-Êîìàíäà íå",
"ÔÐ:74h-Îøèáêà ÎÇÓ",
"ÔÐ:75h-Îøèáêà",
"ÔÐ:77h-Ïðèíòåð:",
"ÔÐ:78h-Çàìåíà ÏÎ",
"ÔÏ:7Ah-Ïîëå íå",
"ÔÐ:7Bh-Îøèáêà",
"ÔÐ:7Ch-Íå ñîâïàäàåò",
"ÔÐ:7Dh-Íåâåðíûé",
"ÔÐ:7Eh-Íåâåðíîå",
"ÔÐ:7Fh-Ïåðåïîëíåíèå",
"ÔÐ:84h-Ïåðåïîëíåíèå",
"ÔÐ:85h-Ïåðåïîëíåíèå",
"ÔÐ:86h-Ïåðåïîëíåíèå",
"ÔÐ:87h-Ïåðåïîëíåíèå",
"ÔÐ:88h-Ïåðåïîëíåíèå",
"ÔÐ:89h-Ïåðåïîëíåíèå",
"ÔÐ:8Ah-Ïåðåïîëíåíèå",
"ÔÐ:8Bh-Ïåðåïîëíåíèå",
"ÔÐ:8Ch-Îòðèö.",
"ÔÐ:8Dh-Îòðèöàòåëüíûé",
"ÔÐ:8Eh-Íóëåâîé èòîã",
"ÔÐ:90h-Ïîëå ïðåâ.",
"ÔÐ:91h-Âûõîä çà",
"ÔÐ:92h-Íàëîæåíèå",
"ÔÐ:93h-Âîññòàíîâëåíèå",
"ÔÐ:94h-Èñ÷åðïàí",
"ÔÐ:C0h-Êîíòðîëü",
"ÔÐ:C2h-Ïðåâûøåíèå",
"ÔÐ:C4h-Íåñîâïàäåíèå",
"ÔÐ:C7h-Ïîëå íå",
"ÔÐ:Ñ8h-Îòñóòñòâóþò"
};
TDataDescStruct const JournalErrorNumberDesc0 = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
EVENT_RECORDS_COUNT, // ðàçìåð ìàññèâà
&EventJournalIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, EventRecords[0].event), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ErrorNumberRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(TEventRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
(void*)ErrorNumberList0, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
CPU_INT08U const *ErrorNumberList1[JOURNAL_EVENTS_COUNT] = {"", "", "", "",
"", "", "", "",
"", "", "", "",
"", "", "", "", "", "",
"", "", "", "", "", "", "",
"êóïþðîïðèåìíèêîì",
"êóïþðîïðèåìíèêà",
"ïðè çàìèíå",
"ïî ìàã.äàò÷èêó",
"ïðè òðàíñïîðò.",
"ïî èäåíòèôèêàöèè",
"ïî âåðèôèêàöèè ",
"ïî îïòè÷.äàò÷èêó ",
"ïî çàïðåòó",
"ïî åìêîñò.äàò÷èêó",
"ïî äëèíå",
"çàïîëíåíà",
"îòñóòñòâóåò",
"êóïþðîïðèåìíèêå",
"â êàññåòå",
"îáìàíà",
"ñòåêåðíîãî ìîòîðà",
"òðàíñïîðò.ìîòîðà",
"òðàíñïîðò.ìîòîðà",
"âûðàâíèâàíèÿ",
"îòñóòñòâóåò",
"îïòèêè",
"ìàã.äàò÷èêà",
"äàò÷èêà",
"ìîäåìà",
"",
"ñâÿçè ñ ÔÐ",
"",
"êîìàíäà", // ÔÐ:01h
"ñîñòîÿíèå ÔÍ",
"",
"",
"ýêñïëóàòàöèè ÔÍ",
"ïåðåïîëíåí",
"è/èëè âðåìÿ",
"çàïðîøåííûõ äàííûõ",
"çíà÷.ïàð.ê-äû",
"ðàçì.TLV äàííûõ",
"òðàíñï.ñîåä.",
"ðåñóðñ ÊÑ",
"ðåñóðñ õðàíåíèÿ",
"ðåñóðñ îæèäàíèÿ",
"24 ÷àñîâ",
"ðàçíèöà âî âðåìåíè",
"îò ÎÔÄ íå ïðèíÿòî",
"îáìåíà ñ ÔÍ",
"íå îòâå÷àåò",
"ïàðàìåòðû â ê-äå",
"äàííûõ",
"ïàðàìåòð",
"ïàðàìåòðû", // 36h
"íå ïîääåðæèâàåòñÿ",
"â ÏÇÓ",
"îøèáêà ÏÎ ÊÊÒ",
"íàê.ïî íàäá.",
"îòêð.-îïåðàöèÿ íåâîçì.",
"çàêð.-îïåðàöèÿ íåâîçì.", //3Dh
"íàêîï.ïî ñåêöèÿì",
"íàêîï.ïî ñêèäêàì",
"äèàïàçîíà ñêèäîê",
"äèàïàçîíà îïëàòû",
"äèàïàçîíà îïëàòû 2",
"äèàïàçîíà îïëàòû 3",
"äèàïàçîíà îïëàòû 4",
"ìåíüøå èòîãà ÷åêà",
"íàëè÷íîñòè â êàññå",
"íàêîïëåíèÿ ïî íàëîãàì",
"èòîãà ÷åêà",
"â îòêð.÷åêå",
"îïåðàöèÿ íåâîçìîæíà",
"ïåðåïîëíåí",
"íàêîï.ïî íàëîãàì",
"áåçíàë.ñóììà áîëüøå",
"ïðåâûñèëà 24 ÷àñà",
"",
"ïðåä.êîìàíäû",
"íàêîïëåíèé â ñìåíå",
"íàêîïëåíèé 2 â ñìåíå",
"íàêîïëåíèé 3 â ñìåíå",
"íàêîïëåíèé 4 â ñìåíå",
"îïåðàöèÿ íåâîçì.",
"äëÿ ïîâòîðà",
"êîìàíäû ïðîäîëæåíèÿ",
"îòêðûò äðóãèì îï.",
"äèàïàçîíà íàäáàâîê",
"íàïðÿæåíèå 24Â",
"íå îïðåäåëåíà",
"îïåðàöèÿ",
"èòîã ÷åêà",
"ïðè óìíîæåíèè",
"äèàïàçîíà öåíû",
"äèàïàçîíà êîë-âà",
"äèàïàçîíà îòäåëà",
"äåíåã â ñåêöèè",
"äåíåã â ñåêöèè",
"äåíåã ïî íàëîãàì",
"äåíåã ïî íàëîãàì",
"ïèòàíèÿ",
"ëåíòû",
"ëåíòû",
"äåíåã ïî íàëîãó",
"äåíåã ïî íàëîãó",
"ïî âûïëàòå â ñìåíå",
"îòðåç÷èêà",
"ïîääåðæ.",
"ïîääåðæ.",
"",
"ïèòàíèÿ",
"íåò ñèãíàëà",
"",
"ðåäàêòèðóåòñÿ",
"îáîðóäîâàíèÿ",
"äàòà",
"ôîðìàò äàòû",
"çíà÷åíèå â ïîëå äëèíû",
"äèàïàçîíà èòîãà ÷åêà",
"íàëè÷íîñòè",
"ïî ïðîäàæàì",
"ïî ïîêóïêàì",
"ïî âîçâðàòàì ïðîäàæ",
"ïî âîçâðàòàì ïîêóïîê",
"ïî âíåñåíèþ â ñìåíå",
"ïî íàäáàâêàì â ÷åêå",
"ïî ñêèäêàì â ÷åêå",
"èòîã íàäáàâêè",
"èòîã ñêèäêè â ÷åêå",
"÷åêà",
"ðàçìåð â íàñòðîéêàõ",
"ãðàíèöó ïîëÿ ïå÷àòè",
"ïîëåé",
"ÎÇÓ ïðîøëî óñïåøíî",
"ëèìèò îïåðàöèé â ÷åêå",
"äàòû è âðåìåíè",
"íàïðÿæåíèÿ",
"íîìåðîâ ñìåí",
"ðåäàêòèðóåòñÿ",
"èìïóëüñû òàõî."
};
TDataDescStruct const JournalErrorNumberDesc1 = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
EVENT_RECORDS_COUNT, // ðàçìåð ìàññèâà
&EventJournalIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, EventRecords[0].event), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ErrorNumberRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(TEventRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
(void*)ErrorNumberList1, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Ñòðîêà ñ îøèáêîé ïî-àíãëèéñêè
*************************************/
CPU_INT08U const *ErrorNumberListEng[JOURNAL_EVENTS_COUNT] =
{
"Net oshibki", "", "", "",
"", "", "", "",
"", "", "", "",
"", "", "", "",
"", "", "", "",
"", "", "", "", "",
"Oshibka svyazi c kupuropriemnikom",
"Kriticheskaya oshibka kupuropriemnika",
"Vybros kupury po mag.datchiku",
"Vybros kupury pri transportirovke",
"Vybros kupury po identifikacii",
"Vybros kupury po verifikacii",
"Vybros kupury po opt.datchiku",
"Vybros kupury po zapretu",
"Vybros kupury po emk.datchiku",
"Vybros kupury po dline",
"Kasseta zapolnena",
"Kasseta otsutstvuet",
"Zamin v kupuropriemnike",
"Zamin v kassete",
"Popytka obmana",
"Oshibka stekernogo motora",
"Oshibka skorosti transp.motora",
"Oshibka transp.motora",
"Oshibka mehanizmavyravnivaniya",
"Kasseta otsutstvuet",
"Oshibka optiki",
"Oshibka magn.datchika",
"Oshibka emk.datchika",
"Nekriticheskaya oshibka kupuropriemnika",
"Oshibka svyazi s modemom",
"",
"Oshibka svyazi s FR",
"Oshibka FR 0x01",
"Oshibka FR 0x02",
"Oshibka FR 0x03",
"Oshibka FR 0x04",
"Oshibka FR 0x05",
"Oshibka FR 0x06",
"Oshibka FR 0x07",
"Oshibka FR 0x08",
"Oshibka FR 0x09",
"Oshibka FR 0x10",
"Oshibka FR 0x11",
"Oshibka FR 0x12",
"Oshibka FR 0x14",
"Oshibka FR 0x15",
"Oshibka FR 0x16",
"Oshibka FR 0x17",
"Oshibka FR 0x20",
"Oshibka FR 0x2F",
"Oshibka FR 0x30",
"Oshibka FR 0x33",
"Oshibka FR 0x34",
"Oshibka FR 0x35",
"Oshibka FR 0x36",
"Oshibka FR 0x37",
"Oshibka FR 0x38",
"Oshibka FR 0x39",
"Oshibka FR 0x3A",
"Oshibka FR 0x3C",
"Oshibka FR 0x3D",
"Oshibka FR 0x3E",
"Oshibka FR 0x3F",
"Oshibka FR 0x40",
"Oshibka FR 0x41",
"Oshibka FR 0x42",
"Oshibka FR 0x43",
"Oshibka FR 0x44",
"Oshibka FR 0x45",
"Oshibka FR 0x46",
"Oshibka FR 0x47",
"Oshibka FR 0x48",
"Oshibka FR 0x49",
"Oshibka FR 0x4A",
"Oshibka FR 0x4B",
"Oshibka FR 0x4C",
"Oshibka FR 0x4D",
"Oshibka FR 0x4E",
"Oshibka FR 0x4F",
"Oshibka FR 0x50",
"Oshibka FR 0x51",
"Oshibka FR 0x52",
"Oshibka FR 0x53",
"Oshibka FR 0x54",
"Oshibka FR 0x55",
"Oshibka FR 0x56",
"Oshibka FR 0x58",
"Oshibka FR 0x59",
"Oshibka FR 0x5B",
"Oshibka FR 0x5C",
"Oshibka FR 0x5D",
"Oshibka FR 0x5E",
"Oshibka FR 0x5F",
"Oshibka FR 0x60",
"Oshibka FR 0x61",
"Oshibka FR 0x62",
"Oshibka FR 0x63",
"Oshibka FR 0x65",
"Oshibka FR 0x66",
"Oshibka FR 0x68",
"Oshibka FR 0x69",
"Oshibka FR 0x6A",
"Oshibka FR 0x6B",
"Oshibka FR 0x6C",
"Oshibka FR 0x6D",
"Oshibka FR 0x6E",
"Oshibka FR 0x6F",
"Oshibka FR 0x71",
"Oshibka FR 0x72",
"Oshibka FR 0x73",
"Oshibka FR 0x74",
"Oshibka FR 0x75",
"Oshibka FR 0x77",
"Oshibka FR 0x78",
"Oshibka FR 0x7A",
"Oshibka FR 0x7B",
"Oshibka FR 0x7C",
"Oshibka FR 0x7D",
"Oshibka FR 0x7E",
"Oshibka FR 0x7F",
"Oshibka FR 0x84",
"Oshibka FR 0x85",
"Oshibka FR 0x86",
"Oshibka FR 0x87",
"Oshibka FR 0x88",
"Oshibka FR 0x89",
"Oshibka FR 0x8A",
"Oshibka FR 0x8B",
"Oshibka FR 0x8C",
"Oshibka FR 0x8D",
"Oshibka FR 0x8E",
"Oshibka FR 0x90",
"Oshibka FR 0x91",
"Oshibka FR 0x92",
"Oshibka FR 0x93",
"Oshibka FR 0x94",
"Oshibka FR 0xC0",
"Oshibka FR 0xC2",
"Oshibka FR 0xC4",
"Oshibka FR 0xC7",
"Oshibka FR 0xC8"
};
TDataDescStruct const JournalErrorNumberDescEng = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
EVENT_RECORDS_COUNT, // ðàçìåð ìàññèâà
&EventJournalIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, EventRecords[0].event), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ErrorNumberRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(TEventRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
(void*)ErrorNumberList1, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
TDataDescStruct const JournalErrorNumberDescCode = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
EVENT_RECORDS_COUNT, // ðàçìåð ìàññèâà
&EventJournalIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, EventRecords[0].event), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(TEventRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
TDataDescStruct const JournalErrorNumberDescTime = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
EVENT_RECORDS_COUNT, // ðàçìåð ìàññèâà
&EventJournalIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, EventRecords[0].time), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(TEventRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Èíäåêñ ïðè ïðîñìîòðå æóðíàëà ñîáûòèé
*************************************/
TRangeValueULONG const EventJournalIndexRange = {0, 0xffffffff};
#if defined(BOARD_SOLARIUM_WEB)
CPU_INT08U const EventJournalIndexName[] = "ÇÀÏÈÑÜ #";
#else
CPU_INT08U const EventJournalIndexName[] = "Çàïèñü #";
#endif
CPU_INT32U EventJournalIndex = 0;
void OnChangeEventJournalIndex(void)
{
TEventRecord record;
if (EventJournalIndex == 0xffffffff) EventJournalIndex = EVENT_RECORDS_COUNT - 1;
else if (EventJournalIndex > EVENT_RECORDS_COUNT - 1) EventJournalIndex = 0;
GetEventRecord(&record, EventJournalIndex);
PrintEventJournalRecord(&record, str_EventNumber, str_EventData);
}
TDataDescStruct const EventJournalIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&EventJournalIndex, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EventJournalIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeEventJournalIndex, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EventJournalIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Âðåìÿ ñîáûòèÿ â æóðíàëå ñîáûòèé
*************************************/
TDataDescStruct const JournalEventTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
EVENT_RECORDS_COUNT, // ðàçìåð ìàññèâà
&EventJournalIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, EventRecords[0].time), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(TEventRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Ñèñòåìíîå âðåìÿ
*************************************/
extern CPU_INT32U SystemTime;
TDataDescStruct const SystemTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&SystemTime, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
void OnSetTime(void)
{
TRTC_Data rtc;
Sec2Date(&rtc, SystemTime);
RTC_SetTime(&rtc);
}
TDataDescStruct const SystemTimeEditDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_TIME, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&SystemTime, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnSetTime, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êîìàíäà íà î÷èñòêó æóðíàëîâ
*************************************/
CPU_INT32U ClearJournalCmd = 0;
CPU_INT08U const ClearJournalCmdName[] = "Î÷èñòêà";
CPU_INT08U const ClearJournalCmdList_str0[] = "íåò";
CPU_INT08U const ClearJournalCmdList_str1[] = "äà";
CPU_INT08U const *ClearJournalCmdList[] = {ClearJournalCmdList_str0, ClearJournalCmdList_str1};
void OnChangeClearJournalCmd(void)
{
if (ClearJournalCmd)
{
ClearEventJournal();
ClearJournalCmd = 0;
}
}
TDataDescStruct const ClearJournalCmdDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&ClearJournalCmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&InitByDefaultRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeClearJournalCmd, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ClearJournalCmdName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ClearJournalCmdList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Îáùèé ñ÷åò÷èê ÷èñëà çàïóñêîâ
*************************************/
#if defined(BOARD_SOLARIUM_WEB)
CPU_INT08U const CounterRunName[] = "ÇÀÏÓÑÊÈ";
#else
CPU_INT08U const CounterRunName[] = "Çàïóñêè";
#endif
TDataDescStruct const CounterRunDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterRun), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterRunName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Îáùèé ñ÷åò÷èê äåíåã
*************************************/
CPU_INT08U const CounterMoneyName[] = "Äåíüãè,ðóá.";
CPU_INT08U const CounterCardName[] = "Áàíê,ðóá.";
TDataDescStruct const CounterMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterMoney), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Îáùèé ñ÷åò÷èê áåçíàëà
*************************************/
TDataDescStruct const CounterCardDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterCard), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCardName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Îáùèé ñ÷åò÷èê âðåìåíè ðàáîòû
*************************************/
#if defined(BOARD_SOLARIUM_WEB)
CPU_INT08U const CounterTimeName[] = "ÂÐ.ÐÀÁ.";
#else
CPU_INT08U const CounterTimeName[] = "Âð.ðàá.";
#endif
TDataDescStruct const CounterTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_COUNT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Îáùèé ñ÷åò÷èê ÷èñëà çàïóñêîâ ÄËÈÍÍÛÉ
*************************************/
TDataDescStruct const CounterLongRunDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CountersLong.CounterRunLong), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterRunName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Îáùèé ñ÷åò÷èê äåíåã ÄËÈÍÍÛÉ
*************************************/
TDataDescStruct const CounterLongMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CountersLong.CounterMoneyLong), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Îáùèé ñ÷åò÷èê áåçíàëà ÄËÈÍÍÛÉ
*************************************/
TDataDescStruct const CounterLongCardDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CountersLong.CounterCardLong), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCardName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Îáùèé ñ÷åò÷èê âðåìåíè ðàáîòû
*************************************/
TDataDescStruct const CounterLongTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_COUNT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CountersLong.CounterTimeLong), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êàíàëüíûé ñ÷åò÷èê ÷èñëà çàïóñêîâ
*************************************/
TDataDescStruct const CounterChannelRunDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelStIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterChannelRun[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterRunName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êàíàëüíûé ñ÷åò÷èê äåíåã
*************************************/
TDataDescStruct const CounterChannelMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelStIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterChannelMoney[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êàíàëüíûé ñ÷åò÷èê áåçíàëà
*************************************/
TDataDescStruct const CounterChannelCardDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelStIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterChannelCard[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCardName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êàíàëüíûé ñ÷åò÷èê âðåìåíè ðàáîòû
*************************************/
TDataDescStruct const CounterChannelTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_COUNT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelStIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterChannelTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êàíàëüíûé ñ÷åò÷èê ÷èñëà çàïóñêîâ
*************************************/
TDataDescStruct const CounterChannelRunLongDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelStIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CountersLong.CounterChannelRunLong[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterRunName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êàíàëüíûé ñ÷åò÷èê äåíåã
*************************************/
TDataDescStruct const CounterChannelMoneyLongDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelStIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CountersLong.CounterChannelMoneyLong[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êàíàëüíûé ñ÷åò÷èê áåçíàëà
*************************************/
TDataDescStruct const CounterChannelCardLongDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelStIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CountersLong.CounterChannelCardLong[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCardName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êàíàëüíûé ñ÷åò÷èê âðåìåíè ðàáîòû
*************************************/
TDataDescStruct const CounterChannelTimeLongDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_COUNT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelStIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CountersLong.CounterChannelTimeLong), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êîìàíäà íà î÷èñòêó ñòàòèñòèêè
*************************************/
CPU_INT32U ClearStatCmd = 0;
CPU_INT08U const ClearStatCmdName[] = "Î÷èñòêà";
#if defined(BOARD_SOLARIUM_VLAD)
extern void SolarClearAllCounters(void);
extern void SolarClearLampsCounters(CPU_INT08U ch);
#endif
void OnChangeClearStatCmd(void)
{
if (ClearStatCmd)
{
ClearCounters();
#if defined(BOARD_SOLARIUM_VLAD)
SolarClearAllCounters();
#endif
ClearStatCmd = 0;
}
}
TDataDescStruct const ClearStatCmdDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&ClearStatCmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&InitByDefaultRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeClearStatCmd, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ClearJournalCmdName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ClearJournalCmdList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Ðàçðåøåíèå àâòîìàòè÷åñêîãî çàêðûòèÿ ñìåí
*************************************/
TRangeValueULONG const EnableFiscalDayClearRange = {0, 1};
CPU_INT08U const EnableFiscalDayClearName[] = "Çàêð.ñìåíû";
CPU_INT08U const *EnableFiscalDayClearList[] = {"Ðó÷.", "Àâòî", "Áóôåð"};
TDataDescStruct const EnableFiscalDayClearDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnableFiscalDayClear), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableFiscalDayClearRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableFiscalDayClearName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableFiscalDayClearList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Íàñòðîéêà ÷åêà
*************************************/
TRangeValueULONG const BillFormatRange = {0, 1};
CPU_INT08U const BillFormatName[] = "×åê:";
CPU_INT08U const BillFormatList_str0[] = "êîë-âî*öåíà";
CPU_INT08U const BillFormatList_str1[] = "ñóììà";
CPU_INT08U const *BillFormatList[] = {BillFormatList_str0, BillFormatList_str1};
TDataDescStruct const BillFormatDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.BillFormat), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&BillFormatRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
BillFormatName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
BillFormatList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Ñèñòåìà íàëîãîîáëîæåíèÿ
*************************************/
TRangeValueULONG const TaxSystemRange = {0, 5};
CPU_INT08U const TaxSystemName[] = "Ñèñòåìà íàë.";
CPU_INT08U const TaxSystemList_str0[] = "ÎÑÍ";
CPU_INT08U const TaxSystemList_str1[] = "ÓÑÍ ä";
CPU_INT08U const TaxSystemList_str2[] = "ÓÑÍ ä-ð";
CPU_INT08U const TaxSystemList_str3[] = "ÅÍÂÄ";
CPU_INT08U const TaxSystemList_str4[] = "ÅÑÏ";
CPU_INT08U const TaxSystemList_str5[] = "ÏÑÍ";
CPU_INT08U const *TaxSystemList[] = {TaxSystemList_str0, TaxSystemList_str1, TaxSystemList_str2, TaxSystemList_str3, TaxSystemList_str4, TaxSystemList_str5};
TDataDescStruct const TaxSystemDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, TaxSystem), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&TaxSystemRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
TaxSystemName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
TaxSystemList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Èíäåêñ íàëîãà
*************************************/
TRangeValueULONG const TaxFormatRange = {0, 6};
CPU_INT08U const TaxFormatName[] = "Íàëîã:";
CPU_INT08U const TaxFormatList_str0[] = "îòêë.";
CPU_INT08U const TaxFormatList_str1[] = " 1 ";
CPU_INT08U const TaxFormatList_str2[] = " 2 ";
CPU_INT08U const TaxFormatList_str3[] = " 3 ";
CPU_INT08U const TaxFormatList_str4[] = " 4 ";
CPU_INT08U const TaxFormatList_str5[] = " 5 ";
CPU_INT08U const TaxFormatList_str6[] = " 6 ";
CPU_INT08U const *TaxFormatList[] = {TaxFormatList_str0, TaxFormatList_str1, TaxFormatList_str2, TaxFormatList_str3, TaxFormatList_str4, TaxFormatList_str5, TaxFormatList_str6};
TDataDescStruct const TaxFormatDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, TaxFormat), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&TaxFormatRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
TaxFormatName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
TaxFormatList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Ïðåäìåò ðàñ÷åòà
*************************************/
TRangeValueULONG const SubjSellRange = {0, 2};
CPU_INT08U const SubjSellName[] = "Ïðåäì.ðàñ÷åòà";
CPU_INT08U const SubjSellList_str0[] = "ÒÎÂÀÐ";
CPU_INT08U const SubjSellList_str1[] = "ÐÀÁÎÒÀ";
CPU_INT08U const SubjSellList_str2[] = "ÓÑËÓÃÀ";
CPU_INT08U const *SubjSellList[] = {SubjSellList_str0, SubjSellList_str1, SubjSellList_str2};
TDataDescStruct const SubjSellDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SubjSell), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SubjSellRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SubjSellName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SubjSellList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Òèï êîìàíä ðàáîòû ñ ÷åêîì
*************************************/
TRangeValueULONG const CommandV2Range = {0, 1};
CPU_INT08U const CommandV2Name[] = "Òèï êîìàíä";
CPU_INT08U const CommandV2List_str0[] = "ñòàðûé";
CPU_INT08U const CommandV2List_str1[] = "V2";
CPU_INT08U const *CommandV2List[] = {CommandV2List_str0, CommandV2List_str1};
TDataDescStruct const CommandV2Desc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, CommandV2), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&CommandV2Range, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CommandV2Name, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
CommandV2List, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
};
/*************************************
Íàçâàíèå óñëóãè
*************************************/
TRangeValueULONG const ServiceNameRange = {0, 1};
CPU_INT08U const ServiceNameName[] = "";
#if defined(BOARD_SOLARIUM_VLAD)
CPU_INT08U const *ServiceNameList[] = {"Óñëóãè çàãàðà â ñîëÿðèè", "Óñëóãè"};
#else
CPU_INT08U const *ServiceNameList[] = {"Óñëóãè ìîéêè", "Óñëóãè"};
#endif
TDataDescStruct const ServiceNameDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.ServiceName), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ServiceNameRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ServiceNameName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ServiceNameList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Äåñêðèïòîð äëÿ ýíåðãîíåçàâèñèìîãî ñîõðàíåíèÿ òåêóùèõ äåíåã
*************************************/
TDataDescStruct const AcceptedMoneyDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FRAM_AcceptedMoney), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Äåñêðèïòîð Crc16 ýíåðãîíåçàâèñèìîãî ñîõðàíåíèÿ òåêóùèõ äåíåã
*************************************/
TDataDescStruct const AcceptedMoneyCRC16Desc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, crc_AcceptedMoney), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Äåñêðèïòîð ïàðîëÿ
*************************************/
TRangeValueULONG const PassRange = {0, 9999};
CPU_INT08U const PassName[] = "ÏÀÐÎËb";
void OnChangePass(void)
{
// îáíîâèì CRC ïàðîëÿ
CPU_INT32U pass,crc;
GetData(&PassDesc, &pass, 0, DATA_FLAG_SYSTEM_INDEX);
crc = crc16((unsigned char*)&pass, sizeof(CPU_INT32U));
SetData(&PassCRCDesc, &crc, 0, DATA_FLAG_SYSTEM_INDEX);
}
TDataDescStruct const PassDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Pass), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePass, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
(void*)&PassName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
DEFAULT_PASSWORD
};
CPU_INT08U const PassNameAdmin[] = "ÀÄÌÈÍ.";
TDataDescStruct const PassDescAdmin = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Pass), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePass, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
(void*)&PassNameAdmin, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
DEFAULT_PASSWORD
};
/*************************************
Äåñêðèïòîð CRC ïàðîëÿ
*************************************/
TDataDescStruct const PassCRCDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, crc_Pass), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Äåñêðèïòîð âðåìåííîãî ïàðîëÿ
*************************************/
CPU_INT32U TempPass = 0;
#if defined(BOARD_SOLARIUM_VLAD)
extern void PrintHelloMenu(void);
extern void PrintSelectChMenu(CPU_INT08U blink);
#endif
void OnChangeTempPass(void)
{
CPU_INT32U pass;
GetData(&PassDesc, &pass, 0, DATA_FLAG_SYSTEM_INDEX);
if (GetCurrentMenu() == SetPassMenuPanel)
{
#if defined(BOARD_SOLARIUM_VLAD)
// óñòàíîâêà íîâîãî ïàðîëÿ
if (pass != TempPass)
{
SaveEventRecord(0, JOURNAL_EVENT_PASS_FAIL, TempPass);
GoToPreviousMenu(); GoToMenu(ErrorPassPanel);
}
else {GoToPreviousMenu(); GoToMenu(AllPasswordsMenuPanel);}
#else
// óñòàíîâêà íîâîãî ïàðîëÿ
if (pass != TempPass)
{
SaveEventRecord(0, JOURNAL_EVENT_PASS_FAIL, TempPass);
GoToPreviousMenu(); GoToMenu(ErrorPassPanel);
}
else {GoToPreviousMenu(); GoToMenu(SetNewPassMenuPanel);}
#endif
}
else if (GetCurrentMenu() == ResetSettingsMenuPanel)
{ // ñáðîñ íàñòðîåê
if (pass != TempPass)
{
SaveEventRecord(0, JOURNAL_EVENT_PASS_FAIL, TempPass);
GoToPreviousMenu(); GoToMenu(ErrorPassPanel);
}
else {InitByDefault = 1; OnChangeInitByDefault(); GoToPreviousMenu(); GoToMenu(SettingsIsReset);}
}
else if (GetCurrentMenu() == ClearStatMenu)
{ // î÷èñòêà ñòàòèñòèêè
if (pass != TempPass)
{
SaveEventRecord(0, JOURNAL_EVENT_PASS_FAIL, TempPass);
GoToPreviousMenu(); GoToMenu(ErrorPassPanel);
}
else
{
#ifdef CONFIG_FTP_CLIENT_ENABLE
CPU_INT32U enabled;
GetData(&FtpEnableDesc, &enabled, 0, DATA_FLAG_SYSTEM_INDEX);
if (enabled)
{
time_to_ftp |= FTP_FLAG_SEND_COUNTERS | FTP_FLAG_CLEAR_COUNTERS;
GoToPreviousMenu();
GoToMenu(FtpUploadInProgressMenu);
}
else
#endif
{
ClearStatCmd = 1;
OnChangeClearStatCmd();
GoToPreviousMenu();
GoToMenu(StatIsReset);
}
}
}
else if (GetCurrentMenu() == ClearJournalMenuPanel)
{ // î÷èñòêà æóðíàëà
if (pass != TempPass)
{
SaveEventRecord(0, JOURNAL_EVENT_PASS_FAIL, TempPass);
GoToPreviousMenu(); GoToMenu(ErrorPassPanel);
}
else
{
#ifdef CONFIG_FTP_CLIENT_ENABLE
CPU_INT32U enabled;
GetData(&FtpEnableDesc, &enabled, 0, DATA_FLAG_SYSTEM_INDEX);
if (enabled)
{
time_to_ftp |= FTP_FLAG_SEND_COUNTERS | FTP_FLAG_CLEAR_LOGS;
GoToPreviousMenu();
GoToMenu(FtpUploadInProgressMenu);
}
else
#endif
{
ClearJournalCmd = 1;
OnChangeClearJournalCmd();
GoToPreviousMenu();
GoToMenu(JournalIsReset);
}
}
}
#if defined(BOARD_SOLARIUM_VLAD)
else if (GetCurrentMenu() == ReqCleaningPassMenuPanel)
{
GetData(&PassDescCleaning, &pass, 0, DATA_FLAG_SYSTEM_INDEX);
if (pass == TempPass)
{
PostUserEvent(EVENT_PASS_OK);
}
else
{
PostUserEvent(EVENT_PASS_FAIL);
}
}
else if (GetCurrentMenu() == ReqServicePassMenuPanel)
{
GetData(&PassDescService, &pass, 0, DATA_FLAG_SYSTEM_INDEX);
if (pass == TempPass)
{
PostUserEvent(EVENT_PASS_OK);
}
else
{
PostUserEvent(EVENT_PASS_FAIL);
}
}
else if (GetCurrentMenu() == ReqTestPassMenuPanel)
{
GetData(&PassDescTest, &pass, 0, DATA_FLAG_SYSTEM_INDEX);
if (pass == TempPass)
{
PostUserEvent(EVENT_PASS_OK);
}
else
{
PostUserEvent(EVENT_PASS_FAIL);
}
}
else if (GetCurrentMenu() == ClearLampsMenu)
{
if (pass != TempPass)
{
SaveEventRecord(0, JOURNAL_EVENT_PASS_FAIL, TempPass);
GoToPreviousMenu(); GoToMenu(ErrorPassPanel);
}
else
{
SolarClearLampsCounters(ChannelIndex);
GoToPreviousMenu();
}
}
else if (GetCurrentMenu() == ReqStartupPassMenuPanel)
{
if (pass != TempPass)
{
start_pass_ok = 0;
SaveEventRecord(0, JOURNAL_EVENT_PASS_FAIL, TempPass);
GoToMenu(ErrorPassPanel);
}
else
{
start_pass_ok = 1;
if (GetMode() == MODE_WORK) {SetMenu(WORK_MENU);}
else SetMenu(SERVICE_MENU);
}
}
#endif
}
TDataDescStruct const PassTempDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&TempPass, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeTempPass, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
(void*)&PassName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
#if defined(BOARD_CENTRAL_CARWASH)
CPU_INT08U const PassTempName1[] = " ÏÀÐÎËb";
#else
CPU_INT08U const PassTempName1[] = "ÏÀÐÎËb";
#endif
TDataDescStruct const PassTempDesc1 = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&TempPass, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeTempPass, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
(void*)&PassTempName1, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
TRangeValueULONG const MasterPassRange = {0, 4000000000};
CPU_INT08U const MasterPassTempName[] = "ÏÀÐÎËb";
void OnChangeMasterPass(void)
{
CPU_INT32U pass, crc;
if (TempPass == MASTER_PASSWORD)
{
TempPass = 0;
pass = DEFAULT_PASSWORD;
crc = crc16((unsigned char*)&pass, sizeof(CPU_INT32U));
SetData(&PassDesc, &pass, 0, DATA_FLAG_SYSTEM_INDEX);
SetData(&PassCRCDesc, &crc, 0, DATA_FLAG_SYSTEM_INDEX);
GoToPreviousMenu();
GoToPreviousMenu();
GoToMenu(SetNewPassMenuPanel);
}
}
TDataDescStruct const MasterPassTempDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&TempPass, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&MasterPassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeMasterPass, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
(void*)&MasterPassTempName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
#if !defined(BOARD_SOLARIUM_WEB)
CPU_INT08U const PassTempName2[] = " ÏÀÐÎËb";
#endif
TDataDescStruct const PassTempDesc2 = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&TempPass, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeTempPass, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
#if !defined(BOARD_SOLARIUM_WEB)
(void*)&PassTempName2, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
#else
NULL,
#endif
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Êîìàíäà ïîñëàòü òåñòîâîå ñîîáùåíèå
*************************************/
CPU_INT08U const SendTestEmailName[] = "Îòïð.òåñò";
CPU_INT32U send_test;
void OnChangeSendTestEmail(void)
{
if (send_test)
{
PostModemTask(MODEM_TASK_SEND_TEST_MSG);
send_test = 0;
}
}
TDataDescStruct const SendTestEmailDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&send_test, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableEmailErrorSendRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeSendTestEmail, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SendTestEmailName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DisableFiscalErrorsList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Èíäåêñ íîìèíàëà êóïþðû äëÿ ïðîñìîòðà ñ÷åò÷èêîâ ïî íîìèíàëàì
*************************************/
CPU_INT32U BillnomViewIndex;
TRangeValueULONG const BillnomIndexRange = {0, 23};
CPU_INT08U const BillnomName[] = " ÍÎÌÈÍÀË #";
CPU_INT08U const* BillnomItems[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"};
TDataDescStruct const BillnomIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&BillnomViewIndex, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&BillnomIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
BillnomName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
BillnomItems, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Çíà÷åíèå íîìèíàëà êóïþðû äëÿ ïðîñìîòðà ñ÷åò÷èêîâ
*************************************/
extern CPU_INT32U BillNominals[24];
CPU_INT08U const BillnomValName[] = "Çíà÷åíèå,ðóá.";
TDataDescStruct const BillnomDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
24, // ðàçìåð ìàññèâà
(void*)&BillnomIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&BillNominals, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
BillnomValName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Ñ÷åò÷èêè íîìèíàëîâ êóïþð â êóïþðíèêå
*************************************/
CPU_INT08U const BillnomCountersName[] = "Êîë-âî";
TDataDescStruct const BillnomCountersDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
24, // ðàçìåð ìàññèâà
&BillnomIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.CounterBillNominals[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
BillnomCountersName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Îáùåå êîëè÷åñòâî êóïþð â êóïþðíèêå
*************************************/
CPU_INT08U const BillCounterName[] = "Âñåãî êóïþð";
TDataDescStruct const BillCounterDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, Counters.BillsCount), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
BillCounterName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
ID óñòðîéñòâà
*************************************/
CPU_INT08U const DeviceIDName[] = "ID óñò-âà";
TRangeValueULONG const DeviceIDRange = {0, 9999};
TDataDescStruct const DeviceIDDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.DeviceId), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DeviceIDRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DeviceIDName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Ïðèçíàê îòïðàâêè ñîîáùåíèÿ îá èíêàññàöèè
*************************************/
TDataDescStruct const IncasSendFlagDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, IncasEmailFlag), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Äåíüãè îò ïîñëåäíåé èíêàññàöèè
*************************************/
TDataDescStruct const IncasMoneyDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, IncasMoney), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
IP-àäðåñ ñâîé
*************************************/
void OnChangeIpMask()
{
CPU_INT32U ip, mask;
GetData(&IpAddrDesc, &ip, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&NetMaskDesc, &mask, 0, DATA_FLAG_SYSTEM_INDEX);
NetIP_CfgAddrThisHost(ip, mask);
}
#if defined(BOARD_SOLARIUM_WEB)
CPU_INT08U const IpAddrName[] = "ÀÄÐÅÑ";
#else
CPU_INT08U const IpAddrName[] = "IP";
#endif
TDataDescStruct const IpAddrDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_IP_ADDR, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ip), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DeferredStartRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeIpMask, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
IpAddrName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DeferredStartList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
#if defined(BOARD_SOLARIUM_WEB)
0xC0A800FA
#else
0xC0A80064
#endif
};
/*************************************
Ìåñêà ñåòè
*************************************/
#if defined(BOARD_SOLARIUM_WEB)
CPU_INT08U const NetMaskName[] = "ÌÀÑÊÀ";
#else
CPU_INT08U const NetMaskName[] = "MSK";
#endif
TDataDescStruct const NetMaskDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_IP_ADDR, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, netmask), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DeferredStartRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeIpMask, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NetMaskName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DeferredStartList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0xFFFF0000
};
/*************************************
Øëþç
*************************************/
void OnChangeGateway()
{
CPU_INT32U gw;
GetData(&GatewayDesc, &gw, 0, DATA_FLAG_SYSTEM_INDEX);
NetIP_CfgAddrDfltGateway(gw);
}
#if defined(BOARD_SOLARIUM_WEB)
CPU_INT08U const GatewayName[] = "ØËÞÇ";
#else
CPU_INT08U const GatewayName[] = "GW";
#endif
TDataDescStruct const GatewayDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_IP_ADDR, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, gateway), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DeferredStartRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeGateway, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
GatewayName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DeferredStartList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0xC0A80001
};
/*************************************
Âðåìÿ ïîñëåäíåé èíêàññàöèè
*************************************/
TDataDescStruct const IncasTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, IncasTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Âêëþ÷èòü ïå÷àòü îò÷åòîâ îòêðûòèÿ/çàêðûòèÿ ñìåíû íà áóìàãó
*************************************/
TRangeValueULONG const EnablePrintReportsRange = {0, 1};
CPU_INT08U const EnablePrintReportsName[] = "Ïå÷àòü îò÷åòîâ";
CPU_INT08U const *EnablePrintReportsList[] = {OnOffList_str0, OnOffList_str1};
TDataDescStruct const EnablePrintReportsDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.EnablePrintReports), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnablePrintReportsRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnablePrintReportsName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnablePrintReportsList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
};
/*************************************
Ïîðò äëÿ ïîäêëþ÷åíèÿ ê áàíêîâñêîìó òåðìèíàëó
*************************************/
TRangeValueULONG const TermPortRange = {1, 65535};
CPU_INT08U const TermPortName[] = "Ïîðò";
TDataDescStruct const TerminalPortDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.terminal_port), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&TermPortRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
TermPortName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
62801 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Èñïîëüçîâàòü áàíêîâñêèé òåðìèíàë
*************************************/
TRangeValueULONG const EnableTerminalRange = {0, 1};
CPU_INT08U const EnableTerminalName[] = "Âêëþ÷èòü";
CPU_INT08U const *EnableTerminalList[] = {OnOffList_str0, OnOffList_str1};
TDataDescStruct const EnableTerminalDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.terminal_enable), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableTerminalRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableTerminalName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableTerminalList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
#if defined(CONFIG_TERMINAL_ENABLE)
/*************************************
Ïðîòîêîë áàíêîâñêîãî òåðìèíàëà
*************************************/
TRangeValueULONG const TerminalProtocolRange = {0, 1};
CPU_INT08U const TerminalProtocolName[] = "Ïðîòîêîë";
CPU_INT08U const TerminalProtocol_str0[] = "ttk2";
CPU_INT08U const TerminalProtocol_str1[] = "vtk";
CPU_INT08U const *TerminalProtocolList[] = {TerminalProtocol_str0, TerminalProtocol_str1};
void OnChangeTerminalProtocolDesc(void)
{
CPU_INT32U port;
CPU_INT32U proto;
GetData(&TerminalProtocolDesc, &proto, 0, DATA_FLAG_SYSTEM_INDEX);
if (proto == TERMINAL_PROTOCOL_TTK2)
{
port = 62501;
SetData(&TerminalPortDesc, &port, 0, DATA_FLAG_SYSTEM_INDEX);
}
else if (proto == TERMINAL_PROTOCOL_VTK)
{
port = 62801;
SetData(&TerminalPortDesc, &port, 0, DATA_FLAG_SYSTEM_INDEX);
}
}
TDataDescStruct const TerminalProtocolDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, TerminalProtocol), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&TerminalProtocolRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeTerminalProtocolDesc, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
TerminalProtocolName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
TerminalProtocolList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
#if defined(BOARD_SOLARIUM_VLAD)
TERMINAL_PROTOCOL_VTK
#else
TERMINAL_PROTOCOL_TTK2
#endif
};
char const TerminalProtocolDescId[] = "TerminalProtocolDesc";
#endif
/*************************************
Èíäåêñ êíîïêè äëÿ íàçíà÷åíèÿ ñóììû
*************************************/
CPU_INT32U KeyMoneyIndex = 0;
TRangeValueULONG const KeyMoneyRange = {0, MONEY_KEY_COUNT - 1};
CPU_INT08U const KeyMoneyName[] = " ÊÍÎÏÊÀ";
CPU_INT08U const* KeyMoneyItems[] = {"1", "2", "3", "4", "5", "6", "7", "8"};
TDataDescStruct const KeyMoneyDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&KeyMoneyIndex, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&KeyMoneyRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
KeyMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
KeyMoneyItems, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
/*************************************
Íàçíà÷åíèå êîëè÷åñòâà äåíåã íà êíîïêè äëÿ áàíêîâñêîãî òåðìèíàëà
*************************************/
TRangeValueULONG const SelectedMoneyRange = {0, 10000};
CPU_INT08U const SelectedMoneyName[] = "Ñóììà";
TDataDescStruct const SelectedMoneyDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
MONEY_KEY_COUNT, // ðàçìåð ìàññèâà
(void*)&KeyMoneyDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.terminal_money_table[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SelectedMoneyRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SelectedMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Äåéñòâèå äëÿ öèôðîâîé êíîïêè
*************************************/
TRangeValueULONG const KeyActionRange = {0, 6};
CPU_INT08U const KeyActionName[] = "Äåéñòâèå";
CPU_INT08U const* KeyActionItems[] = {"Íåò", "Âëåâî", "Âïðàâî", "Âíèç", "Ââåðõ", "OK", "Îòìåíà"};
void CheckKeysCorrect()
{
CPU_INT16U crc, crc_calc;
CPU_INT32U action[MONEY_KEY_COUNT];
ReadArrayFram(offsetof(TFramMap, DeviceConfig.key_action[0]), sizeof(CPU_INT32U) * MONEY_KEY_COUNT, (unsigned char *)action);
crc_calc = crc16((unsigned char*)action, sizeof(CPU_INT32U) * MONEY_KEY_COUNT);
ReadArrayFram(offsetof(TFramMap, keys_crc), sizeof(CPU_INT16U), (unsigned char *)&crc);
if (crc_calc != crc)
{
CPU_INT32U action;
action = KEY_ACTION_UP;
SetData(&KeyActionDesc, &action, 0, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_DOWN;
SetData(&KeyActionDesc, &action, 1, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_EMPTY;
SetData(&KeyActionDesc, &action, 2, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_LEFT;
SetData(&KeyActionDesc, &action, 3, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_RIGHT;
SetData(&KeyActionDesc, &action, 4, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_EMPTY;
SetData(&KeyActionDesc, &action, 5, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_EMPTY;
SetData(&KeyActionDesc, &action, 6, DATA_FLAG_DIRECT_INDEX);
action = KEY_ACTION_EMPTY;
SetData(&KeyActionDesc, &action, 7, DATA_FLAG_DIRECT_INDEX);
ReadArrayFram(offsetof(TFramMap, DeviceConfig.key_action[0]), sizeof(CPU_INT32U) * MONEY_KEY_COUNT, (unsigned char *)action);
crc_calc = crc16((unsigned char*)action, sizeof(CPU_INT32U) * MONEY_KEY_COUNT);
WriteArrayFram(offsetof(TFramMap, keys_crc), sizeof(CPU_INT16U), (unsigned char *)&crc_calc);
}
}
void OnChangeKeyAction()
{
const CPU_INT32U mustbe[4] = {KEY_ACTION_DOWN, KEY_ACTION_UP};
// îòñëåæèâàåì - âñåãäà äîëæíû áûòü ñòðåëî÷êè
for (int i = 0; i < 2; i++)
{
int fix = 1;
for (int key = 0; key < MONEY_KEY_COUNT - 2; key++)
{
CPU_INT32U action;
GetData(&KeyActionDesc, &action, key, DATA_FLAG_DIRECT_INDEX);
if (action == mustbe[i])
{
fix = 0;
break;
}
}
if (fix)
{
for (int key = 0; key < MONEY_KEY_COUNT - 2; key++)
{
CPU_INT32U action;
GetData(&KeyActionDesc, &action, key, DATA_FLAG_DIRECT_INDEX);
if (action == KEY_ACTION_EMPTY)
{
action = mustbe[i];
SetData(&KeyActionDesc, &action, key, DATA_FLAG_DIRECT_INDEX);
break;
}
}
}
}
CPU_INT32U action[MONEY_KEY_COUNT];
ReadArrayFram(offsetof(TFramMap, DeviceConfig.key_action[0]), sizeof(CPU_INT32U) * MONEY_KEY_COUNT, (unsigned char *)action);
CPU_INT16U crc_calc = crc16((unsigned char*)action, sizeof(CPU_INT32U) * MONEY_KEY_COUNT);
WriteArrayFram(offsetof(TFramMap, keys_crc), sizeof(CPU_INT16U), (unsigned char *)&crc_calc);
}
TDataDescStruct const KeyActionDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
MONEY_KEY_COUNT, // ðàçìåð ìàññèâà
(void*)&KeyMoneyDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DeviceConfig.key_action[0]), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&KeyActionRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeKeyAction, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
KeyActionName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
KeyActionItems, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
KEY_ACTION_EMPTY
};
/*************************************
Ïàðàìåòðà ÒÀÉÌÅÐ ÏÎÑÒÀ (âûäà÷à íå ïî êîëè÷åñòâó èìïóëüñîâ, à ïî äëèíå çàäàííîãî óðîâíÿ ñèãíàëà)
*************************************/
TRangeValueULONG const PostTimerRange = {0, 60};
CPU_INT08U const PostTimerName[] = "Òàéìåð";
CPU_INT08U const PostTimer_str00[] = "îòêë.";
CPU_INT08U const PostTimer_str01[] = "1 ñåê."; CPU_INT08U const PostTimer_str02[] = "2 ñåê."; CPU_INT08U const PostTimer_str03[] = "3 ñåê."; CPU_INT08U const PostTimer_str04[] = "4 ñåê.";
CPU_INT08U const PostTimer_str05[] = "5 ñåê."; CPU_INT08U const PostTimer_str06[] = "6 ñåê."; CPU_INT08U const PostTimer_str07[] = "7 ñåê."; CPU_INT08U const PostTimer_str08[] = "8 ñåê.";
CPU_INT08U const PostTimer_str09[] = "9 ñåê."; CPU_INT08U const PostTimer_str10[] = "10 ñåê."; CPU_INT08U const PostTimer_str11[] = "11 ñåê."; CPU_INT08U const PostTimer_str12[] = "12 ñåê.";
CPU_INT08U const PostTimer_str13[] = "13 ñåê."; CPU_INT08U const PostTimer_str14[] = "14 ñåê."; CPU_INT08U const PostTimer_str15[] = "15 ñåê."; CPU_INT08U const PostTimer_str16[] = "16 ñåê.";
CPU_INT08U const PostTimer_str17[] = "17 ñåê."; CPU_INT08U const PostTimer_str18[] = "18 ñåê."; CPU_INT08U const PostTimer_str19[] = "19 ñåê."; CPU_INT08U const PostTimer_str20[] = "20 ñåê.";
CPU_INT08U const PostTimer_str21[] = "21 ñåê."; CPU_INT08U const PostTimer_str22[] = "22 ñåê."; CPU_INT08U const PostTimer_str23[] = "23 ñåê."; CPU_INT08U const PostTimer_str24[] = "24 ñåê.";
CPU_INT08U const PostTimer_str25[] = "25 ñåê."; CPU_INT08U const PostTimer_str26[] = "26 ñåê."; CPU_INT08U const PostTimer_str27[] = "27 ñåê."; CPU_INT08U const PostTimer_str28[] = "28 ñåê.";
CPU_INT08U const PostTimer_str29[] = "29 ñåê."; CPU_INT08U const PostTimer_str30[] = "30 ñåê."; CPU_INT08U const PostTimer_str31[] = "31 ñåê."; CPU_INT08U const PostTimer_str32[] = "32 ñåê.";
CPU_INT08U const PostTimer_str33[] = "33 ñåê."; CPU_INT08U const PostTimer_str34[] = "34 ñåê."; CPU_INT08U const PostTimer_str35[] = "35 ñåê."; CPU_INT08U const PostTimer_str36[] = "36 ñåê.";
CPU_INT08U const PostTimer_str37[] = "37 ñåê."; CPU_INT08U const PostTimer_str38[] = "38 ñåê."; CPU_INT08U const PostTimer_str39[] = "39 ñåê."; CPU_INT08U const PostTimer_str40[] = "40 ñåê.";
CPU_INT08U const PostTimer_str41[] = "41 ñåê."; CPU_INT08U const PostTimer_str42[] = "42 ñåê."; CPU_INT08U const PostTimer_str43[] = "43 ñåê."; CPU_INT08U const PostTimer_str44[] = "44 ñåê.";
CPU_INT08U const PostTimer_str45[] = "45 ñåê."; CPU_INT08U const PostTimer_str46[] = "46 ñåê."; CPU_INT08U const PostTimer_str47[] = "47 ñåê."; CPU_INT08U const PostTimer_str48[] = "48 ñåê.";
CPU_INT08U const PostTimer_str49[] = "49 ñåê."; CPU_INT08U const PostTimer_str50[] = "50 ñåê."; CPU_INT08U const PostTimer_str51[] = "51 ñåê."; CPU_INT08U const PostTimer_str52[] = "52 ñåê.";
CPU_INT08U const PostTimer_str53[] = "53 ñåê."; CPU_INT08U const PostTimer_str54[] = "54 ñåê."; CPU_INT08U const PostTimer_str55[] = "55 ñåê."; CPU_INT08U const PostTimer_str56[] = "56 ñåê.";
CPU_INT08U const PostTimer_str57[] = "57 ñåê."; CPU_INT08U const PostTimer_str58[] = "58 ñåê."; CPU_INT08U const PostTimer_str59[] = "59 ñåê."; CPU_INT08U const PostTimer_str60[] = "60 ñåê.";
CPU_INT08U const *PostTimerList[61] = {PostTimer_str00,
PostTimer_str01, PostTimer_str02, PostTimer_str03, PostTimer_str04, PostTimer_str05, PostTimer_str06, PostTimer_str07, PostTimer_str08, PostTimer_str09, PostTimer_str10,
PostTimer_str11, PostTimer_str12, PostTimer_str13, PostTimer_str14, PostTimer_str15, PostTimer_str16, PostTimer_str17, PostTimer_str18, PostTimer_str19, PostTimer_str20,
PostTimer_str21, PostTimer_str22, PostTimer_str23, PostTimer_str24, PostTimer_str25, PostTimer_str26, PostTimer_str27, PostTimer_str28, PostTimer_str29, PostTimer_str30,
PostTimer_str31, PostTimer_str30, PostTimer_str33, PostTimer_str34, PostTimer_str35, PostTimer_str36, PostTimer_str37, PostTimer_str38, PostTimer_str39, PostTimer_str40,
PostTimer_str41, PostTimer_str42, PostTimer_str43, PostTimer_str44, PostTimer_str45, PostTimer_str46, PostTimer_str47, PostTimer_str48, PostTimer_str49, PostTimer_str50,
PostTimer_str51, PostTimer_str52, PostTimer_str53, PostTimer_str54, PostTimer_str55, PostTimer_str56, PostTimer_str57, PostTimer_str58, PostTimer_str59, PostTimer_str60
};
void OnChangePostTimerDesc()
{
#if defined(BOARD_CENTRAL_CARWASH)
PostUserEvent(EVENT_REREAD_SIGNAL_LEVEL);
#endif
}
TDataDescStruct const PostTimerDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.timer), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PostTimerRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePostTimerDesc, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostTimerName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
PostTimerList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Ïàðàìåòðà ÑÈÃÍÀË ÏÎÑÒÀ (óðîâåíü àêòèâíîãî ñèãíàëà)
*************************************/
TRangeValueULONG const PostSignalRange = {0, 1};
CPU_INT08U const PostSignalName[] = "Ñèãíàë";
CPU_INT08U const PostSignal_str00[] = "LOW";
CPU_INT08U const PostSignal_str01[] = "HIGH";
CPU_INT08U const *PostSignalList[2] = {PostSignal_str00, PostSignal_str01};
void OnChangePostSignalDesc()
{
CPU_INT32U en, timer;
GetData(&EnableChannelDesc, &en, ChannelIndex, DATA_FLAG_DIRECT_INDEX);
GetData(&PostTimerDesc, &timer, ChannelIndex, DATA_FLAG_DIRECT_INDEX);
if (en && timer)
{
CPU_INT32U ip;
CPU_INT32U signal;
char str[8];
GetData(&PostIpAddrDesc, &ip, ChannelIndex, DATA_FLAG_DIRECT_INDEX);
GetData(&PostSignalDesc, &signal, ChannelIndex, DATA_FLAG_DIRECT_INDEX);
sprintf(str, "%d", signal);
HostWriteParam(ip, CONSOLE_TCP_DEFAULT_PORT, "SIGNAL", str, HOST_SOCKET_DEFAULT_TIMEOUT);
}
}
TDataDescStruct const PostSignalDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ChannelConfig.signal), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PostSignalRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePostSignalDesc, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PostSignalName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
PostSignalList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
1 // çíà÷åíèå ïî óìîë÷àíèþ
};
#if defined(BOARD_SOLARIUM_WEB)
/*************************************
Ïàðàìåòð ÒÈÏ ÑÎËßÐÈß
*************************************/
TRangeValueULONG const SolariumTypeRange = {0, 1};
CPU_INT08U const SolariumTypeName[] = "ÒÈÏ";
CPU_INT08U const SolariumType_str00[] = "1 ÐÅËÅ";
CPU_INT08U const SolariumType_str01[] = "2 ÐÅËÅ";
CPU_INT08U const *SolariumTypeList[2] = {SolariumType_str00, SolariumType_str01};
TDataDescStruct const SolariumTypeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumType), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumTypeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumTypeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SolariumTypeList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Ïàðàìåòð ÒÀÉÌÀÓÒ ÂÎÇÂÐÀÒÀ ÍÀ ÃËÀÂÍÛÉ ÝÊÐÀÍ
*************************************/
TRangeValueULONG const SolariumTimeoutRange = {0, 99};
CPU_INT08U const SolariumTimeoutName[] = "ÒÀéÌÀÓÒ,Ñ";
TDataDescStruct const SolariumTimeoutDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumTimeout), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumTimeoutRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumTimeoutName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
60 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Ïàðàìåòð ÏÀÓÇÀ ÏÅÐÅÄ ÑÅÀÍÑÎÌ
*************************************/
TRangeValueULONG const SolariumPauseRange = {0, 999};
CPU_INT08U const SolariumPauseName[] = "ÏÀÓÇÀ,Ñ";
TDataDescStruct const SolariumPauseDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumPause), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumPauseRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumPauseName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Ïàðàìåòð ÂÐÅÌß ÂÅÍÒÈËßÖÈÈ
*************************************/
TRangeValueULONG const SolariumVentilationTimeRange = {60, 10*60};
CPU_INT08U const SolariumVentilationTimeName[] = "ÂÅÍÒ.,Ñ";
TDataDescStruct const SolariumVentilationTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumVentilationTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumVentilationTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumVentilationTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
180 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Ïàðàìåòð ÑÒÎÈÌÎÑÒÜ ÌÈÍÓÒÛ
*************************************/
TRangeValueULONG const SolariumPricePerMinRange = {1, 1000};
CPU_INT08U const SolariumPricePerMinName[] = "ÐÓÁ/1ÌÈÍ";
TDataDescStruct const SolariumPricePerMinDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumPricePerMin), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumPricePerMinRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumPricePerMinName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
10 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Ïàðàìåòð ÌÈÍÈÌÀËÜÍÎÅ ÂÐÅÌß ÇÀÃÀÐÀ
*************************************/
TRangeValueULONG const SolariumMinTimeRange = {1, 99};
CPU_INT08U const SolariumMinTimeName[] = "ÌÈÍ.ÂÐ.,ÌÈÍ";
TDataDescStruct const SolariumMinTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumMinTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumMinTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumMinTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
2 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Ïàðàìåòð ÌÀÊÑÈÌÀËÜÍÎÅ ÂÐÅÌß ÇÀÃÀÐÀ
*************************************/
TRangeValueULONG const SolariumMaxTimeRange = {1, 99};
CPU_INT08U const SolariumMaxTimeName[] = "ÌÀÊÑ.ÂÐ.,ÌÈÍ";
TDataDescStruct const SolariumMaxTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumMaxTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumMaxTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumMaxTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
19 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Íàñòðîéêà çóììåðà
*************************************/
TRangeValueULONG const ZummerEnableRange = {0, 1};
CPU_INT08U const ZummerEnableName[] = "Çóììåð";
CPU_INT08U const ZummerEnable_str0[] = "îòêë";
CPU_INT08U const ZummerEnable_str1[] = "âêë";
CPU_INT08U const *ZummerEnableList[] = {ZummerEnable_str0, ZummerEnable_str1, NULL};
extern CPU_INT08U zummer_enabled;
void OnZummerEnabledChange(void)
{
CPU_INT32U en = 0;
GetData(&ZummerEnableDesc, &en, 0, DATA_FLAG_SYSTEM_INDEX);
if (en) zummer_enabled = 1;
else zummer_enabled = 0;
}
TDataDescStruct const ZummerEnableDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ZummerEnable), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ZummerEnableRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnZummerEnabledChange, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ZummerEnableName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ZummerEnableList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
#endif
#if defined(CONFIG_MUSIC_ENABLE)
/*************************************
Âêëþ÷åíèå çâóêà
*************************************/
TRangeValueULONG const SoundEnableRange = {0, 2};
CPU_INT08U const SoundEnableName[] = "Çâóê ";
CPU_INT08U const SoundEnable_str0[] = "îòêë";
CPU_INT08U const SoundEnable_str1[] = "SD-card";
CPU_INT08U const SoundEnable_str2[] = "Ethernet";
CPU_INT08U const *SoundEnableList[] = {SoundEnable_str0, SoundEnable_str1, SoundEnable_str2, NULL};
void OnChangeMusicIp(void)
{
CPU_INT32U sound_type;
GetData(&SoundTypeDesc, &sound_type, 0, DATA_FLAG_SYSTEM_INDEX);
if (sound_type == 2)
{
PostUserEvent(EVENT_STOP_SOUND_FILE);
}
}
TDataDescStruct const SoundTypeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SoundEnable), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SoundEnableRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeMusicIp, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SoundEnableName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SoundEnableList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SoundTypeDescId[] = "SoundTypeDesc";
/*************************************
IP-àäðåñ ethernet ïëååðà
*************************************/
CPU_INT08U const MusicIpAddrName[] = "IP";
TDataDescStruct const SoundIpAddrDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_IP_ADDR, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
1, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SoundIpAddr), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeMusicIp, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
MusicIpAddrName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0xC0A800FA
};
char const SoundIpAddrDescId[] = "SoundIpAddrDesc";
/*************************************
Ãðîìêîñòü çâóêà
*************************************/
TRangeValueULONG const SoundVolumeRange = {0, 100};
CPU_INT08U const SoundVolumeName[] = "Ãðîìêîñòü";
void OnChangeSoundVolume(void)
{
CPU_INT32U sound_type;
GetData(&SoundTypeDesc, &sound_type, 0, DATA_FLAG_SYSTEM_INDEX);
if (sound_type == 2)
{
PostUserEvent(EVENT_UPDATE_MUSIC_VOLUME);
}
}
TDataDescStruct const SoundVolumeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SoundVolume), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SoundVolumeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeSoundVolume, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SoundVolumeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
100
};
char const SoundVolumeDescId[] = "SoundVolumeDesc";
/*************************************
Ñòàòóñ ïîäêëþ÷åíèÿ ïëååðà
*************************************/
CPU_INT08U const PlayerStatusName[] = "Ïëååð ";
CPU_INT08U const PlayerStatus_str0[] = "íå ïîäêëþ÷åí";
CPU_INT08U const PlayerStatus_str1[] = "ÎÊ";
CPU_INT08U const *PlayerStatusList[] = {PlayerStatus_str0, PlayerStatus_str1};
TDataDescStruct const PlayerStatusDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&player_conn, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
PlayerStatusName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
PlayerStatusList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const PlayerStatusDescId[] = "PlayerStatusDesc";
/*************************************
Êîìàíäà ïðîèãðàòü ôàéë èç ìåíþ
*************************************/
TRangeValueULONG const SoundFileIndexRange = {0, 999};
CPU_INT08U const SoundFileIndexName[] = "Âîñïð.ôàéë";
CPU_INT32U file_menu_cmd;
void OnChangeSoundFileIndex(void)
{
if (file_menu_cmd != 0)
{
CPU_INT32U sound_type;
GetData(&SoundTypeDesc, &sound_type, 0, DATA_FLAG_SYSTEM_INDEX);
if (sound_type == 1)
{
PlayMusicFile(file_menu_cmd);
}
else if (sound_type == 2)
{
PostUserEvent(EVENT_PLAY_SOUND_FILE);
}
}
}
TDataDescStruct const SoundFileIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&file_menu_cmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SoundFileIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeSoundFileIndex, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SoundFileIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const SoundFileIndexDescId[] = "SoundFileIndexDesc";
#endif
#if defined(CONFIG_SDCARD_ENABLE)
/*************************************
Ñòàòóñ ïîäêëþ÷åíèÿ SD-êàðòû
*************************************/
CPU_INT08U const SdCardStatusName[] = "SD-êàðòà ";
CPU_INT08U const SdCardStatus_str0[] = "íå ïîäêëþ÷åíà";
CPU_INT08U const SdCardStatus_str1[] = "íåò";
CPU_INT08U const SdCardStatus_str2[] = "îøèáêà";
CPU_INT08U const SdCardStatus_str3[] = "ÎÊ";
CPU_INT08U const *SdCardStatusList[] = {SdCardStatus_str0, SdCardStatus_str1, SdCardStatus_str2, SdCardStatus_str3};
extern CPU_INT32U fat_status;
TDataDescStruct const SdCardStatusDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&fat_status, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SdCardStatusName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SdCardStatusList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SdCardStatusDescId[] = "SdCardStatusDesc";
#endif
#if defined(BOARD_SOLARIUM_VLAD)
void CheckVladPasswords(void)
{
CPU_INT32U pass[3],crc,crc_fram;
GetData(&PassDescCleaning, &pass[0], 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&PassDescService, &pass[1], 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&PassDescTest, &pass[2], 0, DATA_FLAG_SYSTEM_INDEX);
crc = crc16((unsigned char*)pass, sizeof(CPU_INT32U) * 3);
GetData(&PassVladCrc, &crc_fram, 0, DATA_FLAG_SYSTEM_INDEX);
if (crc != crc_fram)
{
pass[0] = 2222;
pass[1] = 3333;
pass[2] = 4444;
crc = crc16((unsigned char*)pass, sizeof(CPU_INT32U) * 3);
SetData(&PassDescCleaning, &pass[0], 0, DATA_FLAG_SYSTEM_INDEX);
SetData(&PassDescService, &pass[1], 0, DATA_FLAG_SYSTEM_INDEX);
SetData(&PassDescTest, &pass[2], 0, DATA_FLAG_SYSTEM_INDEX);
SetData(&PassVladCrc, &crc, 0, DATA_FLAG_SYSTEM_INDEX);
}
}
void OnChangePassModes(void)
{
CPU_INT32U pass[3],crc;
GetData(&PassDescCleaning, &pass[0], 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&PassDescService, &pass[1], 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&PassDescTest, &pass[2], 0, DATA_FLAG_SYSTEM_INDEX);
crc = crc16((unsigned char*)pass, sizeof(CPU_INT32U) * 3);
SetData(&PassVladCrc, &crc, 0, DATA_FLAG_SYSTEM_INDEX);
}
CPU_INT08U const PassNameCleaning[] = "ÓÁÎÐÊÀ";
TDataDescStruct const PassDescCleaning = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, PassCleaning), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePassModes, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
(void*)&PassNameCleaning, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
2222
};
CPU_INT08U const PassNameService[] = "ÑÅÐÂÈÑ";
TDataDescStruct const PassDescService = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, PassService), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePassModes, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
(void*)&PassNameService, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
3333
};
CPU_INT08U const PassNameTest[] = "ÒÅÑÒ";
TDataDescStruct const PassDescTest = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, PassTestMode), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&PassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangePassModes, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
(void*)&PassNameTest, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
4444
};
char const PassDescCleaningId[] = "PassDescCleaning";
char const PassDescServiceId[] = "PassDescService";
char const PassDescTestId[] = "PassDescTest";
TDataDescStruct const PassVladCrc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, PassModesCrc), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Èíäåêñ ìåíþ ðåæèìû
*************************************/
CPU_INT08U const SolariumModesName[] = "";
TRangeValueULONG const SolariumModesRange = {0, CHANNELS_NUM * SOLAR_MODES_COUNT - 1};
CPU_INT08U const SolariumModes_str0[] = "ÑÎË.1 ÊÎËËÀÒÝÍ";
CPU_INT08U const SolariumModes_str1[] = "ÑÎË.1 ÓËbÒÐÀÔ.";
CPU_INT08U const SolariumModes_str2[] = "ÑÎË.1 ÌÀÊÑÈÌ.";
CPU_INT08U const SolariumModes_str3[] = "ÑÎË.2 ÊÎËËÀÒÝÍ";
CPU_INT08U const SolariumModes_str4[] = "ÑÎË.2 ÓËbÒÐÀÔ.";
CPU_INT08U const SolariumModes_str5[] = "ÑÎË.2 ÌÀÊÑÈÌ.";
CPU_INT08U const SolariumModes_str6[] = "ÑÎË.3 ÊÎËËÀÒÝÍ";
CPU_INT08U const SolariumModes_str7[] = "ÑÎË.3 ÓËbÒÐÀÔ.";
CPU_INT08U const SolariumModes_str8[] = "ÑÎË.3 ÌÀÊÑÈÌ.";
CPU_INT08U const *SolariumModesList[] = {SolariumModes_str0, SolariumModes_str1, SolariumModes_str2, SolariumModes_str3, SolariumModes_str4, SolariumModes_str5, SolariumModes_str6, SolariumModes_str7, SolariumModes_str8};
CPU_INT32U solar_modes_index;
TDataDescStruct const SolariumModesDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&solar_modes_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumModesRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumModesName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SolariumModesList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const SolariumModesDescId[] = "SolariumModesDesc";
/*************************************
Èíäåêñ ìåíþ ðåæèìû
*************************************/
CPU_INT08U const SolariumModeIndexName[] = "";
TRangeValueULONG const SolariumModeIndexRange = {0, SOLAR_MODES_COUNT - 1};
CPU_INT08U const SolariumModeIndex_str0[] = " ÊÎËËÀÒÝÍ";
CPU_INT08U const SolariumModeIndex_str1[] = " ÓËbÒÐÀÔÈÎËÅÒ";
CPU_INT08U const SolariumModeIndex_str2[] = " ÌÀÊÑÈÌÀËbÍÛé";
CPU_INT08U const *SolariumModeIndexList[] = {SolariumModeIndex_str0, SolariumModeIndex_str1, SolariumModeIndex_str2};
TDataDescStruct const SolariumModeIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&solar_modes_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolariumModeIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolariumModeIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SolariumModeIndexList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const SolariumModeIndexDescId[] = "SolariumModeIndexDesc";
/*************************************
Êîëè÷åñòâî ëàìï
*************************************/
TRangeValueULONG const SolarLampsCountRange = {15, 60};
CPU_INT08U const SolarLampsCountName[] = "Êîë-âî ëàìï";
TDataDescStruct const SolarLampsCountDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
(void*)&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarLampsCount), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarLampsCountRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarLampsCountName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
18
};
char const SolarLampsCountDescId[] = "SolarLampsCountDesc";
/*************************************
Öåíà ìèíóòû ïî ðåæèìàì
*************************************/
TRangeValueULONG const SolarPricePerMinuteRange = {5*100, 9999};
CPU_INT08U const SolarPricePerMinuteName[] = "Ñò.ìèí.,ðóá.";
void OnChangeSolarPricePerMinuteDesc(void)
{
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1 + solar_modes_index / SOLAR_MODES_COUNT);
}
TDataDescStruct const SolarPricePerMinuteDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
(void*)&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarPricePerMinute), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarPricePerMinuteRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeSolarPricePerMinuteDesc, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarPricePerMinuteName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1800
};
char const SolarPricePerMinuteDescId[] = "SolarPricePerMinuteDesc";
/*************************************
Òåêóùàÿ öåíà ìèíóòû ïî ðåæèìàì ñ ó÷åòîì ñêèäêè (âî fram äëÿ ýêîíîìèè RAM)
*************************************/
CPU_INT08U const SolarCurrentPricePerMinuteName[] = "Ñî ñêèäêîé,ðóá.";
TDataDescStruct const SolarCurrentPricePerMinuteDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
(void*)&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarCurrentPricePerMinute), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarPricePerMinuteRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarCurrentPricePerMinuteName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const SolarCurrentPricePerMinuteDescId[] = "SolarCurrentPricePerMinuteDesc";
/*************************************
Òåêóùàÿ öåíà ìèíóòû ïî ðåæèìàì ñ ó÷åòîì ñêèäêè (âî fram äëÿ ýêîíîìèè RAM)
*************************************/
TDataDescStruct const SolarCurrentPricePerMinuteForViewDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
(void*)&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarCurrentPricePerMinute), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarPricePerMinuteRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarCurrentPricePerMinuteName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
/*************************************
Ìàêñèìàëüíîå âðåìÿ ðàáîòû ïî ðåæèìàì
*************************************/
TRangeValueULONG const SolarMaximumTimeMinutesRange = {10, 60};
CPU_INT08U const SolarMaximumTimeMinutesName[] = "Ìàêñ.âðåìÿ,ìèí.";
TDataDescStruct const SolarMaximumTimeMinutesDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
(void*)&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarMaximumTimeMinutes), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarMaximumTimeMinutesRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarMaximumTimeMinutesName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
18
};
char const SolarMaximumTimeMinutesDescId[] = "SolarMaximumTimeMinutesDesc";
/*************************************
Ìèíèìàëüíîå âðåìÿ ðàáîòû äëÿ ñîëÿðèÿ
*************************************/
TRangeValueULONG const SolarMinimumTimeMinutesRange = {1, 10};
CPU_INT08U const SolarMinimumTimeMinutesName[] = "Ìèí.âðåìÿ,ìèí.";
TDataDescStruct const SolarMinimumTimeMinutesDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
(void*)&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarMinimumTimeMinutes), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarMinimumTimeMinutesRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarMinimumTimeMinutesName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
2
};
char const SolarMinimumTimeMinutesDescId[] = "SolarMinimumTimeMinutesDesc";
/*************************************
Âðåìÿ âåíòèëÿöèè äëÿ ñîëÿðèÿ
*************************************/
TRangeValueULONG const SolarVentilationTimeMinutesRange = {2, 9};
CPU_INT08U const SolarVentilationTimeMinutesName[] = "Âåíòèë.,ìèí.";
TDataDescStruct const SolarVentilationTimeMinutesDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
(void*)&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarVentilationTimeMinutes), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarVentilationTimeMinutesRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarVentilationTimeMinutesName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
3
};
char const SolarVentilationTimeMinutesDescId[] = "SolarVentilationTimeMinutesDesc";
/*************************************
Òàéìàóò äî íà÷àëà ñåàíñà
*************************************/
TRangeValueULONG const SolarTimeoutBeforeMinutesRange = {0, 20};
CPU_INT08U const SolarTimeoutBeforeMinutesName[] = "Ïàóçà äî,ìèí.";
TDataDescStruct const SolarTimeoutBeforeMinutesDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
(void*)&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarTimeoutBeforeMinutes), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarTimeoutBeforeMinutesRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarTimeoutBeforeMinutesName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
};
char const SolarTimeoutBeforeMinutesDescId[] = "SolarTimeoutBeforeMinutesDesc";
/*************************************
Òàéìàóò ïîñëå îêîí÷àíèÿ ñåàíñà (âðåìÿ íà îäåâàíèå)
*************************************/
TRangeValueULONG const SolarTimeoutAfterMinutesRange = {0, 10};
CPU_INT08U const SolarTimeoutAfterMinutesName[] = "Ïàóçà ïîñëå,ìèí.";
TDataDescStruct const SolarTimeoutAfterMinutesDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
(void*)&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarTimeoutAfterMinutes), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarTimeoutAfterMinutesRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarTimeoutAfterMinutesName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
5
};
char const SolarTimeoutAfterMinutesDescId[] = "SolarTimeoutAfterMinutesDesc";
/*************************************
Êàíàë óïðàâëåíèÿ äëÿ êàíàëà
*************************************/
TRangeValueULONG const SolarControlChannelRange = {0, 2};
CPU_INT08U const SolarControlChannelName[] = "Óïðàâëåíèå";
CPU_INT08U const SolarControlChannel_str0[] = "ÏÎÐÒ 1";
CPU_INT08U const SolarControlChannel_str1[] = "ÏÎÐÒ 2";
CPU_INT08U const SolarControlChannel_str2[] = "ÏÎÐÒ 3";
CPU_INT08U const *SolarControlChannelList[] = {SolarControlChannel_str0, SolarControlChannel_str1, SolarControlChannel_str2};
extern void LoadControlChannels(void);
void OnChangeControlChannels()
{
LoadControlChannels();
}
TDataDescStruct const SolarControlChannelDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
(void*)&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarControlChannels), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarControlChannelRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeControlChannels, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarControlChannelName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SolarControlChannelList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SolarControlChannelDescId[] = "SolarControlChannelDesc";
/*************************************
Òàéìàóò óáîðêè (îäèí íà âñå ñîëÿðèè)
*************************************/
TRangeValueULONG const SolarCleaningTimeoutMinutesRange = {0, 60};
CPU_INT08U const SolarCleaningTimeoutMinutesName[] = "Òàéìàóò óá.ìèí.";
TDataDescStruct const SolarCleaningTimeoutMinutesDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolarCleaningTimeout), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SolarCleaningTimeoutMinutesRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SolarCleaningTimeoutMinutesName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
30
};
char const SolarCleaningTimeoutMinutesDescId[] = "SolarCleaningTimeoutMinutesDesc";
/*************************************
Èíäåêñ àáîíåìåíòà
*************************************/
CPU_INT08U const AbonementIndexName[] = "";
TRangeValueULONG const AbonementIndexHourRange = {0, 3};
CPU_INT08U const AbonementIndexHour_str0[] = "ÑÅÐÅÁÐßÍÍÛé";
CPU_INT08U const AbonementIndexHour_str1[] = "ÇÎËÎÒÎé";
CPU_INT08U const AbonementIndexHour_str2[] = "ÏËÀÒÈÍÎÂÛé";
CPU_INT08U const AbonementIndexHour_str3[] = "ÀËÌÀÇÍÛé";
CPU_INT08U const *AbonementIndexHourList[] = {AbonementIndexHour_str0, AbonementIndexHour_str1/*, AbonementIndexHour_str2, AbonementIndexHour_str3*/};
CPU_INT32U abonement_index;
TDataDescStruct const AbonementIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&abonement_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&AbonementIndexHourRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
AbonementIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
AbonementIndexHourList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const AbonementIndexDescId[] = "AbonementIndexDesc";
/*************************************
Äåíüãè
*************************************/
TRangeValueULONG const AbonementMoneyRange = {0, 99999};
CPU_INT08U const AbonementMoneyName[] = "Äåíüãè";
TDataDescStruct const AbonementMoneyDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
2, // ðàçìåð ìàññèâà
&AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, AbonementMoney), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&AbonementMoneyRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
AbonementMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
3000
};
/*************************************
Èíäåêñ àáîíåìåíòà
*************************************/
TRangeValueULONG const AbonementIndexRange = {0, 4};
CPU_INT08U const AbonementIndex_str0[] = "ÑÅÐÅÁÐßÍÍÛé";
CPU_INT08U const AbonementIndex_str1[] = "ÇÎËÎÒÎé";
CPU_INT08U const AbonementIndex_str2[] = "ÏËÀÒÈÍÎÂÛé";
CPU_INT08U const AbonementIndex_str3[] = "ÀËÌÀÇÍÛé";
CPU_INT08U const AbonementIndex_str4[] = "ÈÒÎÃÎ";
CPU_INT08U const *AbonementIndexList[] = {AbonementIndex_str0, AbonementIndex_str1/*, AbonementIndex_str2, AbonementIndex_str3*/, AbonementIndex_str4};
TDataDescStruct const AbonementCounterIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&abonement_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&AbonementIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
AbonementIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
AbonementIndexList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const AbonementCounterIndexDescId[] = "AbonementCounterIndexDesc";
/*************************************
Äåíüãè
*************************************/
CPU_INT08U const AbonementMoneyAbonementName[] = "Îïëà÷åíî,ðóá";
TDataDescStruct const CounterMoneyAbonementDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
3, // ðàçìåð ìàññèâà
&AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.abonement[0].card_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(AbonentCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
AbonementMoneyAbonementName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterMoneyAbonementDescId[] = "CounterMoneyAbonementDesc";
/*************************************
Áîíóñû
*************************************/
CPU_INT08U const AbonementBonusName[] = "Áîíóñû";
TDataDescStruct const CounterBonusAbonementDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
3, // ðàçìåð ìàññèâà
&AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.abonement[0].card_bonus), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(AbonentCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
AbonementBonusName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterBonusAbonementDescId[] = "CounterBonusAbonementDesc";
/*************************************
Êîëè÷åñòâî çàïóñêîâ
*************************************/
CPU_INT08U const AbonementRunsName[] = "Êîë-âî";
TDataDescStruct const CounterRunsAbonementDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
3, // ðàçìåð ìàññèâà
&AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.abonement[0].runs), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(AbonentCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
AbonementRunsName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterRunsAbonementDescId[] = "CounterRunsAbonementDesc";
/*************************************
Áîíóñû
*************************************/
TRangeValueULONG const AbonementBonusRange = {0, 99999};
TDataDescStruct const AbonementBonusDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
2, // ðàçìåð ìàññèâà
&AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, AbonementBonus), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&AbonementBonusRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
AbonementBonusName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
600
};
/*************************************
Ñðîê äåéñòâèÿ
*************************************/
TRangeValueULONG const AbonementBestBeforeRange = {0, 1000};
CPU_INT08U const AbonementBestBeforeName[] = "Ñðîê äåéñòâèÿ,äí.";
TDataDescStruct const AbonementBestBeforeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
2, // ðàçìåð ìàññèâà
&AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, AbonementBestBefore), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&AbonementBestBeforeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
AbonementBestBeforeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
180
};
/*************************************
Èíäåêñ ñêèäêè ïî ÷àñàì
*************************************/
CPU_INT08U const DiscountIndexHourName[] = " ÑÊÈÄÊÀ";
TRangeValueULONG const DiscountIndexHourRange = {0, 3};
CPU_INT08U const DiscountIndexHour_str0[] = "ÍÎ×b";
CPU_INT08U const DiscountIndexHour_str1[] = "ÓÒÐÎ";
CPU_INT08U const DiscountIndexHour_str2[] = "ÄÅÍb";
CPU_INT08U const DiscountIndexHour_str3[] = "ÂÅ×ÅÐ";
CPU_INT08U const *DiscountIndexHourList[] = {DiscountIndexHour_str0, DiscountIndexHour_str1, DiscountIndexHour_str2, DiscountIndexHour_str3};
CPU_INT32U discount_index;
TDataDescStruct const DiscountIndexHourDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&discount_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountIndexHourRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountIndexHourName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DiscountIndexHourList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const DiscountIndexHourDescId[] = "DiscountIndexHourDesc";
/*************************************
Íà÷àëî èíòåðâàëà ñêèäêè ïî ÷àñàì
*************************************/
CPU_INT08U const DiscountBeginHourName[] = "Íà÷àëî";
TRangeValueULONG const DiscountBeginHourRange = {0, 23};
CPU_INT08U const DiscountBeginHour_str0[] = "00:00";
CPU_INT08U const DiscountBeginHour_str1[] = "01:00";
CPU_INT08U const DiscountBeginHour_str2[] = "02:00";
CPU_INT08U const DiscountBeginHour_str3[] = "03:00";
CPU_INT08U const DiscountBeginHour_str4[] = "04:00";
CPU_INT08U const DiscountBeginHour_str5[] = "05:00";
CPU_INT08U const DiscountBeginHour_str6[] = "06:00";
CPU_INT08U const DiscountBeginHour_str7[] = "07:00";
CPU_INT08U const DiscountBeginHour_str8[] = "08:00";
CPU_INT08U const DiscountBeginHour_str9[] = "09:00";
CPU_INT08U const DiscountBeginHour_str10[] = "10:00";
CPU_INT08U const DiscountBeginHour_str11[] = "11:00";
CPU_INT08U const DiscountBeginHour_str12[] = "12:00";
CPU_INT08U const DiscountBeginHour_str13[] = "13:00";
CPU_INT08U const DiscountBeginHour_str14[] = "14:00";
CPU_INT08U const DiscountBeginHour_str15[] = "15:00";
CPU_INT08U const DiscountBeginHour_str16[] = "16:00";
CPU_INT08U const DiscountBeginHour_str17[] = "17:00";
CPU_INT08U const DiscountBeginHour_str18[] = "18:00";
CPU_INT08U const DiscountBeginHour_str19[] = "19:00";
CPU_INT08U const DiscountBeginHour_str20[] = "20:00";
CPU_INT08U const DiscountBeginHour_str21[] = "21:00";
CPU_INT08U const DiscountBeginHour_str22[] = "22:00";
CPU_INT08U const DiscountBeginHour_str23[] = "23:00";
CPU_INT08U const *DiscountBeginHourList[] = {DiscountBeginHour_str0, DiscountBeginHour_str1, DiscountBeginHour_str2, DiscountBeginHour_str3,
DiscountBeginHour_str4, DiscountBeginHour_str5, DiscountBeginHour_str6, DiscountBeginHour_str7,
DiscountBeginHour_str8, DiscountBeginHour_str9, DiscountBeginHour_str10, DiscountBeginHour_str11,
DiscountBeginHour_str12, DiscountBeginHour_str13, DiscountBeginHour_str14, DiscountBeginHour_str15,
DiscountBeginHour_str16, DiscountBeginHour_str17, DiscountBeginHour_str18, DiscountBeginHour_str19,
DiscountBeginHour_str20, DiscountBeginHour_str21, DiscountBeginHour_str22, DiscountBeginHour_str23};
void OnChangeDiscountBegin(void)
{
CPU_INT32U begin_val, end_val;
GetData(&DiscountBeginHourDesc, &begin_val, discount_index, DATA_FLAG_DIRECT_INDEX);
GetData(&DiscountEndHourDesc, &end_val, discount_index, DATA_FLAG_DIRECT_INDEX);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE2);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE3);
if (end_val < begin_val)
{
end_val = begin_val;
SetData(&DiscountEndHourDesc, &end_val, discount_index, DATA_FLAG_DIRECT_INDEX);
}
}
TDataDescStruct const DiscountBeginHourDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà
(void*)&DiscountIndexHourDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DiscountHourBegin), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountBeginHourRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeDiscountBegin, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountBeginHourName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DiscountBeginHourList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const DiscountBeginHourDescId[] = "DiscountBeginHourDesc";
/*************************************
Êîíåö èíòåðâàëà ñêèäêè ïî ÷àñàì
*************************************/
CPU_INT08U const DiscountEndHourName[] = "Îêîí÷àíèå";
TRangeValueULONG const DiscountEndHourRange = {0, 23};
CPU_INT08U const DiscountEndHour_str0[] = "00:59";
CPU_INT08U const DiscountEndHour_str1[] = "01:59";
CPU_INT08U const DiscountEndHour_str2[] = "02:59";
CPU_INT08U const DiscountEndHour_str3[] = "03:59";
CPU_INT08U const DiscountEndHour_str4[] = "04:59";
CPU_INT08U const DiscountEndHour_str5[] = "05:59";
CPU_INT08U const DiscountEndHour_str6[] = "06:59";
CPU_INT08U const DiscountEndHour_str7[] = "07:59";
CPU_INT08U const DiscountEndHour_str8[] = "08:59";
CPU_INT08U const DiscountEndHour_str9[] = "09:59";
CPU_INT08U const DiscountEndHour_str10[] = "10:59";
CPU_INT08U const DiscountEndHour_str11[] = "11:59";
CPU_INT08U const DiscountEndHour_str12[] = "12:59";
CPU_INT08U const DiscountEndHour_str13[] = "13:59";
CPU_INT08U const DiscountEndHour_str14[] = "14:59";
CPU_INT08U const DiscountEndHour_str15[] = "15:59";
CPU_INT08U const DiscountEndHour_str16[] = "16:59";
CPU_INT08U const DiscountEndHour_str17[] = "17:59";
CPU_INT08U const DiscountEndHour_str18[] = "18:59";
CPU_INT08U const DiscountEndHour_str19[] = "19:59";
CPU_INT08U const DiscountEndHour_str20[] = "20:59";
CPU_INT08U const DiscountEndHour_str21[] = "21:59";
CPU_INT08U const DiscountEndHour_str22[] = "22:59";
CPU_INT08U const DiscountEndHour_str23[] = "23:59";
CPU_INT08U const *DiscountEndHourList[] = {DiscountEndHour_str0, DiscountEndHour_str1, DiscountEndHour_str2, DiscountEndHour_str3,
DiscountEndHour_str4, DiscountEndHour_str5, DiscountEndHour_str6, DiscountEndHour_str7,
DiscountEndHour_str8, DiscountEndHour_str9, DiscountEndHour_str10, DiscountEndHour_str11,
DiscountEndHour_str12, DiscountEndHour_str13, DiscountEndHour_str14, DiscountEndHour_str15,
DiscountEndHour_str16, DiscountEndHour_str17, DiscountEndHour_str18, DiscountEndHour_str19,
DiscountEndHour_str20, DiscountEndHour_str21, DiscountEndHour_str22, DiscountEndHour_str23};
void OnChangeDiscountEnd(void)
{
CPU_INT32U begin_val, end_val;
GetData(&DiscountBeginHourDesc, &begin_val, discount_index, DATA_FLAG_DIRECT_INDEX);
GetData(&DiscountEndHourDesc, &end_val, discount_index, DATA_FLAG_DIRECT_INDEX);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE2);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE3);
if (begin_val >= end_val)
{
begin_val = end_val;
SetData(&DiscountBeginHourDesc, &begin_val, discount_index, DATA_FLAG_DIRECT_INDEX);
}
}
TDataDescStruct const DiscountEndHourDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà
(void*)&DiscountIndexHourDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DiscountHourEnd), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountEndHourRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeDiscountEnd, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountEndHourName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DiscountEndHourList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const DiscountEndHourDescId[] = "DiscountEndHourDesc";
/*************************************
Çíà÷åíèå ñêèäêè ïî ÷àñàì â ïðîöåíòàõ
*************************************/
CPU_INT08U const DiscountValueHourName[] = "Ñêèäêà,%";
TRangeValueULONG const DiscountValueHourRange = {0, 99};
void OnChangeDiscountValueHour(void)
{
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE2);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE3);
}
TDataDescStruct const DiscountValueHourDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà
(void*)&DiscountIndexHourDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DiscountHourValue), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountValueHourRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeDiscountValueHour, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountValueHourName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const DiscountValueHourDescId[] = "DiscountValueHourDesc";
/*************************************
Èíäåêñ ñêèäêè ïî äíÿì íåäåëè
*************************************/
CPU_INT08U const DiscountIndexDayName[] = " ÑÊÈÄÊÀ";
TRangeValueULONG const DiscountIndexDayRange = {0, 6};
CPU_INT08U const DiscountIndexDay_str0[] = "ÂÑ";
CPU_INT08U const DiscountIndexDay_str1[] = "ÏÍ";
CPU_INT08U const DiscountIndexDay_str2[] = "ÂÒ";
CPU_INT08U const DiscountIndexDay_str3[] = "ÑÐ";
CPU_INT08U const DiscountIndexDay_str4[] = "×Ò";
CPU_INT08U const DiscountIndexDay_str5[] = "ÏÒ";
CPU_INT08U const DiscountIndexDay_str6[] = "ÑÁ";
CPU_INT08U const *DiscountIndexDayList[] = {DiscountIndexDay_str0, DiscountIndexDay_str1, DiscountIndexDay_str2, DiscountIndexDay_str3, DiscountIndexDay_str4, DiscountIndexDay_str5, DiscountIndexDay_str6};
TDataDescStruct const DiscountIndexDayDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&discount_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountIndexDayRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountIndexDayName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DiscountIndexDayList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const DiscountIndexDayDescId[] = "DiscountIndexDayDesc";
/*************************************
Çíà÷åíèå ñêèäêè ïî äíÿì íåäåëè â ïðîöåíòàõ
*************************************/
CPU_INT08U const DiscountValueDayName[] = "Ñêèäêà,%";
TRangeValueULONG const DiscountValueDayRange = {0, 99};
void OnChangeDiscountValueDay(void)
{
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE2);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE3);
}
TDataDescStruct const DiscountValueDayDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
7, // ðàçìåð ìàññèâà
(void*)&DiscountIndexDayDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DiscountDayValue), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountValueDayRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeDiscountValueDay, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountValueDayName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const DiscountValueDayDescId[] = "DiscountValueDayDesc";
/*************************************
Èíäåêñ ñêèäêè ïî ìåñÿöàì
*************************************/
CPU_INT08U const DiscountIndexMonthName[] = "ÑÊÈÄÊÀ";
TRangeValueULONG const DiscountIndexMonthRange = {0, 11};
CPU_INT08U const DiscountIndexMonth_str0[] = "ßÍÂÀÐb";
CPU_INT08U const DiscountIndexMonth_str1[] = "ÔÅÂÐÀËb";
CPU_INT08U const DiscountIndexMonth_str2[] = "ÌÀÐÒ";
CPU_INT08U const DiscountIndexMonth_str3[] = "ÀÏÐÅËb";
CPU_INT08U const DiscountIndexMonth_str4[] = "ÌÀé";
CPU_INT08U const DiscountIndexMonth_str5[] = "ÈÞÍb";
CPU_INT08U const DiscountIndexMonth_str6[] = "ÈÞËb";
CPU_INT08U const DiscountIndexMonth_str7[] = "ÀÂÃÓÑÒ";
CPU_INT08U const DiscountIndexMonth_str8[] = "ÑÅÍÒßÁÐb";
CPU_INT08U const DiscountIndexMonth_str9[] = "ÎÊÒßÁÐb";
CPU_INT08U const DiscountIndexMonth_str10[] = "ÍÎßÁÐb";
CPU_INT08U const DiscountIndexMonth_str11[] = "ÄÅÊÀÁÐb";
CPU_INT08U const *DiscountIndexMonthList[] = {DiscountIndexMonth_str0, DiscountIndexMonth_str1, DiscountIndexMonth_str2,
DiscountIndexMonth_str3, DiscountIndexMonth_str4, DiscountIndexMonth_str5,
DiscountIndexMonth_str6, DiscountIndexMonth_str7, DiscountIndexMonth_str8,
DiscountIndexMonth_str9, DiscountIndexMonth_str10, DiscountIndexMonth_str11};
TDataDescStruct const DiscountIndexMonthDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&discount_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountIndexMonthRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountIndexMonthName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DiscountIndexMonthList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const DiscountIndexMonthDescId[] = "DiscountIndexMonthDesc";
/*************************************
Çíà÷åíèå ñêèäêè ïî ìåñÿöàì â ïðîöåíòàõ
*************************************/
CPU_INT08U const DiscountValueMonthName[] = "Ñêèäêà,%";
TRangeValueULONG const DiscountValueMonthRange = {0, 99};
void OnChangeDiscountValueMonth(void)
{
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE2);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE3);
}
TDataDescStruct const DiscountValueMonthDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
12, // ðàçìåð ìàññèâà
(void*)&DiscountIndexMonthDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DiscountMonthValue), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountValueMonthRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeDiscountValueMonth, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountValueMonthName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const DiscountValueMonthDescId[] = "DiscountValueMonthDesc";
/*************************************
Èíäåêñ ñêèäêè ðàçîâîé
*************************************/
CPU_INT08U const DiscountIndexCustomName[] = " ÑÊÈÄÊÀ";
TRangeValueULONG const DiscountIndexCustomRange = {0, 2};
CPU_INT08U const DiscountIndexCustom_str0[] = "1";
CPU_INT08U const DiscountIndexCustom_str1[] = "2";
CPU_INT08U const DiscountIndexCustom_str2[] = "3";
CPU_INT08U const *DiscountIndexCustomList[] = {DiscountIndexCustom_str0, DiscountIndexCustom_str1, DiscountIndexCustom_str2};
TDataDescStruct const DiscountIndexCustomDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&discount_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountIndexCustomRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountIndexCustomName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
DiscountIndexCustomList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const DiscountIndexCustomDescId[] = "DiscountIndexCustomDesc";
/*************************************
Çíà÷åíèå ñêèäêè ðàçîâîé
*************************************/
CPU_INT08U const DiscountValueCustomName[] = "Ñêèäêà,%";
TRangeValueULONG const DiscountValueCustomRange = {0, 99};
void OnChangeDiscountValueCustom(void)
{
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE2);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE3);
}
TDataDescStruct const DiscountValueCustomDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
3, // ðàçìåð ìàññèâà
(void*)&DiscountIndexCustomDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DiscountCustomValue), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&DiscountValueCustomRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeDiscountValueCustom, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountValueCustomName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const DiscountValueCustomDescId[] = "DiscountValueCustomDesc";
/*************************************
Äàòà íà÷àëà ðàçîâîé ñêèäêè
*************************************/
CPU_INT08U const DiscountDateBeginCustomName[] = "Îò";
void OnChangeDiscountDateBeginCustomDesc(void)
{
CPU_INT32U begin, end;
GetData(&DiscountDateBeginCustomDesc, &begin, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&DiscountDateEndCustomDesc, &end, 0, DATA_FLAG_SYSTEM_INDEX);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE2);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE3);
if (begin > end)
{
end = begin;
SetData(&DiscountDateEndCustomDesc, &end, 0, DATA_FLAG_SYSTEM_INDEX);
}
}
TDataDescStruct const DiscountDateBeginCustomDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_DATE, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
3, // ðàçìåð ìàññèâà
(void*)&DiscountIndexCustomDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DiscountBeginDateValue), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountDateBeginCustomName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const DiscountDateBeginCustomDescId[] = "DiscountDateBeginCustomDesc";
/*************************************
Äàòà êîíöà ðàçîâîé ñêèäêè
*************************************/
CPU_INT08U const DiscountDateEndCustomName[] = "Äî";
void OnChangeDiscountDateEndCustomDesc(void)
{
CPU_INT32U begin, end;
GetData(&DiscountDateBeginCustomDesc, &begin, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&DiscountDateEndCustomDesc, &end, 0, DATA_FLAG_SYSTEM_INDEX);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE1);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE2);
PostScoreEvent(SCORE_EVENT_UPDATE_PRICE3);
if (end < begin)
{
begin = end;
SetData(&DiscountDateBeginCustomDesc, &begin, 0, DATA_FLAG_SYSTEM_INDEX);
}
}
TDataDescStruct const DiscountDateEndCustomDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_DATE, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
3, // ðàçìåð ìàññèâà
(void*)&DiscountIndexCustomDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, DiscountEndDateValue), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountDateEndCustomName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const DiscountDateEndCustomDescId[] = "DiscountDateEndCustomDesc";
/*************************************
Çíà÷åíèå òåêóùåé ñêèäêè
*************************************/
CPU_INT08U const DiscountValueCurrentName[] = "Òåêóùàÿ,%";
CPU_INT32U current_discount;
TDataDescStruct const DiscountValueCurrentDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&current_discount, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
DiscountValueCurrentName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const DiscountValueCurrentDescId[] = "DiscountValueCurrentDesc";
/*************************************
Èíäåêñ òàáëî
*************************************/
CPU_INT08U const ScoreIndexName[] = "ÒÀÁËÎ";
TRangeValueULONG const ScoreIndexRange = {0, SCORE_COUNT - 1};
CPU_INT08U const ScoreIndex_str0[] = "ÂÐÅÌÅÍÈ 1";
CPU_INT08U const ScoreIndex_str1[] = "ÂÐÅÌÅÍÈ 2";
CPU_INT08U const ScoreIndex_str2[] = "ÂÐÅÌÅÍÈ 3";
CPU_INT08U const ScoreIndex_str3[] = "ÖÅÍ 1";
CPU_INT08U const ScoreIndex_str4[] = "ÖÅÍ 2";
CPU_INT08U const ScoreIndex_str5[] = "ÖÅÍ 3";
CPU_INT08U const *ScoreIndexList[] = {ScoreIndex_str0, ScoreIndex_str1, ScoreIndex_str2, ScoreIndex_str3, ScoreIndex_str4, ScoreIndex_str5};
CPU_INT32U score_index;
TDataDescStruct const ScoreIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&score_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ScoreIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ScoreIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ScoreIndexList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const ScoreIndexDescId[] = "ScoreIndexDesc";
/*************************************
Âêëþ÷åíèå òàáëî
*************************************/
CPU_INT08U const ScoreEnableName[] = "Âêëþ÷èòü";
TRangeValueULONG const ScoreEnableRange = {0, 1};
CPU_INT08U const ScoreEnable_str0[] = "íåò";
CPU_INT08U const ScoreEnable_str1[] = "äà";
CPU_INT08U const *ScoreEnableList[] = {ScoreEnable_str0, ScoreEnable_str1};
TDataDescStruct const ScoreEnableDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SCORE_COUNT, // ðàçìåð ìàññèâà
&ScoreIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ScoreEnable), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ScoreEnableRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ScoreEnableName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ScoreEnableList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const ScoreEnableDescId[] = "ScoreEnableDesc";
/*************************************
Ñêîðîñòü ñâÿçè (îáùàÿ äëÿ òàáëî)
*************************************/
CPU_INT08U const ScoreRs485SpeedName[] = "Ñêîðîñòü,áîä";
TRangeValueULONG const ScoreRs485SpeedRange = {0, 7};
CPU_INT08U const ScoreRs485Speed_str0[] = "1200";
CPU_INT08U const ScoreRs485Speed_str1[] = "2400";
CPU_INT08U const ScoreRs485Speed_str2[] = "4800";
CPU_INT08U const ScoreRs485Speed_str3[] = "9600";
CPU_INT08U const ScoreRs485Speed_str4[] = "19200";
CPU_INT08U const ScoreRs485Speed_str5[] = "38400";
CPU_INT08U const ScoreRs485Speed_str6[] = "57600";
CPU_INT08U const ScoreRs485Speed_str7[] = "115200";
CPU_INT08U const *ScoreRs485SpeedList[] = {ScoreRs485Speed_str0, ScoreRs485Speed_str1, ScoreRs485Speed_str2, ScoreRs485Speed_str3,
ScoreRs485Speed_str4, ScoreRs485Speed_str5, ScoreRs485Speed_str6, ScoreRs485Speed_str7};
void OnChangeScoreRs485SpeedDesc(void)
{
PostScoreEvent(SCORE_EVENT_CHANGE_SPEED);
}
TDataDescStruct const ScoreRs485SpeedDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ScoreRs485Speed), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ScoreRs485SpeedRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeScoreRs485SpeedDesc, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ScoreRs485SpeedName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ScoreRs485SpeedList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
3
};
char const ScoreRs485SpeedDescId[] = "ScoreRs485SpeedDesc";
/*************************************
Àäðåñ òàáëî
*************************************/
CPU_INT08U const ScoreRs485AddressName[] = "Àäðåñ";
TRangeValueULONG const ScoreRs485AddressRange = {1, 254};
TDataDescStruct const ScoreRs485AddressDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SCORE_COUNT, // ðàçìåð ìàññèâà
&ScoreIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ScoreRs485Address), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ScoreRs485AddressRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ScoreRs485AddressName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
};
char const ScoreRs485AddressDescId[] = "ScoreRs485AddressDesc";
/*************************************
Ðàçäåëèòåëü äëÿ òàáëî òî÷êà èëè äâîåòî÷èå
*************************************/
CPU_INT08U const ScoreColumnName[] = "Ðàçäåëèòåëü";
TRangeValueULONG const ScoreColumnRange = {0, 1};
CPU_INT08U const ScoreColumn_str0[] = ":";
CPU_INT08U const ScoreColumn_str1[] = ".";
CPU_INT08U const *ScoreColumnList[] = {ScoreColumn_str0, ScoreColumn_str1};
TDataDescStruct const ScoreColumnDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SCORE_COUNT, // ðàçìåð ìàññèâà
&ScoreIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, ScoreColumn), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ScoreColumnRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ScoreColumnName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ScoreColumnList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const ScoreColumnDescId[] = "ScoreColumnDesc";
/*************************************
Êîìàíäà íàñòðîéêè òàáëî
*************************************/
CPU_INT08U const ScoreCommandName[] = "Íàñòðîèòü";
TRangeValueULONG const ScoreCommandRange = {0, 1};
CPU_INT08U const ScoreCommand_str0[] = "íåò";
CPU_INT08U const ScoreCommand_str1[] = "äà";
CPU_INT08U const *ScoreCommandList[] = {ScoreCommand_str0, ScoreCommand_str1};
CPU_INT32U score_cmd;
void OnchangeScoreCommand(void)
{
if (score_cmd)
{
PostScoreEvent(SCORE_EVENT_SETUP1 + score_index);
}
}
TDataDescStruct const ScoreCommandDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&score_cmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ScoreCommandRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnchangeScoreCommand, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ScoreCommandName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ScoreCommandList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const ScoreCommandDescId[] = "ScoreCommandDesc";
/*************************************
Ñòàòóñ ïîäêëþ÷åíèÿ òàáëî
*************************************/
CPU_INT08U const ScoreStateName[] = "Ñîñòîÿíèå";
TRangeValueULONG const ScoreStateRange = {0, 3};
CPU_INT08U const ScoreState_str0[] = "îòêë";
CPU_INT08U const ScoreState_str1[] = "ïîäêë";
CPU_INT08U const ScoreState_str2[] = "îøèáêà";
CPU_INT08U const ScoreState_str3[] = "íàñòðîéêà";
CPU_INT08U const *ScoreStateList[] = {ScoreState_str0, ScoreState_str1, ScoreState_str2, ScoreState_str3};
TDataDescStruct const ScoreStateDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SCORE_COUNT, // ðàçìåð ìàññèâà
&ScoreIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&score_state, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ScoreStateRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ScoreStateName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ScoreStateList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const ScoreStateDescId[] = "ScoreStateDesc";
/*************************************
Èíäåêñ òèïîâ êîæè
*************************************/
CPU_INT08U const SkinTypeIndexName[] = "ÒÈÏ ÊÎÆÈ";
TRangeValueULONG const SkinTypeIndexRange = {0, 3};
CPU_INT08U const SkinTypeIndex_str0[] = "1";
CPU_INT08U const SkinTypeIndex_str1[] = "2";
CPU_INT08U const SkinTypeIndex_str2[] = "3";
CPU_INT08U const SkinTypeIndex_str3[] = "4";
CPU_INT08U const *SkinTypeIndexList[] = {SkinTypeIndex_str0, SkinTypeIndex_str1, SkinTypeIndex_str2, SkinTypeIndex_str3};
CPU_INT32U skin_index;
TDataDescStruct const SkinTypeIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&skin_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SkinTypeIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SkinTypeIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
SkinTypeIndexList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const SkinTypeIndexDescId[] = "SkinTypeIndexDesc";
/*************************************
Ìàêñèìàëüíîå âðåìÿ ÊÎËËÀÒÝÍÀ ïî òèïó êîæè
*************************************/
CPU_INT08U const SkinCollatenMaxTimeName[] = "ÊÎËËÀÒÝÍ,ìèí.";
TRangeValueULONG const SkinCollatenMaxTimeRange = {0, 999};
TDataDescStruct const SkinCollatenMaxTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà
&SkinTypeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SkinCollatenMaxTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SkinCollatenMaxTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SkinCollatenMaxTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SkinCollatenMaxTimeDescId[] = "SkinCollatenMaxTimeDesc";
/*************************************
Ìàêñèìàëüíîå âðåìÿ ÓËÜÒÐÀÔÈÎËÅÒÀ ïî òèïó êîæè
*************************************/
CPU_INT08U const SkinUFMaxTimeName[] = "ÓËbÒÐÀÔ.,ìèí.";
TRangeValueULONG const SkinUFMaxTimeRange = {0, 999};
TDataDescStruct const SkinUFMaxTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà
&SkinTypeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SkinUFMaxTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SkinUFMaxTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SkinUFMaxTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SkinUFMaxTimeDescId[] = "SkinUFMaxTimeDesc";
/*************************************
Ìàêñèìàëüíîå âðåìÿ ÌÀÊÑÈÌÀËÜÍÛÉ ïî òèïó êîæè
*************************************/
CPU_INT08U const SkinMaximalMaxTimeName[] = "ÌÀÊÑ.,ìèí.";
TRangeValueULONG const SkinMaximalMaxTimeRange = {0, 999};
TDataDescStruct const SkinMaximalMaxTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà
&SkinTypeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SkinMaximalMaxTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&SkinMaximalMaxTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
SkinMaximalMaxTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SkinMaximalMaxTimeDescId[] = "SkinMaximalMaxTimeDesc";
/*************************************
Äåñêðèïòîð äëÿ ýíåðãîíåçàâèñèìîãî ñîõðàíåíèÿ îïëà÷åííîãî âðåìåíè äëÿ ñîëÿðèÿ
*************************************/
TDataDescStruct const SolariumTimePayedDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumTimePayed), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SolariumTimePayedDescId[] = "SolariumTimePayedDesc";
/*************************************
Äåñêðèïòîð äëÿ ýíåðãîíåçàâèñèìîãî ñîõðàíåíèÿ îïëà÷åííûõ äåíåã äëÿ ñîëÿðèÿ
*************************************/
TDataDescStruct const SolariumMoneyPayedDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumMoneyPayed), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SolariumMoneyPayedDescId[] = "SolariumMoneyPayedDesc";
/*************************************
Äåñêðèïòîð Crc16 ýíåðãîíåçàâèñèìîãî ñîõðàíåíèÿ îïëà÷åííîãî âðåìåíè äëÿ ñîëÿðèÿ
*************************************/
TDataDescStruct const SolariumTimePayedCrc16Desc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, SolariumTimePayedCrc16), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
NULL, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const SolariumTimePayedCrc16DescId[] = "SolariumTimePayedCrc16Desc";
/*************************************
Ñóììà äåíåã ðàçäåëüíî ïî ñîëÿðèÿì è ðåæèìàì
*************************************/
CPU_INT08U const CounterSolarMoneyName[] = "Äåíüãè,ðóá.";
TDataDescStruct const CounterSolarMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_chm[0].money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterSolarMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterSolarMoneyDescId[] = "CounterSolarMoneyDesc";
/*************************************
Ñóììà ñ êàðò àáîíåíòîâ äåíåã ðàçäåëüíî ïî ñîëÿðèÿì è ðåæèìàì
*************************************/
CPU_INT08U const CounterSolarCardMoneyName[] = "Ê_Äåíüãè,ðóá.";
TDataDescStruct const CounterSolarCardMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_chm[0].card_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterSolarCardMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterSolarCardMoneyDescId[] = "CounterSolarCardMoneyDesc";
/*************************************
Ñóììà ñ êàðò àáîíåíòîâ áîíóñîâ ðàçäåëüíî ïî ñîëÿðèÿì è ðåæèìàì
*************************************/
CPU_INT08U const CounterSolarCardBonusName[] = "Ê_Áîíóñû,ðóá.";
TDataDescStruct const CounterSolarCardBonusDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_chm[0].card_bonus), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterSolarCardBonusName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterSolarCardBonusDescId[] = "CounterSolarCardBonusDesc";
/*************************************
Êîëè÷åñòâî çàïóñêîâ ðàçäåëüíî ïî ñîëÿðèÿì è ðåæèìàì
*************************************/
CPU_INT08U const CounterSolarRunsName[] = "Çàïóñêîâ";
TDataDescStruct const CounterSolarRunsDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_chm[0].runs), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterSolarRunsName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterSolarRunsDescId[] = "CounterSolarRunsDesc";
/*************************************
Êîëè÷åñòâî çàïóñêîâ ðàçäåëüíî ïî ñîëÿðèÿì è ðåæèìàì â òåñòîâîì ðåæèìå
*************************************/
CPU_INT08U const CounterSolarTestRunsName[] = "Òåñòîâ";
TDataDescStruct const CounterSolarTestRunsDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_chm_test[0].runs), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterSolarTestRunsName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterSolarTestRunsDescId[] = "CounterSolarTestRunsDesc";
/*************************************
Âðåìÿ ðàáîòû ðàçäåëüíî ïî ñîëÿðèÿì è ðåæèìàì
*************************************/
CPU_INT08U const CounterSolarWorkTimeName[] = "Íàðàá.,ìèí.";
TDataDescStruct const CounterSolarWorkTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_M, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_chm[0].worktime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterSolarWorkTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterSolarWorkTimeDescId[] = "CounterSolarWorkTimeDesc";
/*************************************
Âðåìÿ ðàáîòû ðàçäåëüíî ïî ñîëÿðèÿì è ðåæèìàì â òåñòîâîì ðåæèìå
*************************************/
CPU_INT08U const CounterSolarTestWorkTimeName[] = "Òåñò,ìèí.";
TDataDescStruct const CounterSolarTestWorkTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_M, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModesDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_chm_test[0].worktime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterSolarTestWorkTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterSolarTestWorkTimeDescId[] = "CounterSolarTestWorkTimeDesc";
/*************************************
Ñóììà äåíåã ïî ðåæèìàì
*************************************/
CPU_INT08U const CounterModeMoneyName[] = "Äåíüãè,ðóá.";
TDataDescStruct const CounterModeMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_m[0].money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterModeMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterModeMoneyDescId[] = "CounterModeMoneyDesc";
/*************************************
Ñóììà äåíåã ïî ðåæèìàì ïî àáîíåìåíòàì
*************************************/
CPU_INT08U const CounterModeCardMoneyName[] = "Ê_Äåíüãè,ðóá.";
TDataDescStruct const CounterModeCardMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_m[0].card_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterModeCardMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterModeCardMoneyDescId[] = "CounterModeCardMoneyDesc";
/*************************************
Ñóììà áîíóñîâ ïî ðåæèìàì ïî àáîíåìåíòàì
*************************************/
CPU_INT08U const CounterModeCardBonusName[] = "Ê_Áîíóñû,ðóá.";
TDataDescStruct const CounterModeCardBonusDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_m[0].card_bonus), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterModeCardBonusName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterModeCardBonusDescId[] = "CounterModeCardBonusDesc";
/*************************************
Êîëè÷åñòâî çàïóñêîâ ïî ðåæèìàì
*************************************/
CPU_INT08U const CounterModeRunsName[] = "Çàïóñêîâ";
TDataDescStruct const CounterModeRunsDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_m[0].runs), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterModeRunsName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterModeRunsDescId[] = "CounterModeRunsDesc";
/*************************************
Êîëè÷åñòâî çàïóñêîâ ïî ðåæèìàì â òåñòîâîì ðåæèìå
*************************************/
CPU_INT08U const CounterModeTestRunsName[] = "Òåñòîâ";
TDataDescStruct const CounterModeTestRunsDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_m_test[0].runs), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterModeTestRunsName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterModeTestRunsDescId[] = "CounterModeTestRunsDesc";
/*************************************
Âðåìÿ ðàáîòû ïî ðåæèìàì
*************************************/
CPU_INT08U const CounterModeWorkTimeName[] = "Íàðàá.ìèí.";
TDataDescStruct const CounterModeWorkTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_M, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_m[0].worktime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterModeWorkTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterModeWorkTimeDescId[] = "CounterModeWorkTimeDesc";
/*************************************
Âðåìÿ ðàáîòû ïî ðåæèìàì â òåñòîâîì ðåæèìå
*************************************/
CPU_INT08U const CounterModeWorkTestTimeName[] = "Òåñò,ìèí.";
TDataDescStruct const CounterModeWorkTestTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_M, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
&SolariumModeIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.solar_m_test[0].worktime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(SolarCountersRecord), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterModeWorkTestTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterModeWorkTestTimeDescId[] = "CounterModeWorkTestTimeDesc";
/*************************************
Ñ÷åò÷èê íàðàáîòêè ëàìï êîëëàòåí + ìàêñè
*************************************/
CPU_INT08U const CounterCollatenTimeName[] = "Êîëë.÷:ìì";
TDataDescStruct const CounterCollatenTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_H_MM, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.collaten_time), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCollatenTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterCollatenTimeDescId[] = "CounterCollatenTimeDesc";
/*************************************
Ñ÷åò÷èê íàðàáîòêè ëàìï óëüòðàôèîëåò + ìàêñè
*************************************/
CPU_INT08U const CounterUFTimeName[] = "ÓÔ ÷:ìì";
TDataDescStruct const CounterUFTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_H_MM, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.uf_time), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterUFTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterUFTimeDescId[] = "CounterUFTimeDesc";
/*************************************
Îáùåå êîëè÷åñòâî òåñòîâûõ çàïóñêîâ ïî ñîëÿðèÿì
*************************************/
CPU_INT08U const CounterAllTestCountName[] = "Êîë.òåñòîâ";
TDataDescStruct const CounterAllTestCountDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.test_count), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterAllTestCountName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterAllTestCountDescId[] = "CounterAllTestCountDesc";
/*************************************
Îáùåå âðåìÿ òåñòîâûõ çàïóñêîâ ïî ñîëÿðèÿì
*************************************/
CPU_INT08U const CounterAllTestTimeName[] = "Òåñòû,ìèí.";
TDataDescStruct const CounterAllTestTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_M, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.test_time), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterAllTestTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterAllTestTimeDescId[] = "CounterAllTestTimeDesc";
/*************************************
Ñ÷åò÷èê äëèòåëüíîñòè óáîðîê
*************************************/
CPU_INT08U const CounterCleaningTimeName[] = "Óáîðêà,ìèí.";
TDataDescStruct const CounterCleaningTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_M, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.cleaning_time), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCleaningTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterCleaningTimeDescId[] = "CounterCleaningTimeDesc";
/*************************************
Ñ÷åò÷èê êîëè÷åñòâà óáîðîê
*************************************/
CPU_INT08U const CounterCleaningCountName[] = "Êîë.óáîðîê";
TDataDescStruct const CounterCleaningCountDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.cleaning_count), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCleaningCountName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterCleaningCountDescId[] = "CounterCleaningCountDesc";
/*************************************
Ñðåäíÿÿ äëèòåëüíîñòü óáîðêè
*************************************/
CPU_INT08U const CounterCleaningMeanTimeName[] = "Ñð.äë.óá.";
TDataDescStruct const CounterCleaningMeanTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_M_SS, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.cleaning_mean_time), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCleaningMeanTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterCleaningMeanTimeDescId[] = "CounterCleaningMeanTimeDesc";
/*************************************
Ñðåäíÿÿ äëèòåëüíîñòü òåñòà
*************************************/
CPU_INT08U const CounterTestMeanTimeName[] = "Ñð.äë.òåñòîâ";
TDataDescStruct const CounterTestMeanTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME_SEC_M_SS, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM, // ðàçìåð ìàññèâà
&ChannelIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.test_mean_time), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterTestMeanTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterTestMeanTimeDescId[] = "CounterTestMeanTimeDesc";
/*************************************
Îáùèé ñ÷åò÷èê äåíåã
*************************************/
CPU_INT08U const CounterCommonMoneyName[] = "ÂÑÅÃÎ,ðóá.";
TDataDescStruct const CounterCommonMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.common_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCommonMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterCommonMoneyDescId[] = "CounterCommonMoneyDesc";
/*************************************
C÷åò÷èê íàëè÷íûõ äåíåã
*************************************/
CPU_INT08U const CounterCashMoneyName[] = "ÍÀË.,ðóá.";
TDataDescStruct const CounterCashMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.cash_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCashMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterCashMoneyDescId[] = "CounterCashMoneyDesc";
/*************************************
C÷åò÷èê áåçíàëè÷íûõ äåíåã
*************************************/
CPU_INT08U const CounterCardMoneyName[] = "ÁÀÍÊ.,ðóá.";
TDataDescStruct const CounterCardMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.card_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterCardMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterCardMoneyDescId[] = "CounterCardMoneyDesc";
/*************************************
C÷åò÷èê äåíåã ïî àáîíåìåíòàì
*************************************/
CPU_INT08U const CounterAbonementMoneyName[] = "ÊÀÐÒ.,ðóá.";
TDataDescStruct const CounterAbonementMoneyDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.abonement_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CounterAbonementMoneyName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const CounterAbonementMoneyDescId[] = "CounterAbonementMoneyDesc";
/*************************************
Âêëþ÷åíèå îáùåãî äîñòóïà ïî ïàðîëþ
*************************************/
CPU_INT08U const EnableGlobalPassName[] = "Äîñòóï ïî ïàð.";
TRangeValueULONG const EnableGlobalPassRange = {0, 1};
CPU_INT08U const EnableGlobalPass_str0[] = "íåò";
CPU_INT08U const EnableGlobalPass_str1[] = "äà";
CPU_INT08U const *EnableGlobalPassList[] = {EnableGlobalPass_str0, EnableGlobalPass_str1};
TDataDescStruct const EnableGlobalPassDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, EnableGlobalPass), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableGlobalPassRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableGlobalPassName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableGlobalPassList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const EnableGlobalPassDescId[] = "EnableGlobalPassDesc";
#endif
#if defined(CONFIG_RELAY_ENABLE)
/*************************************
Èíäåêñ ðåëå
*************************************/
CPU_INT08U const RelayIndexName[] = " ÐÅËÅ";
TRangeValueULONG const RelayIndexRange = {0, RELAY_COUNT - 1};
CPU_INT08U const RelayIndex_str0[] = "1";
CPU_INT08U const RelayIndex_str1[] = "2";
CPU_INT08U const RelayIndex_str2[] = "3";
CPU_INT08U const *RelayIndexList[] = {RelayIndex_str0, RelayIndex_str1, RelayIndex_str2};
CPU_INT32U relay_index;
TDataDescStruct const RelayIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&relay_index, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&RelayIndexRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
RelayIndexName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
RelayIndexList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const RelayIndexDescId[] = "RelayIndexDesc";
/*************************************
Âêëþ÷åíèå ðåëå
*************************************/
TDataDescStruct const RelayEnableDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
RELAY_COUNT, // ðàçìåð ìàññèâà
&RelayIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, RelayEnable), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&ScoreEnableRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
ScoreEnableName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
ScoreEnableList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const RelayEnableDescId[] = "RelayEnableDesc";
/*************************************
IP-àäðåñ ethernet-ðåëå
*************************************/
CPU_INT08U const RelayIpAddrName[] = "IP";
TDataDescStruct const RelayIpAddrDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_IP_ADDR, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
RELAY_COUNT, // ðàçìåð ìàññèâà
&RelayIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, RelayIpAddr), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
RelayIpAddrName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0xC0A800A0
};
char const RelayIpAddrDescId[] = "RelayIpAddrDesc";
/*************************************
Êàíàë ðåëå
*************************************/
CPU_INT08U const RelayChannelName[] = "Êàíàë";
TRangeValueULONG const RelayChannelRange = {0, 9};
CPU_INT08U const RelayChannel_str0[] = "1";
CPU_INT08U const RelayChannel_str1[] = "2";
CPU_INT08U const RelayChannel_str2[] = "3";
CPU_INT08U const RelayChannel_str3[] = "4";
CPU_INT08U const RelayChannel_str4[] = "1+2";
CPU_INT08U const RelayChannel_str5[] = "1+3";
CPU_INT08U const RelayChannel_str6[] = "1+4";
CPU_INT08U const RelayChannel_str7[] = "2+3";
CPU_INT08U const RelayChannel_str8[] = "2+4";
CPU_INT08U const RelayChannel_str9[] = "3+4";
CPU_INT08U const *RelayChannelList[] = {RelayChannel_str0, RelayChannel_str1, RelayChannel_str2, RelayChannel_str3, RelayChannel_str4, RelayChannel_str5, RelayChannel_str6, RelayChannel_str7, RelayChannel_str8, RelayChannel_str9};
TDataDescStruct const RelayChannelDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
RELAY_COUNT, // ðàçìåð ìàññèâà
&RelayIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, RelayChannel), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&RelayChannelRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
RelayChannelName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
RelayChannelList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const RelayChannelDescId[] = "RelayChannelDesc";
/*************************************
Âðåìÿ îòêðûòèÿ äâåðè
*************************************/
CPU_INT08U const RelayOpenTimeName[] = "Âðåìÿ îòêð,ñ";
TRangeValueULONG const RelayOpenTimeRange = {1, 3600};
TDataDescStruct const RelayOpenTimeDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
RELAY_COUNT, // ðàçìåð ìàññèâà
&RelayIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, RelayOpenTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&RelayOpenTimeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
RelayOpenTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
30
};
char const RelayOpenTimeDescId[] = "RelayOpenTimeDesc";
/*************************************
Êîìàíäà ïðîâåêè ðåëå
*************************************/
CPU_INT08U const RelayCommandName[] = "Êîìàíäà";
TRangeValueULONG const RelayCommandRange = {0, 2};
CPU_INT08U const RelayCommand_str0[] = "íåò";
CPU_INT08U const RelayCommand_str1[] = "îòêðûòü";
CPU_INT08U const RelayCommand_str2[] = "çàêðûòü";
CPU_INT08U const *RelayCommandList[] = {RelayCommand_str0, RelayCommand_str1, RelayCommand_str2};
CPU_INT32U relay_cmd;
void OnchangeRelayCommand(void)
{
if (relay_cmd == 1)
{
PostUserEvent(EVENT_OPEN_RELAY1 + relay_index);
}
else if (relay_cmd == 2)
{
PostUserEvent(EVENT_CLOSE_RELAY1 + relay_index);
}
}
TDataDescStruct const RelayCommandDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
&relay_cmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&RelayCommandRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnchangeRelayCommand, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
RelayCommandName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
RelayCommandList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const RelayCommandDescId[] = "RelayCommandDesc";
#endif
#ifdef CONFIG_FTP_CLIENT_ENABLE
/*************************************
Âêëþ÷åíèå FTP
*************************************/
TDataDescStruct const FtpEnableDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpEnable), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableChannelRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
EnableChannelName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableChannelList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const FtpEnableDescId[] = "FtpEnableDesc";
/*************************************
IP-àäðåñ FTP-ñåðâåðà
*************************************/
CPU_INT08U const FtpServerIpAddrName[] = "FTP";
TDataDescStruct const FtpServerIpAddrDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_IP_ADDR, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpServerIpAddr), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpServerIpAddrName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0x5C35600A // "92.53.96.10"
};
char const FtpServerIpAddrDescId[] = "FtpServerIpAddrDesc";
/*************************************
Ëîãèí FTP-ñåðâåðà
*************************************/
CPU_INT08U const FtpServerLoginName[] = "Ëîãèí";
CPU_INT08U const FtpServerLoginDefault[] = "xmiker_morozov";
TDataDescStruct const FtpServerLoginDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_CHAR_STRING, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
15, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpLogin), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpServerLoginName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
(CPU_INT32U)&FtpServerLoginDefault[0]
};
char const FtpServerLoginDescId[] = "FtpServerLoginDesc";
/*************************************
Ïàðîëü FTP-ñåðâåðà
*************************************/
CPU_INT08U const FtpServerPassName[] = "Ïàðîëü";
CPU_INT08U const FtpServerPassDefault[] = "Qwerty11";
TDataDescStruct const FtpServerPassDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_CHAR_STRING, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
15, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpPass), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpServerPassName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
(CPU_INT32U)&FtpServerPassDefault[0]
};
char const FtpServerPassDescId[] = "FtpServerPassDesc";
/*************************************
FTP èäåíòèôèêàòîð óñòðîéñòâà
*************************************/
CPU_INT08U const FtpDeviceNumberName[] = "ID óñòð.";
TRangeValueULONG const FtpDeviceNumberRange = {0, 99999999};
TDataDescStruct const FtpDeviceNumberDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpDeviceNumber), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&FtpDeviceNumberRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
sizeof(CPU_INT32U), // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpDeviceNumberName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const FtpDeviceNumberDescId[] = "FtpDeviceNumberDesc";
/*************************************
Âðåìÿ îòïðàâêè ñòàòèñòèêè íà FTP, ÷àñ : ìèí
*************************************/
CPU_INT08U const FtpSendHourMinName[] = "Âð.îòïð.";
TDataDescStruct const FtpSendHourMinDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_HOUR_MIN, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
0, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpSendHourMin), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&StatSendHourRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpSendHourMinName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
60 * 1
};
char const FtpSendHourMinDescId[] = "FtpSendHourMinDesc";
/*************************************
Èíòåðâàë îòïðàâêè íà FTP
*************************************/
CPU_INT08U const FtpSendIntervalName[] = "Èíòåðâàë";
TRangeValueULONG const FtpSendIntervalRange = {0, 7};
CPU_INT08U const FtpSendInterval_str0[] = "";
CPU_INT08U const FtpSendInterval_str1[] = "";
CPU_INT08U const FtpSendInterval_str2[] = "";
CPU_INT08U const FtpSendInterval_str3[] = "";
CPU_INT08U const FtpSendInterval_str4[] = "";
CPU_INT08U const FtpSendInterval_str5[] = "";
CPU_INT08U const FtpSendInterval_str6[] = "12÷";
CPU_INT08U const FtpSendInterval_str7[] = "24÷";
CPU_INT08U const *FtpSendIntervalList[] = {FtpSendInterval_str0, FtpSendInterval_str1, FtpSendInterval_str2, FtpSendInterval_str3,
FtpSendInterval_str4, FtpSendInterval_str5, FtpSendInterval_str6, FtpSendInterval_str7};
TDataDescStruct const FtpSendIntervalDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpSendIntervalIndex), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&FtpSendIntervalRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpSendIntervalName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
FtpSendIntervalList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
7
};
char const FtpSendIntervalDescId[] = "FtpSendIntervalDesc";
/*************************************
Ïîñëåäíåå âðåìÿ îòïðàâêè íà ftp
*************************************/
CPU_INT08U const FtpLastSendTimeName[] = "Ïîñë.âð.";
TDataDescStruct const FtpLastSendTimeDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_TIME, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpLastTime), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpLastSendTimeName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_NO_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
NULL, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
0
};
char const FtpLastSendTimeDescId[] = "FtpLastSendTimeDesc";
/*************************************
Ïîñëåäíèé ðåçóëüòàò îòïðàâêè íà FTP
*************************************/
CPU_INT08U const FtpLastSendResultName[] = "Ïîñë.ñòàòóñ";
TRangeValueULONG const FtpLastSendResultRange = {0, 1};
CPU_INT08U const FtpLastSendResult_str0[] = "ÎØÈÁÊÀ";
CPU_INT08U const FtpLastSendResult_str1[] = "ÎÊ";
CPU_INT08U const FtpLastSendResult_str2[] = "ÍÅÈÇÂÅÑÒÍÎ";
CPU_INT08U const *FtpLastSendResultList[] = {FtpLastSendResult_str0, FtpLastSendResult_str1, FtpLastSendResult_str2};
TDataDescStruct const FtpLastSendResultDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, FtpLastResult), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&FtpLastSendResultRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
NULL, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpLastSendResultName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
FtpLastSendResultList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
2
};
char const FtpLastSendResultDescId[] = "FtpLastSendResultDesc";
/*************************************
Êîìàíäà îòïðàâèòü äàííûå íà ftp ñåé÷àñ
*************************************/
CPU_INT08U const FtpSendNowCmdName[] = "Îòïðàâèòü";
CPU_INT32U ftp_send_cmd;
extern CPU_INT08U time_to_ftp;
void OnChangeFtpSendNowCmd(void)
{
if (ftp_send_cmd != 0)
{
time_to_ftp = FTP_FLAG_SEND_COUNTERS | FTP_FLAG_SEND_LOGS;
}
}
TDataDescStruct const FtpSendNowCmdDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà
DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_RAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_NO_ARRAY, // ïðèçíàê ìàññèâà
0, // ðàçìåð ìàññèâà
NULL, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)&ftp_send_cmd, // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&EnableChannelRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
OnChangeFtpSendNowCmd, // ôóíêöèÿ ïî èçìåíåíèþ
0, // ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
FtpSendNowCmdName, // óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
EnableChannelList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_ENABLE,
0
};
char const FtpSendNowCmdDescId[] = "FtpSendNowCmdDesc";
#endif // #ifdef CONFIG_FTP_CLIENT_ENABLE
char const WorkTimeDescArrId[] = "WorkTimeDesc";
char const ChannelIndexDescArrId[] = "ChannelIndexDesc";
char const EnableChannelDescArrId[] = "EnableChannelDesc";
char const EnableValidatorDescArrId[] = "EnableValidatorDesc";
char const EnableModemDescArrId[] = "EnableModemDesc";
char const EnableFiscalDescArrId[] = "EnableFiscalDesc";
char const EnableCoinDescArrId[] = "EnableCoinDesc";
char const TimeOutBeforeDescArrId[] = "TimeOutBeforeDesc";
char const TimeOutAfterDescArrId[] = "TimeOutAfterDesc";
char const MaxWorkTimeDescArrId[] = "MaxWorkTimeDesc";
char const MinWorkTimeDescArrId[] = "MinWorkTimeDesc";
char const WeekEndDescArrId[] = "WeekEndDesc";
char const PeriodWeekendIndexDescArrId[] = "PeriodWeekendIndexDesc";
char const PeriodWeekdaysIndexDescArrId[] = "PeriodWeekdaysIndexDesc";
char const PriceWeekendDescArrId[] = "PriceWeekendDesc";
char const PriceWeekdaysDescArrId[] = "PriceWeekdaysDesc";
char const PriceTimeWeekendDescArrId[] = "PriceTimeWeekendDesc";
char const PriceTimeWeekdaysDescArrId[] = "PriceTimeWeekdaysDesc";
char const T_Start_WeekdaysDescArrId[] = "T_Start_WeekdaysDesc";
char const T_End_WeekdaysDescArrId[] = "T_End_WeekdaysDesc";
char const T_Start_WeekendDescArrId[] = "T_Start_WeekendDesc";
char const T_End_WeekendDescArrId[] = "T_End_WeekendDesc";
char const PrintZReportDescArrId[] = "PrintZReportDesc";
char const PrintXReportDescArrId[] = "PrintXReportDesc";
char const SystemTimeDescArrId[] = "SystemTimeDesc";
char const SystemTimeEditDescArrId[] = "SystemTimeEditDesc";
char const CoinPerPulseDescArrId[] = "CoinPerPulseDesc";
char const BillFormatDescArrId[] = "BillFormatDesc";
char const NameChannelDescArrId[] = "NameChannelDesc";
char const PassDescArrId[] = "PassDesc";
char const DeviceIDDescArrId[] = "DeviceIDDesc";
char const EnableEmailErrorSendDescArrId[] = "EnableEmailErrorSendDesc";
char const EnableEmailJournalSendDescArrId[] = "EnableEmailJournalSendDesc";
char const ClearJournalAfterSendDescArrId[] = "ClearJournalAfterSendDesc";
char const StatSendHourMinDescArrId[] = "StatSendHourMinDesc";
char const SendTestEmailDescArrId[] = "SendTestEmailDesc";
char const BillnomIndexDescArrId[] = "BillnomIndexDesc";
char const DeferredStartDescArrId[] = "DeferredStartDesc";
char const StartButtonNameDescArrId[] = "StartButtonNameDesc";
char const GatewayDescArrId[] = "GatewayDesc";
char const NetMaskDescArrId[] = "NetMaskDesc";
char const IpAddrDescArrId[] = "IpAddrDesc";
char const SelectProtectDescArrId[] = "SelectProtectDesc";
char const PostIpAddrDescArrId[] = "PostIpAddrDesc";
char const PostImpCostDescArrId[] = "PostImpCostDesc";
char const PostLenCostDescArrId[] = "PostLenCostDesc";
char const PostMinutePriceDescArrId[] = "PostMinutePriceDesc";
char const PostPauseDescArrId[] = "PostPauseDesc";
char const EnablePrintReportsDescArrId[] = "EnablePrintReportsDesc";
char const TerminalIpAddrDescArrId[] = "PosTerminalIpAddrDesctPauseDesc";
char const TerminalPortDescArrId[] = "TerminalPortDesc";
char const EnableTerminalDescArrId[] = "EnableTerminalDesc";
char const SelectedMoneyDescArrId[] = "SelectedMoneyDesc";
char const KeyMoneyDescArrId[] = "KeyMoneyDesc";
char const KeyActionDescArrId[] = "KeyActionDesc";
char const MakeSverkaDescArrId[] = "MakeSverkaDesc";
char const MakeSyncDescArrId[] = "MakeSyncDesc";
char const CounterChannelCardDescArrId[] = "CounterChannelCardDesc";
char const CounterCardDescArrId[] = "CounterCardDesc";
char const CounterChannelCardLongDescArrId[] = "CounterChannelCardLongDesc";
char const CounterLongCardDescArrId[] = "CounterLongCardDesc";
char const PostTimerDescArrId[] = "PostTimerDesc";
char const PostSignalDescArrId[] = "PostSignalDesc";
char const PostPauseLenCostDescId[] = "PostPauseLenCostDesc";
char const AbonementMoneyDescId[] = "AbonementMoneyDesc";
char const AbonementBonusDescId[] = "AbonementBonusDesc";
char const AbonementBestBeforeDescId[] = "AbonementBestBeforeDesc";
#if defined(BOARD_SOLARIUM_WEB)
char const SolariumTypeDescId[] = "SolariumTypeDescId";
char const SolariumTimeoutDescId[] = "SolariumTimeoutDescId";
char const SolariumPauseDescId[] = "SolariumPauseDescId";
char const SolariumVentilationTimeDescId[] = "SolariumVentilationTimeDescId";
char const SolariumPricePerMinDescId[] = "SolariumPricePerMinDesc";
char const SolariumMinTimeDescId[] = "SolariumMinTimeDesc";
char const SolariumMaxTimeDescId[] = "SolariumMaxTimeDesc";
char const ZummerEnableDescId[] = "ZummerEnableDesc";
#endif
char const JournalErrorNumberDescCodeId[] = "JournalErrorNumberDescCode";
char const JournalErrorNumberDescTimeId[] = "JournalErrorNumberDescTime";
//**************************************************
//**************************************************
//**************************************************
const TDataDescArrayStruct AllDataArray[] =
{
{&WorkTimeDesc, WorkTimeDescArrId},
{&ChannelIndexDesc, ChannelIndexDescArrId},
{&EnableChannelDesc, EnableChannelDescArrId},
{&EnableValidatorDesc, EnableValidatorDescArrId},
{&EnableModemDesc, EnableModemDescArrId},
{&EnableFiscalDesc, EnableFiscalDescArrId},
{&EnableCoinDesc, EnableCoinDescArrId},
{&TimeOutBeforeDesc, TimeOutBeforeDescArrId},
{&TimeOutAfterDesc, TimeOutAfterDescArrId},
{&MaxWorkTimeDesc, MaxWorkTimeDescArrId},
{&MinWorkTimeDesc, MinWorkTimeDescArrId},
{&WeekEndDesc, WeekEndDescArrId},
{&PeriodWeekendIndexDesc, PeriodWeekendIndexDescArrId},
{&PeriodWeekdaysIndexDesc, PeriodWeekdaysIndexDescArrId},
{&PriceWeekendDesc, PriceWeekendDescArrId},
{&PriceWeekdaysDesc, PriceWeekdaysDescArrId},
{&PriceTimeWeekendDesc, PriceTimeWeekendDescArrId},
{&PriceTimeWeekdaysDesc, PriceTimeWeekdaysDescArrId},
{&T_Start_WeekdaysDesc, T_Start_WeekdaysDescArrId},
{&T_End_WeekdaysDesc, T_End_WeekdaysDescArrId},
{&T_Start_WeekendDesc, T_Start_WeekendDescArrId},
{&T_End_WeekendDesc, T_End_WeekendDescArrId},
{&PrintZReportDesc, PrintZReportDescArrId},
{&PrintXReportDesc, PrintXReportDescArrId},
{&SystemTimeDesc, SystemTimeDescArrId},
{&SystemTimeEditDesc, SystemTimeEditDescArrId},
{&CoinPerPulseDesc, CoinPerPulseDescArrId},
{&BillFormatDesc, BillFormatDescArrId},
{&NameChannelDesc, NameChannelDescArrId},
{&PassDesc, PassDescArrId},
{&DeviceIDDesc, DeviceIDDescArrId},
{&EnableEmailErrorSendDesc, EnableEmailErrorSendDescArrId},
{&EnableEmailJournalSendDesc, EnableEmailJournalSendDescArrId},
{&ClearJournalAfterSendDesc, ClearJournalAfterSendDescArrId},
{&StatSendHourMinDesc, StatSendHourMinDescArrId},
{&SendTestEmailDesc, SendTestEmailDescArrId},
{&BillnomIndexDesc, BillnomIndexDescArrId},
{&DeferredStartDesc, DeferredStartDescArrId},
{&StartButtonNameDesc, StartButtonNameDescArrId},
{&GatewayDesc, GatewayDescArrId},
{&NetMaskDesc, NetMaskDescArrId},
{&IpAddrDesc, IpAddrDescArrId},
{&SelectProtectDesc, SelectProtectDescArrId},
{&PostIpAddrDesc, PostIpAddrDescArrId},
{&PostImpCostDesc, PostImpCostDescArrId},
{&PostLenCostDesc, PostLenCostDescArrId},
{&PostMinutePriceDesc, PostMinutePriceDescArrId},
{&PostPauseDesc, PostPauseDescArrId},
{&PostTimerDesc, PostTimerDescArrId},
{&PostSignalDesc, PostSignalDescArrId},
{&PostPauseLenCostDesc, PostPauseLenCostDescId},
{&EnablePrintReportsDesc, EnablePrintReportsDescArrId},
{&TerminalIpAddrDesc, TerminalIpAddrDescArrId},
{&TerminalPortDesc, TerminalPortDescArrId},
{&EnableTerminalDesc, EnableTerminalDescArrId},
{&SelectedMoneyDesc, SelectedMoneyDescArrId},
{&KeyMoneyDesc, KeyMoneyDescArrId},
{&KeyActionDesc, KeyActionDescArrId},
{&MakeSverkaDesc, MakeSverkaDescArrId},
{&MakeSyncDesc, MakeSyncDescArrId},
{&CounterChannelCardDesc, CounterChannelCardDescArrId},
{&CounterCardDesc, CounterCardDescArrId},
{&CounterChannelCardLongDesc, CounterChannelCardLongDescArrId},
{&CounterLongCardDesc, CounterLongCardDescArrId},
#if defined(BOARD_SOLARIUM_WEB)
{&SolariumTypeDesc, SolariumTypeDescId},
{&SolariumTimeoutDesc, SolariumTimeoutDescId},
{&SolariumPauseDesc, SolariumPauseDescId},
{&SolariumVentilationTimeDesc, SolariumVentilationTimeDescId},
{&SolariumPricePerMinDesc, SolariumPricePerMinDescId},
{&SolariumMinTimeDesc, SolariumMinTimeDescId},
{&SolariumMaxTimeDesc, SolariumMaxTimeDescId},
{&ZummerEnableDesc, ZummerEnableDescId},
#endif
{&JournalErrorNumberDescCode, JournalErrorNumberDescCodeId},
{&JournalErrorNumberDescTime, JournalErrorNumberDescTimeId},
#if defined(CONFIG_MUSIC_ENABLE)
{&SoundTypeDesc, SoundTypeDescId},
{&PlayerStatusDesc, PlayerStatusDescId},
{&SoundVolumeDesc, SoundVolumeDescId},
{&SoundFileIndexDesc, SoundFileIndexDescId},
{&SoundIpAddrDesc, SoundIpAddrDescId},
#endif
#if defined(BOARD_SOLARIUM_VLAD)
{&SolariumModesDesc, SolariumModesDescId},
{&SolarLampsCountDesc, SolarLampsCountDescId},
{&SolarPricePerMinuteDesc, SolarPricePerMinuteDescId},
{&SolarMaximumTimeMinutesDesc, SolarMaximumTimeMinutesDescId},
{&SolarMinimumTimeMinutesDesc, SolarMinimumTimeMinutesDescId},
{&SolarVentilationTimeMinutesDesc, SolarVentilationTimeMinutesDescId},
{&SolarTimeoutBeforeMinutesDesc, SolarTimeoutBeforeMinutesDescId},
{&SolarCurrentPricePerMinuteDesc, SolarCurrentPricePerMinuteDescId},
{&DiscountIndexHourDesc, DiscountIndexHourDescId},
{&DiscountBeginHourDesc, DiscountBeginHourDescId},
{&DiscountEndHourDesc, DiscountEndHourDescId},
{&DiscountValueHourDesc, DiscountValueHourDescId},
{&DiscountIndexDayDesc, DiscountIndexDayDescId},
{&DiscountValueDayDesc, DiscountValueDayDescId},
{&DiscountIndexMonthDesc, DiscountIndexMonthDescId},
{&DiscountValueMonthDesc, DiscountValueMonthDescId},
{&DiscountIndexCustomDesc, DiscountIndexCustomDescId},
{&DiscountValueCustomDesc, DiscountValueCustomDescId},
{&DiscountDateBeginCustomDesc, DiscountDateBeginCustomDescId},
{&DiscountDateEndCustomDesc, DiscountDateEndCustomDescId},
{&DiscountValueCurrentDesc, DiscountValueCurrentDescId},
{&ScoreIndexDesc, ScoreIndexDescId},
{&ScoreRs485SpeedDesc, ScoreRs485SpeedDescId},
{&ScoreEnableDesc, ScoreEnableDescId},
{&ScoreRs485AddressDesc, ScoreRs485AddressDescId},
{&ScoreCommandDesc, ScoreCommandDescId},
{&ScoreStateDesc, ScoreStateDescId},
{&ScoreColumnDesc, ScoreColumnDescId},
{&SolariumTimePayedDesc, SolariumTimePayedDescId},
{&SolariumTimePayedCrc16Desc, SolariumTimePayedCrc16DescId},
{&SolariumMoneyPayedDesc, SolariumMoneyPayedDescId},
{&SolarTimeoutAfterMinutesDesc, SolarTimeoutAfterMinutesDescId},
{&SolarControlChannelDesc, SolarControlChannelDescId},
{&CounterSolarMoneyDesc, CounterSolarMoneyDescId},
{&CounterSolarRunsDesc, CounterSolarRunsDescId},
{&CounterSolarWorkTimeDesc, CounterSolarWorkTimeDescId},
{&CounterSolarTestWorkTimeDesc, CounterSolarTestWorkTimeDescId},
{&CounterSolarTestRunsDesc, CounterSolarTestRunsDescId},
{&SolariumModeIndexDesc, SolariumModeIndexDescId},
{&CounterModeMoneyDesc, CounterModeMoneyDescId},
{&CounterModeRunsDesc, CounterModeRunsDescId},
{&CounterModeWorkTimeDesc, CounterModeWorkTimeDescId},
{&CounterModeTestRunsDesc, CounterModeTestRunsDescId},
{&CounterModeWorkTestTimeDesc, CounterModeWorkTestTimeDescId},
{&CounterCollatenTimeDesc, CounterCollatenTimeDescId},
{&CounterUFTimeDesc, CounterUFTimeDescId},
{&CounterAllTestCountDesc, CounterAllTestCountDescId},
{&CounterAllTestTimeDesc, CounterAllTestTimeDescId},
{&CounterCommonMoneyDesc, CounterCommonMoneyDescId},
{&CounterCashMoneyDesc, CounterCashMoneyDescId},
{&CounterCardMoneyDesc, CounterCardMoneyDescId},
{&SkinTypeIndexDesc, SkinTypeIndexDescId},
{&SkinCollatenMaxTimeDesc, SkinCollatenMaxTimeDescId},
{&SkinUFMaxTimeDesc, SkinUFMaxTimeDescId},
{&SkinMaximalMaxTimeDesc, SkinMaximalMaxTimeDescId},
{&EnableGlobalPassDesc, EnableGlobalPassDescId},
{&PassDescCleaning, PassDescCleaningId},
{&PassDescService, PassDescServiceId},
{&PassDescTest, PassDescTestId},
{&CounterCleaningTimeDesc, CounterCleaningTimeDescId},
{&CounterCleaningCountDesc, CounterCleaningCountDescId},
{&CounterCleaningMeanTimeDesc, CounterCleaningMeanTimeDescId},
{&CounterTestMeanTimeDesc, CounterTestMeanTimeDescId},
{&SolarCleaningTimeoutMinutesDesc, SolarCleaningTimeoutMinutesDescId},
#endif
#if defined(CONFIG_RELAY_ENABLE)
{&RelayIndexDesc, RelayIndexDescId},
{&RelayEnableDesc, RelayEnableDescId},
{&RelayIpAddrDesc, RelayIpAddrDescId},
{&RelayChannelDesc, RelayChannelDescId},
{&RelayOpenTimeDesc, RelayOpenTimeDescId},
{&RelayCommandDesc, RelayCommandDescId},
#endif
#if defined(CONFIG_SDCARD_ENABLE)
{&SdCardStatusDesc, SdCardStatusDescId},
#endif
#if defined(CONFIG_TERMINAL_ENABLE)
{&TerminalProtocolDesc, TerminalProtocolDescId},
#endif
#ifdef CONFIG_FTP_CLIENT_ENABLE
{&FtpEnableDesc, FtpEnableDescId},
{&FtpServerIpAddrDesc, FtpServerIpAddrDescId},
{&FtpSendHourMinDesc, FtpSendHourMinDescId},
{&FtpSendIntervalDesc, FtpSendIntervalDescId},
{&FtpLastSendTimeDesc, FtpLastSendTimeDescId},
{&FtpLastSendResultDesc, FtpLastSendResultDescId},
{&FtpSendNowCmdDesc, FtpSendNowCmdDescId},
{&FtpDeviceNumberDesc, FtpDeviceNumberDescId},
{&FtpServerLoginDesc, FtpServerLoginDescId},
{&FtpServerPassDesc, FtpServerPassDescId},
#endif
{&CoinPulseLenDesc, CoinPulseLenDescId},
{&CoinPauseLenDesc, CoinPauseLenDescId},
{&CoinPulseDeltaDesc, CoinPulseDeltaDescId},
{&AbonementMoneyDesc, AbonementMoneyDescId},
{&AbonementBonusDesc, AbonementBonusDescId},
{&AbonementBestBeforeDesc, AbonementBestBeforeDescId},
{NULL, NULL}
};