mirror of
https://github.com/dimoniche/solarium.vlad.git
synced 2026-01-30 04:53:30 +03:00
Добавляем ограничение на количество загаров в день
This commit is contained in:
parent
5b47acad37
commit
766505b914
@ -1033,12 +1033,36 @@ void AppVladEventProcess(CPU_INT32U event)
|
|||||||
&& data->money + data->bonus > moneytopay
|
&& data->money + data->bonus > moneytopay
|
||||||
&& data->uid[0] == password)
|
&& 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;
|
int32_t delta = data->money - moneytopay;
|
||||||
uint16_t bonus = (delta < 0) ? -delta : 0;
|
uint16_t bonus = (delta < 0) ? -delta : 0;
|
||||||
uint16_t money = (delta < 0) ? data->money : moneytopay;
|
uint16_t money = (delta < 0) ? data->money : moneytopay;
|
||||||
|
|
||||||
data->bonus -= bonus;
|
if(rtc_data_currnet.day == rtc_data_abonement.day
|
||||||
data->money -= money;
|
&& 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())
|
if(!write_mifare_card())
|
||||||
{
|
{
|
||||||
|
|||||||
@ -4,9 +4,26 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.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 {
|
typedef struct {
|
||||||
uint32_t init; // 4 - îáÿçàòåëüíî äîëæíà áûòü â íà÷àëå
|
uint32_t init; // 4 - îáÿçàòåëüíî äîëæíà áûòü â íà÷àëå
|
||||||
uint32_t uid[5]; // 20
|
|
||||||
|
union {
|
||||||
|
uint32_t uid[5]; // 20
|
||||||
|
external_fields fileds;
|
||||||
|
};
|
||||||
|
|
||||||
uint32_t money; // 4
|
uint32_t money; // 4
|
||||||
uint32_t bonus; // 4
|
uint32_t bonus; // 4
|
||||||
|
|||||||
@ -2379,7 +2379,7 @@ void PrintEventJournalRecord(TEventRecord *record, char *str_event, char *str_da
|
|||||||
char str[32];
|
char str[32];
|
||||||
PrintDateString(str, record->time_before);
|
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)
|
else if (record->event == JOURNAL_EVENT_ABONEMENT_REJECTED)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
#if defined(BOARD_SOLARIUM_WEB)
|
#if defined(BOARD_SOLARIUM_WEB)
|
||||||
#define DEVICE_FW_VERSION "7.09"
|
#define DEVICE_FW_VERSION "7.09"
|
||||||
#elif defined(BOARD_SOLARIUM_VLAD)
|
#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)
|
#elif defined(BOARD_CENTRAL_CARWASH) || defined(BOARD_POST_CARWASH)
|
||||||
#define DEVICE_FW_VERSION "5.55"
|
#define DEVICE_FW_VERSION "5.55"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile
|
|||||||
|
|
||||||
@echo on
|
@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
|
@echo off
|
||||||
goto end
|
goto end
|
||||||
@ -34,7 +34,7 @@ goto end
|
|||||||
|
|
||||||
@echo on
|
@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
|
@echo off
|
||||||
:end
|
:end
|
||||||
@ -23,9 +23,9 @@
|
|||||||
|
|
||||||
if ($debugfile -eq "")
|
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
|
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"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armJLINK.dll"
|
"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"
|
--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
2968
sk-mlpc2368.dep
2968
sk-mlpc2368.dep
File diff suppressed because it is too large
Load Diff
@ -5003,7 +5003,7 @@
|
|||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>OOCOutputFile</name>
|
<name>OOCOutputFile</name>
|
||||||
<state>solarium_vlad_8_51.hex</state>
|
<state>solarium_vlad_8_52.hex</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>OOCCommandLineProducer</name>
|
<name>OOCCommandLineProducer</name>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user