[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