All Classes Namespaces Files Functions Variables Enumerations Enumerator
libs/range_sensor/c/samples/reboot_urg.c
Go to the documentation of this file.
00001 
00010 #include "urg_ctrl.h"
00011 #include "urg_delay.h"
00012 #include <stdio.h>
00013 #include <stdlib.h>
00014 
00015 
00016 static void urg_exit(urg_t *urg, const char *message)
00017 {
00018   printf("%s: %s\n", message, urg_error(urg));
00019   urg_disconnect(urg);
00020 
00021 #ifdef MSC
00022   getchar();
00023 #endif
00024   exit(1);
00025 }
00026 
00027 
00028 static void printVersion(urg_t *urg)
00029 {
00030   enum {
00031     LinesMax = 5,
00032   };
00033 
00034   char buffer[LinesMax][UrgLineWidth];
00035   char *lines[LinesMax];
00036   int ret;
00037   int i;
00038 
00039   /* Get version information */
00040   for (i = 0; i < LinesMax; ++i) {
00041     lines[i] = buffer[i];
00042   }
00043   ret = urg_versionLines(urg, lines, LinesMax);
00044   if (ret < 0) {
00045     urg_exit(urg, "urg_getVersion");
00046   }
00047 
00048   /* Display */
00049   for (i = 0; i < LinesMax; ++i) {
00050     printf("%s\n", lines[i]);
00051   }
00052   printf("\n");
00053 }
00054 
00055 
00056 int main(int argc, char *argv[])
00057 {
00058   enum {
00059     RebootTimes = 10,
00060     RebootMsec = 7000,         /* [msec] */
00061   };
00062 
00063 #ifdef WINDOWS_OS
00064   const char device[] = "COM4"; /* For Windows */
00065 #else
00066   const char device[] = "/dev/ttyACM0"; /* For Linux */
00067 #endif
00068 
00069   int ret;
00070   int i;
00071 
00072   urg_t urg;
00073 
00074   for (i = 0; i < RebootTimes; ++i) {
00075     ret = urg_connect(&urg, device, 115200);
00076     if (ret < 0) {
00077       urg_exit(&urg, "urg_connect()");
00078     }
00079 
00080     printVersion(&urg);
00081     urg_reboot(&urg);
00082 
00083     /* wait for rebooting */
00084     urg_delay(RebootMsec);
00085   }
00086 
00087   urg_disconnect(&urg);
00088 
00089   return 0;
00090 }