Jelajahi Sumber

修复钱箱cat一直返回状态不停的问题

liu qidong [url ssh://qidong.liu@10.2.90.253:29418/] 4 minggu lalu
induk
melakukan
08c82c7a99
1 mengubah file dengan 7 tambahan dan 1 penghapusan
  1. 7 1
      cash_drawers.c

+ 7 - 1
cash_drawers.c

@@ -35,6 +35,7 @@ struct cashd_device {
     unsigned int in_status;
     unsigned int status_changed;
     int last_status;
+    int read_flag;
     struct delayed_work delay_work1;
     struct delayed_work delay_work2;
     void __iomem *gpio_ctl_reg_base;
@@ -105,6 +106,7 @@ static int cashd_open(struct inode *inode, struct file *filp)
     }
 
     filp->private_data = dev;
+    dev->read_flag = 0;
     pr_info("cashd: Device /dev/cashd%d opened\n", minor);
     
     return 0;
@@ -129,7 +131,11 @@ static ssize_t cashd_read(struct file *filp, char __user *buf,
     
     if (!buf || count == 0)
         return -EINVAL;
-
+    if(dev->read_flag >= 1)
+    {
+        return 0;
+    }
+    dev->read_flag++;
     dev->in_status = readl(dev->gpio_status_reg_base);
 
     if(dev->in_status & 0x2)