// Generated by gencpp from file robot_sensor_msgs/BatteryState.msg
// DO NOT EDIT!


#ifndef ROBOT_SENSOR_MSGS_MESSAGE_BATTERYSTATE_H
#define ROBOT_SENSOR_MSGS_MESSAGE_BATTERYSTATE_H


#include <string>
#include <vector>
#include <memory>
#include <boost/shared_ptr.hpp>
#include <robot_std_msgs/Header.h>

namespace robot_sensor_msgs
{
template <class ContainerAllocator>
struct BatteryState_
{
  typedef BatteryState_<ContainerAllocator> Type;

  BatteryState_()
    : header()
    , voltage(0.0)
    , temperature(0.0)
    , current(0.0)
    , charge(0.0)
    , capacity(0.0)
    , design_capacity(0.0)
    , percentage(0.0)
    , power_supply_status(0)
    , power_supply_health(0)
    , power_supply_technology(0)
    , present(false)
    , cell_voltage()
    , cell_temperature()
    , location()
    , serial_number()  {
    }
  BatteryState_(const ContainerAllocator& _alloc)
    : header(_alloc)
    , voltage(0.0)
    , temperature(0.0)
    , current(0.0)
    , charge(0.0)
    , capacity(0.0)
    , design_capacity(0.0)
    , percentage(0.0)
    , power_supply_status(0)
    , power_supply_health(0)
    , power_supply_technology(0)
    , present(false)
    , cell_voltage(_alloc)
    , cell_temperature(_alloc)
    , location(_alloc)
    , serial_number(_alloc)  {
  (void)_alloc;
    }



   typedef  ::robot_std_msgs::Header_<ContainerAllocator>  _header_type;
  _header_type header;

   typedef float _voltage_type;
  _voltage_type voltage;

   typedef float _temperature_type;
  _temperature_type temperature;

   typedef float _current_type;
  _current_type current;

   typedef float _charge_type;
  _charge_type charge;

   typedef float _capacity_type;
  _capacity_type capacity;

   typedef float _design_capacity_type;
  _design_capacity_type design_capacity;

   typedef float _percentage_type;
  _percentage_type percentage;

   typedef uint8_t _power_supply_status_type;
  _power_supply_status_type power_supply_status;

   typedef uint8_t _power_supply_health_type;
  _power_supply_health_type power_supply_health;

   typedef uint8_t _power_supply_technology_type;
  _power_supply_technology_type power_supply_technology;

   typedef uint8_t _present_type;
  _present_type present;

   typedef std::vector<float, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<float>> _cell_voltage_type;
  _cell_voltage_type cell_voltage;

   typedef std::vector<float, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<float>> _cell_temperature_type;
  _cell_temperature_type cell_temperature;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _location_type;
  _location_type location;

   typedef std::basic_string<char, std::char_traits<char>, typename std::allocator_traits<ContainerAllocator>::template rebind_alloc<char>> _serial_number_type;
  _serial_number_type serial_number;



// reducing the odds to have name collisions with Windows.h 
#if defined(_WIN32) && defined(POWER_SUPPLY_STATUS_UNKNOWN)
  #undef POWER_SUPPLY_STATUS_UNKNOWN
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_STATUS_CHARGING)
  #undef POWER_SUPPLY_STATUS_CHARGING
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_STATUS_DISCHARGING)
  #undef POWER_SUPPLY_STATUS_DISCHARGING
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_STATUS_NOT_CHARGING)
  #undef POWER_SUPPLY_STATUS_NOT_CHARGING
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_STATUS_FULL)
  #undef POWER_SUPPLY_STATUS_FULL
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_UNKNOWN)
  #undef POWER_SUPPLY_HEALTH_UNKNOWN
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_GOOD)
  #undef POWER_SUPPLY_HEALTH_GOOD
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_OVERHEAT)
  #undef POWER_SUPPLY_HEALTH_OVERHEAT
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_DEAD)
  #undef POWER_SUPPLY_HEALTH_DEAD
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_OVERVOLTAGE)
  #undef POWER_SUPPLY_HEALTH_OVERVOLTAGE
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_UNSPEC_FAILURE)
  #undef POWER_SUPPLY_HEALTH_UNSPEC_FAILURE
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_COLD)
  #undef POWER_SUPPLY_HEALTH_COLD
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE)
  #undef POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE)
  #undef POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_TECHNOLOGY_UNKNOWN)
  #undef POWER_SUPPLY_TECHNOLOGY_UNKNOWN
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_TECHNOLOGY_NIMH)
  #undef POWER_SUPPLY_TECHNOLOGY_NIMH
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_TECHNOLOGY_LION)
  #undef POWER_SUPPLY_TECHNOLOGY_LION
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_TECHNOLOGY_LIPO)
  #undef POWER_SUPPLY_TECHNOLOGY_LIPO
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_TECHNOLOGY_LIFE)
  #undef POWER_SUPPLY_TECHNOLOGY_LIFE
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_TECHNOLOGY_NICD)
  #undef POWER_SUPPLY_TECHNOLOGY_NICD
