Memory.cpp
Go to the documentation of this file.
2 
4 
5  node.getParam("get_available_memory", input_command.get_available_memory);
6  node.getParam("erase_memory", input_command.erase_memory);
7  node.getParam("read_memory", input_command.read_memory);
8  node.getParam("read_file", input_command.read_file);
9  node.getParam("get_files", input_command.get_files);
10 
11 }
12 
13 bool muse_v2_driver::Memory::logger(MemoryManagement::Request& req, MemoryManagement::Response& res, MuseV2* muse_v2) {
14 
15  bool out = false;
16 
17  ROS_INFO("request: get_available_memory=%s, erase_memory=%s, read_memory=%s, read_file=%d, get_files=%s",
18  req.get_available_memory ? "true" : "false",
19  req.erase_memory ? "true" : "false",
20  req.read_memory ? "true" : "false",
21  req.read_file,
22  req.get_files ? "true" : "false"
23  );
24 
25  if (req.get_available_memory) {
26  if (!received_command.get_available_memory) {
27  received_command.get_available_memory = true;
28  ROS_INFO("Trying getting Available Memory.");
29  }
30  if (muse_v2->serial->getAvailableMemory() > 0) {
31  res.memory = muse_v2->serial->getAvailableMemory();
32  out = true;
33  ROS_INFO("Sending back Available Memory.");
34  }
35  }
36 
37  if (req.erase_memory) {
38  if (!received_command.erase_memory) {
39  received_command.erase_memory = true;
40  ROS_INFO("Trying erasing memory.");
41  }
42  if (muse_v2->serial->eraseMemory()) {
43  res.memory_erased = true;
44  out = true;
45  ROS_INFO("Memory erased.");
46  }
47  }
48 
49  if (req.get_files) {
50  if (!received_command.get_files) {
51  received_command.get_files = true;
52  ROS_INFO("Trying getting file names list.");
53  }
54  if (!muse_v2->serial->getFiles().empty()) {
55  vector<pair<int, string>> file_names = muse_v2->serial->getFiles();
56  out = true;
57  for (const auto& file : file_names)
58  res.file_list.push_back(file.second);
59  ROS_INFO("Sending back File names.");
60  }
61 
62  }
63 
64  if (req.read_file != 0) {
65  if (received_command.read_file == 0) {
66  received_command.read_file = req.read_file;
67  ROS_INFO("Trying reading file.");
68  }
69 
70  out = true;
71 
72  if (muse_v2->serial->readFile(req.read_file).empty()) {
73  ROS_INFO("File not found. Please check the list of available files.");
74  res.file_stored = false;
75  res.dest_path = "";
76  return out;
77  }
78  else {
79  if (!muse_v2->serial->getFiles().empty()) {
80  vector<pair<int, string>> file_names = muse_v2->serial->getFiles();
81  vector<Log> logs = muse_v2->serial->readFile(req.read_file);
82  string dest_file = ros::package::getPath("muse_v2_driver") + "/config/" + file_names.at(req.read_file - 1).second + ".txt";
83  if (muse_v2->serial->storeLogs(dest_file, logs)) {
84  res.file_stored = true;
85  res.dest_path = dest_file;
86  ROS_INFO("Data stored at %s", dest_file.c_str());
87  }
88 
89  }
90  }
91 
92  }
93 
94  if (req.read_memory) {
95  if (received_command.read_memory == false) {
96  received_command.read_memory = true;
97  ROS_INFO("Trying reading memory.");
98  }
99 
100  int i = 0;
101  int file_stored = 0;
102  string dest_path = ros::package::getPath("muse_v2_driver") + "/config/";
103  out = true;
104 
105  if (muse_v2->serial->getFiles().empty()) {
106  ROS_INFO("Files not found");
107  res.number_of_files_stored = 0;
108  res.dest_path = "";
109  return out;
110  }
111 
112  vector<pair<int, string>> file_names = muse_v2->serial->getFiles();
113 
114  while (i < file_names.size()) {
115  ROS_INFO_STREAM("Processing file " << i + 1 << " of " << file_names.size() << ": " << file_names.at(i).second << ".txt");
116 
117  if (muse_v2->serial->readFile(req.read_file).empty()) {
118  ROS_INFO("File %d not properly read", i + 1);
119  res.corrupt_stored_list.push_back(i);
120  }
121 
122  std::vector<Log> logs = muse_v2->serial->readFile(req.read_file);
123  ROS_INFO("# of logs to store: %lu", logs.size());
124 
125  std::string dest_file = dest_path + file_names.at(i).second + ".txt";
126  if (muse_v2->serial->storeLogs(dest_file, logs)) {
127  file_stored++;
128  ROS_INFO("Data stored at %s", dest_file.c_str());
129  }
130 
131  i++;
132  }
133 
134  out = true;
135  res.number_of_files_stored = file_stored;
136  res.dest_path = dest_path;
137  }
138 
139  return out;
140 
141 }
142 
143 
144 
145 
146 
muse_v2_driver::Memory::setupInputCommands
void setupInputCommands(ros::NodeHandle &node)
Definition: Memory.cpp:3
ros::package::getPath
ROSLIB_DECL std::string getPath(const std::string &package_name)
ros::NodeHandle::getParam
bool getParam(const std::string &key, bool &b) const
muse_v2_driver::Memory::CommandList::read_memory
bool read_memory
Definition: Memory.h:30
muse_v2_driver::Memory::input_command
CommandList input_command
Definition: Memory.h:47
muse_v2_driver::Memory::CommandList::erase_memory
bool erase_memory
Definition: Memory.h:29
muse_v2_driver::Memory::logger
bool logger(MemoryManagement::Request &req, MemoryManagement::Response &res, MuseV2 *muse_v2)
Definition: Memory.cpp:13
ROS_INFO_STREAM
#define ROS_INFO_STREAM(args)
muse_v2_driver::Memory::CommandList::get_available_memory
bool get_available_memory
Definition: Memory.h:28
Memory.h
muse_v2_driver::Memory::CommandList::read_file
int read_file
Definition: Memory.h:31
muse_v2_driver::MuseV2
Definition: MuseV2.h:21
ROS_INFO
#define ROS_INFO(...)
muse_v2_driver::MuseV2::serial
MuseV2_SerialConnection * serial
Definition: MuseV2.h:41
ros::NodeHandle
muse_v2_driver::Memory::CommandList::get_files
bool get_files
Definition: Memory.h:32


muse_v2_driver
Author(s): Elisa Tosello , Roberto Bortoletto
autogenerated on Thu Jan 20 2022 03:24:53