Добавляем ограничение на количество загаров в день

This commit is contained in:
Dmitriy 2025-06-03 22:48:14 +03:00
parent 5b47acad37
commit 766505b914
10 changed files with 1568 additions and 1523 deletions

View File

@ -1033,12 +1033,36 @@ void AppVladEventProcess(CPU_INT32U event)
&& data->money + data->bonus > moneytopay
&& data->uid[0] == password)
{
TRTC_Data rtc_data_currnet, rtc_data_abonement;
uint32_t time_current = GetTimeSec();
uint8_t count_use = 0;
Sec2Date(&rtc_data_currnet, time_current);
Sec2Date(&rtc_data_abonement, data->fileds.time_use);
int32_t delta = data->money - moneytopay;
uint16_t bonus = (delta < 0) ? -delta : 0;
uint16_t money = (delta < 0) ? data->money : moneytopay;
data->bonus -= bonus;
data->money -= money;
if(rtc_data_currnet.day == rtc_data_abonement.day
&& rtc_data_currnet.mon == rtc_data_abonement.mon
&& rtc_data_currnet.year == rtc_data_abonement.year
&& data->fileds.count_use >= count_use)
{
// ñåãîäíÿ îïëàòà óæå áûëà óêàçàííîå êîëè÷åñòâî ðàç - óõîäèì â îøèáêó
}
else
{
data->bonus -= bonus;
data->money -= money;
data->fileds.time_use = time_current;
data->fileds.count_use =
rtc_data_currnet.day != rtc_data_abonement.day
|| rtc_data_currnet.mon != rtc_data_abonement.mon
|| rtc_data_currnet.year != rtc_data_abonement.year ? 1 : data->fileds.count_use + 1;
}
if(!write_mifare_card())
{

View File

@ -4,9 +4,26 @@
#include <stdint.h>
#include <stdbool.h>
/// @brief Расшифровка дополнительных полей
typedef struct {
/// @brief Пароль карты
uint32_t password;
/// @brief Дата последнего использования
uint32_t time_use;
/// @brief Количество использований в один день
uint32_t count_use;
uint32_t reserv1;
uint32_t reserv2;
} external_fields;
typedef struct {
uint32_t init; // 4 - îáÿçàòåëüíî äîëæíà áûòü â íà÷àëå
uint32_t uid[5]; // 20
union {
uint32_t uid[5]; // 20
external_fields fileds;
};
uint32_t money; // 4
uint32_t bonus; // 4

View File

@ -2379,7 +2379,7 @@ void PrintEventJournalRecord(TEventRecord *record, char *str_event, char *str_da
char str[32];
PrintDateString(str, record->time_before);
sprintf(str_data, "%x %dð %dÁ %s %d", record->number_abonement, record->money_sum, record->bonus_sum, str);
sprintf(str_data, "%x %dð %dÁ %s", record->number_abonement, record->money_sum, record->bonus_sum, str);
}
else if (record->event == JOURNAL_EVENT_ABONEMENT_REJECTED)
{

View File

@ -4,7 +4,7 @@
#if defined(BOARD_SOLARIUM_WEB)
#define DEVICE_FW_VERSION "7.09"
#elif defined(BOARD_SOLARIUM_VLAD)
#define DEVICE_FW_VERSION "8.51"
#define DEVICE_FW_VERSION "8.52"
#elif defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_POST_CARWASH)
#define DEVICE_FW_VERSION "5.55"
#endif

View File

@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile
@echo on
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --backend -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --backend -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
@echo off
goto end
@ -34,7 +34,7 @@ goto end
@echo on
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" "--debug_file=%~1" --backend -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" "--debug_file=%~1" --backend -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
@echo off
:end

View File

@ -23,9 +23,9 @@
if ($debugfile -eq "")
{
& "C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --backend -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
& "C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --backend -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
}
else
{
& "C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --debug_file=$debugfile --backend -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
& "C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --debug_file=$debugfile --backend -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
}

View File

@ -2,7 +2,7 @@
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armJLINK.dll"
"C:\work\solarium.vlad\Solarium Vlad\Exe\sk_mlpc2368.out"
"C:\git_work\solarium.vlad\Solarium Vlad\Exe\sk_mlpc2368.out"
--plugin="C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armbat.dll"

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -5003,7 +5003,7 @@
</option>
<option>
<name>OOCOutputFile</name>
<state>solarium_vlad_8_51.hex</state>
<state>solarium_vlad_8_52.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>