// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.

#pragma once

#define ROBOT_SYSTEM_SERVER_NT_PORT 6810

#define ROBOT_CONTROL_DATA_PREFIX "/Netcomm/Control/"

#define ROBOT_WATCHDOG_ACTIVE_PATH (ROBOT_CONTROL_DATA_PREFIX "WatchdogActive")
#define ROBOT_CONTROL_DATA_PATH (ROBOT_CONTROL_DATA_PREFIX "ControlData")
#define ROBOT_MATCH_INFO_PATH (ROBOT_CONTROL_DATA_PREFIX "MatchInfo")
#define ROBOT_JOYSTICK_DESCRIPTORS_PATH \
  (ROBOT_CONTROL_DATA_PREFIX "JoystickDescriptors")
#define ROBOT_HAS_SET_WALL_CLOCK_PATH \
  (ROBOT_CONTROL_DATA_PREFIX "HasSetWallClock")
#define ROBOT_SERVER_READY_PATH (ROBOT_CONTROL_DATA_PREFIX "ServerReady")

#define ROBOT_STATUS_DATA_PREFIX "/Netcomm/Status/"
#define ROBOT_HAS_USER_CODE_PATH (ROBOT_STATUS_DATA_PREFIX "HasUserCode")
#define ROBOT_HAS_USER_CODE_READY_PATH \
  (ROBOT_STATUS_DATA_PREFIX "HasUserCodeReady")
#define ROBOT_CURRENT_OPMODE_TRACE_PATH \
  (ROBOT_STATUS_DATA_PREFIX "CurrentOpModeTrace")

#define ROBOT_OUTPUTS_DATA_PREFIX "/Netcomm/Outputs/"
#define ROBOT_JOYSTICK_OUTPUTS_PATH \
  (ROBOT_OUTPUTS_DATA_PREFIX "JoystickOutput/")

#define ROBOT_CONSOLE_DATA_PREFIX "/Netcomm/Console/"
#define ROBOT_CONSOLE_LINE_PATH (ROBOT_CONSOLE_DATA_PREFIX "ConsoleLine")
#define ROBOT_ERROR_INFO_PATH (ROBOT_CONSOLE_DATA_PREFIX "ErrorInfo")

#define ROBOT_REPORTING_DATA_PREFIX "/Netcomm/Reporting/"
#define ROBOT_REQUEST_REPORTING_PATH \
  (ROBOT_REPORTING_DATA_PREFIX "RequestVersions")
#define ROBOT_LIB_VERSION_PATH (ROBOT_REPORTING_DATA_PREFIX "LibVersion")
#define ROBOT_USER_VERSION_PATH (ROBOT_REPORTING_DATA_PREFIX "UserVersion")
#define ROBOT_USER_VERSION_STR_PATH \
  (ROBOT_REPORTING_DATA_PREFIX "UserVersionStr")

#define ROBOT_OP_MODE_OPTIONS_PATH "/Netcomm/OpModeOptions"

#define ROBOT_SYSTEM_SERVER_PREFIX "/sys/"
#define ROBOT_BATTERY_VOLTAGE_PATH (ROBOT_SYSTEM_SERVER_PREFIX "battery")
#define ROBOT_RAM_USED_PATH (ROBOT_SYSTEM_SERVER_PREFIX "ram")
#define ROBOT_RAM_BYTES_PATH (ROBOT_SYSTEM_SERVER_PREFIX "ramtotal")
#define ROBOT_STORAGE_USED_PATH (ROBOT_SYSTEM_SERVER_PREFIX "storage")
#define ROBOT_STORAGE_BYTES_PATH (ROBOT_SYSTEM_SERVER_PREFIX "storagetotal")
#define ROBOT_CPU_PATH (ROBOT_SYSTEM_SERVER_PREFIX "cpu")
#define ROBOT_CAN_BW_PATH (ROBOT_SYSTEM_SERVER_PREFIX "canbusban")
#define ROBOT_TEAM_PATH (ROBOT_SYSTEM_SERVER_PREFIX "team")

#define MRC_MAX_NUM_JOYSTICKS 6
#define MRC_MAX_NUM_AXES 12
#define MRC_MAX_NUM_POVS 8
#define MRC_MAX_NUM_BUTTONS 64
#define MRC_MAX_OPMODE_STRING_LEN 64
#define MRC_MAX_GAME_DATA_LEN 8
#define MRC_MAX_EVENT_NAME_LEN 64
#define MRC_MAX_JOYSTICK_NAME_LEN 256
#define MRC_MAX_VERSION_SIZE 256
#define MRC_MAX_ERROR_INFO_STR_LEN 10000
#define MRC_MAX_NUM_TOUCHPAD_FINGERS 2
#define MRC_MAX_NUM_TOUCHPADS 2
