int32_t w1_read_temp_bus(struct w1_bus *bus, unsigned long flags) { int i, class; for (i = 0; i < W1_MAX_DEVICES; i++) { class = w1_class(bus->devs + i); switch(class) { case 0x10: case 0x28: case 0x42: return w1_read_temp(bus->devs + i, flags); default: break; } } /* not found */ return 1l << 31; }
void ReadOwDevices(int bus) { struct w1_dev *d; int i; int tvalue; wrpc_w1_bus.detail = bus; // set the portnumber of the onewire controller if (w1_scan_bus(&wrpc_w1_bus) > 0) { for (i = 0; i < W1_MAX_DEVICES; i++) { d = wrpc_w1_bus.devs + i; if (d->rom) { mprintf("bus,device (%d,%d): 0x%08x%08x ", wrpc_w1_bus.detail, i, (int)(d->rom >> 32), (int)d->rom); *(int*)(scu_reg + 0) = (d->rom >> 32); *(int*)(scu_reg + 4) = d->rom; if ((char)d->rom == 0x42) { tvalue = w1_read_temp(d, 0); *(int*)(scu_reg + 8) = (tvalue >> 12); mprintf("temp: %dC", tvalue >> 16); //show only integer part for debug } mprintf("\n"); } }