#endif
#if defined(_WIN32) && defined(POWER_SUPPLY_TECHNOLOGY_LIMN)
  #undef POWER_SUPPLY_TECHNOLOGY_LIMN
#endif

  enum {
    POWER_SUPPLY_STATUS_UNKNOWN = 0u,
    POWER_SUPPLY_STATUS_CHARGING = 1u,
    POWER_SUPPLY_STATUS_DISCHARGING = 2u,
    POWER_SUPPLY_STATUS_NOT_CHARGING = 3u,
    POWER_SUPPLY_STATUS_FULL = 4u,
    POWER_SUPPLY_HEALTH_UNKNOWN = 0u,
    POWER_SUPPLY_HEALTH_GOOD = 1u,
    POWER_SUPPLY_HEALTH_OVERHEAT = 2u,
    POWER_SUPPLY_HEALTH_DEAD = 3u,
    POWER_SUPPLY_HEALTH_OVERVOLTAGE = 4u,
    POWER_SUPPLY_HEALTH_UNSPEC_FAILURE = 5u,
    POWER_SUPPLY_HEALTH_COLD = 6u,
    POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE = 7u,
    POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE = 8u,
    POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0u,
    POWER_SUPPLY_TECHNOLOGY_NIMH = 1u,
    POWER_SUPPLY_TECHNOLOGY_LION = 2u,
    POWER_SUPPLY_TECHNOLOGY_LIPO = 3u,
    POWER_SUPPLY_TECHNOLOGY_LIFE = 4u,
    POWER_SUPPLY_TECHNOLOGY_NICD = 5u,
    POWER_SUPPLY_TECHNOLOGY_LIMN = 6u,
  };


  typedef boost::shared_ptr< ::robot_sensor_msgs::BatteryState_<ContainerAllocator> > Ptr;
  typedef boost::shared_ptr< ::robot_sensor_msgs::BatteryState_<ContainerAllocator> const> ConstPtr;

}; // struct BatteryState_

typedef ::robot_sensor_msgs::BatteryState_<std::allocator<void> > BatteryState;

typedef boost::shared_ptr< ::robot_sensor_msgs::BatteryState > BatteryStatePtr;
typedef boost::shared_ptr< ::robot_sensor_msgs::BatteryState const> BatteryStateConstPtr;

// constants requiring out of line definition



template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator==(const ::robot_sensor_msgs::BatteryState_<ContainerAllocator1> & lhs, const ::robot_sensor_msgs::BatteryState_<ContainerAllocator2> & rhs)
{
  return lhs.header == rhs.header &&
    lhs.voltage == rhs.voltage &&
    lhs.temperature == rhs.temperature &&
    lhs.current == rhs.current &&
    lhs.charge == rhs.charge &&
    lhs.capacity == rhs.capacity &&
    lhs.design_capacity == rhs.design_capacity &&
    lhs.percentage == rhs.percentage &&
    lhs.power_supply_status == rhs.power_supply_status &&
    lhs.power_supply_health == rhs.power_supply_health &&
    lhs.power_supply_technology == rhs.power_supply_technology &&
    lhs.present == rhs.present &&
    lhs.cell_voltage == rhs.cell_voltage &&
    lhs.cell_temperature == rhs.cell_temperature &&
    lhs.location == rhs.location &&
    lhs.serial_number == rhs.serial_number;
}

template<typename ContainerAllocator1, typename ContainerAllocator2>
bool operator!=(const ::robot_sensor_msgs::BatteryState_<ContainerAllocator1> & lhs, const ::robot_sensor_msgs::BatteryState_<ContainerAllocator2> & rhs)
{
  return !(lhs == rhs);
}


} // namespace robot_sensor_msgs


#endif // ROBOT_SENSOR_MSGS_MESSAGE_BATTERYSTATE_H
