Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sdk:gps2serial [2020/03/25 12:07] fachetsdk:gps2serial [2020/03/25 12:21] (current) fachet
Line 5: Line 5:
 ===== Script Summary  ===== ===== Script Summary  =====
  
-This Script connects to the GPS server via tcpT +This Script connects to the GPS server and forwards the data to the first serial interface
 +GPS must be enabled and in RAW mode.
 The default serial parameters for GPS are 4800 8N1 (8 databit, no parity, 1 stop bit, no flow controll). This parameter can be configured at the begining of the script.  The default serial parameters for GPS are 4800 8N1 (8 databit, no parity, 1 stop bit, no flow controll). This parameter can be configured at the begining of the script. 
 Please use if possible a higher data rate e.g. 115200. Please use if possible a higher data rate e.g. 115200.
Line 25: Line 25:
 Detailed step by step instructions how to install a sdk script can be found [[sdk:testing-the-sms-send-script|on this wiki page]] Detailed step by step instructions how to install a sdk script can be found [[sdk:testing-the-sms-send-script|on this wiki page]]
  
-Please combine this script with the **"system-startup" trigger** to a job +Please combine this script with the **"system-startup" trigger** to get a job.
- +
-This script does not need any configuration, but you can define the serial parameter to your needs: +
- +
-<code c> +
- +
-/* Serial Baud Rate 4800, 9600, 19200, 38400, 57600, 115200 */ +
-SER_SPEED=4800; +
-/*  number of data bits (5, 6, 7, 8) */ +
-SER_DATABIT=8; +
-/*  number of stop bits (1, 2) */ +
-SER_STOPBIT=1; +
-/* parity (0=no parity, 1=odd parity, 2=even parity) */ +
-SER_PARITY=0; +
-/*  flow control (0=none, 1=xon/xoff, 2=hardware) */ +
-SER_FLOW=0; +
-/*  name of the Serial Interface (Only changed if your device has more then one serial Interface (NB3710) */ +
-DEV = "SERIAL1"; +
- +
- +
-</code> +
- +
-===== Testing ====== +
- +
-To be sure the script is running you can take a look on the [[http://simulator.netmodule.com/logs.php.html|System Log]] and watch for outputs like:  +
-<code bash> +
-Apr 23 00:53:41 NB2700 user.info sdkhost[2283]: testrun: starting serial +
-Apr 23 00:53:42 NB2700 user.info sdkhost[2283]: testrun: Connecting to GPS daemon +
-Apr 23 00:53:42 NB2700 user.info sdkhost[2283]: testrun: Requesting raw NMEA stream +
-Apr 23 00:53:42 NB2700 user.info sdkhost[2283]: testrun: Successfully connected to GPS daemon +
-Apr 23 00:53:42 NB2700 user.info sdkhost[2283]: testrun: Processing NMEA data +
-Apr 23 00:53:42 NB2700 user.info sdkhost[2283]: testrun: Unable to send message to via Serial +
-Apr 23 00:54:08 NB2700 user.info sdkhost[2283]: testrun: starting serial +
-Apr 23 00:54:09 NB2700 user.info sdkhost[2283]: testrun: Connecting to GPS daemon +
-Apr 23 00:54:09 NB2700 user.info sdkhost[2283]: testrun: Requesting raw NMEA stream +
-Apr 23 00:54:09 NB2700 user.info sdkhost[2283]: testrun: Successfully connected to GPS daemon +
-Apr 23 00:54:09 NB2700 user.info sdkhost[2283]: testrun: Processing NMEA data +
- +
-</code>+
  
 ===== The Script ===== ===== The Script =====
Line 87: Line 49:
    
 int start_serial() { int start_serial() {
 + if (nb_config_get("serial.0.status") != "2") {
 +    nb_syslog("serial not assinged to SDK\n");
 +        exit(2);
 +    }
     // printf("set serial attributes\n");     // printf("set serial attributes\n");
     if ((rc = nb_serial_setattr(DEV, SER_SPEED, SER_DATABIT, SER_STOPBIT, SER_PARITY, SER_FLOW)) != 0) {     if ((rc = nb_serial_setattr(DEV, SER_SPEED, SER_DATABIT, SER_STOPBIT, SER_PARITY, SER_FLOW)) != 0) {
Line 104: Line 70:
     if (nb_config_get("gpsd.0.status") != "1" || nb_config_get("gpsd.0.cmode") != "1") {     if (nb_config_get("gpsd.0.status") != "1" || nb_config_get("gpsd.0.cmode") != "1") {
     nb_syslog("gpsd not enabled or not in RAW mode\n");     nb_syslog("gpsd not enabled or not in RAW mode\n");
-        exit(2);+        exit(3);
     }     }
     while (1) {     while (1) {
Line 126: Line 92:
 if ((serial_fd = start_serial()) < 0 ) { if ((serial_fd = start_serial()) < 0 ) {
     nb_syslog("Could not start serial, exiting\n");     nb_syslog("Could not start serial, exiting\n");
-    exit(3);+    exit(4);
 } }
 // printf("connect to gpsd\n"); // printf("connect to gpsd\n");
Line 140: Line 106:
     if (rv < 0 || ( data = recv(gpsd)) == "") {     if (rv < 0 || ( data = recv(gpsd)) == "") {
         nb_syslog("Select or recv failed, re-connecting to GPS daemon\n");         nb_syslog("Select or recv failed, re-connecting to GPS daemon\n");
 + close(gpsd);
         if ((gpsd = connect_gpsd()) < 0)         if ((gpsd = connect_gpsd()) < 0)
-            exit(4); /* can't connect */+            exit(5); /* can't connect */
         continue;         continue;
     }     }
Line 152: Line 119:
 close(gpsd); close(gpsd);
 close(serial_fd); close(serial_fd);
-exit(5); +exit(6);
 </code> </code>