Hi,

please see comments below...

Thanks,
Alex

Stanislav Sinyagin schrieb:
now it's attached

--- Stanislav Sinyagin <[EMAIL PROTECTED]> wrote:


Attached, please see the patch against CVS HEAD.

It shouldn't break any existing functionality, and I've tested it with Perle IOLAN DS1 terminal server.

regards,
stan



--- Stanislav Sinyagin <[EMAIL PROTECTED]> wrote:


Here's the proposal for configuration options:

group = smsc
smsc = at
modemtype = auto
device = rawtcp
pin = 2345
rawtcp-host = 10.0.0.1
rawtcp-port = 10001




------------------------------------------------------------------------

? sendsms?username=tester&password=foobar&to=0794419087&text=Hello+world
Index: gw/smsc/smsc_at.c
===================================================================
RCS file: /home/cvs/gateway/gw/smsc/smsc_at.c,v
retrieving revision 1.24
diff -u -r1.24 smsc_at.c
--- gw/smsc/smsc_at.c   6 May 2005 14:50:27 -0000       1.24
+++ gw/smsc/smsc_at.c   8 Jul 2005 15:36:23 -0000
@@ -100,8 +100,19 @@
                 octstr_get_cstr(privdata->name));
        at2_close_device(privdata);
    }
- privdata->fd = open(octstr_get_cstr(privdata->device), - O_RDWR | O_NONBLOCK | O_NOCTTY);
+
+    if( privdata->is_serial ) {
+        privdata->fd = open(octstr_get_cstr(privdata->device),
+                            O_RDWR | O_NONBLOCK | O_NOCTTY);
+    }
+    else {
+        if (strcmp(octstr_get_cstr(privdata->device), "rawtcp") == 0) {
+ privdata->fd = tcpip_connect_to_server(octstr_get_cstr(privdata->rawtcp_host),privdata->rawtcp_port, NULL);

don't use strcmp. you can use octstr_str_compare or octstr_str_case_compare.

+        }
+        else {
+            gw_assert(0);
+        }
+    }
    if (privdata->fd == -1) {
        error(errno, "AT2[%s]: open failed! ERRNO=%d", 
octstr_get_cstr(privdata->name), errno);
        privdata->fd = -1;
@@ -121,6 +132,9 @@
    if ((ret = at2_open_device1(privdata)) != 0)
        return ret;

+    if(! privdata->is_serial)
+        return 0;
+
    tcgetattr(privdata->fd, &tios);

    kannel_cfmakeraw(&tios);
@@ -1002,6 +1016,9 @@
    int ret;
    int speed;

+    if(! privdata->is_serial)
+        return;
+
    tcgetattr(privdata->fd, &tios);

    switch (bps) {
@@ -1277,6 +1294,7 @@
{
    PrivAT2data *privdata;
    Octstr *modem_type_string;
+    long portno;   /* has to be long because of cfg_get_integer */

    privdata = gw_malloc(sizeof(PrivAT2data));
    privdata->outgoing_queue = gw_prioqueue_create(sms_priority_compare);
@@ -1289,6 +1307,23 @@
        error(0, "AT2[-]: 'device' missing in at2 configuration.");
        goto error;
    }
+    if (strcmp(octstr_get_cstr(privdata->device), "rawtcp") == 0) {

ditto, no strcmp please.

+        privdata->rawtcp_host = cfg_get(cfg, octstr_imm("rawtcp-host"));
+        if (privdata->rawtcp_host == NULL) {
+            error(0, "AT2[-]: 'rawtcp-host' missing in at2 configuration.");
+            goto error;
+        }
+
+        if (cfg_get_integer(&portno, cfg, octstr_imm("rawtcp-port")) == -1) {
+            error(0, "AT2[-]: 'rawtcp-port' missing in at2 configuration.");
+            goto error;
+        }

why do you introduce new config variables? why not just reuse already available 'host'/'port'?

+        privdata->rawtcp_port = portno;
+        privdata->is_serial = 0;
+    }
+    else {
+        privdata->is_serial = 1;
+    }

    privdata->name = cfg_get(cfg, octstr_imm("smsc-id"));
    if (privdata->name == NULL) {
Index: gw/smsc/smsc_at.h
===================================================================
RCS file: /home/cvs/gateway/gw/smsc/smsc_at.h,v
retrieving revision 1.9
diff -u -r1.9 smsc_at.h
--- gw/smsc/smsc_at.h   11 Feb 2005 15:35:48 -0000      1.9
+++ gw/smsc/smsc_at.h   8 Jul 2005 15:36:23 -0000
@@ -140,6 +140,9 @@
    int sms_memory_usage;
    List *pending_incoming_messages;
    int        max_error_count;
+    Octstr *rawtcp_host;
+    int    rawtcp_port;
+ int is_serial; /* false if device is rawtcp */ } PrivAT2data;


Index: gwlib/cfg.def
===================================================================
RCS file: /home/cvs/gateway/gwlib/cfg.def,v
retrieving revision 1.111
diff -u -r1.111 cfg.def
--- gwlib/cfg.def       14 Apr 2005 11:58:57 -0000      1.111
+++ gwlib/cfg.def       8 Jul 2005 15:36:23 -0000
@@ -362,6 +362,8 @@
    OCTSTR(denied-prefix-regex)
    OCTSTR(preferred-prefix-regex)
    OCTSTR(max-error-count)
+    OCTSTR(rawtcp-host)
+    OCTSTR(rawtcp-port)
)




Reply via email to