// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <getopt.h>
#include <stdio.h>

#include "label_detect.h"

int verbose = 0;

/* detector's name and function. detect_func() returns true if the feature is
 * detected. */
struct detector {
  char *name;
  bool (*detect_func)(void);
};

struct detector detectors[] = {
  { "hw_jpeg_acc_dec", detect_jpeg_acc_dec },
  { "hw_jpeg_acc_enc", detect_jpeg_acc_enc },
  { "hw_video_acc_h264", detect_video_acc_h264 },
  { "hw_video_acc_vp8", detect_video_acc_vp8 },
  { "hw_video_acc_vp9", detect_video_acc_vp9 },
  { "hw_video_acc_vp9_2", detect_video_acc_vp9_2 },
  { "hw_video_acc_enc_h264", detect_video_acc_enc_h264 },
  { "hw_video_acc_enc_vp8", detect_video_acc_enc_vp8 },
  { "hw_video_acc_enc_vp9", detect_video_acc_enc_vp9 },
  { "builtin_usb_camera", detect_builtin_usb_camera },
  { "builtin_mipi_camera", detect_builtin_mipi_camera },
  { "vivid_camera", detect_vivid_camera },
  { "builtin_camera", detect_builtin_camera },
  { "builtin_or_vivid_camera", detect_builtin_or_vivid_camera },
  { "hw_video_acc_h264_4k", detect_4k_device_h264},
  { "hw_video_acc_vp8_4k", detect_4k_device_vp8},
  { "hw_video_acc_vp9_4k", detect_4k_device_vp9},
  { "hw_video_acc_enc_h264_4k", detect_4k_device_enc_h264},
  { "hw_video_acc_enc_vp8_4k", detect_4k_device_enc_vp8},
  { "hw_video_acc_enc_vp9_4k", detect_4k_device_enc_vp9},
  { NULL, NULL }
};

int main(int argc, char *argv[]) {
  int i;
  int opt;

  while ((opt = getopt(argc, argv, "vh")) != -1) {
    switch (opt) {
      case 'v':
        verbose = 1;
        break;
      case 'h':
        printf("Usage: %s [-vh]\n", argv[0]);
        return 0;
    }
  }

  for (i = 0; detectors[i].name; i++) {
    TRACE("Detecting [%s]\n", detectors[i].name);
    if (detectors[i].detect_func()) {
      printf("Detected label: %s\n", detectors[i].name);
    }
    TRACE("\n");
  }

  TRACE("Detect via table look up\n");
  detect_label_by_board_name();
  return 0;
}
