data.cpp
Go to the documentation of this file.
1 #include "create/data.h"
2 
3 #define ADD_PACKET(id,nbytes,info,enabledVersion) if ((enabledVersion) & version) packets[id]=std::make_shared<Packet>(nbytes,info)
4 
5 namespace create {
6 
8  // Populate data map
9  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
10  * WARNING: Adding too many packets will flood the serial *
11  * buffer and corrupt the stream. *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13  ADD_PACKET(ID_BUMP_WHEELDROP, 1, "bumps_wheeldrops", V_ALL);
14  ADD_PACKET(ID_WALL, 1, "wall", V_ALL);
15  ADD_PACKET(ID_CLIFF_LEFT, 1, "cliff_left", V_ALL);
16  ADD_PACKET(ID_CLIFF_FRONT_LEFT, 1, "cliff_front_left", V_ALL);
17  ADD_PACKET(ID_CLIFF_FRONT_RIGHT, 1, "cliff_front_right", V_ALL);
18  ADD_PACKET(ID_CLIFF_RIGHT, 1, "cliff_right", V_ALL);
19  ADD_PACKET(ID_VIRTUAL_WALL, 1, "virtual_wall", V_ALL);
20  ADD_PACKET(ID_OVERCURRENTS, 1, "overcurrents", V_ALL);
21  ADD_PACKET(ID_DIRT_DETECT_LEFT, 1, "dirt_detect_left", V_ALL);
22  ADD_PACKET(ID_DIRT_DETECT_RIGHT, 1, "dirt_detect_right", V_1);
23  ADD_PACKET(ID_IR_OMNI, 1, "ir_opcode", V_ALL);
24  ADD_PACKET(ID_BUTTONS, 1, "buttons", V_ALL);
25  ADD_PACKET(ID_DISTANCE, 2, "distance", V_1 | V_2);
26  ADD_PACKET(ID_ANGLE, 2, "angle", V_1 | V_2);
27  ADD_PACKET(ID_CHARGE_STATE, 1, "charging_state", V_ALL);
28  ADD_PACKET(ID_VOLTAGE, 2, "voltage", V_ALL);
29  ADD_PACKET(ID_CURRENT, 2, "current", V_ALL);
30  ADD_PACKET(ID_TEMP, 1, "temperature", V_ALL);
31  ADD_PACKET(ID_CHARGE , 2, "battery_charge", V_ALL);
32  ADD_PACKET(ID_CAPACITY, 2, "battery_capacity", V_ALL);
33  ADD_PACKET(ID_OI_MODE, 1, "oi_mode", V_2 | V_3);
34  ADD_PACKET(ID_LEFT_ENC, 2, "enc_counts_left", V_3);
35  ADD_PACKET(ID_RIGHT_ENC, 2, "enc_counts_right", V_3);
36  ADD_PACKET(ID_LIGHT, 1, "light_bumper", V_3);
37  ADD_PACKET(ID_LIGHT_LEFT, 2, "light_bumper_left", V_3);
38  ADD_PACKET(ID_LIGHT_FRONT_LEFT, 2, "light_bumper_front_left", V_3);
39  ADD_PACKET(ID_LIGHT_CENTER_LEFT, 2, "light_bumper_center_left", V_3);
40  ADD_PACKET(ID_LIGHT_CENTER_RIGHT, 2, "light_bumper_center_right", V_3);
41  ADD_PACKET(ID_LIGHT_FRONT_RIGHT, 2, "light_bumper_front_right", V_3);
42  ADD_PACKET(ID_LIGHT_RIGHT, 2, "light_bumper_right", V_3);
43  ADD_PACKET(ID_IR_LEFT, 1, "ir_opcode_left", V_3);
44  ADD_PACKET(ID_IR_RIGHT, 1, "ir_opcode_right", V_3);
45  ADD_PACKET(ID_STASIS, 1, "stasis", V_3);
46 
47  totalDataBytes = 0;
48  for (std::map<uint8_t, std::shared_ptr<Packet> >::iterator it = packets.begin();
49  it != packets.end();
50  ++it) {
51  ids.push_back(it->first);
52  totalDataBytes += it->second->nbytes;
53  }
54  }
55 
57 
58  bool Data::isValidPacketID(uint8_t id) const {
59  if (packets.count(id)) {
60  return true;
61  }
62  return false;
63  }
64 
65  std::shared_ptr<Packet> Data::getPacket(uint8_t id) {
66  if (isValidPacketID(id)) {
67  return packets[id];
68  }
69  return std::shared_ptr<Packet>();
70  }
71 
73  for (std::map<uint8_t, std::shared_ptr<Packet> >::iterator it = packets.begin();
74  it != packets.end();
75  ++it) {
76  it->second->validate();
77  }
78  }
79 
80  unsigned int Data::getTotalDataBytes() const {
81  return totalDataBytes;
82  }
83 
84  uint8_t Data::getNumPackets() const {
85  return packets.size();
86  }
87 
88  std::vector<uint8_t> Data::getPacketIDs() {
89  return ids;
90  }
91 
92 } // namespace create
create::Data::ids
std::vector< uint8_t > ids
Definition: data.h:47
create::ID_DISTANCE
@ ID_DISTANCE
Definition: types.h:113
create::ID_LIGHT_LEFT
@ ID_LIGHT_LEFT
Definition: types.h:140
create::ID_CLIFF_LEFT
@ ID_CLIFF_LEFT
Definition: types.h:101
create::V_3
@ V_3
Definition: types.h:44
create::ID_CLIFF_FRONT_RIGHT
@ ID_CLIFF_FRONT_RIGHT
Definition: types.h:103
create::ID_CLIFF_RIGHT
@ ID_CLIFF_RIGHT
Definition: types.h:104
create::ID_RIGHT_ENC
@ ID_RIGHT_ENC
Definition: types.h:138
create::ID_VIRTUAL_WALL
@ ID_VIRTUAL_WALL
Definition: types.h:105
create::ID_LEFT_ENC
@ ID_LEFT_ENC
Definition: types.h:137
create::Data::isValidPacketID
bool isValidPacketID(const uint8_t id) const
Definition: data.cpp:58
ADD_PACKET
#define ADD_PACKET(id, nbytes, info, enabledVersion)
Definition: data.cpp:3
create::ID_DIRT_DETECT_LEFT
@ ID_DIRT_DETECT_LEFT
Definition: types.h:107
create::ID_LIGHT_FRONT_RIGHT
@ ID_LIGHT_FRONT_RIGHT
Definition: types.h:144
create::ID_LIGHT_RIGHT
@ ID_LIGHT_RIGHT
Definition: types.h:145
create::ID_IR_RIGHT
@ ID_IR_RIGHT
Definition: types.h:111
create::ID_OI_MODE
@ ID_OI_MODE
Definition: types.h:129
create::Data::packets
std::map< uint8_t, std::shared_ptr< Packet > > packets
Definition: data.h:45
create::ID_CAPACITY
@ ID_CAPACITY
Definition: types.h:120
create::ID_LIGHT
@ ID_LIGHT
Definition: types.h:139
create::ID_CLIFF_FRONT_LEFT
@ ID_CLIFF_FRONT_LEFT
Definition: types.h:102
create::ID_OVERCURRENTS
@ ID_OVERCURRENTS
Definition: types.h:106
create::ID_ANGLE
@ ID_ANGLE
Definition: types.h:114
create::ID_CHARGE_STATE
@ ID_CHARGE_STATE
Definition: types.h:115
create::ID_BUMP_WHEELDROP
@ ID_BUMP_WHEELDROP
Definition: types.h:99
create::V_1
@ V_1
Definition: types.h:42
create::V_2
@ V_2
Definition: types.h:43
create::V_ALL
@ V_ALL
Definition: types.h:45
create::Data::getPacketIDs
std::vector< uint8_t > getPacketIDs()
Definition: data.cpp:88
create::Data::Data
Data(ProtocolVersion version=V_3)
Definition: data.cpp:7
create::ID_IR_OMNI
@ ID_IR_OMNI
Definition: types.h:109
create::ID_LIGHT_CENTER_RIGHT
@ ID_LIGHT_CENTER_RIGHT
Definition: types.h:143
create::Data::getPacket
std::shared_ptr< Packet > getPacket(const uint8_t id)
Definition: data.cpp:65
create::ID_CURRENT
@ ID_CURRENT
Definition: types.h:117
create::Data::getTotalDataBytes
uint32_t getTotalDataBytes() const
Definition: data.cpp:80
create::ID_LIGHT_CENTER_LEFT
@ ID_LIGHT_CENTER_LEFT
Definition: types.h:142
create::ID_BUTTONS
@ ID_BUTTONS
Definition: types.h:112
create::ID_TEMP
@ ID_TEMP
Definition: types.h:118
create::ID_STASIS
@ ID_STASIS
Definition: types.h:150
create::ID_CHARGE
@ ID_CHARGE
Definition: types.h:119
data.h
create::ID_VOLTAGE
@ ID_VOLTAGE
Definition: types.h:116
create::ID_LIGHT_FRONT_LEFT
@ ID_LIGHT_FRONT_LEFT
Definition: types.h:141
create::ID_DIRT_DETECT_RIGHT
@ ID_DIRT_DETECT_RIGHT
Definition: types.h:108
create::Data::validateAll
void validateAll()
Definition: data.cpp:72
create::Data::totalDataBytes
uint32_t totalDataBytes
Definition: data.h:46
create::ID_WALL
@ ID_WALL
Definition: types.h:100
create::Data::~Data
~Data()
Definition: data.cpp:56
create::Data::getNumPackets
uint8_t getNumPackets() const
Definition: data.cpp:84
create
Definition: create.h:48
create::ProtocolVersion
ProtocolVersion
Definition: types.h:41
create::ID_IR_LEFT
@ ID_IR_LEFT
Definition: types.h:110


libcreate
Author(s): Jacob Perron
autogenerated on Wed May 24 2023 02:24:57