Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
configuration:telephone-on-serial [2017/10/23 15:04]
gray [SDK-Script]
configuration:telephone-on-serial [2017/10/23 16:35] (current)
fachet [SDK-Script]
Line 76: Line 76:
  
  
- /* DESC: This script can be used to write a message ​to the serial port. +/* DESC: This script can be used to write calling phone numbers ​  
-  * Copyright (C) 2017 NetModule AG, Switzerland + * CR/LF terminated ​to the serial port. 
-  */+ 
 + * Copyright (C) 2017 NetModule AG, Switzerland ​(arg) 
 + */
  
- void usage() +DEV = "SERIAL1";
- { +
-  printf("usage: serial-write.are <​msg>​\n"); +
-  exit(1); +
- }+
  
-  ​if (argc 1) { +/* open serial port  */ 
-     usage();  +fd = nb_serial_open(DEV);​ 
-        ​ +if (fd 0) { 
-  ​+  ​nb_syslog("​Unable to open %s", DEV); 
-      +  ​exit(2); 
-    DEV = "​SERIAL1"​;+}
  
-    /* check serial port config */ +ret nb_serial_setattr(DEV, 115200, 8, 1, 0, 0); 
-    st nb_config_get("​serial.0.status"​); +if (ret != 0) { 
-    if (st != "​2"​) { +  nb_syslog("​Could not set serial attributes on %s return code %i", DEV, ret); 
-       ​nb_syslog("​Serial port is not enabled for us\n"); +  exit(3); 
-       ​exit(2); +}
-    }+
  
-    ret = nb_serial_setattr(DEV,​ 115200, 8, 1, 0, 0); 
-    if (ret != 0) { 
-       ​nb_syslog("​Could not set serial attributes: %i \n",​ret);​ 
-       ​exit(3);​ 
-    } 
- 
-     while (true) { 
- 
-           MSG = nb_voice_event(1).call.calling;​ 
- 
-      if (!is_void(MSG)) { 
- 
-         MSG = left(MSG,​strlen(MSG)-5);​ 
-         MSG = right(MSG,​strlen(MSG)-6);​ 
- 
-         fd = nb_serial_open(DEV);​ 
-         if (fd < 0) { 
-            nb_syslog("​Unable to open %s\n",​DEV);​ 
-            exit(4); 
-         } 
- 
-         ​message = strcat(MSG, "​\r\n"​);​ 
-         ret = write(fd, message, strlen(message));​ 
-         if (ret > 0) { 
-            nb_syslog("​Wrote %d bytes to %s\n",​ret,​DEV);​ 
-         } else { 
-            nb_syslog("​Unable to write to %s\n",​DEV);​ 
-           } 
- 
-         ​close(fd);​ 
- 
-      } 
- 
-     } 
- 
- ​exit(0);​ 
  
 +while (true) {
 +  msg = nb_voice_event(1).call.calling;​ //​ check event with 1sec timeout
 +  if (!is_void(msg)) {
 +    msg = left(msg, strlen(msg) - 5); // trim phone number
 +    msg = right(msg, strlen(msg) - 6);
 +    msg = strcat(msg, "​\r\n"​);​
 +    len = strlen(msg);​
  
 +    if (write(fd, msg, len) != len) {
 + nb_syslog("​Error on writing %d bytes to %s", len, DEV);
 + close(fd);
 + exit(4);
 +    }
 +  }
 +}
 +/* not reached */
 </​code>​ </​code>​
  
 The SDK command „nb_voice_event“ makes it possible to query the status of the voice call. For more information about the SDK-API, see please to the Weblink http://​wiki.netmodule.com/​documentation/​start under the item Products under one of the router'​s model you have. The SDK command „nb_voice_event“ makes it possible to query the status of the voice call. For more information about the SDK-API, see please to the Weblink http://​wiki.netmodule.com/​documentation/​start under the item Products under one of the router'​s model you have.
  
-With a loop and the SDK command, you get when a voice call comes in. +You can use the test window to see when a voice call comes in.
- +
-<code - voice_evenet.are > +
- +
- while(true) +
-+
- dump(nb_voice_event(10));​ +
- }+
  
 +<​code>​
 +dump(nb_voice_event(10));​ // wait 10secs for call
 </​code>​ </​code>​
  
Line 156: Line 127:
  
 <​code>​ <​code>​
- 
-void 
- 
 struct(2): { struct(2): {
   .call = struct(4): {   .call = struct(4): {
Line 175: Line 143:
             .state = string[6]: "​hungup"​             .state = string[6]: "​hungup"​
           }           }
-  .type = string[6]: "​hungup"​ 
 } }