firmware.h
Go to the documentation of this file.
1 
6 #pragma once
7 
8 #include <boost/system/error_code.hpp>
9 #include <rapidjson/document.h>
10 #include <string>
11 #include "files.h"
12 #include "systemConfiguration.h"
13 
14 #ifdef TESTING
15 #include "gtest/gtest.h"
16 #include "command.h"
17 #endif
18 
19 namespace dpyFirmware {
20 
23  std::string full_path;
24  std::string version;
25  std::string configuration;
26 };
27 
28 
31 {
32  std::string version;
33  std::string product;
34  std::string vendor;
35  std::string protocol;
36  std::string bootloader;
37 };
38 
40 enum Device
41 {
42  MCU = 0,
43  UX410 = 1,
44  EM7455 = 2,
45  RC7620 = 3,
46  EC25 = 4,
47  PN7412 = 5,
48  WP7607 = 6,
49  RC7611 = 7,
50  BK3_2 = 8,
51  EG25 = 9,
52  RG255C = 10
53 };
55 
57 enum Rfs
58 {
59  CURRENT = 0,
61 };
62 
63 }
64 
70 class Firmware {
71 
72 static const std::string version_file;
73 
74 public:
75  static boost::system::error_code requestFirmware(dpyFirmware::FirmwareVersionPath& image, enum dpyFirmware::Device device, enum dpyFirmware::Rfs rfs);
76  static boost::system::error_code parseVersionFile(std::string path, dpyFirmware::FirmwareVersionPath& image);
77  static std::string deviceToString(enum dpyFirmware::Device device);
78 private:
79  static std::string rfsToString(enum dpyFirmware::Rfs rfs);
80 
81 #ifdef TESTING
82 public:
83  FRIEND_TEST(Firmware_test, directoryError);
84  FRIEND_TEST(Firmware_test, fileError);
85  FRIEND_TEST(Firmware_test, fileError2);
86  FRIEND_TEST(Firmware_test, nameError);
87  FRIEND_TEST(Firmware_test, nameContentError);
88  FRIEND_TEST(Firmware_test, versionError);
89  FRIEND_TEST(Firmware_test, versionContentError);
90 
91  //Methods used in tests
92  static bool write_release_txt(const enum dpyFirmware::Device device, const std::string version_to_write){
93  std::string path = SystemConfiguration::getInstance()->getConfigurationValue("DEVICE_UPDATES_PATH") + deviceToString(device) + "/";
94  std::string command = "mkdir -p " + path;
95  Command::executeCommand(command);
96  std::string str_json = "{\"name\":\"firmware_name\",\"version\": \"" +version_to_write+"\" }";
97  Files file;
98  boost::system::error_code ec;
99  std::cout << "[write_release_txt_to_tmp] creating dir at " << path << std::endl;
100  bool result = file.createAndWrite(ec, path + "release.txt",str_json);
101  return result;
102  }
103 
104 
105  static void remove_release_txt(const enum dpyFirmware::Device device){
106  std::string path = SystemConfiguration::getInstance()->getConfigurationValue("DEVICE_UPDATES_PATH") + deviceToString(device) + "/";
107  std::string command = "rm -rf " + path;
108  Command::executeCommand(command);
109  }
110 
111 
112 #endif
113 };
std::string full_path
Path and name of the firmware.
Definition: firmware.h:23
This class implementes the read/write operations to work with text files stored in the file sytem...
Definition: files.h:52
A structure use to store firmware info.
Definition: firmware.h:30
Defines a class for executing commands and getting output.
static SystemConfiguration * getInstance()
Definition: firmware.h:19
std::string product
product
Definition: firmware.h:33
RC7620.
Definition: firmware.h:45
std::string version
Firmware version.
Definition: firmware.h:24
MCU.
Definition: firmware.h:42
std::string configuration
Firmware configuration.
Definition: firmware.h:25
std::string vendor
vendor
Definition: firmware.h:34
ALTERNATIVE.
Definition: firmware.h:60
std::string version
firmware version
Definition: firmware.h:32
std::string bootloader
bootloader
Definition: firmware.h:36
CURRENT.
Definition: firmware.h:59
Struct which contains all fields needed to can upgrade devices firmware.
Definition: firmware.h:22
Rfs
Defines the possible root file systems where binaries are located.
Definition: firmware.h:57
EG25.
Definition: firmware.h:51
BK3-2.
Definition: firmware.h:50
UX410.
Definition: firmware.h:43
RC7611.
Definition: firmware.h:49
PN7412.
Definition: firmware.h:47
Definition: firmware.h:52
WP7607.
Definition: firmware.h:48
Class to request upgrading firmware by device in case any is availability.
Definition: firmware.h:70
A common files library.
std::string protocol
protocol
Definition: firmware.h:35
std::string getConfigurationValue(const std::string &parameter)
EC25.
Definition: firmware.h:46
EM7455.
Definition: firmware.h:44
Device
Defines the possible devices whose firmware can be upgraded.
Definition: firmware.h:40