<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://wiki.netmodule.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://wiki.netmodule.com/feed.php">
        <title>NetModule Router Wiki sdk:scripts</title>
        <description></description>
        <link>http://wiki.netmodule.com/</link>
        <image rdf:resource="http://wiki.netmodule.com/lib/tpl/netmodule5G/images/favicon.ico" />
       <dc:date>2026-04-17T05:31:59+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/best-operator?rev=1688127943&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/candump?rev=1666348672&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/config-summary?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/dio-monitor?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/dio-server?rev=1656422913&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/dio?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/dynamic-operator?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/email-to-sms?rev=1656424298&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/etherwake?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/gps-monitor?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/gps-udp-client-compat?rev=1662379239&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/gps-udp-client?rev=1662379490&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/gps2serial-gnsstogps?rev=1616162914&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/led?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/modbus-rtu-master?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/modbus-rtu-slave?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/modbus-tcp-rtu-gateway?rev=1667893681&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/mount-media?rev=1662379739&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/opcua-browse?rev=1436251952&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/opcua-read?rev=1662379807&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/opcua-search?rev=1436252244&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/opcua-write?rev=1662379967&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/ping-supervision?rev=1662380226&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/read-config?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/remote-mail?rev=1662380350&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/scan-mobile?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/scan-wlan?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/send-mail?rev=1662380457&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/send-sms?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/serial-read?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/serial-readwrite?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/serial-tcp-broadcast?rev=1662380553&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/serial-tcsetattr?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/serial-udp-server?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/serial-write?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/set-ipsec-route?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/sms-control?rev=1661511843&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/sms-delete-inbox?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/sms-read-inbox?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/sms-to-email?rev=1593087349&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/sms-to-serial?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/snmp-agent?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/snmp-cmd?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/snmp-trap?rev=1662380651&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/start?rev=1432041399&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/status?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/syslog?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/tcpclient?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/tcpserver?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/techsupport?rev=1662380761&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/transfer-file?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/transfer?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/udp-msg-server?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/udpclient?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/udpserver?rev=1662380806&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/update-config?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/voice-dispatcher-audio?rev=1662380852&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/webpage?rev=1430838279&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.netmodule.com/sdk/scripts/write-config?rev=1666531876&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://wiki.netmodule.com/lib/tpl/netmodule5G/images/favicon.ico">
        <title>NetModule Router Wiki</title>
        <link>http://wiki.netmodule.com/</link>
        <url>http://wiki.netmodule.com/lib/tpl/netmodule5G/images/favicon.ico</url>
    </image>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/best-operator?rev=1688127943&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-30T12:25:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:best-operator</title>
        <link>http://wiki.netmodule.com/sdk/scripts/best-operator?rev=1688127943&amp;do=diff</link>
        <description>SDK Script best-operator.are

This script will scan for operators on startup and choose the one with the best signal. The script is only recommended for static installations.


/* DESC: This script will scan for operators on startup and choose the one with the best signal
 * Copyright (C) 2014 NetModule AG, Switzerland
 *
 */

ME = argv[0];           /* script path */
ARGV1 = argv[1];        /* 1st script argument */
SCAN_INTERVAL = 30;     /* scan interval */
REG_TIMEOUT = 60;       /* registra…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/candump?rev=1666348672&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-21T10:37:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:candump</title>
        <link>http://wiki.netmodule.com/sdk/scripts/candump?rev=1666348672&amp;do=diff</link>
        <description>SDK Script candump.are


/* DESC: This script can be used to receive CAN messages
 * Copyright (C) 2014 NetModule AG, Switzerland
 */

DEV = &quot;can0&quot;; /* CAN1 */
BITRATE = 125000; /* run 125kbit bitrate */
LISTENONLY = 1; /* open in listen-only mode */
RESTART_TIMEOUT = 0; /* restart timeout in case of bus-off (msecs, 0 = disabled) */
MAX_MESSAGES = 1024; /* max. number of dumped messages */

