mirror of
https://github.com/dimoniche/solarium.git
synced 2026-01-30 09:53:30 +03:00
142 lines
3.5 KiB
Plaintext
142 lines
3.5 KiB
Plaintext
#ifndef _DATA_H_
|
|
#define _DATA_H_
|
|
|
|
/*!
|
|
Îïèñàíèå ñòðóêòóð è ñïîñîáà äîñòóïà ê äàííûì
|
|
|
|
ïîêà âñå ïàðàìåòðû - 32 - áèòíûå float èëè signed long
|
|
|
|
*/
|
|
|
|
#include "cpu.h"
|
|
|
|
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;
|
|
|
|
|
|
// óíèâåðñàëüíûé äåñêðèïòîð äàííûõ
|
|
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
|
|
|
|
// ðàñïîëîæåíèå ïàðàìåòðà
|
|
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;
|
|
}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);
|
|
|
|
#endif //#ifndef _DATA_H_
|