blob: 9f9a16ecebe194784e6187716243e4afa3401dbc [file] [log] [blame]
Saqib Khanb0774702017-05-23 16:02:41 -05001#include "activation.hpp"
Saqib Khan4c1aec02017-07-06 11:46:13 -05002#include "item_updater.hpp"
Saqib Khanb0774702017-05-23 16:02:41 -05003
4namespace phosphor
5{
6namespace software
7{
8namespace updater
9{
10
11namespace softwareServer = sdbusplus::xyz::openbmc_project::Software::server;
12
13auto Activation::activation(Activations value) ->
14 Activations
15{
Saqib Khan4c1aec02017-07-06 11:46:13 -050016
17 if (value != softwareServer::Activation::Activations::Active)
18 {
19 redundancyPriority.reset(nullptr);
20 }
21
Saqib Khanb0774702017-05-23 16:02:41 -050022 if (value == softwareServer::Activation::Activations::Activating)
23 {
24 if (!activationBlocksTransition)
25 {
26 activationBlocksTransition =
27 std::make_unique<ActivationBlocksTransition>(
28 bus,
29 path);
30 }
Saqib Khan4c1aec02017-07-06 11:46:13 -050031
32 //TODO openbmc/openbmc#1756 - Add Logic for Code Update
33 if (!redundancyPriority)
34 {
35 redundancyPriority =
36 std::make_unique<RedundancyPriority>(
37 bus,
38 path,
39 *this,
40 0);
41 }
42
43 activationBlocksTransition.reset(nullptr);
44 return softwareServer::Activation::activation(
45 softwareServer::Activation::Activations::Active);
Saqib Khanb0774702017-05-23 16:02:41 -050046 }
47 else
48 {
49 activationBlocksTransition.reset(nullptr);
50 }
51 return softwareServer::Activation::activation(value);
52}
53
54auto Activation::requestedActivation(RequestedActivations value) ->
55 RequestedActivations
56{
57 if ((value == softwareServer::Activation::RequestedActivations::Active) &&
58 (softwareServer::Activation::requestedActivation() !=
59 softwareServer::Activation::RequestedActivations::Active))
60 {
61 if ((softwareServer::Activation::activation() ==
62 softwareServer::Activation::Activations::Ready) ||
63 (softwareServer::Activation::activation() ==
64 softwareServer::Activation::Activations::Failed))
65 {
66 Activation::activation(
67 softwareServer::Activation::Activations::Activating);
68
69 }
70 }
71 return softwareServer::Activation::requestedActivation(value);
72}
73
Saqib Khan4c1aec02017-07-06 11:46:13 -050074uint8_t RedundancyPriority::priority(uint8_t value)
75{
76 parent.parent.freePriority(value);
77 return softwareServer::RedundancyPriority::priority(value);
78}
79
Saqib Khanb0774702017-05-23 16:02:41 -050080} // namespace updater
81} // namespace software
82} // namespace phosphor