ParaLib 2.0.28-master SHA: b4a0dafd73
PARA_Lib.h
Go to the documentation of this file.
1
16//*****************************************************************************/
17//
18//************ Dokumentation at https://doc.retostronik.de/ParaLib/ ***********/
19//
20//*****************************************************************************/
21
22#ifndef ParaLib_h
23#define ParaLib_h
24
25#if defined(__cplusplus)
26 /* static_assert is a keyword since C++11 */
27#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)
28 #include <assert.h>
29#else
30 #define static_assert _Static_assert
31#endif
32
33#include "SYS_Type.h"
34#include "cmsis_compiler.h"
35
37#define DEFINE_STR(s) #s
40#define DEFINE_VAL(s) DEFINE_STR(s)
41
43#define PARA_STR(s) "<PARA"#s">"
45
47#define PARA(s) PARA_STR(s)
48
50#define ERROR_STR(s) "<ERROR"#s">"
53#define ERROR(s) ERROR_STR(s)
54
56#ifdef HELP_TEXTS_IN_FILE
58typedef struct
59{
60 const uint16_t ui16Version;
61 const uint16_t ui16ParaID;
62 const uint32_t ui32Length;
63 const char cHelpText[];
64}tParaHelpText;
65
66#define PARA_HELP_TEXT_COMBINE(x)
67#define PARA_HELP_TEXT_SECTION(PARA_ID, HELP) static const tParaHelpText g_tParaHelpText##PARA_ID __attribute__((section("para_help_strings"), used)) = {1, PARA_ID, sizeof(HELP) - 1, HELP};
68#else
69#define PARA_HELP_TEXT_COMBINE(x) x
70#define PARA_HELP_TEXT_SECTION(PARA_ID, HELP)
71#endif
72
73#ifdef INCLUDE_ENGLISH_HELP
74#define INCLUDE_HELP_EN(HELP) HELP
75#else
76#define INCLUDE_HELP_EN(HELP) ""
77#endif
78
79#ifdef INCLUDE_GERMAN_HELP
80#define INCLUDE_HELP_DE(HELP) HELP
81#else
82#define INCLUDE_HELP_DE(HELP) ""
83#endif
85
88#define xstr(s) str(s)
90#define str(s) #s
92
94#if __CC_ARM
95// Arm Compiler 4/5 does not support static_assert
96#define ASSERT_PARA_NAME(NAME)
97#define ASSERT_PARA_DESCRIPTION(DESCRIPTION)
98#define ASSERT_PARA_HELP(HELP)
99#define ASSERT_PARA_RANGE(PARA_ID, MIN, MAX, DEFAULT, TYPE_MIN, TYPE_MAX)
100#else
101// Test if strings are too short
102#define ASSERT_PARA_NAME(NAME) static_assert(sizeof(NAME) >= 0, \
103"Parameter name to short!")
104
105// Test if strings are too short
106#define ASSERT_PARA_DESCRIPTION(DESCRIPTION) static_assert(sizeof(DESCRIPTION) >= MIN_PARA_DESCRIPTION_LENTH, \
107"Parameter description text to short must be at least "xstr(MIN_PARA_DESCRIPTION_LENTH)" characters long!")
108
109// Test if strings are too short
110#define ASSERT_PARA_HELP(HELP) static_assert(sizeof(HELP) >= MIN_PARA_HELP_LENTH, \
111"Parameter help text to short must be at least "xstr(MIN_PARA_HELP_LENTH)" characters long!")
112
113/*------------------------------------------------------------------------------
114 Compile-time check of MinValue, MaxValue and DefaultValue of integer parameters:
115 all values within the range of the datatype, Min <= Max and Min <= Default <= Max.
116 The values must be integer constant expressions.
117------------------------------------------------------------------------------*/
118#define ASSERT_PARA_RANGE(PARA_ID, MIN, MAX, DEFAULT, TYPE_MIN, TYPE_MAX) \
119static_assert(((long long)(MIN) >= (long long)(TYPE_MIN)) && ((long long)(MAX) <= (long long)(TYPE_MAX)) \
120 && ((long long)(DEFAULT) >= (long long)(TYPE_MIN)) && ((long long)(DEFAULT) <= (long long)(TYPE_MAX)), \
121 "Parameter " #PARA_ID ": MinValue, MaxValue or DefaultValue exceeds the range of the datatype"); \
122static_assert((long long)(MIN) <= (long long)(MAX), "Parameter " #PARA_ID ": MinValue is greater than MaxValue"); \
123static_assert(((long long)(DEFAULT) >= (long long)(MIN)) && ((long long)(DEFAULT) <= (long long)(MAX)), \
124 "Parameter " #PARA_ID ": DefaultValue is not within MinValue and MaxValue")
125#endif
127
128
151#define ParameterF32(VARIABLE_NAME, PARA_ID, GROUP_ID, NAME, UNIT, DESCRIPTION, HELP_EN, HELP_DE, SUBSTITUTION, COUNT, MIN, MAX, DEFAULT, \
152 ON_READ, ON_WRITE, SET_TO_DEFAULT, ACCESS, STORE_LOCATION, FLAGS) \
153 \
154const ParaData_F32 g_tParaData_##PARA_ID = { \
155PARA_CHECK_VARIABLE(VARIABLE_NAME, float), \
156MIN, \
157MAX, \
158DEFAULT \
159}; \
160 \
161static const char g_sParaName##PARA_ID[] __attribute__((section("para_strings"), used)) = NAME; \
162static const char g_sParaUnit##PARA_ID[] __attribute__((section("para_strings"), used)) = UNIT; \
163static const char g_sParaSubstitutionText##PARA_ID[] __attribute__((section("para_strings"), used)) = SUBSTITUTION; \
164static const char g_sParaDescription##PARA_ID[] __attribute__((section("para_strings"), used)) = \
165DESCRIPTION PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE)); \
166PARA_HELP_TEXT_SECTION(PARA_ID, PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE))) \
167 \
168const Parameter g_tParameter##PARA_ID __attribute__((section("para_descriptor"))) = { \
169GROUP_ID, \
170PARA_ID, \
171ACCESS, \
172COUNT, \
173g_sParaName##PARA_ID, \
174g_sParaDescription##PARA_ID, \
175g_sParaUnit##PARA_ID, \
176(void*)&g_tParaData_##PARA_ID, \
177(ReadFunction*)PARA_CHECK_READ_FUNCTION(ON_READ, F32), \
178(WriteFunction*)PARA_CHECK_WRITE_FUNCTION(ON_WRITE, F32), \
179(RestoreDefaultFunction*)PARA_CHECK_DEFAULT_FUNCTION(SET_TO_DEFAULT, F32), \
180(STORE_LOCATION << 24) | ((uint32_t)TYPE_float << 28) | FLAGS, \
181g_sParaSubstitutionText##PARA_ID, \
182};
183
184
207#define ParameterU32(VARIABLE_NAME, PARA_ID, GROUP_ID, NAME, UNIT, DESCRIPTION, HELP_EN, HELP_DE, SUBSTITUTION, COUNT, MIN, MAX, DEFAULT, \
208 ON_READ, ON_WRITE, SET_TO_DEFAULT, ACCESS, STORE_LOCATION, FLAGS) \
209 \
210ASSERT_PARA_NAME(NAME); \
211ASSERT_PARA_DESCRIPTION(DESCRIPTION); \
212ASSERT_PARA_HELP(HELP_EN); \
213ASSERT_PARA_HELP(HELP_DE); \
214ASSERT_PARA_RANGE(PARA_ID, MIN, MAX, DEFAULT, MIN_uint32, MAX_uint32); \
215 \
216const ParaData_U32 g_tParaData_##PARA_ID = { \
217PARA_CHECK_VARIABLE(VARIABLE_NAME, uint32_t), \
218MIN, \
219MAX, \
220DEFAULT \
221}; \
222 \
223static const char g_sParaName##PARA_ID[] __attribute__((section("para_strings"), used)) = NAME; \
224static const char g_sParaUnit##PARA_ID[] __attribute__((section("para_strings"), used)) = UNIT; \
225static const char g_sParaSubstitutionText##PARA_ID[] __attribute__((section("para_strings"), used)) = SUBSTITUTION; \
226static const char g_sParaDescription##PARA_ID[] __attribute__((section("para_strings"), used)) = \
227DESCRIPTION PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE)); \
228PARA_HELP_TEXT_SECTION(PARA_ID, PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE))) \
229 \
230const Parameter g_tParameter##PARA_ID __attribute__((section("para_descriptor"))) = { \
231GROUP_ID, \
232PARA_ID, \
233ACCESS, \
234COUNT, \
235g_sParaName##PARA_ID, \
236g_sParaDescription##PARA_ID, \
237g_sParaUnit##PARA_ID, \
238(void*)&g_tParaData_##PARA_ID, \
239(ReadFunction*)PARA_CHECK_READ_FUNCTION(ON_READ, U32), \
240(WriteFunction*)PARA_CHECK_WRITE_FUNCTION(ON_WRITE, U32), \
241(RestoreDefaultFunction*)PARA_CHECK_DEFAULT_FUNCTION(SET_TO_DEFAULT, U32), \
242(STORE_LOCATION << 24) | ((uint32_t)TYPE_uint32 << 28) | FLAGS, \
243g_sParaSubstitutionText##PARA_ID, \
244};
245
246
269#define ParameterI32(VARIABLE_NAME, PARA_ID, GROUP_ID, NAME, UNIT, DESCRIPTION, HELP_EN, HELP_DE, SUBSTITUTION, COUNT, MIN, MAX, DEFAULT, \
270 ON_READ, ON_WRITE, SET_TO_DEFAULT, ACCESS, STORE_LOCATION, FLAGS) \
271 \
272ASSERT_PARA_NAME(NAME); \
273ASSERT_PARA_DESCRIPTION(DESCRIPTION); \
274ASSERT_PARA_HELP(HELP_EN); \
275ASSERT_PARA_HELP(HELP_DE); \
276ASSERT_PARA_RANGE(PARA_ID, MIN, MAX, DEFAULT, MIN_int32, MAX_int32); \
277 \
278const ParaData_I32 g_tParaData_##PARA_ID = { \
279PARA_CHECK_VARIABLE(VARIABLE_NAME, int32_t), \
280MIN, \
281MAX, \
282DEFAULT \
283}; \
284 \
285static const char g_sParaName##PARA_ID[] __attribute__((section("para_strings"), used)) = NAME; \
286static const char g_sParaUnit##PARA_ID[] __attribute__((section("para_strings"), used)) = UNIT; \
287static const char g_sParaSubstitutionText##PARA_ID[] __attribute__((section("para_strings"), used)) = SUBSTITUTION; \
288static const char g_sParaDescription##PARA_ID[] __attribute__((section("para_strings"), used)) = \
289DESCRIPTION PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE)); \
290PARA_HELP_TEXT_SECTION(PARA_ID, PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE))) \
291 \
292const Parameter g_tParameter##PARA_ID __attribute__((section("para_descriptor"))) = { \
293GROUP_ID, \
294PARA_ID, \
295ACCESS, \
296COUNT, \
297g_sParaName##PARA_ID, \
298g_sParaDescription##PARA_ID, \
299g_sParaUnit##PARA_ID, \
300(void*)&g_tParaData_##PARA_ID, \
301(ReadFunction*)PARA_CHECK_READ_FUNCTION(ON_READ, I32), \
302(WriteFunction*)PARA_CHECK_WRITE_FUNCTION(ON_WRITE, I32), \
303(RestoreDefaultFunction*)PARA_CHECK_DEFAULT_FUNCTION(SET_TO_DEFAULT, I32), \
304(STORE_LOCATION << 24) | ((uint32_t)TYPE_int32 << 28) | FLAGS, \
305g_sParaSubstitutionText##PARA_ID, \
306};
307
308
331#define ParameterU16(VARIABLE_NAME, PARA_ID, GROUP_ID, NAME, UNIT, DESCRIPTION, HELP_EN, HELP_DE, SUBSTITUTION, COUNT, MIN, MAX, DEFAULT, \
332 ON_READ, ON_WRITE, SET_TO_DEFAULT, ACCESS, STORE_LOCATION, FLAGS) \
333 \
334ASSERT_PARA_NAME(NAME); \
335ASSERT_PARA_DESCRIPTION(DESCRIPTION); \
336ASSERT_PARA_HELP(HELP_EN); \
337ASSERT_PARA_HELP(HELP_DE); \
338ASSERT_PARA_RANGE(PARA_ID, MIN, MAX, DEFAULT, MIN_uint16, MAX_uint16); \
339 \
340static const ParaData_U16 g_tParaData_##PARA_ID = { \
341PARA_CHECK_VARIABLE(VARIABLE_NAME, uint16_t), \
342MIN, \
343MAX, \
344DEFAULT \
345}; \
346 \
347static const char g_sParaName##PARA_ID[] __attribute__((section("para_strings"), used)) = NAME; \
348static const char g_sParaUnit##PARA_ID[] __attribute__((section("para_strings"), used)) = UNIT; \
349static const char g_sParaSubstitutionText##PARA_ID[] __attribute__((section("para_strings"), used)) = SUBSTITUTION; \
350static const char g_sParaDescription##PARA_ID[] __attribute__((section("para_strings"), used)) = DESCRIPTION \
351 PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE)); \
352PARA_HELP_TEXT_SECTION(PARA_ID, PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE))) \
353 \
354const Parameter g_tParameter##PARA_ID __attribute__((section("para_descriptor"))) = { \
355GROUP_ID, \
356PARA_ID, \
357ACCESS, \
358COUNT, \
359g_sParaName##PARA_ID, \
360g_sParaDescription##PARA_ID, \
361g_sParaUnit##PARA_ID, \
362(void*)&g_tParaData_##PARA_ID, \
363(ReadFunction*)PARA_CHECK_READ_FUNCTION(ON_READ, U16), \
364(WriteFunction*)PARA_CHECK_WRITE_FUNCTION(ON_WRITE, U16), \
365(RestoreDefaultFunction*)PARA_CHECK_DEFAULT_FUNCTION(SET_TO_DEFAULT, U16), \
366(STORE_LOCATION << 24) | ((uint32_t)TYPE_uint16 << 28) | FLAGS, \
367g_sParaSubstitutionText##PARA_ID, \
368};
369
370
393#define ParameterI16(VARIABLE_NAME, PARA_ID, GROUP_ID, NAME, UNIT, DESCRIPTION, HELP_EN, HELP_DE, SUBSTITUTION, COUNT, MIN, MAX, DEFAULT, \
394 ON_READ, ON_WRITE, SET_TO_DEFAULT, ACCESS, STORE_LOCATION, FLAGS) \
395 \
396ASSERT_PARA_NAME(NAME); \
397ASSERT_PARA_DESCRIPTION(DESCRIPTION); \
398ASSERT_PARA_HELP(HELP_EN); \
399ASSERT_PARA_HELP(HELP_DE); \
400ASSERT_PARA_RANGE(PARA_ID, MIN, MAX, DEFAULT, MIN_int16, MAX_int16); \
401 \
402static const ParaData_I16 g_tParaData_##PARA_ID = { \
403PARA_CHECK_VARIABLE(VARIABLE_NAME, int16_t), \
404MIN, \
405MAX, \
406DEFAULT \
407}; \
408 \
409static const char g_sParaName##PARA_ID[] __attribute__((section("para_strings"), used)) = NAME; \
410static const char g_sParaUnit##PARA_ID[] __attribute__((section("para_strings"), used)) = UNIT; \
411static const char g_sParaSubstitutionText##PARA_ID[] __attribute__((section("para_strings"), used)) = SUBSTITUTION; \
412static const char g_sParaDescription##PARA_ID[] __attribute__((section("para_strings"), used)) = DESCRIPTION \
413 PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE)); \
414PARA_HELP_TEXT_SECTION(PARA_ID, PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE))) \
415 \
416const Parameter g_tParameter##PARA_ID __attribute__((section("para_descriptor"))) = { \
417GROUP_ID, \
418PARA_ID, \
419ACCESS, \
420COUNT, \
421g_sParaName##PARA_ID, \
422g_sParaDescription##PARA_ID, \
423g_sParaUnit##PARA_ID, \
424(void*)&g_tParaData_##PARA_ID, \
425(ReadFunction*)PARA_CHECK_READ_FUNCTION(ON_READ, I16), \
426(WriteFunction*)PARA_CHECK_WRITE_FUNCTION(ON_WRITE, I16), \
427(RestoreDefaultFunction*)PARA_CHECK_DEFAULT_FUNCTION(SET_TO_DEFAULT, I16), \
428(STORE_LOCATION << 24) | ((uint32_t)TYPE_int16 << 28) | FLAGS, \
429g_sParaSubstitutionText##PARA_ID, \
430};
431
432
455#define ParameterU8(VARIABLE_NAME, PARA_ID, GROUP_ID, NAME, UNIT, DESCRIPTION, HELP_EN, HELP_DE, SUBSTITUTION, COUNT, MIN, MAX, DEFAULT, \
456 ON_READ, ON_WRITE, SET_TO_DEFAULT, ACCESS, STORE_LOCATION, FLAGS) \
457 \
458ASSERT_PARA_NAME(NAME); \
459ASSERT_PARA_DESCRIPTION(DESCRIPTION); \
460ASSERT_PARA_HELP(HELP_EN); \
461ASSERT_PARA_HELP(HELP_DE); \
462ASSERT_PARA_RANGE(PARA_ID, MIN, MAX, DEFAULT, MIN_uint8, MAX_uint8); \
463 \
464static const ParaData_U8 g_tParaData_##PARA_ID = { \
465PARA_CHECK_VARIABLE(VARIABLE_NAME, uint8_t), \
466MIN, \
467MAX, \
468DEFAULT \
469}; \
470 \
471static const char g_sParaName##PARA_ID[] __attribute__((section("para_strings"), used)) = NAME; \
472static const char g_sParaUnit##PARA_ID[] __attribute__((section("para_strings"), used)) = UNIT; \
473static const char g_sParaSubstitutionText##PARA_ID[] __attribute__((section("para_strings"), used)) = SUBSTITUTION; \
474static const char g_sParaDescription##PARA_ID[] __attribute__((section("para_strings"), used)) = DESCRIPTION \
475 PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE)); \
476PARA_HELP_TEXT_SECTION(PARA_ID, PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE))) \
477 \
478const Parameter g_tParameter##PARA_ID __attribute__((section("para_descriptor"))) = { \
479GROUP_ID, \
480PARA_ID, \
481ACCESS, \
482COUNT, \
483g_sParaName##PARA_ID, \
484g_sParaDescription##PARA_ID, \
485g_sParaUnit##PARA_ID, \
486(void*)&g_tParaData_##PARA_ID, \
487(ReadFunction*)PARA_CHECK_READ_FUNCTION(ON_READ, U8), \
488(WriteFunction*)PARA_CHECK_WRITE_FUNCTION(ON_WRITE, U8), \
489(RestoreDefaultFunction*)PARA_CHECK_DEFAULT_FUNCTION(SET_TO_DEFAULT, U8), \
490(STORE_LOCATION << 24) | ((uint32_t)TYPE_uint8 << 28) | FLAGS, \
491g_sParaSubstitutionText##PARA_ID, \
492};
493
494
517#define ParameterI8(VARIABLE_NAME, PARA_ID, GROUP_ID, NAME, UNIT, DESCRIPTION, HELP_EN, HELP_DE, SUBSTITUTION, COUNT, MIN, MAX, DEFAULT, \
518 ON_READ, ON_WRITE, SET_TO_DEFAULT, ACCESS, STORE_LOCATION, FLAGS) \
519 \
520ASSERT_PARA_NAME(NAME); \
521ASSERT_PARA_DESCRIPTION(DESCRIPTION); \
522ASSERT_PARA_HELP(HELP_EN); \
523ASSERT_PARA_HELP(HELP_DE); \
524ASSERT_PARA_RANGE(PARA_ID, MIN, MAX, DEFAULT, MIN_int8, MAX_int8); \
525 \
526static const ParaData_I8 g_tParaData_##PARA_ID = { \
527PARA_CHECK_VARIABLE(VARIABLE_NAME, int8_t), \
528MIN, \
529MAX, \
530DEFAULT \
531}; \
532 \
533static const char g_sParaName##PARA_ID[] __attribute__((section("para_strings"), used)) = NAME; \
534static const char g_sParaUnit##PARA_ID[] __attribute__((section("para_strings"), used)) = UNIT; \
535static const char g_sParaSubstitutionText##PARA_ID[] __attribute__((section("para_strings"), used)) = SUBSTITUTION; \
536static const char g_sParaDescription##PARA_ID[] __attribute__((section("para_strings"), used)) = DESCRIPTION \
537 PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE)); \
538PARA_HELP_TEXT_SECTION(PARA_ID, PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE))) \
539 \
540const Parameter g_tParameter##PARA_ID __attribute__((section("para_descriptor"))) = { \
541GROUP_ID, \
542PARA_ID, \
543ACCESS, \
544COUNT, \
545g_sParaName##PARA_ID, \
546g_sParaDescription##PARA_ID, \
547g_sParaUnit##PARA_ID, \
548(void*)&g_tParaData_##PARA_ID, \
549(ReadFunction*)PARA_CHECK_READ_FUNCTION(ON_READ, I8), \
550(WriteFunction*)PARA_CHECK_WRITE_FUNCTION(ON_WRITE, I8), \
551(RestoreDefaultFunction*)PARA_CHECK_DEFAULT_FUNCTION(SET_TO_DEFAULT, I8), \
552(STORE_LOCATION << 24) | ((uint32_t)TYPE_int8 << 28) | FLAGS, \
553g_sParaSubstitutionText##PARA_ID, \
554};
555
556
578#define ParameterSTR(VARIABLE_NAME, PARA_ID, GROUP_ID, NAME, UNIT, DESCRIPTION, HELP_EN, HELP_DE, SUBSTITUTION, COUNT, MAX_LENGTH, DEFAULT, \
579 ON_READ, ON_WRITE, SET_TO_DEFAULT, ACCESS, STORE_LOCATION, FLAGS) \
580 \
581ASSERT_PARA_NAME(NAME); \
582ASSERT_PARA_DESCRIPTION(DESCRIPTION); \
583ASSERT_PARA_HELP(HELP_EN); \
584ASSERT_PARA_HELP(HELP_DE); \
585 \
586static const ParaData_STR g_tParaData_##PARA_ID = { \
587PARA_CHECK_VARIABLE(VARIABLE_NAME, char), \
588MAX_LENGTH, \
589DEFAULT \
590}; \
591 \
592static const char g_sParaName##PARA_ID[] __attribute__((section("para_strings"), used)) = NAME; \
593static const char g_sParaUnit##PARA_ID[] __attribute__((section("para_strings"), used)) = UNIT; \
594static const char g_sParaSubstitutionText##PARA_ID[] __attribute__((section("para_strings"), used)) = SUBSTITUTION; \
595static const char g_sParaDescription##PARA_ID[] __attribute__((section("para_strings"), used)) = DESCRIPTION \
596 PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE)); \
597PARA_HELP_TEXT_SECTION(PARA_ID, PARA_HELP_TEXT_COMBINE(INCLUDE_HELP_EN("DOC_E " HELP_EN) INCLUDE_HELP_DE("DOC_D " HELP_DE))) \
598 \
599const Parameter g_tParameter##PARA_ID __attribute__((section("para_descriptor"))) = { \
600GROUP_ID, \
601PARA_ID, \
602ACCESS, \
603COUNT, \
604g_sParaName##PARA_ID, \
605g_sParaDescription##PARA_ID, \
606g_sParaUnit##PARA_ID, \
607(void*)&g_tParaData_##PARA_ID, \
608(ReadFunction*)PARA_CHECK_READ_FUNCTION(ON_READ, STR), \
609(WriteFunction*)PARA_CHECK_WRITE_FUNCTION(ON_WRITE, STR), \
610(RestoreDefaultFunction*)PARA_CHECK_DEFAULT_FUNCTION(SET_TO_DEFAULT, STR), \
611(STORE_LOCATION << 24) | ((uint32_t)TYPE_string << 28) | FLAGS, \
612g_sParaSubstitutionText##PARA_ID, \
613};
614
615
620#define Parameter(PARA_ID) \
621g_tParameter##PARA_ID
622
623
631#define ParameterWriteF32(PARA_ID, SUB_ID, DATA, ACCESS_SOURCE, ACCESS_LEVEL) \
632 g_tParameter##PARA_ID.OnWrite((void*)&g_tParameter##PARA_ID, PARA_REQUEST(SUB_ID, DATA, 4, 0, ACCESS_SOURCE, ACCESS_LEVEL))
633
634
642#define ParameterWriteU32(PARA_ID, SUB_ID, DATA, ACCESS_SOURCE, ACCESS_LEVEL) \
643 g_tParameter##PARA_ID.OnWrite((void*)&g_tParameter##PARA_ID, PARA_REQUEST(SUB_ID, DATA, 4, 0, ACCESS_SOURCE, ACCESS_LEVEL))
644
645
653#define ParameterWriteI32(PARA_ID, SUB_ID, DATA, ACCESS_SOURCE, ACCESS_LEVEL) \
654 g_tParameter##PARA_ID.OnWrite((void*)&g_tParameter##PARA_ID, PARA_REQUEST(SUB_ID, DATA, 4, 0, ACCESS_SOURCE, ACCESS_LEVEL))
655
656
664#define ParameterWriteU16(PARA_ID, SUB_ID, DATA, ACCESS_SOURCE, ACCESS_LEVEL) \
665 g_tParameter##PARA_ID.OnWrite((void*)&g_tParameter##PARA_ID, PARA_REQUEST(SUB_ID, DATA, 2, 0, ACCESS_SOURCE, ACCESS_LEVEL))
666
667
675#define ParameterWriteI16(PARA_ID, SUB_ID, DATA, ACCESS_SOURCE, ACCESS_LEVEL) \
676 g_tParameter##PARA_ID.OnWrite((void*)&g_tParameter##PARA_ID, PARA_REQUEST(SUB_ID, DATA, 2, 0, ACCESS_SOURCE, ACCESS_LEVEL))
677
678
686#define ParameterWriteU8(PARA_ID, SUB_ID, DATA, ACCESS_SOURCE, ACCESS_LEVEL) \
687 g_tParameter##PARA_ID.OnWrite((void*)&g_tParameter##PARA_ID, PARA_REQUEST(SUB_ID, DATA, 1, 0, ACCESS_SOURCE, ACCESS_LEVEL))
688
689
697#define ParameterWriteI8(PARA_ID, SUB_ID, DATA, ACCESS_SOURCE, ACCESS_LEVEL) \
698 g_tParameter##PARA_ID.OnWrite((void*)&g_tParameter##PARA_ID, PARA_REQUEST(SUB_ID, DATA, 1, 0, ACCESS_SOURCE, ACCESS_LEVEL))
699
700
707#define ParameterSetToDefaultF32(PARA_ID, SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL) \
708 g_tParameter##PARA_ID.SetToDefault((void*)&g_tParameter##PARA_ID, PARA_REQUEST_DEFAULT(SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL));
709
710
717#define ParameterSetToDefaultU32(PARA_ID, SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL) \
718 g_tParameter##PARA_ID.SetToDefault((void*)&g_tParameter##PARA_ID, PARA_REQUEST_DEFAULT(SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL));
719
720
727#define ParameterSetToDefaultI32(PARA_ID, SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL) \
728 g_tParameter##PARA_ID.SetToDefault((void*)&g_tParameter##PARA_ID, PARA_REQUEST_DEFAULT(SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL));
729
730
737#define ParameterSetToDefaultU16(PARA_ID, SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL) \
738 g_tParameter##PARA_ID.SetToDefault((void*)&g_tParameter##PARA_ID, PARA_REQUEST_DEFAULT(SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL));
739
740
747#define ParameterSetToDefaultI16(PARA_ID, SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL) \
748 g_tParameter##PARA_ID.SetToDefault((void*)&g_tParameter##PARA_ID, PARA_REQUEST_DEFAULT(SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL));
749
750
757#define ParameterSetToDefaultU8(PARA_ID, SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL) \
758 g_tParameter##PARA_ID.SetToDefault((void*)&g_tParameter##PARA_ID, PARA_REQUEST_DEFAULT(SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL));
759
760
767#define ParameterSetToDefaultI8(PARA_ID, SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL) \
768 g_tParameter##PARA_ID.SetToDefault((void*)&g_tParameter##PARA_ID, PARA_REQUEST_DEFAULT(SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL));
769
770
775#define GetStorageLocation(Parameter) \
776 (((Parameter)->Flags >> 24) & 0x0F)
777
778
783#define GetDataType(Parameter) \
784 ((Parameter)->Flags >> 28)
785
787typedef enum
788{
796
799{
809};
810
816typedef struct
817{
818 uint16_t ui16SubId;
819 void* pData;
820 int32_t i32MaxCount;
821 uint32_t ui32Offset;
825
833#define PARA_REQUEST(SUB_ID, DATA, MAX_COUNT, OFFSET, ACCESS_SOURCE, ACCESS_LEVEL) \
834 (&(ParameterRequest){ (SUB_ID), (void*)(DATA), (MAX_COUNT), (OFFSET), (ACCESS_SOURCE), (ACCESS_LEVEL) })
836#define PARA_REQUEST_DEFAULT(SUB_ID, ACCESS_SOURCE, ACCESS_LEVEL) PARA_REQUEST(SUB_ID, 0, 0, 0, ACCESS_SOURCE, ACCESS_LEVEL)
837
840{
841 VIEWER_READ = 0x0001,
842 VIEWER_WRITE = 0x0002,
843 USER_READ = 0x0004,
844 USER_WRITE = 0x0008,
849 PLC_READ = 0x0100,
850 PLC_WRITE = 0x0200,
856 SPECIAL3_WRITE = 0x8000
858
865#define PARA_HAS_READ_ACCESS(P, LEVEL) (((LEVEL) == 0) || (((P)->Access & (1u << (((LEVEL) - 1u) * 2u))) != 0))
872#define PARA_HAS_WRITE_ACCESS(P, LEVEL) (((LEVEL) == 0) || (((P)->Access & (1u << (((LEVEL) * 2u) - 1u))) != 0))
873
877{
880 NVRAM = 2,
885 SD = 7,
888
891{
895};
896
898typedef struct
899{
900 uint16_t GroupID;
901 uint16_t ParentGroupID;
902 const char* Name;
903}Group;
904
908{
909 FLAG_NONE = 0x00000000,
910 FLAG_SYSTEM = 0x00000001,
911 FLAG_HIDDEN = 0x00000002,
912 FLAG_SCOPEABLE = 0x00000004,
913 FLAG_VOLATILE = 0x00000008,
916#ifndef DEPRECATED
918#endif
919};
920
922/*------------------------------------------------------------------------------
923 Declares a parameter descriptor type and its callback types:
924 struct Parameter<SUFFIX>, ReadFunction<SUFFIX>, WriteFunction<SUFFIX>, RestoreDefaultFunction<SUFFIX>
925 DATA_TYPE is the type of the data element, THIS_TYPE the type of the first callback argument (ptThis).
926 Used for the generic Parameter (SUFFIX empty, DATA_TYPE void, THIS_TYPE void) and for the
927 typed views Parameter_<T> (THIS_TYPE Parameter_<T>).
928 All types share the same layout, because they are generated from this single definition.
929------------------------------------------------------------------------------*/
930#define PARA_DECLARE_PARAMETER_TYPE(SUFFIX, DATA_TYPE, THIS_TYPE) \
931typedef struct Parameter##SUFFIX Parameter##SUFFIX; \
932typedef int32_t ReadFunction##SUFFIX(THIS_TYPE* ptThis, const ParameterRequest* ptRequest); \
933typedef int32_t WriteFunction##SUFFIX(THIS_TYPE* ptThis, const ParameterRequest* ptRequest); \
934typedef int32_t RestoreDefaultFunction##SUFFIX(THIS_TYPE* ptThis, const ParameterRequest* ptRequest); \
935struct Parameter##SUFFIX \
936{ \
937 uint16_t GroupID; \
938 uint16_t ParaID; \
939 uint16_t Access; \
940 uint16_t SubIdCount; \
941 const char* Name; \
942 const char* Description; \
943 const char* Format; \
944 DATA_TYPE* Data; \
945 ReadFunction##SUFFIX* OnRead; \
946 WriteFunction##SUFFIX* OnWrite; \
947 RestoreDefaultFunction##SUFFIX* SetToDefault; \
948 uint32_t Flags; \
949 const char* SubstitutionalTexts; \
950}
952
974PARA_DECLARE_PARAMETER_TYPE(, void, void);
976
977
979typedef __PACKED_STRUCT
980{
981 uint16_t ParaID;
982 uint16_t SubID;
983 uint16_t Count;
985
986//PARA_Data.c
988typedef struct
989{
990 int8_t* Wert;
991 int8_t MinWert;
992 int8_t MaxWert;
993 int8_t DefaultWert;
995
997typedef struct
998{
999 uint8_t* Wert;
1000 uint8_t MinWert;
1001 uint8_t MaxWert;
1002 uint8_t DefaultWert;
1004
1006typedef struct
1007{
1008 int16_t* Wert;
1009 int16_t MinWert;
1010 int16_t MaxWert;
1011 int16_t DefaultWert;
1013
1015typedef struct
1016{
1017 uint16_t* Wert;
1018 uint16_t MinWert;
1019 uint16_t MaxWert;
1020 uint16_t DefaultWert;
1022
1024typedef struct
1025{
1026 int32_t* Wert;
1027 int32_t MinWert;
1028 int32_t MaxWert;
1029 int32_t DefaultWert;
1031
1033typedef struct
1034{
1035 uint32_t* Wert;
1036 uint32_t MinWert;
1037 uint32_t MaxWert;
1038 uint32_t DefaultWert;
1040
1042typedef struct
1043{
1044 int64_t* Wert;
1045 int64_t MinWert;
1046 int64_t MaxWert;
1047 int64_t DefaultWert;
1049
1051typedef struct
1052{
1053 uint64_t* Wert;
1054 uint64_t MinWert;
1055 uint64_t MaxWert;
1056 uint64_t DefaultWert;
1058
1060typedef struct
1061{
1062 float* Wert;
1063 float MinWert;
1064 float MaxWert;
1067
1069typedef struct
1070{
1071 double* Wert;
1072 double MinWert;
1073 double MaxWert;
1076
1078typedef struct
1079{
1080 char* Wert;
1081 int32_t MaxLength;
1084
1086/*------------------------------------------------------------------------------
1087 Typed parameter views.
1088 Parameter_<T> is generated by the same macro as Parameter (same layout), but the data
1089 pointer and the callbacks are typed. The standard functions (ReadFunction_STD_<T>, ...) take
1090 a Parameter_<T>*, so their function types differ per datatype. This allows the
1091 Parameter<T>() macros to reject callbacks of the wrong datatype at compile time.
1092------------------------------------------------------------------------------*/
1093#define PARA_DECLARE_TYPED_PARAMETER(T) PARA_DECLARE_PARAMETER_TYPE(_##T, ParaData_##T, Parameter_##T)
1094
1095PARA_DECLARE_TYPED_PARAMETER(I8);
1096PARA_DECLARE_TYPED_PARAMETER(U8);
1097PARA_DECLARE_TYPED_PARAMETER(I16);
1098PARA_DECLARE_TYPED_PARAMETER(U16);
1099PARA_DECLARE_TYPED_PARAMETER(I32);
1100PARA_DECLARE_TYPED_PARAMETER(U32);
1101PARA_DECLARE_TYPED_PARAMETER(I64);
1102PARA_DECLARE_TYPED_PARAMETER(U64);
1103PARA_DECLARE_TYPED_PARAMETER(F32);
1104PARA_DECLARE_TYPED_PARAMETER(F64);
1105PARA_DECLARE_TYPED_PARAMETER(STR);
1106
1107/* Datatype independent callbacks (e.g. WriteFunction_STD_Const) take a plain Parameter*. */
1108typedef int32_t ReadFunction_Generic(Parameter* ptThis, const ParameterRequest* ptRequest);
1109typedef int32_t WriteFunction_Generic(Parameter* ptThis, const ParameterRequest* ptRequest);
1110typedef int32_t RestoreDefaultFunction_Generic(Parameter* ptThis, const ParameterRequest* ptRequest);
1111
1112
1113/*------------------------------------------------------------------------------
1114 Compile-time check of the callbacks used in the Parameter<T>() macros.
1115 Accepted: the callback of the matching datatype (Parameter_<T>*) or a datatype
1116 independent callback (Parameter*), e.g. WriteFunction_STD_Const.
1117 Any other callback is a compile error, e.g. ReadFunction_STD_U32 in ParameterU16,
1118 a callback with a wrong/incomplete parameter list or a callback casted to ReadFunction*:
1119 "controlling expression type ... not compatible with any generic association type".
1120------------------------------------------------------------------------------*/
1121#if defined(__cplusplus) || defined(__CC_ARM) /* no _Generic in C++ and Arm Compiler 5 */
1122 #define PARA_CHECK_CALLBACK(FN, TYPED, GENERIC) (FN)
1123#else
1124 #define PARA_CHECK_CALLBACK(FN, TYPED, GENERIC) _Generic((FN), TYPED*: (FN), GENERIC*: (FN))
1125#endif
1126#define PARA_CHECK_READ_FUNCTION(FN, T) PARA_CHECK_CALLBACK(FN, ReadFunction_##T, ReadFunction_Generic)
1127#define PARA_CHECK_WRITE_FUNCTION(FN, T) PARA_CHECK_CALLBACK(FN, WriteFunction_##T, WriteFunction_Generic)
1128#define PARA_CHECK_DEFAULT_FUNCTION(FN, T) PARA_CHECK_CALLBACK(FN, RestoreDefaultFunction_##T, RestoreDefaultFunction_Generic)
1129
1130/*------------------------------------------------------------------------------
1131 Compile-time check of the parameter variable: must be a pointer to the datatype
1132 of the parameter (e.g. uint16_t* for ParameterU16). Also accepted: a volatile
1133 variable, a void* (explicit cast) and 0 (no variable, e.g. read-only by callback).
1134------------------------------------------------------------------------------*/
1135#if defined(__cplusplus) || defined(__CC_ARM) /* no _Generic in C++ and Arm Compiler 5 */
1136 #define PARA_CHECK_VARIABLE(VAR, TYPE) (VAR)
1137#else
1138 #define PARA_CHECK_VARIABLE(VAR, TYPE) _Generic((VAR), TYPE*: (VAR), volatile TYPE*: (TYPE*)(VAR), void*: (TYPE*)(VAR), int: (TYPE*)0)
1139#endif
1141//---------------------------------------------------------------------------------
1142// External Functions
1143//---------------------------------------------------------------------------------
1144
1145// PARA_Parameter.c
1146uint32_t GetParameterCount(void);
1147uint32_t GetGroupCount(void);
1148Parameter* GetParameter(uint32_t ParaID);
1149Group* GetGroup(uint32_t GroupID);
1150int32_t GetDataTypeSize(uint8_t Type);
1151uint32_t GetStringParameterLength(Parameter* p, uint16_t subID);
1152
1153//PARA_Stream.c
1154int32_t StreamReadParameterData_Value(Parameter_InfoHeader* ptInfo, uint8_t* pui8Destination, int32_t i32MaxCount, uint32_t ui32Offset, ParameterAccessSource tAccessSource, uint8_t ui8AccessLevel);
1156int32_t StreamWriteParameterData_Value(Parameter_InfoHeader* ptInfo, uint8_t* pui8Source, uint32_t ui32Offset, ParameterAccessSource tAccessSource, uint8_t ui8AccessLevel);
1157int32_t StreamWriteParameterData_Value2(Parameter* p, const ParameterRequest* ptRequest, uint16_t ui16Count);
1158int32_t StreamWriteStringParameter(Parameter* p, uint16_t ui16StartSubId, uint16_t ui16Count, uint8_t* pui8Destination, uint32_t* pui32MaxCount, ParameterAccessSource tAccessSource, uint8_t ui8AccessLevel);
1159int32_t StreamWriteStringParameter2(Parameter* p, uint16_t ui16StartSubId, uint16_t ui16Count, uint8_t* pui8Destination, uint32_t* pui32MaxCount, ParameterAccessSource tAccessSource, uint8_t ui8AccessLevel, uint32_t* pui32StrPos);
1160
1161//PARA_String.c
1162int32_t PARA_ValAsString(Parameter* p, int32_t SubId, char* dest, int32_t MaxLength, uint8_t AccessLevel);
1163int32_t PARA_ObjectToString(Parameter* p, object* data, char* dest, int32_t MaxLength);
1164int32_t PARA_ParseString(Parameter* p, int32_t SubId, char* input, uint8_t AccessLevel);
1165
1166//PARA_Data.c
1167ReadFunction_I8 ReadFunction_STD_I8;
1168ReadFunction_I16 ReadFunction_STD_I16;
1169ReadFunction_I32 ReadFunction_STD_I32;
1170ReadFunction_I64 ReadFunction_STD_I64;
1171ReadFunction_U8 ReadFunction_STD_U8;
1173ReadFunction_U16 ReadFunction_STD_U16;
1174ReadFunction_U32 ReadFunction_STD_U32;
1175ReadFunction_U64 ReadFunction_STD_U64;
1176ReadFunction_F32 ReadFunction_STD_F32;
1177ReadFunction_STR ReadFunction_STD_STR;
1178
1179WriteFunction_I8 WriteFunction_STD_I8;
1180WriteFunction_I16 WriteFunction_STD_I16;
1181WriteFunction_I32 WriteFunction_STD_I32;
1182WriteFunction_I64 WriteFunction_STD_I64;
1183WriteFunction_U8 WriteFunction_STD_U8;
1185WriteFunction_U16 WriteFunction_STD_U16;
1186WriteFunction_U32 WriteFunction_STD_U32;
1187WriteFunction_U64 WriteFunction_STD_U64;
1188WriteFunction_F32 WriteFunction_STD_F32;
1189WriteFunction_STR WriteFunction_STD_STR;
1190WriteFunction_Generic WriteFunction_STD_Const;
1191
1192RestoreDefaultFunction_I8 SetToDefaultFunction_STD_I8;
1193RestoreDefaultFunction_I16 SetToDefaultFunction_STD_I16;
1194RestoreDefaultFunction_I32 SetToDefaultFunction_STD_I32;
1195RestoreDefaultFunction_I64 SetToDefaultFunction_STD_I64;
1196RestoreDefaultFunction_U8 SetToDefaultFunction_STD_U8;
1197RestoreDefaultFunction_U8 SetToDefaultFunction_STD_U8_BitWise;
1198RestoreDefaultFunction_U16 SetToDefaultFunction_STD_U16;
1199RestoreDefaultFunction_U32 SetToDefaultFunction_STD_U32;
1200RestoreDefaultFunction_U64 SetToDefaultFunction_STD_U64;
1201RestoreDefaultFunction_F32 SetToDefaultFunction_STD_F32;
1202RestoreDefaultFunction_STR SetToDefaultFunction_STD_STR;
1203RestoreDefaultFunction_Generic SetToDefaultFunction_STD_Const;
1204
1205bool IsValidForRead(void* pvThis, const ParameterRequest* ptRequest);
1206bool IsValidForWrite(void* pvThis, const ParameterRequest* ptRequest);
1207bool IsValidForSetToDefault(void* pvThis, const ParameterRequest* ptRequest);
1208
1209#ifndef DEPRECATED
1212RestoreDefaultFunction_F32 SetToDefaultFunction_STD_I32Q16;
1213#endif
1214
1215void GetParaDataAsObject(Parameter* p, uint32_t data, object* ob, uint8_t AccessLevel);
1216void GetParaValueAsObject(Parameter* p, uint16_t SubId, object* ob, uint8_t AccessLevel);
1217float ObjToFloat32(object* ob);
1218
1219
1220//---------------------------------------------------------------------------------
1221// Externals
1222//---------------------------------------------------------------------------------
1224extern int32_t ANZAHL_PARAMETER;
1226extern const int32_t ANZAHL_GRUPPEN;
1227
1229extern Parameter* ParaListe;
1231extern const Group* GruppenListe[];
1233extern uint8_t g_ui8ActualAccessLevel;
1235extern uint8_t *g_pui8ActualAccessLevelPointer;
1239extern uint16_t g_ui16FlashModified;
1240
1241#endif
const ParameterRequest * ptRequest
Definition: PARA_Flash_STM32H5.c:1023
uint32_t ui32Offset
Definition: PARA_Flash_STM32H5.c:1081
WriteFunction_I32 WriteFunction_STD_I32
Definition: PARA_Lib.h:1181
int32_t StreamReadParameterData_Value(Parameter_InfoHeader *ptInfo, uint8_t *pui8Destination, int32_t i32MaxCount, uint32_t ui32Offset, ParameterAccessSource tAccessSource, uint8_t ui8AccessLevel)
Read Parameter-data into buffer (Variant 1) The Data of the selected parameter is read and stored int...
Definition: PARA_Stream.c:51
WriteFunction_F32 WriteFunction_STD_I32Q16
Definition: PARA_Lib.h:1211
ReadFunction_U64 ReadFunction_STD_U64
Definition: PARA_Lib.h:1175
int32_t ANZAHL_PARAMETER
Number of existent parameters. Must be defined in main program.
int32_t PARA_ObjectToString(Parameter *p, object *data, char *dest, int32_t MaxLength)
Parse Parameter-data out of an object.
Definition: PARA_String.c:182
RestoreDefaultFunction_F32 SetToDefaultFunction_STD_F32
Definition: PARA_Lib.h:1201
int32_t PARA_ValAsString(Parameter *p, int32_t SubId, char *dest, int32_t MaxLength, uint8_t AccessLevel)
Output the parameter value as formatted string.
Definition: PARA_String.c:101
Parameter * ParaListe
List of all existent parameters in device. The list is filled by the linker automatically.
void GetParaDataAsObject(Parameter *p, uint32_t data, object *ob, uint8_t AccessLevel)
Get Parameter-data as object type.
Definition: PARA_Data.c:1835
uint32_t GetStringParameterLength(Parameter *p, uint16_t subID)
Get the length of the string data of the given parameter.
Definition: PARA_Parameter.c:146
RestoreDefaultFunction_U8 SetToDefaultFunction_STD_U8
Definition: PARA_Lib.h:1196
RestoreDefaultFunction_I16 SetToDefaultFunction_STD_I16
Definition: PARA_Lib.h:1193
ReadFunction_U32 ReadFunction_STD_U32
Definition: PARA_Lib.h:1174
const int32_t ANZAHL_GRUPPEN
Number of existent parameter-groups. Must be defined in main program.
RestoreDefaultFunction_U64 SetToDefaultFunction_STD_U64
Definition: PARA_Lib.h:1200
GET_VALUES
List of values, that can be retrived with the GetParaDataAsObject function.
Definition: PARA_Lib.h:891
@ GET_DEFAULT
Definition: PARA_Lib.h:894
@ GET_MAX
Definition: PARA_Lib.h:893
@ GET_MIN
Definition: PARA_Lib.h:892
Parameter * GetParameter(uint32_t ParaID)
Get the parameter of the given ID.
Definition: PARA_Parameter.c:64
STORE_LOCATION
List of storage locations for parameters.
Definition: PARA_Lib.h:877
@ EXT_FLASH
Definition: PARA_Lib.h:882
@ PARA_FLASH
Definition: PARA_Lib.h:879
@ EEPROM
Definition: PARA_Lib.h:881
@ SD_BASE
Definition: PARA_Lib.h:883
@ SD
Definition: PARA_Lib.h:885
@ NVRAM
Definition: PARA_Lib.h:880
@ FACTORY_EEPROM
Definition: PARA_Lib.h:886
@ FACTORY_FLASH
Definition: PARA_Lib.h:884
@ NOT_STORED
Definition: PARA_Lib.h:878
WriteFunction_U16 WriteFunction_STD_U16
Definition: PARA_Lib.h:1185
ACCESS_LEVEL
List of access-levels for parameters. Every parameter can limit read and write access according to th...
Definition: PARA_Lib.h:799
@ ACCESS_NONE
Definition: PARA_Lib.h:800
@ ACCESS_SPECIAL1
Definition: PARA_Lib.h:806
@ ACCESS_VIEWER
Definition: PARA_Lib.h:801
@ ACCESS_USER
Definition: PARA_Lib.h:802
@ ACCESS_SPECIAL3
Definition: PARA_Lib.h:808
@ ACCESS_PLC
Definition: PARA_Lib.h:805
@ ACCESS_SPECIAL2
Definition: PARA_Lib.h:807
@ ACCESS_DEVELOPER
Definition: PARA_Lib.h:804
@ ACCESS_PROFESSIONAL
Definition: PARA_Lib.h:803
bool IsValidForSetToDefault(void *pvThis, const ParameterRequest *ptRequest)
Check if the actual access-right is sufficient to set to default the parameter.
Definition: PARA_Data.c:849
float ObjToFloat32(object *ob)
Convertrs a given object to float.
Definition: PARA_Data.c:1971
ReadFunction_I16 ReadFunction_STD_I16
Definition: PARA_Lib.h:1168
WriteFunction_Generic WriteFunction_STD_Const
Definition: PARA_Lib.h:1190
WriteFunction_F32 WriteFunction_STD_F32
Definition: PARA_Lib.h:1188
bool IsValidForWrite(void *pvThis, const ParameterRequest *ptRequest)
Check if the actual access-right is sufficient to write the parameter.
Definition: PARA_Data.c:826
int32_t StreamWriteStringParameter(Parameter *p, uint16_t ui16StartSubId, uint16_t ui16Count, uint8_t *pui8Destination, uint32_t *pui32MaxCount, ParameterAccessSource tAccessSource, uint8_t ui8AccessLevel)
Read String Parameter-data into buffer (Variant 1) The Data of the selected string-parameter is read ...
Definition: PARA_Stream.c:226
int32_t StreamReadParameterData_Value2(Parameter *p, const ParameterRequest *ptRequest)
Read Parameter-data into buffer (Variant 2) The Data of the selected parameter is read and stored int...
Definition: PARA_Stream.c:131
uint32_t GetParameterCount(void)
Get the number of the existent parameters.
Definition: PARA_Parameter.c:41
int32_t StreamWriteStringParameter2(Parameter *p, uint16_t ui16StartSubId, uint16_t ui16Count, uint8_t *pui8Destination, uint32_t *pui32MaxCount, ParameterAccessSource tAccessSource, uint8_t ui8AccessLevel, uint32_t *pui32StrPos)
Read String Parameter-data into buffer (Variant 2) The Data of the selected string-parameter is read ...
Definition: PARA_Stream.c:289
WriteFunction_I8 WriteFunction_STD_I8
Definition: PARA_Lib.h:1179
WriteFunction_I16 WriteFunction_STD_I16
Definition: PARA_Lib.h:1180
int32_t PARA_ParseString(Parameter *p, int32_t SubId, char *input, uint8_t AccessLevel)
Parse Parameter-data out of an input string.
Definition: PARA_String.c:41
uint32_t GetGroupCount(void)
Get the number of the existent parameter-groups.
Definition: PARA_Parameter.c:51
WriteFunction_I64 WriteFunction_STD_I64
Definition: PARA_Lib.h:1182
RestoreDefaultFunction_I64 SetToDefaultFunction_STD_I64
Definition: PARA_Lib.h:1195
WriteFunction_U32 WriteFunction_STD_U32
Definition: PARA_Lib.h:1186
ReadFunction_I64 ReadFunction_STD_I64
Definition: PARA_Lib.h:1170
RestoreDefaultFunction_I32 SetToDefaultFunction_STD_I32
Definition: PARA_Lib.h:1194
ReadFunction_U8 ReadFunction_STD_U8_BitWise
Definition: PARA_Lib.h:1172
ReadFunction_F32 ReadFunction_STD_I32Q16
Definition: PARA_Lib.h:1210
ReadFunction_I8 ReadFunction_STD_I8
Definition: PARA_Lib.h:1167
ReadFunction_F32 ReadFunction_STD_F32
Definition: PARA_Lib.h:1176
RestoreDefaultFunction_U32 SetToDefaultFunction_STD_U32
Definition: PARA_Lib.h:1199
RestoreDefaultFunction_U16 SetToDefaultFunction_STD_U16
Definition: PARA_Lib.h:1198
RestoreDefaultFunction_Generic SetToDefaultFunction_STD_Const
Definition: PARA_Lib.h:1203
bool IsValidForRead(void *pvThis, const ParameterRequest *ptRequest)
Check if the actual access-right is sufficient to read the parameter.
Definition: PARA_Data.c:802
RestoreDefaultFunction_I8 SetToDefaultFunction_STD_I8
Definition: PARA_Lib.h:1192
ParameterAccessSource
List of sources for parameter-access. Every parameter can limit access to these sources....
Definition: PARA_Lib.h:788
@ PARA_ACCESS_FROM_CAN
Definition: PARA_Lib.h:794
@ PARA_ACCESS_FROM_USB
Definition: PARA_Lib.h:791
@ PARA_ACCESS_FROM_HESP
Definition: PARA_Lib.h:793
@ PARA_ACCESS_FROM_ETHERNET
Definition: PARA_Lib.h:792
@ PARA_ACCESS_FROM_GUEST
Definition: PARA_Lib.h:790
@ PARA_ACCESS_FROM_CODE
Definition: PARA_Lib.h:789
ReadFunction_STR ReadFunction_STD_STR
Definition: PARA_Lib.h:1177
int32_t StreamWriteParameterData_Value(Parameter_InfoHeader *ptInfo, uint8_t *pui8Source, uint32_t ui32Offset, ParameterAccessSource tAccessSource, uint8_t ui8AccessLevel)
Write Parameter-data from buffer (Variant 1) The Data of the given buffer is written to parameter.
Definition: PARA_Stream.c:106
WriteFunction_STR WriteFunction_STD_STR
Definition: PARA_Lib.h:1189
RestoreDefaultFunction_U8 SetToDefaultFunction_STD_U8_BitWise
Definition: PARA_Lib.h:1197
WriteFunction_U8 WriteFunction_STD_U8
Definition: PARA_Lib.h:1183
uint16_t g_ui16FlashModified
Flag to show if the remanent storage is modified.
Definition: PARA_Stream.c:32
RestoreDefaultFunction_STR SetToDefaultFunction_STD_STR
Definition: PARA_Lib.h:1202
uint8_t g_ui8ActualAccessLevel
Actual access-level (see Access restrictions).
Definition: PARA_ParaAccess.c:38
ReadFunction_U8 ReadFunction_STD_U8
Definition: PARA_Lib.h:1171
uint8_t * g_pui8ActualAccessLevelPointer
Pointer to the Actual access-level (see Access restrictions).
Definition: PARA_ParaAccess.c:39
ReadFunction_I32 ReadFunction_STD_I32
Definition: PARA_Lib.h:1169
const Group * GruppenListe[]
List of all existent parameter-groups in device. The list is filled by the paraInit function.
WriteFunction_U8 WriteFunction_STD_U8_BitWise
Definition: PARA_Lib.h:1184
int32_t StreamWriteParameterData_Value2(Parameter *p, const ParameterRequest *ptRequest, uint16_t ui16Count)
Write Parameter-data from buffer (Variant 2) The Data of the given buffer is written to parameter.
Definition: PARA_Stream.c:173
WriteFunction_U64 WriteFunction_STD_U64
Definition: PARA_Lib.h:1187
int32_t GetDataTypeSize(uint8_t Type)
Calculate the Size of a parameter-type.
Definition: PARA_Parameter.c:93
Group * GetGroup(uint32_t GroupID)
Get the parameter-Group of the given ID.
Definition: PARA_Parameter.c:79
RestoreDefaultFunction_F32 SetToDefaultFunction_STD_I32Q16
Definition: PARA_Lib.h:1212
ReadFunction_U16 ReadFunction_STD_U16
Definition: PARA_Lib.h:1173
ZUGRIFF
List of access restrictions for parameters. Every parameter can limit read and write access according...
Definition: PARA_Lib.h:840
@ SPECIAL2_READ
Definition: PARA_Lib.h:853
@ PROFESSIONAL_WRITE
Definition: PARA_Lib.h:846
@ PLC_WRITE
Definition: PARA_Lib.h:850
@ SPECIAL1_READ
Definition: PARA_Lib.h:851
@ VIEWER_WRITE
Definition: PARA_Lib.h:842
@ SPECIAL1_WRITE
Definition: PARA_Lib.h:852
@ PROFESSIONAL_READ
Definition: PARA_Lib.h:845
@ USER_READ
Definition: PARA_Lib.h:843
@ DEVELOPER_WRITE
Definition: PARA_Lib.h:848
@ USER_WRITE
Definition: PARA_Lib.h:844
@ SPECIAL3_WRITE
Definition: PARA_Lib.h:856
@ PLC_READ
Definition: PARA_Lib.h:849
@ SPECIAL3_READ
Definition: PARA_Lib.h:855
@ VIEWER_READ
Definition: PARA_Lib.h:841
@ SPECIAL2_WRITE
Definition: PARA_Lib.h:854
@ DEVELOPER_READ
Definition: PARA_Lib.h:847
FLAGS
List of Flags, which can be set for every single parameter First 8 Bits cannot be used,...
Definition: PARA_Lib.h:908
@ FLAG_SCOPEABLE
Parameter can be scoped.
Definition: PARA_Lib.h:912
@ FLAG_HIDDEN
Parameter is not shown by default. Can be activated with option in Parametereditor.
Definition: PARA_Lib.h:911
@ FLAG_VOLATILE
Value is modified by uC, must be polled regularly.
Definition: PARA_Lib.h:913
@ FLAG_NONE
No special flags.
Definition: PARA_Lib.h:909
@ FLAG_WRITE_APPROVE_REQUEST
Definition: PARA_Lib.h:917
@ FLAG_SYSTEM
Parameter is added to Parametereditor and only necessary for parametereditor to work properly.
Definition: PARA_Lib.h:910
@ FLAG_SPECIAL_WRITE_ENABLE
The value can only be written in case a special option in the Parameter editor is activated.
Definition: PARA_Lib.h:915
@ FLAG_NO_FILE_OVERWRITE
Value is not written on write from Parameterfile Operation. It can only modified manually by user.
Definition: PARA_Lib.h:914
void GetParaValueAsObject(Parameter *p, uint16_t SubId, object *ob, uint8_t AccessLevel)
Get Parameter-value as object type.
Definition: PARA_Data.c:1921
Definition of variable limits and types.
Parameter-group.
Definition: PARA_Lib.h:899
const char * Name
Name of the group.
Definition: PARA_Lib.h:902
uint16_t GroupID
Identifier of the group. Must be unique.
Definition: PARA_Lib.h:900
uint16_t ParentGroupID
Identifier of the parent group. if the group is shown in the root, the parent id is 0.
Definition: PARA_Lib.h:901
Parameter-data structure for float (32-Bit)
Definition: PARA_Lib.h:1061
float DefaultWert
Factory default value.
Definition: PARA_Lib.h:1065
float MaxWert
Maximum value.
Definition: PARA_Lib.h:1064
float * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1062
float MinWert
Minimum value.
Definition: PARA_Lib.h:1063
Parameter-data structure for double (64-Bit)
Definition: PARA_Lib.h:1070
double MinWert
Minimum value.
Definition: PARA_Lib.h:1072
double * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1071
double DefaultWert
Factory default value.
Definition: PARA_Lib.h:1074
double MaxWert
Maximum value.
Definition: PARA_Lib.h:1073
Parameter-data structure for signed word (16-Bit)
Definition: PARA_Lib.h:1007
int16_t MaxWert
Maximum value.
Definition: PARA_Lib.h:1010
int16_t MinWert
Minimum value.
Definition: PARA_Lib.h:1009
int16_t * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1008
int16_t DefaultWert
Factory default value.
Definition: PARA_Lib.h:1011
Parameter-data structure for signed int (32-Bit)
Definition: PARA_Lib.h:1025
int32_t * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1026
int32_t MaxWert
Maximum value.
Definition: PARA_Lib.h:1028
int32_t DefaultWert
Factory default value.
Definition: PARA_Lib.h:1029
int32_t MinWert
Minimum value.
Definition: PARA_Lib.h:1027
Parameter-data structure for signed long (64-Bit)
Definition: PARA_Lib.h:1043
int64_t MinWert
Minimum value.
Definition: PARA_Lib.h:1045
int64_t * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1044
int64_t MaxWert
Maximum value.
Definition: PARA_Lib.h:1046
int64_t DefaultWert
Factory default value.
Definition: PARA_Lib.h:1047
Parameter-data structure for signed char (8-Bit)
Definition: PARA_Lib.h:989
int8_t MaxWert
Maximum value.
Definition: PARA_Lib.h:992
int8_t * Wert
Pointer to Data value.
Definition: PARA_Lib.h:990
int8_t MinWert
Minimum value.
Definition: PARA_Lib.h:991
int8_t DefaultWert
Factory default value.
Definition: PARA_Lib.h:993
Parameter-data structure for string.
Definition: PARA_Lib.h:1079
char * DefaultWert
Factory default value.
Definition: PARA_Lib.h:1082
int32_t MaxLength
Maximum string length.
Definition: PARA_Lib.h:1081
char * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1080
Parameter-data structure for unsigned word (16-Bit)
Definition: PARA_Lib.h:1016
uint16_t * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1017
uint16_t DefaultWert
Factory default value.
Definition: PARA_Lib.h:1020
uint16_t MaxWert
Maximum value.
Definition: PARA_Lib.h:1019
uint16_t MinWert
Minimum value.
Definition: PARA_Lib.h:1018
Parameter-data structure for unsigned int (32-Bit)
Definition: PARA_Lib.h:1034
uint32_t * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1035
uint32_t DefaultWert
Factory default value.
Definition: PARA_Lib.h:1038
uint32_t MaxWert
Maximum value.
Definition: PARA_Lib.h:1037
uint32_t MinWert
Minimum value.
Definition: PARA_Lib.h:1036
Parameter-data structure for unsigned long (64-Bit)
Definition: PARA_Lib.h:1052
uint64_t MaxWert
Maximum value.
Definition: PARA_Lib.h:1055
uint64_t DefaultWert
Factory default value.
Definition: PARA_Lib.h:1056
uint64_t MinWert
Minimum value.
Definition: PARA_Lib.h:1054
uint64_t * Wert
Pointer to Data value.
Definition: PARA_Lib.h:1053
Parameter-data structure for unsigned char (8-Bit)
Definition: PARA_Lib.h:998
uint8_t DefaultWert
Factory default value.
Definition: PARA_Lib.h:1002
uint8_t MinWert
Minimum value.
Definition: PARA_Lib.h:1000
uint8_t * Wert
Pointer to Data value.
Definition: PARA_Lib.h:999
uint8_t MaxWert
Maximum value.
Definition: PARA_Lib.h:1001
Information structure to identify one parameter in some functions.
Definition: PARA_Lib.h:980
uint16_t SubID
Identifier of the filed entry in case of a field structure.
Definition: PARA_Lib.h:982
uint16_t ParaID
Identifier of the parameter.
Definition: PARA_Lib.h:981
uint16_t Count
Number of sub-ids to process.
Definition: PARA_Lib.h:983
Parameter definition (datatype independent).
Request information passed to the callbacks OnRead, OnWrite and SetToDefault of a parameter and to Is...
Definition: PARA_Lib.h:817
ParameterAccessSource tAccessSource
Source of access (see Access restrictions).
Definition: PARA_Lib.h:822
uint32_t ui32Offset
Character offset for strings, always 0 for all other datatypes.
Definition: PARA_Lib.h:821
uint8_t ui8AccessLevel
Actual AccessLevel (see Access restrictions).
Definition: PARA_Lib.h:823
void * pData
Read: output buffer for the value. Write: input buffer with the new value.
Definition: PARA_Lib.h:819
int32_t i32MaxCount
Buffer size in bytes.
Definition: PARA_Lib.h:820
uint16_t ui16SubId
SubID to process.
Definition: PARA_Lib.h:818