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

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

19
.vscode/settings.json vendored
View File

@ -1,10 +1,11 @@
{
"files.associations": {
"array": "c",
"string": "c",
"string_view": "c",
"ranges": "c",
"span": "c",
"fram_map.h": "c"
}
}
"files.associations": {
"array": "c",
"string": "c",
"string_view": "c",
"ranges": "c",
"span": "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_m[mode].card_bonus += bonus;
counters.abonement_money += money;
counters.checksum = crc16((unsigned char*)&counters, offsetof(SolarCounters, checksum));
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)
{
counters.abonement_money += money;
//counters.abonement_money += money;
}
else if (card)
{
@ -920,10 +922,8 @@ void AppVladEventProcess(CPU_INT32U event)
RefreshMenu();
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.event = JOURNAL_EVENT_ABONEMENT_BALANCE; // +1
record.type_abonement = app_state.current_abonement; // +1
record.money = 0; // +2
record.bonus = 0; // +2
@ -934,7 +934,6 @@ void AppVladEventProcess(CPU_INT32U event)
SaveEventAbonementRecord(&record);
PlayMusicFile(41);
}
} else {
@ -967,7 +966,7 @@ void AppVladEventProcess(CPU_INT32U event)
data->money += pay;
data->bonus = bonus;
data->best_before = best_before;
data->best_before = time_before;
data->type_abonement = app_state.current_abonement;
if(!write_mifare_card())
@ -986,7 +985,7 @@ void AppVladEventProcess(CPU_INT32U event)
record.type_abonement = app_state.current_abonement; // +1
record.money = pay; // +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.money_sum = data->money; // +2
record.bonus_sum = data->bonus; // +2
@ -2902,7 +2901,7 @@ void PrintWarning2Menu(void)
{
PrintUserMenuStrUnalign("Ïåðåä èñïîëüçîâàíèåì", 0);
PrintUserMenuStrUnalign("ÀÂÒÎÌÀÒÀ íåîáõîäèìî", 1);
PrintUserMenuStrUnalign(" îçíàêîìèòñÿ ", 2);
PrintUserMenuStrUnalign(" îçíàêîìèòüñÿ ", 2);
PrintUserMenuStrUnalign(" ñ åãî èíñòðóêöèåé", 3);
}

View File

@ -125,7 +125,7 @@ void SaveEventAbonementRecord(TEventRecord * record)
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;

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 "time.h"
#include "ftp_app.h"
#include "service_name.h"
static OS_STK TermTaskStk[TERM_TASK_STK_SIZE];
@ -562,7 +563,7 @@ void TermAppTask(void *p_arg)
{
uint32_t packet_len;
char *content;
char str[48];
char str[32];
term_state = TERM_STATE_WAITING_PUR;
term_command_new &= ~TERM_COMMAND_ABORT_PUR;
@ -587,12 +588,10 @@ void TermAppTask(void *p_arg)
// product id
packet_len += ttk2_tag_add(&content[packet_len], 0x09, "1", 1);
// timeout
packet_len += ttk2_tag_add(&content[packet_len], 0x06, "60", 1);
sprintf(str, "Óñëóãà çàãàðà â ñîëÿðèè");
packet_len += ttk2_tag_add(&content[packet_len], 0x06, "60", 1);
// 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);

View File

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

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.50"
#define DEVICE_FW_VERSION "8.51"
#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_50.hex</state>
<state>solarium_vlad_8_51.hex</state>
</option>
<option>
<name>OOCCommandLineProducer</name>
@ -5835,6 +5835,12 @@
<file>
<name>$PROJ_DIR$\PROJECT\app\modem_task.h</name>
</file>
<file>
<name>$PROJ_DIR$\PROJECT\app\service_name.c</name>
</file>
<file>
<name>$PROJ_DIR$\PROJECT\app\service_name.h</name>
</file>
<file>
<name>$PROJ_DIR$\PROJECT\app\term_tsk.c</name>
<excluded>

View File

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