mirror of
https://github.com/dimoniche/changer.git
synced 2026-01-30 01:03:30 +03:00
ftp добавил
1 час
This commit is contained in:
parent
4b12925a98
commit
16721055a0
File diff suppressed because it is too large
Load Diff
@ -265,8 +265,8 @@
|
||||
|
||||
/* Configure total number of BUFFERs ... */
|
||||
/* ... (see Note #1) : */
|
||||
#define NET_BUF_CFG_NBR_SMALL 5 /* Configure total number of SMALL BUFFERs. */
|
||||
#define NET_BUF_CFG_NBR_LARGE 3 /* Configure total number of LARGE BUFFERs. */
|
||||
#define NET_BUF_CFG_NBR_SMALL 6 /* Configure total number of SMALL BUFFERs. */
|
||||
#define NET_BUF_CFG_NBR_LARGE 1 /* Configure total number of LARGE BUFFERs. */
|
||||
|
||||
/* Configure size of BUFFER DATA areas ... */
|
||||
/* ... (see Note #2) : */
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
#define OS_MAX_FLAGS 5 /* Max. number of Event Flag Groups in your application */
|
||||
#define OS_MAX_MEM_PART 5 /* Max. number of memory partitions */
|
||||
#define OS_MAX_QS 4 /* Max. number of queue control blocks in your application */
|
||||
#define OS_MAX_TASKS 32 /* Max. number of tasks in your application, MUST be >= 2 */
|
||||
#define OS_MAX_TASKS 16 /* Max. number of tasks in your application, MUST be >= 2 */
|
||||
|
||||
#define OS_SCHED_LOCK_EN 1 /* Include code for OSSchedLock() and OSSchedUnlock() */
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
|
||||
|
||||
/* --------------------- MEMORY MANAGEMENT -------------------- */
|
||||
#define OS_MEM_EN 1 /* Enable (1) or Disable (0) code generation for MEMORY MANAGER */
|
||||
#define OS_MEM_EN 0 /* Enable (1) or Disable (0) code generation for MEMORY MANAGER */
|
||||
#define OS_MEM_NAME_SIZE 0 /* Determine the size of a memory partition name */
|
||||
#define OS_MEM_QUERY_EN 1 /* Include code for OSMemQuery() */
|
||||
|
||||
|
||||
@ -906,8 +906,8 @@ void UserStartupFunc(void)
|
||||
InitHostApp();
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_TERMINAL_ENABLE)
|
||||
InitTerminalApp();
|
||||
#ifdef CONFIG_FTP_CLIENT_ENABLE
|
||||
InitFTPApp();
|
||||
#endif
|
||||
|
||||
SystemTime = GetTimeSec();
|
||||
|
||||
@ -15,4 +15,6 @@ extern CPU_INT08U time_to_ftp;
|
||||
extern int FtpUploadCsvReport(NET_IP_ADDR ip, CPU_INT32U id, char* login, char* pass, CPU_INT32U time, CPU_INT08U flags);
|
||||
extern void FtpCheckTimeToSend(CPU_INT32U systime);
|
||||
|
||||
extern void InitFTPApp();
|
||||
|
||||
#endif //_FTP_APP_H_
|
||||
|
||||
@ -6,6 +6,22 @@
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
|
||||
// ïîëó÷åíèå äîñòóïíîãî èíäåêñà ìàññèâà
|
||||
CPU_INT32U GetDataValidIndex(const TDataDescStruct* desc, CPU_INT32U index)
|
||||
{
|
||||
if (desc->IsArray)
|
||||
{
|
||||
if (index >= desc->ArraySize)
|
||||
{
|
||||
return desc->ArraySize;
|
||||
}
|
||||
else
|
||||
{
|
||||
return index;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ïîëó÷åíèå äàííûõ
|
||||
int GetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U flags)
|
||||
@ -21,7 +37,7 @@ int GetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U
|
||||
}
|
||||
return DATA_OK;
|
||||
}
|
||||
|
||||
|
||||
// îïðåäåëèì äîï. ñìåùåíèå äëÿ ìàññèâà
|
||||
if (desc->IsArray)
|
||||
{
|
||||
@ -58,6 +74,138 @@ int GetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U
|
||||
return DATA_OK;
|
||||
}
|
||||
|
||||
///
|
||||
int SetDataFromStr(const TDataDescStruct* desc, char* buf, CPU_INT32U index, CPU_INT08U flags)
|
||||
{
|
||||
CPU_INT32U value;
|
||||
|
||||
switch (desc->Type)
|
||||
{
|
||||
case DATA_TYPE_RUB_CENT:
|
||||
{
|
||||
CPU_INT32U value1, value2;
|
||||
if ((sscanf(buf, "%d,%02d", &value1, &value2) == 2) && (value2 < 100))
|
||||
{
|
||||
value1 = value1 * 100 + value2;
|
||||
return SetData(desc, (void*)&value1, index, flags);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_TIME_COUNT:
|
||||
case DATA_TYPE_SLONG:
|
||||
case DATA_TYPE_ULONG:
|
||||
if (sscanf(buf, "%d", &value) == 1)
|
||||
{
|
||||
return SetData(desc, (void*)&value, index, flags);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((desc->IsIndex) && (desc->Desc == DATA_DESC_EDIT))
|
||||
{
|
||||
// ïîïðîáóåì íàéòè èíäåêñ òåêñòîâîãî çíà÷åíèÿ
|
||||
if ((desc->RangeValue) && (desc->Items))
|
||||
{
|
||||
TRangeValueULONG* range = (TRangeValueULONG*)desc->RangeValue;
|
||||
CPU_INT32U val_i;
|
||||
for (val_i = range->Min; val_i <= range->Max; val_i++)
|
||||
{
|
||||
if (strcmp(buf, (char const*)desc->Items[val_i]) == 0)
|
||||
{
|
||||
value = val_i;
|
||||
return SetData(desc, (void*)&value, index, flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_FLOAT:
|
||||
{
|
||||
float value_fl;
|
||||
if (sscanf(buf, "%f", &value_fl) == 1)
|
||||
{
|
||||
return SetData(desc, (void*)&value_fl, index, flags);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_TIME:
|
||||
{
|
||||
TRTC_Data rtc;
|
||||
ScanRTCDateTimeStringRus((char*)buf, &rtc);
|
||||
if (RTCCheckTime(&rtc) == 0)
|
||||
{
|
||||
value = GetSec(&rtc);
|
||||
return SetData(desc, &value, index, flags);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_HOUR_MIN:
|
||||
{
|
||||
int hour, min, hour_min;
|
||||
if (sscanf((char*)buf, "%02d:%02d", &hour, &min) == 2)
|
||||
{
|
||||
hour_min = hour * 60 + min;
|
||||
return SetData(desc, &hour_min, index, flags);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_TIME_SEC_H_MM:
|
||||
{
|
||||
int hour, min, sec;
|
||||
if (sscanf((char*)buf, "%02d:%02d", &hour, &min) == 2)
|
||||
{
|
||||
sec = hour * 3600 + min * 60;
|
||||
return SetData(desc, &sec, index, flags);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_TIME_SEC_M:
|
||||
{
|
||||
int min, sec;
|
||||
if (sscanf((char*)buf, "%d", &min) == 1)
|
||||
{
|
||||
sec = min * 60;
|
||||
return SetData(desc, &sec, index, flags);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_DATE:
|
||||
{
|
||||
TRTC_Data rtc;
|
||||
ScanRTCDateStringRus((char*)buf, &rtc);
|
||||
if (RTCCheckTime(&rtc) == 0)
|
||||
{
|
||||
value = GetSec(&rtc);
|
||||
return SetData(desc, &value, index, flags);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_IP_ADDR:
|
||||
{
|
||||
CPU_INT32U ip[4];
|
||||
if ((sscanf((char*)buf, "%d.%d.%d.%d", &ip[3], &ip[2], &ip[1], &ip[0]) == 4)
|
||||
&& (ip[0] <= 255)
|
||||
&& (ip[1] <= 255)
|
||||
&& (ip[2] <= 255)
|
||||
&& (ip[3] <= 255)
|
||||
)
|
||||
{
|
||||
value = ip[0] + (ip[1] << 8) + (ip[2] << 16) + (ip[3] << 24);
|
||||
return SetData(desc, &ip[0], index, flags);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DATA_TYPE_CHAR_STRING:
|
||||
{
|
||||
return SetData(desc, buf, index, flags);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return DATA_ERR;
|
||||
}
|
||||
|
||||
|
||||
// çàïèñü äàííûõ
|
||||
int SetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U flags)
|
||||
{
|
||||
@ -66,6 +214,42 @@ int SetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U
|
||||
|
||||
if (desc->Desc == DATA_DESC_VIEW) return DATA_ERR;
|
||||
|
||||
if (desc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
char *s = buf;
|
||||
int i;
|
||||
for (i = 0; i < desc->ArraySize; i++, s++)
|
||||
{
|
||||
if (*s == 0) break;
|
||||
if ((*s < '!') || (*s > 'z'))
|
||||
{
|
||||
return DATA_ERR;
|
||||
}
|
||||
}
|
||||
|
||||
if (desc->Location == DATA_LOC_RAM)
|
||||
{
|
||||
#if OS_CRITICAL_METHOD == 3
|
||||
OS_CPU_SR cpu_sr = 0;
|
||||
#endif
|
||||
OS_ENTER_CRITICAL();
|
||||
memcpy((CPU_INT08U*)desc->Data, buf, i + 1);
|
||||
OS_EXIT_CRITICAL();
|
||||
}
|
||||
else if (desc->Location == DATA_LOC_FRAM)
|
||||
{
|
||||
CPU_INT08U byte = 0;
|
||||
WriteArrayFram((CPU_INT32U)desc->Data, i, buf);
|
||||
WriteArrayFram((CPU_INT32U)desc->Data + i, 1, &byte);
|
||||
}
|
||||
else return DATA_ERR;
|
||||
|
||||
if (desc->OnchangeFunc) desc->OnchangeFunc();
|
||||
|
||||
return DATA_OK;
|
||||
}
|
||||
|
||||
|
||||
// ïðîâåðèì äîïóñòèìîñòü çíà÷åíèé
|
||||
if (desc->RangeValue)
|
||||
{
|
||||
@ -95,16 +279,24 @@ int SetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U
|
||||
else if (desc->Type == DATA_TYPE_IP_ADDR)
|
||||
{
|
||||
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_HOUR_MIN)
|
||||
{
|
||||
if (Val.Val32U >= 24*60) return DATA_ERR;
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_TIME_SEC_H_MM)
|
||||
{
|
||||
|
||||
}
|
||||
else return DATA_ERR;
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(&Val, buf, sizeof(CPU_INT32U));
|
||||
memcpy(&Val, buf, sizeof(CPU_INT32U));
|
||||
}
|
||||
// îïðåäåëèì äîï. ñìåùåíèå äëÿ ìàññèâà
|
||||
if (desc->IsArray)
|
||||
@ -177,6 +369,12 @@ int GetDataMin(const TDataDescStruct* desc, void* buf)
|
||||
int GetDataStr(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U index, CPU_INT08U flags)
|
||||
{
|
||||
TVariant32 Val;
|
||||
|
||||
if (desc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
return GetData(desc, buf, index, flags);
|
||||
}
|
||||
|
||||
GetData(desc, &Val, index, flags);
|
||||
|
||||
if (desc->Type == DATA_TYPE_ULONG)
|
||||
@ -215,6 +413,10 @@ int GetDataStr(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U index, C
|
||||
{
|
||||
PrintTimeString((char*)buf, Val.Val32U);
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
sprintf((char*)buf, "%d,%02d", Val.Val32U / 100, Val.Val32U % 100);
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_IP_ADDR)
|
||||
{
|
||||
NET_ERR err;
|
||||
@ -230,6 +432,36 @@ int GetDataStr(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U index, C
|
||||
int hour_ = Val.Val32U / 60;
|
||||
sprintf((char*)buf, "%02d:%02d", hour_, min_);
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_TIME_SEC_H_MM)
|
||||
{
|
||||
int min_ = (Val.Val32U / 60) % 60;
|
||||
int hour_ = Val.Val32U / 3600;
|
||||
sprintf((char*)buf, "%d:%02d", hour_, min_);
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_TIME_SEC_M_SS)
|
||||
{
|
||||
int sec_ = Val.Val32U % 60;
|
||||
int min_ = Val.Val32U / 60;
|
||||
if (min_ < 60)
|
||||
{
|
||||
sprintf((char*)buf, "%d:%02d", min_, sec_);
|
||||
}
|
||||
else
|
||||
{
|
||||
int hour_ = min_ / 60;
|
||||
min_ = (Val.Val32U / 60) % 60;
|
||||
sprintf((char*)buf, "%d:%02d:%02d", hour_, min_, sec_);
|
||||
}
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_TIME_SEC_M)
|
||||
{
|
||||
int min_ = Val.Val32U / 60;
|
||||
sprintf((char*)buf, "%d", min_);
|
||||
}
|
||||
else if (desc->Type == DATA_TYPE_DATE)
|
||||
{
|
||||
PrintDateString((char*)buf, Val.Val32U);
|
||||
}
|
||||
else return DATA_ERR;
|
||||
|
||||
return DATA_OK;
|
||||
@ -282,7 +514,8 @@ int GetDataItem(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U itemind
|
||||
// èíèöèàëèçàöèÿ ïî óìîë÷àíèþ
|
||||
int InitDataByDefault(const TDataDescStruct* desc, CPU_INT32U index)
|
||||
{
|
||||
SetData(desc, (void*)&desc->DefaultValue, index, DATA_FLAG_DIRECT_INDEX);
|
||||
if (desc->Type == DATA_TYPE_CHAR_STRING) SetData(desc, (void*)desc->DefaultValue.Val32U, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
else SetData(desc, (void*)&desc->DefaultValue, index, DATA_FLAG_DIRECT_INDEX);
|
||||
return DATA_OK;
|
||||
}
|
||||
|
||||
@ -374,11 +607,11 @@ int CheckAllData(void)
|
||||
return DATA_OK;
|
||||
}
|
||||
|
||||
static char justname[128];
|
||||
|
||||
/// ïîèñê äåñêðèïòîðà äëÿ èìåíè
|
||||
void FindDescByName(char* name, TDataDescStruct const** desc, CPU_INT32U *index)
|
||||
{
|
||||
char justname[48];
|
||||
char *name_ptr = name;
|
||||
*index = 0;
|
||||
|
||||
@ -406,3 +639,37 @@ void FindDescByName(char* name, TDataDescStruct const** desc, CPU_INT32U *index)
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
/// ÷òåíèå èìåíè äåñêðèïòîðà
|
||||
void GetDescIdStr(TDataDescStruct const* desc, char* name)
|
||||
{
|
||||
*name = '\0';
|
||||
int i = 0;
|
||||
while (AllDataArray[i].ptr != NULL)
|
||||
{
|
||||
if (desc == AllDataArray[i].ptr)
|
||||
{
|
||||
strcpy(name, AllDataArray[i].name);
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
/// ïîèñê äåñêðèïòîðà ïî èìåíè
|
||||
void GetDescByIdStr(char* name, TDataDescStruct const** desc)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
*desc = NULL;
|
||||
|
||||
while (AllDataArray[i].ptr != NULL)
|
||||
{
|
||||
if (strcmp(AllDataArray[i].name, name) == 0)
|
||||
{
|
||||
*desc = AllDataArray[i].ptr;
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,13 +46,19 @@ typedef struct{
|
||||
CPU_INT08U Type;
|
||||
//#define DATA_TYPE_UCHAR 0
|
||||
//#define DATA_TYPE_SCHAR 1
|
||||
#define DATA_TYPE_ULONG 2
|
||||
#define DATA_TYPE_SLONG 3
|
||||
#define DATA_TYPE_FLOAT 4
|
||||
#define DATA_TYPE_TIME 5
|
||||
#define DATA_TYPE_TIME_COUNT 6
|
||||
#define DATA_TYPE_HOUR_MIN 7
|
||||
#define DATA_TYPE_IP_ADDR 8
|
||||
#define DATA_TYPE_ULONG 2
|
||||
#define DATA_TYPE_SLONG 3
|
||||
#define DATA_TYPE_FLOAT 4
|
||||
#define DATA_TYPE_TIME 5
|
||||
#define DATA_TYPE_TIME_COUNT 6 // ñ÷åò÷èê â ñåêóíäàõ
|
||||
#define DATA_TYPE_HOUR_MIN 7 // âðåìÿ â ìèíóòàõ, îòîáðàæàåòñÿ êàê ××:ÌÌ
|
||||
#define DATA_TYPE_TIME_SEC_H_MM 8 // ñ÷åò÷èê â ñåêóíäàõ, îòîáðàæàåòñÿ êàê ×:ÌÌ
|
||||
#define DATA_TYPE_TIME_SEC_M_SS 9 // ñ÷åò÷èê â ñåêóíäàõ, îòîáðàæàåòñÿ êàê Ì:ÑÑ
|
||||
#define DATA_TYPE_TIME_SEC_M 10 // ñ÷åò÷èê â ñåêóíäàõ, îòîáðàæàåòñÿ êàê ìèíóòû
|
||||
#define DATA_TYPE_DATE 11
|
||||
#define DATA_TYPE_IP_ADDR 12
|
||||
#define DATA_TYPE_CHAR_STRING 13
|
||||
#define DATA_TYPE_RUB_CENT 14
|
||||
|
||||
// ðàñïîëîæåíèå ïàðàìåòðà
|
||||
CPU_INT08U Location;
|
||||
@ -142,5 +148,9 @@ extern int GetDataMin(const TDataDescStruct* desc, void* buf);
|
||||
extern int GetDataMax(const TDataDescStruct* desc, void* buf);
|
||||
|
||||
extern void FindDescByName(char* name, TDataDescStruct const** desc, CPU_INT32U *index);
|
||||
extern void GetDescIdStr(TDataDescStruct const* desc, char* name);
|
||||
extern void GetDescByIdStr(char* name, TDataDescStruct const** desc);
|
||||
extern CPU_INT32U GetDataValidIndex(const TDataDescStruct* desc, CPU_INT32U index);
|
||||
extern int SetDataFromStr(const TDataDescStruct* desc, char* buf, CPU_INT32U index, CPU_INT08U flags);
|
||||
|
||||
#endif //#ifndef _DATA_H_
|
||||
|
||||
@ -30,6 +30,13 @@ const CPU_INT08U EditTimePos[12] =
|
||||
12,13,
|
||||
15,16
|
||||
};
|
||||
// ïîçèöèè äëÿ ðåäàêòèðîâàíèÿ äàòû
|
||||
const CPU_INT08U EditDatePos[6] =
|
||||
{
|
||||
0, 1,
|
||||
3, 4,
|
||||
6, 7,
|
||||
};
|
||||
// ïîçèöèè äëÿ ðåäàêòèðîâàíèÿ ip-àäðåñà
|
||||
const CPU_INT08U EditIpPos[12] =
|
||||
{
|
||||
@ -38,57 +45,143 @@ const CPU_INT08U EditIpPos[12] =
|
||||
8, 9, 10,
|
||||
12, 13, 14
|
||||
};
|
||||
CPU_INT08U EditBuf[32];
|
||||
CPU_INT08U EditBuf[96];
|
||||
#define EDIT_TYPE_NUMBER 0
|
||||
#define EDIT_TYPE_ITEMS 1
|
||||
|
||||
CPU_INT08U refresh_menu = 0;
|
||||
CPU_INT08U str_start_sym = 0;
|
||||
CPU_INT32U str_last_time = 0;
|
||||
extern TDataDescStruct const EventJournalIndexDesc;
|
||||
|
||||
static CPU_INT08U cursor_pos_x;
|
||||
static CPU_INT08U cursor_pos_y;
|
||||
static CPU_INT08U cursor_on_flag = 0;
|
||||
|
||||
void MenuCursorOn(CPU_INT08U x, CPU_INT08U y)
|
||||
{
|
||||
cursor_pos_x = x;
|
||||
cursor_pos_y = y;
|
||||
cursor_on_flag = 1;
|
||||
}
|
||||
|
||||
void MenuCursorOff(void)
|
||||
{
|
||||
cursor_on_flag = 0;
|
||||
}
|
||||
|
||||
void ShowMenuLine(TMenuLine* line_ptr, CPU_INT08U pos)
|
||||
{
|
||||
CPU_INT08U strbuf[32];
|
||||
CPU_INT08U strbuf[96];
|
||||
|
||||
if (line_ptr->LineType == MENU_LINE_STRING)
|
||||
memset(strbuf, 0, sizeof(strbuf));
|
||||
|
||||
if (line_ptr->LineType == MENU_LINE_STRING)
|
||||
{
|
||||
sprintf((char*)strbuf, " %s", (CPU_INT08U*)line_ptr->Ptr);
|
||||
LCD_puts(strbuf, pos);
|
||||
#if defined(CONFIG_LCD_1602A)
|
||||
strcpy((char*)strbuf, (char const*)line_ptr->Ptr);
|
||||
#else
|
||||
if (MenuCurrentPanel == WORK_MENU)
|
||||
sprintf((char*)strbuf, "%s", (CPU_INT08U*)line_ptr->Ptr);
|
||||
else
|
||||
sprintf((char*)strbuf, " %s", (CPU_INT08U*)line_ptr->Ptr);
|
||||
#endif
|
||||
}
|
||||
else if (line_ptr->LineType == MENU_LINE_SHOW_DESC)
|
||||
else if (line_ptr->LineType == MENU_LINE_SHOW_DESC)
|
||||
{
|
||||
strbuf[0] = ' ';
|
||||
if ((MenuEditStatus) && (pos == EditLine))
|
||||
#if !defined(CONFIG_LCD_1602A)
|
||||
strbuf[0] = ' ';
|
||||
#endif
|
||||
|
||||
if ((MenuEditStatus) && (pos == EditLine))
|
||||
{
|
||||
// âûâîäèì ðåäàêòèðóåìóþ ñòðîêó
|
||||
if (EditDesc->IsIndex)
|
||||
{
|
||||
GetDataNameStr((const TDataDescStruct*)EditDesc, &strbuf[1]);
|
||||
strcat((char*)strbuf, "<");
|
||||
strcat((char*)strbuf, (char const*)EditBuf);
|
||||
strcat((char*)strbuf, ">");
|
||||
LCD_puts(strbuf, pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetDataNameStr((const TDataDescStruct*)EditDesc, &strbuf[1]);
|
||||
if (EditDesc->Name) strcat((char*)strbuf, "=");
|
||||
strcat((char*)strbuf, (char const*)EditBuf);
|
||||
LCD_puts(strbuf, pos);
|
||||
}
|
||||
// âûâîäèì ðåäàêòèðóåìóþ ñòðîêó
|
||||
if (EditDesc->IsIndex)
|
||||
{
|
||||
GetDataNameStr((const TDataDescStruct*)EditDesc, &strbuf[strlen((char*)strbuf)]);
|
||||
strcat((char*)strbuf, "<");
|
||||
strcat((char*)strbuf, (char const*)EditBuf);
|
||||
strcat((char*)strbuf, ">");
|
||||
}
|
||||
else
|
||||
{
|
||||
#if defined(CONFIG_LCD_1602A)
|
||||
if ((EditDesc->Type == DATA_TYPE_TIME) || (EditDesc->Type == DATA_TYPE_IP_ADDR))
|
||||
{
|
||||
strcat((char*)&strbuf[strlen((char*)strbuf)], (char const*)EditBuf);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (EditDesc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
strcat((char*)&strbuf[strlen((char*)strbuf)], (char const*)EditBuf);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetDataNameStr((const TDataDescStruct*)EditDesc, &strbuf[strlen((char*)strbuf)]);
|
||||
if (EditDesc->Name) strcat((char*)strbuf, "=");
|
||||
strcat((char*)strbuf, (char const*)EditBuf);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
GetDataFullStr((const TDataDescStruct*)line_ptr->Ptr, &strbuf[1], 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
LCD_puts(strbuf, pos);
|
||||
if (line_ptr->Ptr != &EventJournalIndexDesc)
|
||||
{
|
||||
GetDataFullStr((const TDataDescStruct*)line_ptr->Ptr, &strbuf[strlen((char*)strbuf)], 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetDataNameStr((const TDataDescStruct*)line_ptr->Ptr, &strbuf[strlen((char*)strbuf)]);
|
||||
GetDataStr((const TDataDescStruct*)line_ptr->Ptr, &strbuf[strlen((char*)strbuf)], 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (line_ptr->LineType == MENU_LINE_GOTO_MENU)
|
||||
else if (line_ptr->LineType == MENU_LINE_GOTO_MENU)
|
||||
{
|
||||
sprintf((char*)strbuf, " %s", (CPU_INT08U*)line_ptr->Ptr);
|
||||
LCD_puts(strbuf, pos);
|
||||
#if defined(CONFIG_LCD_1602A)
|
||||
sprintf((char*)strbuf, "%s", (CPU_INT08U*)line_ptr->Ptr);
|
||||
#else
|
||||
sprintf((char*)strbuf, " %s", (CPU_INT08U*)line_ptr->Ptr);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (strlen((char*)strbuf) > MENU_SYMB_NUMBER)
|
||||
{
|
||||
if (!MenuEditStatus)
|
||||
{
|
||||
if (OSTimeGet() - str_last_time > 1000)
|
||||
{
|
||||
str_last_time = OSTimeGet();
|
||||
str_start_sym++;
|
||||
str_start_sym %= (strlen((char*)strbuf) - MENU_SYMB_NUMBER + 1);
|
||||
}
|
||||
LCD_puts(&strbuf[str_start_sym], pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (EditDesc->Type == DATA_TYPE_TIME)
|
||||
{
|
||||
if (EditStart+EditTimePos[EditPos] > MENU_SYMB_NUMBER - 1)
|
||||
{
|
||||
str_start_sym = EditStart+EditTimePos[EditPos] - MENU_SYMB_NUMBER + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
str_start_sym = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
str_start_sym = 0;
|
||||
}
|
||||
LCD_puts(&strbuf[str_start_sym], pos);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_puts(strbuf, pos);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void ClearMenuLine(CPU_INT08U pos)
|
||||
@ -115,12 +208,17 @@ void ShowCurrentMenu(void)
|
||||
CPU_INT08U i, j;
|
||||
TMenuLine* pLine;
|
||||
//MenuCurrentPanel->LineNum
|
||||
|
||||
|
||||
#if !defined(CONFIG_LCD_1602A)
|
||||
LCD_cursor_off();
|
||||
#endif
|
||||
|
||||
// åñëè ïàíåëü ñòàòè÷åñêàÿ, ïðîñòî âûâîäèì ïåðâûå 4 ñòðîêè
|
||||
if (MenuCurrentPanel->PanelType == MENU_PANEL_STATIC)
|
||||
{
|
||||
j=0;
|
||||
LCD_cursor_off();
|
||||
if (!cursor_on_flag) LCD_cursor_off();
|
||||
|
||||
for (i=0; i<MENU_LINES_NUMBER; i++)
|
||||
{
|
||||
pLine = (TMenuLine*)MenuCurrentPanel->LineArray[i].pMenuLine;
|
||||
@ -135,6 +233,9 @@ void ShowCurrentMenu(void)
|
||||
{
|
||||
LCD_putc_embed(SYMB_IND_MARK, MENU_SYMB_NUMBER-2, 0); LCD_putc_embed(SYMB_DESC_MARK, MENU_SYMB_NUMBER-1, 0);
|
||||
}
|
||||
|
||||
if (cursor_on_flag) {LCD_goto(cursor_pos_x, cursor_pos_y); LCD_cursor_on();}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -146,6 +247,7 @@ void ShowCurrentMenu(void)
|
||||
|
||||
// âûâîäèì 3 ñòðîêè ñ ïåðåìåùåíèåì ïî ìåíþ
|
||||
// MenuFirstLine - âåðõíÿÿ ñòðîêà äëÿ îòîáðàæåíèÿ
|
||||
#if !defined(CONFIG_LCD_1602A)
|
||||
if (MenuActiveLine == 0) MenuFirstLine = 0;
|
||||
else
|
||||
{
|
||||
@ -156,6 +258,9 @@ void ShowCurrentMenu(void)
|
||||
else MenuFirstLine = MenuActiveLine-2;
|
||||
}
|
||||
}
|
||||
#else
|
||||
MenuFirstLine = MenuActiveLine;
|
||||
#endif
|
||||
|
||||
i=MenuFirstLine+1;
|
||||
j=1;
|
||||
@ -169,8 +274,9 @@ void ShowCurrentMenu(void)
|
||||
}
|
||||
|
||||
while(j<MENU_LINES_NUMBER) ClearMenuLine(j++);
|
||||
|
||||
|
||||
// ñòðåëî÷êà òåêóùåãî âûáðàííîãî ïóíêòà
|
||||
#if !defined(CONFIG_LCD_1602A)
|
||||
CPU_INT08U linetype = (((TMenuLine*)MenuCurrentPanel->LineArray[MenuActiveLine+1].pMenuLine)->LineType);
|
||||
if (linetype == MENU_LINE_STRING)
|
||||
{
|
||||
@ -189,14 +295,17 @@ void ShowCurrentMenu(void)
|
||||
else
|
||||
LCD_putc_embed(SYMB_POINT_MARK, 0, MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// çíàê èíäåêñà
|
||||
#if !defined(CONFIG_LCD_1602A)
|
||||
CPU_INT08U lineflags = (((TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine)->Flags);
|
||||
if (lineflags & MENU_INDEX_LINE)
|
||||
{
|
||||
LCD_putc_embed(SYMB_IND_MARK, MENU_SYMB_NUMBER-2, 0); LCD_putc_embed(SYMB_DESC_MARK, MENU_SYMB_NUMBER-1, 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// êóðñîð (àïïàðàòíûé)
|
||||
if ((MenuEditStatus) && (!EditDesc->IsIndex))
|
||||
{
|
||||
@ -204,14 +313,40 @@ void ShowCurrentMenu(void)
|
||||
{
|
||||
LCD_goto(EditStart+EditPos, MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
LCD_goto(EditStart+EditPos, MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
else if ((EditDesc->Type == DATA_TYPE_TIME) || (EditDesc->Type == DATA_TYPE_HOUR_MIN))
|
||||
{
|
||||
LCD_goto(EditStart+EditTimePos[EditPos], MenuActiveLine-MenuFirstLine+1);
|
||||
if (EditStart+EditTimePos[EditPos] >= MENU_SYMB_NUMBER - 1)
|
||||
{
|
||||
LCD_goto(MENU_SYMB_NUMBER - 1, MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_goto(EditStart+EditTimePos[EditPos], MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_DATE)
|
||||
{
|
||||
if (EditStart+EditDatePos[EditPos] >= MENU_SYMB_NUMBER - 1)
|
||||
{
|
||||
LCD_goto(MENU_SYMB_NUMBER - 1, MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
else
|
||||
{
|
||||
LCD_goto(EditStart+EditDatePos[EditPos], MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_IP_ADDR)
|
||||
{
|
||||
{
|
||||
LCD_goto(EditStart+EditIpPos[EditPos], MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
LCD_goto(EditStart+EditPos, MenuActiveLine-MenuFirstLine+1);
|
||||
}
|
||||
LCD_cursor_on();
|
||||
}
|
||||
else
|
||||
@ -250,7 +385,11 @@ CPU_INT08U GetNextActiveLine(TMenuPanel *menu, CPU_INT08U recent)
|
||||
while (i++ < menu->LineNum)
|
||||
{
|
||||
TMenuLine* mline = (TMenuLine*)menu->LineArray[i].pMenuLine;
|
||||
if ((mline->LineType == MENU_LINE_GOTO_MENU) || (mline->LineType == MENU_LINE_SHOW_DESC))
|
||||
if ((mline->LineType == MENU_LINE_GOTO_MENU) || (mline->LineType == MENU_LINE_SHOW_DESC)
|
||||
#if defined(CONFIG_LCD_1602A)
|
||||
|| (mline->LineType == MENU_LINE_STRING)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
line = i;
|
||||
break;
|
||||
@ -327,7 +466,22 @@ void MenuSprintf(CPU_INT08U* str, CPU_INT08U len, CPU_INT32U Val)
|
||||
format[5]=0;
|
||||
sprintf((char*)str, (char const*)format, Val);
|
||||
}
|
||||
else if ((EditDesc->Type == DATA_TYPE_TIME) || (EditDesc->Type == DATA_TYPE_HOUR_MIN))
|
||||
else if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
CPU_INT08U format[10];
|
||||
format[0]='%';
|
||||
format[1]='0';
|
||||
format[2]='0'+(strlen((char*)str) - 3);
|
||||
format[3]='u';
|
||||
format[4]=',';
|
||||
format[5]='%';
|
||||
format[6]='0';
|
||||
format[7]='2';
|
||||
format[8]='d';
|
||||
format[9]=0;
|
||||
sprintf((char*)str, (char const*)format, Val / 100, Val % 100);
|
||||
}
|
||||
else if ((EditDesc->Type == DATA_TYPE_TIME) || (EditDesc->Type == DATA_TYPE_HOUR_MIN) || (EditDesc->Type == DATA_TYPE_DATE) || (EditDesc->Type == DATA_TYPE_TIME_SEC_H_MM) || (EditDesc->Type == DATA_TYPE_TIME_SEC_M))
|
||||
{
|
||||
GetDataStr(EditDesc, str, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
@ -335,11 +489,20 @@ void MenuSprintf(CPU_INT08U* str, CPU_INT08U len, CPU_INT32U Val)
|
||||
{
|
||||
sprintf((char*)str, "%03d.%03d.%03d.%03d", (int)((Val >> 24) & 0xFF), (int)((Val >> 16) & 0xFF), (int)((Val >> 8) & 0xFF), (int)((Val >> 0) & 0xFF));
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
GetDataStr(EditDesc, str, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
while (strlen((char*)str) < len)
|
||||
{
|
||||
strcat((char*)str, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// íà÷àëî ðåäàêòèðîâàíèÿ
|
||||
void EnterEdit(void)
|
||||
{
|
||||
TRangeValueULONG* RVal;
|
||||
// ïîçèöèÿ ðåäàêòèðîâàíèÿ, 0 - ñàìîå ñòàðøåå äåñÿòè÷íîå ÷èñëî
|
||||
EditPos = 0;
|
||||
// óêàçàòåëü íà ðåäàêòèðóåìûé äåñêðèïòîð
|
||||
@ -347,26 +510,58 @@ void EnterEdit(void)
|
||||
// íîìåð ñòðîêè ñ ðåäàêòèðóåìûì äåñêðèïòîðîì
|
||||
EditLine = MenuActiveLine+1-MenuFirstLine;
|
||||
// ðåäàêòèðóåìîå ÷èñëî
|
||||
GetData(EditDesc, &EditVal, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
// ãðàíèöû
|
||||
TRangeValueULONG* RVal = EditDesc->RangeValue;
|
||||
memcpy(&EditMin, &RVal->Min, sizeof(CPU_INT32U));
|
||||
memcpy(&EditMax, &RVal->Max, sizeof(CPU_INT32U));
|
||||
|
||||
if (EditDesc->Type != DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
GetData(EditDesc, &EditVal, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
// ãðàíèöû
|
||||
RVal = EditDesc->RangeValue;
|
||||
memcpy(&EditMin, &RVal->Min, sizeof(CPU_INT32U));
|
||||
memcpy(&EditMax, &RVal->Max, sizeof(CPU_INT32U));
|
||||
}
|
||||
|
||||
memset(EditBuf, 0, sizeof(EditBuf));
|
||||
|
||||
if (EditDesc->IsIndex)
|
||||
{
|
||||
GetDataStr((const TDataDescStruct*)EditDesc, EditBuf, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetDataNameStr((const TDataDescStruct*)EditDesc, EditBuf);
|
||||
if (EditDesc->Name) strcat((char*)EditBuf, "=");
|
||||
#if defined(CONFIG_LCD_1602A)
|
||||
if ((EditDesc->Type != DATA_TYPE_TIME) && (EditDesc->Type != DATA_TYPE_IP_ADDR))
|
||||
{
|
||||
#endif
|
||||
GetDataNameStr((const TDataDescStruct*)EditDesc, EditBuf);
|
||||
if (EditDesc->Name) strcat((char*)EditBuf, "=");
|
||||
#if defined(CONFIG_LCD_1602A)
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_LCD_1602A)
|
||||
EditStart = strlen((char const*)EditBuf);
|
||||
#else
|
||||
EditStart = strlen((char const*)EditBuf)+1;
|
||||
#endif
|
||||
if (EditDesc->Type == DATA_TYPE_ULONG)
|
||||
{
|
||||
sprintf((char*)EditBuf, "%u", RVal->Max);
|
||||
EditLen = strlen((char const*)EditBuf);
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
if (RVal->Max / 100 < 10)
|
||||
{
|
||||
sprintf((char*)EditBuf, "%d,%02d", RVal->Max / 100, RVal->Max % 100);
|
||||
}
|
||||
else if ((RVal->Max / 100 >= 10) && ((RVal->Max / 100 < 100)))
|
||||
{
|
||||
sprintf((char*)EditBuf, "%02d,%02d", RVal->Max / 100, RVal->Max % 100);
|
||||
}
|
||||
else if ((RVal->Max / 100 >= 100) && ((RVal->Max / 100 < 1000)))
|
||||
{
|
||||
sprintf((char*)EditBuf, "%03d,%02d", RVal->Max / 100, RVal->Max % 100);
|
||||
}
|
||||
EditLen = strlen((char const*)EditBuf);
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||
{
|
||||
EditLen = 12;
|
||||
@ -379,6 +574,15 @@ void EnterEdit(void)
|
||||
{
|
||||
EditLen = 4;
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_DATE)
|
||||
{
|
||||
EditLen = 6;
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
EditStart=1;
|
||||
EditLen = EditDesc->ArraySize;
|
||||
}
|
||||
else
|
||||
{
|
||||
EditLen = 0;
|
||||
@ -406,6 +610,10 @@ void SaveEdit(void)
|
||||
}
|
||||
SetData(EditDesc, &EditVal, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
SetDataFromStr(EditDesc, (char*)EditBuf, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||
{
|
||||
TRTC_Data rtc;
|
||||
@ -433,14 +641,73 @@ void SaveEdit(void)
|
||||
hour_min = hour * 60 + min;
|
||||
SetData(EditDesc, &hour_min, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_DATE)
|
||||
{
|
||||
TRTC_Data rtc;
|
||||
ScanRTCDateStringRus((char*)EditBuf, &rtc);
|
||||
if (RTCCheckTime(&rtc) == 0)
|
||||
{ // îê
|
||||
CPU_INT32U time;
|
||||
time = GetSec(&rtc);
|
||||
SetData(EditDesc, &time, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
for (int i = 0; i < EditDesc->ArraySize; i++)
|
||||
{
|
||||
if (EditBuf[i] == ' ')
|
||||
{
|
||||
EditBuf[i] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
SetData(EditDesc, EditBuf, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
MenuEditStatus = 0;
|
||||
}
|
||||
|
||||
#if defined(BOARD_SOLARIUM_WEB)
|
||||
void ProcessDigitKey(int key)
|
||||
{
|
||||
if (EditDesc->Type == DATA_TYPE_ULONG)
|
||||
{
|
||||
EditBuf[EditPos] = '0' + key - KEY_DIGIT0;
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
EditBuf[EditPos] = '0' + key - KEY_DIGIT0;
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||
{
|
||||
EditBuf[EditTimePos[EditPos]] = '0' + key - KEY_DIGIT0;
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_IP_ADDR)
|
||||
{
|
||||
EditBuf[EditIpPos[EditPos]] = '0' + key - KEY_DIGIT0;
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_HOUR_MIN)
|
||||
{
|
||||
EditBuf[EditTimePos[EditPos]] = '0' + key - KEY_DIGIT0;;
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_DATE)
|
||||
{
|
||||
EditBuf[EditDatePos[EditPos]] = '0' + key - KEY_DIGIT0;;
|
||||
}
|
||||
if (EditPos < EditLen-1) EditPos++;
|
||||
else
|
||||
{
|
||||
if (EditDesc->Type != DATA_TYPE_TIME) EditPos = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void MenuTask(void *p_arg)
|
||||
{
|
||||
int pause = 0;
|
||||
|
||||
str_last_time = OSTimeGet();
|
||||
SetMenu(START_MENU);
|
||||
|
||||
while (1)
|
||||
@ -453,27 +720,76 @@ void MenuTask(void *p_arg)
|
||||
if (!MenuEditStatus)
|
||||
{ // îòîáðàæåíèå ìåíþ
|
||||
pause = 0;
|
||||
|
||||
#if defined(BOARD_SOLARIUM_WEB)
|
||||
key_repeat1:
|
||||
#endif
|
||||
if (key)
|
||||
{
|
||||
switch (key){
|
||||
|
||||
#if defined(BOARD_SOLARIUM_WEB)
|
||||
case KEY_DIGIT0:
|
||||
break;
|
||||
case KEY_DIGIT1:
|
||||
break;
|
||||
case KEY_DIGIT2:
|
||||
key = KEY_UP;
|
||||
goto key_repeat1;
|
||||
case KEY_DIGIT3:
|
||||
break;
|
||||
case KEY_DIGIT4:
|
||||
key = KEY_LEFT;
|
||||
goto key_repeat1;
|
||||
case KEY_DIGIT5:
|
||||
break;
|
||||
case KEY_DIGIT6:
|
||||
key = KEY_RIGHT;
|
||||
goto key_repeat1;
|
||||
case KEY_DIGIT7:
|
||||
break;
|
||||
case KEY_DIGIT8:
|
||||
key = KEY_DOWN;
|
||||
goto key_repeat1;
|
||||
case KEY_DIGIT9:
|
||||
break;
|
||||
case KEY_STAR:
|
||||
key = KEY_CANSEL;
|
||||
goto key_repeat1;
|
||||
case KEY_SHARP:
|
||||
key = KEY_START;
|
||||
goto key_repeat1;
|
||||
#endif
|
||||
|
||||
case KEY_UP:
|
||||
//if (MenuActiveLine) MenuActiveLine--;
|
||||
MenuActiveLine = GetPrevActiveLine(MenuCurrentPanel, MenuActiveLine);
|
||||
ShowCurrentMenu();
|
||||
{
|
||||
CPU_INT08U active_line = GetPrevActiveLine(MenuCurrentPanel, MenuActiveLine);
|
||||
if (MenuActiveLine != active_line)
|
||||
{
|
||||
str_start_sym = 0;
|
||||
str_last_time = OSTimeGet();
|
||||
}
|
||||
MenuActiveLine = active_line;
|
||||
ShowCurrentMenu();
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_DOWN:
|
||||
//MenuActiveLine++;
|
||||
//if (MenuActiveLine+1 >= MenuCurrentPanel->LineNum) MenuActiveLine--;
|
||||
MenuActiveLine = GetNextActiveLine(MenuCurrentPanel, MenuActiveLine);
|
||||
ShowCurrentMenu();
|
||||
{
|
||||
CPU_INT08U active_line = GetNextActiveLine(MenuCurrentPanel, MenuActiveLine);
|
||||
if (MenuActiveLine != active_line)
|
||||
{
|
||||
str_start_sym = 0;
|
||||
str_last_time = OSTimeGet();
|
||||
}
|
||||
MenuActiveLine = active_line;
|
||||
ShowCurrentMenu();
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_LEFT:
|
||||
{
|
||||
TMenuLine* pLine = (TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine;
|
||||
if (pLine->Flags & MENU_INDEX_LINE)
|
||||
TMenuLine* pLine = (TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine;
|
||||
if (pLine->Flags & MENU_INDEX_LINE)
|
||||
{// ñâåðõó èíäåêñíûé ïàðàìåòð - ïîïðîáóåì åãî ïåðåêëþ÷èòü
|
||||
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
||||
if (desc->Type == DATA_TYPE_ULONG)
|
||||
@ -486,6 +802,8 @@ void MenuTask(void *p_arg)
|
||||
if ((i < min) || (i > max)) i = max;
|
||||
SetData(desc, &i, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
str_start_sym = 0;
|
||||
str_last_time = OSTimeGet();
|
||||
ShowCurrentMenu();
|
||||
}
|
||||
}
|
||||
@ -493,8 +811,8 @@ void MenuTask(void *p_arg)
|
||||
|
||||
case KEY_RIGHT:
|
||||
{
|
||||
TMenuLine* pLine = (TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine;
|
||||
if (pLine->Flags & MENU_INDEX_LINE)
|
||||
TMenuLine* pLine = (TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine;
|
||||
if (pLine->Flags & MENU_INDEX_LINE)
|
||||
{// ñâåðõó èíäåêñíûé ïàðàìåòð - ïîïðîáóåì åãî ïåðåêëþ÷èòü
|
||||
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
||||
if (desc->Type == DATA_TYPE_ULONG)
|
||||
@ -507,6 +825,8 @@ void MenuTask(void *p_arg)
|
||||
if ((i < min) || (i > max)) i = min;
|
||||
SetData(desc, &i, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||
}
|
||||
str_start_sym = 0;
|
||||
str_last_time = OSTimeGet();
|
||||
ShowCurrentMenu();
|
||||
}
|
||||
}
|
||||
@ -514,6 +834,8 @@ void MenuTask(void *p_arg)
|
||||
|
||||
case KEY_STOP:
|
||||
// ïðîáóåì âûéòè â ïðåäûäóùåå ìåíþ
|
||||
str_start_sym = 0;
|
||||
str_last_time = OSTimeGet();
|
||||
GoToPreviousMenu();
|
||||
break;
|
||||
|
||||
@ -524,10 +846,14 @@ void MenuTask(void *p_arg)
|
||||
if (pLine->LineType == MENU_LINE_SHOW_DESC)
|
||||
{// âõîäèì â ðåäàêòèðîâàíèå, åñëè ìîæíî
|
||||
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
||||
str_start_sym = 0;
|
||||
str_last_time = OSTimeGet();
|
||||
if (desc->Desc == DATA_DESC_EDIT) {EnterEdit(); pause=1000;}
|
||||
}
|
||||
else if (pLine->LineType == MENU_LINE_GOTO_MENU)
|
||||
{// ïðîáóåì ïåðåéòè â ñëåäóþùåå ìåíþ
|
||||
str_start_sym = 0;
|
||||
str_last_time = OSTimeGet();
|
||||
GoToNextMenu();
|
||||
}
|
||||
}
|
||||
@ -543,7 +869,45 @@ void MenuTask(void *p_arg)
|
||||
{ // ðåäàêòèðîâàíèå ïàðàìåòðà
|
||||
if (key)
|
||||
{
|
||||
#if defined(BOARD_SOLARIUM_WEB)
|
||||
key_repeat2:
|
||||
#endif
|
||||
switch (key){
|
||||
#if defined(BOARD_SOLARIUM_WEB)
|
||||
case KEY_DIGIT8:
|
||||
if (EditDesc->IsIndex)
|
||||
{
|
||||
key = KEY_DOWN;
|
||||
goto key_repeat2;
|
||||
}
|
||||
ProcessDigitKey(key);
|
||||
break;
|
||||
case KEY_DIGIT2:
|
||||
if (EditDesc->IsIndex)
|
||||
{
|
||||
key = KEY_UP;
|
||||
goto key_repeat2;
|
||||
}
|
||||
ProcessDigitKey(key);
|
||||
break;
|
||||
case KEY_DIGIT0:
|
||||
case KEY_DIGIT1:
|
||||
case KEY_DIGIT3:
|
||||
case KEY_DIGIT4:
|
||||
case KEY_DIGIT5:
|
||||
case KEY_DIGIT6:
|
||||
case KEY_DIGIT7:
|
||||
case KEY_DIGIT9:
|
||||
ProcessDigitKey(key);
|
||||
break;
|
||||
case KEY_STAR:
|
||||
key = KEY_CANSEL;
|
||||
goto key_repeat2;
|
||||
case KEY_SHARP:
|
||||
key = KEY_START;
|
||||
goto key_repeat2;
|
||||
#endif
|
||||
|
||||
case KEY_UP:
|
||||
if (EditDesc->IsIndex)
|
||||
{
|
||||
@ -561,6 +925,11 @@ void MenuTask(void *p_arg)
|
||||
EditBuf[EditPos]++;
|
||||
if (EditBuf[EditPos] > '9') EditBuf[EditPos] = '0';
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
EditBuf[EditPos]++;
|
||||
if (EditBuf[EditPos] > '9') EditBuf[EditPos] = '0';
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||
{
|
||||
EditBuf[EditTimePos[EditPos]]++;
|
||||
@ -576,6 +945,16 @@ void MenuTask(void *p_arg)
|
||||
EditBuf[EditTimePos[EditPos]]++;
|
||||
if (EditBuf[EditTimePos[EditPos]] > '9') EditBuf[EditTimePos[EditPos]] = '0';
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_DATE)
|
||||
{
|
||||
EditBuf[EditDatePos[EditPos]]++;
|
||||
if (EditBuf[EditDatePos[EditPos]] > '9') EditBuf[EditDatePos[EditPos]] = '0';
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
EditBuf[EditPos]++;
|
||||
if (EditBuf[EditPos] > 'z') EditBuf[EditPos] = ' ';
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KEY_DOWN:
|
||||
@ -595,6 +974,11 @@ void MenuTask(void *p_arg)
|
||||
EditBuf[EditPos]--;
|
||||
if (EditBuf[EditPos] < '0') EditBuf[EditPos] = '9';
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
EditBuf[EditPos]--;
|
||||
if (EditBuf[EditPos] < '0') EditBuf[EditPos] = '9';
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||
{
|
||||
EditBuf[EditTimePos[EditPos]]--;
|
||||
@ -610,6 +994,17 @@ void MenuTask(void *p_arg)
|
||||
EditBuf[EditTimePos[EditPos]]--;
|
||||
if (EditBuf[EditTimePos[EditPos]] < '0') EditBuf[EditTimePos[EditPos]] = '9';
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_DATE)
|
||||
{
|
||||
EditBuf[EditDatePos[EditPos]]--;
|
||||
if (EditBuf[EditDatePos[EditPos]] < '0') EditBuf[EditDatePos[EditPos]] = '9';
|
||||
}
|
||||
else if (EditDesc->Type == DATA_TYPE_CHAR_STRING)
|
||||
{
|
||||
EditBuf[EditPos]--;
|
||||
if (EditBuf[EditPos] < ' ') EditBuf[EditPos] = 'z';
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case KEY_LEFT:
|
||||
@ -624,7 +1019,14 @@ void MenuTask(void *p_arg)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (EditPos) EditPos--;
|
||||
if (EditPos)
|
||||
{
|
||||
EditPos--;
|
||||
if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
if (EditBuf[EditPos] == ',') EditPos--;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KEY_RIGHT:
|
||||
@ -639,7 +1041,14 @@ void MenuTask(void *p_arg)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (EditPos < EditLen-1) EditPos++;
|
||||
if (EditPos < EditLen-1)
|
||||
{
|
||||
EditPos++;
|
||||
if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||
{
|
||||
if (EditBuf[EditPos] == ',') EditPos++;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case KEY_STOP:
|
||||
@ -667,6 +1076,7 @@ void MenuTask(void *p_arg)
|
||||
|
||||
void InitMenu(void)
|
||||
{
|
||||
INT8U err;
|
||||
|
||||
MenuStackPtr = 0;
|
||||
MenuActiveLine = 0;
|
||||
@ -677,6 +1087,7 @@ void InitMenu(void)
|
||||
memset(&MenuStack, 0, sizeof(TMenuStack)*STACKPANELSIZE);
|
||||
|
||||
OSTaskCreate(MenuTask, (void *)0, (OS_STK *)&MenuTaskStk[MENU_TASK_STK_SIZE-1], MENU_TASK_PRIO);
|
||||
OSTaskNameSet(MENU_TASK_PRIO, "Menu Task", &err);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -3,18 +3,31 @@
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
#define MENU_LINES_NUMBER 4
|
||||
#define MENU_SYMB_NUMBER 20
|
||||
#ifdef CONFIG_LCD_1602A
|
||||
#define MENU_LINES_NUMBER 2
|
||||
#define MENU_SYMB_NUMBER 16
|
||||
#else
|
||||
#define MENU_LINES_NUMBER 4
|
||||
#define MENU_SYMB_NUMBER 20
|
||||
#endif
|
||||
|
||||
|
||||
// ñëóæåáíûå ñèìâîëû
|
||||
#define SYMB_GO_UP 0x87
|
||||
#define SYMB_GO_DOWN 0x86
|
||||
|
||||
#define SYMB_RIGHT_ARROW 0x3E
|
||||
#define SYMB_DESC_MARK 0x3E
|
||||
#define SYMB_IND_MARK 0x3C
|
||||
#define SYMB_POINT_MARK 0x3E
|
||||
#ifdef CONFIG_LCD_1602A
|
||||
#define SYMB_RIGHT_ARROW '>'
|
||||
#else
|
||||
#define SYMB_RIGHT_ARROW '>' //0x13
|
||||
#endif
|
||||
|
||||
#define SYMB_DESC_MARK '>'//0x84
|
||||
#define SYMB_IND_MARK '<'//0x85
|
||||
#define SYMB_POINT_MARK '*'//0xDF
|
||||
|
||||
|
||||
#define MENU_MAX_INPUT_STRING_LEN 16
|
||||
|
||||
|
||||
// ñòðóêòóðà îïèñàíèÿ ïóíêòà ìåíþ
|
||||
@ -94,5 +107,8 @@ extern void ReInitMenu(void);
|
||||
extern void MenuSprintf(CPU_INT08U* str, CPU_INT08U len, CPU_INT32U Val);
|
||||
extern TMenuPanel* GetCurrentMenu(void);
|
||||
extern void RefreshMenu(void);
|
||||
extern void MenuCursorOn(CPU_INT08U x, CPU_INT08U y);
|
||||
extern void MenuCursorOff(void);
|
||||
|
||||
|
||||
#endif //#ifndef _MENU_H_
|
||||
|
||||
@ -483,6 +483,9 @@ const CPU_INT08U str_SettingsMenu_6[] = "
|
||||
const CPU_INT08U str_SettingsMenu_3[] = "Óñòàíîâêà ïàðîëÿ";
|
||||
const CPU_INT08U str_SettingsMenu_4[] = "Óñòàíîâêà âðåìåíè";
|
||||
const CPU_INT08U str_SettingsMenu_5[] = "Ñáðîñ íàñòðîåê";
|
||||
#ifdef CONFIG_FTP_CLIENT_ENABLE
|
||||
const CPU_INT08U str_SettingsMenu_9[] = "FTP";
|
||||
#endif
|
||||
|
||||
const TMenuLine line_SettingsMenu_0 = {
|
||||
MENU_LINE_STRING, // òèï ïóíêòà ìåíþ
|
||||
@ -541,9 +544,18 @@ const TMenuLine line_SettingsMenu_7 = {
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
*/
|
||||
const TMenuLineArray arr_SettingsMenuArray[] = {&line_SettingsMenu_0, &line_SettingsMenu_2, &line_SettingsMenu_5, &line_SettingsMenu_3, &line_SettingsMenu_6, &line_SettingsMenu_8, NULL};
|
||||
const TMenuPanel SettingsMenuPanel[] = {arr_SettingsMenuArray, NULL, 6, MENU_PANEL_STANDARD};
|
||||
|
||||
#ifdef CONFIG_FTP_CLIENT_ENABLE
|
||||
const TMenuLine line_SettingsMenu_9 = {
|
||||
MENU_LINE_GOTO_MENU, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&str_SettingsMenu_9, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
(void*)&FtpSettingsMenuPanel // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
#endif
|
||||
|
||||
const TMenuLineArray arr_SettingsMenuArray[] = {&line_SettingsMenu_0, &line_SettingsMenu_2, &line_SettingsMenu_5, &line_SettingsMenu_3, &line_SettingsMenu_6, &line_SettingsMenu_8, &line_SettingsMenu_9, NULL};
|
||||
const TMenuPanel SettingsMenuPanel[] = {arr_SettingsMenuArray, NULL, 7, MENU_PANEL_STANDARD};
|
||||
|
||||
|
||||
/***********************************
|
||||
@ -2061,3 +2073,92 @@ const TMenuLine line_ChannelCountersLongMenu_3 = {
|
||||
|
||||
const TMenuLineArray arr_ChannelCountersLongArray[] = {&line_ChannelCountersLongMenu_0, &line_ChannelCountersLongMenu_1, &line_ChannelCountersLongMenu_2, &line_ChannelCountersLongMenu_3, NULL};
|
||||
const TMenuPanel ChannelCountersLongPanel[] = {arr_ChannelCountersLongArray, NULL, 4, MENU_PANEL_STATIC};
|
||||
|
||||
#ifdef CONFIG_FTP_CLIENT_ENABLE
|
||||
|
||||
/***********************************
|
||||
ÌÅÍÞ ÍÀÑÒÐÎÉÊÀ FTP-ÊËÈÅÍÒÀ
|
||||
***********************************/
|
||||
const char str_FtpSettings_0[] = " ÍÀÑÒÐÎéÊÀ FTP";
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_0 = {
|
||||
MENU_LINE_STRING, // òèï ïóíêòà ìåíþ
|
||||
MENU_FIXED_LINE, // äîï. ôëàãè
|
||||
(void*)&str_FtpSettings_0, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_1 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpEnableDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_2 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpServerIpAddrDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_3 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpServerLoginDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_4 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpServerPassDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_5 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpDeviceNumberDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_6 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpSendHourMinDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_7 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpSendIntervalDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_8 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpLastSendTimeDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_9 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpLastSendResultDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLine line_FtpSettingsMenu_10 = {
|
||||
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
|
||||
0, // äîï. ôëàãè
|
||||
(void*)&FtpSendNowCmdDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
|
||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
||||
};
|
||||
|
||||
const TMenuLineArray arr_FtpSettingsArray[] = {&line_FtpSettingsMenu_0, &line_FtpSettingsMenu_1, &line_FtpSettingsMenu_2, &line_FtpSettingsMenu_3, &line_FtpSettingsMenu_4, &line_FtpSettingsMenu_5, &line_FtpSettingsMenu_6, &line_FtpSettingsMenu_7, &line_FtpSettingsMenu_8, &line_FtpSettingsMenu_9, &line_FtpSettingsMenu_10, NULL};
|
||||
const TMenuPanel FtpSettingsMenuPanel[] = {arr_FtpSettingsArray, NULL, 11, MENU_PANEL_STANDARD};
|
||||
|
||||
#endif
|
||||
@ -63,5 +63,6 @@ extern void PrintEventJournalRecord(TEventRecord *record);
|
||||
extern char str_EventNumber[24];
|
||||
extern char str_EventData[24];
|
||||
|
||||
extern const TMenuPanel FtpSettingsMenuPanel[];
|
||||
|
||||
#endif //#ifndef _MENUDESC_H_
|
||||
|
||||
@ -325,3 +325,28 @@ void PrintSecDateTimeStringRaw(char *str, CPU_INT32U time)
|
||||
Sec2Date(&rtc_data, time);
|
||||
sprintf(str, "20%02d%02d%02d_%02d%02d%02d", rtc_data.year, rtc_data.mon, rtc_data.date, rtc_data.hour, rtc_data.min, rtc_data.sec);
|
||||
}
|
||||
|
||||
void ScanRTCDateStringRus(char *str, TRTC_Data *rtc)
|
||||
{
|
||||
int date, mon, year;
|
||||
sscanf(str, "%02d/%02d/%02d", &date, &mon, &year);
|
||||
rtc->year = year;
|
||||
rtc->mon = mon;
|
||||
rtc->date = date;
|
||||
rtc->hour = 0;
|
||||
rtc->min = 0;
|
||||
rtc->sec = 0;
|
||||
}
|
||||
|
||||
void PrintDateString(char *str, CPU_INT32U time)
|
||||
{
|
||||
TRTC_Data rtc_data;
|
||||
Sec2Date(&rtc_data, time);
|
||||
PrintRTCDateStringRus(str, &rtc_data);
|
||||
}
|
||||
|
||||
void PrintRTCDateStringRus(char *str, TRTC_Data *rtc)
|
||||
{
|
||||
sprintf(str, "%02d/%02d/%02d", rtc->date, rtc->mon, rtc->year);
|
||||
}
|
||||
|
||||
|
||||
@ -40,5 +40,8 @@ extern void PrintTimeString(char *str, CPU_INT32U time);
|
||||
extern void PrintSecToHourMinSec(char *str, int seconds);
|
||||
extern void PrintSecToBigHourMinSec(char *str, int seconds);
|
||||
extern void PrintSecDateTimeStringRaw(char *str, CPU_INT32U time);
|
||||
extern void ScanRTCDateStringRus(char *str, TRTC_Data *rtc);
|
||||
extern void PrintDateString(char *str, CPU_INT32U time);
|
||||
extern void PrintRTCDateStringRus(char *str, TRTC_Data *rtc);
|
||||
|
||||
#endif //#ifndef _TIME_H_
|
||||
|
||||
@ -9,7 +9,7 @@ TriggerName=main
|
||||
LimitSize=0
|
||||
ByteLimit=50
|
||||
[DebugChecksum]
|
||||
Checksum=1364593978
|
||||
Checksum=-408815470
|
||||
[Exceptions]
|
||||
StopOnUncaught=_ 0
|
||||
StopOnThrow=_ 0
|
||||
@ -38,8 +38,12 @@ Enabled=0
|
||||
ShowSource=1
|
||||
[JLinkDriver]
|
||||
WatchCond=_ 0
|
||||
Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
|
||||
Watch1=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
|
||||
Watch0=_ 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 0 0 0
|
||||
Watch1=_ 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 0 0 0
|
||||
[Disassemble mode]
|
||||
mode=0
|
||||
[Breakpoints2]
|
||||
Count=0
|
||||
[Log file]
|
||||
LoggingEnabled=_ 0
|
||||
LogFile=_ ""
|
||||
@ -47,6 +51,9 @@ Category=_ 0
|
||||
[TermIOLog]
|
||||
LoggingEnabled=_ 0
|
||||
LogFile=_ ""
|
||||
[Aliases]
|
||||
Count=0
|
||||
SuppressDialog=0
|
||||
[CallStackLog]
|
||||
Enabled=0
|
||||
[DriverProfiling]
|
||||
@ -54,10 +61,3 @@ Enabled=0
|
||||
Mode=0
|
||||
Graph=0
|
||||
Symbiont=0
|
||||
[Disassemble mode]
|
||||
mode=0
|
||||
[Breakpoints2]
|
||||
Count=0
|
||||
[Aliases]
|
||||
Count=0
|
||||
SuppressDialog=0
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1646,6 +1646,10 @@
|
||||
<name>BICOMP</name>
|
||||
<file> 170</file>
|
||||
</tool>
|
||||
<tool>
|
||||
<name>ICCARM</name>
|
||||
<file> 194</file>
|
||||
</tool>
|
||||
</outputs>
|
||||
<inputs>
|
||||
<tool>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user