diff --git a/PROJECT/app/app_serv.c b/PROJECT/app/app_serv.c index 86cb5b5..d444eb4 100644 --- a/PROJECT/app/app_serv.c +++ b/PROJECT/app/app_serv.c @@ -22,20 +22,13 @@ CPU_INT32U SystemTime; CPU_INT32U money_timestamp[COUNT_POST + COUNT_VACUUM]; -CPU_INT08U EnabledChannelsNum; -CPU_INT08U RecentChannel; -CPU_INT08U UserMenuState; - #define USER_STATE_FIRST_PAGE 0 - #define USER_STATE_ACCEPT_MONEY 1 - #define USER_STATE_SHOW_THANKS 2 -CPU_INT08U ThanksCtr; -CPU_INT08U ChannelsState[CHANNELS_NUM]; +CPU_INT08U ChannelsState[COUNT_POST + COUNT_VACUUM]; #define CHANNEL_STATE_FREE 0 #define CHANNEL_STATE_BUSY 1 #define CHANNEL_STATE_DISABLED 2 -CPU_INT32U ChannelsCounters[CHANNELS_NUM]; -CPU_INT32U ChannelsPayedTime[CHANNELS_NUM]; +CPU_INT32U ChannelsCounters[COUNT_POST + COUNT_VACUUM]; +CPU_INT32U ChannelsPayedTime[COUNT_POST + COUNT_VACUUM]; CPU_INT32U incas_bill_nom_counter[24]; CPU_INT32U incas_common_bill_counter; @@ -88,7 +81,21 @@ void AddOutPulses(int count, int len_ms) #endif -/*! +int drawPostInfo[COUNT_POST + COUNT_VACUUM] = {0,0,0,0,0,0,0,0}; +int currentPosition = 0; + +void DrawMenu(void) +{ + if((SystemTime%2)) + { + UserPrintMoneyMenu(currentPosition++); + RefreshMenu(); + + if(currentPosition >= COUNT_POST + COUNT_VACUUM) currentPosition = 0; + } +} + +/* Сервер обработки событий пользователя */ void UserAppTask(void *p_arg) @@ -96,7 +103,6 @@ void UserAppTask(void *p_arg) CPU_INT32U print_timeout; CPU_INT32U accmoney; int event; - CPU_BOOLEAN dontRedraw = DEF_FALSE; #ifdef BOARD_CENTRAL_CFG @@ -112,13 +118,24 @@ void UserAppTask(void *p_arg) { switch (event){ #ifdef BOARD_CENTRAL_CFG - case EVENT_SEC: - // проверка режима - CheckMode(); - - // прочитаем текущее время - SystemTime = GetTimeSec(); + case EVENT_UPATE_RTC: + { + // прочитаем текущее время + CPU_INT32U time = GetTimeSec(); + + if(SystemTime != time) + { + SystemTime = time; + PostUserEvent(EVENT_SEC); + } + // проверка режима + CheckMode(); + + } + break; + case EVENT_SEC: + // рабочий сервер - счетчики, состояния и т.п. WorkServer(); @@ -147,7 +164,8 @@ void UserAppTask(void *p_arg) if (TstCriticalErrors()) { UserPrintErrorMenu(); - RefreshMenu(); + RefreshMenu(); + // выключим прием денег if (was_critical_error == 0) { @@ -164,48 +182,41 @@ void UserAppTask(void *p_arg) break; } - dontRedraw = DEF_FALSE; - for(int post = 0; post < COUNT_POST + COUNT_VACUUM; post++) { accmoney = GetAcceptedMoney(post); if (accmoney > 0) { - UserPrintMoneyMenu(post); - RefreshMenu(); - - dontRedraw = DEF_TRUE; + drawPostInfo[post] = 1; LED_OK_ON(); CheckFiscalStatus(); + // печать по внешнему сигналу, ждем таймаут отмены + GetData(&PrintTimeoutAfterDesc, &print_timeout, 0, DATA_FLAG_SYSTEM_INDEX); + if (labs(OSTimeGet() - money_timestamp[post]) > 1000UL * print_timeout) { - // печать по внешнему сигналу, ждем таймаут отмены - GetData(&PrintTimeoutAfterDesc, &print_timeout, 0, DATA_FLAG_SYSTEM_INDEX); - if (labs(OSTimeGet() - money_timestamp[post]) > 1000UL * print_timeout) - { - SetAcceptedMoney(0, post); - UserPrintThanksMenu(post); - RefreshMenu(); - OSTimeDly(1000); - LED_OK_OFF(); - } + SetAcceptedMoney(0, post); + + UserPrintThanksMenu(post); + RefreshMenu(); + + OSTimeDly(1000); + LED_OK_OFF(); } } else { + drawPostInfo[post] = 0; + LED_OK_OFF(); - } - - // принимаем деньги - if(!dontRedraw) - { - UserPrintMoneyMenu(0xFFFF); - RefreshMenu(); - } + } } + // принимаем деньги + DrawMenu(); + break; case EVENT_MODE_CHANGE: @@ -235,14 +246,8 @@ void UserAppTask(void *p_arg) SetAcceptedMoney(accmoney, number_post); money_timestamp[number_post] = OSTimeGet(); - - if (UserMenuState == USER_STATE_ACCEPT_MONEY) - { - UserPrintMoneyMenu(number_post); - RefreshMenu(); - } - - if (money) SaveEventRecord(RecentChannel, JOURNAL_EVENT_MONEY_COIN_POST1 + number_post, money); + + if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_COIN_POST1 + number_post, money); } break; case EVENT_CASH_INSERTED_POST1: @@ -264,14 +269,8 @@ void UserAppTask(void *p_arg) accmoney += money; SetAcceptedMoney(accmoney, number_post); money_timestamp[number_post] = OSTimeGet(); - - if (UserMenuState == USER_STATE_ACCEPT_MONEY) - { - UserPrintMoneyMenu(number_post); - RefreshMenu(); - } - - if (money) SaveEventRecord(RecentChannel, JOURNAL_EVENT_MONEY_NOTE_POST1 + number_post, money); + + if (money) SaveEventRecord(number_post, JOURNAL_EVENT_MONEY_NOTE_POST1 + number_post, money); } break; @@ -360,11 +359,11 @@ void UserAppTask(void *p_arg) { if (PrintFiscalBill(accmoney) == 0) // здесь добавить с какого поста чек { - SaveEventRecord(RecentChannel, JOURNAL_EVENT_PRINT_BILL, GetTimeSec()); + SaveEventRecord(number_post, JOURNAL_EVENT_PRINT_BILL_POST1 + number_post, GetTimeSec()); } } - IncCounter(RecentChannel, ChannelsPayedTime[RecentChannel], accmoney); + IncCounter(number_post, ChannelsPayedTime[number_post], accmoney); SetAcceptedMoney(0, number_post); OSTimeDly(1000); diff --git a/PROJECT/app/app_serv.h b/PROJECT/app/app_serv.h index 9a6d4be..85983bf 100644 --- a/PROJECT/app/app_serv.h +++ b/PROJECT/app/app_serv.h @@ -36,6 +36,7 @@ extern CPU_INT32U incas_common_bill_counter; enum{ EVENT_SEC = 1, EVENT_STARTUP, + EVENT_UPATE_RTC, EVENT_COIN_INSERTED_POST1, EVENT_COIN_INSERTED_POST2, diff --git a/PROJECT/app/journal.c b/PROJECT/app/journal.c index c52229f..d2ab491 100644 --- a/PROJECT/app/journal.c +++ b/PROJECT/app/journal.c @@ -163,6 +163,12 @@ void GetEventStr(char* str, char event) case JOURNAL_EVENT_MONEY_COIN_POST6: sprintf(str, "Вн.монеты пост 6"); break; + case JOURNAL_EVENT_MONEY_COIN_VACUUM1: + sprintf(str, "Вн.монеты пыл.1"); + break; + case JOURNAL_EVENT_MONEY_COIN_VACUUM2: + sprintf(str, "Вн.монеты пыл.2"); + break; case JOURNAL_EVENT_START_SESSION: sprintf(str, "Печать чека "); @@ -173,9 +179,32 @@ void GetEventStr(char* str, char event) case JOURNAL_EVENT_DEVICE_ON: sprintf(str, "Включение"); break; - case JOURNAL_EVENT_PRINT_BILL: - sprintf(str, "Печать чека"); + + case JOURNAL_EVENT_PRINT_BILL_POST1: + sprintf(str, "Печать чека пост 1"); break; + case JOURNAL_EVENT_PRINT_BILL_POST2: + sprintf(str, "Печать чека пост 2"); + break; + case JOURNAL_EVENT_PRINT_BILL_POST3: + sprintf(str, "Печать чека пост 3"); + break; + case JOURNAL_EVENT_PRINT_BILL_POST4: + sprintf(str, "Печать чека пост 4"); + break; + case JOURNAL_EVENT_PRINT_BILL_POST5: + sprintf(str, "Печать чека пост 5"); + break; + case JOURNAL_EVENT_PRINT_BILL_POST6: + sprintf(str, "Печать чека пост 6"); + break; + case JOURNAL_EVENT_PRINT_BILL_VACUUM1: + sprintf(str, "Печать чека пыл.1"); + break; + case JOURNAL_EVENT_PRINT_BILL_VACUUM2: + sprintf(str, "Печать чека пыл.2"); + break; + case JOURNAL_EVENT_PRINT_Z: sprintf(str, "Печать отчета о закр.см."); break; @@ -246,6 +275,12 @@ void GetEventStrEng(char* str, char event) case JOURNAL_EVENT_MONEY_COIN_POST6: sprintf(str, " | Vneseny monety post 6"); break; + case JOURNAL_EVENT_MONEY_COIN_VACUUM1: + sprintf(str, " | Vneseny monety vacuu1"); + break; + case JOURNAL_EVENT_MONEY_COIN_VACUUM2: + sprintf(str, " | Vneseny monety vacuu2"); + break; case JOURNAL_EVENT_START_SESSION: sprintf(str, " | Print bill "); @@ -256,9 +291,32 @@ void GetEventStrEng(char* str, char event) case JOURNAL_EVENT_DEVICE_ON: sprintf(str, " | Vkluchenie "); break; - case JOURNAL_EVENT_PRINT_BILL: - sprintf(str, " | Pechat' checka "); + + case JOURNAL_EVENT_PRINT_BILL_POST1: + sprintf(str, " | Pechat' checka post 1"); break; + case JOURNAL_EVENT_PRINT_BILL_POST2: + sprintf(str, " | Pechat' checka post 2"); + break; + case JOURNAL_EVENT_PRINT_BILL_POST3: + sprintf(str, " | Pechat' checka post 3"); + break; + case JOURNAL_EVENT_PRINT_BILL_POST4: + sprintf(str, " | Pechat' checka post 4"); + break; + case JOURNAL_EVENT_PRINT_BILL_POST5: + sprintf(str, " | Pechat' checka post 5"); + break; + case JOURNAL_EVENT_PRINT_BILL_POST6: + sprintf(str, " | Pechat' checka post 6"); + break; + case JOURNAL_EVENT_PRINT_BILL_VACUUM1: + sprintf(str, " | Pechat' checka vacuu1"); + break; + case JOURNAL_EVENT_PRINT_BILL_VACUUM2: + sprintf(str, " | Pechat' checka vacuu2"); + break; + case JOURNAL_EVENT_PRINT_Z: sprintf(str, " | Pechat' Z-otcheta "); break; @@ -321,7 +379,7 @@ void PrintEventJournalRecordEng(char* str, TEventRecord *record) { sprintf(&str[strlen(str)], ""); } - else if (record->event == JOURNAL_EVENT_PRINT_BILL) + if ((record->event >= JOURNAL_EVENT_PRINT_BILL_POST1) && (record->event <= JOURNAL_EVENT_PRINT_BILL_VACUUM2)) { sprintf(&str[strlen(str)], " "); } diff --git a/PROJECT/app/journal.h b/PROJECT/app/journal.h index 15faf2c..b4036e5 100644 --- a/PROJECT/app/journal.h +++ b/PROJECT/app/journal.h @@ -29,28 +29,36 @@ typedef struct{ #define JOURNAL_EVENT_MONEY_COIN_POST4 10 // событие получения монеты (кол-во рублей) пост 4 #define JOURNAL_EVENT_MONEY_COIN_POST5 11 // событие получения монеты (кол-во рублей) пост 5 #define JOURNAL_EVENT_MONEY_COIN_POST6 12 // событие получения монеты (кол-во рублей) пост 6 - // здесь добавить еще два события от пылесосов - //#define JOURNAL_EVENT_MONEY_COIN_VACUUM1 13 // событие получения монеты (кол-во рублей) пылесос 1 - //#define JOURNAL_EVENT_MONEY_COIN_VACUUM1 14 // событие получения монеты (кол-во рублей) пылесос 2 + #define JOURNAL_EVENT_MONEY_COIN_VACUUM1 13 // событие получения монеты (кол-во рублей) пылесос 1 + #define JOURNAL_EVENT_MONEY_COIN_VACUUM2 14 // событие получения монеты (кол-во рублей) пылесос 2 - #define JOURNAL_EVENT_START_SESSION 13 // событие начала сеанса - #define JOURNAL_EVENT_END_SESSION 14 // событие конца сеанса - #define JOURNAL_EVENT_DEVICE_ON 16 // включение устройства - #define JOURNAL_EVENT_PRINT_BILL 17 // печать чека - #define JOURNAL_EVENT_PRINT_Z 18 // печать z-отчета - #define JOURNAL_EVENT_PRINT_X 19 // печать x-отчета - #define JOURNAL_EVENT_PRINT_BUF 20 // печать x-отчета - #define JOURNAL_EVENT_CHANGE_MODE 21 // смена режима - #define JOURNAL_EVENT_INCASSATION 22 // инкассация - #define JOURNAL_EVENT_PASS_FAIL 23 // неверный ввод пароля - #define JOURNAL_EVENT_EMAIL_OK 24 // правильно отправлен email - #define JOURNAL_EVENT_EMAIL_FAIL 25 // ошибка при отправке email + #define JOURNAL_EVENT_START_SESSION 15 // событие начала сеанса + #define JOURNAL_EVENT_END_SESSION 16 // событие конца сеанса + #define JOURNAL_EVENT_DEVICE_ON 18 // включение устройства + + #define JOURNAL_EVENT_PRINT_BILL_POST1 19 // печать чека пост 1 + #define JOURNAL_EVENT_PRINT_BILL_POST2 20 // печать чека пост 2 + #define JOURNAL_EVENT_PRINT_BILL_POST3 21 // печать чека пост 3 + #define JOURNAL_EVENT_PRINT_BILL_POST4 22 // печать чека пост 4 + #define JOURNAL_EVENT_PRINT_BILL_POST5 23 // печать чека пост 5 + #define JOURNAL_EVENT_PRINT_BILL_POST6 24 // печать чека пост 6 + #define JOURNAL_EVENT_PRINT_BILL_VACUUM1 25 // печать чека пылесос 1 + #define JOURNAL_EVENT_PRINT_BILL_VACUUM2 26 // печать чека пылесос 2 + + #define JOURNAL_EVENT_PRINT_Z 27 // печать z-отчета + #define JOURNAL_EVENT_PRINT_X 28 // печать x-отчета + #define JOURNAL_EVENT_PRINT_BUF 29 // печать x-отчета + #define JOURNAL_EVENT_CHANGE_MODE 30 // смена режима + #define JOURNAL_EVENT_INCASSATION 31 // инкассация + #define JOURNAL_EVENT_PASS_FAIL 32 // неверный ввод пароля + #define JOURNAL_EVENT_EMAIL_OK 33 // правильно отправлен email + #define JOURNAL_EVENT_EMAIL_FAIL 34 // ошибка при отправке email // ошибка связи с фискальником - #define ERROR_FR_CONN 26 + #define ERROR_FR_CONN 35 // ВСЕ ОШИБКИ ФР ФАТАЛЬНЫЕ - #define ERROR_FR 27 + #define ERROR_FR 36 #define JOURNAL_EVENTS_COUNT (ERROR_FR+FR_ERROR_NUMBER) // число событий diff --git a/PROJECT/data/datadesc.c b/PROJECT/data/datadesc.c index 01721fe..cef03a5 100644 --- a/PROJECT/data/datadesc.c +++ b/PROJECT/data/datadesc.c @@ -569,20 +569,112 @@ TDataDescStruct const StatSendHourMinDesc = { 9 }; +/************************************* + Индекс при настройке сигналов +*************************************/ +TRangeValueULONG const SignalIndexRange = {0, 7}; +CPU_INT08U const SignalIndexName[] = "НАСТ.СИГН.ПЕЧ."; +CPU_INT08U const SignalIndex_str0[] = "1"; +CPU_INT08U const SignalIndex_str1[] = "2"; +CPU_INT08U const SignalIndex_str2[] = "3"; +CPU_INT08U const SignalIndex_str3[] = "4"; +CPU_INT08U const SignalIndex_str4[] = "5"; +CPU_INT08U const SignalIndex_str5[] = "6"; +CPU_INT08U const SignalIndex_str6[] = "П1"; +CPU_INT08U const SignalIndex_str7[] = "П2"; +CPU_INT08U const *SignalIndexList[] = {SignalIndex_str0, SignalIndex_str1,SignalIndex_str2,SignalIndex_str3,SignalIndex_str4,SignalIndex_str5,SignalIndex_str6,SignalIndex_str7}; + +CPU_INT32U CoinIndex = 0; + +void OnChangeSignalIndex(void) +{ +} + +TDataDescStruct const SignalIndexDesc = { + DATA_DESC_EDIT, // тип дескриптора + DATA_TYPE_ULONG, // тип параметра + DATA_LOC_RAM, // расположение параметра + DATA_NO_ARRAY, // признак массива + 0, // размер массива + NULL, // указатель на десриптор индекса массива + (void*)&CoinIndex, // указатель на переменную или адрес FRAM + (void*)&SignalIndexRange, // указатель на границы параметра + OnChangeSignalIndex, // функция по изменению + 0, // смещение между элементами в массиве + SignalIndexName, // указатель на строку названия параметра + DATA_IS_INDEX, // признак индексного параметра (список строк) + SignalIndexList, // указатель на список строк для индексного параметра + DATA_INIT_ENABLE, + 0 +}; + +/************************************* + Включение сигнала печати +*************************************/ +TRangeValueULONG const EnableSignalRange = {0, 1}; +CPU_INT08U const EnableSignalName[] = "Сигнал "; +CPU_INT08U const *EnableSignalList[] = {OnOffList_str0, OnOffList_str1}; + +void OnchangeEnableSignal(void) +{ +} + +TDataDescStruct const EnableSignalDesc = { + DATA_DESC_EDIT, // тип дескриптора + DATA_TYPE_ULONG, // тип параметра + DATA_LOC_FRAM, // расположение параметра + DATA_IS_ARRAY, // признак массива + COUNT_POST+COUNT_VACUUM,// размер массива + &SignalIndexDesc, // указатель на десриптор индекса массива + (void*)offsetof(TFramMap, enableSignalPrint), // указатель на переменную или адрес FRAM + (void*)&EnableSignalRange, // указатель на границы параметра + OnchangeEnableSignal, // функция по изменению + sizeof(CPU_INT32U), // смещение между элементами в массиве + EnableSignalName, // указатель на строку названия параметра + DATA_IS_INDEX, // признак индексного параметра (список строк) + EnableSignalList, // указатель на список строк для индексного параметра + DATA_INIT_DISABLE, + 1 +}; + +/************************************* + Длительность импульса сигнала печати +*************************************/ +TRangeValueULONG const SignalPulseRange = {1, 60}; +CPU_INT08U const SignalPulseName[] = "Длит.сек."; + +TDataDescStruct const SignalPulseDesc = { + DATA_DESC_EDIT, // тип дескриптора + DATA_TYPE_ULONG, // тип параметра + DATA_LOC_FRAM, // расположение параметра + DATA_IS_ARRAY, // признак массива + COUNT_POST+COUNT_VACUUM, // размер массива + &SignalIndexDesc, // указатель на десриптор индекса массива + (void*)offsetof(TFramMap, signal_pulse_len), // указатель на переменную или адрес FRAM + (void*)&SignalPulseRange, // указатель на границы параметра + NULL, // функция по изменению + sizeof(CPU_INT32U), // смещение между элементами в массиве + SignalPulseName, // указатель на строку названия параметра + DATA_NO_INDEX, // признак индексного параметра (список строк) + NULL, // указатель на список строк для индексного параметра + DATA_INIT_DISABLE, + 1 // значение по умолчанию +}; + /************************************* Индекс при настройке монетоприемников *************************************/ -TRangeValueULONG const CoinIndexRange = {0, 5}; -CPU_INT08U const CoinIndexName[] = "НАСТР.МОНЕТОПР."; +TRangeValueULONG const CoinIndexRange = {0, 7}; +CPU_INT08U const CoinIndexName[] = "НАСТ.МОНЕТОПР."; CPU_INT08U const CoinIndex_str0[] = "1"; CPU_INT08U const CoinIndex_str1[] = "2"; CPU_INT08U const CoinIndex_str2[] = "3"; CPU_INT08U const CoinIndex_str3[] = "4"; CPU_INT08U const CoinIndex_str4[] = "5"; CPU_INT08U const CoinIndex_str5[] = "6"; -CPU_INT08U const *CoinIndexList[] = {CoinIndex_str0, CoinIndex_str1,CoinIndex_str2,CoinIndex_str3,CoinIndex_str4,CoinIndex_str5}; - -CPU_INT32U CoinIndex = 0; +CPU_INT08U const CoinIndex_str6[] = "П1"; +CPU_INT08U const CoinIndex_str7[] = "П2"; +CPU_INT08U const *CoinIndexList[] = {CoinIndex_str0, CoinIndex_str1,CoinIndex_str2,CoinIndex_str3,CoinIndex_str4,CoinIndex_str5,CoinIndex_str6,CoinIndex_str7}; void OnChangeCoinIndex(void) { @@ -622,7 +714,7 @@ TDataDescStruct const EnableCoinDesc = { DATA_TYPE_ULONG, // тип параметра DATA_LOC_FRAM, // расположение параметра DATA_IS_ARRAY, // признак массива - COUNT_POST+ + COUNT_VACUUM,// размер массива + COUNT_POST+COUNT_VACUUM,// размер массива &CoinIndexDesc, // указатель на десриптор индекса массива (void*)offsetof(TFramMap, DeviceConfig.EnableCoinAcceptor), // указатель на переменную или адрес FRAM (void*)&EnableCoinRange, // указатель на границы параметра @@ -787,7 +879,7 @@ TDataDescStruct const PrintTimeoutAfterDesc = { DATA_NO_INDEX, // признак индексного параметра (список строк) NULL, // указатель на список строк для индексного параметра DATA_INIT_DISABLE, - 10 // значение по умолчанию + 60 // значение по умолчанию }; /************************************* @@ -3219,6 +3311,9 @@ const TDataDescArrayStruct AllDataArray[] = {&PrintModeDesc, "PrintModeDesc"}, {&PrintTimeoutAfterDesc, "PrintTimeoutAfterDesc"}, + {&DisableFiscalErrorsDesc, "DisableFiscalErrorsDesc"}, + {&EnableSignalDesc, "EnableSignalDesc"}, + {&SignalPulseDesc, "SignalPulseDesc"}, {NULL, ""} diff --git a/PROJECT/data/datadesc.h b/PROJECT/data/datadesc.h index 9108e33..470505c 100644 --- a/PROJECT/data/datadesc.h +++ b/PROJECT/data/datadesc.h @@ -233,4 +233,9 @@ extern TDataDescStruct const TaxSystemDesc; extern TDataDescStruct const CoinIndexDesc; extern TDataDescStruct const CashIndexDesc; extern CPU_INT32U CoinIndex; + +extern TDataDescStruct const SignalIndexDesc; +extern TDataDescStruct const EnableSignalDesc; +extern TDataDescStruct const SignalPulseDesc; + #endif //#ifndef _DATADESC_H_ diff --git a/PROJECT/data/fram_map.h b/PROJECT/data/fram_map.h index d4583b8..b8b6c31 100644 --- a/PROJECT/data/fram_map.h +++ b/PROJECT/data/fram_map.h @@ -58,5 +58,8 @@ typedef struct CPU_INT32U CommandV2; CPU_INT32U TaxSystem; + CPU_INT32U enableSignalPrint[COUNT_POST + COUNT_VACUUM]; + CPU_INT32U signal_pulse_len[COUNT_POST + COUNT_VACUUM]; + }TFramMap; diff --git a/PROJECT/menu/menudesc.c b/PROJECT/menu/menudesc.c index 3c18af8..2c2b8ad 100644 --- a/PROJECT/menu/menudesc.c +++ b/PROJECT/menu/menudesc.c @@ -847,6 +847,7 @@ const CPU_INT08U str_DeviceMenu_1[] = " const CPU_INT08U str_DeviceMenu_2[] = "Монетоприемники"; //const CPU_INT08U str_DeviceMenu_3[] = "Модем"; const CPU_INT08U str_DeviceMenu_4[] = "Купюроприемники"; +const CPU_INT08U str_DeviceMenu_5[] = "Сигнал печати"; const TMenuLine line_DeviceMenu_0 = { MENU_LINE_STRING, // тип пункта меню @@ -883,8 +884,47 @@ const TMenuLine line_DeviceMenu_3 = { (void*)&ModemSetupPanel // панель для перехода };*/ -const TMenuLineArray arr_DeviceMenuArray[] = {&line_DeviceMenu_0, &line_DeviceMenu_1, &line_DeviceMenu_2, &line_DeviceMenu_3, /*&line_DeviceMenu_4,*/ NULL}; -const TMenuPanel DeviceMenuPanel[] = {arr_DeviceMenuArray, NULL, 4, MENU_PANEL_STANDARD}; +const TMenuLine line_DeviceMenu_5 = { + MENU_LINE_GOTO_MENU, // тип пункта меню + 0, // доп. флаги + (void*)str_DeviceMenu_5, // указатель на текстовую строку или дескриптор + (void*)&SignalSetupPanel // панель для перехода +}; + +const TMenuLineArray arr_DeviceMenuArray[] = {&line_DeviceMenu_0, &line_DeviceMenu_1, &line_DeviceMenu_2, &line_DeviceMenu_3, &line_DeviceMenu_5,/*&line_DeviceMenu_4,*/ NULL}; +const TMenuPanel DeviceMenuPanel[] = {arr_DeviceMenuArray, NULL, 5, MENU_PANEL_STANDARD}; + +/*********************************** + МЕНЮ НАСТРОЙКА сигналов печати чеков +***********************************/ +const TMenuLine line_SignalMenu_0 = { + MENU_LINE_SHOW_DESC, // тип пункта меню + MENU_FIXED_LINE|MENU_INDEX_LINE, // доп. флаги + (void*)&SignalIndexDesc, // указатель на текстовую строку или дескриптор + NULL // панель для перехода +}; + +const TMenuLine line_SignalMenu_1 = { + MENU_LINE_SHOW_DESC, // тип пункта меню + 0, // доп. флаги + (void*)&EnableSignalDesc, // указатель на текстовую строку или дескриптор + NULL // панель для перехода +}; + +const TMenuLine line_SignalMenu_2 = { + MENU_LINE_SHOW_DESC, // тип пункта меню + 0, // доп. флаги + (void*)&SignalPulseDesc, // указатель на текстовую строку или дескриптор + NULL // панель для перехода +}; + +void OnEnterSignalMenu(void) +{ + CoinIndex = 0; +} + +const TMenuLineArray arr_SignalMenuArray[] = {&line_SignalMenu_0, &line_SignalMenu_1, &line_SignalMenu_2, NULL}; +const TMenuPanel SignalSetupPanel[] = {arr_SignalMenuArray, OnEnterSignalMenu, 3, MENU_PANEL_STANDARD}; /*********************************** @@ -984,8 +1024,8 @@ const TMenuLine line_FrMenu_12 = { NULL }; -const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, &line_FrMenu_2, &line_FrMenu_3, &line_FrMenu_4, &line_FrMenu_5, &line_FrMenu_6, &line_FrMenu_7, &line_FrMenu_8, &line_FrMenu_9, &line_FrMenu_10, &line_FrMenu_11, &line_FrMenu_12, NULL}; -const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 13, MENU_PANEL_STANDARD}; +const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, /*&line_FrMenu_2, &line_FrMenu_3,*/ &line_FrMenu_4, &line_FrMenu_5, &line_FrMenu_6, &line_FrMenu_7, &line_FrMenu_8, &line_FrMenu_9, &line_FrMenu_10, &line_FrMenu_11, &line_FrMenu_12, NULL}; +const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 11, MENU_PANEL_STANDARD}; /*********************************** МЕНЮ НАСТРОЙКА МОНЕТОПРИЕМНИКОВ @@ -1671,7 +1711,7 @@ void PrintEventJournalRecord(TEventRecord *record) { sprintf(str_EventData, ""); } - else if (record->event == JOURNAL_EVENT_PRINT_BILL) + else if ((record->event >= JOURNAL_EVENT_PRINT_BILL_POST1) && (record->event <= JOURNAL_EVENT_PRINT_BILL_VACUUM2)) { sprintf(str_EventData, " "); } diff --git a/PROJECT/menu/menudesc.h b/PROJECT/menu/menudesc.h index 9c6b3bf..8d5e6c8 100644 --- a/PROJECT/menu/menudesc.h +++ b/PROJECT/menu/menudesc.h @@ -20,6 +20,7 @@ extern const TMenuPanel CommonCountersLongPanel[]; extern const TMenuPanel BillCountersPanel[]; extern const TMenuPanel ModemSetupPanel[]; extern const TMenuPanel CoinSetupPanel[]; +extern const TMenuPanel SignalSetupPanel[]; extern const TMenuPanel JournalIsReset[]; extern const TMenuPanel ClearJournalMenuPanel[]; extern const TMenuPanel StatIsReset[]; diff --git a/PROJECT/services/time.c b/PROJECT/services/time.c index 6c086c1..7215443 100644 --- a/PROJECT/services/time.c +++ b/PROJECT/services/time.c @@ -13,7 +13,7 @@ void RTC_Isr (void) CPU_INT32U ilr; ilr = ILR & 0x7; - if (ilr & 0x1) PostUserEvent(EVENT_SEC); + if (ilr & 0x1) PostUserEvent(EVENT_UPATE_RTC); ILR = ilr; } @@ -51,7 +51,6 @@ void RTC_SetTime(TRTC_Data *rtc) OS_EXIT_CRITICAL(); } - extern CPU_INT32U BSP_CPU_PclkFreq (CPU_INT08U pclk); void InitRTC(void) @@ -87,7 +86,7 @@ void InitRTC(void) CISS = 0; AMR = 0xff; - CIIR = 0x1; // sec interrupt + CIIR_bit.IMSEC = 0x1; // sec interrupt OS_EXIT_CRITICAL(); } diff --git a/settings/sk-mlpc2368.dni b/settings/sk-mlpc2368.dni index 362b3d7..485b643 100644 --- a/settings/sk-mlpc2368.dni +++ b/settings/sk-mlpc2368.dni @@ -14,7 +14,7 @@ Count=0 Enabled=0 ShowSource=1 [DebugChecksum] -Checksum=-390368809 +Checksum=-1178438452 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 diff --git a/settings/sk-mlpc2368.wsdt b/settings/sk-mlpc2368.wsdt index a299459..f52ca93 100644 --- a/settings/sk-mlpc2368.wsdt +++ b/settings/sk-mlpc2368.wsdt @@ -34,7 +34,7 @@ TabID-28963-15244Find in FilesFind-in-Files - 0 + 1 TabID-1122-24249 @@ -52,14 +52,14 @@ - TextEditor$WS_DIR$\PROJECT\menu\menu.h04814241424TextEditor$WS_DIR$\PROJECT\app\control.h004949TextEditor$WS_DIR$\PROJECT\app\journal.c03781020510205TextEditor$WS_DIR$\PROJECT\drivers\keyboard\keyboard.h00470470TextEditor$WS_DIR$\PROJECT\data\datadesc.c02608122035122035TextEditor$WS_DIR$\PROJECT\menu\menu.c020660496049TextEditor$WS_DIR$\OS\app\app.c02915301530TextEditor$WS_DIR$\PROJECT\data\data.h09223452345TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\PROJECT\data\data.c032891469146TextEditor$WS_DIR$\PROJECT\data\datadesc.h00257269TextEditor$WS_DIR$\PROJECT\menu\menudesc.c018097101271012TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\PROJECT\app\app_serv.c0496151121511213TextEditor$WS_DIR$\PROJECT\services\coin.c037040874087TextEditor$WS_DIR$\PROJECT\services\fr.c025981928192TextEditor$WS_DIR$\PROJECT\services\console.c010933323332TextEditor$WS_DIR$\OS\uc\cpu\cpu.h08545784589TextEditor$WS_DIR$\OS\uc\lib\lib_def.h011159735981TextEditor$WS_DIR$\PROJECT\data\fram_map.h03810111011TextEditor$WS_DIR$\PROJECT\app\app_serv.h02812771304TextEditor$WS_DIR$\PROJECT\app\journal.h08160716070100000010000001 + TextEditor$WS_DIR$\PROJECT\menu\menu.h04814241424TextEditor$WS_DIR$\OS\app\app_cfg.h005858TextEditor$WS_DIR$\PROJECT\data\data.c032891469146TextEditor$WS_DIR$\..\..\8\positive_6_24\OS\app\app.c02614311431TextEditor$WS_DIR$\PROJECT\app\app_serv.c017849274927TextEditor$WS_DIR$\PROJECT\services\coin.c0196426542655TextEditor$WS_DIR$\PROJECT\services\fr.c04484484TextEditor$WS_DIR$\PROJECT\services\console.c010933323332TextEditor$WS_DIR$\OS\uc\cpu\cpu.h08545784589TextEditor$WS_DIR$\OS\uc\lib\lib_def.h011159735981TextEditor$WS_DIR$\PROJECT\data\fram_map.h04211541154TextEditor$WS_DIR$\PROJECT\app\app_serv.h02811001115TextEditor$WS_DIR$\PROJECT\app\journal.h04432053205TextEditor$WS_DIR$\PROJECT\app\journal.c04211441144TextEditor$WS_DIR$\PROJECT\services\time.c012625625TextEditor$WS_DIR$\OS\app\app.c02911311131TextEditor$WS_DIR$\PROJECT\menu\menu.c020660776077TextEditor$WS_DIR$\OS\bsp\iolpc2368.h04662143604143604TextEditor$WS_DIR$\OS\bsp\bsp.c014966786678TextEditor$WS_DIR$\PROJECT\data\datadesc.c07092888928889TextEditor$WS_DIR$\PROJECT\app\control.h004949TextEditor$WS_DIR$\PROJECT\data\datadesc.h04719751990TextEditor$WS_DIR$\PROJECT\menu\menudesc.c08633624636246TextEditor$WS_DIR$\PROJECT\services\coin.h0043430100000010000001 - iaridepm.enu1-2-2592253-2-2200200156250210305199219624606-2-23141282-2-212843161003125332282156250210305 + iaridepm.enu1-2-2742253-2-2200200156250210305199219782334-2-21641282-2-212841661003125174553156250210305