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 10:13]
fachet [Router License Generator]
configuration:telephone-on-serial [2017/10/23 16:35] (current)
fachet [SDK-Script]
Line 73: Line 73:
 The SDK script „serial-write.are“ us extended for output of the call number on the serial interface. The SDK script „serial-write.are“ us extended for output of the call number on the serial interface.
  
-<code - phone_number_on_serial_port.ads   >+<code - serial-write.are   >
  
  
-/* 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: phone number on serial port.are <​msg>​\n"); +/* open serial port  */ 
-    exit(1);+fd = nb_serial_open(DEV); 
 +if (fd < 0) 
 +  ​nb_syslog("Unable to open %s", DEV); 
 +  exit(2);
 } }
  
-if (argc < 1) { +ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0); 
-    usage();+if (ret != 0) { 
 +  ​nb_syslog("​Could not set serial attributes on %s return code %i", DEV, ret); 
 +  exit(3);
 } }
  
-DEV = "​SERIAL1";​ 
  
-while(true) +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);​
  
- MSG = nb_voice_event(1).call.calling;​ +    if (write(fd, ​msglen!= len) { 
- + nb_syslog("Error on writing ​%d bytes to %s", ​len, DEV); 
- if ( !is_void(MSG)) + close(fd); 
- { + exit(4); 
- +    } 
- MSG = left(MSG,​strlen(MSG)-5);​ +  }
- MSG = right(MSG,​strlen(MSG)-6);​ +
- +
- /* check serial port config */ +
- st = nb_config_get("​serial.0.status"​);​ +
- if (st != "​2"​) { +
-    printf("​Serial port is not enabled for us\n"​);​ +
-    exit(1); +
- } +
- +
- ret = nb_serial_setattr(DEV,​ 115200, 8, 1, 0, 0); +
- if (ret != 0) { +
-     ​printf("​Could not set serial attributes: %i \n",​ret);​ +
-     ​exit(1);​ +
- } +
- +
- fd = nb_serial_open(DEV);​ +
- if (fd < 0) { +
-     ​printf("​Unable to open %s\n", DEV); +
-     ​exit(1);​ +
- } +
- +
- ​message = strcat(MSG, "​\r\n"​);​ +
- ret = write(fd, ​messagestrlen(message)); +
- if (ret> 0) { +
-     printf("Wrote %d bytes to %s\n", ​ret, DEV); +
- } else { +
-     ​printf("​Unable to write to %s\n", DEV); +
- +
- close(fd); +
- +
- }+
 } }
- +/* not reached */
-exit(0); +
 </​code>​ </​code>​
  
-The SDK command „nb_voice_event“ makes it possible to query the status of the voice call. At the address of the router  ​http://192.168.1.1/admin/sdk-api-functions.php#​sec2.15 can get further information ​of the command.+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.ads > +
- +
- while(true) +
-+
- dump(nb_voice_event(10));​ +
- }+
  
 +<​code>​
 +dump(nb_voice_event(10));​ // wait 10secs for call
 </​code>​ </​code>​
  
Line 154: Line 127:
  
 <​code>​ <​code>​
- 
-void 
- 
 struct(2): { struct(2): {
   .call = struct(4): {   .call = struct(4): {
Line 173: Line 143:
             .state = string[6]: "​hungup"​             .state = string[6]: "​hungup"​
           }           }
-  .type = string[6]: "​hungup"​ 
 } }