Hi,

Way cool :)

ty :)

I noticed a couple of differences between Grandstream's GAPSLITE tool and your tool:

1) GS ignores multiple occurrences of a parameter, only using the last. For example:

    P30=time.nist.gov
    P30=clock1.redhat.com

GS's tool only puts "P30=clock1.redhat.com" in the cfg file while yours puts both.

I didn't know that.. Will keep it in mind for a next version.

2) GS keeps spaces in a parameter. For example:

    P3=George W Bush

GS puts "P3=George W Bush" in the cfg file while yours puts "P3=GeorgeWBush"

You're right.. It was just my laziness to remove all spaces, as we don't use spaces in any field.



3) GS lets you specify the MAC, input, and output files on the command line while yours is "in the code."


This is probably the most important difference as it would allow easy scripting to support a bunch of devices.

Agreed, I'm now trying to get Net::TFTPd to work, but haven't had much success yet. This way it'll be possible to
generate a new config at the moment the file is requested by the useragent.


Regards,

Leon de Rooij






On Wed, 22 Sep 2004, Leon de Rooij wrote:

Hi,

I needed to create config files for downloading to Grandstream devices and made a little script for it. It seems to work fine for the HT486.
The script needs a config file (cfg.in) which is in this format:


P2 = blah
P10   = hrm
...etc...

The configfile may contain comments (starting with '#') and empty lines. Mind that the 'gnkey=0b82' shouldn't be in the configfile, as it's already appended by the script.

Hope it's useful..

Thanks to Stephen R. Besch for information about the format of this file !

(One thing I am not 100% sure of: do I have to append zeros to the end of the body until it has an even amount of bytes, or an even amount of words ? Right now, I do both.)

Regards,

Leon de Rooij

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

#!/usr/bin/perl -w
use strict;

my $h_mac = '000b82014e20'; # hexadecimal mac address
my $f_in = 'cfg.in'; # file body, configfile containing all parameters
my $f_out = 'cfg.txt'; # the configfile that will be written to


my $h_crlf = '0d0a';         # hexadecimal crlf

# convert some things to binary
my $b_mac  = pack("H12", $h_mac); # convert 12 hex numbers to bin
my $b_crlf = pack("H4", $h_crlf); # convert 4 hex numbers to bin

# open configfile and make body in ascii (a_body)
my $a_body;
open F,$f_in;
while (<F>) {
    chomp;      # remove trailing lf
    s/\#.*$//g; # remove comments
    s/\s//g;    # remove all whitespace
    $a_body .= $_.'&' if length > 0;
}
close F;
$a_body .='gnkey=0b82';

# add an extra byte to make the body even (bytewise)
$a_body .= "\0" if ((length($a_body) % 2) ne 0);

# add an extra word ( = two bytes) to make the body even (wordwise)
$a_body .= "\0\0" if ((length($a_body) % 4) ne 0);

# generate a d_length (length of the complete message, counting words, in dec)
# ( header is always 8 words lang ) + ( body in ascii (bytes) / 2 = in words )
my $d_length = 8 + (length($a_body)/2);


# make that a binary dword
my $b_length = pack("N", $d_length);

# generate a checksum
my $d_checksum;
foreach ($b_length,$b_mac,$b_crlf,$b_crlf,$a_body) {
    $d_checksum += unpack("%16n*", $_);
}
#$d_checksum %= 65536;

$d_checksum = 65536-$d_checksum;

# and make a binary word of that
my $b_checksum = pack("n", $d_checksum);

# and write the config back to disk, in a grandstream readable format
open F,">$f_out";
binmode F;
print F $b_length;
print F $b_checksum;
print F $b_mac;
print F $b_crlf;
print F $b_crlf;
print F $a_body;
close F;

_______________________________________________
Asterisk-Users mailing list
[EMAIL PROTECTED]
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
 http://lists.digium.com/mailman/listinfo/asterisk-users


Thanks in advance, ------------------------------------------------------------------------ Steve Edwards [EMAIL PROTECTED] Voice: +1-760-468-3867 PST Newline [EMAIL PROTECTED] Fax: +1-760-731-3000


_______________________________________________
Asterisk-Users mailing list
[EMAIL PROTECTED]
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to