blob: 3d203eabf54d2128c2213bcf9148adceeae3ef73 [file] [log] [blame]
Alexander Hansen40fb5492025-10-28 17:56:12 +01001// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright 2019 IBM Corporation
3
Matt Spinlerb6664332019-09-10 15:24:10 -05004#include "mtms.hpp"
5
6namespace openpower
7{
8namespace pels
9{
10
11MTMS::MTMS()
12{
13 memset(_machineTypeAndModel.data(), 0, mtmSize);
14 memset(_serialNumber.data(), 0, snSize);
15}
16
17MTMS::MTMS(const std::string& typeModel, const std::string& serialNumber)
18{
19 memset(_machineTypeAndModel.data(), 0, mtmSize);
20 memset(_serialNumber.data(), 0, snSize);
21
22 // Copy in as much as the fields as possible
23 for (size_t i = 0; i < mtmSize; i++)
24 {
25 if (typeModel.size() > i)
26 {
27 _machineTypeAndModel[i] = typeModel[i];
28 }
29 }
30
31 for (size_t i = 0; i < snSize; i++)
32 {
33 if (serialNumber.size() > i)
34 {
35 _serialNumber[i] = serialNumber[i];
36 }
37 }
38}
39
40MTMS::MTMS(Stream& stream)
41{
42 for (size_t i = 0; i < mtmSize; i++)
43 {
44 stream >> _machineTypeAndModel[i];
45 }
46
47 for (size_t i = 0; i < snSize; i++)
48 {
49 stream >> _serialNumber[i];
50 }
51}
52
Matt Spinler654708f2019-11-06 09:59:07 -060053Stream& operator<<(Stream& s, const MTMS& mtms)
Matt Spinlerb6664332019-09-10 15:24:10 -050054{
55 for (size_t i = 0; i < MTMS::mtmSize; i++)
56 {
Matt Spinler4b59f7a2019-10-08 13:55:17 -050057 s << mtms.machineTypeAndModelRaw()[i];
Matt Spinlerb6664332019-09-10 15:24:10 -050058 }
59
60 for (size_t i = 0; i < MTMS::snSize; i++)
61 {
Matt Spinler4b59f7a2019-10-08 13:55:17 -050062 s << mtms.machineSerialNumberRaw()[i];
Matt Spinlerb6664332019-09-10 15:24:10 -050063 }
64
65 return s;
66}
67
68Stream& operator>>(Stream& s, MTMS& mtms)
69{
Matt Spinler654708f2019-11-06 09:59:07 -060070 std::array<uint8_t, MTMS::mtmSize> mtm;
71
Matt Spinlerb6664332019-09-10 15:24:10 -050072 for (size_t i = 0; i < MTMS::mtmSize; i++)
73 {
Matt Spinler654708f2019-11-06 09:59:07 -060074 s >> mtm[i];
Matt Spinlerb6664332019-09-10 15:24:10 -050075 }
76
Matt Spinler654708f2019-11-06 09:59:07 -060077 mtms.setMachineTypeAndModel(mtm);
78
79 std::array<uint8_t, MTMS::snSize> sn;
Matt Spinlerb6664332019-09-10 15:24:10 -050080 for (size_t i = 0; i < MTMS::snSize; i++)
81 {
Matt Spinler654708f2019-11-06 09:59:07 -060082 s >> sn[i];
Matt Spinlerb6664332019-09-10 15:24:10 -050083 }
84
Matt Spinler654708f2019-11-06 09:59:07 -060085 mtms.setMachineSerialNumber(sn);
86
Matt Spinlerb6664332019-09-10 15:24:10 -050087 return s;
88}
89} // namespace pels
90} // namespace openpower