mirror of
https://github.com/dimoniche/changer.git
synced 2026-01-30 01:03:30 +03:00
157 lines
4.5 KiB
C
157 lines
4.5 KiB
C
#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_
|