+
+ if (temp_state == 1) {
+ if (w1_reset()) {
+ temp_state = 2;
+ } else {
+ temp_report[2] = 0xFF;
+ temp_report[3] = 0xFF;
+ have_temp_int = true;
+ temp_state = 0;
+ }
+ } else if (temp_state == 2) {
+ w1_write(0xCC); /* SKIP ROM */
+ temp_state = 3;
+ } else if (temp_state == 3) {
+ w1_write(0x44); /* Convert T */
+ temp_state = 4;
+ } else if (temp_state == 4) {
+ if (w1_read_byte() == 0xFF)
+ temp_state = 5;
+ } else if (temp_state == 5) {
+ if (w1_reset()) {
+ temp_state = 6;
+ } else {
+ temp_report[2] = 0xFF;
+ temp_report[3] = 0xFE;
+ have_temp_int = true;
+ temp_state = 0;
+ }
+ } else if (temp_state == 6) {
+ w1_write(0xCC); /* SKIP ROM */
+ temp_state = 7;
+ } else if (temp_state == 7) {
+ w1_write(0xBE); /* Read Scratchpad */
+ temp_state = 8;
+ } else if (temp_state > 7 && temp_state < 17) {
+ buf[temp_state - 8] = w1_read_byte();
+ temp_state++;
+ } else if (temp_state == 17) {
+ temp_report[2] = buf[1] << 4 | buf[0] >> 4;
+ temp_report[3] = buf[0] << 4;
+ have_temp_int = true;
+ temp_state = 0;
+ }