/* VectorNav HSI Calibration Library v1.0.0.2
 *
 * Copyright (c) 2018 VectorNav Technologies, LLC
 *
 * This source code is proprietary to and copyrighted by VectorNav Technologies, LLC and is
 * available solely under license from VectorNav. All rights reserved. If you do not have a
 * license to use this source code from VectorNav, any use hereof is strictly prohibited by
 * U.S. law and other applicable law. This source code is restricted for use solely with the
 * products of VectorNav and as otherwise set forth in any agreement with VectorNav. Any
 * disclosure of this source code to the public or to any third party is also prohibited.
 */
#include "vnenum.h"
#include "vnstring.h"

enum VnError
    to_string_VnError(
    char* out,
    size_t outSize,
    enum VnError v)
{
  switch (v)
  {
  case E_NONE:
    return strcpy_x(out, outSize, "NONE");
  case E_UNKNOWN:
    return strcpy_x(out, outSize, "UNKNOWN");
  case E_BUFFER_TOO_SMALL:
    return strcpy_x(out, outSize, "BUFFER_TOO_SMALL");
  case E_INVALID_VALUE:
    return strcpy_x(out, outSize, "INVALID_VALUE");
  case E_NOT_IMPLEMENTED:
    return strcpy_x(out, outSize, "NOT_IMPLEMENTED");
  case E_NOT_SUPPORTED:
    return strcpy_x(out, outSize, "NOT_SUPPORTED");
  case E_NOT_FOUND:
    return strcpy_x(out, outSize, "NOT_FOUND");
  case E_TIMEOUT:
    return strcpy_x(out, outSize, "TIMEOUT");
  case E_PERMISSION_DENIED:
    return strcpy_x(out, outSize, "PERMISSION_DENIED");
  case E_INVALID_OPERATION:
    return strcpy_x(out, outSize, "INVALID_OPERATION");
  case E_SIGNALED:
    return strcpy_x(out, outSize, "SIGNALED");
  case E_SENSOR_HARD_FAULT:
    return strcpy_x(out, outSize, "SENSOR_HARD_FAULT");
  case E_SENSOR_SERIAL_BUFFER_OVERFLOW:
    return strcpy_x(out, outSize, "SENSOR_SERIAL_BUFFER_OVERFLOW");
  case E_SENSOR_INVALID_CHECKSUM:
    return strcpy_x(out, outSize, "SENSOR_INVALID_CHECKSUM");
  case E_SENSOR_INVALID_COMMAND:
    return strcpy_x(out, outSize, "SENSOR_INVALID_COMMAND");
  case E_SENSOR_NOT_ENOUGH_PARAMETERS:
    return strcpy_x(out, outSize, "SENSOR_NOT_ENOUGH_PARAMETERS");
  case E_SENSOR_TOO_MANY_PARAMETERS:
    return strcpy_x(out, outSize, "SENSOR_TOO_MANY_PARAMETERS");
  case E_SENSOR_INVALID_PARAMETER:
    return strcpy_x(out, outSize, "SENSOR_INVALID_PARAMETER");
  case E_SENSOR_INVALID_REGISTER:
    return strcpy_x(out, outSize, "SENSOR_INVALID_REGISTER");
  case E_SENSOR_UNAUTHORIZED_ACCESS:
    return strcpy_x(out, outSize, "SENSOR_UNAUTHORIZED_ACCESS");
  case E_SENSOR_WATCHDOG_RESET:
    return strcpy_x(out, outSize, "SENSOR_WATCHDOG_RESET");
  case E_SENSOR_OUTPUT_BUFFER_OVERFLOW:
    return strcpy_x(out, outSize, "SENSOR_OUTPUT_BUFFER_OVERFLOW");
  case E_SENSOR_INSUFFICIENT_BAUD_RATE:
    return strcpy_x(out, outSize, "SENSOR_INSUFFICIENT_BAUD_RATE");
  case E_SENSOR_ERROR_BUFFER_OVERFLOW:
    return strcpy_x(out, outSize, "SENSOR_ERROR_BUFFER_OVERFLOW");
  case E_DATA_NOT_ELLIPTICAL:
    return strcpy_x(out, outSize, "DATA_NOT_ELLIPTICAL");
  case E_ILL_CONDITIONED:
    return strcpy_x(out, outSize, "ILL_CONDITIONED");
  case E_EXCEEDED_MAX_ITERATIONS:
    return strcpy_x(out, outSize, "EXCEEDED_MAX_ITERATIONS");
  case E_BAD_FINAL_INTERATION:
    return strcpy_x(out, outSize, "BAD_FINAL_INTERATION");
  case E_INSUFFICIENT_DATA:
    return strcpy_x(out, outSize, "INSUFFICIENT_DATA");
  default:
    return strcpy_x(out, outSize, "UNKNOWN_VALUE");
  }
}
