Исправление ошибок

This commit is contained in:
Dmitriy 2025-06-02 23:18:05 +03:00
parent b95caf200c
commit 650ba39500
15 changed files with 1558 additions and 1475 deletions

17
.vscode/settings.json vendored
View File

@ -1,10 +1,11 @@
{ {
"files.associations": { "files.associations": {
"array": "c", "array": "c",
"string": "c", "string": "c",
"string_view": "c", "string_view": "c",
"ranges": "c", "ranges": "c",
"span": "c", "span": "c",
"fram_map.h": "c" "fram_map.h": "c",
} "service_name.h": "c"
}
} }

View File

@ -117,6 +117,8 @@ void IncSolarAbonementCounters(CPU_INT08U ch, CPU_INT08U mode, CPU_INT32U money,
counters.solar_chm[ch * SOLAR_MODES_COUNT + mode].card_bonus += bonus; counters.solar_chm[ch * SOLAR_MODES_COUNT + mode].card_bonus += bonus;
counters.solar_m[mode].card_bonus += bonus; counters.solar_m[mode].card_bonus += bonus;
counters.abonement_money += money;
counters.checksum = crc16((unsigned char*)&counters, offsetof(SolarCounters, checksum)); counters.checksum = crc16((unsigned char*)&counters, offsetof(SolarCounters, checksum));
WriteArrayFram(offsetof(TFramMap, solar_counters), sizeof(SolarCounters), (unsigned char*)&counters); WriteArrayFram(offsetof(TFramMap, solar_counters), sizeof(SolarCounters), (unsigned char*)&counters);
} }
@ -163,7 +165,7 @@ void IncSolarCounters(CPU_INT08U ch, CPU_INT08U mode, CPU_INT32U worktime, CPU_I
if(card == 2) if(card == 2)
{ {
counters.abonement_money += money; //counters.abonement_money += money;
} }
else if (card) else if (card)
{ {
@ -920,10 +922,8 @@ void AppVladEventProcess(CPU_INT32U event)
RefreshMenu(); RefreshMenu();
abonement_data* data = get_abonement_data(); abonement_data* data = get_abonement_data();
SaveEventRecord(data->bonus, JOURNAL_EVENT_ABONEMENT_BALANCE, data->money);
TEventRecord record; // 18 + 4 = 22 TEventRecord record; // 18 + 4 = 22
record.event = JOURNAL_EVENT_ABONEMENT_PAY_ACCEPTED; // +1 record.event = JOURNAL_EVENT_ABONEMENT_BALANCE; // +1
record.type_abonement = app_state.current_abonement; // +1 record.type_abonement = app_state.current_abonement; // +1
record.money = 0; // +2 record.money = 0; // +2
record.bonus = 0; // +2 record.bonus = 0; // +2
@ -934,7 +934,6 @@ void AppVladEventProcess(CPU_INT32U event)
SaveEventAbonementRecord(&record); SaveEventAbonementRecord(&record);
PlayMusicFile(41); PlayMusicFile(41);
} }
} else { } else {
@ -967,7 +966,7 @@ void AppVladEventProcess(CPU_INT32U event)
data->money += pay; data->money += pay;
data->bonus = bonus; data->bonus = bonus;
data->best_before = best_before; data->best_before = time_before;
data->type_abonement = app_state.current_abonement; data->type_abonement = app_state.current_abonement;
if(!write_mifare_card()) if(!write_mifare_card())
@ -986,7 +985,7 @@ void AppVladEventProcess(CPU_INT32U event)
record.type_abonement = app_state.current_abonement; // +1 record.type_abonement = app_state.current_abonement; // +1
record.money = pay; // +2 record.money = pay; // +2
record.bonus = bonus; // +2 record.bonus = bonus; // +2
record.time_before = best_before; // +4 record.time_before = time_before; // +4
record.number_abonement = data->number_abonement; // +4 record.number_abonement = data->number_abonement; // +4
record.money_sum = data->money; // +2 record.money_sum = data->money; // +2
record.bonus_sum = data->bonus; // +2 record.bonus_sum = data->bonus; // +2
@ -2902,7 +2901,7 @@ void PrintWarning2Menu(void)
{ {
PrintUserMenuStrUnalign("Ïåðåä èñïîëüçîâàíèåì", 0); PrintUserMenuStrUnalign("Ïåðåä èñïîëüçîâàíèåì", 0);
PrintUserMenuStrUnalign("ÀÂÒÎÌÀÒÀ íåîáõîäèìî", 1); PrintUserMenuStrUnalign("ÀÂÒÎÌÀÒÀ íåîáõîäèìî", 1);
PrintUserMenuStrUnalign(" îçíàêîìèòñÿ ", 2); PrintUserMenuStrUnalign(" îçíàêîìèòüñÿ ", 2);
PrintUserMenuStrUnalign(" ñ åãî èíñòðóêöèåé", 3); PrintUserMenuStrUnalign(" ñ åãî èíñòðóêöèåé", 3);
} }

View File

@ -125,7 +125,7 @@ void SaveEventAbonementRecord(TEventRecord * record)
record->time = GetTimeSec(); record->time = GetTimeSec();
WriteArrayFram(offsetof(TFramMap, EventRecords[0])+journal_rec_index*sizeof(TEventRecord), sizeof(TEventRecord), (unsigned char*)&record); WriteArrayFram(offsetof(TFramMap, EventRecords[0])+journal_rec_index*sizeof(TEventRecord), sizeof(TEventRecord), (unsigned char*)record);
journal_rec_index = (journal_rec_index + 1) % EVENT_RECORDS_COUNT; journal_rec_index = (journal_rec_index + 1) % EVENT_RECORDS_COUNT;

View File

@ -0,0 +1,41 @@
#include "service_name.h"
char service_name[] = "Услуга загара в солярии";
char* get_service_name()
{
return service_name;
}
// Returns the number of characters in an UTF-8 encoded string.
// (Does not check for encoding validity)
int u8strlen(const char *s)
{
int len=0;
while (*s) {
if ((*s & 0xC0) != 0x80) len++ ;
s++;
}
return len;
}
// Avoids truncating multibyte UTF-8 encoding at the end.
char *u8strncpy(char *dest, const char *src, size_t n)
{
int k = n-1;
int i;
if (n) {
dest[k] = 0;
strncpy(dest,src,n);
if (dest[k] & 0x80) { // Last byte has been overwritten
for (i=k; (i>0) && ((k-i) < 3) && ((dest[i] & 0xC0) == 0x80); i--) ;
switch(k-i) {
case 0: dest[i] = '\0'; break;
case 1: if ( (dest[i] & 0xE0) != 0xC0) dest[i] = '\0'; break;
case 2: if ( (dest[i] & 0xF0) != 0xE0) dest[i] = '\0'; break;
case 3: if ( (dest[i] & 0xF8) != 0xF0) dest[i] = '\0'; break;
}
}
}
return dest;
}

View File

@ -0,0 +1,13 @@
#ifndef _SERVICE_NAME_H_
#define _SERVICE_NAME_H_
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
/// @brief Возвращаем имя услуги
/// @return
extern char* get_service_name();
#endif

View File

@ -10,6 +10,7 @@
#include <string.h> #include <string.h>
#include "time.h" #include "time.h"
#include "ftp_app.h" #include "ftp_app.h"
#include "service_name.h"
static OS_STK TermTaskStk[TERM_TASK_STK_SIZE]; static OS_STK TermTaskStk[TERM_TASK_STK_SIZE];
@ -562,7 +563,7 @@ void TermAppTask(void *p_arg)
{ {
uint32_t packet_len; uint32_t packet_len;
char *content; char *content;
char str[48]; char str[32];
term_state = TERM_STATE_WAITING_PUR; term_state = TERM_STATE_WAITING_PUR;
term_command_new &= ~TERM_COMMAND_ABORT_PUR; term_command_new &= ~TERM_COMMAND_ABORT_PUR;
@ -589,10 +590,8 @@ void TermAppTask(void *p_arg)
// timeout // timeout
packet_len += ttk2_tag_add(&content[packet_len], 0x06, "60", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x06, "60", 1);
sprintf(str, "Óñëóãà çàãàðà â ñîëÿðèè");
// Product name // Product name
packet_len += ttk2_tag_add(&content[packet_len], 0x0F, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x0F, get_service_name(), strlen(get_service_name()));
// äëèíà â ïàêåòå // äëèíà â ïàêåòå
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);

View File

@ -717,7 +717,7 @@ void OnChangeClearStatAbonementCmd(void)
{ {
while (1) while (1)
{ {
if (picc_read_card_serial()) if (picc_is_new_card_present())
{ {
if (picc_read_card_serial()) if (picc_read_card_serial())
{ {
@ -731,7 +731,7 @@ void OnChangeClearStatAbonementCmd(void)
OSTimeDly(100); OSTimeDly(100);
} }
ClearStatAbonementCmd = 0; ClearStatAbonementCmd = 0;
} }
} }
@ -6339,7 +6339,7 @@ CPU_INT08U const CounterSolarCardBonusName[] = "
TDataDescStruct const CounterSolarCardBonusDesc = { TDataDescStruct const CounterSolarCardBonusDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà CHANNELS_NUM * SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà
@ -6507,7 +6507,7 @@ CPU_INT08U const CounterModeCardBonusName[] = "
TDataDescStruct const CounterModeCardBonusDesc = { TDataDescStruct const CounterModeCardBonusDesc = {
DATA_DESC_VIEW, // òèï äåñêðèïòîðà DATA_DESC_VIEW, // òèï äåñêðèïòîðà
DATA_TYPE_RUB_CENT, // òèï ïàðàìåòðà DATA_TYPE_ULONG, // òèï ïàðàìåòðà
DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà DATA_LOC_FRAM, // ðàñïîëîæåíèå ïàðàìåòðà
DATA_IS_ARRAY, // ïðèçíàê ìàññèâà DATA_IS_ARRAY, // ïðèçíàê ìàññèâà
SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà SOLAR_MODES_COUNT, // ðàçìåð ìàññèâà

View File

@ -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.50" #define DEVICE_FW_VERSION "8.51"
#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

View File

@ -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

View File

@ -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"
} }

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -5003,7 +5003,7 @@
</option> </option>
<option> <option>
<name>OOCOutputFile</name> <name>OOCOutputFile</name>
<state>solarium_vlad_8_50.hex</state> <state>solarium_vlad_8_51.hex</state>
</option> </option>
<option> <option>
<name>OOCCommandLineProducer</name> <name>OOCCommandLineProducer</name>
@ -5835,6 +5835,12 @@
<file> <file>
<name>$PROJ_DIR$\PROJECT\app\modem_task.h</name> <name>$PROJ_DIR$\PROJECT\app\modem_task.h</name>
</file> </file>
<file>
<name>$PROJ_DIR$\PROJECT\app\service_name.c</name>
</file>
<file>
<name>$PROJ_DIR$\PROJECT\app\service_name.h</name>
</file>
<file> <file>
<name>$PROJ_DIR$\PROJECT\app\term_tsk.c</name> <name>$PROJ_DIR$\PROJECT\app\term_tsk.c</name>
<excluded> <excluded>

View File

@ -7498,6 +7498,12 @@
<file> <file>
<name>$PROJ_DIR$\PROJECT\app\modem_task.h</name> <name>$PROJ_DIR$\PROJECT\app\modem_task.h</name>
</file> </file>
<file>
<name>$PROJ_DIR$\PROJECT\app\service_name.c</name>
</file>
<file>
<name>$PROJ_DIR$\PROJECT\app\service_name.h</name>
</file>
<file> <file>
<name>$PROJ_DIR$\PROJECT\app\term_tsk.c</name> <name>$PROJ_DIR$\PROJECT\app\term_tsk.c</name>
</file> </file>