ret = nb_can_setattr(DEV, BITRATE, LISTENONLY, RESTART_TIMEOUT);
if (ret != 0) {
    printf(&quot;Unable to set…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/config-summary?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:config-summary</title>
        <link>http://wiki.netmodule.com/sdk/scripts/config-summary?rev=1430838279&amp;do=diff</link>
        <description>SDK Script config-summary.are


/* DESC: This script shows a summary of the currently running configuration.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

ret = nb_config_summary();

printf(&quot;Summary:\n%s\n&quot;, ret);

exit(0);</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/dio-monitor?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:dio-monitor</title>
        <link>http://wiki.netmodule.com/sdk/scripts/dio-monitor?rev=1430838279&amp;do=diff</link>
        <description>SDK Script dio-monitor.are


/* DESC: This script monitors the DIO ports and sends a SMS to the specified phone number.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage()
{
    print(&quot;dio-monitor.are &lt;din&gt; &lt;tel&gt;\n&quot;);
    print(&quot;  din:  digital input [in1|in2]\n&quot;);
    print(&quot;  tel:  telephone number to send the SMS to\n&quot;);
    exit(1);
}

void sendsms(tel, msg)
{
    id = nb_sms_send(tel, msg);
    if (id) {
        printf(&quot;Successfully spooled SMS (ID %s) to '%s'.\n&quot;, id, tel);
 …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/dio-server?rev=1656422913&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-28T13:28:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:dio-server</title>
        <link>http://wiki.netmodule.com/sdk/scripts/dio-server?rev=1656422913&amp;do=diff</link>
        <description>SDK Script dio-server.are

Connect to the tcp port with telnet or somethine elase and you can get and set digital in and output. 

Please keep in mind there is no authentification!

Everybody who has access to the IP of the Router could access this server</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/dio?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:dio</title>
        <link>http://wiki.netmodule.com/sdk/scripts/dio?rev=1430838279&amp;do=diff</link>
        <description>SDK Script dio.are


/* DESC: This script can be used to set a digital output port.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage()
{
    print(&quot;dio.are [dout] [state]\n&quot;);
    print(&quot;  dout:    digital output [out1|out2]\n&quot;);
    print(&quot;  state:   state to be set [0|1]\n&quot;);
    exit(1);
}

if (argc != 3) {
    usage();
}


dout = argv[1];
state = (int) argv[2];

rc = nb_dio_set(dout, state);
if (rc == 0) {
    printf(&quot;Setting state %d for digital output '%s'\n&quot;, state, dout);
…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/dynamic-operator?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:dynamic-operator</title>
        <link>http://wiki.netmodule.com/sdk/scripts/dynamic-operator?rev=1430838279&amp;do=diff</link>
        <description>SDK Script dynamic-operator.are


/* DESC: This script will scan Mobile2 and dial the appropriate SIM on Mobile1
 * Copyright (C) 2013 NetModule AG, Switzerland
 *
 */

template operator {
    prio;
    sim;
    lai;
    apn;
    username;
    password;

    int operator (int p, int s, string l, string a, string usr, string pwd) {
        this.prio = p;
        this.sim = s;
        this.lai = l;
        this.apn = a;
        this.username = usr;
        this.password = pwd;
        return 0;
  …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/email-to-sms?rev=1656424298&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-28T13:51:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:email-to-sms</title>
        <link>http://wiki.netmodule.com/sdk/scripts/email-to-sms?rev=1656424298&amp;do=diff</link>
        <description>SDK Script email-to-sms.are


/* DESC: This script implements a lightweight SMTP server which is able to receive mail and forward them as SMS to a phone number.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

MAX_CONECTIONS  = 1;                                    /* maximum of concurrent connections */
TIMEOUT         = 10;                                   /* receive timeout in seconds */
MAX_ERRORS      = 5;                                    /* max. number of error per session */
MAX_ME…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/etherwake?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:etherwake</title>
        <link>http://wiki.netmodule.com/sdk/scripts/etherwake?rev=1430838279&amp;do=diff</link>
        <description>SDK Script etherwake.are


/* DESC: This script can be used to wake up a sleeping host (WakeOnLan)
 * Copyright (C) 2013 NetModule AG, Switzerland
 */


if (nb_etherwake(&quot;11:22:33:44:55:66&quot;, &quot;LAN1&quot;) != 0) {
    nb_syslog(&quot;Unable to send WakeOnLan packet&quot;);
    exit(1);
}

nb_syslog(&quot;WakeOnLan packet has been sent&quot;);
exit(0);</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/gps-monitor?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:gps-monitor</title>
        <link>http://wiki.netmodule.com/sdk/scripts/gps-monitor?rev=1430838279&amp;do=diff</link>
        <description>SDK Script gps-monitor.are


/* DESC: A script for activating WLAN as soon as GPS position (lat,lon) is within a specified range.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

LAT_MAX = 47.377892;
LAT_MIN = 47.377897;

LON_MAX = 8.540053;
LON_MIN = 8.540057;

while(1) {
    status = nb_status(&quot;gnss&quot;);
    lat = struct_get(status, &quot;GNSS1_LATITUDE&quot;);
    lon = struct_get(status, &quot;GNSS1_LONGITUDE&quot;);

    if (lat != &quot;n/a&quot; &amp;&amp; lon != &quot;n/a&quot;) {
        printf(&quot;lat is %s, lon is %s\n&quot;, lat, lon);
…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/gps-udp-client-compat?rev=1662379239&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:00:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:gps-udp-client-compat</title>
        <link>http://wiki.netmodule.com/sdk/scripts/gps-udp-client-compat?rev=1662379239&amp;do=diff</link>
        <description>SDK Script gps-udp-client-compat.are


/* DESC: This script sends the local GPS NMEA stream (incl. serial/checksum) to a remote UDP server.
 * Copyright (C) 2013-2015 NetModule AG, Switzerland
 */

void usage() 
{
    nb_syslog(&quot;Usage: gps-udp-client.are &lt;server&gt; &lt;port&gt;&quot;);
    exit(1);
}

int connect_gpsd ()
{
    for (attempt = 0; attempt &lt; 60; attempt++) {
        sleep(1);

        sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        if (sock &lt; 0) {
            nb_syslog(&quot;Unable to creat…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/gps-udp-client?rev=1662379490&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:04:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:gps-udp-client</title>
        <link>http://wiki.netmodule.com/sdk/scripts/gps-udp-client?rev=1662379490&amp;do=diff</link>
        <description>SDK Script gps-udp-client.are


/* DESC: This script sends the local GPS NMEA stream to a remote UDP server.
 * Copyright (C) 2013-2015 NetModule AG, Switzerland
 */

void usage() {
	printf(&quot;usage: gps-udp-client.are &lt;server&gt; &lt;port&gt;\n&quot;);
	exit(1);
}

int gpsd_restart ()
{
    nb_syslog(&quot;Restarting GPS daemon&quot;);

    nb_config_set(&quot;gpsd.0.status=0&quot;);
    sleep(3);
    nb_config_set(&quot;gpsd.0.status=1&quot;);
    sleep(5);

    return 0;
}

int gpsd_connect ()
{
    nb_syslog(&quot;Connecting to GPS daemon&quot;);…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/gps2serial-gnsstogps?rev=1616162914&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-19T14:08:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:gps2serial-gnsstogps</title>
        <link>http://wiki.netmodule.com/sdk/scripts/gps2serial-gnsstogps?rev=1616162914&amp;do=diff</link>
        <description>SDK Script gps2serial-GNSStoGPS.are


    /* DESC: This script sends the local GPS NMEA stream to the serial interface.
     * DESC: It checks for the correct CR/LF end of line characters and convert messages $GN to $GP 
     * Copyright (C) 2013-2021) NetModule AG, Switzerland
     */
    /* Options to configure by user*/
    SER_SPEED = (int) argv[2]; /* Serial Baud Rate 4800, 9600, 19200, 38400, 57600, 115200 */
    SER_DATABIT = 8; /*  number of data bits (5, 6, 7, 8) */
    SER_STOPBIT = 1;…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/led?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:led</title>
        <link>http://wiki.netmodule.com/sdk/scripts/led?rev=1430838279&amp;do=diff</link>
        <description>SDK Script led.are


/* DESC: This script can be used to set a LED
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

LED = 0; /* use first LED */

ret = nb_led_acquire(LED);
if (ret == -1) {
    printf(&quot;unable to acquire led%d, retrying...\n&quot;, LED);

    nb_led_release(LED);
    ret = nb_led_acquire(LED);
    if (ret == -1) {
        printf(&quot;stil unable to acquire led%d, exiting\n&quot;, LED);
        exit(1);
    }
}

ret = nb_led_set(LED, LED_SOLID | LED_COLOR_RED);
if (ret != -1) {
    printf(&quot;…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/modbus-rtu-master?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:modbus-rtu-master</title>
        <link>http://wiki.netmodule.com/sdk/scripts/modbus-rtu-master?rev=1430838279&amp;do=diff</link>
        <description>SDK Script modbus-rtu-master.are


/* DESC: This script can be used to read messages from the serial port.
 * Copyright (C) 2015 NetModule AG, Switzerland
 */

DEV = &quot;SERIAL1&quot;;
SLAVEID = 1;

/* check serial port config */
st = nb_config_get(&quot;serial.0.status&quot;);
if (st != &quot;2&quot;) {
    nb_syslog(&quot;Serial port is not enabled for us&quot;);
    exit(1);
}

/* set attributes */
ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0);

if (ret != 0) {
    printf(&quot;Could not set serial attributes: %i \n&quot;,ret);
    exit…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/modbus-rtu-slave?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:modbus-rtu-slave</title>
        <link>http://wiki.netmodule.com/sdk/scripts/modbus-rtu-slave?rev=1430838279&amp;do=diff</link>
        <description>SDK Script modbus-rtu-slave.are


/* DESC: This script implements a modbus slave server
 * Copyright (C) 2015 NetModule AG, Switzerland
 */

DEV = &quot;SERIAL1&quot;;
SLAVEID = 1;
DEBUG = 0;

/* check serial port config */
st = nb_config_get(&quot;serial.0.status&quot;);
if (st != &quot;2&quot;) {
    nb_syslog(&quot;Serial port is not enabled for us&quot;);
    exit(1);
}

/* set attributes */
ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0);

if (ret != 0) {
    printf(&quot;Could not set serial attributes: %i \n&quot;,ret);
    exit(1);
}

…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/modbus-tcp-rtu-gateway?rev=1667893681&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-08T07:48:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:modbus-tcp-rtu-gateway</title>
        <link>http://wiki.netmodule.com/sdk/scripts/modbus-tcp-rtu-gateway?rev=1667893681&amp;do=diff</link>
        <description>SDK Script modbus-tcp-rtu-gateway.are


/* DESC: This script implements a Modbus TCP RTU gateway
 * Copyright (C) 2015-2016 NetModule AG, Switzerland
 */
DEVIDX      = 0;
DEV         = sprintf(&quot;SERIAL%d&quot;, (DEVIDX + 1));
TCP_PORT    = 1502;
DEBUG       = 0;



/* check serial port config */
st = nb_config_get(sprintf(&quot;serial.%d.status&quot;, DEVIDX));
if (st != &quot;2&quot;) {
    nb_syslog(&quot;%s is not enabled for us&quot;, DEV);
    exit(1);
}

/* set attributes */
ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0);
…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/mount-media?rev=1662379739&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:08:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:mount-media</title>
        <link>http://wiki.netmodule.com/sdk/scripts/mount-media?rev=1662379739&amp;do=diff</link>
        <description>SDK Script mount-media.are


/* DESC: This script can be used to mount an USB storage stick.
 * Copyright (C) 2012-2016 NetModule AG, Switzerland
 */

device = &quot;usb0&quot;; // or storage0
mntpoint = sprintf(&quot;/mnt/media/%s&quot;, device);

printf(&quot;Mounting '%s'&quot;, device);
ret = nb_media_mount(device);
if (ret == 0) {
    printf(&quot;Successfully mounted %s\n&quot;, device);
} else {
    printf(&quot;Unable to mount %s (rc %d)\n&quot;, ret, device);
    exit(1);
}

printf(&quot;\nMounted media:\n&quot;);
mounted = nb_media_getmount();
…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/opcua-browse?rev=1436251952&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-07-07T06:52:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:opcua-browse</title>
        <link>http://wiki.netmodule.com/sdk/scripts/opcua-browse?rev=1436251952&amp;do=diff</link>
        <description>SDK Script opcua-browse.are


/* DESC: This script will browse for Nodes, it will start at the given Node for the given depth.
 * Copyright (C) 2012 NetModule AG
 */

void usage () {
    printf(&quot;usage: opcua-browse.are &lt;opcuaserver&gt; &lt;nodeIndex&gt; &lt;nodeId&gt; &lt;depth&gt;\n&quot;);
    exit(1);
}

if (argc != 3) {
    usage();
}

opcuaserver = argv[1];
nodeIndex = (int) argv[2];
nodeId = (int) argv[3];
depth = (int) argv[4];


client_0 = nb_opcua_connect(opcuaserver);
if(client_0 &gt;= 0) {
	ret = nb_opcua_browse(…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/opcua-read?rev=1662379807&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:10:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:opcua-read</title>
        <link>http://wiki.netmodule.com/sdk/scripts/opcua-read?rev=1662379807&amp;do=diff</link>
        <description>SDK Script opcua-read.are


/* DESC: This script will read the node value at a OPC-UA server.
 * Copyright (C) 2015 NetModule AG, Switzerland
 */

void usage () 
{
    printf(&quot;usage: opcua-read.are &lt;server&gt; &lt;port&gt; &lt;node-index&gt; &lt;node-id&gt;\n&quot;);
    exit(1);
}

if (argc != 4) {
    usage();
}

server = argv[1];               /* hostname or address */
port = (int) argv[2];           /* TCP port */
nindex = (int) argv[3];         /* node index (e.g. 0) */
nid = (int) argv[4];            /* node id (e.…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/opcua-search?rev=1436252244&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-07-07T06:57:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:opcua-search</title>
        <link>http://wiki.netmodule.com/sdk/scripts/opcua-search?rev=1436252244&amp;do=diff</link>
        <description>SDK Script opcua-search.are



/* DESC: This script will search for Nodes similar to the given String.
 * Copyright (C) 2012 NetModule AG
 */

void usage () {
    printf(&quot;usage: opcua-search.are &lt;opcuaserver&gt; &lt;searchingString&gt;\n&quot;);
    exit(1);
}

if (argc != 2) {
    usage();
}

opcuaserver = argv[1];
searchingString = argv[2];


client_0 = nb_opcua_connect(opcuaserver);
if(client_0 &gt;= 0) {
	ret = nb_opcua_search(client_0, searchingString);
	if(ret == -1) {
		printf(&quot;could not search for %s\n&quot;,…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/opcua-write?rev=1662379967&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:12:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:opcua-write</title>
        <link>http://wiki.netmodule.com/sdk/scripts/opcua-write?rev=1662379967&amp;do=diff</link>
        <description>SDK Script opcua-write.are



/* DESC: This script will write a new value to a node at a OPC-UA server.
 * Copyright (C) 2015 NetModule AG, Switzerland
 */

void usage ()
{
    printf(&quot;usage: opcua-write.are &lt;server&gt; &lt;port&gt; &lt;node-index&gt; &lt;node-id&gt; &lt;new-value&gt;\n&quot;);
    exit(1);
}

if (argc != 5) {
    usage();
}

server = argv[1];               /* hostname or address */
port = (int) argv[2];           /* TCP port */
nindex = (int) argv[3];         /* node index (e.g. 0) */
nid = (int) argv[4];    …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/ping-supervision?rev=1662380226&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:17:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:ping-supervision</title>
        <link>http://wiki.netmodule.com/sdk/scripts/ping-supervision?rev=1662380226&amp;do=diff</link>
        <description>SDK Script ping-supervision.are


/* DESC: This script will supervise a specified host.
 * Copyright (C) 2013 NetModule AG, Switzerland
 */

void usage()
{
    printf(&quot;usage: ping-supervision.are &lt;host&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 2) {
    usage();
}

HOST = argv[1];
INTERVAL = 5;
MAX_FAILURES = 10;

failures = 0;
while (1) {
    ret = nb_ping(HOST);
    if (ret != 1) {
        failures++;
        nb_syslog(&quot;%s is not reachable (%d failures)&quot;, HOST, failures);
        if (failures &gt;= MAX_FAI…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/read-config?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:read-config</title>
        <link>http://wiki.netmodule.com/sdk/scripts/read-config?rev=1430838279&amp;do=diff</link>
        <description>SDK Script read-config.are


/* DESC: This script can be used to read a configuration parameter.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage() {
    printf(&quot;usage: read-config.are &lt;config-key&gt;\n&quot;);
}

if (argc &lt; 2) {
    usage();
} else {
    ret = nb_config_get(argv[1]);
    printf(&quot;%s=%s\n&quot;, argv[1], ret);
}

exit(0);</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/remote-mail?rev=1662380350&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:19:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:remote-mail</title>
        <link>http://wiki.netmodule.com/sdk/scripts/remote-mail?rev=1662380350&amp;do=diff</link>
        <description>SDK Script remote-mail.are


/* DESC: This script reads and sends mails from a remote IMAP/POP3/SMTP server
 * Copyright (C) 2014 NetModule AG, Switzerland
 */

SERVER = &quot;mail.example.com&quot;;
IMAPURL = strcat(&quot;imap://&quot;, SERVER);
SMTPURL = strcat(&quot;smtp://&quot;, SERVER);
USR = &quot;user&quot;;
PWD = &quot;password&quot;;
KEEP = 1;
AUTORESPOND = 0;
RESPONDTO = &quot;test@example.com&quot;;


cnt = nb_mail_list(USR, PWD, IMAPURL);
if (cnt &lt; 0) {
    printf(&quot;ERROR: unable to list mail on %s\n&quot;, SERVER);
    exit(1);
}

printf(&quot;saw %d …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/scan-mobile?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:scan-mobile</title>
        <link>http://wiki.netmodule.com/sdk/scripts/scan-mobile?rev=1430838279&amp;do=diff</link>
        <description>SDK Script scan-mobile.are


/* DESC: This script can be used to switch the Mobile LAI according to available networks
 * Copyright (C) 2013 NetModule AG, Switzerland
 */

IFC = &quot;Mobile1&quot;;
LAI = &quot;&quot;;
OPERATOR = &quot;MyOperator&quot;;

/* ATTENTION: Scanning for mobile networks will tear down any running WWAN connections */
nets = nb_scan_networks(IFC);
nr_nets = struct_get(nets, &quot;NETWORK_COUNT&quot;);

if (is_void(nr_nets) || nr_nets &lt; 1) {
    nb_syslog(&quot;no networks found on %s&quot;, IFC);
    exit(0);
}

/* look…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/scan-wlan?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:scan-wlan</title>
        <link>http://wiki.netmodule.com/sdk/scripts/scan-wlan?rev=1430838279&amp;do=diff</link>
        <description>SDK Script scan-wlan.are


/* DESC: This script can be used to switch the WLAN client network according to availability
 * Copyright (C) 2013 NetModule AG, Switzerland
 */

IFC = &quot;WLAN1&quot;;
NETWORK = &quot;&quot;;
MIN_SIGNAL = -90;

/* ATTENTION: Scanning for WLAN networks will tear down any running access-point */
nets = nb_scan_networks(IFC);
nr_nets = struct_get(nets, &quot;NETWORK_COUNT&quot;);

if (is_void(nr_nets) || nr_nets &lt; 1) {
    nb_syslog(&quot;no networks found on %s&quot;, IFC);
    exit(0);
}

/* lookup WLAN ne…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/send-mail?rev=1662380457&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:20:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:send-mail</title>
        <link>http://wiki.netmodule.com/sdk/scripts/send-mail?rev=1662380457&amp;do=diff</link>
        <description>SDK Script send-mail.are


/* DESC: This script will send an E-Mail to the specified address.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage () {
    printf(&quot;usage: send-email.are &lt;to&gt; &lt;subject&gt; &lt;msg&gt;\n&quot;);
    exit(1);
}

if (argc != 4) {
    usage();
}

to = argv[1];
subj = argv[2];
msg = &quot;&quot;;
for (i = 3; i &lt; argc; i++)  {
    msg = strcat(msg, &quot; &quot;, argv[i]);
}

ret = nb_email_send(to, subj, msg);
if (ret == 0) {
    printf(&quot;Successfully sent E-Mail to %s\n&quot;, to);
} else {
    p…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/send-sms?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:send-sms</title>
        <link>http://wiki.netmodule.com/sdk/scripts/send-sms?rev=1430838279&amp;do=diff</link>
        <description>SDK Script send-sms.are


/* DESC: This script will send an SMS to the specified phone number.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage() 
{
    printf(&quot;usage: send-sms.are &lt;phone&gt; &lt;msg&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 3) {
    usage();
}

phone = argv[1];

msg = &quot;&quot;;
for (i = 2; i &lt;= argc; i++) {
    msg = strcat(msg, &quot; &quot;, argv[i]);
}

id = nb_sms_send(phone, msg);
if (id) {
    printf(&quot;SMS to %s (ID %s) has been spooled\n&quot;, phone, id);
} else {
    printf(&quot;Unable to send …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/serial-read?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:serial-read</title>
        <link>http://wiki.netmodule.com/sdk/scripts/serial-read?rev=1430838279&amp;do=diff</link>
        <description>SDK Script serial-read.are


/* DESC: This script can be used to read messages from the serial port.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

DEV = &quot;SERIAL1&quot;;
READ_TIMEOUT = 5; /* seconds */

void usage()
{
    printf(&quot;usage: serial-read.are\n&quot;);
    exit(1);
}

/* check serial port config */
st = nb_config_get(&quot;serial.0.status&quot;);
if (st != &quot;2&quot;) {
    nb_syslog(&quot;Serial port is not enabled for us&quot;);
    exit(1);
}


/* set attributes */
ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0)…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/serial-readwrite?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:serial-readwrite</title>
        <link>http://wiki.netmodule.com/sdk/scripts/serial-readwrite?rev=1430838279&amp;do=diff</link>
        <description>SDK Script serial-readwrite.are


/* DESC: This script will write to and read from the serial port.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

DEV = &quot;SERIAL1&quot;;

/* check serial port config */
st = nb_config_get(&quot;serial.0.status&quot;);
if (st != &quot;2&quot;) {
    printf(&quot;Serial port is not enabled for us\n&quot;);
    exit(1);
}

/* set attributes first */
ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0);
if (ret != 0) {
    printf(&quot;Could not set serial attributes\n&quot;);
    exit(1);
}


if (nb_serial_wr…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/serial-tcp-broadcast?rev=1662380553&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:22:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:serial-tcp-broadcast</title>
        <link>http://wiki.netmodule.com/sdk/scripts/serial-tcp-broadcast?rev=1662380553&amp;do=diff</link>
        <description>SDK Script serial-tcp-broadcast.are


/* DESC: This script reads messages coming from the serial port and forwards them via TCP to remote hosts (and vice versa).
 * Copyright (C) 2014 NetModule AG, Switzerland
 *
 * Usage: usage: serial-tcp-broadcast.are &lt;remote-ip-1&gt;  &lt;remote-ip-2&gt; .... &lt;remote-ip-n&gt;
 * Version: 2.0
 *
 */

/* 
 * Options to configure by user
 */

/* Serial Baud Rate 9600, 19200, 38400, 57600, 115200 */
SER_SPEED = 115200;
/*  number of data bits (5, 6, 7, 8) */
SER_DATABIT = 8…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/serial-tcsetattr?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:serial-tcsetattr</title>
        <link>http://wiki.netmodule.com/sdk/scripts/serial-tcsetattr?rev=1430838279&amp;do=diff</link>
        <description>SDK Script serial-tcsetattr.are


/* DESC: This script can be used to set/get the attributes of the serial port.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage() 
{
    printf(&quot;usage: serial-tcsetattr.are &lt;dev&gt; &lt;baud&gt; &lt;databit&gt; &lt;stopbit&gt; &lt;parity&gt; &lt;flow&gt;\n&quot;);
    printf(&quot;    dev        device to open (e.g. SERIAL1)\n&quot;);
    printf(&quot;    baud       baudrate (e.g. 115200)\n&quot;);
    printf(&quot;    databit    data bit [7|8]\n&quot;);
    printf(&quot;    stopbit    stopbit [0|1]\n&quot;);
    printf(&quot;  …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/serial-udp-server?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:serial-udp-server</title>
        <link>http://wiki.netmodule.com/sdk/scripts/serial-udp-server?rev=1430838279&amp;do=diff</link>
        <description>SDK Script serial-udp-server.are


/* DESC: This script reads messages coming from the serial port and forwards them via UDP to a remote host (and vice versa).
 * Copyright (C) 2013 NetModule AG, Switzerland
 */

DEV = &quot;SERIAL1&quot;;

REMOTE_HOST = argv[1];
REMOTE_PORT = (int) argv[2];
LOCAL_PORT = (int) argv[3];
MAX_PACKET_SIZE = (int) argv[4];        /* bytes */
POLL_TIMEOUT = (int) argv[5];           /* seconds */
LATENCY = (int) argv[6];                /* seconds */

void usage()
{
    printf(&quot;u…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/serial-write?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:serial-write</title>
        <link>http://wiki.netmodule.com/sdk/scripts/serial-write?rev=1430838279&amp;do=diff</link>
        <description>SDK Script serial-write.are


/* DESC: This script can be used to write a message to the serial port.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage()
{
    printf(&quot;usage: serial-write.are &lt;msg&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 2) {
    usage();
}

DEV = &quot;SERIAL1&quot;;
MSG = argv[1];


/* check serial port config */
st = nb_config_get(&quot;serial.0.status&quot;);
if (st != &quot;2&quot;) {
    printf(&quot;Serial port is not enabled for us\n&quot;);
    exit(1);
}

ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/set-ipsec-route?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:set-ipsec-route</title>
        <link>http://wiki.netmodule.com/sdk/scripts/set-ipsec-route?rev=1430838279&amp;do=diff</link>
        <description>SDK Script set-ipsec-route.are


/* DESC: set route to IPSEC server depending on active WWAN / WLAN network
 * Copyright (C) 2014 NetModule AG, Switzerland
 *
 */

SERVER = nb_config_get(&quot;ipsec.0.remote.serverIp&quot;);

if (strlen(SERVER) == 0) {
    nb_syslog(&quot;no IPSEC server configured&quot;);
    exit(1);
}


nb_syslog(&quot;starting&quot;);
oldroute = &quot;&quot;;

while (1) {
    route = &quot;&quot;;
    status = nb_status(&quot;wan&quot;);
 
    wwan_status = struct_get(status, &quot;WANLINK1_STATE&quot;);
    wlan_status = struct_get(status, &quot;W…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/sms-control?rev=1661511843&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-26T11:04:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:sms-control</title>
        <link>http://wiki.netmodule.com/sdk/scripts/sms-control?rev=1661511843&amp;do=diff</link>
        <description>SMS-Control



/* DESC: This script will execute commands received by SMS.
 * Copyright (C) 2012 NetModule AG, Switzerland
 * 
 * sms-commands:
 * &lt;reboot&gt;: reboot netmodule router
 * &lt;connect&gt;: configure wanlink 0 permanent
 * &lt;disconnect&gt;: configure wanlink 0 disable 
 * &lt;status&gt;: get system status summary
 * &lt;output [1|2] [on|off]&gt; set dio n on or off
 */

INTERVAL        = 10;                           /* only run every 10 seconds                    */
MAXMSG          = 5;                   …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/sms-delete-inbox?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:sms-delete-inbox</title>
        <link>http://wiki.netmodule.com/sdk/scripts/sms-delete-inbox?rev=1430838279&amp;do=diff</link>
        <description>SDK Script sms-delete-inbox.are


/* DESC: This script can be used to flush the SMS inbox.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

msgs = nb_sms_list();

for (i=0; i&lt;(int)msgs; i++) {
   nb_sms_delete(msgs[i]);
}

printf(&quot;flushed SMS inbox&quot;);

exit(0);</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/sms-read-inbox?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:sms-read-inbox</title>
        <link>http://wiki.netmodule.com/sdk/scripts/sms-read-inbox?rev=1430838279&amp;do=diff</link>
        <description>SDK Script sms-read-inbox.are


/* DESC: This script can be used to read the SMS inbox.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

msgs = nb_sms_list();

printf(&quot;there are %d messages in your SMS inbox\n&quot;, (int)msgs);

for (i=0; i&lt;(int)msgs; i++) {
    msg = nb_sms_retrieve(msgs[i]);
    if (!msg) continue;

    printf(&quot;message %d (ID %s, length %d):\n%s\n\n&quot;, i, msgs[i], strlen(msg), msg);

    ret = nb_sms_delete(msgs[i]);
    if (ret == 0) printf(&quot;deleted message %d\n&quot;, i);
}

exit(…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/sms-to-email?rev=1593087349&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-25T12:15:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:sms-to-email</title>
        <link>http://wiki.netmodule.com/sdk/scripts/sms-to-email?rev=1593087349&amp;do=diff</link>
        <description>SDK Script sms-to-email.are


/* DESC: This script will forward incoming SMS messages to a given E-mail address.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */


if (argc &lt; 1 || strlen(argv[1]) == 0) {
    printf(&quot;usage: sms-to-email.are &lt;email-rcpt&gt;&quot;);
    exit(1);
}

rcpt = argv[1];

while(1) {
    msgs = nb_sms_list();
    nr_msgs = length(msgs);

    if (nr_msgs == 0) {
        sleep(10);
        continue;
    }

    for (i=0; i&lt;nr_msgs; i++) {
        msg = nb_sms_retrieve(msgs[i]);
  …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/sms-to-serial?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:sms-to-serial</title>
        <link>http://wiki.netmodule.com/sdk/scripts/sms-to-serial?rev=1430838279&amp;do=diff</link>
        <description>SDK Script sms-to-serial.are


/* DESC: This script can be used to write a received SMS to the serial port.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

DEV = &quot;SERIAL1&quot;;
MAXLINES = 100;

nb_syslog(&quot;sms-to-serial started&quot;);

/* check serial port config */
st = nb_config_get(&quot;serial.0.status&quot;);
if (st != &quot;2&quot;) {
    nb_syslog(&quot;Serial port is not enabled for us&quot;);
    exit(1);
}

/* check whether SMS daemon is enabled */
st = nb_config_get(&quot;smsd.status&quot;);
if (st != &quot;1&quot;) {
    nb_syslog(&quot;SMS …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/snmp-agent?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:snmp-agent</title>
        <link>http://wiki.netmodule.com/sdk/scripts/snmp-agent?rev=1430838279&amp;do=diff</link>
        <description>SDK Script snmp-agent.are


/* DESC: This script extends MIB entries of the SNMP agent
 * Copyright (C) 2014 NetModule AG, Switzerland
 */

template entry {
    name;
    ext;
    type;
    mode;

    int entry (string name, int ext, string type, string mode) {
        /* register entry */
        if (nb_snmp_register(name, ext, type, mode) &lt; 0) {
            nb_syslog(&quot;unable to register %s&quot;, name);
            exit(1);
        } 
        this.name = name;
        this.ext = ext;
        this.t…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/snmp-cmd?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:snmp-cmd</title>
        <link>http://wiki.netmodule.com/sdk/scripts/snmp-cmd?rev=1430838279&amp;do=diff</link>
        <description>SDK Script snmp-cmd.are


/* DESC: This script issues SNMP set/get commands
 * Copyright (C) 2014 NetModule AG, Switzerland
 */

HOST = &quot;192.168.1.1&quot;;
PORT = 161;
VERSION = 3;
USER = &quot;admin&quot;;
PASS = &quot;admin01admin01&quot;;
AUTH = &quot;MD5&quot;;
PRIV = &quot;DES&quot;;

if (nb_snmp_host(HOST, PORT, VERSION, USER, PASS, AUTH, PRIV) != 0) {
    nb_syslog(&quot;unable to set SNMP host&quot;);
    exit(1);
}


/* query sysDescr */
OID = &quot;.1.3.6.1.2.1.1.1.0&quot;;

ret = nb_snmp_get(OID);

if (is_void(ret)) {
    nb_syslog(&quot;unable to query…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/snmp-trap?rev=1662380651&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:24:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:snmp-trap</title>
        <link>http://wiki.netmodule.com/sdk/scripts/snmp-trap?rev=1662380651&amp;do=diff</link>
        <description>SDK Script snmp-trap.are


/* DESC: This script can be used to send SNMP traps
 * Copyright (C) 2014 NetModule AG, Switzerland
 */

HOST = &quot;192.168.1.254&quot;;
PORT = 162;
VERSION = 3;
COMMUNITY = &quot;public&quot;;
USER = &quot;traptest&quot;;
PASS = &quot;mypassword&quot;;
AUTH = &quot;SHA&quot;;
PRIV = &quot;AES&quot;;
ENGINE = &quot;0x8000000001020304&quot;;

nb_syslog(&quot;sending SNMPv%d traps to %s:%d&quot;, VERSION, HOST, PORT);

if (VERSION == 1) {
    /* use SNMPv1 */
    rc = nb_snmp_traphost(HOST, PORT, VERSION, COMMUNITY);
} else {
    /* use SNMPv3 */
…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/start?rev=1432041399&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-19T13:16:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:start</title>
        <link>http://wiki.netmodule.com/sdk/scripts/start?rev=1432041399&amp;do=diff</link>
        <description>List of SDK Scripts


	* SDK Script best-operator.are
	* SDK Script candump.are
	* SDK Script config-summary.are
	* SDK Script dio-monitor.are
	* SDK Script dio-server.are
	* SDK Script dio.are
	* SDK Script dynamic-operator.are
	* SDK Script email-to-sms.are
	* SDK Script etherwake.are
	* SDK Script gps-monitor.are
	* SDK Script gps-udp-client-compat.are
	* SDK Script gps-udp-client.are
	* SDK Script gps2serial-GNSStoGPS.are
	* SDK Script led.are
	* SDK Script modbus-rtu-master.are
	* SDK Scrip…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/status?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:status</title>
        <link>http://wiki.netmodule.com/sdk/scripts/status?rev=1430838279&amp;do=diff</link>
        <description>SDK Script status.are


/* DESC: This script can be used to display all status variables
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

sections = mkstruct (
    &quot;summary&quot;,   &quot;Short status summary&quot;,
    &quot;system&quot;,    &quot;System information&quot;,
    &quot;license&quot;,   &quot;License information&quot;,
    &quot;wwan&quot;,      &quot;WWAN module status&quot;,
    &quot;wlan&quot;,      &quot;WLAN module status&quot;,
    &quot;gnss&quot;,      &quot;GNSS (GPS) module status&quot;,
    &quot;lan&quot;,       &quot;LAN interface status&quot;,
    &quot;wan&quot;,       &quot;WAN interface status&quot;,
    &quot;openvp…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/syslog?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:syslog</title>
        <link>http://wiki.netmodule.com/sdk/scripts/syslog?rev=1430838279&amp;do=diff</link>
        <description>SDK Script syslog.are


/* DESC: Throw a simple syslog message.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage() {
    printf(&quot;usage: syslog.are &lt;msg&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 1) {
    usage();
}

ret = nb_syslog(argv[1]);
if (ret != 0) {
    printf(&quot;Unable to send syslog message\n&quot;);
}

exit(0);</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/tcpclient?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:tcpclient</title>
        <link>http://wiki.netmodule.com/sdk/scripts/tcpclient?rev=1430838279&amp;do=diff</link>
        <description>SDK Script tcpclient.are


/* DESC: This script sends a message to a TCP server.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage() 
{
    printf(&quot;usage: tcpclient.are &lt;server&gt; &lt;port&gt; &lt;msg&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 4) {
    usage();
}

server = argv[1];
port = (int) argv[2];
msg = &quot;&quot;;
for (i = 3; i &lt; argc; i++)  {
   msg = sprintf(&quot;%s %s&quot;,msg, argv[i]); 
}


sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock &lt; 0) {
    print(&quot;unable to open socket\n&quot;);
    exit(1);
…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/tcpserver?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:tcpserver</title>
        <link>http://wiki.netmodule.com/sdk/scripts/tcpserver?rev=1430838279&amp;do=diff</link>
        <description>SDK Script tcpserver.are


/* DESC: This script implements a TCP server which is able to receive messages.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

MAX_CONNECTIONS = 1;

void usage()
{
    printf(&quot;usage: tcpserver.are &lt;port&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 2) {
    usage();
}

port = (int) argv[1];
timeout = 10;

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock &lt; 0) {
    printf(&quot;Unable to open socket\n&quot;);
    exit(1);
}

ret = bind(sock, port, &quot;&quot;);
if (ret == -1) {
    pri…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/techsupport?rev=1662380761&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:26:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:techsupport</title>
        <link>http://wiki.netmodule.com/sdk/scripts/techsupport?rev=1662380761&amp;do=diff</link>
        <description>SDK Script techsupport.are

To upload a techsupport directy to a ftp server use this file: 


/* DESC: This transfers a techsupport to a remote FTP server
 * Copyright (C) 2014 NetModule AG, Switzerland
 */

FTP_SERVER = &quot;192.168.1.254&quot;;
FTP_USER   = &quot;user&quot;;
FTP_PASS   = &quot;password&quot;;

now = localtime(time());
timestamp = strftime(&quot;%Y%m%d%H%M%S&quot;, now);
url = sprintf(&quot;ftp://%s/techsupport-%s.zip&quot;, FTP_SERVER, timestamp);

nb_syslog(&quot;uploading techsupport to %s&quot;, url);

rc = nb_transfer_put(FTP_USER…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/transfer-file?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:transfer-file</title>
        <link>http://wiki.netmodule.com/sdk/scripts/transfer-file?rev=1430838279&amp;do=diff</link>
        <description>SDK Script transfer-file.are


/* DESC: This scripts archives a remote file
 * Copyright (C) 2015 NetModule AG, Switzerland
 */

usr = &quot;&quot;;
pwd = &quot;&quot;;
url = &quot;http://host/path&quot;;
source = &quot;/tmp/download&quot;;

ret = nb_transfer_get(usr, pwd, url, source);
if (ret != 0 || !file_exists(source)) {
   printf(&quot;download of %s failed\n&quot;, url);
   exit(1);
}

size = file_size(source);
if (size &lt;= 0) {
   printf(&quot;%s is empty or not present\n&quot;, source);
   exit(1);
}

modified = gmtime(file_mtime(source));
suffix…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/transfer?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:transfer</title>
        <link>http://wiki.netmodule.com/sdk/scripts/transfer?rev=1430838279&amp;do=diff</link>
        <description>SDK Script transfer.are


/* DESC: This scripts stores the latest GNSS positions in a remote FTP file
 * Copyright (C) 2014 NetModule AG, Switzerland
 */

SITE = &quot;ftp://x.x.x.x/test&quot;;
USR = &quot;username&quot;;
PWD = &quot;password&quot;;
DATA = &quot;data&quot;;

/* list a directory */
files = nb_transfer_list(USR, PWD, SITE);

/* dump(files); */

/* 
 * delete all files starting with DATA, filesize greater 1k and older than 10 minutes 
 */
for (i = 0; i &lt; length(files); i++) {
    file = files[i];

    name = struct_get(f…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/udp-msg-server?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:udp-msg-server</title>
        <link>http://wiki.netmodule.com/sdk/scripts/udp-msg-server?rev=1430838279&amp;do=diff</link>
        <description>SDK Script udp-msg-server.are


/* DESC: This script will run an UDP server which is able to receive messages and forward them as SMS/E-Mail.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage()
{
    printf(&quot;usage: udpserver.are &lt;port&gt; &lt;email-addr&gt; &lt;sms-number&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 2) {
    usage();
}

PORT = (int) argv[1];
EMAILADDR = trim((string) argv[2]);
NUMBER = trim((string) argv[3]);

/* check arguments */
if (strlen(EMAILADDR) &gt; 0) {
    pos = strchr(EMAILADDR, …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/udpclient?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:udpclient</title>
        <link>http://wiki.netmodule.com/sdk/scripts/udpclient?rev=1430838279&amp;do=diff</link>
        <description>SDK Script udpclient.are


/* DESC: This script sends a message to a remote UDP server.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage() 
{
    printf(&quot;usage: udpclient.are &lt;server&gt; &lt;port&gt; &lt;msg&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 4) {
    usage();
}

SERVER = argv[1];
PORT = (int) argv[2];
MSG = &quot;&quot;;

for (i = 3; i &lt; argc; i++)  {
    MSG = strcat(MSG, &quot; &quot;, argv[i]);
}

sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock &lt; 0) {
    printf(&quot;Unable to open socket\n&quot;);
    exit(1…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/udpserver?rev=1662380806&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:26:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:udpserver</title>
        <link>http://wiki.netmodule.com/sdk/scripts/udpserver?rev=1662380806&amp;do=diff</link>
        <description>SDK Script udpserver.are


/* DESC: This script implements an UDP server which is able to receive messages.
 * Copyright (C) 2012-2016 NetModule AG, Switzerland
 */

void usage()
{
    printf(&quot;usage: udpserver.are &lt;port&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 2) {
    usage();
}

PORT = (int) argv[1];

sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock &lt; 0) {
    nb_syslog(&quot;Unable to open socket&quot;);
    exit(1);
}

/* bind socket to 1st LAN interface */
addr = nb_ifc_address(&quot;LAN1&quot;);
ret = bind(s…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/update-config?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:update-config</title>
        <link>http://wiki.netmodule.com/sdk/scripts/update-config?rev=1430838279&amp;do=diff</link>
        <description>SDK Script update-config.are


/* DESC: This script can be used to perform a configuration update
 * Copyright (C) 2013 NetModule AG, Switzerland
 */

dir = &quot;/config&quot;;
url = sprintf(&quot;dir://%s&quot;, dir);

mkdir(dir, S_IRUSR|S_IWUSR|S_IXUSR);
mkdir(sprintf(&quot;%s/files&quot;, dir), S_IRUSR|S_IWUSR|S_IXUSR);

cfg = sprintf(&quot;%s/user-config.cfg&quot;, dir);
fp = fopen(cfg, &quot;w&quot;);
if (!fp) {
    printf(&quot;unable to open %s\n&quot;, cfg);
    exit(1);
}
fwrite(fp, &quot;config.version=1.1\n&quot;);
fwrite(fp, &quot;admin.password=admin01\n&quot;…</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/voice-dispatcher-audio?rev=1662380852&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-05T12:27:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:voice-dispatcher-audio</title>
        <link>http://wiki.netmodule.com/sdk/scripts/voice-dispatcher-audio?rev=1662380852&amp;do=diff</link>
        <description>SDK Script voice-dispatcher-audio.are


/* DESC: This script implements an audio voice dispatcher
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

INTERVAL = 3;           /* 3 seconds */
NUMBER = &quot;+123456789&quot;;  /* number to call when DI1 = on */

template dispatcher {
    in1;
    audio;

    int dispatcher ()
    {
        this.in1 = -1;

        endpoints = nb_voice_endpoint_list();
        if (is_array(endpoints)) {
            for (i = 0; i &lt; length(endpoints); i++) {
                ep …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/webpage?rev=1430838279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2015-05-05T15:04:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:webpage</title>
        <link>http://wiki.netmodule.com/sdk/scripts/webpage?rev=1430838279&amp;do=diff</link>
        <description>SDK Script webpage.are


/* DESC: This script will generate a page which can be viewed in the Web Manager
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

ID = 1;

/* show interface overview */
void show_interfaces ()
{
    interfaces = mkarray();
    nr_interfaces = 0;

    status = nb_status(&quot;lan&quot;);
    stlist = qsort(struct_fields(status));

    for (j = 0; j &lt; length(stlist); j++) {
        key = stlist[j];

        pos = strstr(key, &quot;_ADDRESS&quot;);
        if (!is_void(pos)) {
            …</description>
    </item>
    <item rdf:about="http://wiki.netmodule.com/sdk/scripts/write-config?rev=1666531876&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-23T13:31:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>sdk:scripts:write-config</title>
        <link>http://wiki.netmodule.com/sdk/scripts/write-config?rev=1666531876&amp;do=diff</link>
        <description>SDK Script write-config.are


/* DESC: This script can be used to set a configuration parameter.
 * Copyright (C) 2012 NetModule AG, Switzerland
 */

void usage() 
{
    printf(&quot;usage: write-config.are &lt;config-key&gt; &lt;config-value&gt;\n&quot;);
    exit(1);
}

if (argc &lt; 3) {
    usage();
}

msg = sprintf(&quot;%s=%s&quot;, argv[1], argv[2]);
ret = nb_config_set(msg);

if(ret &gt; 0) {
    printf(&quot;Successfully set %s=%s\n&quot;, argv[1], argv[2]);
} else {
    printf(&quot;Unable to write config\n&quot;);
}


exit(0);</description>
    </item>
</rdf:RDF>
