author | Mario de Sousa <msousa@fe.up.pt> |
Thu, 19 Dec 2013 19:38:29 +0000 | |
changeset 852 | efb44e892582 |
parent 818 | 2a3f34967cae |
child 900 | 1e749c7b70f8 |
permissions | -rwxr-xr-x |
137
9ceda59abd27
Re-organized types headers, to ease debug code generation
etisserant
parents:
59
diff
changeset
|
1 |
#ifndef IEC_TYPES_H |
9ceda59abd27
Re-organized types headers, to ease debug code generation
etisserant
parents:
59
diff
changeset
|
2 |
#define IEC_TYPES_H |
9ceda59abd27
Re-organized types headers, to ease debug code generation
etisserant
parents:
59
diff
changeset
|
3 |
|
59
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
4 |
#include <limits.h> |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
5 |
#include <float.h> |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
6 |
#include <stdint.h> |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
7 |
|
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
8 |
/*********************/ |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
9 |
/* IEC Types defs */ |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
10 |
/*********************/ |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
11 |
|
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
12 |
typedef uint8_t IEC_BOOL; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
13 |
|
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
14 |
typedef int8_t IEC_SINT; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
15 |
typedef int16_t IEC_INT; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
16 |
typedef int32_t IEC_DINT; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
17 |
typedef int64_t IEC_LINT; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
18 |
|
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
19 |
typedef uint8_t IEC_USINT; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
20 |
typedef uint16_t IEC_UINT; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
21 |
typedef uint32_t IEC_UDINT; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
22 |
typedef uint64_t IEC_ULINT; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
23 |
|
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
24 |
typedef uint8_t IEC_BYTE; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
25 |
typedef uint16_t IEC_WORD; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
26 |
typedef uint32_t IEC_DWORD; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
27 |
typedef uint64_t IEC_LWORD; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
28 |
|
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
29 |
typedef float IEC_REAL; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
30 |
typedef double IEC_LREAL; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
31 |
|
254 | 32 |
typedef struct { |
59
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
33 |
long int tv_sec; /* Seconds. */ |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
34 |
long int tv_nsec; /* Nanoseconds. */ |
742 | 35 |
} /* __attribute__((packed)) */ IEC_TIMESPEC; /* packed is gcc specific! */ |
59
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
36 |
|
254 | 37 |
typedef IEC_TIMESPEC IEC_TIME; |
38 |
typedef IEC_TIMESPEC IEC_DATE; |
|
39 |
typedef IEC_TIMESPEC IEC_DT; |
|
40 |
typedef IEC_TIMESPEC IEC_TOD; |
|
59
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
41 |
|
161
a27957e13d42
STRING max size and length type can now be overloaded (define STR_MAX_LEN and STR_LEN_TYPE before including iec_types.h)
etisserant
parents:
137
diff
changeset
|
42 |
#ifndef STR_MAX_LEN |
170 | 43 |
#define STR_MAX_LEN 126 |
161
a27957e13d42
STRING max size and length type can now be overloaded (define STR_MAX_LEN and STR_LEN_TYPE before including iec_types.h)
etisserant
parents:
137
diff
changeset
|
44 |
#endif |
a27957e13d42
STRING max size and length type can now be overloaded (define STR_MAX_LEN and STR_LEN_TYPE before including iec_types.h)
etisserant
parents:
137
diff
changeset
|
45 |
|
a27957e13d42
STRING max size and length type can now be overloaded (define STR_MAX_LEN and STR_LEN_TYPE before including iec_types.h)
etisserant
parents:
137
diff
changeset
|
46 |
#ifndef STR_LEN_TYPE |
163 | 47 |
#define STR_LEN_TYPE int8_t |
161
a27957e13d42
STRING max size and length type can now be overloaded (define STR_MAX_LEN and STR_LEN_TYPE before including iec_types.h)
etisserant
parents:
137
diff
changeset
|
48 |
#endif |
a27957e13d42
STRING max size and length type can now be overloaded (define STR_MAX_LEN and STR_LEN_TYPE before including iec_types.h)
etisserant
parents:
137
diff
changeset
|
49 |
|
818
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
50 |
#define __INIT_REAL 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
51 |
#define __INIT_LREAL 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
52 |
#define __INIT_SINT 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
53 |
#define __INIT_INT 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
54 |
#define __INIT_DINT 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
55 |
#define __INIT_LINT 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
56 |
#define __INIT_USINT 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
57 |
#define __INIT_UINT 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
58 |
#define __INIT_UDINT 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
59 |
#define __INIT_ULINT 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
60 |
#define __INIT_TIME (TIME){0,0} |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
61 |
#define __INIT_BOOL 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
62 |
#define __INIT_BYTE 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
63 |
#define __INIT_WORD 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
64 |
#define __INIT_DWORD 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
65 |
#define __INIT_LWORD 0 |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
66 |
#define __INIT_STRING (STRING){0,""} |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
67 |
//#define __INIT_WSTRING |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
68 |
#define __INIT_DATE (DATE){0,0} |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
69 |
#define __INIT_TOD (TOD){0,0} |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
70 |
#define __INIT_DT (DT){0,0} |
2a3f34967cae
Moved __INIT_* defines within type definition headers files
Edouard Tisserant
parents:
742
diff
changeset
|
71 |
|
161
a27957e13d42
STRING max size and length type can now be overloaded (define STR_MAX_LEN and STR_LEN_TYPE before including iec_types.h)
etisserant
parents:
137
diff
changeset
|
72 |
typedef STR_LEN_TYPE __strlen_t; |
59
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
73 |
typedef struct { |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
74 |
__strlen_t len; |
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
75 |
uint8_t body[STR_MAX_LEN]; |
742 | 76 |
} /* __attribute__((packed)) */ IEC_STRING; /* packed is gcc specific! */ |
59
37ba6f9e51e2
Splitted type declaration out of iec std lib, to avoid DWORD, BOOL, TIME ,... clash with windows.h
etisserant
parents:
diff
changeset
|
77 |
|
137
9ceda59abd27
Re-organized types headers, to ease debug code generation
etisserant
parents:
59
diff
changeset
|
78 |
#endif /*IEC_TYPES_H*/ |