2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 12:49:34 +00:00

ccconf added

git-svn-id: https://svn.fhem.de/fhem/trunk@247 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2008-09-23 09:08:22 +00:00
parent 0e68516170
commit fd87672612

View File

@ -38,6 +38,7 @@ my %gets = (
"eeprom" => "R", "eeprom" => "R",
"version" => "V", "version" => "V",
"time" => "t", "time" => "t",
"ccconf" => "=",
); );
my %sets = ( my %sets = (
@ -161,17 +162,17 @@ CUL_Set($@)
my $msg = my $msg =
"Setting FREQ2..0 (0D,0E,0F) to $f2 $f1 $f0 = $arg MHz, verbose to 01"; "Setting FREQ2..0 (0D,0E,0F) to $f2 $f1 $f0 = $arg MHz, verbose to 01";
Log 1, $msg; Log 1, $msg;
CUL_Write($hash, "W", "0D$f2"); # Will reprogram the CC1101 CUL_SimpleWrite($hash, "W0D$f2"); # Will reprogram the CC1101
CUL_Write($hash, "W", "0E$f1"); CUL_SimpleWrite($hash, "W0E$f1");
CUL_Write($hash, "W", "0F$f0"); CUL_SimpleWrite($hash, "W0F$f0");
CUL_Write($hash, "X", "01"); CUL_SimpleWrite($hash, "X01");
return $msg; return $msg;
} elsif($a[1] eq "bandwidth") { # KHz } elsif($a[1] eq "bandwidth") { # KHz
my $ob = 5; my $ob = 5;
if(!IsDummy($hash->{NAME})) { if(!IsDummy($hash->{NAME})) {
CUL_Write($hash, "C", "10"); CUL_SimpleWrite($hash, "C10");
$ob = CUL_ReadAnswer($hash, $a[1]); $ob = CUL_ReadAnswer($hash, $a[1]);
return "Can't get old MDMCFG4 value" if($ob !~ m,/ (.*)\r,); return "Can't get old MDMCFG4 value" if($ob !~ m,/ (.*)\r,);
$ob = $1 & 0x0f; $ob = $1 & 0x0f;
@ -189,12 +190,14 @@ GOTBW:
$ob = sprintf("%02x", $ob+$bits); $ob = sprintf("%02x", $ob+$bits);
my $msg = "Setting MDMCFG4 (10) to $ob = $bw KHz, verbose to 01"; my $msg = "Setting MDMCFG4 (10) to $ob = $bw KHz, verbose to 01";
Log 1, $msg; Log 1, $msg;
CUL_Write($hash, "W", "10$ob"); CUL_SimpleWrite($hash, "W10$ob");
CUL_Write($hash, "X", "01"); CUL_SimpleWrite($hash, "X01");
return $msg; return $msg;
} else { } else {
CUL_Write($hash, $sets{$a[1]}, $arg); CUL_Write($hash, $sets{$a[1]}, $arg);
} }
return undef; return undef;
} }
@ -210,10 +213,33 @@ CUL_Get($@)
if(!defined($gets{$a[1]})); if(!defined($gets{$a[1]}));
my $arg = ($a[2] ? $a[2] : ""); my $arg = ($a[2] ? $a[2] : "");
CUL_Write($hash, $gets{$a[1]}, $arg) if(!IsDummy($hash->{NAME})); my $msg = "";
my $msg = CUL_ReadAnswer($hash, $a[1]);
$msg = "No answer" if(!defined($msg)); return "No $a[1] for dummies" if(IsDummy($hash->{NAME}));
$msg =~ s/[\r\n]//g;
if($a[1] eq "ccconf") {
my %r = ( "0D"=>1,"0E"=>1,"0F"=>1,"10"=>1,"1B"=>1,"1D"=>1) ;
foreach my $a (sort keys %r) {
CUL_SimpleWrite($hash, "C$a");
my @answ = split(" ", CUL_ReadAnswer($hash, "C$a"));
$r{$a} = $answ[4];
}
$msg = sprintf("Freq:%.3fMHz Bwidth:%dKHz Ampl:%ddB Sens:%ddB",
26*(($r{"0D"}*256+$r{"0E"})*256+$r{"0F"})/65536,
26000/(8 * (4+(($r{"10"}>>4)&3)) * (1 << (($r{"10"}>>6)&3))),
$r{"1B"}&7<4 ? 24+3*($r{"1B"}&7) : 36+2*(($r{"1B"}&7)-4),
4+4*($r{"1D"}&3)
);
} else {
CUL_Write($hash, $gets{$a[1]}, $arg) if(!IsDummy($hash->{NAME}));
$msg = CUL_ReadAnswer($hash, $a[1]);
$msg = "No answer" if(!defined($msg));
$msg =~ s/[\r\n]//g;
}
$hash->{READINGS}{$a[1]}{VAL} = $msg; $hash->{READINGS}{$a[1]}{VAL} = $msg;
$hash->{READINGS}{$a[1]}{TIME} = TimeNow(); $hash->{READINGS}{$a[1]}{TIME} = TimeNow();
@ -279,7 +305,7 @@ CUL_ReadAnswer($$)
$nfound = select($rin, undef, undef, $to); $nfound = select($rin, undef, undef, $to);
if($nfound < 0) { if($nfound < 0) {
next if ($! == EAGAIN() || $! == EINTR() || $! == 0); next if ($! == EAGAIN() || $! == EINTR() || $! == 0);
die("Select error $nfound / $!\n"); return "Select error $nfound / $!";
} }
} }
return "Timeout reading answer for get $arg" if($nfound == 0); return "Timeout reading answer for get $arg" if($nfound == 0);
@ -323,6 +349,14 @@ CUL_XmitLimitCheck($$)
$hash->{NR_CMD_LAST_H} = int(@b); $hash->{NR_CMD_LAST_H} = int(@b);
} }
sub
CUL_SimpleWrite($$)
{
my ($hash, $msg) = @_;
return if(!$hash || !defined($hash->{PortObj}));
$hash->{PortObj}->write($msg . "\n");
}
##################################### #####################################
sub sub
CUL_Write($$$) CUL_Write($$$)