3 #include <system_def.h>
8 // OBJECT INTERFACE VARIABLES
9 unsigned int oi_cid_fan;
10 unsigned int oi_cid_hum;
11 unsigned int oi_cid_light;
12 unsigned int oi_slot_temp;
13 unsigned int oi_slot_hum;
14 unsigned int oi_period;
16 unsigned int oi_want_temp;
17 unsigned int oi_want_hum;
18 unsigned int oi_want_light;
19 unsigned int oi_want_dark;
26 unsigned int light = 0;
30 // OBJECT INTERFACE FUNCTIONS
31 int oi_cid_fan_wrfnc(ULOI_PARAM_coninfo void *context){
32 uloi_uint_wrfnc(ULOI_ARG_coninfo context);
36 int oi_cid_hum_wrfnc(ULOI_PARAM_coninfo void *context){
37 uloi_uint_wrfnc(ULOI_ARG_coninfo context);
41 int oi_cid_light_wrfnc(ULOI_PARAM_coninfo void *context){
42 uloi_uint_wrfnc(ULOI_ARG_coninfo context);
46 int oi_slot_temp_wrfnc(ULOI_PARAM_coninfo void *context){
47 uloi_uint_wrfnc(ULOI_ARG_coninfo context);
51 int oi_slot_hum_wrfnc(ULOI_PARAM_coninfo void *context){
52 uloi_uint_wrfnc(ULOI_ARG_coninfo context);
56 int oi_period_wrfnc(ULOI_PARAM_coninfo void *context){
57 uloi_uint_wrfnc(ULOI_ARG_coninfo context);
61 int oi_want_temp_wrfnc(ULOI_PARAM_coninfo void *context){
62 uloi_uint_wrfnc(ULOI_ARG_coninfo context);
66 int oi_want_hum_wrfnc(ULOI_PARAM_coninfo void *context){
67 uloi_uint_wrfnc(ULOI_ARG_coninfo context);
75 static const int MAX_CID_CNT = 4;
76 cid_data_t cids[MAX_CID_CNT];
79 cids[cid_cnt].cid = HEART_CID;
80 cids[cid_cnt].value = status_val;
84 cids[cid_cnt].cid = oi_cid_fan;
85 cids[cid_cnt].value = fan;
89 cids[cid_cnt].cid = oi_cid_hum;
90 cids[cid_cnt].value = hum;
93 if (oi_cid_light > 0) {
94 cids[cid_cnt].cid = oi_cid_light;
95 cids[cid_cnt].value = light;
103 uchar buf[cid_cnt * 6 + 3];
104 for (buff_len = 0; buff_len < 3; buff_len++) buf[buff_len] = 0;
106 for(i=0; i<cid_cnt; i++) {
107 int2buf(buf + buff_len, cids[i].cid);
109 int2buf(buf + buff_len, 2);
111 int2buf(buf + buff_len, cids[i].value);
115 msgsend = ul_send_query(ul_fd, 0, UL_CMD_PDO, UL_BFL_NORE, (void*) buf, buff_len);
116 printf("[I] DATA\n");
130 void check_PDO(int cid, int data){
131 printf("CID: %i\n", cid);
132 if (cid == oi_slot_temp){
134 printf("temperature: %i\n", temperature);
136 if (cid == oi_slot_hum){
138 printf("humidity: %i\n", humidity);
144 if (((oi_want_temp + hyst_temp) > temperature) && fan != 1) fan = 1;
145 if (((oi_want_temp - hyst_temp) < temperature) && fan != 0) fan = 0;
147 if (((oi_want_hum + hyst_hum) > humidity) && hum != 1) hum = 1;
148 if (((oi_want_hum - hyst_hum) < humidity) && hum != 0) hum = 0;
150 if(((current_time()-l3time) < oi_want_light*3600*1000) && light == 0) {
152 l3time = current_time();
154 if(((current_time()-l3time) < oi_want_dark*3600*1000) && light == 1) {
156 l3time = current_time();
160 void work_with(void){