fdcavalcanti commented on code in PR #16491:
URL: https://github.com/apache/nuttx/pull/16491#discussion_r2132658119


##########
arch/risc-v/src/common/espressif/esp_pcnt.c:
##########
@@ -642,8 +645,38 @@ static int esp_pcnt_unit_get_count(struct cap_lowerhalf_s 
*dev, int *ret)
     }
 
   flags = spin_lock_irqsave(&priv->lock);
-  *ret = pcnt_ll_get_count(ctx.dev, priv->unit_id) +
-      priv->accum_value;
+  tmp_count = pcnt_ll_get_count(ctx.dev, priv->unit_id);
+
+  intr_status = pcnt_ll_get_intr_status(ctx.dev);
+  if (intr_status & PCNT_LL_UNIT_WATCH_EVENT(priv->unit_id))
+    {
+      event_status = pcnt_ll_get_event_status(ctx.dev, priv->unit_id);
+      while (event_status)
+        {
+          int event_id = __builtin_ffs(event_status) - 1;
+          event_status &= (event_status - 1);
+
+          if (priv->config.accum_count)
+            {
+              if (event_id == PCNT_LL_WATCH_EVENT_LOW_LIMIT)
+                {
+                  if (tmp_count >= (priv->config.low_limit / 2))
+                    {
+                      tmp_count += priv->config.low_limit;
+                    }

Review Comment:
   Can those go in a single if statement? You"ll probably have to break the 
line but is easier to read.
   ```suggestion
                 if ( (event_id == PCNT_LL_WATCH_EVENT_LOW_LIMIT) &&  \
                       (tmp_count >= (priv->config.low_limit / 2)) )
                   {
                      tmp_count += priv->config.low_limit;
                   }
   ```



##########
arch/risc-v/src/common/espressif/esp_pcnt.c:
##########
@@ -642,8 +645,38 @@ static int esp_pcnt_unit_get_count(struct cap_lowerhalf_s 
*dev, int *ret)
     }
 
   flags = spin_lock_irqsave(&priv->lock);
-  *ret = pcnt_ll_get_count(ctx.dev, priv->unit_id) +
-      priv->accum_value;
+  tmp_count = pcnt_ll_get_count(ctx.dev, priv->unit_id);
+
+  intr_status = pcnt_ll_get_intr_status(ctx.dev);
+  if (intr_status & PCNT_LL_UNIT_WATCH_EVENT(priv->unit_id))
+    {
+      event_status = pcnt_ll_get_event_status(ctx.dev, priv->unit_id);
+      while (event_status)
+        {
+          int event_id = __builtin_ffs(event_status) - 1;
+          event_status &= (event_status - 1);
+
+          if (priv->config.accum_count)
+            {
+              if (event_id == PCNT_LL_WATCH_EVENT_LOW_LIMIT)
+                {
+                  if (tmp_count >= (priv->config.low_limit / 2))
+                    {
+                      tmp_count += priv->config.low_limit;
+                    }

Review Comment:
   Can those go in a single if statement? You"ll probably have to break the 
line but is easier to read.
   Something like:
   ```suggestion
                 if ( (event_id == PCNT_LL_WATCH_EVENT_LOW_LIMIT) &&  \
                       (tmp_count >= (priv->config.low_limit / 2)) )
                   {
                      tmp_count += priv->config.low_limit;
                   }
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to