Остались только сетчики и проверить оплату банковской картой

This commit is contained in:
Dmitriy 2025-05-16 01:19:43 +03:00
parent fb903130dc
commit 6e230142d1
9 changed files with 2149 additions and 2040 deletions

View File

@ -477,10 +477,12 @@ int PayTypeTermEnabled(void)
/// ///
int PayTypeCashEnabled(void) int PayTypeCashEnabled(void)
{ {
CPU_INT32U validator_en, coin_en; CPU_INT32U validator_en, coin_en, abonement_en;
GetData(&EnableValidatorDesc, &validator_en, 0, DATA_FLAG_SYSTEM_INDEX); GetData(&EnableValidatorDesc, &validator_en, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&EnableCoinDesc, &coin_en, 0, DATA_FLAG_SYSTEM_INDEX); GetData(&EnableCoinDesc, &coin_en, 0, DATA_FLAG_SYSTEM_INDEX);
return validator_en | coin_en; GetData(&EnableAbonementDesc, &abonement_en, 0, DATA_FLAG_SYSTEM_INDEX);
return validator_en | coin_en | abonement_en;
} }
/// ///
@ -827,15 +829,46 @@ void AppVladEventProcess(CPU_INT32U event)
mifaredata_t* data = get_mifare_data(); mifaredata_t* data = get_mifare_data();
uint32_t pay = 0, bonus = 0, best_before = 0; uint32_t pay = 0, bonus = 0, best_before = 0;
uint32_t counter_money = 0, counter_bonus = 0, counter_runs = 0;
uint32_t counter_money_sum = 0, counter_bonus_sum = 0, counter_runs_sum = 0;
uint32_t all_counter_money = 0;
GetData(&AbonementMoneyDesc, &pay, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX); GetData(&AbonementMoneyDesc, &pay, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
GetData(&AbonementBonusDesc, &bonus, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX); GetData(&AbonementBonusDesc, &bonus, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
GetData(&AbonementBestBeforeDesc, &best_before, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX); GetData(&AbonementBestBeforeDesc, &best_before, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
GetData(&CounterMoneyAbonementDesc, &counter_money, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
GetData(&CounterBonusAbonementDesc, &counter_bonus, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
GetData(&CounterRunsAbonementDesc, &counter_runs, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
GetData(&CounterMoneyAbonementDesc, &counter_money_sum, 2, DATA_FLAG_DIRECT_INDEX);
GetData(&CounterBonusAbonementDesc, &counter_bonus_sum, 2, DATA_FLAG_DIRECT_INDEX);
GetData(&CounterRunsAbonementDesc, &counter_runs_sum, 2, DATA_FLAG_DIRECT_INDEX);
GetData(&CounterAbonementMoneyDesc, &all_counter_money, 0, DATA_FLAG_DIRECT_INDEX);
counter_money += pay;
counter_bonus += bonus;
counter_runs++;
counter_money_sum += pay;
counter_bonus_sum += bonus;
counter_runs_sum++;
all_counter_money += pay;
SetData(&CounterMoneyAbonementDesc, &counter_money, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
SetData(&CounterBonusAbonementDesc, &counter_bonus, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
SetData(&CounterRunsAbonementDesc, &counter_runs, app_state.current_abonement, DATA_FLAG_DIRECT_INDEX);
SetData(&CounterMoneyAbonementDesc, &counter_money_sum, 2, DATA_FLAG_DIRECT_INDEX);
SetData(&CounterBonusAbonementDesc, &counter_bonus_sum, 2, DATA_FLAG_DIRECT_INDEX);
SetData(&CounterRunsAbonementDesc, &counter_runs_sum, 2, DATA_FLAG_DIRECT_INDEX);
SetData(&CounterAbonementMoneyDesc, &all_counter_money, 0, DATA_FLAG_DIRECT_INDEX);
uint32_t SystemTime = GetTimeSec() + best_before * 24L * 60L; uint32_t SystemTime = GetTimeSec() + best_before * 24L * 60L;
data->money += pay; data->money += pay;
data->bonus += bonus; data->bonus = bonus;
data->best_before = SystemTime; data->best_before = SystemTime;
if(!write_mifare_card()) if(!write_mifare_card())
@ -1058,10 +1091,10 @@ void AppVladEventProcess(CPU_INT32U event)
RefreshMenu(); RefreshMenu();
// temporally // temporally
SetAcceptedMoney(app_state.abonementtopay); //SetAcceptedMoney(app_state.abonementtopay);
SaveEventRecord(app_state.current_abonement, JOURNAL_EVENT_CARD_ACCEPTED, app_state.abonementtopay); //SaveEventRecord(app_state.current_abonement, JOURNAL_EVENT_CARD_ACCEPTED, app_state.abonementtopay);
app_state.user_menu = USER_MENU_INSERT_BONUS_CARD; //app_state.user_menu = USER_MENU_INSERT_BONUS_CARD;
PostUserEvent(EVENT_FINISH_PAYMENT_ABONEMENT); //PostUserEvent(EVENT_FINISH_PAYMENT_ABONEMENT);
} }
} }
else if (app_state.user_menu == USER_MENU_SHOW_THANKS) else if (app_state.user_menu == USER_MENU_SHOW_THANKS)
@ -1562,8 +1595,8 @@ void AppVladEventProcess(CPU_INT32U event)
break; break;
case EVENT_FINISH_PAYMENT_ABONEMENT: case EVENT_FINISH_PAYMENT_ABONEMENT:
{ {
CPU_INT32U price, accmoney; //CPU_INT32U price, accmoney;
CPU_INT32U min_time; //CPU_INT32U min_time;
if (app_state.user_menu != USER_MENU_INSERT_BONUS_CARD) if (app_state.user_menu != USER_MENU_INSERT_BONUS_CARD)
{ {
@ -1689,7 +1722,7 @@ void AppVladEventProcess(CPU_INT32U event)
{ {
if (AppCanStart()) if (AppCanStart())
{ {
app_state.current_abonement = (app_state.current_abonement + 1) & 0x03; app_state.current_abonement = (app_state.current_abonement + 1) & 0x01;
PrintMenuAllPrice(app_state.blink_ctr >= 500); PrintMenuAllPrice(app_state.blink_ctr >= 500);
RefreshMenu(); RefreshMenu();
} }
@ -1749,7 +1782,7 @@ void AppVladEventProcess(CPU_INT32U event)
{ {
if (AppCanStart()) if (AppCanStart())
{ {
app_state.current_abonement = (app_state.current_abonement + 1) & 0x03; app_state.current_abonement = (app_state.current_abonement + 1) & 0x01;
PrintMenuAllPrice(app_state.blink_ctr >= 500); PrintMenuAllPrice(app_state.blink_ctr >= 500);
RefreshMenu(); RefreshMenu();
} }
@ -2338,8 +2371,8 @@ void PrintMenuAllPrice(CPU_INT08U blink)
char str[32]; char str[32];
uint32_t pay_silver = 0, bonus_silver = 0; uint32_t pay_silver = 0, bonus_silver = 0;
uint32_t pay_gold = 0, bonus_gold = 0; uint32_t pay_gold = 0, bonus_gold = 0;
uint32_t pay_plat = 0, bonus_plat = 0; //uint32_t pay_plat = 0, bonus_plat = 0;
uint32_t pay_diamond = 0, bonus_diamond = 0; //uint32_t pay_diamond = 0, bonus_diamond = 0;
GetData(&AbonementMoneyDesc, &pay_silver, 0, DATA_FLAG_DIRECT_INDEX); GetData(&AbonementMoneyDesc, &pay_silver, 0, DATA_FLAG_DIRECT_INDEX);
GetData(&AbonementBonusDesc, &bonus_silver, 0, DATA_FLAG_DIRECT_INDEX); GetData(&AbonementBonusDesc, &bonus_silver, 0, DATA_FLAG_DIRECT_INDEX);
@ -2347,11 +2380,11 @@ void PrintMenuAllPrice(CPU_INT08U blink)
GetData(&AbonementMoneyDesc, &pay_gold, 1, DATA_FLAG_DIRECT_INDEX); GetData(&AbonementMoneyDesc, &pay_gold, 1, DATA_FLAG_DIRECT_INDEX);
GetData(&AbonementBonusDesc, &bonus_gold, 1, DATA_FLAG_DIRECT_INDEX); GetData(&AbonementBonusDesc, &bonus_gold, 1, DATA_FLAG_DIRECT_INDEX);
GetData(&AbonementMoneyDesc, &pay_plat, 2, DATA_FLAG_DIRECT_INDEX); //GetData(&AbonementMoneyDesc, &pay_plat, 2, DATA_FLAG_DIRECT_INDEX);
GetData(&AbonementBonusDesc, &bonus_plat, 2, DATA_FLAG_DIRECT_INDEX); //GetData(&AbonementBonusDesc, &bonus_plat, 2, DATA_FLAG_DIRECT_INDEX);
GetData(&AbonementMoneyDesc, &pay_diamond, 3, DATA_FLAG_DIRECT_INDEX); //GetData(&AbonementMoneyDesc, &pay_diamond, 3, DATA_FLAG_DIRECT_INDEX);
GetData(&AbonementBonusDesc, &bonus_diamond, 3, DATA_FLAG_DIRECT_INDEX); //GetData(&AbonementBonusDesc, &bonus_diamond, 3, DATA_FLAG_DIRECT_INDEX);
if(app_state.current_abonement == SILVER_ABONEMENT) if(app_state.current_abonement == SILVER_ABONEMENT)
{ {
@ -2359,19 +2392,19 @@ void PrintMenuAllPrice(CPU_INT08U blink)
PrintUserMenuStr(" ", 0); PrintUserMenuStr(" ", 0);
sprintf(str, "ÇÎËÎÒ-%d ð %d áîí", pay_gold, bonus_gold); sprintf(str, "ÇÎËÎÒ-%d ð %d áîí", pay_gold, bonus_gold);
PrintUserMenuStr(str, 1); PrintUserMenuStr(str, 1);
sprintf(str, "ÏËÀÒ.-%d ð %d áîí", pay_plat, bonus_plat); //sprintf(str, "ÏËÀÒ.-%d ð %d áîí", pay_plat, bonus_plat);
PrintUserMenuStr(str, 2); //PrintUserMenuStr(str, 2);
sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond); //sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond);
PrintUserMenuStr(str, 3); //PrintUserMenuStr(str, 3);
} else { } else {
sprintf(str, "ÑÅÐÅÁ-%d ð %d áîí", pay_silver, bonus_silver); sprintf(str, "ÑÅÐÅÁ-%d ð %d áîí", pay_silver, bonus_silver);
PrintUserMenuStr(str, 0); PrintUserMenuStr(str, 0);
sprintf(str, "ÇÎËÎÒ-%d ð %d áîí", pay_gold, bonus_gold); sprintf(str, "ÇÎËÎÒ-%d ð %d áîí", pay_gold, bonus_gold);
PrintUserMenuStr(str, 1); PrintUserMenuStr(str, 1);
sprintf(str, "ÏËÀÒ.-%d ð %d áîí", pay_plat, bonus_plat); //sprintf(str, "ÏËÀÒ.-%d ð %d áîí", pay_plat, bonus_plat);
PrintUserMenuStr(str, 2); //PrintUserMenuStr(str, 2);
sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond); //sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond);
PrintUserMenuStr(str, 3); //PrintUserMenuStr(str, 3);
} }
} }
else if(app_state.current_abonement == GOLD_ABONEMENT) else if(app_state.current_abonement == GOLD_ABONEMENT)
@ -2380,23 +2413,23 @@ void PrintMenuAllPrice(CPU_INT08U blink)
sprintf(str, "ÑÅÐÅÁ-%d ð %d áîí", pay_silver, bonus_silver); sprintf(str, "ÑÅÐÅÁ-%d ð %d áîí", pay_silver, bonus_silver);
PrintUserMenuStr(str, 0); PrintUserMenuStr(str, 0);
PrintUserMenuStr(" ", 1); //PrintUserMenuStr(" ", 1);
sprintf(str, "ÏËÀÒ.-%d ð %d áîí", pay_plat, bonus_plat); //sprintf(str, "ÏËÀÒ.-%d ð %d áîí", pay_plat, bonus_plat);
PrintUserMenuStr(str, 2); //PrintUserMenuStr(str, 2);
sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond); //sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond);
PrintUserMenuStr(str, 3); //PrintUserMenuStr(str, 3);
} else { } else {
sprintf(str, "ÑÅÐÅÁ-%d ð %d áîí", pay_silver, bonus_silver); sprintf(str, "ÑÅÐÅÁ-%d ð %d áîí", pay_silver, bonus_silver);
PrintUserMenuStr(str, 0); PrintUserMenuStr(str, 0);
sprintf(str, "ÇÎËÎÒ-%d ð %d áîí", pay_gold, bonus_gold); sprintf(str, "ÇÎËÎÒ-%d ð %d áîí", pay_gold, bonus_gold);
PrintUserMenuStr(str, 1); PrintUserMenuStr(str, 1);
sprintf(str, "ÏËÀÒ.-%d ð %d áîí", pay_plat, bonus_plat); //sprintf(str, "ÏËÀÒ.-%d ð %d áîí", pay_plat, bonus_plat);
PrintUserMenuStr(str, 2); //PrintUserMenuStr(str, 2);
sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond); //sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond);
PrintUserMenuStr(str, 3); //PrintUserMenuStr(str, 3);
} }
} }
else if(app_state.current_abonement == PLATINUM_ABONEMENT) /*else if(app_state.current_abonement == PLATINUM_ABONEMENT)
{ {
if(blink) { if(blink) {
sprintf(str, "ÑÅÐÅÁ-%d ð %d áîí", pay_silver, bonus_silver); sprintf(str, "ÑÅÐÅÁ-%d ð %d áîí", pay_silver, bonus_silver);
@ -2439,7 +2472,7 @@ void PrintMenuAllPrice(CPU_INT08U blink)
sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond); sprintf(str, "ÀËÌÀÇ-%d ð %d áîí", pay_diamond, bonus_diamond);
PrintUserMenuStr(str, 3); PrintUserMenuStr(str, 3);
} }
} }*/
} }
void PrintSilverMenu(void) void PrintSilverMenu(void)

