function switch_off($i, &$in_states, &$in_programs, &$in_levels) { $in_states = substr_replace($in_states, '00', $i * 2, 2); send_io_input_level_event_message($i, $in_states, $in_levels); send_io_input_program_event_message($i, $in_states, $in_programs); return 1; }
$ip = ''; $il = ''; io_read_shared_memory($shm_id, $os, $is, $ip, $il); if ($os . $is . $ip . $il != $out_states . $in_states . $in_programs . $in_levels) { //something changed //if($os!=$out_states) set_outputs($os); //set the hardware outputs for ($i = 0; $i < OUT_PINS; $i++) { if (substr($os, $i * 2, 2) != substr($out_states, $i * 2, 2)) { send_io_output_binary_event_message($i, $os); //light $outputs_changed = 1; } } for ($i = 0; $i < IN_PINS; $i++) { if (substr($is, $i * 2, 2) != substr($in_states, $i * 2, 2) or substr($il, $i * 2, 2) != substr($in_levels, $i * 2, 2)) { send_io_input_level_event_message($i, $is, $il); //switch state and level $inputs_changed = 1; } if (substr($ip, $i * 2, 2) != substr($in_programs, $i * 2, 2)) { send_io_input_program_event_message($i, $is, $ip); //switch program $inputs_changed = 1; } } } //update internal state variables after any changes if ($outputs_changed) { $out_states = $os; } if ($inputs_changed) {