UniSaSA  1.0
C Gateway
connector.h
Go to the documentation of this file.
1 
5 #ifndef _UNISASA_CONNECTOR_H_
6 #define _UNISASA_CONNECTOR_H_
7 
8 #include "unisasa_types.h"
9 #include "configuration.h"
10 
11 
12 //--------------------------------------------------------------------
13 //Sensor
14 
15 typedef union IDSensor_t {
16  unsigned int integer;
17  unsigned char byte[MAX_BYTES_ID_SENSOR];
18 } IDSensor_t;
19 
20 typedef union sensorType_t {
21  unsigned int integer;
22  unsigned char byte[SIZE_TYPE_SENSOR];
23 } sensorType_t;
24 
26 typedef struct sensor_t {
27  IDSensor_t ID;
28  sensorType_t typeSensor; // 2 byte
29  unsigned char sizeOutput; // 1 byte
30  unsigned char typeOutput; // 1 byte
31 } sensor_t;
32 
34 sensor_t createSensor(unsigned int ID,
35  unsigned int typeSensor,
36  unsigned char sizeOutput,
37  unsigned char typeOutput);
38 
39 
40 //--------------------------------------------------------------------
41 // Actuator
42 
43 typedef union IDActuator_t {
44  unsigned int integer;
45  unsigned char byte[MAX_BYTES_ID_ACTUATOR];
46 } IDActuator_t;
47 
48 typedef union actuatorType_t {
49  unsigned int integer;
50  unsigned char byte[SIZE_TYPE_ACTUATOR];
52 
54 typedef struct actuator_t {
55  IDActuator_t ID;
56  actuatorType_t typeActuator; // 2 byte
57  unsigned char sizeInput; // 1 byte
58  unsigned char typeInput; // 1 byte
59 } actuator_t;
60 
62 actuator_t createActuator(unsigned int ID,
63  unsigned int typeActuator,
64  unsigned char sizeInput,
65  unsigned char typeInput);
66 
67 //-------------------------------------------------------------------
68 //Connector
69 
70 typedef union discoveredAddress_t {
71  unsigned int integer;
72  unsigned char byte[MAX_BYTES_DEV_ADDRESS];
74 
75 typedef struct discoveredDevice_t {
76  discoveredAddress_t address;
77  unsigned char sizeIODevice;
78  unsigned char sizeIDSensor;
79  unsigned int numSensors;
80  sensor_t *sensors;
81  unsigned char sizeIDActuator;
82  unsigned int numActuators;
83  actuator_t *actuators;
85 
86 
88 typedef unsigned int (*discoveryFunc) (discoveredDevice_t* devices);
90 typedef int (*checkDeviceFunc) (unsigned char* addr);
92 typedef void(*msgToDeviceFunc) (unsigned char* addr, unsigned char sizeData,unsigned char* data);
94 typedef void (*msgAndAnswerToDeviceFunc) (unsigned char* addr, unsigned char sizeReqAns, unsigned char* request, unsigned char* answer);
95 
97 typedef void (*getSensorValueFunc) (unsigned char* addr, unsigned char sizeIDSen, unsigned char* IDSen, unsigned char sizeValue ,unsigned char* value);
99 typedef void (*setActuatorValueFunc) (unsigned char* addr, unsigned char sizeIDAct,unsigned char* IDAct, unsigned char sizeValue,unsigned char* value);
100 
101 
103 typedef struct connectorInterface_t {
104  char* name;
105  unsigned int sizeAddress;
106  discoveryFunc discovery;
107  checkDeviceFunc checkDevice;
108  msgToDeviceFunc msgToDevice;
109  msgAndAnswerToDeviceFunc msgAndAnswerToDevice;
110  getSensorValueFunc getSensorValue;
111  setActuatorValueFunc setActuatorValue;
113 
114 //-------------------------------------------------------------------
115 // Device
116 
117 typedef union IDDevice_t {
118  unsigned int integer;
119  unsigned char byte[MAX_BYTES_ID_DEVICE];
120 } IDDevice_t;
121 
122 typedef union deviceAddress_t {
123  unsigned int integer;
124  unsigned char byte[MAX_BYTES_DEV_ADDRESS];
126 
127 typedef union numSensors_t {
128  unsigned int integer;
129  unsigned char byte [MAX_BYTES_NUM_SENSORS];
130 } numSensors_t;
131 
132 typedef union numActuators_t {
133  unsigned int integer;
134  unsigned char byte[MAX_BYTES_NUM_ACTUATORS];
136 
138 typedef struct device_t {
139  IDDevice_t ID;
140  connectorInterface_t connector;
141  deviceAddress_t address;
142  unsigned char sizeIO;
143  unsigned char sizeIDSensor;
144  numSensors_t numSensors;
145  sensor_t *sensors;
146  int *indexSensors; // *
147  unsigned char sizeIDActuator;
148  numActuators_t numActuators;
149  actuator_t *actuators;
150  int *indexActuators; // **
151 } device_t;
152 
153 // *
154 // if indexSensors[5] = 1 then
155 // sensors[1] = sensor.ID.integer = 5
156 
157 // ** see *
158 
160 device_t createDevice(unsigned int ID,
161  connectorInterface_t connector,
162  unsigned int address,
163  unsigned char sizeIO,
164  unsigned char sizeIDSensor,
165  unsigned int numSensors,
166  sensor_t *sensors,
167  unsigned char sizeIDActuator,
168  unsigned int numActuators,
169  actuator_t *actuators);
170 
171 
172 #endif
173 
actuator_t createActuator(unsigned int ID, unsigned int typeActuator, unsigned char sizeInput, unsigned char typeInput)
Definition: connector.c:15
unsigned int(* discoveryFunc)(discoveredDevice_t *devices)
Definition: connector.h:88
sensor_t createSensor(unsigned int ID, unsigned int typeSensor, unsigned char sizeOutput, unsigned char typeOutput)
Definition: connector.c:4
int(* checkDeviceFunc)(unsigned char *addr)
Definition: connector.h:90
void(* setActuatorValueFunc)(unsigned char *addr, unsigned char sizeIDAct, unsigned char *IDAct, unsigned char sizeValue, unsigned char *value)
Definition: connector.h:99
struct actuator_t actuator_t
struct device_t device_t
void(* msgAndAnswerToDeviceFunc)(unsigned char *addr, unsigned char sizeReqAns, unsigned char *request, unsigned char *answer)
Definition: connector.h:94
struct connectorInterface_t connectorInterface_t
void(* getSensorValueFunc)(unsigned char *addr, unsigned char sizeIDSen, unsigned char *IDSen, unsigned char sizeValue, unsigned char *value)
Definition: connector.h:97
struct sensor_t sensor_t
void(* msgToDeviceFunc)(unsigned char *addr, unsigned char sizeData, unsigned char *data)
Definition: connector.h:92
device_t createDevice(unsigned int ID, connectorInterface_t connector, unsigned int address, unsigned char sizeIO, unsigned char sizeIDSensor, unsigned int numSensors, sensor_t *sensors, unsigned char sizeIDActuator, unsigned int numActuators, actuator_t *actuators)
Definition: connector.c:27