<div dir="ltr"><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">I’d like to discuss the design of <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">phosphor-time-manager</code> with the new sdbusplus interfaces.</p><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">Please see below background and new design, let me know if you have any comments.<br>Thanks!</p><h3 id="gmail-background" style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;margin:1.3em 0px 1em;padding:0px;font-size:1.3em">Background</h3><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">Legacy time-manager expose below interfaces and methods:</p><ul style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:1.2em 0px;padding-left:2em"><li style="outline:none;margin:0.5em 0px">curr_time_mode</li><li style="outline:none;margin:0.5em 0px">curr_time_owner</li><li style="outline:none;margin:0.5em 0px">requested_time_mode</li><li style="outline:none;margin:0.5em 0px">requested_time_owner</li><li style="outline:none;margin:0.5em 0px">GetTime(target)</li><li style="outline:none;margin:0.5em 0px">SetTime(target, time)</li></ul><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">The implementation of <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Get/SetTime()</code> will check the current time mode and owner, and do below:</p><ul style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:1.2em 0px;padding-left:2em"><li style="outline:none;margin:0.5em 0px">For <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">GetTime(<target>)</code>:<ul style="outline:none;margin:0px;padding-left:1em"><li style="outline:none;margin:0.5em 0px">If target is “bmc”, return BMC time;</li><li style="outline:none;margin:0.5em 0px">If target is “host”, return Host time;</li><li style="outline:none;margin:0.5em 0px">Else, return error</li></ul></li><li style="outline:none;margin:0.5em 0px">For <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">SetTime(target, time)</code>:<ul style="outline:none;margin:0px;padding-left:1em"><li style="outline:none;margin:0.5em 0px">If target is “bmc”:<ul style="outline:none;margin:0px;padding-left:1em"><li style="outline:none;margin:0.5em 0px">If mode is NTP, return error</li><li style="outline:none;margin:0.5em 0px">If owner is “HOST”, return error</li><li style="outline:none;margin:0.5em 0px">Set BMC time</li></ul></li><li style="outline:none;margin:0.5em 0px">If target is “host”:<ul style="outline:none;margin:0px;padding-left:1em"><li style="outline:none;margin:0.5em 0px">If owner is “BMC”, return error</li><li style="outline:none;margin:0.5em 0px">Set Host time</li><li style="outline:none;margin:0.5em 0px">If owner is “SPLIT”, save the diff between BMC time and Host time;</li></ul></li></ul></li></ul><h3 id="gmail-new-design" style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;margin:1.3em 0px 1em;padding:0px;font-size:1.3em">New Design</h3><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">Now with sdbusplus, we have EpochTime interface, with <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">elapsed</code> property.</p><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">After discussion with Li Yi and Vishwa, we decided to implement as below:</p><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">Create two objects:</p><ul style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:1.2em 0px;padding-left:2em"><li style="outline:none;margin:0.5em 0px"><code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">BmcEpoch</code></li><li style="outline:none;margin:0.5em 0px"><code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">HostEpoch</code></li></ul><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">They both implements EpochTime interface.</p><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">For <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">BmcEpoch</code>:</p><ul style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:1.2em 0px;padding-left:2em"><li style="outline:none;margin:0.5em 0px">When <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">elapsed()</code> is called, return BMC time;</li><li style="outline:none;margin:0.5em 0px">When <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">elapsed(us)</code> is called, use above SetTime(“bmc”) logic</li></ul><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">For <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">HostEpoch</code>:</p><ul style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:1.2em 0px;padding-left:2em"><li style="outline:none;margin:0.5em 0px">When <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">elapsed()</code> is called, return HOST time;</li><li style="outline:none;margin:0.5em 0px">When <code style="outline:none;font-size:0.85em;font-family:consolas,inconsolata,courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">elapsed(us)</code> is called, use above SetTime(“host”) logic.</li></ul><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">And there will be no “curr_time_mode/owner” or “requested_time_mode/owner” properties on DBUS.</p><p style="outline:none;color:rgb(18,18,18);font-family:arial,helvetica,sans-serif;font-size:14px;margin:0px 0px 1.2em">--<br>BRs,<br>Lei YU</p></div>