Go to the documentation of this file.00001
00009
00010
00011
00012
00013 #ifndef KOBUKI_CORE_SENSORS_HPP__
00014 #define KOBUKI_CORE_SENSORS_HPP__
00015
00016
00017
00018
00019
00020 #include "../packet_handler/payload_base.hpp"
00021 #include "../macros.hpp"
00022 #include <stdint.h>
00023
00024
00025
00026
00027
00028 namespace kobuki
00029 {
00030
00031
00032
00033
00034
00035 class kobuki_PUBLIC CoreSensors : public packet_handler::payloadBase
00036 {
00037 public:
00038 CoreSensors() : packet_handler::payloadBase(false, 15) {};
00039
00040 struct Data {
00041 uint16_t time_stamp;
00042 uint8_t bumper;
00043 uint8_t wheel_drop;
00044 uint8_t cliff;
00045 uint16_t left_encoder;
00046 uint16_t right_encoder;
00047 char left_pwm;
00048 char right_pwm;
00049 uint8_t buttons;
00050 uint8_t charger;
00051 uint8_t battery;
00052 uint8_t over_current;
00053 } data;
00054
00055 struct Flags {
00056
00057 static const uint8_t Button0 = 0x01;
00058 static const uint8_t Button1 = 0x02;
00059 static const uint8_t Button2 = 0x04;
00060
00061
00062 static const uint8_t LeftBumper = 0x04;
00063 static const uint8_t CenterBumper = 0x02;
00064 static const uint8_t RightBumper = 0x01;
00065
00066
00067 static const uint8_t LeftCliff = 0x04;
00068 static const uint8_t CenterCliff = 0x02;
00069 static const uint8_t RightCliff = 0x01;
00070
00071
00072 static const uint8_t LeftWheel = 0x02;
00073 static const uint8_t RightWheel = 0x01;
00074
00075
00076
00077 static const uint8_t AdapterType = 0x10;
00078
00079 static const uint8_t BatteryStateMask = 0x0F;
00080 static const uint8_t Discharging = 0x00;
00081 static const uint8_t Charged = 0x02;
00082 static const uint8_t Charging = 0x06;
00083
00084
00085 static const uint8_t LeftWheel_OC = 0x01;
00086 static const uint8_t RightWheel_OC = 0x02;
00087
00088 };
00089
00090 bool serialise(ecl::PushAndPop<unsigned char> & byteStream);
00091 bool deserialise(ecl::PushAndPop<unsigned char> & byteStream);
00092 };
00093
00094 }
00095
00096 #endif