]> rtime.felk.cvut.cz Git - hydro.git/blobdiff - app-stefic/regulator/hydroponieoi.c
Added regulator. Added accepting of PDO messages.
[hydro.git] / app-stefic / regulator / hydroponieoi.c
diff --git a/app-stefic/regulator/hydroponieoi.c b/app-stefic/regulator/hydroponieoi.c
new file mode 100644 (file)
index 0000000..b9732ec
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+    OBJECT INTERFACE FOR SENSOR
+*/
+
+#include "board.h"
+
+#define I_FAN_CID 800
+#define I_HUMIDIFIER_CID 810
+#define I_LIGHT_CID 820
+#define I_TEMPERATURE_SLOT 900
+#define I_HUMIDITY_SLOT 910
+#define I_PERIOD 1000
+
+unsigned int status_val;
+
+int status_rdfnc(ULOI_PARAM_coninfo void *context)
+{
+    return uloi_uint_rdfnc(ULOI_ARG_coninfo &status_val);
+}
+
+int errclr_wrfnc(ULOI_PARAM_coninfo void *context)
+{
+    status_val=0; 
+    return 1;
+}
+
+/* description of input objects */
+const ULOI_CODE uloi_objdes_t uloid_objdes_DOII =
+ULOI_GENOBJDES_RAW(ULOI_DOII,NULL,NULL_CODE,NULL,uloi_doii_fnc,(void*)&uloi_objdes_main)
+/* description of output objects */
+const ULOI_CODE uloi_objdes_t uloid_objdes_DOIO =
+ULOI_GENOBJDES_RAW(ULOI_DOIO,NULL,NULL_CODE,NULL,uloi_doio_fnc,(void*)&uloi_objdes_main)
+/* ID numbers of recognized input objects */
+const ULOI_CODE uloi_objdes_t uloid_objdes_QOII =
+ULOI_GENOBJDES_RAW(ULOI_QOII,NULL,NULL_CODE,NULL,uloi_qoii_fnc,(void*)&uloi_objdes_main)
+/* ID numbers of recognized output objects */
+const ULOI_CODE uloi_objdes_t uloid_objdes_QOIO =
+ULOI_GENOBJDES_RAW(ULOI_QOIO,NULL,NULL_CODE,NULL,uloi_qoio_fnc,(void*)&uloi_objdes_main)
+/* object values read request */
+const ULOI_CODE uloi_objdes_t uloid_objdes_RDRQ =
+ULOI_GENOBJDES_RAW(ULOI_RDRQ,NULL,NULL_CODE,NULL,uloi_rdrq_fnc,(void*)&uloi_objdes_main)
+
+ULOI_GENOBJDES(STATUS,ULOI_STATUS,"u2",status_rdfnc,&status_val,NULL_CODE,NULL)
+ULOI_GENOBJDES(ERRCLR,ULOI_ERRCLR,"e",NULL_CODE,NULL,errclr_wrfnc,&status_val)
+
+ULOI_GENOBJDES(FAN_CID,I_FAN_CID,"u2/cid",uloi_uint_rdfnc,&oi_cid_fan,oi_cid_fan_wrfnc,&oi_cid_fan)
+ULOI_GENOBJDES(HUMIDIFIER_CID,I_HUMIDIFIER_CID,"u2/cid",uloi_uint_rdfnc,&oi_cid_hum,oi_cid_hum_wrfnc,&oi_cid_hum)
+ULOI_GENOBJDES(LIGHT_CID,I_LIGHT_CID,"u2/cid",uloi_uint_rdfnc,&oi_cid_light,oi_cid_light_wrfnc,&oi_cid_light)
+
+ULOI_GENOBJDES(TEMPERATURE_SLOT,I_TEMPERATURE_SLOT,"u2/slot",uloi_uint_rdfnc,&oi_slot_temp,oi_slot_temp_wrfnc,&oi_slot_temp)
+ULOI_GENOBJDES(HUMIDITY_SLOT,I_HUMIDITY_SLOT,"u2/slot",uloi_uint_rdfnc,&oi_slot_hum,oi_slot_hum_wrfnc,&oi_slot_hum)
+
+ULOI_GENOBJDES(PERIOD,I_PERIOD,"u2",uloi_uint_rdfnc,&oi_period,oi_period_wrfnc,&oi_period)
+
+const uloi_objdes_t * ULOI_CODE uloi_objdes_main_items[]={
+    &uloid_objdes_DOII,
+    &uloid_objdes_DOIO,
+    &uloid_objdes_QOII,
+    &uloid_objdes_QOIO,
+    &uloid_objdes_RDRQ,
+
+    &uloid_objdes_STATUS,
+    &uloid_objdes_ERRCLR,
+    &uloid_objdes_FAN_CID,
+    &uloid_objdes_HUMIDIFIER_CID,
+    &uloid_objdes_LIGHT_CID,
+    &uloid_objdes_TEMPERATURE_SLOT,
+    &uloid_objdes_HUMIDITY_SLOT,
+    &uloid_objdes_PERIOD
+
+};
+
+const ULOI_CODE uloi_objdes_array_t uloi_objdes_main={
+    {
+        (uloi_objdes_t **)uloi_objdes_main_items,
+        sizeof(uloi_objdes_main_items)/sizeof(uloi_objdes_main_items[0]),
+        -1
+    }
+};