diff --git a/PROJECT/app/app_serv.c b/PROJECT/app/app_serv.c
index b7bfb12..4de7da7 100644
--- a/PROJECT/app/app_serv.c
+++ b/PROJECT/app/app_serv.c
@@ -230,10 +230,20 @@ void UserAppTask(void *p_arg)
if (accmoney > 0 && !was_critical_error)
{
CPU_INT32U tick = labs(OSTimeGet() - money_timestamp[post]);
-
+
// есть деньги и нет ошибок
if(wash_State[post] != washing)
- {
+ {
+ // если задан тайм аут начала мойки и он прошел - запускаем мойку - только для постов мойки
+ GetData(&SignalTimeOutDesc, &print_timeout, 0, DATA_FLAG_SYSTEM_INDEX);
+ if((print_timeout > 0) && (tick > print_timeout * 1000L) && (post < COUNT_POST))
+ {
+ PostUserEvent(EVENT_STOP_MONEY_POST1 + post); // начинаем мойку
+
+ // событие послали - к следующему каналу
+ continue;
+ }
+
// аварийный тайм аут ожидания начала мойки
if (tick > 300000UL)
{
diff --git a/PROJECT/data/datadesc.c b/PROJECT/data/datadesc.c
index 7862c82..b56f043 100644
--- a/PROJECT/data/datadesc.c
+++ b/PROJECT/data/datadesc.c
@@ -541,6 +541,30 @@ TDataDescStruct const SignalPulseDesc = {
1 // значение по умолчанию
};
+/*************************************
+ Таймаут сигнала начала мойки
+*************************************/
+TRangeValueULONG const SignalTimeOutRange = {1, 300};
+CPU_INT08U const SignalTimeOutName[] = "Таймаут,сек.";
+
+TDataDescStruct const SignalTimeOutDesc = {
+ DATA_DESC_EDIT, // тип дескриптора
+ DATA_TYPE_ULONG, // тип параметра
+ DATA_LOC_FRAM, // расположение параметра
+ DATA_NO_ARRAY, // признак массива
+ 0, // размер массива
+ 0, // указатель на десриптор индекса массива
+ (void*)offsetof(TFramMap, signal_print_timeout_len), // указатель на переменную или адрес FRAM
+ (void*)&SignalTimeOutRange, // указатель на границы параметра
+ NULL, // функция по изменению
+ 0, // смещение между элементами в массиве
+ SignalTimeOutName, // указатель на строку названия параметра
+ DATA_NO_INDEX, // признак индексного параметра (список строк)
+ NULL, // указатель на список строк для индексного параметра
+ DATA_INIT_DISABLE,
+ 0 // значение по умолчанию
+};
+
/*************************************
Индекс при настройке монетоприемников
*************************************/
@@ -2751,6 +2775,7 @@ const TDataDescArrayStruct AllDataArray[] =
{&DisableFiscalErrorsDesc, "DisableFiscalErrorsDesc"},
{&EnableSignalDesc, "EnableSignalDesc"},
{&SignalPulseDesc, "SignalPulseDesc"},
+ {&SignalTimeOutDesc, "SignalTimeOutDesc"},
{&CashPerMinuteDesc, "CashPerMinuteDesc"},
{&CashLevelDesc, "CashLevelDesc"},
diff --git a/PROJECT/data/datadesc.h b/PROJECT/data/datadesc.h
index 7ee3412..c7af9d7 100644
--- a/PROJECT/data/datadesc.h
+++ b/PROJECT/data/datadesc.h
@@ -180,6 +180,7 @@ extern CPU_INT32U CoinIndex;
extern TDataDescStruct const SignalIndexDesc;
extern TDataDescStruct const EnableSignalDesc;
extern TDataDescStruct const SignalPulseDesc;
+extern TDataDescStruct const SignalTimeOutDesc;
extern TDataDescStruct const CashLevelDesc;
extern TDataDescStruct const CoinLevelDesc;
diff --git a/PROJECT/data/fram_map.h b/PROJECT/data/fram_map.h
index 0efc5a1..1265a5a 100644
--- a/PROJECT/data/fram_map.h
+++ b/PROJECT/data/fram_map.h
@@ -52,6 +52,9 @@ typedef struct
TCountersLong CountersLong;
CPU_INT32U StartButtonName;
+
+ // таймаут начала мойки без внешнего сигнала - общий на все каналы
+ CPU_INT32U signal_print_timeout_len;
#endif
CPU_INT08U mac_addr[6];
diff --git a/PROJECT/menu/menudesc.c b/PROJECT/menu/menudesc.c
index 7eb143a..21e01f5 100644
--- a/PROJECT/menu/menudesc.c
+++ b/PROJECT/menu/menudesc.c
@@ -627,6 +627,13 @@ const TMenuLine line_SignalMenu_1 = {
NULL // панель для перехода
};
+const TMenuLine line_SignalMenu_6 = {
+ MENU_LINE_SHOW_DESC, // тип пункта меню
+ 0, // доп. флаги
+ (void*)&SignalTimeOutDesc, // указатель на текстовую строку или дескриптор
+ NULL // панель для перехода
+};
+
const TMenuLine line_SignalMenu_2 = {
MENU_LINE_SHOW_DESC, // тип пункта меню
0, // доп. флаги
@@ -660,8 +667,8 @@ void OnEnterSignalMenu(void)
CoinIndex = 0;
}
-const TMenuLineArray arr_SignalMenuArray[] = {&line_SignalMenu_0, &line_SignalMenu_1, &line_SignalMenu_2, &line_SignalMenu_3, &line_SignalMenu_4, &line_SignalMenu_5, NULL};
-const TMenuPanel SignalSetupPanel[] = {arr_SignalMenuArray, OnEnterSignalMenu, 6, MENU_PANEL_STANDARD};
+const TMenuLineArray arr_SignalMenuArray[] = {&line_SignalMenu_0, &line_SignalMenu_1, &line_SignalMenu_6, &line_SignalMenu_2, &line_SignalMenu_3, &line_SignalMenu_4, &line_SignalMenu_5, NULL};
+const TMenuPanel SignalSetupPanel[] = {arr_SignalMenuArray, OnEnterSignalMenu, 7, MENU_PANEL_STANDARD};
/***********************************
diff --git a/settings/sk-mlpc2368.wsdt b/settings/sk-mlpc2368.wsdt
index 7e101cc..321cc92 100644
--- a/settings/sk-mlpc2368.wsdt
+++ b/settings/sk-mlpc2368.wsdt
@@ -34,7 +34,7 @@
TabID-28963-15244Find in FilesFind-in-FilesTabID-3677-8150Debug LogDebug-Log
- 1
+ 0
TabID-1122-24249
@@ -52,7 +52,7 @@
- TextEditor$WS_DIR$\PROJECT\data\datadesc.h010337223884TextEditor$WS_DIR$\PROJECT\version.h007777TextEditor$WS_DIR$\PROJECT\app\journal.h06340234023TextEditor$WS_DIR$\PROJECT\data\fram_map.h03286382TextEditor$WS_DIR$\PROJECT\app\app_serv.c06042312823128TextEditor$WS_DIR$\PROJECT\data\data.c00449449TextEditor$WS_DIR$\PROJECT\data\data.h039688702TextEditor$WS_DIR$\PROJECT\services\fr.c079219145191457TextEditor$WS_DIR$\PROJECT\app\app_serv.h00238238TextEditor$WS_DIR$\PROJECT\menu\menu.h00540540TextEditor$WS_DIR$\PROJECT\services\coin.c027959455945TextEditor$WS_DIR$\PROJECT\services\coin.h00155155TextEditor$WS_DIR$\OS\app\app.c03011311131TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.c09362521025210TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.h05325452545TextEditor$WS_DIR$\PROJECT\app\journal.c04591318613188TextEditor$WS_DIR$\PROJECT\menu\menu.c020660496049TextEditor$WS_DIR$\PROJECT\menu\menudesc.h02721162116TextEditor$WS_DIR$\PROJECT\menu\menudesc.c013535575455754TextEditor$WS_DIR$\PROJECT\services\fr.h00927927TextEditor$WS_DIR$\PROJECT\data\datadesc.c0216196286962860100000010000001
+ TextEditor$WS_DIR$\PROJECT\version.h007777TextEditor$WS_DIR$\PROJECT\app\journal.h06340234023TextEditor$WS_DIR$\PROJECT\data\data.c00449449TextEditor$WS_DIR$\PROJECT\data\data.h07621012101TextEditor$WS_DIR$\PROJECT\services\fr.c07921914519145TextEditor$WS_DIR$\PROJECT\app\app_serv.h00238238TextEditor$WS_DIR$\PROJECT\menu\menu.h00540540TextEditor$WS_DIR$\PROJECT\services\coin.c05423712371TextEditor$WS_DIR$\PROJECT\services\coin.h00155155TextEditor$WS_DIR$\OS\app\app.c03011311131TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.c09362521025210TextEditor$WS_DIR$\PROJECT\drivers\fiscal\fiscal.h05325452545TextEditor$WS_DIR$\PROJECT\app\journal.c04591318613188TextEditor$WS_DIR$\PROJECT\menu\menu.c020660496049TextEditor$WS_DIR$\PROJECT\menu\menudesc.h02721162116TextEditor$WS_DIR$\PROJECT\menu\menudesc.c06132660726607TextEditor$WS_DIR$\PROJECT\services\fr.h00927927TextEditor$WS_DIR$\PROJECT\data\datadesc.c06592936329363TextEditor$WS_DIR$\PROJECT\data\datadesc.h016061106110TextEditor$WS_DIR$\PROJECT\data\fram_map.h03512721272TextEditor$WS_DIR$\PROJECT\app\app_serv.c023068106810200100000010000001