示例#1
0
int
main(int argc, char **argv) {

  int ret;

  uint8_t fru, status, opt;
  char *option;

  /* Check for sled-cycle */
  if (argc < 2 || argc > 3) {
    print_usage();
    exit (-1);
  }

  option =  argc == 2 ? argv[1] : argv [2];

  ret = get_power_opt(option, &opt);
  /* If argc is 2, the option is sled-cycle */
  if ((ret < 0) || (argc == 2 && opt != PWR_SLED_CYCLE)) {
    printf("Wrong option: %s\n", option);
    print_usage();
    exit(-1);
  }

  if (argc > 2) {
    ret = pal_get_fru_id(argv[1], &fru);
    if (ret < 0) {
      printf("Wrong fru: %s\n", argv[1]);
      print_usage();
      exit(-1);
    }
  } else {
    fru = -1;
  }

  if (argc > 2) {
    ret = pal_is_server_prsnt(fru, &status);
    if (ret < 0) {
      printf("pal_is_server_prsnt failed for fru: %d\n", fru);
      print_usage();
      exit(-1);
    }
    if (status == 0) {
      printf("%s is empty!\n", argv[1]);
      print_usage();
      exit(-1);
    }
  }

  ret = power_util(fru, opt);
  if (ret < 0) {
    print_usage();
    return ret;
  }
}
示例#2
0
/* Spawns a pthread for each fru to monitor all the sensors on it */
static void
run_gpiod(int argc, void **argv) {

  //gpio_monitor();

  int i, ret;
  uint8_t fru_flag, fru;

  /* Check for which fru do we need to monitor the gpio pins */
  fru_flag = 0;
  for (i = 1; i < argc; i++) {
    ret = pal_get_fru_id(argv[i], &fru);
    if (ret < 0) {
      print_usage();
      exit(-1);
    }
    fru_flag = SETBIT(fru_flag, fru);
  }

  gpio_monitor_poll(fru_flag);
}
示例#3
0
int
main(int argc, char **argv) {

  int i;
  int ret;
  int sensor_cnt;
  uint8_t *sensor_list;
  uint8_t fru;
  uint8_t num = 0;
  bool threshold = false;

  if (argc < 2 || argc > 4) {
    print_usage();
    exit(-1);
  }

  i = 3; /* Starting at argument 3*/
  while (argc > 2 && i <= argc) {
    if (!(strcmp(argv[i-1], "--threshold"))) {
      threshold = true;
    } else {
      errno = 0;
      num = (uint8_t) strtol(argv[i-1], NULL, 0);
      if (errno) {
        print_usage();
        exit(-1);
      }
    }
    i++;
  }


  ret = pal_get_fru_id(argv[1], &fru);
  if (ret < 0) {
    print_usage();
    return ret;
  }

  if (fru == 0) {
    fru = 1;
    while (fru <= MAX_NUM_FRUS) {

      ret = pal_get_fru_sensor_list(fru, &sensor_list, &sensor_cnt);
      if (ret < 0) {
        return ret;
      }

      calculate_sensor_reading(fru, sensor_list, sensor_cnt, num, threshold);

      fru++;
      printf("\n");
    }
  } else {

    ret = pal_get_fru_sensor_list(fru, &sensor_list, &sensor_cnt);
    if (ret < 0) {
      return ret;
    }

    calculate_sensor_reading(fru, sensor_list, sensor_cnt, num, threshold);
  }

  return 0;
}
示例#4
0
int
main(int argc, char **argv) {

  int i;
  int ret;
  int sensor_cnt;
  uint8_t status;
  uint8_t *sensor_list;
  uint8_t fru;
  uint8_t num = 0;
  char fruname[16];
  bool threshold = false;

  if (argc < 2 || argc > 4) {
    print_usage();
    exit(-1);
  }

  i = 3; /* Starting at argument 3*/
  while (argc > 2 && i <= argc) {
    if (!(strcmp(argv[i-1], "--threshold"))) {
      threshold = true;
    } else {
      errno = 0;
      num = (uint8_t) strtol(argv[i-1], NULL, 0);
      if (errno) {
        print_usage();
        exit(-1);
      }
    }
    i++;
  }


  ret = pal_get_fru_id(argv[1], &fru);
  if (ret < 0) {
    print_usage();
    return ret;
  }

  if (fru == 0) {
    fru = 1;
    while (fru <= MAX_NUM_FRUS) {

      ret = pal_is_fru_prsnt(fru, &status);
      if (ret < 0) {
        printf("pal_is_server_fru failed for fru: %d\n", fru);
      }

      if (status == 0) {
        pal_get_fru_name(fru, fruname);
        printf("%s is empty!\n\n", fruname);
        fru++;
        continue;
      }

      ret = pal_get_fru_sensor_list(fru, &sensor_list, &sensor_cnt);
      if (ret < 0) {
        return ret;
      }

      get_sensor_reading(fru, sensor_list, sensor_cnt, num, threshold);

      fru++;
      printf("\n");
    }
  } else {

    ret = pal_is_fru_prsnt(fru, &status);
    if (ret < 0) {
      printf("pal_is_fru_prsnt failed for fru: %d\n", fru);
      print_usage();
      exit(-1);
    }
    if (status == 0) {
      printf("%s is empty!\n", argv[1]);
      print_usage();
      exit(-1);
    }

    ret = pal_get_fru_sensor_list(fru, &sensor_list, &sensor_cnt);
    if (ret < 0) {
      return ret;
    }

    get_sensor_reading(fru, sensor_list, sensor_cnt, num, threshold);
  }

  return 0;
}
示例#5
0
/* Utility to just print the FRUID */
int main(int argc, char * argv[]) {

  int ret;
  uint8_t fru;
  char path[64] = {0};
  char name[64] = {0};

  if (argc != 2) {
    print_usage();
    exit(-1);
  }

  ret = pal_get_fru_id(argv[1], &fru);
  if (ret < 0) {
    print_usage();
    return ret;
  }

  if (fru == 0) {
    fru = 1;
    while (fru <= MAX_NUM_FRUS) {
      ret = pal_get_fruid_path(fru, path);
      if (ret < 0) {
        return ret;
      }

      ret = pal_get_fruid_name(fru, name);
      if (ret < 0) {
        return ret;
      }

      if (fru == FRU_NIC) {
        printf("fruid-util does not support nic\n");
        exit(-1);
      }

      get_fruid_info(fru, path, name);

      fru++;
    }
  } else {
    ret = pal_get_fruid_path(fru, path);
    if (ret < 0) {
      return ret;
    }

    ret = pal_get_fruid_name(fru, name);
    if (ret < 0) {
      return ret;
    }

    if (fru == FRU_NIC) {
      printf("fruid-util does not support nic\n");
      exit(-1);
    }

    get_fruid_info(fru, path, name);
  }

  return 0;
}