Новые журналы

This commit is contained in:
Dmitriy 2025-05-28 22:51:03 +03:00
parent 54f810be81
commit bafedcd137
12 changed files with 1893 additions and 73 deletions

View File

@ -875,7 +875,18 @@ void AppVladEventProcess(CPU_INT32U event)
stop_card_working();
SaveEventRecord(get_abonement_data()->number_abonement, JOURNAL_EVENT_ABONEMENT_WRONG, get_abonement_data()->uid[0]);
TEventRecord record; // 18 + 4 = 22
record.event = JOURNAL_EVENT_ABONEMENT_WRONG; // +1
record.type_abonement = 0; // +1
record.money = 0; // +2
record.bonus = 0; // +2
record.password = get_abonement_data()->uid[0]; // +4
record.number_abonement = get_abonement_data()->number_abonement; // +4
record.money_sum = 0; // +2
record.bonus_sum = 0; // +2
SaveEventAbonementRecord(&record);
break;
}
@ -897,6 +908,19 @@ void AppVladEventProcess(CPU_INT32U event)
abonement_data* data = get_abonement_data();
SaveEventRecord(data->bonus, JOURNAL_EVENT_ABONEMENT_BALANCE, data->money);
TEventRecord record; // 18 + 4 = 22
record.event = JOURNAL_EVENT_ABONEMENT_PAY_ACCEPTED; // +1
record.type_abonement = app_state.current_abonement; // +1
record.money = 0; // +2
record.bonus = 0; // +2
record.time_before = data->best_before; // +4
record.number_abonement = data->number_abonement; // +4
record.money_sum = data->money; // +2
record.bonus_sum = data->bonus; // +2
SaveEventAbonementRecord(&record);
PlayMusicFile(41);
}
} else {
@ -925,11 +949,11 @@ void AppVladEventProcess(CPU_INT32U event)
IncAbonentCounters(app_state.current_abonement, pay, bonus);
uint32_t SystemTime = GetTimeSec() + best_before * 24L * 60L * 60L;
uint32_t time_before = GetTimeSec() + best_before * 24L * 60L * 60L;
data->money += pay;
data->bonus = bonus;
data->best_before = SystemTime;
data->best_before = best_before;
data->type_abonement = app_state.current_abonement;
if(!write_mifare_card())
@ -942,8 +966,19 @@ void AppVladEventProcess(CPU_INT32U event)
app_state.user_menu = USER_MENU_FINISH_PAY_BONUS_CARD;
PrintFinishPayMenu();
RefreshMenu();
SaveEventRecord(bonus, JOURNAL_EVENT_ABONEMENT_PAY_ACCEPTED, pay);
//SaveEventAbonementRecord(JOURNAL_EVENT_ABONEMENT_PAY_ACCEPTED, pay, bonus, app_state.current_abonement, SystemTime, 0);
TEventRecord record; // 18 + 4 = 22
record.event = JOURNAL_EVENT_ABONEMENT_PAY_ACCEPTED; // +1
record.type_abonement = app_state.current_abonement; // +1
record.money = pay; // +2
record.bonus = bonus; // +2
record.time_before = best_before; // +4
record.number_abonement = data->number_abonement; // +4
record.money_sum = data->money; // +2
record.bonus_sum = data->bonus; // +2
SaveEventAbonementRecord(&record);
PlayMusicFile(52);
}
}
@ -956,7 +991,17 @@ void AppVladEventProcess(CPU_INT32U event)
RefreshMenu();
StopMusic();
SaveEventRecord(get_abonement_data()->number_abonement, JOURNAL_EVENT_ABONEMENT_WRONG, password);
TEventRecord record; // 18 + 4 = 22
record.event = JOURNAL_EVENT_ABONEMENT_WRONG; // +1
record.type_abonement = 0; // +1
record.money = 0; // +2
record.bonus = 0; // +2
record.password = data->uid[0]; // +4
record.number_abonement = data->number_abonement; // +4
record.money_sum = 0; // +2
record.bonus_sum = 0; // +2
SaveEventAbonementRecord(&record);
}
}
@ -976,7 +1021,7 @@ void AppVladEventProcess(CPU_INT32U event)
&& data->uid[0] == password)
{
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;
data->bonus -= bonus;
@ -993,7 +1038,19 @@ void AppVladEventProcess(CPU_INT32U event)
else
{
SetAcceptedMoney(app_state.moneytopay);
SaveEventRecord(bonus, JOURNAL_EVENT_ABONEMENT_ACCEPTED, money);
TEventRecord record; // 18 + 4 = 22
record.event = JOURNAL_EVENT_ABONEMENT_ACCEPTED; // +1
record.type_abonement = data->type_abonement; // +1
record.money = money; // +2
record.bonus = bonus; // +2
record.time_before = data->best_before; // +4
record.number_abonement = data->number_abonement; // +4
record.money_sum = data->money; // +2
record.bonus_sum = data->bonus; // +2
SaveEventAbonementRecord(&record);
app_state.user_menu = USER_MENU_CARD_OK;
PostUserEvent(EVENT_FINISH_PAYMENT_ABONEMENT_SOLARIUM);
}
@ -1007,7 +1064,17 @@ void AppVladEventProcess(CPU_INT32U event)
RefreshMenu();
StopMusic();
SaveEventRecord(get_abonement_data()->number_abonement, JOURNAL_EVENT_ABONEMENT_WRONG, password);
TEventRecord record; // 18 + 4 = 22
record.event = JOURNAL_EVENT_ABONEMENT_WRONG; // +1
record.type_abonement = 0; // +1
record.money = 0; // +2
record.bonus = 0; // +2
record.password = data->uid[0]; // +4
record.number_abonement = data->number_abonement; // +4
record.money_sum = 0; // +2
record.bonus_sum = 0; // +2
SaveEventAbonementRecord(&record);
}
else
{
@ -1180,8 +1247,18 @@ void AppVladEventProcess(CPU_INT32U event)
{
/// ïå÷àòü ÷åêà òåðìèíàëà
SetTermCommand(TERM_COMMAND_CLEAR_STATE, NULL);
//SetAcceptedMoney(app_state.abonementtopay);
SaveEventRecord(app_state.current_abonement, JOURNAL_EVENT_CARD_ACCEPTED, app_state.abonementtopay);
TEventRecord record; // 18 + 4 = 22
record.event = JOURNAL_EVENT_CARD_ABONEMENT_ACCEPTED; // +1
record.type_abonement = app_state.current_abonement; // +1
record.money_bank = app_state.abonementtopay; // +2
record.bonus = 0; // +2
record.number_abonement = 0; // +4
record.money_sum = 0; // +2
record.bonus_sum = 0; // +2
SaveEventAbonementRecord(&record);
if (term_protocol() == TERMINAL_PROTOCOL_TTK2) PrintCardBill();
app_state.user_menu = USER_MENU_INSERT_BONUS_CARD;
PostUserEvent(EVENT_FINISH_PAYMENT_ABONEMENT);
@ -1203,7 +1280,7 @@ void AppVladEventProcess(CPU_INT32U event)
// temporally
//SetAcceptedMoney(app_state.abonementtopay);
//SaveEventRecord(app_state.current_abonement, JOURNAL_EVENT_CARD_ACCEPTED, app_state.abonementtopay);
//SaveEventRecord(app_state.current_abonement, JOURNAL_EVENT_CARD_ABONEMENT_ACCEPTED, app_state.abonementtopay);
//app_state.user_menu = USER_MENU_INSERT_BONUS_CARD;
//PostUserEvent(EVENT_FINISH_PAYMENT_ABONEMENT);
}
@ -2809,7 +2886,7 @@ void PrintWarning2Menu(void)
{
PrintUserMenuStrUnalign("Ïåðåä èñïîëüçîâàíèåì", 0);
PrintUserMenuStrUnalign("ÀÂÒÎÌÀÒÀ íåîáõîäèìî", 1);
PrintUserMenuStrUnalign(" èñïîëüçîâàíà ", 2);
PrintUserMenuStrUnalign(" îçíàêîìèòñÿ ", 2);
PrintUserMenuStrUnalign(" ñ åãî èíñòðóêöèåé", 3);
}

View File

@ -119,21 +119,11 @@ int GetEventRecord(TEventRecord* record, CPU_INT32U index)
return 0;
}
void SaveEventAbonementRecord(CPU_INT08U event,
CPU_INT16U money, CPU_INT16U bonus, CPU_INT08U type_abonement,
CPU_INT32U time_before, CPU_INT32U number_abonement)
void SaveEventAbonementRecord(TEventRecord * record)
{
TEventRecord record;
journal_getSem();
record.time = GetTimeSec();
record.type_abonement = type_abonement;
record.event = event;
record.money = money;
record.bonus = bonus;
record.time_before = time_before;
record.number_abonement = number_abonement;
record->time = GetTimeSec();
WriteArrayFram(offsetof(TFramMap, EventRecords[0])+journal_rec_index*sizeof(TEventRecord), sizeof(TEventRecord), (unsigned char*)&record);
@ -221,6 +211,9 @@ void GetEventStr(char* str, char event)
case JOURNAL_EVENT_CARD_ACCEPTED:
sprintf(str, "Áàíê.îïëàòà ");
break;
case JOURNAL_EVENT_CARD_ABONEMENT_ACCEPTED:
sprintf(str, "Áàíê.îïëàòà ïîïîëí.");
break;
case JOURNAL_EVENT_CARD_REJECTED:
sprintf(str, "Áàíê.îïëàòà ");
break;

View File

@ -4,7 +4,7 @@
#include "control.h"
#include "fiscal.h"
#define EVENT_RECORDS_COUNT 256 // ÷èñëî çàïèñåé â æóðíàëå
#define EVENT_RECORDS_COUNT 160 // ÷èñëî çàïèñåé â æóðíàëå
#pragma pack(push, 1)
/// ñòðóêòóðà çàïèñè æóðíàëà ðàáî÷èõ ñîáûòèé
@ -111,7 +111,9 @@ typedef struct{
#define JOURNAL_EVENT_ABONEMENT_BALANCE 58 // ÷òåíèå áàëàíñà
#define JOURNAL_EVENT_ABONEMENT_WRONG 59 // íå âåðíàÿ êàðòà
#define JOURNAL_EVENTS_COUNT (JOURNAL_EVENT_ABONEMENT_WRONG+FR_ERROR_NUMBER) // ÷èñëî ñîáûòèé
#define JOURNAL_EVENT_CARD_ABONEMENT_ACCEPTED 60 // ïðèíÿòà êàðòà, ñóììà áåçíàëà - îïëàòà àáîíåìåíòà
#define JOURNAL_EVENTS_COUNT (JOURNAL_EVENT_CARD_ABONEMENT_ACCEPTED+FR_ERROR_NUMBER) // ÷èñëî ñîáûòèé
// êàíàë
union
@ -120,29 +122,46 @@ typedef struct{
CPU_INT08U type_abonement;
};
// äàííûå: äëÿ ïîëó÷åíèÿ äåíåã - íîìèíàë êóïþðû, äëÿ ñåàíñà - äëèòåëüíîñòü îïëà÷åííîãî âðåìåíè, ìèí.
/// @brief äàííûå: äëÿ ïîëó÷åíèÿ äåíåã - íîìèíàë êóïþðû, äëÿ ñåàíñà - äëèòåëüíîñòü îïëà÷åííîãî âðåìåíè, ìèí., ïîòðà÷åííûå äåíüãè
union
{
CPU_INT16U data;
CPU_INT16U money;
};
/// @brief Ïîòðà÷åííûå áîíóñû
union
{
CPU_INT16U bonus;
};
/// @brief Äàòà îêîí÷àíèÿ àáîíåìåíòà, ïàðîëü, ñóììà äëÿ áàíêà â êîïåéêàõ
union
{
CPU_INT32U time_before;
CPU_INT32U password;
CPU_INT32U money_bank;
};
/// @brief Íîìåð êàðòû
union
{
CPU_INT32U number_abonement;
};
}TEventRecord;
/// @brief Äåíüãè íà êàðòå
union
{
CPU_INT16U money_sum;
};
/// @brief Áîíóñû íà êàðòå
union
{
CPU_INT16U bonus_sum;
};
}TEventRecord; // 22 áàéòà
#pragma pack(pop)
#if defined(BOARD_SOLARIUM_VLAD)
@ -275,9 +294,10 @@ typedef struct{
extern void IncBillnomCounter(CPU_INT32U index);
extern void CheckLongCounters(void);
extern void SaveEventRecord(CPU_INT08U channel, CPU_INT08U event, CPU_INT16U data);
extern void SaveEventAbonementRecord(CPU_INT08U event,
CPU_INT16U money, CPU_INT16U bonus, CPU_INT08U type_abonement,
CPU_INT32U time_before, CPU_INT32U number_abonement);
/// @brief Ñîõðàíåíèå çàïèñè æóðíàëà
/// @param record çàïèñü æóðíàëà
extern void SaveEventAbonementRecord(TEventRecord * record);
extern void SetErrorFlag(CPU_INT08U error);
extern void ClrErrorFlag(CPU_INT08U error);

View File

@ -562,7 +562,7 @@ void TermAppTask(void *p_arg)
{
uint32_t packet_len;
char *content;
char str[16];
char str[48];
term_state = TERM_STATE_WAITING_PUR;
term_command_new &= ~TERM_COMMAND_ABORT_PUR;
@ -589,7 +589,8 @@ void TermAppTask(void *p_arg)
// timeout
packet_len += ttk2_tag_add(&content[packet_len], 0x06, "60", 1);
sprintf(str, "%s", "Óñëóãà çàãàðà â ñîëÿðèè");
sprintf(str, "Óñëóãà çàãàðà â ñîëÿðèè");
// Product name
packet_len += ttk2_tag_add(&content[packet_len], 0x0F, str, strlen(str));

View File

@ -2357,19 +2357,33 @@ void PrintEventJournalRecord(TEventRecord *record, char *str_event, char *str_da
sprintf(str_data, "%d ðóá.", record->data);
#endif
}
else if (record->event == JOURNAL_EVENT_CARD_ABONEMENT_ACCEPTED)
{
sprintf(str_data, "%dðóá.%02dêîï.", record->money_bank / 100, record->money_bank % 100);
}
else if (record->event == JOURNAL_EVENT_ABONEMENT_ACCEPTED)
{
sprintf(str_data, "%dðóá %dÁ", record->data, record->channel);
sprintf(&str_event[strlen(str_event)], " %dð %d", record->money, record->bonus);
char str[32];
PrintDateString(str, record->time_before);
sprintf(str_data, "%x %dð %dÁ %s", record->number_abonement, record->money_sum, record->bonus_sum, str);
}
else if (record->event == JOURNAL_EVENT_ABONEMENT_PAY_ACCEPTED)
{
sprintf(str_data, "%dðóá %dÁ", record->data, record->channel);
//sprintf(&str_event[strlen(str_event)], "%dð", record->money);
//sprintf(str_data, "%x %x %d", record->number_abonement, record->data, record->bonus);
sprintf(&str_event[strlen(str_event)], " %dð", record->money);
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, record->type_abonement + 1);
}
else if (record->event == JOURNAL_EVENT_ABONEMENT_REJECTED)
{
sprintf(str_data, "Îòêàç %dðóá %dÁ", record->data, record->channel);
sprintf(str_data, "Îòêàç %dðóá %dÁ", record->money, record->bonus);
}
else if (record->event == JOURNAL_EVENT_ABONEMENT_PAY_REJECTED)
{
@ -2378,13 +2392,15 @@ void PrintEventJournalRecord(TEventRecord *record, char *str_event, char *str_da
}
else if (record->event == JOURNAL_EVENT_ABONEMENT_BALANCE)
{
sprintf(str_data, "%dðóá %dÁ", record->data, record->channel);
char str[32];
PrintDateString(str, record->time_before);
sprintf(str_data, "%x %dð %dÁ %s", record->number_abonement, record->money_sum, record->bonus_sum, str);
}
else if (record->event == JOURNAL_EVENT_ABONEMENT_WRONG)
{
sprintf(str_data, "id %d. Êîä îøèáêè %d", record->channel, record->data);
sprintf(str_data, "id %x. Êîä îøèáêè %ld", record->number_abonement, record->number_abonement);
}
else if (record->event == JOURNAL_EVENT_CARD_REJECTED)
{
sprintf(&str_event[strlen(str_event)], "Ïîñò %d", record->channel+1);

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.49"
#define DEVICE_FW_VERSION "8.50"
#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_49.hex</state>
<state>solarium_vlad_8_50.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>