2021-02-19 22:00:24 +03:00

157 lines
4.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef _DATA_H_
#define _DATA_H_
/*!
Îïèñàíèå ñòðóêòóð è ñïîñîáà äîñòóïà ê äàííûì
ïîêà âñå ïàðàìåòðû - 32 - áèòíûå float èëè signed long
*/
#include "cpu.h"
#pragma pack(push, 4)
typedef union{
CPU_INT32U Val32U;
CPU_INT32S Val32S;
CPU_FP32 ValFloat;
}TVariant32;
// ñòðóêòóðû ãðàíèö
typedef struct{
CPU_INT32U Min;
CPU_INT32U Max;
}TRangeValueULONG;
typedef struct{
CPU_INT32S Min;
CPU_INT32S Max;
}TRangeValueSLONG;
typedef struct{
CPU_FP32 Min;
CPU_FP32 Max;
}TRangeValueFLOAT;
#pragma pack(pop)
// óíèâåðñàëüíûé äåñêðèïòîð äàííûõ
typedef struct{
// òèï äåñêðèïòîðà
CPU_INT08U Desc;
#define DATA_DESC_EDIT 0 // ðåäàêòèðóåìûé
#define DATA_DESC_VIEW 1 // äëÿ ïðîñìîòðà
// òèï ïàðàìåòðà
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_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;
#define DATA_LOC_RAM 0
#define DATA_LOC_FRAM 1
// ïðèçíàê ìàññèâà
CPU_INT08U IsArray;
#define DATA_NO_ARRAY 0
#define DATA_IS_ARRAY 1
// ðàçìåð ìàññèâà
CPU_INT32U ArraySize;
// óêàçàòåëü íà äåñðèïòîð èíäåêñà ìàññèâà
const void* ArrayIndex; //TDataDescStruct*
// óêàçàòåëü íà ïåðåìåííóþ èëè àäðåñ FRAM
void* Data;
// óêàçàòåëü íà ãðàíèöû ïàðàìåòðà
void* RangeValue;
// ôóíêöèÿ ïî èçìåíåíèþ
void (*OnchangeFunc)(void);
// ñìåùåíèå ìåæäó ýëåìåíòàìè â ìàññèâå
CPU_INT32U ArrayOffset;
// óêàçàòåëü íà ñòðîêó íàçâàíèÿ ïàðàìåòðà
const CPU_INT08U* Name;
// ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
CPU_INT08U IsIndex;
#define DATA_NO_INDEX 0
#define DATA_IS_INDEX 1
// óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
const CPU_INT08U** Items;
// ðàçðåøèòü èíèöèàëèçàöèþ çíà÷åíèåì ïî óìîë÷àíèþ ïðè ñòàðòå ñèñòåìû
CPU_INT08U EnableInit;
#define DATA_INIT_DISABLE 0
#define DATA_INIT_ENABLE 1
// çíà÷åíèå ïî óìîë÷àíèþ
TVariant32 DefaultValue;
}TDataDescStruct;
// ñòðóêòóðà äëÿ ìàññèâà âñåõ ïàðàìåòðîâ
typedef struct{
const TDataDescStruct* ptr;
const char* name;
}TDataDescArrayStruct;
// ôëàãè
#define DATA_FLAG_SYSTEM_INDEX 0
#define DATA_FLAG_DIRECT_INDEX 1
// âîçâðàùàåìûå çíà÷åíèÿ
#define DATA_OK 0
#define DATA_ERR -1
// íåîáõîäèìûå ôóíêöèè
// ïîëó÷åíèå äàííûõ
extern int GetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U flags);
// çàïèñü äàííûõ
extern int SetData(const TDataDescStruct* desc, void* buf, CPU_INT32U index, CPU_INT08U flags);
// ïîëó÷åíèå ñòðîêè ñ îòôîðìàòèðîâàííûì çíà÷åíèåì
extern int GetDataStr(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U index, CPU_INT08U flags);
// ïîëó÷åíèå ïîëíîé ñòðîêè ñ íàçâàíèåì è çíà÷åíèåì
extern int GetDataFullStr(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U index, CPU_INT08U flags);
// ïîëó÷åíèå ñòðîêè ñ èìåíåì
extern int GetDataNameStr(const TDataDescStruct* desc, CPU_INT08U* buf);
// èíèöèàëèçàöèÿ ïî óìîë÷àíèþ
extern int InitDataByDefault(const TDataDescStruct* desc, CPU_INT32U index);
// ïðîâåðêà âñåõ äåñòðèïòîðîâ
extern int CheckAllData(void);
// èíèöèàëèçàöèÿ
extern int InitData(const TDataDescStruct* desc);
extern int GetDataItem(const TDataDescStruct* desc, CPU_INT08U* buf, CPU_INT32U itemindex);
extern int InitDescByDefault(const TDataDescStruct* desc);
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_