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

This commit is contained in:
Dmitriy 2025-06-22 22:21:20 +03:00
parent 2587d0b8bb
commit 86fdfa8ac9
8 changed files with 1477 additions and 1476 deletions

View File

@ -154,7 +154,7 @@ int TermReadPacket(NET_SOCK_ID sock, CPU_INT08U *packet, CPU_INT32U maxlen, CPU_
CPU_INT08U c; CPU_INT08U c;
CPU_INT16U packet_len = 0; CPU_INT16U packet_len = 0;
// длина // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!TermReadChar(sock, &packet[0], timeout)) return len; if (!TermReadChar(sock, &packet[0], timeout)) return len;
len++; len++;
if (!TermReadChar(sock, &packet[1], timeout)) return len; if (!TermReadChar(sock, &packet[1], timeout)) return len;
@ -162,7 +162,7 @@ int TermReadPacket(NET_SOCK_ID sock, CPU_INT08U *packet, CPU_INT32U maxlen, CPU_
packet_len = (uint16_t)packet[0] * 256UL + (uint16_t)packet[1]; packet_len = (uint16_t)packet[0] * 256UL + (uint16_t)packet[1];
if (packet_len < 2) return 0; if (packet_len < 2) return 0;
// метка // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!TermReadChar(sock, &packet[2], timeout)) return len; if (!TermReadChar(sock, &packet[2], timeout)) return len;
len++; len++;
if (!TermReadChar(sock, &packet[3], timeout)) return len; if (!TermReadChar(sock, &packet[3], timeout)) return len;
@ -176,7 +176,7 @@ int TermReadPacket(NET_SOCK_ID sock, CPU_INT08U *packet, CPU_INT32U maxlen, CPU_
if ((packet[2] != 0x97) || (packet[3] != 0xFB)) return 0; if ((packet[2] != 0x97) || (packet[3] != 0xFB)) return 0;
} }
// тэги // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while (len < packet_len + 2) while (len < packet_len + 2)
{ {
CPU_INT16U tag; CPU_INT16U tag;
@ -291,7 +291,7 @@ uint32_t SetTermCommand(uint32_t cmd, uint32_t* param)
return curr_cmd; return curr_cmd;
} }
/// создать заголовок /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t ttk2_tag_header(char *buf) uint32_t ttk2_tag_header(char *buf)
{ {
buf[2] = '\x96'; buf[2] = '\x96';
@ -299,7 +299,7 @@ uint32_t ttk2_tag_header(char *buf)
return 4; return 4;
} }
/// создать заголовок /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint32_t vtk_tag_header(char *buf) uint32_t vtk_tag_header(char *buf)
{ {
buf[2] = '\x96'; buf[2] = '\x96';
@ -307,7 +307,7 @@ uint32_t vtk_tag_header(char *buf)
return 4; return 4;
} }
/// задать длину /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
uint32_t ttk2_tag_setlen(char *buf, uint16_t len) uint32_t ttk2_tag_setlen(char *buf, uint16_t len)
{ {
buf[0] = (len >> 8) & 0xFF; buf[0] = (len >> 8) & 0xFF;
@ -315,7 +315,7 @@ uint32_t ttk2_tag_setlen(char *buf, uint16_t len)
return 2; return 2;
} }
/// записать тэг, возвращает длину /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
uint32_t ttk2_tag_add(char *buf, uint16_t id, char *value, uint8_t value_len) uint32_t ttk2_tag_add(char *buf, uint16_t id, char *value, uint8_t value_len)
{ {
buf[0] = (char)(id & 0xFF); buf[0] = (char)(id & 0xFF);
@ -377,7 +377,7 @@ int ttk2_get_field(CPU_INT08U *packet, uint32_t packet_len, uint16_t field, uint
return 0; return 0;
} }
/// получение параметров из последнего удачного запроса (информация для чека) /// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>)
int ttk2_get_field_string(uint16_t field, char* str, uint16_t maxlen) int ttk2_get_field_string(uint16_t field, char* str, uint16_t maxlen)
{ {
int tag_size; int tag_size;
@ -449,6 +449,7 @@ void TermAppTask(void *p_arg)
if (time_to_ftp & FTP_FLAG_CLEAR_LOGS) if (time_to_ftp & FTP_FLAG_CLEAR_LOGS)
{ {
ClearEventJournal(); ClearEventJournal();
JournalInit();
} }
} }
else else
@ -473,8 +474,8 @@ void TermAppTask(void *p_arg)
GetData(&TerminalProtocolDesc, &proto, 0, DATA_FLAG_SYSTEM_INDEX); GetData(&TerminalProtocolDesc, &proto, 0, DATA_FLAG_SYSTEM_INDEX);
if (proto == TERMINAL_PROTOCOL_VTK) if (proto == TERMINAL_PROTOCOL_VTK)
{ {
// дальше протокол VTK // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> VTK
// периодический запрос IDL // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IDL
if (OSTimeGet() - idl_stamp > op_timeout * 1000UL / 2) if (OSTimeGet() - idl_stamp > op_timeout * 1000UL / 2)
{ {
NET_ERR err; NET_ERR err;
@ -489,15 +490,15 @@ void TermAppTask(void *p_arg)
uint32_t packet_len; uint32_t packet_len;
char *content; char *content;
// заголовок // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
vtk_tag_header(term_buffer); vtk_tag_header(term_buffer);
// содержимое // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
content = &term_buffer[4]; content = &term_buffer[4];
packet_len = 0; packet_len = 0;
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x01, "IDL", 3); packet_len += ttk2_tag_add(&content[packet_len], 0x01, "IDL", 3);
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);
// общая длина для передачи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += 4; packet_len += 4;
OSTimeDly(50); OSTimeDly(50);
@ -513,11 +514,11 @@ void TermAppTask(void *p_arg)
char opcode[16]; char opcode[16];
int tag_size; int tag_size;
memset(opcode, 0, 16); memset(opcode, 0, 16);
// код сообщения // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x01, (uint8_t*)opcode, 15); tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x01, (uint8_t*)opcode, 15);
if ((tag_size == 3) && (strcmp(opcode, "IDL") == 0)) if ((tag_size == 3) && (strcmp(opcode, "IDL") == 0))
{ {
// таймаут операции // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int value; int value;
memset(opcode, 0, 16); memset(opcode, 0, 16);
tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x06, (uint8_t*)opcode, 15); tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x06, (uint8_t*)opcode, 15);
@ -525,7 +526,7 @@ void TermAppTask(void *p_arg)
{ {
op_timeout = value; op_timeout = value;
} }
// номер операции // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(opcode, 0, 16); memset(opcode, 0, 16);
tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x03, (uint8_t*)opcode, 15); tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x03, (uint8_t*)opcode, 15);
if (sscanf(opcode, "%d", &value) == 1) if (sscanf(opcode, "%d", &value) == 1)
@ -572,9 +573,9 @@ void TermAppTask(void *p_arg)
content = &term_buffer[4]; content = &term_buffer[4];
packet_len = 0; packet_len = 0;
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x01, "VRP", 3); packet_len += ttk2_tag_add(&content[packet_len], 0x01, "VRP", 3);
// номер операции // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
++op_number; ++op_number;
sprintf(str, "%d", op_number); sprintf(str, "%d", op_number);
packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str));
@ -593,9 +594,9 @@ void TermAppTask(void *p_arg)
// Product name // Product name
packet_len += ttk2_tag_add(&content[packet_len], 0x0F, get_service_name(), 43); packet_len += ttk2_tag_add(&content[packet_len], 0x0F, get_service_name(), 43);
// длина в пакете // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);
// общая длина для передачи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += 4; packet_len += 4;
OSTimeDly(50); OSTimeDly(50);
@ -634,14 +635,14 @@ void TermAppTask(void *p_arg)
content = &term_buffer[4]; content = &term_buffer[4];
packet_len = 0; packet_len = 0;
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x01, "ABR", 3); packet_len += ttk2_tag_add(&content[packet_len], 0x01, "ABR", 3);
// номер операции // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sprintf(str, "%d", op_number); sprintf(str, "%d", op_number);
packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str));
// длина в пакете // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);
// общая длина для передачи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += 4; packet_len += 4;
int writed = HostWriteData(sock, term_buffer, packet_len); int writed = HostWriteData(sock, term_buffer, packet_len);
@ -670,14 +671,14 @@ void TermAppTask(void *p_arg)
tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x04, (uint8_t*)opcode, 15); tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x04, (uint8_t*)opcode, 15);
if ((tag_size > 0) && (strcmp(opcode, str) == 0)) if ((tag_size > 0) && (strcmp(opcode, str) == 0))
{ {
// VRP OK, посылаем FIN // VRP OK, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FIN
vtk_tag_header(term_buffer); vtk_tag_header(term_buffer);
content = &term_buffer[4]; content = &term_buffer[4];
packet_len = 0; packet_len = 0;
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x01, "FIN", 3); packet_len += ttk2_tag_add(&content[packet_len], 0x01, "FIN", 3);
// номер операции // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
sprintf(str, "%d", op_number); sprintf(str, "%d", op_number);
packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str));
// transaction amount (money * 100) // transaction amount (money * 100)
@ -685,9 +686,9 @@ void TermAppTask(void *p_arg)
packet_len += ttk2_tag_add(&content[packet_len], 0x04, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x04, str, strlen(str));
// product id // product id
packet_len += ttk2_tag_add(&content[packet_len], 0x09, "1", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x09, "1", 1);
// длина в пакете // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);
// общая длина для передачи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += 4; packet_len += 4;
OSTimeDly(50); OSTimeDly(50);
@ -786,7 +787,7 @@ void TermAppTask(void *p_arg)
continue; continue;
} }
// дальше протокол ТТК2 // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>2
if (term_state == TERM_STATE_IDLE) if (term_state == TERM_STATE_IDLE)
{ {
if (term_command_new & TERM_COMMAND_MAKE_SVERKA) if (term_command_new & TERM_COMMAND_MAKE_SVERKA)
@ -811,18 +812,18 @@ void TermAppTask(void *p_arg)
content = &term_buffer[4]; content = &term_buffer[4];
packet_len = 0; packet_len = 0;
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x01, "SRV", 3); packet_len += ttk2_tag_add(&content[packet_len], 0x01, "SRV", 3);
// номер клиента // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x02, "1", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x02, "1", 1);
// номер документа (ERN) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ERN)
sprintf(str, "%d", terminal_info.ern); sprintf(str, "%d", terminal_info.ern);
packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str));
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x1A, "2", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x1A, "2", 1);
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);
// общая длина для передачи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += 4; packet_len += 4;
OSTimeDly(50); OSTimeDly(50);
@ -924,18 +925,18 @@ void TermAppTask(void *p_arg)
content = &term_buffer[4]; content = &term_buffer[4];
packet_len = 0; packet_len = 0;
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x01, "SRV", 3); packet_len += ttk2_tag_add(&content[packet_len], 0x01, "SRV", 3);
// номер клиента // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x02, "1", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x02, "1", 1);
// номер документа (ERN) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ERN)
sprintf(str, "%d", terminal_info.ern); sprintf(str, "%d", terminal_info.ern);
packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str));
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x1A, "8", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x1A, "8", 1);
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);
// общая длина для передачи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += 4; packet_len += 4;
OSTimeDly(50); OSTimeDly(50);
@ -1046,11 +1047,11 @@ void TermAppTask(void *p_arg)
content = &term_buffer[4]; content = &term_buffer[4];
packet_len = 0; packet_len = 0;
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x01, "PUR", 3); packet_len += ttk2_tag_add(&content[packet_len], 0x01, "PUR", 3);
// номер клиента // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x02, "1", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x02, "1", 1);
// номер документа (ERN) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ERN)
sprintf(str, "%d", terminal_info.ern); sprintf(str, "%d", terminal_info.ern);
packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str));
// transaction amount (money * 100) // transaction amount (money * 100)
@ -1064,10 +1065,10 @@ void TermAppTask(void *p_arg)
packet_len += ttk2_tag_add(&content[packet_len], 0x08, "\xC0", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x08, "\xC0", 1);
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);
// общая длина для передачи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += 4; packet_len += 4;
// сохраним признак операции // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
terminal_info.request_active = 1; terminal_info.request_active = 1;
SaveTerminalInfo(&terminal_info); SaveTerminalInfo(&terminal_info);
@ -1077,7 +1078,7 @@ void TermAppTask(void *p_arg)
if (writed != packet_len) if (writed != packet_len)
{ {
term_state = TERM_STATE_ERR_PUR; term_state = TERM_STATE_ERR_PUR;
// надо отменить, наверное // <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
terminal_info.ern++; terminal_info.ern++;
terminal_info.request_active = 0; terminal_info.request_active = 0;
SaveTerminalInfo(&terminal_info); SaveTerminalInfo(&terminal_info);
@ -1113,22 +1114,22 @@ void TermAppTask(void *p_arg)
content = &term_buffer[4]; content = &term_buffer[4];
packet_len = 0; packet_len = 0;
// код операции // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x01, "ABR", 3); packet_len += ttk2_tag_add(&content[packet_len], 0x01, "ABR", 3);
// номер клиента // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += ttk2_tag_add(&content[packet_len], 0x02, "1", 1); packet_len += ttk2_tag_add(&content[packet_len], 0x02, "1", 1);
// номер документа (ERN) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (ERN)
sprintf(str, "%d", terminal_info.ern); sprintf(str, "%d", terminal_info.ern);
packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str)); packet_len += ttk2_tag_add(&content[packet_len], 0x03, str, strlen(str));
ttk2_tag_setlen(term_buffer, packet_len + 2); ttk2_tag_setlen(term_buffer, packet_len + 2);
// общая длина для передачи // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
packet_len += 4; packet_len += 4;
int writed = HostWriteData(sock, term_buffer, packet_len); int writed = HostWriteData(sock, term_buffer, packet_len);
OSTimeDly(100); OSTimeDly(100);
// сбросим признак операции // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
terminal_info.request_active = 0; terminal_info.request_active = 0;
terminal_info.ern++; terminal_info.ern++;
SaveTerminalInfo(&terminal_info); SaveTerminalInfo(&terminal_info);
@ -1184,7 +1185,7 @@ void TermAppTask(void *p_arg)
rx_packet_len = 0; rx_packet_len = 0;
} }
// Код ответа // <EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char resp_code[3] = "\x0\x0\x0"; char resp_code[3] = "\x0\x0\x0";
tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x9B, (uint8_t*)&resp_code, 2); tag_size = ttk2_get_field((CPU_INT08U *)term_buffer, plen, 0x9B, (uint8_t*)&resp_code, 2);
if (tag_size > 0) if (tag_size > 0)
@ -1200,7 +1201,7 @@ void TermAppTask(void *p_arg)
} }
else if (strcmp(resp_code, "BB") == 0) else if (strcmp(resp_code, "BB") == 0)
{ {
// требуется синхронизация журнала // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OS_ENTER_CRITICAL(); OS_ENTER_CRITICAL();
term_command_new |= TERM_COMMAND_MAKE_SYNCHRO; term_command_new |= TERM_COMMAND_MAKE_SYNCHRO;
OS_EXIT_CRITICAL(); OS_EXIT_CRITICAL();

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.55" #define DEVICE_FW_VERSION "8.56"
#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_55.hex</state> <state>solarium_vlad_8_56.hex</state>
</option> </option>
<option> <option>
<name>OOCCommandLineProducer</name> <name>OOCCommandLineProducer</name>
@ -5021,7 +5021,7 @@
<data> <data>
<extensions></extensions> <extensions></extensions>
<cmdline></cmdline> <cmdline></cmdline>
<hasPrio>1</hasPrio> <hasPrio>112</hasPrio>
<buildSequence>inputOutputBased</buildSequence> <buildSequence>inputOutputBased</buildSequence>
</data> </data>
</settings> </settings>