View File

@ -665,6 +665,35 @@ TDataDescStruct const EnableCoinDesc = {
0 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
};
/************************************* /*************************************
Öåíà èìïóëüñà ìîíåòîïðèåìíèêà Öåíà èìïóëüñà ìîíåòîïðèåìíèêà
*************************************/ *************************************/
@ -1540,6 +1569,19 @@ void OnChangeInitByDefault(void)
temp32 = 2; temp32 = 2;
SetData(&SolarControlChannelDesc, &temp32, 2, DATA_FLAG_DIRECT_INDEX); 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 #endif
@ -4979,7 +5021,7 @@ CPU_INT08U const AbonementIndexHour_str0[] = "
CPU_INT08U const AbonementIndexHour_str1[] = "ÇÎËÎÒÎé"; CPU_INT08U const AbonementIndexHour_str1[] = "ÇÎËÎÒÎé";
CPU_INT08U const AbonementIndexHour_str2[] = "ÏËÀÒÈÍÎÂÛé"; CPU_INT08U const AbonementIndexHour_str2[] = "ÏËÀÒÈÍÎÂÛé";
CPU_INT08U const AbonementIndexHour_str3[] = "ÀËÌÀÇÍÛé"; CPU_INT08U const AbonementIndexHour_str3[] = "ÀËÌÀÇÍÛé";
CPU_INT08U const *AbonementIndexHourList[] = {AbonementIndexHour_str0, AbonementIndexHour_str1, AbonementIndexHour_str2, AbonementIndexHour_str3}; CPU_INT08U const *AbonementIndexHourList[] = {AbonementIndexHour_str0, AbonementIndexHour_str1/*, AbonementIndexHour_str2, AbonementIndexHour_str3*/};
CPU_INT32U abonement_index; CPU_INT32U abonement_index;
@ -5014,7 +5056,7 @@ TDataDescStruct const AbonementMoneyDesc = {
DATA_TYPE_ULONG, // òèï ïàðàìåòðà DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà 2, // ðàçìåð ìàññèâà
&AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà &AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, AbonementMoney), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM (void*)offsetof(TFramMap, AbonementMoney), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&AbonementMoneyRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà (void*)&AbonementMoneyRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
@ -5037,7 +5079,7 @@ CPU_INT08U const AbonementIndex_str1[] = "
CPU_INT08U const AbonementIndex_str2[] = "ÏËÀÒÈÍÎÂÛé"; CPU_INT08U const AbonementIndex_str2[] = "ÏËÀÒÈÍÎÂÛé";
CPU_INT08U const AbonementIndex_str3[] = "ÀËÌÀÇÍÛé"; CPU_INT08U const AbonementIndex_str3[] = "ÀËÌÀÇÍÛé";
CPU_INT08U const AbonementIndex_str4[] = "ÈÒÎÃÎ"; CPU_INT08U const AbonementIndex_str4[] = "ÈÒÎÃÎ";
CPU_INT08U const *AbonementIndexList[] = {AbonementIndex_str0, AbonementIndex_str1, AbonementIndex_str2, AbonementIndex_str3, AbonementIndex_str4}; CPU_INT08U const *AbonementIndexList[] = {AbonementIndex_str0, AbonementIndex_str1/*, AbonementIndex_str2, AbonementIndex_str3*/, AbonementIndex_str4};
TDataDescStruct const AbonementCounterIndexDesc = { TDataDescStruct const AbonementCounterIndexDesc = {
DATA_DESC_EDIT, // òèï äåñêðèïòîðà DATA_DESC_EDIT, // òèï äåñêðèïòîðà
@ -5069,7 +5111,7 @@ TDataDescStruct const CounterMoneyAbonementDesc = {
DATA_TYPE_ULONG, // òèï ïàðàìåòðà DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà 3, // ðàçìåð ìàññèâà
&AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà &AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.abonement[0].card_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM (void*)offsetof(TFramMap, solar_counters.abonement[0].card_money), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
@ -5094,7 +5136,7 @@ TDataDescStruct const CounterBonusAbonementDesc = {
DATA_TYPE_ULONG, // òèï ïàðàìåòðà DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà 3, // ðàçìåð ìàññèâà
&AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà &AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.abonement[0].card_bonus), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM (void*)offsetof(TFramMap, solar_counters.abonement[0].card_bonus), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
@ -5119,7 +5161,7 @@ TDataDescStruct const CounterRunsAbonementDesc = {
DATA_TYPE_ULONG, // òèï ïàðàìåòðà DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà 3, // ðàçìåð ìàññèâà
&AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà &AbonementCounterIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, solar_counters.abonement[0].runs), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM (void*)offsetof(TFramMap, solar_counters.abonement[0].runs), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà NULL, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
@ -5143,7 +5185,7 @@ TDataDescStruct const AbonementBonusDesc = {
DATA_TYPE_ULONG, // òèï ïàðàìåòðà DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà 2, // ðàçìåð ìàññèâà
&AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà &AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, AbonementBonus), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM (void*)offsetof(TFramMap, AbonementBonus), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&AbonementBonusRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà (void*)&AbonementBonusRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
@ -5167,7 +5209,7 @@ TDataDescStruct const AbonementBestBeforeDesc = {
DATA_TYPE_ULONG, // òèï ïàðàìåòðà DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
4, // ðàçìåð ìàññèâà 2, // ðàçìåð ìàññèâà
&AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà &AbonementIndexDesc, // óêàçàòåëü íà äåñêðèïòîð èíäåêñà ìàññèâà
(void*)offsetof(TFramMap, AbonementBestBefore), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM (void*)offsetof(TFramMap, AbonementBestBefore), // óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
(void*)&AbonementBestBeforeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà (void*)&AbonementBestBeforeRange, // óêàçàòåëü íà ãðàíèöû ïàðàìåòðà

View File

@ -76,6 +76,7 @@ typedef struct{
typedef struct{ typedef struct{
CPU_INT32U EnableValidator; CPU_INT32U EnableValidator;
CPU_INT32U EnableCoinAcceptor; CPU_INT32U EnableCoinAcceptor;
CPU_INT32U EnableAbonementAcceptor;
CPU_INT32U EnableModem; CPU_INT32U EnableModem;
CPU_INT32U EnableFiscal; CPU_INT32U EnableFiscal;
CPU_INT32U EnableFiscalDayClear; CPU_INT32U EnableFiscalDayClear;
@ -140,6 +141,7 @@ extern TDataDescStruct const T_End_WeekendDesc;
extern TDataDescStruct const EnableFiscalDesc; extern TDataDescStruct const EnableFiscalDesc;
extern TDataDescStruct const EnableCoinDesc; extern TDataDescStruct const EnableCoinDesc;
extern TDataDescStruct const EnableAbonementDesc;
extern TDataDescStruct const EnableModemDesc; extern TDataDescStruct const EnableModemDesc;
extern TDataDescStruct const EnableValidatorDesc; extern TDataDescStruct const EnableValidatorDesc;
extern TDataDescStruct const CoinPerPulseDesc; extern TDataDescStruct const CoinPerPulseDesc;

View File

@ -1199,6 +1199,7 @@ const CPU_INT08U str_DeviceMenu_6[] = "
#endif #endif
#if defined(BOARD_SOLARIUM_VLAD) #if defined(BOARD_SOLARIUM_VLAD)
const CPU_INT08U str_DeviceMenu_7[] = "Òàáëî"; const CPU_INT08U str_DeviceMenu_7[] = "Òàáëî";
const CPU_INT08U str_DeviceMenu_9[] = "Àáîíåìåíò";
#endif #endif
#if defined(CONFIG_RELAY_ENABLE) #if defined(CONFIG_RELAY_ENABLE)
const CPU_INT08U str_DeviceMenu_8[] = "Ðåëå"; const CPU_INT08U str_DeviceMenu_8[] = "Ðåëå";
@ -1262,6 +1263,13 @@ const TMenuLine line_DeviceMenu_7 = {
(void*)str_DeviceMenu_7, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð (void*)str_DeviceMenu_7, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
(void*)&ScoreSettingsPanel // ïàíåëü äëÿ ïåðåõîäà (void*)&ScoreSettingsPanel // ïàíåëü äëÿ ïåðåõîäà
}; };
const TMenuLine line_DeviceMenu_9 = {
MENU_LINE_GOTO_MENU, // òèï ïóíêòà ìåíþ
0, // äîï. ôëàãè
(void*)str_DeviceMenu_7, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
(void*)&AbonementSetupPanel // ïàíåëü äëÿ ïåðåõîäà
};
#endif #endif
#if defined(CONFIG_RELAY_ENABLE) #if defined(CONFIG_RELAY_ENABLE)
@ -1283,6 +1291,7 @@ const TMenuLineArray arr_DeviceMenuArray[] = {&line_DeviceMenu_0, &line_DeviceMe
#endif #endif
#if defined(BOARD_SOLARIUM_VLAD) #if defined(BOARD_SOLARIUM_VLAD)
&line_DeviceMenu_7, &line_DeviceMenu_7,
&line_DeviceMenu_9,
#endif #endif
#if defined(CONFIG_RELAY_ENABLE) #if defined(CONFIG_RELAY_ENABLE)
&line_DeviceMenu_8, &line_DeviceMenu_8,
@ -1297,7 +1306,7 @@ const TMenuPanel DeviceMenuPanel[] = {arr_DeviceMenuArray, NULL,
+ 1 + 1
#endif #endif
#if defined(BOARD_SOLARIUM_VLAD) #if defined(BOARD_SOLARIUM_VLAD)
+ 1 + 2
#endif #endif
#if defined(CONFIG_RELAY_ENABLE) #if defined(CONFIG_RELAY_ENABLE)
+ 1 + 1
@ -1535,6 +1544,28 @@ const TMenuLine line_CoinMenu_5 = {
const TMenuLineArray arr_CoinMenuArray[] = {&line_CoinMenu_0, &line_CoinMenu_1, &line_CoinMenu_2, &line_CoinMenu_3, &line_CoinMenu_4, &line_CoinMenu_5, NULL}; const TMenuLineArray arr_CoinMenuArray[] = {&line_CoinMenu_0, &line_CoinMenu_1, &line_CoinMenu_2, &line_CoinMenu_3, &line_CoinMenu_4, &line_CoinMenu_5, NULL};
const TMenuPanel CoinSetupPanel[] = {arr_CoinMenuArray, NULL, 6, MENU_PANEL_STANDARD}; const TMenuPanel CoinSetupPanel[] = {arr_CoinMenuArray, NULL, 6, MENU_PANEL_STANDARD};
/***********************************
ÌÅÍÞ ÍÀÑÒÐÎÉÊÀ ÌÎÍÅÒÎÏÐÈÅÌÍÈÊÀ
***********************************/
const CPU_INT08U str_AbonementMenuSet_0[] = "ÍÀÑÒÐÎéÊÈ ÌÎÍÅÒÎÏÐ.";
const TMenuLine line_AbonementMenuSet_0 = {
MENU_LINE_STRING, // òèï ïóíêòà ìåíþ
MENU_FIXED_LINE, // äîï. ôëàãè
(void*)str_AbonementMenuSet_0, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
NULL // ïàíåëü äëÿ ïåðåõîäà
};
const TMenuLine line_AbonementMenuSet_1 = {
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
0, // äîï. ôëàãè
(void*)&EnableCoinDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
NULL // ïàíåëü äëÿ ïåðåõîäà
};
const TMenuLineArray arr_AbonementMenuArray[] = {&line_AbonementMenuSet_0, &line_AbonementMenuSet_1, NULL};
const TMenuPanel AbonementSetupPanel[] = {arr_AbonementMenuArray, NULL, 2, MENU_PANEL_STANDARD};
/*********************************** /***********************************
ÌÅÍÞ ÍÀÑÒÐÎÉÊÀ ÌÎÄÅÌÀ ÌÅÍÞ ÍÀÑÒÐÎÉÊÀ ÌÎÄÅÌÀ
***********************************/ ***********************************/
@ -2903,7 +2934,7 @@ void OnEnterAbonementMenu(void)
} }
const TMenuLineArray arr_AbonementArray[] = {&line_AbonementMenu_0, &line_AbonementMenu_1, &line_AbonementMenu_2, &line_AbonementMenu_3, NULL}; const TMenuLineArray arr_AbonementArray[] = {&line_AbonementMenu_0, &line_AbonementMenu_1, &line_AbonementMenu_2, &line_AbonementMenu_3, NULL};
const TMenuPanel AbonementMenuPanel[] = {arr_AbonementArray, OnEnterAbonementMenu, 3, MENU_PANEL_STANDARD}; const TMenuPanel AbonementMenuPanel[] = {arr_AbonementArray, OnEnterAbonementMenu, 4, MENU_PANEL_STANDARD};
/*********************************** /***********************************
ÌÅÍÞ ÑÊÈÄÊÈ ÏÎ ×ÀÑÀÌ ÌÅÍÞ ÑÊÈÄÊÈ ÏÎ ×ÀÑÀÌ

View File

@ -20,6 +20,7 @@ extern const TMenuPanel CommonCountersLongPanel[];
extern const TMenuPanel BillCountersPanel[]; extern const TMenuPanel BillCountersPanel[];
extern const TMenuPanel ModemSetupPanel[]; extern const TMenuPanel ModemSetupPanel[];
extern const TMenuPanel CoinSetupPanel[]; extern const TMenuPanel CoinSetupPanel[];
extern const TMenuPanel AbonementSetupPanel[];
extern const TMenuPanel JournalIsReset[]; extern const TMenuPanel JournalIsReset[];
extern const TMenuPanel ClearJournalMenuPanel[]; extern const TMenuPanel ClearJournalMenuPanel[];
extern const TMenuPanel StatIsReset[]; extern const TMenuPanel StatIsReset[];

View File

@ -263,7 +263,7 @@
<item>app_state.user_menu</item> <item>app_state.user_menu</item>
<item>str</item> <item>str</item>
<item>str1</item> <item>str1</item>
<item></item> <item />
</expressions> </expressions>
<col-names> <col-names>
<item>Expression</item> <item>Expression</item>

View File

@ -50,7 +50,7 @@
<MemConfigValue>C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\CONFIG\debugger\NXP\LPC2368.ddf</MemConfigValue> <MemConfigValue>C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\CONFIG\debugger\NXP\LPC2368.ddf</MemConfigValue>
</PlDriver> </PlDriver>
<DebugChecksum> <DebugChecksum>
<Checksum>2148628426</Checksum> <Checksum>2586745689</Checksum>
</DebugChecksum> </DebugChecksum>
<Exceptions> <Exceptions>
<StopOnUncaught>_ 0</StopOnUncaught> <StopOnUncaught>_ 0</StopOnUncaught>
@ -65,12 +65,12 @@
</CallStack> </CallStack>
<JLinkDriver> <JLinkDriver>
<WatchCond>_ 0</WatchCond> <WatchCond>_ 0</WatchCond>
<Watch0>_ 0 "0x00000000" 4294967295 "0xFFFFFFFF" 0 "0x00000000" 4294967295 "0xFFFFFFFF" 3 0 0 0</Watch0> <Watch0>_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0</Watch0>
<Watch1>_ 0 "0x00000000" 4294967295 "0xFFFFFFFF" 0 "0x00000000" 4294967295 "0xFFFFFFFF" 3 0 0 0</Watch1> <Watch1>_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0</Watch1>
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
<CStepIntDis>_ 0</CStepIntDis>
<jlinkResetStyle>12</jlinkResetStyle> <jlinkResetStyle>12</jlinkResetStyle>
<jlinkResetStrategy>0</jlinkResetStrategy> <jlinkResetStrategy>0</jlinkResetStrategy>
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
<CStepIntDis>_ 0</CStepIntDis>
</JLinkDriver> </JLinkDriver>
<ArmDriver> <ArmDriver>
<EnableCache>0</EnableCache> <EnableCache>0</EnableCache>
@ -85,19 +85,6 @@
<watch_formats> <watch_formats>
<Fmt0>{W}1:app_state.user_menu 3 0</Fmt0> <Fmt0>{W}1:app_state.user_menu 3 0</Fmt0>
</watch_formats> </watch_formats>
<Trace2>
<Enabled>0</Enabled>
<ShowSource>0</ShowSource>
</Trace2>
<TermIOLog>
<LoggingEnabled>_ 0</LoggingEnabled>
<LogFile>_ ""</LogFile>
</TermIOLog>
<LogFile>
<LoggingEnabled>_ 0</LoggingEnabled>
<LogFile>_ ""</LogFile>
<Category>_ 0</Category>
</LogFile>
<DriverProfiling> <DriverProfiling>
<Enabled>0</Enabled> <Enabled>0</Enabled>
<Mode>1</Mode> <Mode>1</Mode>
@ -110,6 +97,19 @@
<CallStackStripe> <CallStackStripe>
<ShowTiming>1</ShowTiming> <ShowTiming>1</ShowTiming>
</CallStackStripe> </CallStackStripe>
<TermIOLog>
<LoggingEnabled>_ 0</LoggingEnabled>
<LogFile>_ ""</LogFile>
</TermIOLog>
<Trace2>
<Enabled>0</Enabled>
<ShowSource>0</ShowSource>
</Trace2>
<LogFile>
<LoggingEnabled>_ 0</LoggingEnabled>
<LogFile>_ ""</LogFile>
<Category>_ 0</Category>
</LogFile>
<DisassembleMode> <DisassembleMode>
<mode>0</mode> <mode>0</mode>
</DisassembleMode> </DisassembleMode>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff