static void print_temps( const char *name, const int tmp432_temp_reg, const int tmp432_therm_limit_reg, const int tmp432_high_limit_reg, const int tmp432_low_limit_reg) { int value; if (!has_power()) { ccprintf(" TMP432 is shutdown\n"); return; } ccprintf("%s:\n", name); if (get_temp(tmp432_temp_reg, &value) == EC_SUCCESS) ccprintf(" Temp %3dC\n", value); if (get_temp(tmp432_therm_limit_reg, &value) == EC_SUCCESS) ccprintf(" Therm Trip %3dC\n", value); if (get_temp(tmp432_high_limit_reg, &value) == EC_SUCCESS) ccprintf(" High Alarm %3dC\n", value); if (get_temp(tmp432_low_limit_reg, &value) == EC_SUCCESS) ccprintf(" Low Alarm %3dC\n", value); }
static int command_tmp432(int argc, char **argv) { char *command; char *e; int data; int offset; int rv; if (!has_power()) { ccprintf("ERROR: Temp sensor not powered.\n"); return EC_ERROR_NOT_POWERED; } /* If no args just print status */ if (argc == 1) return print_status(); if (argc < 3) return EC_ERROR_PARAM_COUNT; command = argv[1]; offset = strtoi(argv[2], &e, 0); if (*e || offset < 0 || offset > 255) return EC_ERROR_PARAM2; if (!strcasecmp(command, "getbyte")) { rv = raw_read8(offset, &data); if (rv < 0) return rv; ccprintf("Byte at offset 0x%02x is %08b\n", offset, data); return rv; } /* Remaining commands are "tmp432 set-command offset data" */ if (argc != 4) return EC_ERROR_PARAM_COUNT; data = strtoi(argv[3], &e, 0); if (*e) return EC_ERROR_PARAM3; if (!strcasecmp(command, "settemp")) { ccprintf("Setting 0x%02x to %dC\n", offset, data); rv = tmp432_set_temp(offset, data); } else if (!strcasecmp(command, "setbyte")) { ccprintf("Setting 0x%02x to 0x%02x\n", offset, data); rv = raw_write8(offset, data); } else return EC_ERROR_PARAM1; return rv; }
static void temp_sensor_poll(void) { int temp_c; if (!has_power()) return; if (get_temp(TMP432_LOCAL, &temp_c) == EC_SUCCESS) temp_val_local = C_TO_K(temp_c); if (get_temp(TMP432_REMOTE1, &temp_c) == EC_SUCCESS) temp_val_remote1 = C_TO_K(temp_c); if (get_temp(TMP432_REMOTE2, &temp_c) == EC_SUCCESS) temp_val_remote2 = C_TO_K(temp_c); }
int tmp432_get_val(int idx, int *temp_ptr) { if (!has_power()) return EC_ERROR_NOT_POWERED; switch (idx) { case TMP432_IDX_LOCAL: *temp_ptr = temp_val_local; break; case TMP432_IDX_REMOTE1: *temp_ptr = temp_val_remote1; break; case TMP432_IDX_REMOTE2: *temp_ptr = temp_val_remote2; break; default: return EC_ERROR_UNKNOWN; } return EC_SUCCESS; }
static int command_tmp432(int argc, char **argv) { char *command; char *e; char *power; int data; int offset; int rv; /* handle "power" command before checking the power status. */ if ((argc == 3) && !strcasecmp(argv[1], "power")) { power = argv[2]; if (!strncasecmp(power, "on", sizeof("on"))) { rv = tmp432_set_power(TMP432_POWER_ON); if (!rv) print_status(); } else if (!strncasecmp(power, "off", sizeof("off"))) rv = tmp432_set_power(TMP432_POWER_OFF); else return EC_ERROR_PARAM2; ccprintf("Set TMP432 %s\n", power); return rv; } if (!has_power()) { ccprintf("ERROR: Temp sensor not powered.\n"); return EC_ERROR_NOT_POWERED; } /* If no args just print status */ if (argc == 1) return print_status(); if (argc < 3) return EC_ERROR_PARAM_COUNT; command = argv[1]; offset = strtoi(argv[2], &e, 0); if (*e || offset < 0 || offset > 255) return EC_ERROR_PARAM2; if (!strcasecmp(command, "getbyte")) { rv = raw_read8(offset, &data); if (rv < 0) return rv; ccprintf("Byte at offset 0x%02x is %08b\n", offset, data); return rv; } /* Remaining commands are "tmp432 set-command offset data" */ if (argc != 4) return EC_ERROR_PARAM_COUNT; data = strtoi(argv[3], &e, 0); if (*e) return EC_ERROR_PARAM3; if (!strcasecmp(command, "settemp")) { ccprintf("Setting 0x%02x to %dC\n", offset, data); rv = tmp432_set_temp(offset, data); } else if (!strcasecmp(command, "setbyte")) { ccprintf("Setting 0x%02x to 0x%02x\n", offset, data); rv = raw_write8(offset, data); } else return EC_ERROR_PARAM1; return rv; }