My Project
Main Page
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
default_ICD.c
Go to the documentation of this file.
1
/*
2
* ICD.c
3
*
4
* Created on: 25/05/2012
5
* Author: ccortiz
6
*/
7
8
#include "
default_ICD.h
"
9
10
#if _ALLOW_MALLOC_ == 0
11
/* Reserve maximum amount of memory allowed for ICDs. */
12
struct
c_DEFAULT_ICD_Privates
ICD_Instances[
_MAX_ICD_INSTANCES_
];
13
#else
14
#include <stdlib.h>
15
#endif
16
17
static
int
searchMsg
(
int
ICD_Descriptor,
byte_ptr
buffer,
unsigned
int
length);
18
static
void
setICDEndianness
(
int
ICD_Descriptor,
enum
endianness
endianType
);
19
20
c_DEFAULT_ICD_Privates_Ptr
ICD_Objs
[
_MAX_ICD_INSTANCES_
];
21
unsigned
int
nObjs
=0;
22
23
int
new_Default_ICD
(
void
){
24
25
static
boolean
firstInstance =
_FALSE_
;
26
c_DEFAULT_ICD_Privates_Ptr
newObj;
27
28
if
(firstInstance==
_FALSE_
){
29
uint16
i=0;
30
firstInstance =
_TRUE_
;
31
32
for
(i=0; i<
_MAX_ICD_INSTANCES_
; i++){
33
ICD_Objs[i] = 0;
34
}
35
}
36
37
38
if
(
nObjs
>
_MAX_ICD_INSTANCES_
-1){
39
/* No more instances allowed. */
40
return
-1;
41
}
42
43
44
45
#if _ALLOW_MALLOC_==0
46
newObj =&ICD_Instances[
nObjs
];
47
#else
48
newObj = (
c_DEFAULT_ICD_Privates_Ptr
)malloc(
sizeof
(
struct
c_DEFAULT_ICD_Privates
));
49
#endif
50
51
if
(newObj==0){
52
return
-1;
53
}
54
else
{
55
/* Registrar en el array de objetos. */
56
ICD_Objs[
nObjs
] = newObj;
57
58
/* Initializers. */
59
initialize_Mensaje1
(
nObjs
, &
Default_ICD
.
mensaje1
, &(newObj->
mensaje1_Privates
) );
60
initialize_Mensaje2
(
nObjs
, &
Default_ICD
.
mensaje2
, &(newObj->
mensaje2_Privates
) );
61
initialize_Mensaje3
(
nObjs
, &
Default_ICD
.
mensaje3
, &(newObj->
mensaje3_Privates
) );
62
63
Default_ICD
.
setEndianness
=
setICDEndianness
;
64
Default_ICD
.
search
=
searchMsg
;
65
}
66
67
nObjs
++;
68
69
return
nObjs
-1;
70
}
71
72
void
setICDEndianness
(
int
ICD_Descriptor,
enum
endianness
endianType
){
73
74
Default_ICD
.
mensaje1
.
set_Endianness
(ICD_Descriptor, endianType);
75
Default_ICD
.
mensaje2
.
set_Endianness
(ICD_Descriptor, endianType);
76
Default_ICD
.
mensaje3
.
set_Endianness
(ICD_Descriptor, endianType);
77
78
}
79
80
int
searchMsg
(
int
ICD_Descriptor,
byte_ptr
buffer,
unsigned
int
length){
81
if
(
Default_ICD
.
mensaje1
.
deserialize
(ICD_Descriptor, buffer, length,
_FALSE_
)==
_DESERIALIZE_OK_
){
return
_MENSAJE1_
; }
82
if
(
Default_ICD
.
mensaje2
.
deserialize
(ICD_Descriptor, buffer, length,
_FALSE_
)==
_DESERIALIZE_OK_
){
return
_MENSAJE2_
; }
83
if
(
Default_ICD
.
mensaje3
.
deserialize
(ICD_Descriptor, buffer, length,
_FALSE_
)==
_DESERIALIZE_OK_
){
return
_MENSAJE3_
; }
84
return
-1;
85
}
86
Generated on Fri Jun 8 2012 11:51:37 for My Project by
1.8.1