blob: ec964f2c7c9f96cca74fdb853d008f1f1623739f [file] [log] [blame]
Matt Spinlerb6664332019-09-10 15:24:10 -05001#include "mtms.hpp"
2
3namespace openpower
4{
5namespace pels
6{
7
8MTMS::MTMS()
9{
10 memset(_machineTypeAndModel.data(), 0, mtmSize);
11 memset(_serialNumber.data(), 0, snSize);
12}
13
14MTMS::MTMS(const std::string& typeModel, const std::string& serialNumber)
15{
16 memset(_machineTypeAndModel.data(), 0, mtmSize);
17 memset(_serialNumber.data(), 0, snSize);
18
19 // Copy in as much as the fields as possible
20 for (size_t i = 0; i < mtmSize; i++)
21 {
22 if (typeModel.size() > i)
23 {
24 _machineTypeAndModel[i] = typeModel[i];
25 }
26 }
27
28 for (size_t i = 0; i < snSize; i++)
29 {
30 if (serialNumber.size() > i)
31 {
32 _serialNumber[i] = serialNumber[i];
33 }
34 }
35}
36
37MTMS::MTMS(Stream& stream)
38{
39 for (size_t i = 0; i < mtmSize; i++)
40 {
41 stream >> _machineTypeAndModel[i];
42 }
43
44 for (size_t i = 0; i < snSize; i++)
45 {
46 stream >> _serialNumber[i];
47 }
48}
49
50Stream& operator<<(Stream& s, MTMS& mtms)
51{
52 for (size_t i = 0; i < MTMS::mtmSize; i++)
53 {
Matt Spinler4b59f7a2019-10-08 13:55:17 -050054 s << mtms.machineTypeAndModelRaw()[i];
Matt Spinlerb6664332019-09-10 15:24:10 -050055 }
56
57 for (size_t i = 0; i < MTMS::snSize; i++)
58 {
Matt Spinler4b59f7a2019-10-08 13:55:17 -050059 s << mtms.machineSerialNumberRaw()[i];
Matt Spinlerb6664332019-09-10 15:24:10 -050060 }
61
62 return s;
63}
64
65Stream& operator>>(Stream& s, MTMS& mtms)
66{
67 for (size_t i = 0; i < MTMS::mtmSize; i++)
68 {
Matt Spinler4b59f7a2019-10-08 13:55:17 -050069 s >> mtms.machineTypeAndModelRaw()[i];
Matt Spinlerb6664332019-09-10 15:24:10 -050070 }
71
72 for (size_t i = 0; i < MTMS::snSize; i++)
73 {
Matt Spinler4b59f7a2019-10-08 13:55:17 -050074 s >> mtms.machineSerialNumberRaw()[i];
Matt Spinlerb6664332019-09-10 15:24:10 -050075 }
76
77 return s;
78}
79} // namespace pels
80} // namespace openpower