acassis commented on code in PR #2118:
URL: https://github.com/apache/nuttx-apps/pull/2118#discussion_r1360825996


##########
examples/stepper/stepper.c:
##########
@@ -0,0 +1,151 @@
+/****************************************************************************
+ * apps/examples/stepper/stepper.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdbool.h>
+
+#include <nuttx/motor/stepper.h>
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+struct stepper_args
+{
+  FAR const char * path;

Review Comment:
   ```suggestion
     FAR const char *path;



##########
examples/stepper/stepper.c:
##########
@@ -0,0 +1,151 @@
+/****************************************************************************
+ * apps/examples/stepper/stepper.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdbool.h>
+
+#include <nuttx/motor/stepper.h>
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+struct stepper_args
+{
+  FAR const char * path;
+  int microstep;
+  int speed;
+  int steps;
+};
+
+static int parse_args(int argc, FAR char *argv[],
+                      FAR struct stepper_args *args)
+{
+  if (argc < 3)
+    {
+      return -1;
+    }
+
+  args->path = argv[1];
+  args->microstep = -1;
+  args->speed = 200;
+
+  for (int i = 2; i < argc; ++i)
+    {
+      if (strncmp("-m", argv[i], 2) == 0)
+        {
+          i++;
+          if (i >= argc)
+            {
+              return -1;
+            }
+
+          args->microstep = atoi(argv[i]);
+          i++;
+        }
+
+      if (strncmp("-s", argv[i], 2) == 0)
+        {
+          i++;
+          if (i >= argc)
+            {
+              return -1;
+            }
+
+          args->speed = atoi(argv[i]);
+          i++;
+        }
+    }
+
+  args->steps = atoi(argv[argc - 1]);
+  return 0;
+}
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+int main(int argc, FAR char *argv[])
+{
+  struct stepper_args args;
+  struct stepper_status_s status;
+  struct stepper_job_s job;
+  int fd;
+  int rc;
+
+  if (parse_args(argc, argv, &args) < 0)
+    {
+      printf("usage:\n"
+            "stepper path\n"
+            "              [-m microstep (sticky)]\n"
+            "              [-s speed in steps/s (default 200)]\n"
+            "              steps (positive: CW, negative: CCW)\n");
+      return 1;
+    }
+
+  fd = open(args.path, O_RDWR);
+  if (fd < 0)
+    {
+      printf("Oops: %s\n", strerror(errno));
+      exit(1);
+    }
+
+  if (args.microstep > 0)
+    {
+      printf("Set microstepping to %d\n", args.microstep);
+      rc = ioctl(fd, STEPIOC_MICROSTEPPING, args.microstep);
+      if (rc < 0)
+        {
+          printf("STEPIOC_MICROSTEPPING: %s\n", strerror(errno));
+          exit(2);
+        }
+    }
+
+  job.steps = args.steps;
+  job.speed = args.speed;
+
+  printf("GO -> %ld @ %ld steps/s\n", job.steps, job.speed);
+
+  /* Move the stepper */
+
+  rc = write(fd, &job, sizeof(struct stepper_job_s)); /* blocking */
+  if (rc != sizeof(struct stepper_job_s))
+    {
+      printf("write: %s\n", strerror(errno));
+    }
+
+  /* Retrieve the absolute position since boot */
+
+  rc = read(fd, &status, sizeof(struct stepper_status_s));
+  if (rc != sizeof(struct stepper_status_s))
+    {
+      printf("read: %s\n", strerror(errno));
+    }
+
+  printf("Current position: %ld\n", status.position);

Review Comment:
   Maybe it could be interesting to print the: "Position before stepper motor 
moving: " and "Position after stepper motor moving: " for diagnostic purposes.



##########
examples/stepper/stepper.c:
##########
@@ -0,0 +1,151 @@
+/****************************************************************************
+ * apps/examples/stepper/stepper.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdbool.h>
+
+#include <nuttx/motor/stepper.h>
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+struct stepper_args
+{
+  FAR const char * path;
+  int microstep;
+  int speed;
+  int steps;
+};
+
+static int parse_args(int argc, FAR char *argv[],
+                      FAR struct stepper_args *args)
+{
+  if (argc < 3)
+    {
+      return -1;
+    }
+
+  args->path = argv[1];
+  args->microstep = -1;
+  args->speed = 200;
+
+  for (int i = 2; i < argc; ++i)

Review Comment:
   Please use C89, don't declare "i" in the for loop, declare it at begging of 
the function.



-- 
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