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 ... */
|
/* Configure total number of BUFFERs ... */
|
||||||
/* ... (see Note #1) : */
|
/* ... (see Note #1) : */
|
||||||
#define NET_BUF_CFG_NBR_SMALL 5 /* Configure total number of SMALL BUFFERs. */
|
#define NET_BUF_CFG_NBR_SMALL 6 /* Configure total number of SMALL BUFFERs. */
|
||||||
#define NET_BUF_CFG_NBR_LARGE 3 /* Configure total number of LARGE BUFFERs. */
|
#define NET_BUF_CFG_NBR_LARGE 1 /* Configure total number of LARGE BUFFERs. */
|
||||||
|
|
||||||
/* Configure size of BUFFER DATA areas ... */
|
/* Configure size of BUFFER DATA areas ... */
|
||||||
/* ... (see Note #2) : */
|
/* ... (see Note #2) : */
|
||||||
|
|||||||
@ -41,7 +41,7 @@
|
|||||||
#define OS_MAX_FLAGS 5 /* Max. number of Event Flag Groups in your application */
|
#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_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_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() */
|
#define OS_SCHED_LOCK_EN 1 /* Include code for OSSchedLock() and OSSchedUnlock() */
|
||||||
|
|
||||||
@ -90,7 +90,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/* --------------------- MEMORY MANAGEMENT -------------------- */
|
/* --------------------- 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_NAME_SIZE 0 /* Determine the size of a memory partition name */
|
||||||
#define OS_MEM_QUERY_EN 1 /* Include code for OSMemQuery() */
|
#define OS_MEM_QUERY_EN 1 /* Include code for OSMemQuery() */
|
||||||
|
|
||||||
|
|||||||
@ -906,8 +906,8 @@ void UserStartupFunc(void)
|
|||||||
InitHostApp();
|
InitHostApp();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_TERMINAL_ENABLE)
|
#ifdef CONFIG_FTP_CLIENT_ENABLE
|
||||||
InitTerminalApp();
|
InitFTPApp();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SystemTime = GetTimeSec();
|
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 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 FtpCheckTimeToSend(CPU_INT32U systime);
|
||||||
|
|
||||||
|
extern void InitFTPApp();
|
||||||
|
|
||||||
#endif //_FTP_APP_H_
|
#endif //_FTP_APP_H_
|
||||||
|
|||||||
@ -6,6 +6,22 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stddef.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)
|
int GetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U flags)
|
||||||
@ -58,6 +74,138 @@ int GetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U
|
|||||||
return DATA_OK;
|
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)
|
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->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)
|
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_IP_ADDR)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (desc->Type == DATA_TYPE_RUB_CENT)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (desc->Type == DATA_TYPE_HOUR_MIN)
|
else if (desc->Type == DATA_TYPE_HOUR_MIN)
|
||||||
{
|
{
|
||||||
if (Val.Val32U >= 24*60) return DATA_ERR;
|
if (Val.Val32U >= 24*60) return DATA_ERR;
|
||||||
}
|
}
|
||||||
|
else if (desc->Type == DATA_TYPE_TIME_SEC_H_MM)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
else return DATA_ERR;
|
else return DATA_ERR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
memcpy(&Val, buf, sizeof(CPU_INT32U));
|
memcpy(&Val, buf, sizeof(CPU_INT32U));
|
||||||
}
|
}
|
||||||
// îïðåäåëèì äîï. ñìåùåíèå äëÿ ìàññèâà
|
// îïðåäåëèì äîï. ñìåùåíèå äëÿ ìàññèâà
|
||||||
if (desc->IsArray)
|
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)
|
int GetDataStr(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U index, CPU_INT08U flags)
|
||||||
{
|
{
|
||||||
TVariant32 Val;
|
TVariant32 Val;
|
||||||
|
|
||||||
|
if (desc->Type == DATA_TYPE_CHAR_STRING)
|
||||||
|
{
|
||||||
|
return GetData(desc, buf, index, flags);
|
||||||
|
}
|
||||||
|
|
||||||
GetData(desc, &Val, index, flags);
|
GetData(desc, &Val, index, flags);
|
||||||
|
|
||||||
if (desc->Type == DATA_TYPE_ULONG)
|
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);
|
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)
|
else if (desc->Type == DATA_TYPE_IP_ADDR)
|
||||||
{
|
{
|
||||||
NET_ERR err;
|
NET_ERR err;
|
||||||
@ -230,6 +432,36 @@ int GetDataStr(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U index, C
|
|||||||
int hour_ = Val.Val32U / 60;
|
int hour_ = Val.Val32U / 60;
|
||||||
sprintf((char*)buf, "%02d:%02d", hour_, min_);
|
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;
|
else return DATA_ERR;
|
||||||
|
|
||||||
return DATA_OK;
|
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)
|
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;
|
return DATA_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,11 +607,11 @@ int CheckAllData(void)
|
|||||||
return DATA_OK;
|
return DATA_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char justname[128];
|
|
||||||
|
|
||||||
/// ïîèñê äåñêðèïòîðà äëÿ èìåíè
|
/// ïîèñê äåñêðèïòîðà äëÿ èìåíè
|
||||||
void FindDescByName(char* name, TDataDescStruct const** desc, CPU_INT32U *index)
|
void FindDescByName(char* name, TDataDescStruct const** desc, CPU_INT32U *index)
|
||||||
{
|
{
|
||||||
|
char justname[48];
|
||||||
char *name_ptr = name;
|
char *name_ptr = name;
|
||||||
*index = 0;
|
*index = 0;
|
||||||
|
|
||||||
@ -406,3 +639,37 @@ void FindDescByName(char* name, TDataDescStruct const** desc, CPU_INT32U *index)
|
|||||||
i++;
|
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;
|
CPU_INT08U Type;
|
||||||
//#define DATA_TYPE_UCHAR 0
|
//#define DATA_TYPE_UCHAR 0
|
||||||
//#define DATA_TYPE_SCHAR 1
|
//#define DATA_TYPE_SCHAR 1
|
||||||
#define DATA_TYPE_ULONG 2
|
#define DATA_TYPE_ULONG 2
|
||||||
#define DATA_TYPE_SLONG 3
|
#define DATA_TYPE_SLONG 3
|
||||||
#define DATA_TYPE_FLOAT 4
|
#define DATA_TYPE_FLOAT 4
|
||||||
#define DATA_TYPE_TIME 5
|
#define DATA_TYPE_TIME 5
|
||||||
#define DATA_TYPE_TIME_COUNT 6
|
#define DATA_TYPE_TIME_COUNT 6 // ñ÷åò÷èê â ñåêóíäàõ
|
||||||
#define DATA_TYPE_HOUR_MIN 7
|
#define DATA_TYPE_HOUR_MIN 7 // âðåìÿ â ìèíóòàõ, îòîáðàæàåòñÿ êàê ××:ÌÌ
|
||||||
#define DATA_TYPE_IP_ADDR 8
|
#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;
|
CPU_INT08U Location;
|
||||||
@ -142,5 +148,9 @@ extern int GetDataMin(const TDataDescStruct* desc, void* buf);
|
|||||||
extern int GetDataMax(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 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_
|
#endif //#ifndef _DATA_H_
|
||||||
|
|||||||
@ -30,6 +30,13 @@ const CPU_INT08U EditTimePos[12] =
|
|||||||
12,13,
|
12,13,
|
||||||
15,16
|
15,16
|
||||||
};
|
};
|
||||||
|
// ïîçèöèè äëÿ ðåäàêòèðîâàíèÿ äàòû
|
||||||
|
const CPU_INT08U EditDatePos[6] =
|
||||||
|
{
|
||||||
|
0, 1,
|
||||||
|
3, 4,
|
||||||
|
6, 7,
|
||||||
|
};
|
||||||
// ïîçèöèè äëÿ ðåäàêòèðîâàíèÿ ip-àäðåñà
|
// ïîçèöèè äëÿ ðåäàêòèðîâàíèÿ ip-àäðåñà
|
||||||
const CPU_INT08U EditIpPos[12] =
|
const CPU_INT08U EditIpPos[12] =
|
||||||
{
|
{
|
||||||
@ -38,57 +45,143 @@ const CPU_INT08U EditIpPos[12] =
|
|||||||
8, 9, 10,
|
8, 9, 10,
|
||||||
12, 13, 14
|
12, 13, 14
|
||||||
};
|
};
|
||||||
CPU_INT08U EditBuf[32];
|
CPU_INT08U EditBuf[96];
|
||||||
#define EDIT_TYPE_NUMBER 0
|
#define EDIT_TYPE_NUMBER 0
|
||||||
#define EDIT_TYPE_ITEMS 1
|
#define EDIT_TYPE_ITEMS 1
|
||||||
|
|
||||||
CPU_INT08U refresh_menu = 0;
|
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)
|
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);
|
#if defined(CONFIG_LCD_1602A)
|
||||||
LCD_puts(strbuf, pos);
|
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 !defined(CONFIG_LCD_1602A)
|
||||||
if ((MenuEditStatus) && (pos == EditLine))
|
strbuf[0] = ' ';
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ((MenuEditStatus) && (pos == EditLine))
|
||||||
{
|
{
|
||||||
// âûâîäèì ðåäàêòèðóåìóþ ñòðîêó
|
// âûâîäèì ðåäàêòèðóåìóþ ñòðîêó
|
||||||
if (EditDesc->IsIndex)
|
if (EditDesc->IsIndex)
|
||||||
{
|
{
|
||||||
GetDataNameStr((const TDataDescStruct*)EditDesc, &strbuf[1]);
|
GetDataNameStr((const TDataDescStruct*)EditDesc, &strbuf[strlen((char*)strbuf)]);
|
||||||
strcat((char*)strbuf, "<");
|
strcat((char*)strbuf, "<");
|
||||||
strcat((char*)strbuf, (char const*)EditBuf);
|
strcat((char*)strbuf, (char const*)EditBuf);
|
||||||
strcat((char*)strbuf, ">");
|
strcat((char*)strbuf, ">");
|
||||||
LCD_puts(strbuf, pos);
|
}
|
||||||
}
|
else
|
||||||
else
|
{
|
||||||
{
|
#if defined(CONFIG_LCD_1602A)
|
||||||
GetDataNameStr((const TDataDescStruct*)EditDesc, &strbuf[1]);
|
if ((EditDesc->Type == DATA_TYPE_TIME) || (EditDesc->Type == DATA_TYPE_IP_ADDR))
|
||||||
if (EditDesc->Name) strcat((char*)strbuf, "=");
|
{
|
||||||
strcat((char*)strbuf, (char const*)EditBuf);
|
strcat((char*)&strbuf[strlen((char*)strbuf)], (char const*)EditBuf);
|
||||||
LCD_puts(strbuf, pos);
|
}
|
||||||
}
|
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);
|
if (line_ptr->Ptr != &EventJournalIndexDesc)
|
||||||
LCD_puts(strbuf, pos);
|
{
|
||||||
|
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);
|
#if defined(CONFIG_LCD_1602A)
|
||||||
LCD_puts(strbuf, pos);
|
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)
|
void ClearMenuLine(CPU_INT08U pos)
|
||||||
@ -116,11 +209,16 @@ void ShowCurrentMenu(void)
|
|||||||
TMenuLine* pLine;
|
TMenuLine* pLine;
|
||||||
//MenuCurrentPanel->LineNum
|
//MenuCurrentPanel->LineNum
|
||||||
|
|
||||||
|
#if !defined(CONFIG_LCD_1602A)
|
||||||
|
LCD_cursor_off();
|
||||||
|
#endif
|
||||||
|
|
||||||
// åñëè ïàíåëü ñòàòè÷åñêàÿ, ïðîñòî âûâîäèì ïåðâûå 4 ñòðîêè
|
// åñëè ïàíåëü ñòàòè÷åñêàÿ, ïðîñòî âûâîäèì ïåðâûå 4 ñòðîêè
|
||||||
if (MenuCurrentPanel->PanelType == MENU_PANEL_STATIC)
|
if (MenuCurrentPanel->PanelType == MENU_PANEL_STATIC)
|
||||||
{
|
{
|
||||||
j=0;
|
j=0;
|
||||||
LCD_cursor_off();
|
if (!cursor_on_flag) LCD_cursor_off();
|
||||||
|
|
||||||
for (i=0; i<MENU_LINES_NUMBER; i++)
|
for (i=0; i<MENU_LINES_NUMBER; i++)
|
||||||
{
|
{
|
||||||
pLine = (TMenuLine*)MenuCurrentPanel->LineArray[i].pMenuLine;
|
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);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,6 +247,7 @@ void ShowCurrentMenu(void)
|
|||||||
|
|
||||||
// âûâîäèì 3 ñòðîêè ñ ïåðåìåùåíèåì ïî ìåíþ
|
// âûâîäèì 3 ñòðîêè ñ ïåðåìåùåíèåì ïî ìåíþ
|
||||||
// MenuFirstLine - âåðõíÿÿ ñòðîêà äëÿ îòîáðàæåíèÿ
|
// MenuFirstLine - âåðõíÿÿ ñòðîêà äëÿ îòîáðàæåíèÿ
|
||||||
|
#if !defined(CONFIG_LCD_1602A)
|
||||||
if (MenuActiveLine == 0) MenuFirstLine = 0;
|
if (MenuActiveLine == 0) MenuFirstLine = 0;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -156,6 +258,9 @@ void ShowCurrentMenu(void)
|
|||||||
else MenuFirstLine = MenuActiveLine-2;
|
else MenuFirstLine = MenuActiveLine-2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
MenuFirstLine = MenuActiveLine;
|
||||||
|
#endif
|
||||||
|
|
||||||
i=MenuFirstLine+1;
|
i=MenuFirstLine+1;
|
||||||
j=1;
|
j=1;
|
||||||
@ -171,6 +276,7 @@ void ShowCurrentMenu(void)
|
|||||||
while(j<MENU_LINES_NUMBER) ClearMenuLine(j++);
|
while(j<MENU_LINES_NUMBER) ClearMenuLine(j++);
|
||||||
|
|
||||||
// ñòðåëî÷êà òåêóùåãî âûáðàííîãî ïóíêòà
|
// ñòðåëî÷êà òåêóùåãî âûáðàííîãî ïóíêòà
|
||||||
|
#if !defined(CONFIG_LCD_1602A)
|
||||||
CPU_INT08U linetype = (((TMenuLine*)MenuCurrentPanel->LineArray[MenuActiveLine+1].pMenuLine)->LineType);
|
CPU_INT08U linetype = (((TMenuLine*)MenuCurrentPanel->LineArray[MenuActiveLine+1].pMenuLine)->LineType);
|
||||||
if (linetype == MENU_LINE_STRING)
|
if (linetype == MENU_LINE_STRING)
|
||||||
{
|
{
|
||||||
@ -189,13 +295,16 @@ void ShowCurrentMenu(void)
|
|||||||
else
|
else
|
||||||
LCD_putc_embed(SYMB_POINT_MARK, 0, MenuActiveLine-MenuFirstLine+1);
|
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);
|
CPU_INT08U lineflags = (((TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine)->Flags);
|
||||||
if (lineflags & MENU_INDEX_LINE)
|
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);
|
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))
|
if ((MenuEditStatus) && (!EditDesc->IsIndex))
|
||||||
@ -204,14 +313,40 @@ void ShowCurrentMenu(void)
|
|||||||
{
|
{
|
||||||
LCD_goto(EditStart+EditPos, MenuActiveLine-MenuFirstLine+1);
|
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))
|
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)
|
else if (EditDesc->Type == DATA_TYPE_IP_ADDR)
|
||||||
{
|
{
|
||||||
LCD_goto(EditStart+EditIpPos[EditPos], MenuActiveLine-MenuFirstLine+1);
|
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();
|
LCD_cursor_on();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -250,7 +385,11 @@ CPU_INT08U GetNextActiveLine(TMenuPanel *menu, CPU_INT08U recent)
|
|||||||
while (i++ < menu->LineNum)
|
while (i++ < menu->LineNum)
|
||||||
{
|
{
|
||||||
TMenuLine* mline = (TMenuLine*)menu->LineArray[i].pMenuLine;
|
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;
|
line = i;
|
||||||
break;
|
break;
|
||||||
@ -327,7 +466,22 @@ void MenuSprintf(CPU_INT08U* str, CPU_INT08U len, CPU_INT32U Val)
|
|||||||
format[5]=0;
|
format[5]=0;
|
||||||
sprintf((char*)str, (char const*)format, Val);
|
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);
|
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));
|
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)
|
void EnterEdit(void)
|
||||||
{
|
{
|
||||||
|
TRangeValueULONG* RVal;
|
||||||
// ïîçèöèÿ ðåäàêòèðîâàíèÿ, 0 - ñàìîå ñòàðøåå äåñÿòè÷íîå ÷èñëî
|
// ïîçèöèÿ ðåäàêòèðîâàíèÿ, 0 - ñàìîå ñòàðøåå äåñÿòè÷íîå ÷èñëî
|
||||||
EditPos = 0;
|
EditPos = 0;
|
||||||
// óêàçàòåëü íà ðåäàêòèðóåìûé äåñêðèïòîð
|
// óêàçàòåëü íà ðåäàêòèðóåìûé äåñêðèïòîð
|
||||||
@ -347,11 +510,16 @@ void EnterEdit(void)
|
|||||||
// íîìåð ñòðîêè ñ ðåäàêòèðóåìûì äåñêðèïòîðîì
|
// íîìåð ñòðîêè ñ ðåäàêòèðóåìûì äåñêðèïòîðîì
|
||||||
EditLine = MenuActiveLine+1-MenuFirstLine;
|
EditLine = MenuActiveLine+1-MenuFirstLine;
|
||||||
// ðåäàêòèðóåìîå ÷èñëî
|
// ðåäàêòèðóåìîå ÷èñëî
|
||||||
GetData(EditDesc, &EditVal, 0, DATA_FLAG_SYSTEM_INDEX);
|
if (EditDesc->Type != DATA_TYPE_CHAR_STRING)
|
||||||
// ãðàíèöû
|
{
|
||||||
TRangeValueULONG* RVal = EditDesc->RangeValue;
|
GetData(EditDesc, &EditVal, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||||
memcpy(&EditMin, &RVal->Min, sizeof(CPU_INT32U));
|
// ãðàíèöû
|
||||||
memcpy(&EditMax, &RVal->Max, sizeof(CPU_INT32U));
|
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)
|
if (EditDesc->IsIndex)
|
||||||
{
|
{
|
||||||
@ -359,14 +527,41 @@ void EnterEdit(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GetDataNameStr((const TDataDescStruct*)EditDesc, EditBuf);
|
#if defined(CONFIG_LCD_1602A)
|
||||||
if (EditDesc->Name) strcat((char*)EditBuf, "=");
|
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;
|
EditStart = strlen((char const*)EditBuf)+1;
|
||||||
|
#endif
|
||||||
if (EditDesc->Type == DATA_TYPE_ULONG)
|
if (EditDesc->Type == DATA_TYPE_ULONG)
|
||||||
{
|
{
|
||||||
sprintf((char*)EditBuf, "%u", RVal->Max);
|
sprintf((char*)EditBuf, "%u", RVal->Max);
|
||||||
EditLen = strlen((char const*)EditBuf);
|
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)
|
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||||
{
|
{
|
||||||
EditLen = 12;
|
EditLen = 12;
|
||||||
@ -379,6 +574,15 @@ void EnterEdit(void)
|
|||||||
{
|
{
|
||||||
EditLen = 4;
|
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
|
else
|
||||||
{
|
{
|
||||||
EditLen = 0;
|
EditLen = 0;
|
||||||
@ -406,6 +610,10 @@ void SaveEdit(void)
|
|||||||
}
|
}
|
||||||
SetData(EditDesc, &EditVal, 0, DATA_FLAG_SYSTEM_INDEX);
|
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)
|
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||||
{
|
{
|
||||||
TRTC_Data rtc;
|
TRTC_Data rtc;
|
||||||
@ -433,14 +641,73 @@ void SaveEdit(void)
|
|||||||
hour_min = hour * 60 + min;
|
hour_min = hour * 60 + min;
|
||||||
SetData(EditDesc, &hour_min, 0, DATA_FLAG_SYSTEM_INDEX);
|
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;
|
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)
|
void MenuTask(void *p_arg)
|
||||||
{
|
{
|
||||||
int pause = 0;
|
int pause = 0;
|
||||||
|
|
||||||
|
str_last_time = OSTimeGet();
|
||||||
SetMenu(START_MENU);
|
SetMenu(START_MENU);
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
@ -453,27 +720,76 @@ void MenuTask(void *p_arg)
|
|||||||
if (!MenuEditStatus)
|
if (!MenuEditStatus)
|
||||||
{ // îòîáðàæåíèå ìåíþ
|
{ // îòîáðàæåíèå ìåíþ
|
||||||
pause = 0;
|
pause = 0;
|
||||||
|
|
||||||
|
#if defined(BOARD_SOLARIUM_WEB)
|
||||||
|
key_repeat1:
|
||||||
|
#endif
|
||||||
if (key)
|
if (key)
|
||||||
{
|
{
|
||||||
switch (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:
|
case KEY_UP:
|
||||||
//if (MenuActiveLine) MenuActiveLine--;
|
{
|
||||||
MenuActiveLine = GetPrevActiveLine(MenuCurrentPanel, MenuActiveLine);
|
CPU_INT08U active_line = GetPrevActiveLine(MenuCurrentPanel, MenuActiveLine);
|
||||||
ShowCurrentMenu();
|
if (MenuActiveLine != active_line)
|
||||||
|
{
|
||||||
|
str_start_sym = 0;
|
||||||
|
str_last_time = OSTimeGet();
|
||||||
|
}
|
||||||
|
MenuActiveLine = active_line;
|
||||||
|
ShowCurrentMenu();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KEY_DOWN:
|
case KEY_DOWN:
|
||||||
//MenuActiveLine++;
|
{
|
||||||
//if (MenuActiveLine+1 >= MenuCurrentPanel->LineNum) MenuActiveLine--;
|
CPU_INT08U active_line = GetNextActiveLine(MenuCurrentPanel, MenuActiveLine);
|
||||||
MenuActiveLine = GetNextActiveLine(MenuCurrentPanel, MenuActiveLine);
|
if (MenuActiveLine != active_line)
|
||||||
ShowCurrentMenu();
|
{
|
||||||
|
str_start_sym = 0;
|
||||||
|
str_last_time = OSTimeGet();
|
||||||
|
}
|
||||||
|
MenuActiveLine = active_line;
|
||||||
|
ShowCurrentMenu();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KEY_LEFT:
|
case KEY_LEFT:
|
||||||
{
|
{
|
||||||
TMenuLine* pLine = (TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine;
|
TMenuLine* pLine = (TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine;
|
||||||
if (pLine->Flags & MENU_INDEX_LINE)
|
if (pLine->Flags & MENU_INDEX_LINE)
|
||||||
{// ñâåðõó èíäåêñíûé ïàðàìåòð - ïîïðîáóåì åãî ïåðåêëþ÷èòü
|
{// ñâåðõó èíäåêñíûé ïàðàìåòð - ïîïðîáóåì åãî ïåðåêëþ÷èòü
|
||||||
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
||||||
if (desc->Type == DATA_TYPE_ULONG)
|
if (desc->Type == DATA_TYPE_ULONG)
|
||||||
@ -486,6 +802,8 @@ void MenuTask(void *p_arg)
|
|||||||
if ((i < min) || (i > max)) i = max;
|
if ((i < min) || (i > max)) i = max;
|
||||||
SetData(desc, &i, 0, DATA_FLAG_SYSTEM_INDEX);
|
SetData(desc, &i, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||||
}
|
}
|
||||||
|
str_start_sym = 0;
|
||||||
|
str_last_time = OSTimeGet();
|
||||||
ShowCurrentMenu();
|
ShowCurrentMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -493,8 +811,8 @@ void MenuTask(void *p_arg)
|
|||||||
|
|
||||||
case KEY_RIGHT:
|
case KEY_RIGHT:
|
||||||
{
|
{
|
||||||
TMenuLine* pLine = (TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine;
|
TMenuLine* pLine = (TMenuLine*)MenuCurrentPanel->LineArray[0].pMenuLine;
|
||||||
if (pLine->Flags & MENU_INDEX_LINE)
|
if (pLine->Flags & MENU_INDEX_LINE)
|
||||||
{// ñâåðõó èíäåêñíûé ïàðàìåòð - ïîïðîáóåì åãî ïåðåêëþ÷èòü
|
{// ñâåðõó èíäåêñíûé ïàðàìåòð - ïîïðîáóåì åãî ïåðåêëþ÷èòü
|
||||||
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
||||||
if (desc->Type == DATA_TYPE_ULONG)
|
if (desc->Type == DATA_TYPE_ULONG)
|
||||||
@ -507,6 +825,8 @@ void MenuTask(void *p_arg)
|
|||||||
if ((i < min) || (i > max)) i = min;
|
if ((i < min) || (i > max)) i = min;
|
||||||
SetData(desc, &i, 0, DATA_FLAG_SYSTEM_INDEX);
|
SetData(desc, &i, 0, DATA_FLAG_SYSTEM_INDEX);
|
||||||
}
|
}
|
||||||
|
str_start_sym = 0;
|
||||||
|
str_last_time = OSTimeGet();
|
||||||
ShowCurrentMenu();
|
ShowCurrentMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -514,6 +834,8 @@ void MenuTask(void *p_arg)
|
|||||||
|
|
||||||
case KEY_STOP:
|
case KEY_STOP:
|
||||||
// ïðîáóåì âûéòè â ïðåäûäóùåå ìåíþ
|
// ïðîáóåì âûéòè â ïðåäûäóùåå ìåíþ
|
||||||
|
str_start_sym = 0;
|
||||||
|
str_last_time = OSTimeGet();
|
||||||
GoToPreviousMenu();
|
GoToPreviousMenu();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -524,10 +846,14 @@ void MenuTask(void *p_arg)
|
|||||||
if (pLine->LineType == MENU_LINE_SHOW_DESC)
|
if (pLine->LineType == MENU_LINE_SHOW_DESC)
|
||||||
{// âõîäèì â ðåäàêòèðîâàíèå, åñëè ìîæíî
|
{// âõîäèì â ðåäàêòèðîâàíèå, åñëè ìîæíî
|
||||||
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
TDataDescStruct* desc = (TDataDescStruct*)pLine->Ptr;
|
||||||
|
str_start_sym = 0;
|
||||||
|
str_last_time = OSTimeGet();
|
||||||
if (desc->Desc == DATA_DESC_EDIT) {EnterEdit(); pause=1000;}
|
if (desc->Desc == DATA_DESC_EDIT) {EnterEdit(); pause=1000;}
|
||||||
}
|
}
|
||||||
else if (pLine->LineType == MENU_LINE_GOTO_MENU)
|
else if (pLine->LineType == MENU_LINE_GOTO_MENU)
|
||||||
{// ïðîáóåì ïåðåéòè â ñëåäóþùåå ìåíþ
|
{// ïðîáóåì ïåðåéòè â ñëåäóþùåå ìåíþ
|
||||||
|
str_start_sym = 0;
|
||||||
|
str_last_time = OSTimeGet();
|
||||||
GoToNextMenu();
|
GoToNextMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -543,7 +869,45 @@ void MenuTask(void *p_arg)
|
|||||||
{ // ðåäàêòèðîâàíèå ïàðàìåòðà
|
{ // ðåäàêòèðîâàíèå ïàðàìåòðà
|
||||||
if (key)
|
if (key)
|
||||||
{
|
{
|
||||||
|
#if defined(BOARD_SOLARIUM_WEB)
|
||||||
|
key_repeat2:
|
||||||
|
#endif
|
||||||
switch (key){
|
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:
|
case KEY_UP:
|
||||||
if (EditDesc->IsIndex)
|
if (EditDesc->IsIndex)
|
||||||
{
|
{
|
||||||
@ -561,6 +925,11 @@ void MenuTask(void *p_arg)
|
|||||||
EditBuf[EditPos]++;
|
EditBuf[EditPos]++;
|
||||||
if (EditBuf[EditPos] > '9') EditBuf[EditPos] = '0';
|
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)
|
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||||
{
|
{
|
||||||
EditBuf[EditTimePos[EditPos]]++;
|
EditBuf[EditTimePos[EditPos]]++;
|
||||||
@ -576,6 +945,16 @@ void MenuTask(void *p_arg)
|
|||||||
EditBuf[EditTimePos[EditPos]]++;
|
EditBuf[EditTimePos[EditPos]]++;
|
||||||
if (EditBuf[EditTimePos[EditPos]] > '9') EditBuf[EditTimePos[EditPos]] = '0';
|
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;
|
break;
|
||||||
case KEY_DOWN:
|
case KEY_DOWN:
|
||||||
@ -595,6 +974,11 @@ void MenuTask(void *p_arg)
|
|||||||
EditBuf[EditPos]--;
|
EditBuf[EditPos]--;
|
||||||
if (EditBuf[EditPos] < '0') EditBuf[EditPos] = '9';
|
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)
|
else if (EditDesc->Type == DATA_TYPE_TIME)
|
||||||
{
|
{
|
||||||
EditBuf[EditTimePos[EditPos]]--;
|
EditBuf[EditTimePos[EditPos]]--;
|
||||||
@ -610,6 +994,17 @@ void MenuTask(void *p_arg)
|
|||||||
EditBuf[EditTimePos[EditPos]]--;
|
EditBuf[EditTimePos[EditPos]]--;
|
||||||
if (EditBuf[EditTimePos[EditPos]] < '0') EditBuf[EditTimePos[EditPos]] = '9';
|
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;
|
break;
|
||||||
case KEY_LEFT:
|
case KEY_LEFT:
|
||||||
@ -624,7 +1019,14 @@ void MenuTask(void *p_arg)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (EditPos) EditPos--;
|
if (EditPos)
|
||||||
|
{
|
||||||
|
EditPos--;
|
||||||
|
if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||||
|
{
|
||||||
|
if (EditBuf[EditPos] == ',') EditPos--;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KEY_RIGHT:
|
case KEY_RIGHT:
|
||||||
@ -639,7 +1041,14 @@ void MenuTask(void *p_arg)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (EditPos < EditLen-1) EditPos++;
|
if (EditPos < EditLen-1)
|
||||||
|
{
|
||||||
|
EditPos++;
|
||||||
|
if (EditDesc->Type == DATA_TYPE_RUB_CENT)
|
||||||
|
{
|
||||||
|
if (EditBuf[EditPos] == ',') EditPos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KEY_STOP:
|
case KEY_STOP:
|
||||||
@ -667,6 +1076,7 @@ void MenuTask(void *p_arg)
|
|||||||
|
|
||||||
void InitMenu(void)
|
void InitMenu(void)
|
||||||
{
|
{
|
||||||
|
INT8U err;
|
||||||
|
|
||||||
MenuStackPtr = 0;
|
MenuStackPtr = 0;
|
||||||
MenuActiveLine = 0;
|
MenuActiveLine = 0;
|
||||||
@ -677,6 +1087,7 @@ void InitMenu(void)
|
|||||||
memset(&MenuStack, 0, sizeof(TMenuStack)*STACKPANELSIZE);
|
memset(&MenuStack, 0, sizeof(TMenuStack)*STACKPANELSIZE);
|
||||||
|
|
||||||
OSTaskCreate(MenuTask, (void *)0, (OS_STK *)&MenuTaskStk[MENU_TASK_STK_SIZE-1], MENU_TASK_PRIO);
|
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"
|
#include "cpu.h"
|
||||||
|
|
||||||
#define MENU_LINES_NUMBER 4
|
#ifdef CONFIG_LCD_1602A
|
||||||
#define MENU_SYMB_NUMBER 20
|
#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_UP 0x87
|
||||||
#define SYMB_GO_DOWN 0x86
|
#define SYMB_GO_DOWN 0x86
|
||||||
|
|
||||||
#define SYMB_RIGHT_ARROW 0x3E
|
#ifdef CONFIG_LCD_1602A
|
||||||
#define SYMB_DESC_MARK 0x3E
|
#define SYMB_RIGHT_ARROW '>'
|
||||||
#define SYMB_IND_MARK 0x3C
|
#else
|
||||||
#define SYMB_POINT_MARK 0x3E
|
#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 void MenuSprintf(CPU_INT08U* str, CPU_INT08U len, CPU_INT32U Val);
|
||||||
extern TMenuPanel* GetCurrentMenu(void);
|
extern TMenuPanel* GetCurrentMenu(void);
|
||||||
extern void RefreshMenu(void);
|
extern void RefreshMenu(void);
|
||||||
|
extern void MenuCursorOn(CPU_INT08U x, CPU_INT08U y);
|
||||||
|
extern void MenuCursorOff(void);
|
||||||
|
|
||||||
|
|
||||||
#endif //#ifndef _MENU_H_
|
#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_3[] = "Óñòàíîâêà ïàðîëÿ";
|
||||||
const CPU_INT08U str_SettingsMenu_4[] = "Óñòàíîâêà âðåìåíè";
|
const CPU_INT08U str_SettingsMenu_4[] = "Óñòàíîâêà âðåìåíè";
|
||||||
const CPU_INT08U str_SettingsMenu_5[] = "Ñáðîñ íàñòðîåê";
|
const CPU_INT08U str_SettingsMenu_5[] = "Ñáðîñ íàñòðîåê";
|
||||||
|
#ifdef CONFIG_FTP_CLIENT_ENABLE
|
||||||
|
const CPU_INT08U str_SettingsMenu_9[] = "FTP";
|
||||||
|
#endif
|
||||||
|
|
||||||
const TMenuLine line_SettingsMenu_0 = {
|
const TMenuLine line_SettingsMenu_0 = {
|
||||||
MENU_LINE_STRING, // òèï ïóíêòà ìåíþ
|
MENU_LINE_STRING, // òèï ïóíêòà ìåíþ
|
||||||
@ -541,9 +544,18 @@ const TMenuLine line_SettingsMenu_7 = {
|
|||||||
NULL // ïàíåëü äëÿ ïåðåõîäà
|
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 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};
|
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_EventNumber[24];
|
||||||
extern char str_EventData[24];
|
extern char str_EventData[24];
|
||||||
|
|
||||||
|
extern const TMenuPanel FtpSettingsMenuPanel[];
|
||||||
|
|
||||||
#endif //#ifndef _MENUDESC_H_
|
#endif //#ifndef _MENUDESC_H_
|
||||||
|
|||||||
@ -325,3 +325,28 @@ void PrintSecDateTimeStringRaw(char *str, CPU_INT32U time)
|
|||||||
Sec2Date(&rtc_data, 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);
|
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 PrintSecToHourMinSec(char *str, int seconds);
|
||||||
extern void PrintSecToBigHourMinSec(char *str, int seconds);
|
extern void PrintSecToBigHourMinSec(char *str, int seconds);
|
||||||
extern void PrintSecDateTimeStringRaw(char *str, CPU_INT32U time);
|
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_
|
#endif //#ifndef _TIME_H_
|
||||||
|
|||||||
@ -9,7 +9,7 @@ TriggerName=main
|
|||||||
LimitSize=0
|
LimitSize=0
|
||||||
ByteLimit=50
|
ByteLimit=50
|
||||||
[DebugChecksum]
|
[DebugChecksum]
|
||||||
Checksum=1364593978
|
Checksum=-408815470
|
||||||
[Exceptions]
|
[Exceptions]
|
||||||
StopOnUncaught=_ 0
|
StopOnUncaught=_ 0
|
||||||
StopOnThrow=_ 0
|
StopOnThrow=_ 0
|
||||||
@ -38,8 +38,12 @@ Enabled=0
|
|||||||
ShowSource=1
|
ShowSource=1
|
||||||
[JLinkDriver]
|
[JLinkDriver]
|
||||||
WatchCond=_ 0
|
WatchCond=_ 0
|
||||||
Watch0=_ 0 "" 0 "" 0 "" 0 "" 0 0 0 0
|
Watch0=_ 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 0 0 0
|
||||||
Watch1=_ 0 "" 0 "" 0 "" 0 "" 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]
|
[Log file]
|
||||||
LoggingEnabled=_ 0
|
LoggingEnabled=_ 0
|
||||||
LogFile=_ ""
|
LogFile=_ ""
|
||||||
@ -47,6 +51,9 @@ Category=_ 0
|
|||||||
[TermIOLog]
|
[TermIOLog]
|
||||||
LoggingEnabled=_ 0
|
LoggingEnabled=_ 0
|
||||||
LogFile=_ ""
|
LogFile=_ ""
|
||||||
|
[Aliases]
|
||||||
|
Count=0
|
||||||
|
SuppressDialog=0
|
||||||
[CallStackLog]
|
[CallStackLog]
|
||||||
Enabled=0
|
Enabled=0
|
||||||
[DriverProfiling]
|
[DriverProfiling]
|
||||||
@ -54,10 +61,3 @@ Enabled=0
|
|||||||
Mode=0
|
Mode=0
|
||||||
Graph=0
|
Graph=0
|
||||||
Symbiont=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>
|
<name>BICOMP</name>
|
||||||
<file> 170</file>
|
<file> 170</file>
|
||||||
</tool>
|
</tool>
|
||||||
|
<tool>
|
||||||
|
<name>ICCARM</name>
|
||||||
|
<file> 194</file>
|
||||||
|
</tool>
|
||||||
</outputs>
|
</outputs>
|
||||||
<inputs>
|
<inputs>
|
||||||
<tool>
|
<tool>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user