<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p>Hi Jason,</p>
<p><br>
</p>
<p></p>
<div>Sorry to bother you again.</div>
<div><br>
</div>
<div><span><span>After solving sensor type and event type problem for discrete sensor(memory) , I encountered another issue.</span></span></div>
<div><span><span><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;">From the code, it seems only support getting the
 sensor number of threshold-based sensors.</span><br>
</span></span></div>
<div><span>How do I get the sensor  number of discrete sensors?</span><br>
</div>
<div><span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;"><span>Would you have any
<span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;">
suggestion or </span>plan to get sensor number of discrete sensors?</span><br>
</span></div>
<div><br>
</div>
<p></p>
BRs,
<div>Will<br>
<div style="color: rgb(0, 0, 0);">
<div>
<div id="x_divRplyFwdMsg" dir="ltr">
<div><br>
</div>
<div><br>
</div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Hi Will,<br>
<br>
You are welcome to push changes directly to Gerrit for review.  I did a <br>
quick check of the code and it looks okay to push with one minor change <br>
of THRESHLOD -> THRESHOLD.<br>
<br>
Thanks,<br>
-Jason<br>
<br>
On 3/26/2019 8:28 PM, Will Liang (±ç¥Ã¹b) wrote:<br>
> Hi Jason,<br>
> <br>
> I have seen that the code has been resolved from the conflict and I can <br>
> bitbake it successfully too. Thanks.<br>
> <br>
> As indicated in my previous Email,  I need the "memory" sensor type and  <br>
> "sensor-specific" event type.<br>
> <br>
> Could you please help me to review the following changes.<br>
> <br>
> Andif you don't have any concerns, I will push the code to Gerrit ><br>
> sdrutils.hpp      | 34 +++++++++++++++++++++-------------<br>
> <br>
> sensorhandler.hpp |  8 ++++++++<br>
> <br>
> 2 files changed, 29 insertions(+), 13 deletions(-)<br>
> <br>
> diff --git a/sdrutils.hpp b/sdrutils.hpp<br>
> <br>
> index a91f3ea..bff2896 100644<br>
> <br>
> --- a/sdrutils.hpp<br>
> <br>
> +++ b/sdrutils.hpp<br>
> <br>
> @@ -20,9 +20,10 @@<br>
> <br>
> #include <boost/container/flat_map.hpp><br>
> <br>
> #include <cstring><br>
> <br>
> #include <phosphor-logging/log.hpp><br>
> <br>
> -<br>
> <br>
> +#include <types.hpp><br>
> <br>
> #pragma once<br>
> <br>
> +<br>
> <br>
> #ifdef JOURNAL_SEL<br>
> <br>
> struct CmpStrVersion<br>
> <br>
> {<br>
> <br>
> @@ -74,13 +75,14 @@ struct CmpStr<br>
> <br>
>       }<br>
> <br>
> };<br>
> <br>
> -const static boost::container::flat_map<const char*, ipmi_sensor_types, <br>
> CmpStr><br>
> <br>
> -    sensorTypes{{{"temperature", IPMI_SENSOR_TEMP},<br>
> <br>
> -                 {"voltage", IPMI_SENSOR_VOLTAGE},<br>
> <br>
> -                 {"current", IPMI_SENSOR_CURRENT},<br>
> <br>
> -                 {"fan_tach", IPMI_SENSOR_FAN},<br>
> <br>
> -                 {"fan_pwm", IPMI_SENSOR_FAN},<br>
> <br>
> -                 {"power", IPMI_SENSOR_OTHER}}};<br>
> <br>
> +const static boost::container::flat_map<const char*, <br>
> std::pair<ipmi_sensor_types, ipmi_event_types>, CmpStr><br>
> <br>
> +    sensorAndEventType{{{"temperature", <br>
> std::make_pair(IPMI_SENSOR_TEMP, THRESHLOD)},<br>
> <br>
> +                 {"voltage", std::make_pair(IPMI_SENSOR_VOLTAGE, <br>
> THRESHLOD)},<br>
> <br>
> +                 {"current", std::make_pair(IPMI_SENSOR_CURRENT, <br>
> THRESHLOD)},<br>
> <br>
> +                 {"fan_tach", std::make_pair(IPMI_SENSOR_FAN, THRESHLOD)},<br>
> <br>
> +                 {"fan_pwm", std::make_pair(IPMI_SENSOR_FAN, THRESHLOD)},<br>
> <br>
> +                 {"power", std::make_pair(IPMI_SENSOR_OTHER, THRESHLOD)},<br>
> <br>
> +                 {"memory", std::make_pair(IPMI_SENSOR_MEMORY, <br>
> SENSOR_SPECIFIC)}}};<br>
> <br>
>   inline static std::string getSensorTypeStringFromPath(const <br>
> std::string& path)<br>
> <br>
> {<br>
> <br>
> @@ -105,12 +107,11 @@ inline static uint8_t getSensorTypeFromPath(const <br>
> std::string& path)<br>
> <br>
> {<br>
> <br>
>       uint8_t sensorType = 0;<br>
> <br>
>       std::string type = getSensorTypeStringFromPath(path);<br>
> <br>
> -    auto findSensor = sensorTypes.find(type.c_str());<br>
> <br>
> -    if (findSensor != sensorTypes.end())<br>
> <br>
> +    auto findSensor = sensorAndEventType.find(type.c_str());<br>
> <br>
> +    if (findSensor != sensorAndEventType.end())<br>
> <br>
>       {<br>
> <br>
> -        sensorType = findSensor->second;<br>
> <br>
> +        sensorType = findSensor->second.first;<br>
> <br>
>       } // else default 0x0 RESERVED<br>
> <br>
> -<br>
> <br>
>       return sensorType;<br>
> <br>
> }<br>
> <br>
> @@ -128,7 +129,14 @@ inline static uint8_t getSensorNumberFromPath(const <br>
> std::string& path)<br>
> <br>
> inline static uint8_t getSensorEventTypeFromPath(const std::string& path)<br>
> <br>
> {<br>
> <br>
>       // TODO: Add support for additional reading types as needed<br>
> <br>
> -    return 0x1; // reading type = threshold<br>
> <br>
> +    uint8_t eventType = 0x00;<br>
> <br>
> +    std::string type = getSensorTypeStringFromPath(path);<br>
> <br>
> +    auto findSensor = sensorAndEventType.find(type.c_str());<br>
> <br>
> +    if (findSensor != sensorAndEventType.end())<br>
> <br>
> +    {<br>
> <br>
> +        eventType = findSensor->second.second;<br>
> <br>
> +    }<br>
> <br>
> +    return eventType; // reading type = threshold<br>
> <br>
> }<br>
> <br>
>   inline static std::string getPathFromSensorNumber(uint8_t sensorNum)<br>
> <br>
> diff --git a/sensorhandler.hpp b/sensorhandler.hpp<br>
> <br>
> index d3b6378..e449076 100644<br>
> <br>
> --- a/sensorhandler.hpp<br>
> <br>
> +++ b/sensorhandler.hpp<br>
> <br>
> @@ -36,6 +36,14 @@ enum ipmi_sensor_types<br>
> <br>
>       IPMI_SENSOR_FAN = 0x04,<br>
> <br>
>       IPMI_SENSOR_OTHER = 0x0B,<br>
> <br>
>       IPMI_SENSOR_TPM = 0xCC,<br>
> <br>
> +    IPMI_SENSOR_MEMORY = 0x0C,<br>
> <br>
> +};<br>
> <br>
> +<br>
> <br>
> +enum ipmi_event_types<br>
> <br>
> +{<br>
> <br>
> +    UNSPECIFIED = 0x00,<br>
> <br>
> +    THRESHLOD = 0x01,<br>
> <br>
> +    SENSOR_SPECIFIC = 0x6f,<br>
> <br>
> };<br>
> <br>
>   #define MAX_DBUS_PATH 128<br>
> <br>
> BRs,<br>
> <br>
> Will<br>
> <br>
> Hi Will,<br>
> <br>
> On 3/13/2019 5:05 AM, Will Liang (±ç¥Ã¹b) wrote:<br>
>> Hi Jason,<br>
>> <br>
>> Thanks for your response!<br>
>> <br>
>> I tried to modify the code, but I encountered some problems after pull the code from Gerrit.<br>
>> After I pull your codes and run "bitbake obmc-phosphor-image " command.<br>
>> It will shows ERROR: Task (/home/will/openbmc/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-net_git.bb:do_compile) failed with exit code '1'<br>
>> Do you have this error? Or what else do I need to do?<br>
> <br>
> Sorry, it's been a while since I built this patch, and there have been<br>
> some big changes to ipmid since I pushed it.  I'm not able to test it<br>
> right now, but it may just need to be rebased?<br>
>> <br>
>> I'm sorry, maybe this is a dumb question but I don¡¦t understand how you defined this "JOURNAL_SEL" parameter from *.bbappend?<br>
>> I tried it but it still can't run into the #ifdef JOURNAL_SEL part.<br>
> <br>
> There are no dumb questions with Yocto. :)  You need to add this line to<br>
> a phosphor-ipmi-host_%.bbappend:<br>
> EXTRA_OECONF = " --with-journal-sel"<br>
> <br>
> That should cause the define to be set by autoconfig during the build.<br>
> <br>
> Thanks,<br>
> -Jason<br>
> <br>
>> <br>
>> BRs,<br>
>> Will<br>
>> <br>
>>> Hi Will,<br>
>>><br>
>>> On 3/11/2019 12:39 AM, Will Liang (±ç¥Ã¹b) wrote:<br>
>>>> Hi Jason,<br>
>>>><br>
>>>> I've reviewed the code you pushed to<br>
>>> gerrit(<a href=""></a>https://gerrit.openbmc-project.xyz/#/c/openbmc/phosphor-host-ipmid/+<br>
>>> /12951/).<br>
>>>><br>
>>><br>
>>> I'm not sure if the patch will be approved by the maintainers.  So you are<br>
>>> aware, while it's in review, I have pushed the same code to the intel-ipmi-oem<br>
>>> repository.<br>
>>><br>
>>>> In sdrutils.hpp, the getSensorEventTypeFromPath() is set TODO status.<br>
>>>> If I need other event types and sensor types for my projects, do I<br>
>>>> have to complete the code and send you the code? Or I just push it myself?<br>
>>>><br>
>>><br>
>>> I'd suggest building your changes as a new patch that depends on the existing<br>
>>> patch.  Then if it's approved, your patch can be merged.  If not, you can port<br>
>>> the changes as needed.<br>
>>><br>
>>> Thanks,<br>
>>> -Jason<br>
>>><br>
>>>> For example, our project requires a "memory" sensor type and a<br>
>>>> "sensor-specific" event type, but I am confused about which way is<br>
>>> acceptable.<br>
>>>><br>
>>>> BRs,<br>
>>>> Will.<br>
>>>><br>
> <br>
</div>
</span></font></div>
</div>
</div>
</body>
</html>