void wuclass_binary_sensor_update(wuobject_t *wuobject) { bool currentValue = 0; currentValue = input_get(PINE, 3); short *delay; delay = wuclass_binary_sensor_getPrivateData(wuobject); bool status; wkpf_internal_read_property_boolean(wuobject, WKPF_PROPERTY_BINARY_SENSOR_STATUS, &status); wkpf_refresh_rate_t refresh_rate; wkpf_internal_read_property_refresh_rate(wuobject, WKPF_PROPERTY_BINARY_SENSOR_REFRESH_RATE, &refresh_rate); int debounce; wkpf_internal_read_property_int16(wuobject, WKPF_PROPERTY_BINARY_SENSOR_DEBOUNCE, &debounce); DEBUG_LOG(DBG_WKPFUPDATE, "WKPFUPDATE(BinarySensor): Sensed binary value: %d %d %d %d %x\n", currentValue, *delay, debounce, status, PINE); #if 0 if(debounce < DEBOUNCE_THREASHOLD) { // busy waiting for short debounce wkpf_internal_read_property_boolean(wuobject, WKPF_PROPERTY_BINARY_SENSOR_CURRENT_VALUE, ¤tValue); if(currentValue != status) { } break; } } else { // check sensed value in every update
void wkpf_schedule_next_update_for_wuobject(wuobject_t *wuobject) { for (int i=0; i<wuobject->wuclass->number_of_properties; i++) { if (WKPF_GET_PROPERTY_DATATYPE(wuobject->wuclass->properties[i]) == WKPF_PROPERTY_TYPE_REFRESH_RATE) { wkpf_refresh_rate_t refresh_rate; wkpf_internal_read_property_refresh_rate(wuobject, i, &refresh_rate); if (refresh_rate == 0) // 0 means turned off wuobject->next_scheduled_update = 0; else wuobject->next_scheduled_update = dj_timer_getTimeMillis() + refresh_rate; DEBUG_LOG(DBG_WKPFUPDATE, "WKPFUPDATE: Scheduled next update for object at port %d. Refresh rate:%d Current time:%lu Next update at:%lu\n", wuobject->port_number, refresh_rate, (unsigned long)dj_timer_getTimeMillis(), (unsigned long)wuobject->next_scheduled_update); return; } } }