[Asterisk-Users] Grandstream bin cfg.txt generator

Leon de Rooij leon at scarlet-internet.nl
Thu Sep 23 02:59:04 MST 2004


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
>> Asterisk-Users at lists.digium.com
>> 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      sedwards at sedwards.com      Voice: +1-760-468-3867 PST
> Newline           pagesteve at sedwards.com            Fax: +1-760-731-3000





More information about the asterisk-users mailing list