<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">I started on supporting enable/disable host sensors.<div>Everythings is fine until I add code to monitor host status as below.</div><div><div style="color:rgb(0,0,0)"><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:18px;line-height:27px;white-space:pre"><div><span style="color:rgb(86,156,214)">bool</span> <span style="color:rgb(78,201,176)">MainLoop</span>::<span style="color:rgb(220,220,170)">isHostOn</span>(<span style="color:rgb(86,156,214)">void</span>)</div><div>{</div><div>    <span style="color:rgb(86,156,214)">char</span> <span style="color:rgb(156,220,254)">buff</span>[<span style="color:rgb(181,206,168)">128</span>];</div><br><div>    <span style="color:rgb(197,134,192)">if</span> (!powerMatch)</div><div>    {</div><div>        <span style="color:rgb(220,220,170)">log</span><<span style="color:rgb(78,201,176)">level</span>::<span style="color:rgb(78,201,176)">ERR</span>>(<span style="color:rgb(206,145,120)">"Power Match Not Created"</span>);</div><div>    }</div><div>    <span style="color:rgb(220,220,170)">sprintf</span>(buff, <span style="color:rgb(206,145,120)">"isHostOn powerStatusOn: %d</span><span style="color:rgb(215,186,125)">\n</span><span style="color:rgb(206,145,120)">"</span>,powerStatusOn);</div><div>    <span style="color:rgb(220,220,170)">log</span><<span style="color:rgb(78,201,176)">level</span>::<span style="color:rgb(78,201,176)">INFO</span>>(buff);</div><div>    <span style="color:rgb(197,134,192)">return</span> powerStatusOn;</div><div>}</div><br><div><span style="color:rgb(78,201,176)">std</span>::shared_ptr<<span style="color:rgb(78,201,176)">sdbusplus</span>::<span style="color:rgb(78,201,176)">bus</span>::<span style="color:rgb(78,201,176)">match</span>::match> </div><div>    <span style="color:rgb(78,201,176)">MainLoop</span>::<span style="color:rgb(220,220,170)">startHostStateMonitor</span>(<span style="color:rgb(86,156,214)">void</span>) {</div><div>    <span style="color:rgb(197,134,192)">return</span> <span style="color:rgb(78,201,176)">std</span>::<span style="color:rgb(220,220,170)">make_shared</span><<span style="color:rgb(78,201,176)">sdbusplus</span>::<span style="color:rgb(78,201,176)">bus</span>::<span style="color:rgb(78,201,176)">match</span>::<span style="color:rgb(78,201,176)">match</span>>(</div><div>    *conn,</div><div>    <span style="color:rgb(206,145,120)">"type='signal',interface='org.freedesktop.DBus.Properties',"</span></div><div>    <span style="color:rgb(206,145,120)">"member='PropertiesChanged',arg0='xyz.openbmc_project.State.Host'"</span>,</div><div>    [](<span style="color:rgb(78,201,176)">sdbusplus</span>::<span style="color:rgb(78,201,176)">message</span>::<span style="color:rgb(78,201,176)">message</span> <span style="color:rgb(86,156,214)">&</span><span style="color:rgb(156,220,254)">msg</span>) {</div><div>    <span style="color:rgb(78,201,176)">std</span>::string interfaceName;</div><div>    <span style="color:rgb(78,201,176)">boost</span>::<span style="color:rgb(78,201,176)">container</span>::flat_map<<span style="color:rgb(78,201,176)">std</span>::string, <span style="color:rgb(78,201,176)">std</span>::variant<<span style="color:rgb(78,201,176)">std</span>::string>></div><div>        propertiesChanged;</div><div>    <span style="color:rgb(197,134,192)">try</span> {</div><div>        <span style="color:rgb(156,220,254)">msg</span>.<span style="color:rgb(220,220,170)">read</span>(interfaceName, propertiesChanged);</div><div>    } <span style="color:rgb(197,134,192)">catch</span> (<span style="color:rgb(78,201,176)">std</span>::exception &e) {</div><div>        <span style="color:rgb(220,220,170)">log</span><<span style="color:rgb(78,201,176)">level</span>::<span style="color:rgb(78,201,176)">ERR</span>>(<span style="color:rgb(206,145,120)">"Unable to read host state</span><span style="color:rgb(215,186,125)">\n</span><span style="color:rgb(206,145,120)">"</span>);</div><div>        <span style="color:rgb(197,134,192)">return</span>;</div><div>    }</div><div><span style="color:rgb(106,153,85)">    // We only want to check for CurrentHostState</span></div><div>    <span style="color:rgb(197,134,192)">if</span> (<span style="color:rgb(156,220,254)">propertiesChanged</span>.<span style="color:rgb(220,220,170)">begin</span>()-><span style="color:rgb(156,220,254)">first</span> != <span style="color:rgb(206,145,120)">"CurrentHostState"</span>) {</div><div>        <span style="color:rgb(197,134,192)">return</span>;</div><div>    }</div><div>    <span style="color:rgb(86,156,214)">auto</span> findState = <span style="color:rgb(156,220,254)">propertiesChanged</span>.<span style="color:rgb(220,220,170)">find</span>(powProperty);</div><div>    <span style="color:rgb(197,134,192)">if</span> (findState != <span style="color:rgb(156,220,254)">propertiesChanged</span>.<span style="color:rgb(220,220,170)">end</span>())</div><div>    {</div><div>        powerStatusOn = <span style="color:rgb(78,201,176)">boost</span>::<span style="color:rgb(220,220,170)">ends_with</span>(</div><div>            <span style="color:rgb(78,201,176)">std</span>::<span style="color:rgb(220,220,170)">get</span><<span style="color:rgb(78,201,176)">std</span>::<span style="color:rgb(78,201,176)">string</span>>(<span style="color:rgb(156,220,254)">findState</span>-><span style="color:rgb(156,220,254)">second</span>), <span style="color:rgb(206,145,120)">"Running"</span>);</div><div>    }</div><div>    powerMatch = <span style="color:rgb(86,156,214)">true</span>;</div><div>    });</div><div>}</div><div><br></div></div></div><div style="color:rgb(0,0,0)"><div style="color:rgb(212,212,212);background-color:rgb(30,30,30);font-family:Menlo,Monaco,"Courier New",monospace;font-size:18px;line-height:27px;white-space:pre-wrap"><div><span style="color:rgb(86,156,214)">void</span> <span style="color:rgb(78,201,176)">MainLoop</span>::<span style="color:rgb(220,220,170)">read</span>()</div><div>{</div><div><span style="color:rgb(106,153,85)">    // TODO: Issue#3 - Need to make calls to the dbus sensor cache here to</span></div><div><span style="color:rgb(106,153,85)">    //       ensure the objects all exist?</span></div><br><div><span style="color:rgb(106,153,85)">    /* Host changed state from On to Off */</span></div><div>    <span style="color:rgb(197,134,192)">if</span> (!<span style="color:rgb(220,220,170)">isHostOn</span>() && (lastPowerState == HOST_ON ||</div><div>            lastPowerState == HOST_NA)) {</div><div>        <span style="color:rgb(220,220,170)">removeHostSensors</span>();</div><div>        lastPowerState = HOST_OFF;</div><div>    }</div><br><div><span style="color:rgb(106,153,85)">    /* Host changed state from Off to On */</span></div><div>    <span style="color:rgb(197,134,192)">if</span> (<span style="color:rgb(220,220,170)">isHostOn</span>() && lastPowerState == HOST_OFF) {</div><div>        <span style="color:rgb(220,220,170)">addDroppedHostSensors</span>();</div><div>        lastPowerState = HOST_ON;</div><div>    }</div><div><br></div></div></div></div><div>When build openBMC I got error:</div><div><div>tmp/work/arm1176jzs-openbmc-linux-gnueabi/phosphor-hwmon/1.0+gitAUTOINC+5906173aec-r1/recipe-sysroot/lib/libpthread.so.0: error adding symbols: DSO missing from command line</div><div>| collect2: error: ld returned 1 exit status</div><div>| make[2]: *** [Makefile:643: phosphor-hwmon-readd] Error 1</div></div><div><br></div><div>It seems I need adding the threads lib to defend lib.</div><div>Any suggestion to add threads lib to build configuration?</div><div><br></div><div>Thanks.</div><div>Thu.</div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 21, 2020 at 11:54 PM Thu Ba Nguyen <<a href="mailto:tbnguyen1985@gmail.com" target="_blank">tbnguyen1985@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hi Vijay,</div><div><br></div>I took a look on entity-manager and openbmc source.<div>Don't have many companies  using entity-manager model to support sensors.</div><div><br></div><div>Regards</div><div>Thu Nguyen.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Oct 21, 2020 at 7:15 AM Vijay Khemka <<a href="mailto:vijaykhemka@fb.com" target="_blank">vijaykhemka@fb.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">





<div lang="EN-US" style="word-wrap:break-word">
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-style:solid none none;border-top-width:1pt;border-top-color:rgb(181,196,223);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From: </span></b><span style="font-size:12pt;color:black">openbmc <openbmc-bounces+vijaykhemka=<a href="mailto:fb.com@lists.ozlabs.org" target="_blank">fb.com@lists.ozlabs.org</a>> on behalf of Thu Ba Nguyen <<a href="mailto:tbnguyen1985@gmail.com" target="_blank">tbnguyen1985@gmail.com</a>><br>
<b>Date: </b>Monday, October 19, 2020 at 11:23 AM<br>
<b>To: </b>Ed Tanous <<a href="mailto:ed@tanous.net" target="_blank">ed@tanous.net</a>><br>
<b>Cc: </b>OpenBMC Maillist <<a href="mailto:openbmc@lists.ozlabs.org" target="_blank">openbmc@lists.ozlabs.org</a>><br>
<b>Subject: </b>Re: Enable/Disable some sensors when Host On/Off<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">Hi Ed Tanous,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">> Thanks for your info, <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">> But in your platform we are using phosphor-hwmon to manage sensors.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">> We don't use entity-manager.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">> As I knew we can't use both entity-manager and phosphor-hwmon for one project.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">You can use both but for different sensors. You can decide what sensors to configure<u></u><u></u></p>
<p class="MsoNormal">via EM/dbus-sensors and which one for phosphor-hwmon.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Regards<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thu Nguyen.<u></u><u></u></p>
</div>
</div>
</div>
</div>

</blockquote></div>
</blockquote></div>