URL
https://opencores.org/ocsvn/w11/w11/trunk
Subversion Repositories w11
Compare Revisions
- This comparison shows the changes necessary to convert path
/w11
- from Rev 10 to Rev 9
- ↔ Reverse comparison
Rev 10 → Rev 9
/trunk/tools/make/generic_so.mk
File deleted
/trunk/tools/make/generic_cpp.mk
File deleted
/trunk/tools/make/generic_dep.mk
File deleted
trunk/tools/make
Property changes :
Deleted: svn:ignore
## -1,32 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
Index: trunk/tools/tcl/rbbram/.cvsignore
===================================================================
--- trunk/tools/tcl/rbbram/.cvsignore (revision 10)
+++ trunk/tools/tcl/rbbram/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/rbbram/util.tcl
===================================================================
--- trunk/tools/tcl/rbbram/util.tcl (revision 10)
+++ trunk/tools/tcl/rbbram/util.tcl (nonexistent)
@@ -1,39 +0,0 @@
-# $Id: util.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-19 372 0.1 Initial version
-#
-
-package provide rbbram 1.0
-
-namespace eval rbbram {
- #
- # setup register descriptions for rbd_bram
- #
- regdsc CNTL {nbusy 15 6} {addr 9 10}
- #
- # setup: amap definitions for rbd_bram
- #
- proc setup {{base 0x00f4}} {
- rlc amap -insert br.cntl [expr $base + 0x00]
- rlc amap -insert br.data [expr $base + 0x01]
- }
- #
- # init: reset rbd_bram (clear cntl register)
- #
- proc init {} {
- rlc exec -wreg br.cntl 0x0000
- }
-}
Index: trunk/tools/tcl/rbbram
===================================================================
--- trunk/tools/tcl/rbbram (revision 10)
+++ trunk/tools/tcl/rbbram (nonexistent)
trunk/tools/tcl/rbbram
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/rbmoni/.cvsignore
===================================================================
--- trunk/tools/tcl/rbmoni/.cvsignore (revision 10)
+++ trunk/tools/tcl/rbmoni/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/rbmoni/util.tcl
===================================================================
--- trunk/tools/tcl/rbmoni/util.tcl (revision 10)
+++ trunk/tools/tcl/rbmoni/util.tcl (nonexistent)
@@ -1,205 +0,0 @@
-# $Id: util.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-13 369 0.1 First draft
-#
-
-package provide rbmoni 1.0
-
-package require rutil
-package require rlink
-
-namespace eval rbmoni {
- #
- # setup register descriptions for rbd_rbmon
- #
- regdsc CNTL {go 0}
- regdsc ALIM {hilim 15 8} {lolim 7 8}
- regdsc ADDR {wrap 15} {addr 10 11 "-"} {laddr 10 9} {waddr 1 2}
- #
- regdsc DAT3 {flags 15 8 "-"} {ack 15} {busy 14} {err 13} {nak 12} {tout 11} \
- {init 9} {we 8} {addr 7 8}
- regdsc DAT0 {ndlymsb 15 4} {nbusy 11 12}
- #
- # 'pseudo register', describes 1st word in return list element of rbmoni::read
- # must have same bit sequence as DAT3(flags)
- regdsc FLAGS {ack 7} {busy 6} {err 5} {nak 4} {tout 3} {init 1} {we 0}
- #
- # setup: amap definitions for rbd_rbmon
- #
- proc setup {{base 0x00fc}} {
- rlc amap -insert rm.cntl [expr $base + 0x00]
- rlc amap -insert rm.alim [expr $base + 0x01]
- rlc amap -insert rm.addr [expr $base + 0x02]
- rlc amap -insert rm.data [expr $base + 0x03]
- }
- #
- # init: reset rbd_rbmon (stop, reset alim)
- #
- proc init {} {
- rlc exec \
- -wreg rm.cntl 0x0000 \
- -wreg rm.alim [regbld rbmoni::ALIM {hilim 0xff} {lolim 0x00}] \
- -wreg rm.addr 0x0000
- }
- #
- # start: start the rbmon
- #
- proc start {} {
- rlc exec -wreg rm.cntl [regbld rbmoni::CNTL go]
- }
- #
- # stop: stop the rbmon
- #
- proc stop {} {
- rlc exec -wreg rm.cntl 0x0000
- }
- #
- # read: read nent last entries (by default all)
- #
- proc read {{nent -1}} {
- set amax [regget rbmoni::ADDR(laddr) -1]
- if {$nent == -1} { set nent $amax }
-
- rlc exec -rreg rm.addr raddr
-
- set laddr [regget rbmoni::ADDR(laddr) $raddr]
- set nval $laddr
- if {[regget rbmoni::ADDR(wrap) $raddr]} { set nval $amax }
-
- if {$nent > $nval} {set nent $nval}
- if {$nent == 0} { return {} }
-
- set caddr [expr ( $laddr - $nent ) & $amax]
- rlc exec -wreg rm.addr [regbld rbmoni::ADDR [list laddr $caddr]]
-
- set rval {}
-
- while {$nent > 0} {
- set nblk [expr $nent << 2]
- if {$nblk > 256} {set nblk 256}
- rlc exec -rblk rm.data $nblk rawdat
-
- foreach {d0 d1 d2 d3} $rawdat {
- set eflag [regget rbmoni::DAT3(flags) $d3]
- set eaddr [regget rbmoni::DAT3(addr) $d3]
- set edly [expr ( [regget rbmoni::DAT0(ndlymsb) $d0] << 16 ) | $d1]
- set enbusy [regget rbmoni::DAT0(nbusy) $d0]
- lappend rval [list $eflag $eaddr $d2 $edly $enbusy]
- }
-
- set nent [expr $nent - ( $nblk >> 2 ) ]
- }
-
- rlc exec -wreg rm.addr $raddr
-
- return $rval
- }
- #
- # print: print rbmon data (optionally also read them)
- #
- proc print {{mondat -1}} {
-
- if {[llength $mondat] == 1} {
- set ele [lindex $mondat 0]
- if {[llength $ele] == 1} {
- set nent [lindex $ele 0]
- set mondat [read $nent]
- }
- }
-
- set rval {}
-
- set eind [expr 1 - [llength $mondat]]
- append rval " ind addr data delay nbusy ac bs er na to in we"
-
- foreach {ele} $mondat {
- foreach {eflag eaddr edata edly enbusy} $ele { break }
- set fack [regget rbmoni::FLAGS(ack) $eflag]
- set fbsy [regget rbmoni::FLAGS(busy) $eflag]
- set ferr [regget rbmoni::FLAGS(err) $eflag]
- set fnak [regget rbmoni::FLAGS(nak) $eflag]
- set fto [regget rbmoni::FLAGS(tout) $eflag]
- set fini [regget rbmoni::FLAGS(init) $eflag]
- set fwe [regget rbmoni::FLAGS(we) $eflag]
- set ename ""
- set comment ""
- if {$ferr} {append comment " err=1!"}
- if {$fini} {
- append comment " init"
- } else {
- if {$fnak} {append comment " nak=1!"}
- }
- if {$fto} {append comment " tout=1!"}
- if {[rlc amap -testaddr $eaddr]} {set ename [rlc amap -name $eaddr]}
- append rval [format \
- "\n%4d %-10s %4.4x %6d %4d %2.2x %d %d %d %d %d %d %d %s" \
- $eind $ename $edata $edly $enbusy $eflag \
- $fack $fbsy $ferr $fnak $fto $fini $fwe $comment]
- incr eind
- }
-
- return $rval
- }
-
- #
- # raw_edata: prepare edata lists for raw data reads in tests
- # args is list of {eflag eaddr edata enbusy} sublists
-
- proc raw_edata {edat emsk args} {
- upvar $edat uedat
- upvar $emsk uemsk
- set uedat {}
- set uemsk {}
-
- set m0 [expr 0xffff & ~[regget rbmoni::DAT0(nbusy) -1] ]
- set d1 0x0000
- set m1 0xffff
- set m3 0x0000
-
- foreach line $args {
- foreach {eflags eaddr edata enbusy} $line { break }
- set d0 [regbld rbmoni::DAT0 [list nbusy $enbusy]]
- if {$edata ne ""} {
- set m2 0x0000
- set d2 $edata
- } else {
- set m2 0xffff
- set d2 0x0000
- }
- set d3 [regbld rbmoni::DAT3 [list flags $eflags] [list addr $eaddr]]
-
- lappend uedat $d0 $d1 $d2 $d3
- lappend uemsk $m0 $m1 $m2 $m3
- }
-
- return ""
- }
-
- #
- # raw_check: check raw data against expect values prepared by raw_edata
- #
- proc raw_check {edat emsk} {
-
- rlc exec -estatdef 0x0 [regbld rlink::STAT {stat -1}] \
- -rreg rm.addr -edata [llength $edat] \
- -wreg rm.addr 0 \
- -rblk rm.data [llength $edat] -edata $edat $emsk \
- -rreg rm.addr -edata [llength $edat]
- return ""
- }
-
-}
Index: trunk/tools/tcl/rbmoni/test_regs.tcl
===================================================================
--- trunk/tools/tcl/rbmoni/test_regs.tcl (revision 10)
+++ trunk/tools/tcl/rbmoni/test_regs.tcl (nonexistent)
@@ -1,89 +0,0 @@
-# $Id: test_regs.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-13 369 0.1 First Draft
-#
-
-package provide rbmoni 1.0
-
-package require rutiltpp
-package require rutil
-package require rlink
-
-namespace eval rbmoni {
- #
- # Basic tests with rbtester registers
- #
- proc test_regs {} {
- set esdval 0x00
- set esdmsk [regbld rlink::STAT {stat -1}]
- #
- set errcnt 0
- rlc errcnt -clear
- #
- rlc log "rbmoni::test_regs - start"
- #
- #-------------------------------------------------------------------------
- rlc log " test 1: write/read cntl"
- foreach val [list [regbld rbmoni::CNTL go] 0x0] {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg rm.cntl $val \
- -rreg rm.cntl -edata $val
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 2: write/read alim"
- foreach val [list [regbld rbmoni::ALIM {hilim 0x00} {lolim 0x00}] \
- [regbld rbmoni::ALIM {hilim 0xff} {lolim 0xff}] \
- [regbld rbmoni::ALIM {hilim 0x00} {lolim 0xff}] \
- [regbld rbmoni::ALIM {hilim 0xff} {lolim 0x00}]
- ] {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg rm.alim $val \
- -rreg rm.alim -edata $val
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 3: write/read addr"
- set amax [regget rbmoni::ADDR(laddr) -1]
- foreach {laddr waddr} [list 0x0000 0 0x0000 3 $amax 0 $amax 3] {
- set addr [regbld rbmoni::ADDR [list laddr $laddr] [list waddr $waddr]]
- rlc exec -estatdef $esdval $esdmsk \
- -wreg rm.addr $addr \
- -rreg rm.addr -edata $addr
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 4: verify that cntl.go 0->1 clear addr"
- rlc exec -estatdef $esdval $esdmsk \
- -wreg rm.cntl 0x0 \
- -rreg rm.cntl -edata 0x0 \
- -wreg rm.addr [regbld rbmoni::ADDR [list laddr $amax]] \
- -rreg rm.addr -edata [regbld rbmoni::ADDR [list laddr $amax]] \
- -wreg rm.cntl [regbld rbmoni::CNTL go] \
- -rreg rm.cntl -edata [regbld rbmoni::CNTL go] \
- -rreg rm.addr -edata 0x00 \
- -wreg rm.cntl 0x0 \
- -rreg rm.cntl -edata 0x0
- #
- #-------------------------------------------------------------------------
- rlc log "rbmoni::test_regs - cleanup"
- rbmoni::init
- #
- incr errcnt [rlc errcnt -clear]
- return $errcnt
- }
-}
Index: trunk/tools/tcl/rbmoni/test_rbtest.tcl
===================================================================
--- trunk/tools/tcl/rbmoni/test_rbtest.tcl (revision 10)
+++ trunk/tools/tcl/rbmoni/test_rbtest.tcl (nonexistent)
@@ -1,306 +0,0 @@
-# $Id: test_rbtest.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-13 369 0.1 First Draft
-#
-
-package provide rbmoni 1.0
-
-package require rutiltpp
-package require rutil
-package require rlink
-package require rbtest
-
-namespace eval rbmoni {
- #
- # Basic tests with rbtester registers
- #
- proc test_rbtest {{print 0}} {
- set esdval 0x00
- set esdmsk [regbld rlink::STAT {stat -1}]
- #
- set errcnt 0
- rlc errcnt -clear
- #
- rlc log "rbmoni::test_rbtest - init"
- rbmoni::init
- rbtest::init
- #
- set atecntl [rlc amap te.cntl]
- set atedata [rlc amap te.data]
- set atefifo [rlc amap te.fifo]
- #
- #-------------------------------------------------------------------------
- rlc log " test 1: exercise monitor data access via data/addr regs"
-
- set vtecntl [regbld rbtest::CNTL {stat -1}]
- set vtedata 0x1234
-
- # setup te.cntl and te.data
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $vtecntl \
- -wreg te.data $vtedata
-
- # read te.cntl and te.data with rbmoni on; check that 2 lines aquired
- rlc exec -estatdef $esdval $esdmsk \
- -wreg rm.cntl [regbld rbmoni::CNTL go] \
- -rreg te.cntl -edata $vtecntl \
- -rreg te.data -edata $vtedata \
- -wreg rm.cntl 0x0 \
- -rreg rm.addr -edata [regbld rbmoni::ADDR {laddr 2}]
-
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack] $atecntl $vtecntl 0] \
- [list [regbld rbmoni::FLAGS ack] $atedata $vtedata 0]
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 1a: read all in one rblk"
- rlc exec -estatdef $esdval $esdmsk \
- -wreg rm.addr 0x0000 \
- -rblk rm.data 8 -edata $edat $emsk \
- -rreg rm.addr -edata 0x8
- #
- #-------------------------------------------------------------------------
- rlc log " test 1b: random address with rreg"
- foreach addr {0x1 0x3 0x5 0x7 0x6 0x4 0x2 0x0} {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg rm.addr $addr \
- -rreg rm.data -edata [lindex $edat $addr] [lindex $emsk $addr] \
- -rreg rm.addr -edata [expr $addr + 1]
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 1c: random address with rblk length 2"
- foreach addr {0x1 0x3 0x5 0x6 0x4 0x2 0x0} {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg rm.addr $addr \
- -rblk rm.data 2 -edata [lrange $edat $addr [expr $addr + 1] ] \
- [lrange $emsk $addr [expr $addr + 1] ] \
- -rreg rm.addr -edata [expr $addr + 2]
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 2a: test rreg,wreg capture (ncyc=0); ack, we flags"
- set vtedata 0x4321
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack we] $atedata $vtedata 0] \
- [list [regbld rbmoni::FLAGS ack ] $atedata $vtedata 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.data $vtedata \
- -rreg te.data -edata $vtedata
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 2b: test rreg,wreg capture (ncyc=1,4); busy flag and nbusy"
- set nbusy_1 [regbld rbtest::CNTL {nbusy 1}]
- set nbusy_4 [regbld rbtest::CNTL {nbusy 4}]
- set vtedata 0xbeaf
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack we] $atecntl $nbusy_1 0] \
- [list [regbld rbmoni::FLAGS ack busy we] $atedata $vtedata 1] \
- [list [regbld rbmoni::FLAGS ack we] $atecntl $nbusy_4 0] \
- [list [regbld rbmoni::FLAGS ack busy ] $atedata $vtedata 4] \
- [list [regbld rbmoni::FLAGS ack we] $atecntl 0 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $nbusy_1 \
- -wreg te.data $vtedata \
- -wreg te.cntl $nbusy_4 \
- -rreg te.data -edata $vtedata \
- -wreg te.cntl 0
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 2c: test rreg,wreg capture (timeout); busy,tout flag"
- set vtecntl [regbld rbtest::CNTL {nbusy -1}]
- set vtedata 0xdead
- set nmax [rbtest::nbusymax]
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack we] $atecntl $vtecntl 0] \
- [list [regbld rbmoni::FLAGS ack busy tout we] $atedata $vtedata $nmax] \
- [list [regbld rbmoni::FLAGS ack busy tout ] $atedata 0x5555 $nmax] \
- [list [regbld rbmoni::FLAGS ack we] $atecntl 0 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $vtecntl \
- -wreg te.data $vtedata -estat [regbld rlink::STAT rbnak] \
- -rreg te.data -edata 0x5555 -estat [regbld rlink::STAT rbnak] \
- -wreg te.cntl 0
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 2d: test rreg,wreg capture (prompt nak); nak flag"
- set vtecntl [regbld rbtest::CNTL nofifo]
- set vtefifo 0xdead
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack we] $atecntl $vtecntl 0] \
- [list [regbld rbmoni::FLAGS nak we] $atefifo $vtefifo 0] \
- [list [regbld rbmoni::FLAGS nak ] $atefifo {} 0] \
- [list [regbld rbmoni::FLAGS ack we] $atecntl 0 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $vtecntl \
- -wreg te.fifo $vtefifo -estat [regbld rlink::STAT rbnak] \
- -rreg te.fifo -estat [regbld rlink::STAT rbnak] \
- -wreg te.cntl 0
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 2e: test rreg,wreg capture (delayed nak); nak flag"
- set vtecntl [regbld rbtest::CNTL nofifo {nbusy 7}]
- set vtefifo 0xdead
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack we] $atecntl $vtecntl 0] \
- [list [regbld rbmoni::FLAGS ack busy nak we] $atefifo $vtefifo 7] \
- [list [regbld rbmoni::FLAGS ack busy nak ] $atefifo {} 7] \
- [list [regbld rbmoni::FLAGS ack we] $atecntl 0 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $vtecntl \
- -wreg te.fifo $vtefifo -estat [regbld rlink::STAT rbnak] \
- -rreg te.fifo -estat [regbld rlink::STAT rbnak] \
- -wreg te.cntl 0
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 2f: test rreg,wreg capture (prompt rbus err); err flag"
- set vtefifo 0x1357
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack we] $atefifo $vtefifo 0] \
- [list [regbld rbmoni::FLAGS ack ] $atefifo $vtefifo 0] \
- [list [regbld rbmoni::FLAGS ack err ] $atefifo {} 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.fifo $vtefifo \
- -rreg te.fifo -edata $vtefifo \
- -rreg te.fifo -estat [regbld rlink::STAT rberr]
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 2g: test rreg,wreg capture (delayed rbus err); err flag"
- set vtecntl [regbld rbtest::CNTL {nbusy 5}]
- set vtefifo 0x1357
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack we] $atecntl $vtecntl 0] \
- [list [regbld rbmoni::FLAGS ack busy we] $atefifo $vtefifo 5] \
- [list [regbld rbmoni::FLAGS ack busy ] $atefifo $vtefifo 5] \
- [list [regbld rbmoni::FLAGS ack busy err ] $atefifo {} 5] \
- [list [regbld rbmoni::FLAGS ack we] $atecntl 0 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $vtecntl \
- -wreg te.fifo $vtefifo \
- -rreg te.fifo -edata $vtefifo \
- -rreg te.fifo -estat [regbld rlink::STAT rberr] \
- -wreg te.cntl 0x0
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 3: test init capture; init flag"
- set vtecntl [regbld rbtest::CNTL {nofifo}]
- set vteinit [regbld rbtest::INIT {cntl}]
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS ack we ] $atecntl $vtecntl 0] \
- [list [regbld rbmoni::FLAGS nak init we] $atecntl $vteinit 0] \
- [list [regbld rbmoni::FLAGS ack ] $atecntl 0 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $vtecntl \
- -init te.cntl $vteinit \
- -rreg te.cntl -edata 0
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 4: test rblk,wblk capture (ncyc=2 on read)"
- set vteinit [regbld rbtest::INIT cntl fifo]
- set nbusy_2 [regbld rbtest::CNTL {nbusy 2}]
- set vtefifo {0xdead 0xbeaf 0x4711}
- # build expect list: list of {eflag eaddr edata enbusy} sublists
- raw_edata edat emsk \
- [list [regbld rbmoni::FLAGS nak init we] $atecntl $vteinit 0] \
- [list [regbld rbmoni::FLAGS ack we] $atefifo 0xdead 0] \
- [list [regbld rbmoni::FLAGS ack we] $atefifo 0xbeaf 0] \
- [list [regbld rbmoni::FLAGS ack we] $atefifo 0x4711 0] \
- [list [regbld rbmoni::FLAGS ack we] $atecntl $nbusy_2 0] \
- [list [regbld rbmoni::FLAGS ack busy ] $atefifo 0xdead 2] \
- [list [regbld rbmoni::FLAGS ack busy ] $atefifo 0xbeaf 2] \
- [list [regbld rbmoni::FLAGS ack busy ] $atefifo 0x4711 2] \
- [list [regbld rbmoni::FLAGS nak init we] $atecntl $vteinit 0]
- #
- rbmoni::start
- rlc exec -estatdef $esdval $esdmsk \
- -init te.cntl $vteinit \
- -wblk te.fifo $vtefifo \
- -wreg te.cntl $nbusy_2 \
- -rblk te.fifo [llength $vtefifo] -edata $vtefifo \
- -init te.cntl $vteinit
- rbmoni::stop
- if {$print} {puts [print]}
- raw_check $edat $emsk
-
- #
- #-------------------------------------------------------------------------
- rlc log "rbmoni::test_rbtest - cleanup:"
- rbtest::init
- rbmoni::init
- #
- incr errcnt [rlc errcnt -clear]
- return $errcnt
- }
-}
Index: trunk/tools/tcl/rbmoni
===================================================================
--- trunk/tools/tcl/rbmoni (revision 10)
+++ trunk/tools/tcl/rbmoni (nonexistent)
trunk/tools/tcl/rbmoni
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/rbs3hio/.cvsignore
===================================================================
--- trunk/tools/tcl/rbs3hio/.cvsignore (revision 10)
+++ trunk/tools/tcl/rbs3hio/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/rbs3hio/util.tcl
===================================================================
--- trunk/tools/tcl/rbs3hio/util.tcl (revision 10)
+++ trunk/tools/tcl/rbs3hio/util.tcl (nonexistent)
@@ -1,70 +0,0 @@
-# $Id: util.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-19 372 0.1 First draft
-#
-
-package provide rbs3hio 1.0
-
-package require rutil
-package require rutiltpp
-
-namespace eval rbs3hio {
- #
- # setup register descriptions for s3_humanio_rbus
- #
- regdsc CNTL {daten 11} {dpen 10} {leden 9} {swien 8} {btn 3 4}
- regdsc LED {dp 11 4} {led 7 8}
- #
- # setup: amap definitions for s3_humanio_rbus
- #
- proc setup {base} {
- rlc amap -insert hi.cntl [expr $base + 0x00]
- rlc amap -insert hi.swi [expr $base + 0x01]
- rlc amap -insert hi.led [expr $base + 0x02]
- rlc amap -insert hi.dsp [expr $base + 0x03]
- }
- #
- # init: reset s3_humanio_rbus (clear all enables)
- #
- proc init {} {
- rlc exec -wreg hi.cntl 0x0000
- }
- #
- # print: show status
- #
- proc print {} {
- set rval {}
- rlc exec \
- -rreg hi.cntl r_cntl \
- -rreg hi.swi r_swi \
- -rreg hi.led r_led \
- -rreg hi.dsp r_dsp
- set led [regget rbs3hio::LED(led) $r_led]
- set dp [regget rbs3hio::LED(dp) $r_led]
- append rval " cntl: [regtxt rbs3hio::CNTL $r_cntl]"
- append rval "\n leds: [pbvi b8 $led]"
- set dspval ""
- for {set i 3} {$i >= 0} {incr i -1} {
- set digval [expr ( $r_dsp >> ( 4 * $i ) ) & 0x0f]
- set digdp [expr ( $dp >> $i ) & 0x01]
- append dspval [format "%x" $digval]
- if {$digdp} {append dspval "."} else {append dspval " "}
- }
- append rval "\n disp: [pbvi b16 $r_dsp] - [pbvi b4 $dp] -> \"$dspval\""
- return $rval
- }
-}
Index: trunk/tools/tcl/rbs3hio
===================================================================
--- trunk/tools/tcl/rbs3hio (revision 10)
+++ trunk/tools/tcl/rbs3hio (nonexistent)
trunk/tools/tcl/rbs3hio
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/tst_rlink/test_all.tcl
===================================================================
--- trunk/tools/tcl/tst_rlink/test_all.tcl (revision 10)
+++ trunk/tools/tcl/tst_rlink/test_all.tcl (nonexistent)
@@ -1,41 +0,0 @@
-# $Id: test_all.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-04-02 375 1.0 Initial version
-# 2011-03-26 373 0.1 First draft
-#
-
-package provide tst_rlink 1.0
-
-package require rbtest
-package require rbmoni
-
-namespace eval tst_rlink {
- #
- # Driver for all tst_rlink tests
- #
- proc test_all {} {
- #
- set errcnt 0
- incr errcnt [rbtest::test_all 0x7 0xfffc]
- incr errcnt [rbmoni::test_regs]
- incr errcnt [rbmoni::test_rbtest]
- incr errcnt [rbemon::test_regs]
-
- puts "tst_rlink::test_all errcnt = $errcnt --> [rutil::errcnt2txt $errcnt]"
-
- return $errcnt
- }
-}
Index: trunk/tools/tcl/tst_rlink/.cvsignore
===================================================================
--- trunk/tools/tcl/tst_rlink/.cvsignore (revision 10)
+++ trunk/tools/tcl/tst_rlink/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/tst_rlink/util.tcl
===================================================================
--- trunk/tools/tcl/tst_rlink/util.tcl (revision 10)
+++ trunk/tools/tcl/tst_rlink/util.tcl (nonexistent)
@@ -1,56 +0,0 @@
-# $Id: util.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-04-02 375 1.0 Initial version
-# 2011-03-19 372 0.1 First draft
-#
-
-package provide tst_rlink 1.0
-
-package require rlink
-package require rbtest
-package require rbmoni
-package require rbbram
-package require rbs3hio
-package require rbemon
-
-namespace eval tst_rlink {
- #
- # setup: amap definitions for tst_rlink
- #
- proc setup {} {
- rlc amap -clear; # clear first to allow re-run
- rbmoni::setup [bvi b 11111100]
- rbemon::setup [bvi b 11111000]
- rbbram::setup [bvi b 11110100]
- rbtest::setup [bvi b 11110000]
- rlc amap -insert timer.1 [bvi b 11100001]
- rlc amap -insert timer.0 [bvi b 11100000]
- rbs3hio::setup [bvi b 11000000]
- }
-
- #
- # init: reset tst_rlink design to initial state
- #
- proc init {} {
- rlink::init; # reset rlink
- rbtest::init
- rbbram::init
- rbmoni::init
- rbs3hio::init
- rbemon::init
- rlink::init; # re-reset rlink
- }
-}
Index: trunk/tools/tcl/tst_rlink
===================================================================
--- trunk/tools/tcl/tst_rlink (revision 10)
+++ trunk/tools/tcl/tst_rlink (nonexistent)
trunk/tools/tcl/tst_rlink
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/setup_packages
===================================================================
--- trunk/tools/tcl/setup_packages (revision 10)
+++ trunk/tools/tcl/setup_packages (nonexistent)
@@ -1,13 +0,0 @@
-#! /usr/bin/env tclsh
-#
-pkg_mkIndex -verbose ../lib libr*tpp.so
-#
-pkg_mkIndex -verbose rutil *.tcl
-pkg_mkIndex -verbose rlink *.tcl
-pkg_mkIndex -verbose rbtest *.tcl
-pkg_mkIndex -verbose rbmoni *.tcl
-pkg_mkIndex -verbose rbbram *.tcl
-pkg_mkIndex -verbose rbs3hio *.tcl
-pkg_mkIndex -verbose rbemon *.tcl
-#
-pkg_mkIndex -verbose tst_rlink *.tcl
trunk/tools/tcl/setup_packages
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: trunk/tools/tcl/rlink/.cvsignore
===================================================================
--- trunk/tools/tcl/rlink/.cvsignore (revision 10)
+++ trunk/tools/tcl/rlink/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/rlink/util.tcl
===================================================================
--- trunk/tools/tcl/rlink/util.tcl (revision 10)
+++ trunk/tools/tcl/rlink/util.tcl (nonexistent)
@@ -1,68 +0,0 @@
-# $Id: util.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-26 373 1.0 Initial version
-# 2011-03-19 372 0.1 First draft
-#
-
-package provide rlink 1.0
-
-package require rutil 1.0
-
-namespace eval rlink {
- regdsc STAT {stat 7 3} {attn 4} {cerr 3} {derr 2} {rbnak 1} {rberr 0}
- regdsc INIT {anena 15} {itoena 14} {itoval 7 8}
- #
- # 'pseudo register', describes 3rd word in return list element for -rlist
- regdsc FLAGS {vol 16} \
- {chkdata 13} {chkstat 12} \
- {errcrc 11} {errcmd 10} {errmiss 9} {errnak 8} \
- {resend 7} {recov 6} {pktend 5} {pktbeg 4} \
- {done 2} {send 1} {init 0}
-
- variable IINT 0x00ff
-
- #
- # init: reset rlink (disable enables; clear attn register
- #
- proc init {} {
- rlc exec \
- -init $rlink::IINT 0x0000 \
- -attn
- return ""
- }
- #
- # isopen: returns 1 if open and 0 if close
- #
- proc isopen {} {
- if {[rlc open] eq ""} { return 0 }
- return 1
- }
- #
- # isfifo: returns 1 if open and fifo, 0 otherwise
- #
- proc isfifo {} {
- set name [rlc open]
- if {$name ne "" && [regexp -- {^fifo:} $name]} { return 1 }
- return 0
- }
- #
- # issim: returns 1 if open and in simulation mode, 0 otherwise
- #
- proc issim {} {
- if {![info exists rlink::sim_mode]} { return 0}
- return $rlink::sim_mode
- }
-}
Index: trunk/tools/tcl/rlink
===================================================================
--- trunk/tools/tcl/rlink (revision 10)
+++ trunk/tools/tcl/rlink (nonexistent)
trunk/tools/tcl/rlink
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/rutil/.cvsignore
===================================================================
--- trunk/tools/tcl/rutil/.cvsignore (revision 10)
+++ trunk/tools/tcl/rutil/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/rutil/util.tcl
===================================================================
--- trunk/tools/tcl/rutil/util.tcl (revision 10)
+++ trunk/tools/tcl/rutil/util.tcl (nonexistent)
@@ -1,201 +0,0 @@
-# $Id: util.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-19 372 0.1 First draft
-#
-
-package provide rutil 1.0
-
-package require rutiltpp
-
-namespace eval rutil {
- #
- # regdsc: setup a register descriptor
- #
- proc regdsc {name args} {
- upvar $name rdsc
- set fbegmax -1
- set mskftot 0
-
- foreach arg $args {
- set nopt [llength $arg]
- if {$nopt < 2} {
- error "wrong number of elements in field dsc \"$arg\""
- }
- set fnam [lindex $arg 0]
- set fbeg [lindex $arg 1]
- set flen [lindex $arg 2]
- if {$nopt < 3} { set flen 1 }
- set popt [lindex $arg 3]
- if {$nopt < 4} { set popt "b" }
-
- if {( $flen - 1 ) > $fbeg} {
- error "error in field dsc \"$arg\": length > start position"
- }
-
- set mskb [expr ( 1 << $flen ) - 1]
- set mskf [expr $mskb << ( $fbeg - ( $flen - 1 ) )]
- set rdsc($fnam) [list $fbeg $flen $mskb $mskf $popt]
-
- if {$fbegmax < $fbeg} {set fbegmax $fbeg}
- set mskftot [expr $mskftot | $mskf]
- }
-
- set rdsc(-n) [lsort -decreasing -command regdsc_sort \
- [array names rdsc -regexp {^[^-]}] ]
-
- set rdsc(-w) [expr $fbegmax + 1]
- set rdsc(-m) $mskftot
-
- return ""
- }
-
- #
- # regdsc_print: print regsiter descriptor
- #
- proc regdsc_print {name} {
- upvar $name rdsc
- set rval ""
- if {! [info exists rdsc]} {
- error "can't access \"$name\": variable doesn't exist"
- }
-
- set rsize $rdsc(-w)
-
- append rval " field bits bitmask"
-
- foreach fnam $rdsc(-n) {
- set fdsc $rdsc($fnam)
- set fbeg [lindex $fdsc 0]
- set flen [lindex $fdsc 1]
- set fmskf [lindex $fdsc 3]
- set line " "
- append line [format "%8s" $fnam]
- if {$flen > 1} {
- append line [format " %2d:%2d" $fbeg [expr $fbeg - $flen + 1]]
- } else {
- append line [format " %2d" $fbeg]
- }
- append line " "
- append line [pbvi "b${rsize}" $fmskf]
- append rval "\n$line"
- }
- return $rval
- }
-
- proc regdsc_sort {a b} {
- upvar rdsc urdsc
- return [expr [lindex $urdsc($a) 0] - [lindex $urdsc($b) 0]]
- }
-
- #
- # regbld: build a register value from a list of fields
- #
- proc regbld {name args} {
- upvar $name rdsc
- set rval 0
- foreach arg $args {
- if {[llength $arg] < 1 || [llength $arg] > 2} {
- error "error in field specifier \"$arg\": must be 'name [val]'"
- }
- set fnam [lindex $arg 0]
- if {! [info exists rdsc($fnam)] } {
- error "error in field specifier \"$arg\": field unknown"
- }
- set fbeg [lindex $rdsc($fnam) 0]
- set flen [lindex $rdsc($fnam) 1]
-
- if {[llength $arg] == 1} {
- if {$flen > 1} {
- error "error in field specifier \"$arg\": no value and flen>1"
- }
- set mskf [lindex $rdsc($fnam) 3]
- set rval [expr $rval | $mskf]
-
- } else {
- set fval [lindex $arg 1]
- set mskb [lindex $rdsc($fnam) 2]
- if {$fval >= 0} {
- if {$fval > $mskb} {
- error "error in field specifier \"$arg\": value > $mskb"
- }
- } else {
- if {$fval < [expr - $mskb]} {
- error "error in field specifier \"$arg\": value < [expr -$mskb]"
- }
- set fval [expr $fval & $mskb]
- }
- set rval [expr $rval | $fval << ( $fbeg - ( $flen - 1 ) )]
- }
-
- }
- return $rval
- }
-
- #
- # regget: extract field from a register value
- #
- proc regget {name val} {
- upvar $name fdsc
- set fbeg [lindex $fdsc 0]
- set flen [lindex $fdsc 1]
- set mskb [lindex $fdsc 2]
- return [expr ( $val >> ( $fbeg - ( $flen - 1 ) ) ) & $mskb]
- }
-
- #
- # regtxt: convert register value to a text string
- #
- proc regtxt {name val} {
- upvar $name rdsc
- set rval ""
-
- foreach fnam $rdsc(-n) {
- set popt [lindex $rdsc($fnam) 4]
- set fval [regget rdsc($fnam) $val]
- if {$popt ne "-"} {
- if {$rval ne ""} {append rval " "}
- append rval "${fnam}:"
- if {$popt eq "b"} {
- set flen [lindex $rdsc($fnam) 1]
- append rval [pbvi b${flen} $fval]
- } else {
- append rval [format "%${popt}" $fval]
- }
- }
- }
- return $rval
- }
- #
- # errcnt2txt: returns "PASS" if 0 and "FAIL" otherwise
- #
- proc errcnt2txt {errcnt} {
- if {$errcnt} {return "FAIL"}
- return "PASS"
- }
-
- namespace export regdsc
- namespace export regdsc_print
- namespace export regbld
- namespace export regget
- namespace export regtxt
-}
-
-namespace import rutil::regdsc
-namespace import rutil::regdsc_print
-namespace import rutil::regbld
-namespace import rutil::regget
-namespace import rutil::regtxt
Index: trunk/tools/tcl/rutil
===================================================================
--- trunk/tools/tcl/rutil (revision 10)
+++ trunk/tools/tcl/rutil (nonexistent)
trunk/tools/tcl/rutil
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/rbemon/.cvsignore
===================================================================
--- trunk/tools/tcl/rbemon/.cvsignore (revision 10)
+++ trunk/tools/tcl/rbemon/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/rbemon/util.tcl
===================================================================
--- trunk/tools/tcl/rbemon/util.tcl (revision 10)
+++ trunk/tools/tcl/rbemon/util.tcl (nonexistent)
@@ -1,85 +0,0 @@
-# $Id: util.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-04-02 375 1.0 Initial version
-#
-
-package provide rbemon 1.0
-
-package require rutil
-package require rlink
-
-namespace eval rbemon {
- #
- # setup register descriptions for rbd_eyemon
- #
- regdsc CNTL {ena01 3} {ena10 2} {clr 1} {go 0}
- regdsc RDIV {rdiv 7 8}
- regdsc ADDR {addr 9 10 "-"} {laddr 9 8} {waddr 0}
- #
- # setup: amap definitions for rbd_eyemon
- #
- proc setup {base} {
- rlc amap -insert em.cntl [expr $base + 0x00]
- rlc amap -insert em.rdiv [expr $base + 0x01]
- rlc amap -insert em.addr [expr $base + 0x02]
- rlc amap -insert em.data [expr $base + 0x03]
- }
- #
- # init: reset rbd_eyemon (stop monitor, clear rdiv and addr)
- #
- proc init {} {
- rlc exec \
- -wreg em.cntl 0x0000 \
- -wreg em.rdiv 0x0000
- }
- #
- # clear: clear eyemon data
- #
- proc clear {} {
- set clrbit [regbld rbemon::CNTL clr]
- rlc exec -rreg em.cntl cur_cntl
- rlc exec -wreg em.cntl [expr $cur_cntl | $clrbit]
- set clrrun $clrbit
- set npoll 0
- while {$clrrun != 0} {
- rlc exec -rreg em.cntl cur_cntl
- set clrrun [expr $cur_cntl & $clrbit]
- incr npoll 1
- if {$npoll > 10} {
- error "-E: rbemon::clear failed, CNTL.clr didn't go back to 0"
- }
- }
- return ""
- }
- #
- # start: start the eyemon
- #
- proc start {{ena01 0} {ena10 0}} {
- if {$ena01 == 0 && $ena10 == 0} {
- set ena01 1
- set ena10 1
- }
- rlc exec -wreg em.cntl [regbld rbemon::CNTL go \
- [list ena01 $ena01] [list ena10 $ena10] ]
- }
- #
- # stop: stop the eyemon
- #
- proc stop {} {
- rlc exec -wreg em.cntl 0x0000
- }
-
-}
Index: trunk/tools/tcl/rbemon/test_regs.tcl
===================================================================
--- trunk/tools/tcl/rbemon/test_regs.tcl (revision 10)
+++ trunk/tools/tcl/rbemon/test_regs.tcl (nonexistent)
@@ -1,97 +0,0 @@
-# $Id: test_regs.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-04-02 375 1.0 Initial version
-#
-
-package provide rbemon 1.0
-
-package require rutiltpp
-package require rutil
-package require rlink
-
-namespace eval rbemon {
- #
- # Basic tests with rbd_eyemon registers
- #
- proc test_regs {} {
- set esdval 0x00
- set esdmsk [regbld rlink::STAT {stat -1}]
- #
- set errcnt 0
- rlc errcnt -clear
- #
- rlc log "rbemon::test_regs - start"
- #
- #-------------------------------------------------------------------------
- rlc log " test 1a: write/read cntl"
- # ensure that last value 0x0 -> go=0
- foreach val [list [regbld rbemon::CNTL ena01] [regbld rbemon::CNTL ena10] \
- [regbld rbemon::CNTL go] 0x0 ] {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg em.cntl $val \
- -rreg em.cntl -edata $val
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 1b: write/read rdiv"
- foreach val [list [regbld rbemon::RDIV {rdiv -1}] 0x0 ] {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg em.rdiv $val \
- -rreg em.rdiv -edata $val
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 1c: write/read addr"
- set amax [regget rbemon::ADDR(addr) -1]
- foreach addr [list 0x1 $amax 0x0] {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg em.addr $addr \
- -rreg em.addr -edata $addr
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 2: verify addr increments on data reads"
- foreach addr [list 0x0 0x011 [expr $amax - 1]] {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg em.addr $addr \
- -rreg em.data \
- -rreg em.addr -edata [expr ( $addr + 1 ) & $amax] \
- -rreg em.data \
- -rreg em.addr -edata [expr ( $addr + 2 ) & $amax]
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 3: verify rberr on DATA write and DATE read if in go state"
- rlc exec \
- -wreg em.data 0x0000 -estat [regbld rlink::STAT rberr] $esdmsk \
- -wreg em.cntl [regbld rbemon::CNTL go] -estat $esdval $esdmsk \
- -rreg em.data -estat [regbld rlink::STAT rberr] $esdmsk
- #
- #-------------------------------------------------------------------------
- rlc log " test 4: verify that CNTL.clr returns to 0"
- set npoll 32
- set edat {}
- set emsk {}
- for {set i 0} {$i < $npoll} {incr i} { lappend edat 0x0000 }
- for {set i 1} {$i < $npoll} {incr i} { lappend emsk 0xffff }
- rlc exec -estatdef $esdval $esdmsk \
- -wreg em.cntl [regbld rbemon::CNTL clr] \
- -rblk em.cntl $npoll -edata $edat $emsk
- #
- incr errcnt [rlc errcnt -clear]
- return $errcnt
- }
-}
Index: trunk/tools/tcl/rbemon
===================================================================
--- trunk/tools/tcl/rbemon (revision 10)
+++ trunk/tools/tcl/rbemon (nonexistent)
trunk/tools/tcl/rbemon
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl/rbtest/test_attn.tcl
===================================================================
--- trunk/tools/tcl/rbtest/test_attn.tcl (revision 10)
+++ trunk/tools/tcl/rbtest/test_attn.tcl (nonexistent)
@@ -1,87 +0,0 @@
-# $Id: test_attn.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-20 372 0.1 First Draft
-#
-
-package provide rbtest 1.0
-
-package require rutiltpp
-package require rutil
-package require rlink
-
-namespace eval rbtest {
- #
- # Test with stat connectivity of the cntl register.
- #
- proc test_attn {{attnmsk 0x0}} {
- # quit if nothing to do...
- if {$attnmsk == 0} {return 0}
- #
- set esdval 0x00
- set esdmsk [regbld rlink::STAT {stat -1} attn]
- #
- set apats {}
- for {set i 0} {$i < 16} {incr i} {
- set apat [expr 1 << $i]
- if {[expr $apat & $attnmsk]} {lappend apats $apat}
- }
- #
- set errcnt 0
- rlc errcnt -clear
- #
- rlc log "rbtest::test_attn - init: clear regs and attn flags"
- rlc exec -init te.cntl [regbld rbtest::INIT cntl data fifo]
- rlc exec -attn
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 1: verify connection of attn bits"
- foreach apat $apats {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.attn $apat \
- -rreg te.attn -estat [regbld rlink::STAT attn] \
- -attn -edata $apat \
- -rreg te.attn -estat 0x0
- }
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 2: verify that attn flags accumulate"
- foreach apat $apats {
- rlc exec -wreg te.attn $apat -estat $esdval $esdmsk
- }
- rlc exec -attn -edata $attnmsk -estat $esdval $esdmsk
-
- #
- #-------------------------------------------------------------------------
- rlc log " test 3: verify that comma is send"
- set apat [lindex $apats 0]
- rlc exec -init 0xff [regbld rlink::INIT anena] -estat $esdval $esdmsk
- rlc exec -wreg te.attn $apat -estat $esdval $esdmsk
- rlc wtlam 1.
- rlc exec -attn -edata $apat -estat $esdval $esdmsk
-
- #
- #-------------------------------------------------------------------------
- rlc log "rbtest::test_attn - cleanup: clear regs and attn flags"
- rlc exec -init te.cntl [regbld rbtest::INIT cntl data fifo]
- rlc exec -attn
- #
- incr errcnt [rlc errcnt -clear]
- return $errcnt
- }
-}
Index: trunk/tools/tcl/rbtest/test_all.tcl
===================================================================
--- trunk/tools/tcl/rbtest/test_all.tcl (revision 10)
+++ trunk/tools/tcl/rbtest/test_all.tcl (nonexistent)
@@ -1,35 +0,0 @@
-# $Id: test_all.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-13 369 0.1 First draft
-#
-
-package provide rbtest 1.0
-
-namespace eval rbtest {
- #
- # Driver for all rbtest tests
- #
- proc test_all {{statmsk 0x0} {attnmsk 0x0}} {
- #
- set errcnt 0
- incr errcnt [rbtest::test_data]
- incr errcnt [rbtest::test_fifo]
- incr errcnt [rbtest::test_stat $statmsk]
- incr errcnt [rbtest::test_attn $attnmsk]
- return $errcnt
- }
-}
Index: trunk/tools/tcl/rbtest/test_data.tcl
===================================================================
--- trunk/tools/tcl/rbtest/test_data.tcl (revision 10)
+++ trunk/tools/tcl/rbtest/test_data.tcl (nonexistent)
@@ -1,162 +0,0 @@
-# $Id: test_data.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-13 369 0.1 First Draft
-#
-
-package provide rbtest 1.0
-
-package require rutiltpp
-package require rutil
-package require rlink
-
-namespace eval rbtest {
- #
- # Basic tests with cntl and data registers.
- # All tests depend only on rbd_tester logic alone and not on how the
- # rbd_tester is embedded in the design (e.g. stat and attn connections)
- #
- proc test_data {} {
- set esdval 0x00
- set esdmsk [regbld rlink::STAT {stat -1}]
- #
- set errcnt 0
- rlc errcnt -clear
- #
- rlc log "rbtest::test_data - init: clear cntl, data, and fifo"
- # Note: fifo clear via init is tested later, used here 'speculatively'
- rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
- #
- #-------------------------------------------------------------------------
- rlc log " test 1a: cntl, data are write- and read-able"
- foreach {addr valw valr} [list te.cntl 0xffff 0xf3ff \
- te.cntl 0x0000 0x0000 \
- te.data 0xffff 0xffff \
- te.data 0x0000 0x0000 ] {
- rlc exec -wreg $addr $valw -estat $esdval $esdmsk
- rlc exec -rreg $addr -edata $valr -estat $esdval $esdmsk
- }
- #
- #
- rlc log " test 1b: as test 1a, now use clists and check cntl/data distinct"
- foreach {valc vald} [list 0x0000 0x0000 [regbld rbtest::CNTL nofifo] 0xffff] {
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $valc \
- -wreg te.data $vald \
- -rreg te.cntl -edata $valc \
- -rreg te.data -edata $vald
- }
- #
- #
- rlc log " test 1c: as test 1, now cntl.stat field is used"
- foreach stat {0x1 0x3 0x7 0x0} {
- set valc [regbld rbtest::CNTL [list stat $stat]]
- set vald [expr $stat | ( $stat << 8 ) ]
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $valc \
- -wreg te.data $vald \
- -rreg te.cntl -edata $valc \
- -rreg te.data -edata $vald
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 2: cntl.nbusy is write- and readable (last nbusy=0 again)"
- foreach nbusy {0x00f 0x0ff 0x3ff 0x000} {
- set valc [regbld rbtest::CNTL [list nbusy $nbusy]]
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $valc \
- -rreg te.cntl -edata $valc
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 3: verify that large nbusy causes timeout"
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.data 0xdead \
- -rreg te.data -edata 0xdead \
- -wreg te.cntl [regbld rbtest::CNTL {nbusy 0x3ff}] \
- -wreg te.data 0xbeaf -estat [regbld rlink::STAT rbnak] $esdmsk \
- -rreg te.data -estat [regbld rlink::STAT rbnak] $esdmsk \
- -wreg te.cntl 0x0000 \
- -rreg te.data -edata 0xdead -edata 0xdead
- #
- # -------------------------------------------------------------------------
- rlc log " test 4a: verify that init 001 clears cntl and not data"
- set valc [regbld rbtest::CNTL nofifo {stat 0x3}]
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $valc \
- -wreg te.data 0x1234 \
- -init te.cntl [regbld rbtest::INIT cntl] \
- -rreg te.cntl -edata 0x0 \
- -wreg te.data 0x1234
- rlc log " test 4b: verify that init 010 clears data and not cntl"
- set valc [regbld rbtest::CNTL {stat 0x7}]
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $valc \
- -wreg te.data 0x4321 \
- -init te.cntl [regbld rbtest::INIT data] \
- -rreg te.cntl -edata $valc \
- -wreg te.data 0x0
- rlc log " test 4c: verify that init 011 clears data and cntl"
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl [regbld rbtest::CNTL nofifo {stat 0x7} {nbusy 2}] \
- -wreg te.data 0xabcd \
- -init te.cntl [regbld rbtest::INIT data cntl] \
- -rreg te.cntl -edata 0x0 \
- -wreg te.data 0x0
- #
- # -------------------------------------------------------------------------
- rlc log " test 5: test that te.attn returns # of cycles for te.data w&r"
- foreach nbusy {0x03 0x07 0x0f 0x1f 0x00} {
- set valc [regbld rbtest::CNTL [list nbusy $nbusy]]
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $valc \
- -wreg te.data [expr $nbusy | ( $nbusy << 8 ) ] \
- -rreg te.attn -edata [expr $nbusy + 1 ] \
- -rreg te.data -edata [expr $nbusy | ( $nbusy << 8 ) ] \
- -rreg te.attn -edata [expr $nbusy + 1 ]
- }
- #
- # -------------------------------------------------------------------------
- rlc log " test 6: verify stat command after te.data wreg & rreg"
- set rlist [rlc exec -rlist -estatdef $esdval $esdmsk \
- -wreg te.data 0x1234 \
- -stat ]
- #rlist like: {wreg 90 23 0} {stat 4 39 0 90 1}
- set xreg_ccode [lindex $rlist 0 1]
- set stat_ccode [lindex $rlist 1 4]
- if {$xreg_ccode != $stat_ccode} {
- rlc log " ---- stat ccmd mismatch, d=[pbvi o8 $xreg_ccode]! D=[pbvi o8 $stat_ccode] FAIL"
- incr errcnt
- }
- set rlist [rlc exec -rlist -estatdef $esdval $esdmsk \
- -rreg te.data -edata 0x1234 \
- -stat -edata 0x1234]
- #rlist like: {rreg 72 23 0 4660} {stat 12 39 0 72 4660}
- set xreg_ccode [lindex $rlist 0 1]
- set stat_ccode [lindex $rlist 1 4]
- if {$xreg_ccode != $stat_ccode} {
- rlc log " ---- stat ccmd mismatch, d=[pbvi o8 $xreg_ccode]! D=[pbvi o8 $stat_ccode] FAIL"
- incr errcnt
- }
- #
- #-------------------------------------------------------------------------
- rlc log "rbtest::test_data - cleanup: clear cntl and data"
- rlc exec -init te.cntl [regbld rbtest::INIT data cntl]
- #
- incr errcnt [rlc errcnt -clear]
- return $errcnt
- }
-}
Index: trunk/tools/tcl/rbtest/test_stat.tcl
===================================================================
--- trunk/tools/tcl/rbtest/test_stat.tcl (revision 10)
+++ trunk/tools/tcl/rbtest/test_stat.tcl (nonexistent)
@@ -1,61 +0,0 @@
-# $Id: test_stat.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-20 372 0.1 First Draft
-#
-
-package provide rbtest 1.0
-
-package require rutiltpp
-package require rutil
-package require rlink
-
-namespace eval rbtest {
- #
- # Test with stat connectivity of the cntl register.
- #
- proc test_stat {{statmsk 0x0}} {
- # quit if nothing to do...
- if {$statmsk == 0} {return 0}
-
- #
- set errcnt 0
- rlc errcnt -clear
- #
- rlc log "rbtest::test_stat - init: clear cntl"
- rlc exec -init te.cntl [regbld rbtest::INIT cntl]
- #
- #-------------------------------------------------------------------------
- rlc log " test 1: verify connection of cntl stat bits to stat return"
- for {set i 0} {$i < 3} {incr i} {
- set spat [expr 1 << $i]
- if {[expr $spat & $statmsk]} {
- set cntl [regbld rbtest::CNTL [list stat $spat]]
- rlc exec \
- -wreg te.cntl $cntl \
- -rreg te.cntl -edata $cntl \
- -estat [regbld rlink::STAT [list stat $spat]]
- }
- }
- #
- #-------------------------------------------------------------------------
- rlc log "rbtest::test_stat - cleanup: clear cntl"
- rlc exec -init te.cntl [regbld rbtest::INIT cntl]
- #
- incr errcnt [rlc errcnt -clear]
- return $errcnt
- }
-}
Index: trunk/tools/tcl/rbtest/.cvsignore
===================================================================
--- trunk/tools/tcl/rbtest/.cvsignore (revision 10)
+++ trunk/tools/tcl/rbtest/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-pkgIndex.tcl
Index: trunk/tools/tcl/rbtest/util.tcl
===================================================================
--- trunk/tools/tcl/rbtest/util.tcl (revision 10)
+++ trunk/tools/tcl/rbtest/util.tcl (nonexistent)
@@ -1,165 +0,0 @@
-# $Id: util.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-13 369 0.1 Frist draft
-#
-
-package provide rbtest 1.0
-
-package require rutiltpp
-package require rutil
-package require rlink
-
-namespace eval rbtest {
- #
- # setup register descriptions for rbd_tester
- #
- regdsc CNTL {nofifo 15} {stat 14 3} {nbusy 9 10}
- regdsc INIT {fifo 2} {data 1} {cntl 0}
- #
- # setup: amap definitions for rbd_tester
- #
- proc setup {{base 0x00f0}} {
- rlc amap -insert te.cntl [expr $base + 0x00]
- rlc amap -insert te.data [expr $base + 0x01]
- rlc amap -insert te.fifo [expr $base + 0x02]
- rlc amap -insert te.attn [expr $base + 0x03]
- }
- #
- # init: reset rbd_tester (clear via init)
- #
- proc init {} {
- rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
- }
- #
- # nbusymax: returns maximal nbusy value not causing timeout
- #
- proc nbusymax {} {
- set esdmsk [regbld rlink::STAT {stat -1} attn]
- rlc exec -estatdef 0 $esdmsk \
- -rreg te.cntl sav_cntl \
- -wreg te.cntl [regbld rbtest::CNTL {nbusy -1}] \
- -rreg te.data -estat [regbld rlink::STAT rbnak] $esdmsk \
- -rreg te.attn ncyc
- rlc exec -estatdef 0 $esdmsk \
- -wreg te.cntl $sav_cntl
- return [expr $ncyc - 1]
- }
- #
- # probe: determine rbd_tester environment (max nbusy, stat and attn wiring)
- #
- proc probe {} {
- set esdval 0x00
- set esdmsk [regbld rlink::STAT {stat -1}]
- set esdmsknak [regbld rlink::STAT {stat -1} rbnak]
- set esdmskatt [regbld rlink::STAT {stat -1} attn]
- set rbusy {}
- set rstat {}
- set rattn {}
- #
- # probe max nbusy for write and read
- #
- set wrerr {}
- set rderr {}
- for {set i 3} { $i < 8 } {incr i} {
- set nbusy0 [expr ( 1 << $i )]
- for {set j -1} { $j <= 1 } {incr j} {
- set nbusy [expr $nbusy0 + $j]
- set valc [regbld rbtest::CNTL [list nbusy $nbusy]]
- rlc exec \
- -wreg te.cntl $valc -estat $esdval $esdmsk\
- -wreg te.data 0x0000 statwr -estat $esdval $esdmsknak \
- -rreg te.data dummy statrd -estat $esdval $esdmsknak
- if {[llength $wrerr] == 0 && [regget rlink::STAT(rbnak) $statwr] != 0} {
- lappend wrerr $i $j $nbusy
- }
- if {[llength $rderr] == 0 && [regget rlink::STAT(rbnak) $statrd] != 0} {
- lappend rderr $i $j $nbusy
- }
- }
- }
- rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
- lappend rbusy $wrerr $rderr
- #
- # probe stat wiring
- #
- for {set i 0} { $i < 3 } {incr i} {
- set valc [regbld rbtest::CNTL [list stat [expr 1 << $i]]]
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $valc \
- -rreg te.data dummy statrd
- lappend rstat [list $i [regget rlink::STAT(stat) $statrd]]
- }
- rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
- #
- # probe attn wiring
- #
- rlc exec -attn
- for {set i 0} { $i < 16 } {incr i} {
- rlc exec -estatdef $esdval $esdmskatt \
- -wreg te.attn [expr 1 << $i] \
- -attn attnpat
- lappend rattn [list $i $attnpat]
- }
- rlc exec -attn
- #
- return [list $rbusy $rstat $rattn]
- }
- #
- # probe_print: print probe results
- #
- proc probe_print {{plist {}}} {
- set rval {}
-
- if {[llength $plist] == 0} {
- set plist [probe]
- }
-
- set rbusy [lindex $plist 0]
- set rstat [lindex $plist 1]
- set rattn [lindex $plist 2]
- #
- append rval \
- "nbusy: write max [lindex $rbusy 0 2] --> WIDTH=[lindex $rbusy 0 0]"
- append rval \
- "\nnbusy: read max [lindex $rbusy 1 2] --> WIDTH=[lindex $rbusy 1 0]"
- #
- for {set i 0} { $i < 3 } {incr i} {
- set rcvpat [lindex $rstat $i 1]
- set rcvind [print_bitind $rcvpat]
- append rval [format "\nstat: te.cntl line %2d --> design %2d %s" \
- $i $rcvind [pbvi b3 $rcvpat]]
- }
- #
- for {set i 0} { $i < 16 } {incr i} {
- set rcvpat [lindex $rattn $i 1]
- set rcvind [print_bitind $rcvpat]
- append rval [format "\nattn: te.attn line %2d --> design %2d %s" \
- $i $rcvind [pbvi b16 $rcvpat]]
- }
- return $rval
- }
-
- #
- # print_bitind: helper for probe_print:
- #
- proc print_bitind {pat} {
- for {set i 0} { $i < 16 } {incr i} {
- if {[expr $pat & [expr 1 << $i]]} { return $i}
- }
- return -1
- }
-}
Index: trunk/tools/tcl/rbtest/test_fifo.tcl
===================================================================
--- trunk/tools/tcl/rbtest/test_fifo.tcl (revision 10)
+++ trunk/tools/tcl/rbtest/test_fifo.tcl (nonexistent)
@@ -1,179 +0,0 @@
-# $Id: test_fifo.tcl 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0 Initial version
-# 2011-03-13 369 0.1 First draft
-#
-
-package provide rbtest 1.0
-
-package require rutiltpp
-package require rutil
-package require rlink
-
-namespace eval rbtest {
- #
- # Basic tests with cntl and fifo registers.
- #
- proc test_fifo {} {
- set esdval 0x00
- set esdmsk [regbld rlink::STAT {stat -1}]
- #
- set errcnt 0
- rlc errcnt -clear
- #
- rlc log "rbtest::test_fifo - init: clear cntl, data, and fifo"
- # Note: fifo clear via init is tested later, used here 'speculatively'
- rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
- #
- #-------------------------------------------------------------------------
- rlc log " test 1: fifo write/read with wreg/rreg"
- # single word
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.fifo 0x0000 \
- -rreg te.fifo -estat 0x0000
- # three words
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.fifo 0xdead \
- -wreg te.fifo 0xbeaf \
- -wreg te.fifo 0x1234 \
- -rreg te.fifo -edata 0xdead \
- -rreg te.fifo -edata 0xbeaf \
- -rreg te.fifo -edata 0x1234
- #
- #-------------------------------------------------------------------------
- rlc log " test 2: fifo write/read with wblk/rblk"
- # two words
- set blk {0x1111 0x2222}
- rlc exec -estatdef $esdval $esdmsk \
- -wblk te.fifo $blk \
- -rblk te.fifo [llength $blk] -edata $blk
- # six words
- set blk {0x3333 0x4444 0x5555 0x6666 0x7777 0x8888}
- rlc exec -estatdef $esdval $esdmsk \
- -wblk te.fifo $blk \
- -rblk te.fifo [llength $blk] -edata $blk
- #
- #-------------------------------------------------------------------------
- rlc log " test 3a: fifo read error (write 3, read 4)"
- set blk {0xdead 0xbeaf 0x1234}
- rlc exec -estatdef $esdval $esdmsk \
- -wblk te.fifo $blk \
- -rblk te.fifo 4 -edata $blk -estat [regbld rlink::STAT rberr] $esdmsk
- #
- #
- rlc log " test 3b: fifo write error (write 17, read 16)"
- set blk {}
- for { set i 0 } { $i < 17 } { incr i } {
- lappend blk [expr $i | ( $i << 8 ) ]
- }
- rlc exec -estatdef $esdval $esdmsk \
- -wblk te.fifo $blk -estat [regbld rlink::STAT rberr] $esdmsk \
- -rblk te.fifo 16 -edata [lrange $blk 0 15]
- #
- #-------------------------------------------------------------------------
- rlc log " test 4a: verify that init 100 clears fifo ant not cntl&data"
- # check fifo empty; write a value; clear fifo via init; check fifo empty
- # check that cntl and data not affected
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl [regbld rbtest::CNTL {stat 0x7}] \
- -wreg te.data 0x1234 \
- -rreg te.fifo -estat [regbld rlink::STAT rberr] $esdmsk \
- -wreg te.fifo 0x4321 \
- -init te.cntl [regbld rbtest::INIT fifo] \
- -rreg te.fifo -estat [regbld rlink::STAT rberr] $esdmsk \
- -rreg te.cntl -edata [regbld rbtest::CNTL {stat 0x7}] \
- -rreg te.data -edata 0x1234
- #
- #
- rlc log " test 4b: verify fifo clear via nofifo flag in cntl"
- # write a value; set and clear nofifo flag in cntl; ckeck fifo empty
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.fifo 0x4321 \
- -wreg te.cntl [regbld rbtest::CNTL nofifo] \
- -wreg te.cntl 0x0000 \
- -rreg te.fifo -estat [regbld rlink::STAT rberr] $esdmsk
- #
- #-------------------------------------------------------------------------
- rlc log " test 5: verify that nofifo causes a rbnak on fifo access"
- # write fifo; set nofifo in cntl; write/read fifo(->rbnak);
- # clr nofifo in cntl; read fifo(->rberr)
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.fifo 0x12ab \
- -wreg te.cntl [regbld rbtest::CNTL nofifo] \
- -wreg te.fifo 0x12cd -estat [regbld rlink::STAT rbnak] $esdmsk \
- -rreg te.fifo -estat [regbld rlink::STAT rbnak] $esdmsk \
- -wreg te.cntl 0x0000 \
- -rreg te.fifo -estat [regbld rlink::STAT rberr] $esdmsk
- #
- #-------------------------------------------------------------------------
- rlc log " test 6: test that te.attn returns # of cycles for te.fifo w&r"
- foreach nbusy {0x03 0x07 0x0f 0x1f 0x00} {
- set valc [regbld rbtest::CNTL [list nbusy $nbusy]]
- rlc exec -estatdef $esdval $esdmsk \
- -wreg te.cntl $valc \
- -wreg te.fifo [expr $nbusy | ( $nbusy << 8 ) ] \
- -rreg te.attn -edata [expr $nbusy + 1 ] \
- -rreg te.fifo -edata [expr $nbusy | ( $nbusy << 8 ) ] \
- -rreg te.attn -edata [expr $nbusy + 1 ]
- }
- #
- #-------------------------------------------------------------------------
- rlc log " test 7: verify escaping (all 256 byte codes transported)"
- for {set i 0} {$i < 8} {incr i} {
- set blk {}
- for {set j 0} {$j < 16} {incr j} {
- set bcode [expr 32 * $i + 2 * $j]
- lappend blk [expr ( $bcode << 8 ) | ( $bcode + 1 )]
- }
- rlc exec -estatdef $esdval $esdmsk \
- -wblk te.fifo $blk \
- -rblk te.fifo [llength $blk] -edata $blk
- }
- #
- # -------------------------------------------------------------------------
- rlc log " test 8: verify stat command after te.data wblk & rblk"
- set blk {0x1234 0x2345}
- set rlist [rlc exec -rlist -estatdef $esdval $esdmsk \
- -wblk te.fifo $blk \
- -stat ]
- #puts $rlist
- #rlist like: {wblk 99 23 0} {stat 4 39 0 99 65279}
- set xreg_ccode [lindex $rlist 0 1]
- set stat_ccode [lindex $rlist 1 4]
- if {$xreg_ccode != $stat_ccode} {
- rlc log " ---- stat ccmd mismatch, d=[pbvi o8 $xreg_ccode]! D=[pbvi o8 $stat_ccode] FAIL"
- incr errcnt
- }
- set rlist [rlc exec -rlist -estatdef $esdval $esdmsk \
- -rblk te.fifo [llength $blk] -edata $blk \
- -stat -edata 0x2345]
- #puts $rlist
- #{rblk 97 23 0 {4660 9029}} {stat 12 39 0 97 9029}
- set xreg_ccode [lindex $rlist 0 1]
- set stat_ccode [lindex $rlist 1 4]
- if {$xreg_ccode != $stat_ccode} {
- rlc log " ---- stat ccmd mismatch, d=[pbvi o8 $xreg_ccode]! D=[pbvi o8 $stat_ccode] FAIL"
- incr errcnt
- }
- #
- #-------------------------------------------------------------------------
- rlc log "rbtest::test_fifo - cleanup: clear cntl, data, and fifo"
- rlc exec -init te.cntl [regbld rbtest::INIT fifo data cntl]
- #
- incr errcnt [rlc errcnt -clear]
- return $errcnt
- }
-}
Index: trunk/tools/tcl/rbtest
===================================================================
--- trunk/tools/tcl/rbtest (revision 10)
+++ trunk/tools/tcl/rbtest (nonexistent)
trunk/tools/tcl/rbtest
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-pkgIndex.tcl
Index: trunk/tools/tcl
===================================================================
--- trunk/tools/tcl (revision 10)
+++ trunk/tools/tcl (nonexistent)
trunk/tools/tcl
Property changes :
Deleted: svn:ignore
## -1,32 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
Index: trunk/tools/src/librtcltools/RtclOPtr.hpp
===================================================================
--- trunk/tools/src/librtcltools/RtclOPtr.hpp (revision 10)
+++ trunk/tools/src/librtcltools/RtclOPtr.hpp (nonexistent)
@@ -1,54 +0,0 @@
-// $Id: RtclOPtr.hpp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-20 363 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RtclOPtr.hpp 365 2011-02-28 07:28:26Z mueller $
- \brief Declaration of class RtclOPtr.
-*/
-
-#ifndef included_Retro_RtclOPtr
-#define included_Retro_RtclOPtr 1
-
-#include "tcl.h"
-
-namespace Retro {
-
- class RtclOPtr {
- public:
- RtclOPtr();
- RtclOPtr(Tcl_Obj* pobj);
- RtclOPtr(const RtclOPtr& rhs);
- ~RtclOPtr();
-
- operator Tcl_Obj*() const;
- bool operator !() const;
- RtclOPtr& operator=(const RtclOPtr& rhs);
- RtclOPtr& operator=(Tcl_Obj* pobj);
-
- protected:
- Tcl_Obj* fpObj; //!< pointer to tcl object
- };
-
-} // end namespace Retro
-
-// implementation all inline
-#include "RtclOPtr.ipp"
-
-#endif
Index: trunk/tools/src/librtcltools/RtclContext.hpp
===================================================================
--- trunk/tools/src/librtcltools/RtclContext.hpp (revision 10)
+++ trunk/tools/src/librtcltools/RtclContext.hpp (nonexistent)
@@ -1,90 +0,0 @@
-// $Id: RtclContext.hpp 368 2011-03-12 09:58:53Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-12 368 1.0.1 drop fExitSeen, get exit handling right
-// 2011-02-18 362 1.0 Initial version
-// 2011-02-18 362 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RtclContext.hpp 368 2011-03-12 09:58:53Z mueller $
- \brief Declaration of class RtclContext.
-*/
-
-#ifndef included_Retro_RtclContext
-#define included_Retro_RtclContext 1
-
-#include "tcl.h"
-
-#include
-#include
-#include
trunk/tools/src/librtcltools
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-*.dep
Index: trunk/tools/src/Makefile
===================================================================
--- trunk/tools/src/Makefile (revision 10)
+++ trunk/tools/src/Makefile (nonexistent)
@@ -1,51 +0,0 @@
-# $Id: Makefile 372 2011-03-20 22:48:11Z mueller $
-#
-# Top level makefile, using the recipe found in
-# http://www.lackof.org/taggart/hacking/make-example/
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-20 372 1.1.1 renamed ..tcl -> ..tpp
-# 2011-03-14 370 1.1.0 rename librtoolstcl -> librtcltools
-# 2011-02-13 361 1.1 add realclean rule; add dirs and dependencies
-# 2011-01-30 357 1.0 Initial version
-#
-DIRS = librtools
-DIRS += librlink
-DIRS += librtcltools
-DIRS += librutiltpp
-DIRS += librlinktpp
-#
-BUILDDIRS = $(DIRS:%=build-%)
-CLEANDIRS = $(DIRS:%=clean-%)
-REALCDIRS = $(DIRS:%=realc-%)
-#
-.PHONY: all clean realclean
-.PHONY: $(DIRS)
-.PHONY: $(BUILDDIRS)
-.PHONY: $(CLEANDIRS)
-.PHONY: $(REALCDIRS)
-#
-# build 'all' rule
-#
-all: $(BUILDDIRS)
-#
-build-librlink : build-librtools
-build-librtcltools : build-librtools
-build-librutiltpp : build-librtcltools
-build-librlinktpp : build-librlink build-librtcltools
-#
-$(BUILDDIRS):
- $(MAKE) -C $(@:build-%=%)
-#
-# clean rule
-#
-clean: $(CLEANDIRS)
-$(CLEANDIRS):
- $(MAKE) -C $(@:clean-%=%) clean
-#
-# realclean rule
-#
-realclean: $(REALCDIRS)
-$(REALCDIRS):
- $(MAKE) -C $(@:realc-%=%) realclean
Index: trunk/tools/src/librlink/RlinkPacketBuf.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkPacketBuf.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkPacketBuf.cpp (nonexistent)
@@ -1,371 +0,0 @@
-// $Id: RlinkPacketBuf.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-04-02 375 1.0 Initial version
-// 2011-03-05 366 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkPacketBuf.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of class RlinkPacketBuf.
- */
-
-#include
-
-// debug
-#include
-
-#include
-
-#include "RlinkPacketBuf.hpp"
-
-#include "librtools/RosFill.hpp"
-#include "librtools/RosPrintf.hpp"
-#include "librtools/RosPrintBvi.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkPacketBuf
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-// constants definitions
-
-const uint32_t RlinkPacketBuf::kFlagSopSeen;
-const uint32_t RlinkPacketBuf::kFlagEopSeen;
-const uint32_t RlinkPacketBuf::kFlagNakSeen;
-const uint32_t RlinkPacketBuf::kFlagAttnSeen;
-const uint32_t RlinkPacketBuf::kFlagTout;
-const uint32_t RlinkPacketBuf::kFlagDatDrop;
-const uint32_t RlinkPacketBuf::kFlagDatMiss;
-
-const uint8_t RlinkPacketBuf::kCPREF;
-const uint8_t RlinkPacketBuf::kNCOMM;
-const uint8_t RlinkPacketBuf::kCommaIdle;
-const uint8_t RlinkPacketBuf::kCommaSop;
-const uint8_t RlinkPacketBuf::kCommaEop;
-const uint8_t RlinkPacketBuf::kCommaNak;
-const uint8_t RlinkPacketBuf::kCommaAttn;
-const uint8_t RlinkPacketBuf::kSymEsc;
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkPacketBuf::RlinkPacketBuf()
- : fPktBuf(),
- fRawBuf(),
- fRawBufSize(0),
- fCrc(),
- fFlags(0),
- fNdone(0),
- fNesc(0),
- fNattn(0),
- fNidle(0),
- fNdrop(0)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkPacketBuf::~RlinkPacketBuf()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkPacketBuf::Init()
-{
- fPktBuf.clear();
- fRawBufSize = 0;
- fCrc.Clear();
- fFlags = 0;
- fNdone = 0;
- fNesc = 0;
- fNattn = 0;
- fNidle = 0;
- fNdrop = 0;
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPacketBuf::SndPacket(RlinkPort* port, RerrMsg& emsg)
-{
- fRawBuf.reserve(2*fPktBuf.size()+2); // max. size of raw data
- fRawBuf.clear();
-
- fRawBuf.push_back(kCommaSop);
-
- size_t ni = fPktBuf.size();
- uint8_t* pi = fPktBuf.data();
- for (size_t i=0; i= kCPREF && c <= kCPREF+kNCOMM)) {
- fRawBuf.push_back(kSymEsc);
- fRawBuf.push_back(((~kCPREF) & 0xf0) | (c & 0x0f));
- fNesc += 1;
- } else {
- fRawBuf.push_back(c);
- }
- }
-
- fRawBuf.push_back(kCommaEop);
-
- return SndRaw(port, emsg);
-
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPacketBuf::RcvPacket(RlinkPort* port, size_t nrcv, float timeout,
- RerrMsg& emsg)
-{
- fPktBuf.clear();
-
- bool escseen = false; // in esc
- bool sopseen = false; // sop seen
- bool eopseen = false; // eop seen
- bool nakseen = false; // nak seen
-
- while (!(eopseen|nakseen)) { // try till eop or nak received
- size_t nread = nrcv - fPktBuf.size();
- // FIXME_code: if the 'enough data' handling below correct ?
- if (nread < 0) return true;
- if (!sopseen) nread += 1;
- if (!eopseen) nread += 1;
-
- size_t sizeold = fRawBufSize;
- int irc = RcvRaw(port, nread, timeout, emsg);
-
- if (irc <= 0) {
- if (irc == RlinkPort::kTout) {
- SetFlagBit(kFlagTout);
- return true;
- } else {
- return false;
- }
- }
-
- uint8_t* pi = fRawBuf.data()+sizeold;
- for (int i=0; i 0.) {
- size_t sizeold = fRawBufSize;
- int irc = RcvRaw(port, 1, trest, emsg);
-
- if (irc <= 0) {
- if (irc == RlinkPort::kTout) {
- SetFlagBit(kFlagTout);
- return -1.;
- } else {
- return -2.;
- }
- }
-
- gettimeofday(&tval, 0);
- double tend = double(tval.tv_sec) + 1.e-6*double(tval.tv_usec);
- trest -= (tend-tbeg);
-
- uint8_t c = fRawBuf[sizeold];
-
- if (c == kCommaAttn) {
- fNattn += 1;
- SetFlagBit(kFlagAttnSeen);
- break;
- } else if (c == kCommaIdle) {
- fNidle += 1;
- } else {
- fNdrop += 1;
- }
-
- tbeg = tend;
- }
-
- return timeout - trest;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPacketBuf::SndOob(RlinkPort* port, uint16_t addr, uint16_t data,
- RerrMsg& emsg)
-{
- Init();
-
- fRawBuf.clear();
- fRawBuf.push_back(kSymEsc); // ESC
- fRawBuf.push_back(kSymEsc); // ESC
- fRawBuf.push_back((uint8_t)addr); // ADDR
- fRawBuf.push_back((uint8_t)(data & 0x00ff)); // DL
- fRawBuf.push_back((uint8_t)((data>>8) & 0x00ff)); // DH
-
- return SndRaw(port, emsg);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPacketBuf::SndKeep(RlinkPort* port, RerrMsg& emsg)
-{
- Init();
-
- fRawBuf.clear();
- fRawBuf.push_back(kSymEsc); // ESC
- fRawBuf.push_back(kSymEsc); // ESC
-
- return SndRaw(port, emsg);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkPacketBuf::Dump(std::ostream& os, int ind, const char* text) const
-{
- RosFill bl(ind);
- os << bl << (text?text:"--") << "RlinkPacketBuf @ " << this << endl;
- os << bl << " fCrc: " << RosPrintBvi(fCrc.Crc(), 0) << endl;
- os << bl << " fFlags: " << RosPrintBvi(fFlags, 0) << endl;
- os << bl << " fNdone: " << RosPrintf(fNdone,"d",4) << endl;
- os << bl << " fNesc: " << RosPrintf(fNesc,"d",4) << endl;
- os << bl << " fNattn: " << RosPrintf(fNattn,"d",4) << endl;
- os << bl << " fNidle: " << RosPrintf(fNidle,"d",4) << endl;
- os << bl << " fNdrop: " << RosPrintf(fNdrop,"d",4) << endl;
-
- os << bl << " fPktBuf(size): " << RosPrintf(fPktBuf.size(),"d",4);
- size_t ncol = max(1, (80-ind-4-6)/(2+1));
- for (size_t i=0; i< fPktBuf.size(); i++) {
- if (i%ncol == 0) os << "\n" << bl << " " << RosPrintf(i,"d",4) << ": ";
- os << RosPrintBvi(fPktBuf[i],16) << " ";
- }
- os << endl;
-
- os << bl << " fRawBuf(size): " << RosPrintf(fRawBufSize,"d",4);
- for (size_t i=0; i< fRawBufSize; i++) {
- if (i%ncol == 0) os << "\n" << bl << " " << RosPrintf(i,"d",4) << ": ";
- os << RosPrintBvi(fRawBuf[i],16) << " ";
- }
- os << endl;
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPacketBuf::SndRaw(RlinkPort* port, RerrMsg& emsg)
-{
- if (port==0 || !port->IsOpen())
- throw logic_error("RlinkPacketBuf::SndRaw(): port not open");
-
- fRawBufSize = fRawBuf.size();
- int irc = port->Write(fRawBuf.data(), fRawBuf.size(), emsg);
- if (irc < 0) return false;
- if ((size_t)irc != fRawBuf.size()) {
- emsg.Init("RlinkPacketBuf::SndRaw()", "failed to write all data");
- return false;
- }
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RlinkPacketBuf::RcvRaw(RlinkPort* port, size_t size, float timeout,
- RerrMsg& emsg)
-{
- if (port==0 || !port->IsOpen())
- throw logic_error("RlinkPacketBuf::RcvRaw(): port not open");
-
- if (fRawBuf.size() < fRawBufSize+size) fRawBuf.resize(fRawBufSize+size);
- int irc = port->Read(fRawBuf.data()+fRawBufSize, size, timeout, emsg);
- if (irc == RlinkPort::kEof) {
- emsg.Init("RlinkPacketBuf::RcvRaw()", "eof on read");
- }
-
- if (irc > 0) {
- fRawBufSize += irc;
- }
-
- return irc;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkPacketBuf_NoInline))
-#define inline
-#include "RlinkPacketBuf.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink/RlinkCrc8.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkCrc8.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkCrc8.hpp (nonexistent)
@@ -1,56 +0,0 @@
-// $Id: RlinkCrc8.hpp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-27 365 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkCrc8.hpp 365 2011-02-28 07:28:26Z mueller $
- \brief Declaration of class \c RlinkCrc8.
-*/
-
-#ifndef included_Retro_RlinkCrc8
-#define included_Retro_RlinkCrc8 1
-
-#include
-#include
-
-namespace Retro {
-
- class RlinkCrc8 {
- public:
- RlinkCrc8();
- ~RlinkCrc8();
-
- void Clear();
- void AddData(uint8_t data);
- uint8_t Crc() const;
-
- protected:
-
- uint8_t fCrc; //!< current crc value
- static const uint8_t fCrc8Table[256]; // doxed in cpp
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkCrc8_NoInline))
-#include "RlinkCrc8.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkCrc8.ipp
===================================================================
--- trunk/tools/src/librlink/RlinkCrc8.ipp (revision 10)
+++ trunk/tools/src/librlink/RlinkCrc8.ipp (nonexistent)
@@ -1,68 +0,0 @@
-// $Id: RlinkCrc8.ipp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-27 365 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkCrc8.ipp 365 2011-02-28 07:28:26Z mueller $
- \brief Implemenation (inline) of class RlinkCrc8.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-inline RlinkCrc8::RlinkCrc8()
- : fCrc(0)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-inline RlinkCrc8::~RlinkCrc8()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkCrc8::Clear()
-{
- fCrc = 0;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkCrc8::AddData(uint8_t data)
-{
- fCrc = fCrc8Table[fCrc ^ data];
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline uint8_t RlinkCrc8::Crc() const
-{
- return fCrc;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librlink/RlinkPacketBuf.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkPacketBuf.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkPacketBuf.hpp (nonexistent)
@@ -1,122 +0,0 @@
-// $Id: RlinkPacketBuf.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-04-02 375 1.0 Initial version
-// 2011-03-05 366 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkPacketBuf.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RlinkPacketBuf.
-*/
-
-#ifndef included_Retro_RlinkPacketBuf
-#define included_Retro_RlinkPacketBuf 1
-
-#include
-#include
-
-#include "RlinkPort.hpp"
-#include "RlinkCrc8.hpp"
-
-namespace Retro {
-
- class RlinkPacketBuf {
- public:
-
- RlinkPacketBuf();
- ~RlinkPacketBuf();
-
- void Init();
-
- void PutWithCrc(uint8_t data);
- void PutWithCrc(uint16_t data);
- void PutCrc();
-
- bool SndPacket(RlinkPort* port, RerrMsg& emsg);
- bool RcvPacket(RlinkPort* port, size_t nrcv, float timeout,
- RerrMsg& emsg);
-
- double WaitAttn(RlinkPort* port, double timeout, RerrMsg& emsg);
- bool SndOob(RlinkPort* port, uint16_t addr, uint16_t data,
- RerrMsg& emsg);
- bool SndKeep(RlinkPort* port, RerrMsg& emsg);
-
- bool CheckSize(size_t nbyte) const;
- uint8_t Get8WithCrc();
- uint16_t Get16WithCrc();
- bool CheckCrc();
-
- size_t PktSize() const;
- size_t RawSize() const;
-
- uint32_t Flags() const;
- bool TestFlag(uint32_t mask) const;
- size_t Nesc() const;
- size_t Nattn() const;
- size_t Nidle() const;
- size_t Ndrop() const;
-
- void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
- // flag bits
- static const uint32_t kFlagSopSeen = 1<<0; //!< sop was seen
- static const uint32_t kFlagEopSeen = 1<<1; //!< eop was seen
- static const uint32_t kFlagNakSeen = 1<<2; //!< nak was seen
- static const uint32_t kFlagAttnSeen = 1<<3; //!< attn was seen
- static const uint32_t kFlagTout = 1<<16; //!< timeout on read
- static const uint32_t kFlagDatDrop = 1<<17; //!< data before sop dropped
- static const uint32_t kFlagDatMiss = 1<<18; //!< eop before expected data
-
- // some constants
- static const uint8_t kCPREF = 0x80; //!< VHDL def for comma prefix
- static const uint8_t kNCOMM = 0x04; //!< VHDL def for number of commas
- static const uint8_t kCommaIdle = kCPREF+0; //!< IDLE comma
- static const uint8_t kCommaSop = kCPREF+1; //!< SOP comma
- static const uint8_t kCommaEop = kCPREF+2; //!< EOP comma
- static const uint8_t kCommaNak = kCPREF+3; //!< NAK comma
- static const uint8_t kCommaAttn = kCPREF+4; //!< ATTN comma
- static const uint8_t kSymEsc = kCPREF+0x0f; //!< ESC symbol
-
- protected:
- bool SndRaw(RlinkPort* port, RerrMsg& emsg);
- int RcvRaw(RlinkPort* port, size_t size, float timeout,
- RerrMsg& emsg);
-
- void SetFlagBit(uint32_t mask);
- void ClearFlagBit(uint32_t mask);
-
- protected:
- std::vector fPktBuf; //!< packet buffer
- std::vector fRawBuf; //!< raw data buffer
- size_t fRawBufSize; //!< # of valid bytes in RawBuf
- RlinkCrc8 fCrc; //!< crc accumulator
- uint32_t fFlags; //!< request/response flags
- size_t fNdone; //!< number of input bytes processed
- size_t fNesc; //!< number of escapes handled
- size_t fNattn; //!< number of ATTN commas seen
- size_t fNidle; //!< number of IDLE commas seen
- size_t fNdrop; //!< number of dropped input bytes
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkPacketBuf_NoInline))
-#include "RlinkPacketBuf.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkPacketBuf.ipp
===================================================================
--- trunk/tools/src/librlink/RlinkPacketBuf.ipp (revision 10)
+++ trunk/tools/src/librlink/RlinkPacketBuf.ipp (nonexistent)
@@ -1,179 +0,0 @@
-// $Id: RlinkPacketBuf.ipp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-04-02 375 1.0 Initial version
-// 2011-03-05 366 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkPacketBuf.ipp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation (inline) of class RlinkPacketBuf.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkPacketBuf::PutWithCrc(uint8_t data)
-{
- fPktBuf.push_back(data);
- fCrc.AddData(data);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkPacketBuf::PutWithCrc(uint16_t data)
-{
- PutWithCrc((uint8_t)( data & 0xff)); // lsb first
- PutWithCrc((uint8_t)((data>>8) & 0xff));
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkPacketBuf::PutCrc()
-{
- fPktBuf.push_back(fCrc.Crc());
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline bool RlinkPacketBuf::CheckSize(size_t nbyte) const
-{
- return fPktBuf.size()-fNdone >= nbyte;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline uint8_t RlinkPacketBuf::Get8WithCrc()
-{
- uint8_t data = fPktBuf[fNdone++];
- fCrc.AddData(data);
- return data;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline uint16_t RlinkPacketBuf::Get16WithCrc()
-{
- uint8_t datl = fPktBuf[fNdone++];
- uint8_t dath = fPktBuf[fNdone++];
- fCrc.AddData(datl);
- fCrc.AddData(dath);
- return (uint16_t)datl | ((uint16_t)dath << 8);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline bool RlinkPacketBuf::CheckCrc()
-{
- uint8_t data = fPktBuf[fNdone++];
- return data == fCrc.Crc();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline size_t RlinkPacketBuf::PktSize() const
-{
- return fPktBuf.size();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline size_t RlinkPacketBuf::RawSize() const
-{
- return fRawBuf.size();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkPacketBuf::SetFlagBit(uint32_t mask)
-{
- fFlags |= mask;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline uint32_t RlinkPacketBuf::Flags() const
-{
- return fFlags;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline bool RlinkPacketBuf::TestFlag(uint32_t mask) const
-{
- return (fFlags & mask) != 0;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline size_t RlinkPacketBuf::Nesc() const
-{
- return fNesc;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline size_t RlinkPacketBuf::Nattn() const
-{
- return fNattn;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline size_t RlinkPacketBuf::Nidle() const
-{
- return fNidle;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline size_t RlinkPacketBuf::Ndrop() const
-{
- return fNdrop;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkPacketBuf::ClearFlagBit(uint32_t mask)
-{
- fFlags &= ~mask;
- return;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librlink/RlinkPort.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkPort.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkPort.cpp (nonexistent)
@@ -1,366 +0,0 @@
-// $Id: RlinkPort.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 375 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkPort.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of RlinkPort.
-*/
-
-#include
-#include
-#include
-
-#include
-#include
-
-#include "RlinkPort.hpp"
-
-#include "librtools/RosFill.hpp"
-#include "librtools/RosPrintf.hpp"
-#include "librtools/RosPrintBvi.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkPort
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkPort::RlinkPort()
- : fIsOpen(false),
- fUrl(),
- fScheme(),
- fPath(),
- fOptMap(),
- fFdRead(-1),
- fFdWrite(-1),
- fpLogFile(0),
- fTraceLevel(0),
- fStats()
-{
- fStats.Define(kStatNPortWrite, "NPortWrite", "Port::Write() calls");
- fStats.Define(kStatNPortRead, "NPortRead", "Port::Read() calls");
- fStats.Define(kStatNPortTxByt, "NPortTxByt", "Port Tx raw bytes send");
- fStats.Define(kStatNPortRxByt, "NPortRxByt", "Port Rx raw bytes rcvd");
-}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkPort::~RlinkPort()
-{
- if (IsOpen()) RlinkPort::Close();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkPort::Close()
-{
- if (! IsOpen())
- throw logic_error("RlinkPort::Close(): port not open");
-
- close(fFdRead);
- if (fFdWrite != fFdRead) close(fFdWrite);
-
- fFdRead = -1;
- fFdWrite = -1;
- fIsOpen = false;
- fUrl.clear();
- fScheme.clear();
- fPath.clear();
- fOptMap.clear();
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RlinkPort::Read(uint8_t* buf, size_t size, double timeout, RerrMsg& emsg)
-{
- if (!IsOpen())
- throw logic_error("RlinkPort::Read(): port not open");
- if (buf == 0)
- throw invalid_argument("RlinkPort::Read(): buf==NULL");
- if (size == 0)
- throw invalid_argument("RlinkPort::Read(): size==0");
-
- fStats.Inc(kStatNPortRead);
-
- bool rdpoll = PollRead(timeout);
- if (!rdpoll) return kTout;
-
- int irc = -1;
- while (irc < 0) {
- irc = read(fFdRead, (void*) buf, size);
- if (irc < 0 && errno != EINTR) {
- emsg.InitErrno("RlinkPort::Read()", "read() failed : ", errno);
- if (fpLogFile && fTraceLevel>0) (*fpLogFile)('E') << emsg << endl;
- return kErr;
- }
- }
-
- if (fpLogFile && fTraceLevel>0) {
- ostream& os = (*fpLogFile)();
- (*fpLogFile)('I') << "port read nchar=" << RosPrintf(irc,"d",4);
- if (fTraceLevel>1) {
- size_t ncol = (80-5-6)/(2+1);
- for (int i=0; i0) {
- ostream& os = (*fpLogFile)();
- (*fpLogFile)('I') << "port write nchar=" << RosPrintf(size,"d",4);
- if (fTraceLevel>1) {
- size_t ncol = (80-5-6)/(2+1);
- for (size_t i=0; i0) (*fpLogFile)('E') << emsg << endl;
- return kErr;
- }
- }
- // FIXME_code: handle eof ??
- ndone += irc;
- }
-
- fStats.Inc(kStatNPortTxByt, double(ndone));
-
- return ndone;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPort::PollRead(double timeout)
-{
- if (! IsOpen())
- throw logic_error("RlinkPort::PollRead(): port not open");
- if (timeout < 0.)
- throw invalid_argument("RlinkPort::PollRead(): timeout < 0");
-
- int ito = 1000.*timeout + 0.1;
-
- struct pollfd fds[1] = {{fFdRead, // fd
- POLLIN, // events
- 0}}; // revents
-
-
- int irc = -1;
- while (irc < 0) {
- irc = poll(fds, 1, ito);
- if (irc < 0 && errno != EINTR)
- throw logic_error("RlinkPort::PollRead(): poll failed: rc<0");
- }
-
- if (irc == 0) return false;
-
- if (fds[0].revents == POLLERR)
- throw logic_error("RlinkPort::PollRead(): poll failed: POLLERR");
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPort::UrlFindOpt(const std::string& name) const
-{
- omap_cit_t it = fOptMap.find(name);
- if (it == fOptMap.end()) return false;
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPort::UrlFindOpt(const std::string& name, std::string& value) const
-{
- omap_cit_t it = fOptMap.find(name);
- if (it == fOptMap.end()) return false;
-
- value = it->second;
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkPort::Dump(std::ostream& os, int ind, const char* text) const
-{
- RosFill bl(ind);
- os << bl << (text?text:"--") << "RlinkPort @ " << this << endl;
-
- os << bl << " fIsOpen: " << (int)fIsOpen << endl;
- os << bl << " fUrl: " << fUrl << endl;
- os << bl << " fScheme: " << fScheme << endl;
- os << bl << " fPath: " << fPath << endl;
- os << bl << " fOptMap: " << endl;
- for (omap_cit_t it=fOptMap.begin(); it!=fOptMap.end(); it++) {
- os << bl << " " << RosPrintf((it->first).c_str(), "-s",8)
- << " : " << it->second << endl;
- }
- os << bl << " fFdRead: " << fFdRead << endl;
- os << bl << " fFdWrite: " << fFdWrite << endl;
- fStats.Dump(os, ind+2, "fStats: ");
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPort::ParseUrl(const std::string& url, const std::string& optlist,
- RerrMsg& emsg)
-{
- fUrl.clear();
- fScheme.clear();
- fPath.clear();
- fOptMap.clear();
-
- size_t pdel = url.find_first_of(':');
- if (pdel == string::npos) {
- emsg.Init("RlinkPort::ParseUrl()",
- string("no scheme specified in url \"") + url + string("\""));
- return false;
- }
-
- fUrl = url;
- fScheme = url.substr(0, pdel);
-
- size_t odel = url.find_first_of('?', pdel);
- if (odel == string::npos) { // no options
- if (url.length() > pdel+1) fPath = url.substr(pdel+1);
-
- } else { // options to process
- fPath = url.substr(pdel+1,odel-(pdel+1));
- string key;
- string val;
- bool hasval = false;
-
- for (size_t i=odel+1; i= url.length()) {
- emsg.Init("RlinkPort::ParseUrl()",
- string("invalid trailing \\ in url \"") + url +
- string("\""));
- return false;
- }
- i += 1;
- switch (url[i]) {
- case '\\' : c = '\\'; break;
- case ';' : c = ';'; break;
- default : emsg.Init("RlinkPort::ParseUrl()",
- string("invalid \\ escape in url \"") +
- url + string("\""));
- return false;
- }
- }
- val.push_back(c);
- }
- }
- }
- if (key.length() || hasval) {
- if (!AddOpt(key, val, hasval, optlist, emsg)) return false;
- }
- }
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkPort::AddOpt(const std::string& key, const std::string& val,
- bool hasval, const std::string& optlist, RerrMsg& emsg)
-{
- string lkey = "|";
- lkey += key;
- if (hasval) lkey += "=";
- lkey += "|";
- if (optlist.find(lkey) == string::npos) {
- emsg.Init("RlinkPort::AddOpt()",
- string("invalid field name \"") + lkey + string("\""));
- }
-
- fOptMap.insert(omap_val_t(key, hasval ? val : "1"));
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkPort_NoInline))
-#define inline
-#include "RlinkPort.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink/RlinkCommandExpect.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkCommandExpect.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommandExpect.cpp (nonexistent)
@@ -1,195 +0,0 @@
-// $Id: RlinkCommandExpect.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-12 368 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkCommandExpect.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of class RlinkCommandExpect.
- */
-
-// debug
-#include
-
-#include
-#include
-
-#include "RlinkCommandExpect.hpp"
-
-#include "librtools/RosFill.hpp"
-#include "librtools/RosPrintf.hpp"
-#include "librtools/RosPrintBvi.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkCommandExpect
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkCommandExpect::RlinkCommandExpect()
- : fStatusVal(0),
- fStatusMsk(0xff),
- fDataVal(0),
- fDataMsk(0xffff),
- fBlockVal(),
- fBlockMsk()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RlinkCommandExpect::RlinkCommandExpect(uint8_t stat, uint8_t statmsk)
- : fStatusVal(stat),
- fStatusMsk(statmsk),
- fDataVal(0),
- fDataMsk(0xffff),
- fBlockVal(),
- fBlockMsk()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RlinkCommandExpect::RlinkCommandExpect(uint8_t stat, uint8_t statmsk,
- uint16_t data, uint16_t datamsk)
- : fStatusVal(stat),
- fStatusMsk(statmsk),
- fDataVal(data),
- fDataMsk(datamsk),
- fBlockVal(),
- fBlockMsk()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RlinkCommandExpect::RlinkCommandExpect(uint8_t stat, uint8_t statmsk,
- const std::vector& block)
- : fStatusVal(stat),
- fStatusMsk(statmsk),
- fDataVal(0),
- fDataMsk(0xffff),
- fBlockVal(block),
- fBlockMsk()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RlinkCommandExpect::RlinkCommandExpect(uint8_t stat, uint8_t statmsk,
- const std::vector& block,
- const std::vector& blockmsk)
- : fStatusVal(stat),
- fStatusMsk(statmsk),
- fDataVal(0),
- fDataMsk(0xffff),
- fBlockVal(block),
- fBlockMsk(blockmsk)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkCommandExpect::~RlinkCommandExpect()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkCommandExpect::BlockCheck(size_t ind, uint16_t val) const
-{
- if (ind >= fBlockVal.size()) return true;
- uint16_t eval = fBlockVal[ind];
- uint16_t emsk = (ind < fBlockMsk.size()) ? fBlockMsk[ind] : 0x0000;
- return (val|emsk) == (eval|emsk);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandExpect::BlockCheck(const uint16_t* pval, size_t size) const
-{
- size_t nerr = 0;
- for (size_t i=0; i= fBlockVal.size()) break;
- uint16_t eval = fBlockVal[i];
- uint16_t emsk = (i < fBlockMsk.size()) ? fBlockMsk[i] : 0x0000;
- if ((pval[i]|emsk) != (eval|emsk)) nerr += 1;
- }
-
- return nerr;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkCommandExpect::BlockIsChecked(size_t ind) const
-{
- if (ind >= fBlockVal.size()) return false;
- if (ind >= fBlockMsk.size()) return true;
- return fBlockMsk[ind] != 0xffff;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommandExpect::Dump(std::ostream& os, int ind, const char* text) const
-{
- RosFill bl(ind);
- os << bl << (text?text:"--") << "RlinkCommandExpect @ " << this << endl;
-
- os << bl << " fStatusVal: " << RosPrintBvi(fStatusVal,0) << endl;
- os << bl << " fStatusMsk: " << RosPrintBvi(fStatusMsk,0) << endl;
- os << bl << " fDataVal: " << RosPrintBvi(fDataVal,0) << endl;
- os << bl << " fDataMsk: " << RosPrintBvi(fDataMsk,0) << endl;
- os << bl << " fBlockVal.size: " << RosPrintf(fBlockVal.size(),"d",3) << endl;
- os << bl << " fBlockMsk.size: " << RosPrintf(fBlockMsk.size(),"d",3) << endl;
- if (fBlockVal.size() > 0) {
- os << bl << " fBlockVal & Msk data: ";
- size_t width = (fBlockMsk.size()>0) ? 9 : 4;
- size_t ncol = max(1u, (80-ind-4-5)/(width+1));
- for (size_t i=0; i< fBlockVal.size(); i++) {
- if (i%ncol == 0) os << "\n" << bl << " " << RosPrintf(i,"d",3) << ": ";
-
- os << RosPrintBvi(fBlockVal[i],16);
- if (fBlockMsk.size()>0) {
- if (i
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkPortFifo.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of RlinkPortFifo.
-*/
-
-#include
-#include
-#include
-#include
-
-#include "RlinkPortFifo.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkPortFifo
- \brief FIXME_text
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkPortFifo::RlinkPortFifo()
- : RlinkPort()
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkPortFifo::~RlinkPortFifo()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-bool RlinkPortFifo::Open(const std::string& url, RerrMsg& emsg)
-{
- if (IsOpen()) Close();
-
- if (!ParseUrl(url, "|keep|", emsg)) return false;
-
- // Note: _rx fifo must be opened before the _tx fifo, otherwise the test
- // bench might close with EOF on read prematurely (is a race condition).
-
- fFdWrite = OpenFifo(UrlPath() + "_rx", true, emsg);
- if (fFdWrite < 0) return false;
-
- fFdRead = OpenFifo(UrlPath() + "_tx", false, emsg);
- if (fFdRead < 0) {
- close(fFdWrite);
- fFdWrite = -1;
- return false;
- }
-
- fIsOpen = true;
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-int RlinkPortFifo::OpenFifo(const std::string& name, bool snd, RerrMsg& emsg)
-{
- struct stat stat_fifo;
-
- int irc;
-
- irc = stat(name.c_str(), &stat_fifo);
- if (irc == 0) {
- if ((stat_fifo.st_mode & S_IFIFO) == 0) {
- emsg.Init("RlinkPortFifo::OpenFiFo()",
- string("\"") + name + string("\" exists but is not a pipe"));
- return -1;
- }
- } else {
- mode_t mode = S_IRUSR | S_IWUSR; // user read and write allowed
- irc = mkfifo(name.c_str(), mode);
- if (irc != 0) {
- emsg.InitErrno("RlinkPortFifo::OpenFifo()",
- string("mkfifo() for \"") + name + string("\" failed: "),
- errno);
- return -1;
- }
- }
-
- irc = open(name.c_str(), snd ? O_WRONLY : O_RDONLY);
- if (irc < 0) {
- emsg.InitErrno("RlinkPortFifo::OpenFifo()",
- string("open() for \"") + name + string("\" failed: "),
- errno);
- return -1;
- }
-
- return irc;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkPortFifo_NoInline))
-#define inline
-//#include "RlinkPortFifo.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink/RlinkPort.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkPort.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkPort.hpp (nonexistent)
@@ -1,123 +0,0 @@
-// $Id: RlinkPort.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 375 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkPort.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RlinkPort.
-*/
-
-#ifndef included_Retro_RlinkPort
-#define included_Retro_RlinkPort 1
-
-#include
-#include
-
-#include "librtools/RerrMsg.hpp"
-#include "librtools/RlogFile.hpp"
-#include "librtools/Rstats.hpp"
-
-namespace Retro {
-
- class RlinkPort {
- public:
- typedef std::map omap_t;
- typedef omap_t::iterator omap_it_t;
- typedef omap_t::const_iterator omap_cit_t;
- typedef omap_t::value_type omap_val_t;
-
- RlinkPort();
- virtual ~RlinkPort();
-
- virtual bool Open(const std::string& url, RerrMsg& emsg) = 0;
- virtual void Close();
-
- virtual int Read(uint8_t* buf, size_t size, double timeout,
- RerrMsg& emsg);
- virtual int Write(const uint8_t* buf, size_t size, RerrMsg& emsg);
- virtual bool PollRead(double timeout);
-
- bool IsOpen() const;
- const std::string& Url() const;
- const std::string& UrlScheme() const;
- const std::string& UrlPath() const;
- const omap_t& UrlOpts() const;
- bool UrlFindOpt(const std::string& name) const;
- bool UrlFindOpt(const std::string& name,
- std::string& value) const;
-
- int FdRead() const;
- int FdWrite() const;
-
- void SetLogFile(RlogFile* log);
- void SetTraceLevel(size_t level);
- size_t TraceLevel() const;
-
- const Rstats& Stats() const;
-
- virtual void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
- // some constants
- static const int kEof = 0;
- static const int kTout = -1;
- static const int kErr = -2;
-
- // statistics counter indices
- enum stats {
- kStatNPortWrite = 0,
- kStatNPortRead,
- kStatNPortTxByt,
- kStatNPortRxByt,
- kDimStat
- };
-
- protected:
- bool ParseUrl(const std::string& url, const std::string& optlist,
- RerrMsg& emsg);
- bool AddOpt(const std::string& key, const std::string& val,
- bool hasval, const std::string& optlist,
- RerrMsg& emsg);
-
- protected:
- bool fIsOpen; //!< is open flag
- std::string fUrl; //!< full url given with open
- std::string fScheme; //!< url scheme part
- std::string fPath; //!< url path part
- omap_t fOptMap; //!< option map
- int fFdRead; //!< fd for read
- int fFdWrite; //!< fd for write
- RlogFile* fpLogFile; //!< ptr to log file dsc
- size_t fTraceLevel; //!< trace level
- Rstats fStats; //!< statistics
-
- // RlinkPort is not copyable and assignable
- private:
- RlinkPort(const RlinkPort& rhs);
- RlinkPort& operator=(const RlinkPort& rhs);
-
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkPort_NoInline))
-#include "RlinkPort.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkPort.ipp
===================================================================
--- trunk/tools/src/librlink/RlinkPort.ipp (revision 10)
+++ trunk/tools/src/librlink/RlinkPort.ipp (nonexistent)
@@ -1,119 +0,0 @@
-// $Id: RlinkPort.ipp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 375 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkPort.ipp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation (inline) of RlinkPort.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline bool RlinkPort::IsOpen() const
-{
- return fIsOpen;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const std::string& RlinkPort::Url() const
-{
- return fUrl;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const std::string& RlinkPort::UrlScheme() const
-{
- return fScheme;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const std::string& RlinkPort::UrlPath() const
-{
- return fPath;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const RlinkPort::omap_t& RlinkPort::UrlOpts() const
-{
- return fOptMap;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline int RlinkPort::FdRead() const
-{
- return fFdRead;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline int RlinkPort::FdWrite() const
-{
- return fFdWrite;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkPort::SetLogFile(RlogFile* log)
-{
- fpLogFile = log;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkPort::SetTraceLevel(size_t level)
-{
- fTraceLevel = level;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline size_t RlinkPort::TraceLevel() const
-{
- return fTraceLevel;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const Rstats& RlinkPort::Stats() const
-{
- return fStats;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librlink/Makefile
===================================================================
--- trunk/tools/src/librlink/Makefile (revision 10)
+++ trunk/tools/src/librlink/Makefile (nonexistent)
@@ -1,57 +0,0 @@
-# $Id: $
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-01-09 354 1.0 Initial version (adopted from CTB...)
-#---
-#
-# Name of the sharable library
-#
-SONAME = rlink
-SOMAJV = 1
-SOMINV = 0
-#
-# Compile and Link search paths
-#
-INCLFLAGS = -I${RETROBASE}/tools/src
-LDLIBS = -L${RETROBASE}/tools/lib -lrtools
-#
-# Object files to be included
-#
-OBJ_all = RlinkAddrMap.o \
- RlinkCommand.o RlinkCommandExpect.o RlinkCommandList.o \
- RlinkConnect.o \
- RlinkCrc8.o RlinkPacketBuf.o \
- RlinkPort.o RlinkPortFactory.o RlinkPortFifo.o RlinkPortTerm.o
-#
-DEP_all = $(OBJ_all:.o=.dep)
-#
-#- generic part ----------------------------------------------------------------
-#
-SOFILE = lib$(SONAME).so
-SOFILEV = lib$(SONAME).so.$(SOMAJV)
-SOFILEVV = lib$(SONAME).so.$(SOMAJV).$(SOMINV)
-#
-include $(RETROBASE)/tools/make/generic_cpp.mk
-include $(RETROBASE)/tools/make/generic_dep.mk
-include $(RETROBASE)/tools/make/generic_so.mk
-#
-# The magic autodependcy include
-#
-include $(DEP_all)
-#
-# cleanup phonies:
-#
-.PHONY : clean cleandep realclean
-clean :
- @ rm -f $(OBJ_all)
- @ echo "Object files removed"
-#
-cleandep :
- @ rm -f $(DEP_all)
- @ echo "Dependency files removed"
-#
-realclean : clean cleandep
- @ rm -f $(SOPATH)/lib$(SONAME).a $(SOPATH)/lib$(SONAME).so*
- @ echo "Libraries removed"
-#
Index: trunk/tools/src/librlink/.cvsignore
===================================================================
--- trunk/tools/src/librlink/.cvsignore (revision 10)
+++ trunk/tools/src/librlink/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-*.dep
Index: trunk/tools/src/librlink/RlinkCommandExpect.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkCommandExpect.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommandExpect.hpp (nonexistent)
@@ -1,89 +0,0 @@
-// $Id: RlinkCommandExpect.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-12 368 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkCommandExpect.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RlinkCommandExpect.
-*/
-
-#ifndef included_Retro_RlinkCommandExpect
-#define included_Retro_RlinkCommandExpect 1
-
-#include
-#include
-
-namespace Retro {
-
- class RlinkCommandExpect {
- public:
-
- RlinkCommandExpect();
- explicit RlinkCommandExpect(uint8_t stat, uint8_t statmsk=0);
- RlinkCommandExpect(uint8_t stat, uint8_t statmsk,
- uint16_t data, uint16_t datamsk=0);
- RlinkCommandExpect(uint8_t stat, uint8_t statmsk,
- const std::vector& block);
- RlinkCommandExpect(uint8_t stat, uint8_t statmsk,
- const std::vector& block,
- const std::vector& blockmsk);
- ~RlinkCommandExpect();
-
- void SetStatus(uint8_t stat, uint8_t statmsk=0);
- void SetData(uint16_t data, uint16_t datamsk=0);
- void SetBlock(const std::vector& block);
- void SetBlock(const std::vector& block,
- const std::vector& blockmsk);
-
- uint8_t StatusValue() const;
- uint8_t StatusMask() const;
- uint16_t DataValue() const;
- uint16_t DataMask() const;
- const std::vector& BlockValue() const;
- const std::vector& BlockMask() const;
-
- bool StatusCheck(uint8_t val) const;
- bool DataCheck(uint16_t val) const;
- bool BlockCheck(size_t ind, uint16_t val) const;
- size_t BlockCheck(const uint16_t* pval, size_t size) const;
-
- bool StatusIsChecked() const;
- bool DataIsChecked() const;
- bool BlockIsChecked(size_t ind) const;
-
-
- void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
- protected:
- uint8_t fStatusVal; //!< status value
- uint8_t fStatusMsk; //!< status mask
- uint16_t fDataVal; //!< data value
- uint16_t fDataMsk; //!< data mask
- std::vector fBlockVal; //!< block value
- std::vector fBlockMsk; //!< block mask
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkCommandExpect_NoInline))
-#include "RlinkCommandExpect.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkPortFifo.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkPortFifo.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkPortFifo.hpp (nonexistent)
@@ -1,53 +0,0 @@
-// $Id: RlinkPortFifo.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkPortFifo.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RlinkPortFifo.
-*/
-
-#ifndef included_Retro_RlinkPortFifo
-#define included_Retro_RlinkPortFifo 1
-
-#include "RlinkPort.hpp"
-
-namespace Retro {
-
- class RlinkPortFifo : public RlinkPort {
- public:
-
- RlinkPortFifo();
- virtual ~RlinkPortFifo();
-
- virtual bool Open(const std::string& url, RerrMsg& emsg);
-
- private:
- int OpenFifo(const std::string&, bool snd, RerrMsg& emsg);
-
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkPortFifo_NoInline))
-//#include "RlinkPortFifo.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkCommandExpect.ipp
===================================================================
--- trunk/tools/src/librlink/RlinkCommandExpect.ipp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommandExpect.ipp (nonexistent)
@@ -1,150 +0,0 @@
-// $Id: RlinkCommandExpect.ipp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-12 368 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkCommandExpect.ipp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation (inline) of class RlinkCommandExpect.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommandExpect::SetStatus(uint8_t stat, uint8_t statmsk)
-{
- fStatusVal = stat;
- fStatusMsk = statmsk;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommandExpect::SetData(uint16_t data, uint16_t datamsk)
-{
- fDataVal = data;
- fDataMsk = datamsk;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommandExpect::SetBlock(const std::vector& block)
-{
- fBlockVal = block;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommandExpect::SetBlock(
- const std::vector& block,
- const std::vector& blockmsk)
-{
- fBlockVal = block;
- fBlockMsk = blockmsk;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint8_t RlinkCommandExpect::StatusValue() const
-{
- return fStatusVal;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint8_t RlinkCommandExpect::StatusMask() const
-{
- return fStatusMsk;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint16_t RlinkCommandExpect::DataValue() const
-{
- return fDataVal;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint16_t RlinkCommandExpect::DataMask() const
-{
- return fDataMsk;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline const std::vector& RlinkCommandExpect::BlockValue() const
-{
- return fBlockVal;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline const std::vector& RlinkCommandExpect::BlockMask() const
-{
- return fBlockMsk;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline bool RlinkCommandExpect::StatusCheck(uint8_t val) const
-{
- return (val|fStatusMsk) == (fStatusVal|fStatusMsk);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline bool RlinkCommandExpect::DataCheck(uint16_t val) const
-{
- return (val|fDataMsk) == (fDataVal|fDataMsk);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline bool RlinkCommandExpect::StatusIsChecked() const
-{
- return fStatusMsk != 0xff;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline bool RlinkCommandExpect::DataIsChecked() const
-{
- return fDataMsk != 0xffff;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librlink/RlinkAddrMap.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkAddrMap.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkAddrMap.cpp (nonexistent)
@@ -1,189 +0,0 @@
-// $Id: RlinkAddrMap.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-06 367 1.0 Initial version
-// 2011-03-05 366 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkAddrMap.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of class RlinkAddrMap.
- */
-
-#include
-#include
-
-#include "RlinkAddrMap.hpp"
-
-#include "librtools/RosFill.hpp"
-#include "librtools/RosPrintf.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkAddrMap
- \brief FIXME_text
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkAddrMap::RlinkAddrMap()
- : fNameMap(),
- fAddrMap(),
- fMaxLength(0)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkAddrMap::~RlinkAddrMap()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkAddrMap::Clear()
-{
- fNameMap.clear();
- fAddrMap.clear();
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkAddrMap::Insert(const std::string& name, uint16_t addr)
-{
- if (fNameMap.find(name) != fNameMap.end()) return false;
- if (fAddrMap.find(addr) != fAddrMap.end()) return false;
-
- fNameMap.insert(nmap_val_t(name, addr));
- fAddrMap.insert(amap_val_t(addr, name));
- fMaxLength = max(fMaxLength, name.length());
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkAddrMap::Erase(const std::string& name)
-{
- nmap_cit_t it = fNameMap.find(name);
- if (it == fNameMap.end()) return false;
-
- fMaxLength = 0; // force recalculate
- if (fNameMap.erase(name) == 0)
- throw logic_error("RlinkAddrMap::Erase: fNameMap erase failed");
- if (fAddrMap.erase(it->second) == 0)
- throw logic_error("RlinkAddrMap::Erase: fAddrMap erase failed");
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkAddrMap::Erase(uint16_t addr)
-{
- amap_cit_t it = fAddrMap.find(addr);
- if (it == fAddrMap.end()) return false;
-
- fMaxLength = 0; // force recalculate
- if (fAddrMap.erase(addr) == 0)
- throw logic_error("RlinkAddrMap::Erase: fAddrMap erase failed");
- if (fNameMap.erase(it->second) == 0)
- throw logic_error("RlinkAddrMap::Erase: fNameMap erase failed");
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkAddrMap::Find(const std::string& name, uint16_t& addr) const
-{
- nmap_cit_t it = fNameMap.find(name);
- if (it == fNameMap.end()) return false;
-
- addr = it->second;
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkAddrMap::Find(uint16_t addr, std::string& name) const
-{
- amap_cit_t it = fAddrMap.find(addr);
- if (it == fAddrMap.end()) return false;
-
- name = it->second;
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkAddrMap::MaxNameLength() const
-{
- if (fMaxLength == 0) {
- for (amap_cit_t it=fAddrMap.begin(); it!=fAddrMap.end(); it++) {
- fMaxLength = max(fMaxLength, (it->second).length());
- }
- }
- return fMaxLength;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkAddrMap::Print(std::ostream& os, int ind) const
-{
- size_t maxlen = max(6u, MaxNameLength());
-
- RosFill bl(ind);
- for (amap_cit_t it=fAddrMap.begin(); it!=fAddrMap.end(); it++) {
- os << bl << RosPrintf((it->second).c_str(), "-s",maxlen)
- << " : " << RosPrintf(it->first, "$x0", 4)
- << " " << RosPrintf(it->first, "o0", 6) << endl;
- }
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkAddrMap::Dump(std::ostream& os, int ind, const char* text) const
-{
- RosFill bl(ind);
- os << bl << (text?text:"--") << "RlinkAddrMap @ " << this << endl;
- Print(os,ind+2);
- return;
-}
-
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkAddrMap_NoInline))
-#define inline
-#include "RlinkAddrMap.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink/RlinkCommandList.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkCommandList.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommandList.cpp (nonexistent)
@@ -1,284 +0,0 @@
-// $Id: RlinkCommandList.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-05 366 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkCommandList.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of class RlinkCommandList.
- */
-
-#include
-#include
-
-#include "RlinkCommandList.hpp"
-
-#include "librtools/RosPrintf.hpp"
-#include "librtools/RosFill.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkCommandList
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkCommandList::RlinkCommandList()
- : fList()
-{
- fList.reserve(16); // should prevent most re-alloc's
-}
-
-//------------------------------------------+-----------------------------------
-//! Copy constructor
-
-RlinkCommandList::RlinkCommandList(const RlinkCommandList& rhs)
- : fList()
-{
- operator=(rhs);
-}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkCommandList::~RlinkCommandList()
-{
- for (size_t i=0; iCmdRreg(addr);
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandList::AddRblk(uint16_t addr, size_t size)
-{
- RlinkCommand* pcmd = new RlinkCommand();
- pcmd->CmdRblk(addr, size);
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandList::AddRblk(uint16_t addr, uint16_t* block, size_t size)
-{
- RlinkCommand* pcmd = new RlinkCommand();
- pcmd->CmdRblk(addr, block, size);
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandList::AddWreg(uint16_t addr, uint16_t data)
-{
- RlinkCommand* pcmd = new RlinkCommand();
- pcmd->CmdWreg(addr, data);
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandList::AddWblk(uint16_t addr, std::vector block)
-{
- RlinkCommand* pcmd = new RlinkCommand();
- pcmd->CmdWblk(addr, block);
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandList::AddWblk(uint16_t addr, const uint16_t* block,
- size_t size)
-{
- RlinkCommand* pcmd = new RlinkCommand();
- pcmd->CmdWblk(addr, block, size);
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandList::AddStat()
-{
- RlinkCommand* pcmd = new RlinkCommand();
- pcmd->CmdStat();
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandList::AddAttn()
-{
- RlinkCommand* pcmd = new RlinkCommand();
- pcmd->CmdAttn();
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-size_t RlinkCommandList::AddInit(uint16_t addr, uint16_t data)
-{
- RlinkCommand* pcmd = new RlinkCommand();
- pcmd->CmdInit(addr, data);
- return AddCommand(pcmd);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommandList::LastVolatile()
-{
- if (fList.size() == 0)
- throw out_of_range("RlinkCommandList::LastExpect: list empty");
- fList[fList.size()-1]->SetFlagBit(RlinkCommand::kFlagVol);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommandList::LastExpect(RlinkCommandExpect* exp)
-{
- if (fList.size() == 0)
- throw out_of_range("RlinkCommandList::LastExpect: list empty");
- fList[fList.size()-1]->SetExpect(exp);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommandList::Clear()
-{
-
- fList.clear();
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommandList::Print(std::ostream& os, const RlinkAddrMap* pamap,
- size_t abase, size_t dbase, size_t sbase) const
-{
- for (size_t i=0; iPrint(os, pamap, abase, dbase, sbase);
- }
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommandList::Dump(std::ostream& os, int ind, const char* text) const
-{
- RosFill bl(ind);
- os << bl << (text?text:"--") << "RlinkCommandList @ " << this << endl;
-
- for (size_t i=0; iDump(os, ind+2, pref.c_str());
- }
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RlinkCommandList&
- Retro::RlinkCommandList::operator=( const RlinkCommandList& rhs)
-{
- if (&rhs == this) return *this;
- for (size_t i=0; i
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkPortTerm.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of RlinkPortTerm.
-*/
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "RlinkPortTerm.hpp"
-
-#include "librtools/RosFill.hpp"
-#include "librtools/RosPrintf.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkPortTerm
- \brief FIXME_text
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkPortTerm::RlinkPortTerm()
- : RlinkPort()
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkPortTerm::~RlinkPortTerm()
-{
- if (IsOpen()) RlinkPortTerm::Close();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-bool RlinkPortTerm::Open(const std::string& url, RerrMsg& emsg)
-{
- if (IsOpen()) Close();
-
- if (!ParseUrl(url, "|baud=|break|", emsg)) return false;
-
- speed_t speed = B115200;
- string baud;
- if (UrlFindOpt("baud", baud)) {
- speed = B0;
- if (baud=="9600") speed = B9600;
- if (baud=="19200" || baud=="19k") speed = B19200;
- if (baud=="38400" || baud=="38k") speed = B38400;
- if (baud=="57600" || baud=="57k") speed = B57600;
- if (baud=="115200" || baud=="115k") speed = B115200;
- if (baud=="230400" || baud=="230k") speed = B230400;
- if (baud=="460800" || baud=="460k") speed = B460800;
- if (baud=="500000" || baud=="500k") speed = B500000;
- if (baud=="921600" || baud=="921k") speed = B921600;
- if (baud=="1000000" || baud=="1M") speed = B1000000;
- if (baud=="2000000" || baud=="2M") speed = B2000000;
- if (baud=="3000000" || baud=="3M") speed = B3000000;
- if (speed == B0) {
- emsg.Init("RlinkPortTerm::Open()",
- string("invalid baud rate \"") + baud + string("\" specified"));
- return false;
- }
- }
-
- int fd;
-
- fd = open(fPath.c_str(), O_RDWR|O_NOCTTY);
- if (fd < 0) {
- emsg.InitErrno("RlinkPortTerm::Open()",
- string("open() for \"") + fPath + string("\" failed: "),
- errno);
- return false;
- }
-
- if (!isatty(fd)) {
- emsg.Init("RlinkPortTerm::Open()",
- string("isatty() check for \"") + fPath +
- string("\" failed: not a TTY"));
- close(fd);
- return false;
- }
-
- if (tcgetattr(fd, &fTiosOld) != 0) {
- emsg.InitErrno("RlinkPortTerm::Open()",
- string("tcgetattr() for \"") + fPath + string("\" failed: "),
- errno);
- close(fd);
- return false;
- }
-
- fTiosNew = fTiosOld;
-
- fTiosNew.c_iflag = IGNBRK | // ignore breaks on input
- IGNPAR; // ignore parity errors
- fTiosNew.c_oflag = 0;
- fTiosNew.c_cflag = CS8 | // 8 bit chars
- CSTOPB | // 2 stop bits
- CREAD | // enable receiver
- CLOCAL | // ignore modem control
- CRTSCTS; // enable hardware flow control
- fTiosNew.c_lflag = 0;
-
- if (cfsetspeed(&fTiosNew, speed) != 0) {
- emsg.InitErrno("RlinkPortTerm::Open()",
- string("cfsetspeed() for \"") + baud + string("\" failed: "),
- errno);
- close(fd);
- return false;
- }
-
- fTiosNew.c_cc[VEOF] = 0; // undef
- fTiosNew.c_cc[VEOL] = 0; // undef
- fTiosNew.c_cc[VERASE] = 0; // undef
- fTiosNew.c_cc[VINTR] = 0; // undef
- fTiosNew.c_cc[VKILL] = 0; // undef
- fTiosNew.c_cc[VQUIT] = 0; // undef
- fTiosNew.c_cc[VSUSP] = 0; // undef
- fTiosNew.c_cc[VSTART] = 0; // undef
- fTiosNew.c_cc[VSTOP] = 0; // undef
- fTiosNew.c_cc[VMIN] = 1; // wait for 1 char
- fTiosNew.c_cc[VTIME] = 0; //
-
- if (tcsetattr(fd, TCSANOW, &fTiosNew) != 0) {
- emsg.InitErrno("RlinkPortTerm::Open()",
- string("tcsetattr() for \"") + fPath + string("\" failed: "),
- errno);
- close(fd);
- return false;
- }
-
- fFdWrite = fd;
- fFdRead = fd;
- fIsOpen = true;
-
- if (UrlFindOpt("break")) {
- if (tcsendbreak(fd, 0) != 0) {
- emsg.InitErrno("RlinkPortTerm::Open()",
- string("tcsendbreak() for \"") + fPath +
- string("\" failed: "), errno);
- Close();
- return false;
- }
- uint8_t buf[1];
- buf[0] = 0x80;
- if (Write(buf, 1, emsg) != 1) {
- Close();
- return false;
- }
- }
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-void RlinkPortTerm::Close()
-{
- if (fIsOpen) {
- if (fFdWrite >= 0) {
- tcflush(fFdWrite, TCIOFLUSH);
- tcsetattr(fFdWrite, TCSANOW, &fTiosOld);
- }
- RlinkPort::Close();
- }
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-void RlinkPortTerm::Dump(std::ostream& os, int ind, const char* text) const
-{
- RosFill bl(ind);
- os << bl << (text?text:"--") << "RlinkPortTerm @ " << this << endl;
- DumpTios(os, ind, "fTiosOld", fTiosOld);
- DumpTios(os, ind, "fTiosNew", fTiosNew);
- RlinkPort::Dump(os, ind+2, "");
- return;
-}
-
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-void RlinkPortTerm::DumpTios(std::ostream& os, int ind, const std::string& name,
- const struct termios& tios) const
-{
- RosFill bl(ind+2);
- os << bl << name << ":" << endl;
- os << bl << " c_iflag : " << RosPrintf(tios.c_iflag,"x0",8);
- if (tios.c_iflag & BRKINT) os << " BRKINT";
- if (tios.c_iflag & ICRNL) os << " ICRNL ";
- if (tios.c_iflag & IGNBRK) os << " IGNBRK";
- if (tios.c_iflag & IGNCR) os << " IGNCR ";
- if (tios.c_iflag & IGNPAR) os << " IGNPAR";
- if (tios.c_iflag & INLCR) os << " INLCR ";
- if (tios.c_iflag & INPCK) os << " INPCK ";
- if (tios.c_iflag & ISTRIP) os << " ISTRIP";
- if (tios.c_iflag & IXOFF) os << " IXOFF ";
- if (tios.c_iflag & IXON) os << " IXON ";
- if (tios.c_iflag & PARMRK) os << " PARMRK";
- os << endl;
-
- os << bl << " c_oflag : " << RosPrintf(tios.c_oflag,"x0",8);
- if (tios.c_oflag & OPOST) os << " OPOST ";
- os << endl;
-
- os << bl << " c_cflag : " << RosPrintf(tios.c_cflag,"x0",8);
- if (tios.c_cflag & CLOCAL) os << " CLOCAL";
- if (tios.c_cflag & CREAD) os << " CREAD ";
- if ((tios.c_cflag & CSIZE) == CS5) os << " CS5 ";
- if ((tios.c_cflag & CSIZE) == CS6) os << " CS6 ";
- if ((tios.c_cflag & CSIZE) == CS7) os << " CS7 ";
- if ((tios.c_cflag & CSIZE) == CS8) os << " CS8 ";
- if (tios.c_cflag & CSTOPB) os << " CSTOPB";
- if (tios.c_cflag & HUPCL) os << " HUPCL ";
- if (tios.c_cflag & PARENB) os << " PARENB";
- if (tios.c_cflag & PARODD) os << " PARODD";
- speed_t speed = cfgetispeed(&tios);
- int baud = 0;
- if (speed == B9600) baud = 9600;
- if (speed == B19200) baud = 19200;
- if (speed == B38400) baud = 38400;
- if (speed == B57600) baud = 57600;
- if (speed == B115200) baud = 115200;
- if (speed == B230400) baud = 230400;
- if (speed == B460800) baud = 460800;
- if (speed == B500000) baud = 500000;
- if (speed == B921600) baud = 921600;
- if (speed == B1000000) baud = 1000000;
- if (speed == B2000000) baud = 2000000;
- if (speed == B3000000) baud = 3000000;
- os << " speed: " << RosPrintf(baud, "d", 7);
- os << endl;
-
- os << bl << " c_lflag : " << RosPrintf(tios.c_lflag,"x0",8);
- if (tios.c_lflag & ECHO) os << " ECHO ";
- if (tios.c_lflag & ECHOE) os << " ECHOE ";
- if (tios.c_lflag & ECHOK) os << " ECHOK ";
- if (tios.c_lflag & ECHONL) os << " ECHONL";
- if (tios.c_lflag & ICANON) os << " ICANON";
- if (tios.c_lflag & IEXTEN) os << " IEXTEN";
- if (tios.c_lflag & ISIG) os << " ISIG ";
- if (tios.c_lflag & NOFLSH) os << " NOFLSH";
- if (tios.c_lflag & TOSTOP) os << " TOSTOP";
- os << endl;
-
- os << bl << " c_cc : " << endl;
- os << bl << " [VEOF] : " << RosPrintf(tios.c_cc[VEOF],"o",3);
- os << " [VEOL] : " << RosPrintf(tios.c_cc[VEOL],"o",3);
- os << " [VERASE]: " << RosPrintf(tios.c_cc[VERASE],"o",3);
- os << " [VINTR] : " << RosPrintf(tios.c_cc[VINTR],"o",3) << endl;
- os << bl << " [VKILL] : " << RosPrintf(tios.c_cc[VKILL],"o",3);
- os << " [VQUIT] : " << RosPrintf(tios.c_cc[VQUIT],"o",3);
- os << " [VSUSP] : " << RosPrintf(tios.c_cc[VSUSP],"o",3);
- os << " [VSTART]: " << RosPrintf(tios.c_cc[VSTART],"o",3) << endl;
- os << bl << " [VSTOP] : " << RosPrintf(tios.c_cc[VSTOP],"o",3);
- os << " [VMIN] : " << RosPrintf(tios.c_cc[VMIN],"o",3);
- os << " [VTIME] : " << RosPrintf(tios.c_cc[VTIME],"o",3) << endl;
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkPortTerm_NoInline))
-#define inline
-//#include "RlinkPortTerm.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink/RlinkPortFactory.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkPortFactory.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkPortFactory.cpp (nonexistent)
@@ -1,81 +0,0 @@
-// $Id: RlinkPortFactory.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkPortFactory.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of RlinkPortFactory.
-*/
-
-#include "RlinkPortFactory.hpp"
-#include "RlinkPortFifo.hpp"
-#include "RlinkPortTerm.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkPortFactory
- \brief FIXME_text
-*/
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-RlinkPort* Retro::RlinkPortFactory::New(const std::string& url, RerrMsg& emsg)
-{
- size_t dpos = url.find_first_of(':');
- if (dpos == string::npos) {
- emsg.Init("RlinkPortFactory::New()",
- string("no scheme specified in url \"" + url + string("\"")));
- return 0;
- }
-
- string scheme = url.substr(0,dpos); // get scheme without ':' delim
-
- if (scheme == "fifo") {
- return new RlinkPortFifo();
- } else if (scheme == "term") {
- return new RlinkPortTerm();
- }
-
- emsg.Init("RlinkPortFactory::New()", string("unknown scheme: ") + scheme);
- return 0;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-RlinkPort* RlinkPortFactory::Open(const std::string& url, RerrMsg& emsg)
-{
- RlinkPort* pport = New(url, emsg);
- if (pport == 0) return 0;
-
- if (pport->Open(url, emsg)) return pport;
- delete pport;
- return 0;
-}
-
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkPortFactory_NoInline))
-#define inline
-//#include "RlinkPortFactory.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink/RlinkAddrMap.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkAddrMap.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkAddrMap.hpp (nonexistent)
@@ -1,80 +0,0 @@
-// $Id: RlinkAddrMap.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-05 366 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkAddrMap.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class \c RlinkAddrMap.
-*/
-
-#ifndef included_Retro_RlinkAddrMap
-#define included_Retro_RlinkAddrMap 1
-
-#include
-#include
-#include
-#include
-
-namespace Retro {
-
- class RlinkAddrMap {
- public:
- typedef std::map nmap_t;
- typedef nmap_t::iterator nmap_it_t;
- typedef nmap_t::const_iterator nmap_cit_t;
- typedef nmap_t::value_type nmap_val_t;
- typedef std::map amap_t;
- typedef amap_t::iterator amap_it_t;
- typedef amap_t::const_iterator amap_cit_t;
- typedef amap_t::value_type amap_val_t;
-
- RlinkAddrMap();
- ~RlinkAddrMap();
-
- void Clear();
-
- bool Insert(const std::string& name, uint16_t addr);
- bool Erase(const std::string& name);
- bool Erase(uint16_t addr);
-
- bool Find(const std::string& name, uint16_t& addr) const;
- bool Find(uint16_t addr, std::string& name) const;
-
- const nmap_t& Nmap() const;
- const amap_t& Amap() const;
-
- size_t MaxNameLength() const;
-
- void Print(std::ostream& os, int ind=0) const;
- void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
- protected:
- nmap_t fNameMap; //!< name->addr map
- amap_t fAddrMap; //!< addr->name map
- mutable size_t fMaxLength; //!< max name length
-
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkAddrMap_NoInline))
-#include "RlinkAddrMap.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkCommand.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkCommand.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommand.cpp (nonexistent)
@@ -1,497 +0,0 @@
-// $Id: RlinkCommand.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkCommand.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of class RlinkCommand.
- */
-
-// debug
-#include
-
-#include
-#include
-
-#include "RlinkCommand.hpp"
-
-#include "librtools/RosFill.hpp"
-#include "librtools/RosPrintf.hpp"
-#include "librtools/RosPrintBvi.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkCommand
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-// constants definitions
-
-const uint8_t RlinkCommand::kCmdRreg;
-const uint8_t RlinkCommand::kCmdRblk;
-const uint8_t RlinkCommand::kCmdWreg;
-const uint8_t RlinkCommand::kCmdWblk;
-const uint8_t RlinkCommand::kCmdStat;
-const uint8_t RlinkCommand::kCmdAttn;
-const uint8_t RlinkCommand::kCmdInit;
-
-const uint32_t RlinkCommand::kFlagInit;
-const uint32_t RlinkCommand::kFlagSend;
-const uint32_t RlinkCommand::kFlagDone;
-const uint32_t RlinkCommand::kFlagPktBeg;
-const uint32_t RlinkCommand::kFlagPktEnd;
-const uint32_t RlinkCommand::kFlagRecov;
-const uint32_t RlinkCommand::kFlagResend;
-const uint32_t RlinkCommand::kFlagErrNak;
-const uint32_t RlinkCommand::kFlagErrMiss;
-const uint32_t RlinkCommand::kFlagErrCmd;
-const uint32_t RlinkCommand::kFlagErrCrc;
-const uint32_t RlinkCommand::kFlagChkStat;
-const uint32_t RlinkCommand::kFlagChkData;
-const uint32_t RlinkCommand::kFlagVol;
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkCommand::RlinkCommand()
- : fRequest(0),
- fAddress(0),
- fData(0),
- fBlock(),
- fpBlockExt(0),
- fBlockExtSize(0),
- fStatRequest(0),
- fStatus(0),
- fFlags(0),
- fRcvSize(0),
- fpExpect(0)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Copy constructor
-
-RlinkCommand::RlinkCommand(const RlinkCommand& rhs)
- : fRequest(rhs.fRequest),
- fAddress(rhs.fAddress),
- fData(rhs.fData),
- fBlock(rhs.fBlock),
- fpBlockExt(rhs.fpBlockExt),
- fBlockExtSize(rhs.fBlockExtSize),
- fStatRequest(rhs.fStatRequest),
- fStatus(rhs.fStatus),
- fFlags(rhs.fFlags),
- fRcvSize(rhs.fRcvSize),
- fpExpect(rhs.fpExpect ? new RlinkCommandExpect(*rhs.fpExpect) : 0)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkCommand::~RlinkCommand()
-{
- delete fpExpect; // expect object owned by command
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::CmdRblk(uint16_t addr, size_t size)
-{
- SetCommand(kCmdRblk, addr);
- SetBlockRead(size);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::CmdRblk(uint16_t addr, uint16_t* pblock, size_t size)
-{
- SetCommand(kCmdRblk, addr);
- SetBlockExt(pblock, size);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::CmdWblk(uint16_t addr, const std::vector& block)
-{
- SetCommand(kCmdWblk, addr);
- SetBlockWrite(block);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::CmdWblk(uint16_t addr, const uint16_t* pblock, size_t size)
-{
- SetCommand(kCmdWblk, addr);
- SetBlockExt(const_cast(pblock), size);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::SetCommand(uint8_t cmd, uint16_t addr, uint16_t data)
-{
- if (cmd > kCmdInit)
- throw invalid_argument("RlinkCommand::SetCommand: invalid cmd");
- if (addr > 0xff)
- throw invalid_argument("RlinkCommand::SetCommand: invalid addr");
- fRequest = cmd;
- fAddress = addr;
- fData = data;
- fpBlockExt = 0;
- fBlockExtSize = 0;
- fStatus = 0;
- fFlags = kFlagInit;
- fRcvSize = 0;
- delete fpExpect;
- fpExpect = 0;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::SetAddress(uint16_t addr)
-{
- if (addr > 0xff)
- throw invalid_argument("RlinkCommand::SetAddress: invalid addr");
- fAddress = addr;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::SetBlockWrite(const std::vector& block)
-{
- if (block.size() == 0 || block.size() > 256)
- throw invalid_argument("RlinkCommand::SetBlockWrite: invalid block size");
- fBlock = block;
- fpBlockExt = 0;
- fBlockExtSize = 0;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::SetBlockRead(size_t size)
-{
- if (size == 0 || size > 256)
- throw invalid_argument("RlinkCommand::SetBlockRead: invalid block size");
- fBlock.clear();
- fBlock.resize(size);
- fpBlockExt = 0;
- fBlockExtSize = 0;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::SetBlockExt(uint16_t* pblock, size_t size)
-{
- if (pblock == 0)
- throw invalid_argument("RlinkCommand::SetBlockExt: pblock is null");
- if (size == 0 || size > 256)
- throw invalid_argument("RlinkCommand::SetBlockExt: invalid block size");
- fpBlockExt = pblock;
- fBlockExtSize = size;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::SetExpect(RlinkCommandExpect* pexp)
-{
- delete fpExpect;
- fpExpect = pexp;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkCommand::Print(std::ostream& os, const RlinkAddrMap* pamap,
- size_t abase, size_t dbase, size_t sbase) const
-{
- uint8_t ccode = Command();
-
- // separator + command mnemonic, code and flags
- // separator: ++ first in packet
- // -- non-first in packet
- // -= non-first in packet (marked volatile)
- const char* sep = "??";
- if (TestFlagAny(kFlagPktBeg)) {
- sep = "++";
- } else {
- sep = TestFlagAny(kFlagVol) ? "-=" : "--";
- }
-
- os << sep << " " << CommandName(ccode)
- << " (" << RosPrintBvi(Request(), 8)
- << "," << RosPrintBvi(fFlags, 16, 20)
- << ")";
-
- // address field
- if (ccode==kCmdRreg || ccode==kCmdRblk ||
- ccode==kCmdWreg || ccode==kCmdWblk ||
- ccode==kCmdInit) {
- os << " a=" << RosPrintBvi(fAddress, abase);
- if (pamap) {
- string name;
- if (!pamap->Find(fAddress, name)) name.clear();
- os << "(" << name << RosFill(pamap->MaxNameLength()-name.length()) << ")";
- }
- }
-
- // data field (scalar)
- if (ccode== kCmdRreg || ccode==kCmdWreg ||
- ccode== kCmdStat || ccode==kCmdAttn ||
- ccode== kCmdInit) {
- os << " d=" << RosPrintBvi(fData, dbase);
-
- if (fpExpect &&
- (ccode==kCmdRreg || ccode==kCmdStat || ccode==kCmdAttn)) {
- if (TestFlagAny(kFlagChkData)) {
- os << "#";
- os << " D=" << RosPrintBvi(fpExpect->DataValue(), dbase);
- if (fpExpect->DataMask() != 0x0000) {
- os << "," << RosPrintBvi(fpExpect->DataMask(), dbase);
- }
- } else if (fpExpect->DataIsChecked()) {
- os << "!";
- } else {
- os << " ";
- }
- } else {
- os << " ";
- }
- }
-
- if (ccode== kCmdRblk || ccode==kCmdWblk) {
- os << " n=" << RosPrintf(BlockSize(), "d", 3);
- }
-
- // ccmd field
- if (ccode == kCmdStat) {
- os << " c=" << RosPrintBvi(fStatRequest, 8);
- }
-
- // status field
- os << " s=" << RosPrintBvi(fStatus, sbase);
- if (fpExpect) {
- if (TestFlagAny(kFlagChkStat)) {
- os << "#";
- os << " S=" << RosPrintBvi(fpExpect->StatusValue(), sbase);
- if (fpExpect->StatusMask() != 0x00) {
- os << "," << RosPrintBvi(fpExpect->StatusMask(), sbase);
- }
- } else if (fpExpect->StatusIsChecked()) {
- os << "!";
- } else {
- os << " ";
- }
- } else {
- os << " ";
- }
-
- if (TestFlagAny(kFlagDone)) {
- if (TestFlagAny(kFlagChkStat|kFlagChkData)) {
- os << " FAIL: "
- << Rtools::Flags2String(fFlags&(kFlagChkStat|kFlagChkData),
- FlagNames(),',');
- } else {
- os << " OK";
- }
- if (TestFlagAny(kFlagRecov|kFlagResend)) os << " WARN: retried";
- } else if (TestFlagAny(kFlagSend)) {
- os << " FAIL: "
- << Rtools::Flags2String(fFlags&(kFlagErrNak|kFlagErrMiss|
- kFlagErrCmd|kFlagErrCrc),
- FlagNames(),',');
- } else {
- os << " PEND";
- }
-
- // handle data part of rblk and wblk commands
- size_t dwidth = (dbase==2) ? 16 : ((dbase==8) ? 6 : 4);
-
- if (ccode==kCmdRblk) {
- bool dcheck = (fpExpect && fpExpect->BlockValue().size() > 0);
- size_t ncol = (80-4-5)/(dwidth+2);
-
- size_t size = BlockSize();
- const uint16_t* pdat = BlockPointer();
-
- for (size_t i=0; iBlockCheck(i, pdat[i])) {
- os << "#";
- } else {
- os << (fpExpect->BlockIsChecked(i) ? "!" : "-");
- }
- } else {
- os << " ";
- }
- os << " ";
- }
-
- if (dcheck && TestFlagAny(kFlagChkData)) {
- const vector& evalvec = fpExpect->BlockValue();
- const vector& emskvec = fpExpect->BlockMask();
- for (size_t i=0; iBlockCheck(i, pdat[i])) {
- os << "\n FAIL d[" << RosPrintf(i,"d",3) << "]: "
- << RosPrintBvi(pdat[i], dbase) << "#"
- << " D=" << RosPrintBvi(evalvec[i], dbase);
- if (i < emskvec.size() && emskvec[i]!=0x0000) {
- os << "," << RosPrintBvi(emskvec[i], dbase);
- }
- }
- }
- }
- }
-
- if (ccode==kCmdWblk) {
- const uint16_t* pdat = BlockPointer();
- size_t size = BlockSize();
- size_t ncol = (80-4-5)/(dwidth+2);
- for (size_t i=0; i 0) {
- size_t ncol = max(1, (80-ind-4-5)/(4+1));
- os << bl << " block data:";
- for (size_t i=0; iDump(os, ind+2, "fpExpect: ");
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-const char* RlinkCommand::CommandName(uint8_t cmd)
-{
- static const char* cmdname[8] = {"rreg","rblk","wreg","wblk",
- "stat","attn","init","????"};
-
- return cmdname[cmd&0x7];
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-const Retro::RflagName* RlinkCommand::FlagNames()
-{
- // use msb first order, will also be printing order
- static Retro::RflagName fnam[] = {
- {kFlagChkData, "ChkData"},
- {kFlagChkStat, "ChkStat"},
- {kFlagErrCrc, "ErrCrc"},
- {kFlagErrCmd, "ErrCmd"},
- {kFlagErrMiss, "ErrMiss"},
- {kFlagErrNak, "ErrNak"},
- {kFlagResend, "Resend"},
- {kFlagRecov, "Recov"},
- {kFlagPktEnd, "PktEnd"},
- {kFlagPktBeg, "PktBeg"},
- {kFlagDone, "Done"},
- {kFlagSend, "Send"},
- {kFlagInit, "Init"},
- {0u, ""}
- };
- return fnam;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RlinkCommand& RlinkCommand::operator=(const RlinkCommand& rhs)
-{
- if (&rhs == this) return *this;
- fRequest = rhs.fRequest;
- fAddress = rhs.fAddress;
- fData = rhs.fData;
- fBlock = rhs.fBlock;
- fpBlockExt = rhs.fpBlockExt;
- fBlockExtSize = rhs.fBlockExtSize;
- fStatRequest = rhs.fStatRequest;
- fStatus = rhs.fStatus;
- fFlags = rhs.fFlags;
- fRcvSize = rhs.fRcvSize;
- delete fpExpect;
- fpExpect = rhs.fpExpect ? new RlinkCommandExpect(*rhs.fpExpect) : 0;
- return *this;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkCommand_NoInline))
-#define inline
-#include "RlinkCommand.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink/RlinkAddrMap.ipp
===================================================================
--- trunk/tools/src/librlink/RlinkAddrMap.ipp (revision 10)
+++ trunk/tools/src/librlink/RlinkAddrMap.ipp (nonexistent)
@@ -1,44 +0,0 @@
-// $Id: RlinkAddrMap.ipp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-05 366 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkAddrMap.ipp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation (inline) of class RlinkAddrMap.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const RlinkAddrMap::nmap_t& RlinkAddrMap::Nmap() const
-{
- return fNameMap;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const RlinkAddrMap::amap_t& RlinkAddrMap::Amap() const
-{
- return fAddrMap;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librlink/RlinkCommandList.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkCommandList.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommandList.hpp (nonexistent)
@@ -1,89 +0,0 @@
-// $Id: RlinkCommandList.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-05 366 1.0 Initial version
-// 2011-01-09 354 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkCommandList.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RlinkCommandList.
-*/
-
-#ifndef included_Retro_RlinkCommandList
-#define included_Retro_RlinkCommandList 1
-
-#include
-#include
-#include
-#include
-
-#include "RlinkCommandExpect.hpp"
-#include "RlinkCommand.hpp"
-#include "RlinkAddrMap.hpp"
-
-namespace Retro {
-
- class RlinkCommandList {
- public:
-
- RlinkCommandList();
- RlinkCommandList(const RlinkCommandList&);
- ~RlinkCommandList();
-
- size_t AddCommand(RlinkCommand* cmd);
- size_t AddCommand(const RlinkCommand& cmd);
- size_t AddCommand(const RlinkCommandList& clist);
- size_t AddRreg(uint16_t addr);
- size_t AddRblk(uint16_t addr, size_t size);
- size_t AddRblk(uint16_t addr, uint16_t* block, size_t size);
- size_t AddWreg(uint16_t addr, uint16_t data);
- size_t AddWblk(uint16_t addr, std::vector block);
- size_t AddWblk(uint16_t addr, const uint16_t* block, size_t size);
- size_t AddStat();
- size_t AddAttn();
- size_t AddInit(uint16_t addr, uint16_t data);
-
- void LastVolatile();
- void LastExpect(RlinkCommandExpect* exp);
-
- void Clear();
- size_t Size() const;
-
- void Print(std::ostream& os, const RlinkAddrMap* pamap=0,
- size_t abase=16, size_t dbase=16,
- size_t sbase=16) const;
- void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
- RlinkCommandList& operator=(const RlinkCommandList& rhs);
-
- RlinkCommand& operator[](size_t ind);
- const RlinkCommand& operator[](size_t ind) const;
-
- protected:
- std::vector fList; //!< vector of commands
- };
-
- std::ostream& operator<<(std::ostream& os, const RlinkCommandList& obj);
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkCommandList_NoInline))
-#include "RlinkCommandList.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkCommandList.ipp
===================================================================
--- trunk/tools/src/librlink/RlinkCommandList.ipp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommandList.ipp (nonexistent)
@@ -1,50 +0,0 @@
-// $Id: RlinkCommandList.ipp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-05 366 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkCommandList.ipp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation (inline) of class RlinkCommandList.
-*/
-
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline size_t RlinkCommandList::Size() const
-{
- return fList.size();
-}
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates RlinkCommandList
- \brief ostream insertion operator.
-*/
-
-inline std::ostream& operator<<(std::ostream& os, const RlinkCommandList& obj)
-{
- obj.Print(os);
- return os;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librlink/RlinkPortTerm.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkPortTerm.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkPortTerm.hpp (nonexistent)
@@ -1,61 +0,0 @@
-// $Id: RlinkPortTerm.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkPortTerm.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RlinkPortTerm.
-*/
-
-#ifndef included_Retro_RlinkPortTerm
-#define included_Retro_RlinkPortTerm 1
-
-#include
-
-#include "RlinkPort.hpp"
-
-namespace Retro {
-
- class RlinkPortTerm : public RlinkPort {
- public:
-
- RlinkPortTerm();
- virtual ~RlinkPortTerm();
-
- virtual bool Open(const std::string& url, RerrMsg& emsg);
- virtual void Close();
-
- virtual void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
- protected:
- void DumpTios(std::ostream& os, int ind, const std::string& name,
- const struct termios& tios) const;
-
- protected:
- struct termios fTiosOld;
- struct termios fTiosNew;
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkPortTerm_NoInline))
-//#include "RlinkPortTerm.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkPortFactory.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkPortFactory.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkPortFactory.hpp (nonexistent)
@@ -1,47 +0,0 @@
-// $Id: RlinkPortFactory.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkPortFactory.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RlinkPortFactory.
-*/
-
-#ifndef included_Retro_RlinkPortFactory
-#define included_Retro_RlinkPortFactory 1
-
-#include "librtools/RerrMsg.hpp"
-#include "RlinkPort.hpp"
-
-namespace Retro {
-
- class RlinkPortFactory {
- public:
- static RlinkPort* New(const std::string& url, RerrMsg& emsg);
- static RlinkPort* Open(const std::string& url, RerrMsg& emsg);
- };
-
-} // end namespace Retro
-
-//#if !(defined(Retro_NoInline) || defined(Retro_RlinkPortFactory_NoInline))
-//#include "RlinkPortFactory.ipp"
-//#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkCommand.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkCommand.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommand.hpp (nonexistent)
@@ -1,153 +0,0 @@
-// $Id: RlinkCommand.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-01-09 354 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkCommand.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RlinkCommand.
-*/
-
-#ifndef included_Retro_RlinkCommand
-#define included_Retro_RlinkCommand 1
-
-#include
-#include
-#include
-#include
-
-#include "RlinkCommandExpect.hpp"
-#include "RlinkAddrMap.hpp"
-#include "librtools/Rtools.hpp"
-
-namespace Retro {
-
- class RlinkCommand {
- public:
- RlinkCommand();
- RlinkCommand(const RlinkCommand& rhs);
- ~RlinkCommand();
-
- void CmdRreg(uint16_t addr);
- void CmdRblk(uint16_t addr, size_t size);
- void CmdRblk(uint16_t addr, uint16_t* pblock, size_t size);
- void CmdWreg(uint16_t addr, uint16_t data);
- void CmdWblk(uint16_t addr, const std::vector& block);
- void CmdWblk(uint16_t addr, const uint16_t* pblock, size_t size);
- void CmdStat();
- void CmdAttn();
- void CmdInit(uint16_t addr, uint16_t data);
-
- void SetCommand(uint8_t cmd, uint16_t addr=0, uint16_t data=0);
- void SetSeqNumber(uint8_t snum);
- void SetAddress(uint16_t addr);
- void SetData(uint16_t data);
- void SetBlockWrite(const std::vector& block);
- void SetBlockRead(size_t size) ;
- void SetBlockExt(uint16_t* pblock, size_t size);
- void SetStatRequest(uint8_t ccmd);
- void SetStatus(uint8_t stat);
- void SetFlagBit(uint32_t mask);
- void ClearFlagBit(uint32_t mask);
- void SetRcvSize(size_t rsize);
- void SetExpect(RlinkCommandExpect* pexp);
-
- uint8_t Request() const;
- uint8_t Command() const;
- uint8_t SeqNumber() const;
- uint16_t Address() const;
- uint16_t Data() const;
- const std::vector& Block() const;
- bool IsBlockExt() const;
- uint16_t* BlockPointer();
- const uint16_t* BlockPointer() const;
- size_t BlockSize() const;
- uint8_t StatRequest() const;
- uint8_t Status() const;
- uint32_t Flags() const;
- bool TestFlagAny(uint32_t mask) const;
- bool TestFlagAll(uint32_t mask) const;
- size_t RcvSize() const;
- RlinkCommandExpect* Expect() const;
-
- void Print(std::ostream& os, const RlinkAddrMap* pamap=0,
- size_t abase=16, size_t dbase=16,
- size_t sbase=16) const;
- void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
- static const char* CommandName(uint8_t cmd);
- static const RflagName* FlagNames();
-
- RlinkCommand& operator=(const RlinkCommand& rhs);
-
- // some constants
- static const uint8_t kCmdRreg = 0; //!< command code read register
- static const uint8_t kCmdRblk = 1; //!< command code read block
- static const uint8_t kCmdWreg = 2; //!< command code write register
- static const uint8_t kCmdWblk = 3; //!< command code write block
- static const uint8_t kCmdStat = 4; //!< command code get status
- static const uint8_t kCmdAttn = 5; //!< command code get attention
- static const uint8_t kCmdInit = 6; //!< command code send initialize
-
- static const uint32_t kFlagInit = 1u<<0; //!< cmd,addr,data setup
- static const uint32_t kFlagSend = 1u<<1; //!< command send
- static const uint32_t kFlagDone = 1u<<2; //!< command done
-
- static const uint32_t kFlagPktBeg = 1u<<4; //!< command first in packet
- static const uint32_t kFlagPktEnd = 1u<<5; //!< command last in packet
- static const uint32_t kFlagRecov = 1u<<6; //!< command stat recovered
- static const uint32_t kFlagResend = 1u<<7; //!< command resend recovered
-
- static const uint32_t kFlagErrNak = 1u<<8; //!< error: nak abort
- static const uint32_t kFlagErrMiss= 1u<<9; //!< error: missing data
- static const uint32_t kFlagErrCmd = 1u<<10; //!< error: cmd or nblk check
- static const uint32_t kFlagErrCrc = 1u<<11; //!< error: crc check
-
- static const uint32_t kFlagChkStat= 1u<<12; //!< stat expect check failed
- static const uint32_t kFlagChkData= 1u<<13; //!< data expect check failed
-
- static const uint32_t kFlagVol = 1<<16; //!< volatile
-
- protected:
- void SetCmdSimple(uint8_t cmd, uint16_t addr, uint16_t data);
-
- protected:
- uint8_t fRequest; //!< rlink request (cmd+seqnum)
- uint16_t fAddress; //!< rbus address
- uint16_t fData; //!< data
- std::vector fBlock; //!< data vector for blk commands
- uint16_t* fpBlockExt; //!< external data for blk commands
- size_t fBlockExtSize; //!< transfer size if data external
- uint8_t fStatRequest; //!< stat command ccmd return field
- uint8_t fStatus; //!< rlink command status
- uint32_t fFlags; //!< state bits
- size_t fRcvSize; //!< receive size for command
- RlinkCommandExpect* fpExpect; //!< pointer to expect container
- };
-
- std::ostream& operator<<(std::ostream& os, const RlinkCommand& obj);
-
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkCommand_NoInline))
-#include "RlinkCommand.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkCommand.ipp
===================================================================
--- trunk/tools/src/librlink/RlinkCommand.ipp (revision 10)
+++ trunk/tools/src/librlink/RlinkCommand.ipp (nonexistent)
@@ -1,286 +0,0 @@
-// $Id: RlinkCommand.ipp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkCommand.ipp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation (inline) of class RlinkCommand.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::CmdRreg(uint16_t addr)
-{
- SetCommand(kCmdRreg, addr);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::CmdWreg(uint16_t addr, uint16_t data)
-{
- SetCommand(kCmdWreg, addr, data);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::CmdStat()
-{
- SetCommand(kCmdStat);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::CmdAttn()
-{
- SetCommand(kCmdAttn);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::CmdInit(uint16_t addr, uint16_t data)
-{
- SetCommand(kCmdInit, addr, data);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::SetSeqNumber(uint8_t snum)
-{
- fRequest = (snum<<3) | (fRequest&0x07);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::SetData(uint16_t data)
-{
- fData = data;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::SetStatRequest(uint8_t ccmd)
-{
- fStatRequest = ccmd;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::SetStatus(uint8_t stat)
-{
- fStatus = stat;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::SetFlagBit(uint32_t mask)
-{
- fFlags |= mask;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::ClearFlagBit(uint32_t mask)
-{
- fFlags &= ~mask;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline void RlinkCommand::SetRcvSize(size_t rsize)
-{
- fRcvSize = rsize;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint8_t RlinkCommand::Request() const
-{
- return fRequest;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint8_t RlinkCommand::Command() const
-{
- return fRequest & 0x07;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint8_t RlinkCommand::SeqNumber() const
-{
- return fRequest>>3;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint16_t RlinkCommand::Address() const
-{
- return fAddress;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint16_t RlinkCommand::Data() const
-{
- return fData;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline const std::vector& RlinkCommand::Block() const
-{
- return fBlock;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline bool RlinkCommand::IsBlockExt() const
-{
- return fpBlockExt != 0;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint16_t* RlinkCommand::BlockPointer()
-{
- return IsBlockExt() ? fpBlockExt : (fBlock.size() ? &fBlock[0] : 0);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline const uint16_t* RlinkCommand::BlockPointer() const
-{
- return IsBlockExt() ? fpBlockExt : (fBlock.size() ? &fBlock[0] : 0);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline size_t RlinkCommand::BlockSize() const
-{
- return IsBlockExt() ? fBlockExtSize : fBlock.size();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint8_t RlinkCommand::StatRequest() const
-{
- return fStatRequest;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint8_t RlinkCommand::Status() const
-{
- return fStatus;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline uint32_t RlinkCommand::Flags() const
-{
- return fFlags;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline bool RlinkCommand::TestFlagAny(uint32_t mask) const
-{
- return (fFlags & mask) != 0;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline bool RlinkCommand::TestFlagAll(uint32_t mask) const
-{
- return (fFlags & mask) == fFlags;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline size_t RlinkCommand::RcvSize() const
-{
- return fRcvSize;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-inline RlinkCommandExpect* RlinkCommand::Expect() const
-{
- return fpExpect;
-}
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates RlinkCommand
- \brief ostream insertion operator.
-*/
-
-inline std::ostream& operator<<(std::ostream& os, const RlinkCommand& obj)
-{
- obj.Print(os);
- return os;
-}
-
-} // end namespace Retro
-
Index: trunk/tools/src/librlink/RlinkConnect.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkConnect.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkConnect.cpp (nonexistent)
@@ -1,504 +0,0 @@
-// $Id: RlinkConnect.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-04-02 375 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkConnect.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of RlinkConnect.
-*/
-
-#include
-
-#include
-
-#include "RlinkConnect.hpp"
-#include "RlinkPortFactory.hpp"
-
-#include "librtools/RosFill.hpp"
-#include "librtools/RosPrintf.hpp"
-#include "librtools/RosPrintBvi.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkConnect
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlinkConnect::RlinkConnect()
- : fpPort(0),
- fTxPkt(),
- fRxPkt(),
- fAddrMap(),
- fStats(),
- fLogOpts(),
- fLogFile(&cout)
-{
- for (size_t i=0; i<8; i++) fSeqNumber[i] = 0;
-
- fStats.Define(kStatNExec, "NExec", "Exec() calls");
- fStats.Define(kStatNSplitVol, "NSplitVol", "clist splits: Volatile");
- fStats.Define(kStatNExecPart, "NExecPart", "ExecPart() calls");
- fStats.Define(kStatNCmd, "NCmd", "commands executed");
- fStats.Define(kStatNRreg, "NRreg", "rreg commands");
- fStats.Define(kStatNRblk, "NRblk", "rblk commands");
- fStats.Define(kStatNWreg, "NWreg", "wreg commands");
- fStats.Define(kStatNWblk, "NWblk", "wblk commands");
- fStats.Define(kStatNStat, "NStat", "stat commands");
- fStats.Define(kStatNAttn, "NAttn", "attn commands");
- fStats.Define(kStatNInit, "NInit", "init commands");
- fStats.Define(kStatNRblkWord, "NRblkWord", "words rcvd with rblk");
- fStats.Define(kStatNWblkWord, "NWblkWord", "words send with wblk");
- fStats.Define(kStatNTxPktByt, "NTxPktByt", "Tx packet bytes send");
- fStats.Define(kStatNTxEsc, "NTxEsc", "Tx escapes");
- fStats.Define(kStatNRxPktByt, "NRxPktByt", "Rx packet bytes rcvd");
- fStats.Define(kStatNRxEsc, "NRxEsc", "Rx escapes");
- fStats.Define(kStatNRxAttn, "NRxAttn", "Rx ATTN commas seen");
- fStats.Define(kStatNRxIdle, "NRxIdle", "Rx IDLE commas seen");
- fStats.Define(kStatNRxDrop, "NRxDrop", "Rx bytes droped");
- fStats.Define(kStatNExpData, "NExpData", "Expect() for data defined");
- fStats.Define(kStatNExpStat, "NExpStat", "Expect() for stat defined");
- fStats.Define(kStatNChkData, "NChkData", "expect data failed");
- fStats.Define(kStatNChkStat, "NChkStat", "expect stat failed");
- fStats.Define(kStatNSndOob, "NSndOob", "SndOob() calls");
-}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlinkConnect::~RlinkConnect()
-{
- delete fpPort;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkConnect::Open(const std::string& name, RerrMsg& emsg)
-{
- if (fpPort) Close();
-
- fpPort = RlinkPortFactory::Open(name, emsg);
- if (!fpPort) return false;
-
- fpPort->SetLogFile(&fLogFile);
- fpPort->SetTraceLevel(fLogOpts.tracelevel);
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkConnect::Close()
-{
- if (!fpPort)
- throw logic_error("RlinkConnect::PortClose(): no port connected");
-
- if (fpPort->UrlFindOpt("keep")) {
- RerrMsg emsg;
- fTxPkt.SndKeep(fpPort, emsg);
- }
-
- delete fpPort;
- fpPort = 0;
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkConnect::Exec(RlinkCommandList& clist, RerrMsg& emsg)
-{
- if (clist.Size() == 0)
- throw invalid_argument("RlinkConnect::Exec(): clist empty");
- if (! IsOpen())
- throw logic_error("RlinkConnect::Exec(): port not open");
-
- fStats.Inc(kStatNExec);
-
- size_t ibeg = 0;
- size_t size = clist.Size();
-
- for (size_t i=0; i RlinkCommand::kCmdInit)
- throw invalid_argument("RlinkConnect::Exec(): invalid command code");
- cmd.ClearFlagBit(RlinkCommand::kFlagSend | RlinkCommand::kFlagDone |
- RlinkCommand::kFlagPktBeg | RlinkCommand::kFlagPktEnd |
- RlinkCommand::kFlagRecov | RlinkCommand::kFlagResend |
- RlinkCommand::kFlagErrNak | RlinkCommand::kFlagErrMiss |
- RlinkCommand::kFlagErrCmd | RlinkCommand::kFlagErrCrc);
- }
-
- while (ibeg < size) {
- size_t iend = ibeg;
- for (size_t i=ibeg; iiend || iend>=clist.Size())
- throw invalid_argument("RlinkConnect::ExecPart(): ibeg or iend invalid");
- if (!IsOpen())
- throw logic_error("RlinkConnect::ExecPart(): port not open");
-
- fStats.Inc(kStatNExecPart);
-
- size_t nrcvtot = 0;
- fTxPkt.Init();
-
- for (size_t i=ibeg; i<=iend; i++) {
- RlinkCommand& cmd = clist[i];
- uint8_t ccode = cmd.Command();
- size_t ndata = cmd.BlockSize();
- uint16_t* pdata = cmd.BlockPointer();
-
- fStats.Inc(kStatNCmd);
-
- cmd.SetSeqNumber(fSeqNumber[ccode]++);
- cmd.ClearFlagBit(RlinkCommand::kFlagPktBeg | RlinkCommand::kFlagPktEnd);
-
- fTxPkt.PutWithCrc(cmd.Request());
-
- switch(ccode) {
- case RlinkCommand::kCmdRreg:
- fStats.Inc(kStatNRreg);
- cmd.SetRcvSize(1+2+1+1); // rcv: cmd+data+stat+crc
- fTxPkt.PutWithCrc((uint8_t)cmd.Address());
- break;
-
- case RlinkCommand::kCmdRblk:
- fStats.Inc(kStatNRblk);
- fStats.Inc(kStatNRblkWord, (double) ndata);
- cmd.SetRcvSize(1+1+2*ndata+1+1); // rcv: cmd+nblk+n*data+stat+crc
- fTxPkt.PutWithCrc((uint8_t)cmd.Address());
- fTxPkt.PutWithCrc((uint8_t)(ndata-1));
- break;
-
- case RlinkCommand::kCmdWreg:
- fStats.Inc(kStatNWreg);
- cmd.SetRcvSize(1+1+1); // rcv: cmd+stat+crc
- fTxPkt.PutWithCrc((uint8_t)cmd.Address());
- fTxPkt.PutWithCrc(cmd.Data());
- break;
-
- case RlinkCommand::kCmdWblk:
- fStats.Inc(kStatNWblk);
- fStats.Inc(kStatNWblkWord, (double) ndata);
- cmd.SetRcvSize(1+1+1); // rcv: cmd+stat+crc
- fTxPkt.PutWithCrc((uint8_t)cmd.Address());
- fTxPkt.PutWithCrc((uint8_t)(ndata-1));
- fTxPkt.PutCrc();
- for (size_t j=0; j0) fStats.Inc(kStatNExpData);
- if (expect.StatusIsChecked()) fStats.Inc(kStatNExpStat);
-
- if (ccode==RlinkCommand::kCmdRreg || ccode==RlinkCommand::kCmdStat ||
- ccode==RlinkCommand::kCmdAttn) {
- if (!expect.DataCheck(cmd.Data())) {
- fStats.Inc(kStatNChkData);
- cmd.SetFlagBit(RlinkCommand::kFlagChkData);
- }
- } else if (ccode==RlinkCommand::kCmdRblk) {
- size_t nerr = expect.BlockCheck(cmd.BlockPointer(), cmd.BlockSize());
- if (nerr != 0) {
- fStats.Inc(kStatNChkData);
- cmd.SetFlagBit(RlinkCommand::kFlagChkData);
- }
- }
- if (!expect.StatusCheck(cmd.Status())) {
- fStats.Inc(kStatNChkStat);
- cmd.SetFlagBit(RlinkCommand::kFlagChkStat);
- }
- }
-
- }
-
- // FIXME_code: add proper error handling...
- if (ncmd != iend-ibeg+1) {
- return false;
- }
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-double RlinkConnect::WaitAttn(double timeout, RerrMsg& emsg)
-{
- double rval = fRxPkt.WaitAttn(fpPort, timeout, emsg);
- fStats.Inc(kStatNRxAttn , double(fRxPkt.Nattn()));
- fStats.Inc(kStatNRxIdle , double(fRxPkt.Nidle()));
- fStats.Inc(kStatNRxDrop , double(fRxPkt.Ndrop()));
- return rval;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkConnect::SndOob(uint16_t addr, uint16_t data, RerrMsg& emsg)
-{
- fStats.Inc(kStatNSndOob);
- return fTxPkt.SndOob(fpPort, addr, data, emsg);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlinkConnect::LogOpen(const std::string& name)
-{
- if (!fLogFile.Open(name)) {
- fLogFile.UseStream(&cout);
- return false;
- }
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkConnect::LogUseStream(std::ostream* pstr)
-{
- fLogFile.UseStream(pstr);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkConnect::SetLogOpts(const LogOpts& opts)
-{
- if (opts.baseaddr!=2 && opts.baseaddr!=8 && opts.baseaddr!=16)
- throw invalid_argument("RlinkConnect::SetLogOpts(): baseaddr != 2,8,16");
- if (opts.basedata!=2 && opts.basedata!=8 && opts.basedata!=16)
- throw invalid_argument("RlinkConnect::SetLogOpts(): basedata != 2,8,16");
- if (opts.basestat!=2 && opts.basestat!=8 && opts.basestat!=16)
- throw invalid_argument("RlinkConnect::SetLogOpts(): basestat != 2,8,16");
-
- fLogOpts = opts;
- if (fpPort) fpPort->SetTraceLevel(opts.tracelevel);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkConnect::Print(std::ostream& os) const
-{
- os << "RlinkConnect::Print(std::ostream& os)" << endl;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlinkConnect::Dump(std::ostream& os, int ind, const char* text) const
-{
- RosFill bl(ind);
- os << bl << (text?text:"--") << "RlinkConnect @ " << this << endl;
-
- if (fpPort) {
- fpPort->Dump(os, ind+2, "fpPort: ");
- } else {
- os << bl << " fpPort: " << fpPort << endl;
- }
-
- os << bl << " fSeqNumber: ";
- for (size_t i=0; i<8; i++) os << RosPrintBvi(fSeqNumber[i],16) << " ";
- os << endl;
-
- fTxPkt.Dump(os, ind+2, "fTxPkt: ");
- fRxPkt.Dump(os, ind+2, "fRxPkt: ");
- fAddrMap.Dump(os, ind+2, "fAddrMap: ");
- fStats.Dump(os, ind+2, "fStats: ");
- return;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkConnect_NoInline))
-#define inline
-#include "RlinkConnect.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink/RlinkConnect.hpp
===================================================================
--- trunk/tools/src/librlink/RlinkConnect.hpp (revision 10)
+++ trunk/tools/src/librlink/RlinkConnect.hpp (nonexistent)
@@ -1,147 +0,0 @@
-// $Id: RlinkConnect.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-04-02 375 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RlinkConnect.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class \c RlinkConnect.
-*/
-
-#ifndef included_Retro_RlinkConnect
-#define included_Retro_RlinkConnect 1
-
-#include
-#include
-#include
-#include
-
-#include "librtools/RerrMsg.hpp"
-#include "librtools/Rstats.hpp"
-#include "librtools/RlogFile.hpp"
-
-#include "RlinkPort.hpp"
-#include "RlinkCommandList.hpp"
-#include "RlinkPacketBuf.hpp"
-#include "RlinkAddrMap.hpp"
-
-namespace Retro {
-
- class RlinkConnect {
- public:
- struct LogOpts {
- size_t baseaddr;
- size_t basedata;
- size_t basestat;
- size_t printlevel; // 0=off,1=err,2=chk,3=all
- size_t dumplevel; // 0=off,1=err,2=chk,3=all
- size_t tracelevel; // 0=off,1=buf,2=char
-
- LogOpts()
- : baseaddr(16), basedata(16), basestat(16),
- printlevel(0), dumplevel(0), tracelevel(0)
- {}
- };
-
- RlinkConnect();
- ~RlinkConnect();
-
- bool Open(const std::string& name, RerrMsg& emsg);
- void Close();
- bool IsOpen() const;
- RlinkPort* Port() const;
-
- bool Exec(RlinkCommandList& clist, RerrMsg& emsg);
- bool ExecPart(RlinkCommandList& clist, size_t ibeg, size_t iend,
- RerrMsg& emsg);
-
- double WaitAttn(double timeout, RerrMsg& emsg);
- bool SndOob(uint16_t addr, uint16_t data, RerrMsg& emsg);
-
- bool AddrMapInsert(const std::string& name, uint16_t addr);
- bool AddrMapErase(const std::string& name);
- bool AddrMapErase(uint16_t addr);
- void AddrMapClear();
-
- const RlinkAddrMap& AddrMap() const;
- const Rstats& Stats() const;
-
- bool LogOpen(const std::string& name);
- void LogUseStream(std::ostream* pstr);
- void SetLogOpts(const LogOpts& opts);
- const LogOpts& GetLogOpts() const;
- RlogFile& LogFile() const;
-
- void Print(std::ostream& os) const;
- void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
-
- // statistics counter indices
- enum stats {
- kStatNExec = 0,
- kStatNSplitVol,
- kStatNExecPart,
- kStatNCmd,
- kStatNRreg,
- kStatNRblk,
- kStatNWreg,
- kStatNWblk,
- kStatNStat,
- kStatNAttn,
- kStatNInit,
- kStatNRblkWord,
- kStatNWblkWord,
- kStatNTxPktByt,
- kStatNTxEsc,
- kStatNRxPktByt,
- kStatNRxEsc,
- kStatNRxAttn,
- kStatNRxIdle,
- kStatNRxDrop,
- kStatNExpData,
- kStatNExpStat,
- kStatNChkData,
- kStatNChkStat,
- kStatNSndOob,
- kDimStat
- };
-
- protected:
- RlinkPort* fpPort; //!< ptr to port
- uint8_t fSeqNumber[8]; //!< command sequence number
- RlinkPacketBuf fTxPkt; //!< transmit packet buffer
- RlinkPacketBuf fRxPkt; //!< receive packet buffer
- RlinkAddrMap fAddrMap; //!< name<->address mapping
- Rstats fStats; //!< statistics
- LogOpts fLogOpts; //!< log options
- RlogFile fLogFile; //!< connection log file
-
- // RlinkConnect is not copyable and assignable
- private:
- RlinkConnect(const RlinkConnect& rhs);
- RlinkConnect& operator=(const RlinkConnect& rhs);
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlinkConnect_NoInline))
-#include "RlinkConnect.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlink/RlinkConnect.ipp
===================================================================
--- trunk/tools/src/librlink/RlinkConnect.ipp (revision 10)
+++ trunk/tools/src/librlink/RlinkConnect.ipp (nonexistent)
@@ -1,110 +0,0 @@
-// $Id: RlinkConnect.ipp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-04-02 375 1.0 Initial version
-// 2011-01-15 356 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkConnect.ipp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation (inline) of RlinkConnect.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline bool RlinkConnect::IsOpen() const
-{
- return fpPort && fpPort->IsOpen();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline RlinkPort* RlinkConnect::Port() const
-{
- return fpPort;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline bool RlinkConnect::AddrMapInsert(const std::string& name, uint16_t addr)
-{
- return fAddrMap.Insert(name, addr);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline bool RlinkConnect::AddrMapErase(const std::string& name)
-{
- return fAddrMap.Erase(name);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline bool RlinkConnect::AddrMapErase(uint16_t addr)
-{
- return fAddrMap.Erase(addr);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RlinkConnect::AddrMapClear()
-{
- return fAddrMap.Clear();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const RlinkAddrMap& RlinkConnect::AddrMap() const
-{
- return fAddrMap;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const Rstats& RlinkConnect::Stats() const
-{
- return fStats;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const RlinkConnect::LogOpts& RlinkConnect::GetLogOpts() const
-{
- return fLogOpts;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline RlogFile& RlinkConnect::LogFile() const
-{
- return (RlogFile&)fLogFile;
-}
-
-
-} // end namespace Retro
Index: trunk/tools/src/librlink/RlinkCrc8.cpp
===================================================================
--- trunk/tools/src/librlink/RlinkCrc8.cpp (revision 10)
+++ trunk/tools/src/librlink/RlinkCrc8.cpp (nonexistent)
@@ -1,81 +0,0 @@
-// $Id: RlinkCrc8.cpp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-27 365 1.0 Initial version
-// 2011-01-15 355 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlinkCrc8.cpp 365 2011-02-28 07:28:26Z mueller $
- \brief Implemenation of class RlinkCrc8.
- */
-
-#include "RlinkCrc8.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlinkCrc8
- \brief FIXME_text
-*/
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-// from gen_crc8_tbl
-
-const uint8_t RlinkCrc8::fCrc8Table[256] =
-{
- 0, 29, 58, 39, 116, 105, 78, 83,
- 232, 245, 210, 207, 156, 129, 166, 187,
- 205, 208, 247, 234, 185, 164, 131, 158,
- 37, 56, 31, 2, 81, 76, 107, 118,
- 135, 154, 189, 160, 243, 238, 201, 212,
- 111, 114, 85, 72, 27, 6, 33, 60,
- 74, 87, 112, 109, 62, 35, 4, 25,
- 162, 191, 152, 133, 214, 203, 236, 241,
- 19, 14, 41, 52, 103, 122, 93, 64,
- 251, 230, 193, 220, 143, 146, 181, 168,
- 222, 195, 228, 249, 170, 183, 144, 141,
- 54, 43, 12, 17, 66, 95, 120, 101,
- 148, 137, 174, 179, 224, 253, 218, 199,
- 124, 97, 70, 91, 8, 21, 50, 47,
- 89, 68, 99, 126, 45, 48, 23, 10,
- 177, 172, 139, 150, 197, 216, 255, 226,
- 38, 59, 28, 1, 82, 79, 104, 117,
- 206, 211, 244, 233, 186, 167, 128, 157,
- 235, 246, 209, 204, 159, 130, 165, 184,
- 3, 30, 57, 36, 119, 106, 77, 80,
- 161, 188, 155, 134, 213, 200, 239, 242,
- 73, 84, 115, 110, 61, 32, 7, 26,
- 108, 113, 86, 75, 24, 5, 34, 63,
- 132, 153, 190, 163, 240, 237, 202, 215,
- 53, 40, 15, 18, 65, 92, 123, 102,
- 221, 192, 231, 250, 169, 180, 147, 142,
- 248, 229, 194, 223, 140, 145, 182, 171,
- 16, 13, 42, 55, 100, 121, 94, 67,
- 178, 175, 136, 149, 198, 219, 252, 225,
- 90, 71, 96, 125, 46, 51, 20, 9,
- 127, 98, 69, 88, 11, 22, 49, 44,
- 151, 138, 173, 176, 227, 254, 217, 196
-};
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlinkCrc8_NoInline))
-#define inline
-#include "RlinkCrc8.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlink
===================================================================
--- trunk/tools/src/librlink (revision 10)
+++ trunk/tools/src/librlink (nonexistent)
trunk/tools/src/librlink
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-*.dep
Index: trunk/tools/src/librtools/RosPrintfS.cpp
===================================================================
--- trunk/tools/src/librtools/RosPrintfS.cpp (revision 10)
+++ trunk/tools/src/librtools/RosPrintfS.cpp (nonexistent)
@@ -1,138 +0,0 @@
-// $Id: RosPrintfS.cpp 364 2011-02-26 08:33:01Z mueller $
-//
-// Copyright 2000-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-25 364 1.0.1 allow NULL ptr for const char*, output
-// 2011-01-30 357 1.0 Adopted from CTBprintfS
-// 2000-10-29 - - Last change on CTBprintfS
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintfS.cpp 364 2011-02-26 08:33:01Z mueller $
- \brief Implemenation of RosPrintfS .
-*/
-
-#include
-
-#include "RiosState.hpp"
-#include "RosPrintfS.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class RosPrintfS
- \brief Print object for scalar values . **
-*/
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Constructor.
-
- \param value value to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-template
-RosPrintfS::RosPrintfS(T value, const char* form, int width, int prec)
- : RosPrintfBase(form, width, prec),
- fValue(value)
-{}
-
-//------------------------------------------+-----------------------------------
-template
-void RosPrintfS::ToStream(std::ostream& os) const
-{
- RiosState iostate(os, fForm, fPrec);
- os << setw(fWidth) << fValue;
-}
-
-//------------------------------------------+-----------------------------------
-template <>
-void RosPrintfS::ToStream(std::ostream& os) const
-{
- RiosState iostate(os, fForm, fPrec);
- char ctype = iostate.Ctype();
-
- os.width(fWidth);
- if (ctype == 0 || ctype == 'c') {
- os << fValue;
- } else {
- os << (int) fValue;
- }
-}
-
-//------------------------------------------+-----------------------------------
-template <>
-void RosPrintfS::ToStream(std::ostream& os) const
-{
- RiosState iostate(os, fForm, fPrec);
- char ctype = iostate.Ctype();
-
- os.width(fWidth);
- if (ctype == 'c') {
- os << (char) fValue;
- } else {
- os << fValue;
- }
-}
-
-//------------------------------------------+-----------------------------------
-template <>
-void RosPrintfS::ToStream(std::ostream& os) const
-{
- RiosState iostate(os, fForm, fPrec);
- char ctype = iostate.Ctype();
-
- os.width(fWidth);
- if (ctype == 'p') {
- os << (const void*) fValue;
- } else {
- os << (fValue?fValue:"");
- }
-}
-
-//------------------------------------------+-----------------------------------
-template <>
-void RosPrintfS::ToStream(std::ostream& os) const
-{
- RiosState iostate(os, fForm, fPrec);
- char ctype = iostate.Ctype();
-
- os.width(fWidth);
- if (ctype == 0 || ctype == 'p') {
- os << fValue;
- } else {
- os << (unsigned long) fValue;
- }
-}
-
-//!! Note:
-//!! 1. This specialization is printing signed and unsigned char types and
-//!! implements the `c' conversion format,
-
-// finally do an explicit instantiation of the required CTBioState
-
-template class RosPrintfS;
-template class RosPrintfS;
-template class RosPrintfS;
-template class RosPrintfS;
-template class RosPrintfS;
-template class RosPrintfS;
-
-template class RosPrintfS;
-template class RosPrintfS;
Index: trunk/tools/src/librtools/RosFill.cpp
===================================================================
--- trunk/tools/src/librtools/RosFill.cpp (revision 10)
+++ trunk/tools/src/librtools/RosFill.cpp (nonexistent)
@@ -1,92 +0,0 @@
-// $Id: RosFill.cpp 364 2011-02-26 08:33:01Z mueller $
-//
-// Copyright 2000-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-25 364 1.1 Support << also to string
-// 2011-01-30 357 1.0 Adopted from RosFill
-// 2000-02-29 - - Last change on RosFill
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosFill.cpp 364 2011-02-26 08:33:01Z mueller $
- \brief Implemenation of RosFill .
-*/
-
-#include "RosFill.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RosFill
- \brief I/O appicator to generate fill characters.
-
- An \c RosFill object will add a given number of fill characters to an output
- stream each time the object is inserted into the stream. The fill character
- and the repeat count are specified when the object is constructed.
-
- A typical usage of \c RosFill is to implement indention, especially when the
- amount of indention is only known at runtime. The a Dump() function of a
- class may use use \c RosFill following the pattern:
- \code
-void xyz::Dump(ostream& os, int indent) const
-{
- RosFill bl(indent);
-
- os << bl << "-- xyz " << " @ " << this << endl;
- os << bl << " fMember1: " << fMember1 << endl;
- os << bl << " fMember2: " << fMember2 << endl;
- fEmbeddedClass.Dump(os, indent+2);
- return;
-}
- \endcode
-
- The indention is passed with \c indent. The object \c bl is setup to
- create \c indent blanks and thrown into the outstream \c os at the
- start of each output line. The \c Dump() function of member variables of
- class type is called with a increamented indention (here \c indent+2).
- This finally produces a nicely structured output.
-*/
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates RosFill
- \brief ostream insertion operator.
-*/
-
-std::ostream& Retro::operator<<(std::ostream& os, const RosFill& obj)
-{
- for (int i=0; i
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Adopted from CTBioState
-// 2006-04-16 - - Last change on CTBioState
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RiosState.cpp 359 2011-02-06 22:37:43Z mueller $
- \brief Implemenation of RiosState.
-*/
-
-#include "RiosState.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RiosState
- \brief Stack object for ostream state. **
-*/
-
-//------------------------------------------+-----------------------------------
-//! Construct with stream.
-
-RiosState::RiosState(ios& stream)
- : fStream(stream)
-{
- fOldFlags = fStream.flags();
- fOldPrecision = -1;
- fOldFill = 0;
- fCtype = 0;
-}
-
-//------------------------------------------+-----------------------------------
-//! Construct from stream and format.
-
-RiosState::RiosState(ios& stream, const char* form, int prec)
- : fStream(stream)
-{
- fOldFlags = fStream.flags();
- fOldPrecision = -1;
- fOldFill = 0;
- SetFormat(form, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Destructor.
-
-RiosState::~RiosState()
-{
- fStream.flags(fOldFlags);
- if (fOldPrecision >= 0) fStream.precision(fOldPrecision);
- if (fOldFill != 0) fStream.fill(fOldFill);
-}
-
-//------------------------------------------+-----------------------------------
-//! Setup format.
-
-void RiosState::SetFormat(const char* form, int prec)
-{
- bool b_plus = false;
- bool b_minus = false;
- bool b_point = false;
- bool b_dollar = false;
- bool b_internal = false;
- char c_ctype = 0;
- char c_fill = 0;
- char c;
-
- if (form == 0) form = ""; // allow null as format
-
- for (c = *form++; ; c = *form++) {
- if (c == '+') { b_plus = true; continue;}
- if (c == '-') { b_minus = true; continue;}
- if (c == '.') { b_point = true; continue;}
- if (c == '$') { b_dollar = true; continue;}
- break;
- }
-
- if (c != 0 && isalpha(c)) { c_ctype = c; c = *form++; }
- if (c != 0) c_fill = c;
-
- if (prec >= 0) {
- int i_old_precision = fStream.precision(prec);
- if (fOldPrecision < 0) fOldPrecision = i_old_precision;
- }
- if (c_fill != 0) {
- char c_old_fill = fStream.fill(c_fill);
- if (fOldFill == 0) fOldFill = c_old_fill;
- }
-
- fCtype = c_ctype;
-
- switch(c_ctype) {
- case 'd':
- b_internal = !b_minus & (c_fill == '0');
- fStream.setf(ios::dec,ios::basefield);
- break;
- case 'o':
- b_internal = !b_minus & (c_fill == '0');
- fStream.setf(ios::oct,ios::basefield);
- break;
- case 'x':
- case 'X':
- b_internal = !b_minus & (c_fill == '0');
- fStream.setf(ios::hex,ios::basefield);
- if (isupper(c_ctype)) fStream.setf(ios::uppercase);
- break;
- case 'g':
- case 'G':
- b_internal = !b_minus & (c_fill == '0');
- fStream.setf(ios_base::fmtflags(0),ios::floatfield);
- if (isupper(c_ctype)) fStream.setf(ios::uppercase);
- break;
- case 'f':
- b_internal = !b_minus & (c_fill == '0');
- fStream.setf(ios::fixed,ios::floatfield);
- break;
- case 'e':
- case 'E':
- b_internal = !b_minus & (c_fill == '0');
- fStream.setf(ios::scientific,ios::floatfield);
- if (isupper(c_ctype)) fStream.setf(ios::uppercase);
- break;
- case 's':
- case 'p':
- case 'c':
- break;
- }
-
- {
- ios_base::fmtflags l_flags = ios_base::fmtflags(0);
- if (b_plus) l_flags |= ios::showpos;
- if (b_point) l_flags |= ios::showpoint;
- if (b_dollar) l_flags |= ios::showbase;
- fStream.setf(l_flags);
- fStream.setf(b_internal ? ios::internal :
- (b_minus ? ios::left : ios::right), ios::adjustfield);
- }
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RiosState_NoInline))
-#define inline
-#include "RiosState.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librtools/RmethDsc.hpp
===================================================================
--- trunk/tools/src/librtools/RmethDsc.hpp (revision 10)
+++ trunk/tools/src/librtools/RmethDsc.hpp (nonexistent)
@@ -1,55 +0,0 @@
-// $Id: RmethDsc.hpp 360 2011-02-11 20:35:11Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-11 360 1.1 templetize object type TO and arglist type TA
-// 2011-02-06 359 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RmethDsc.hpp 360 2011-02-11 20:35:11Z mueller $
- \brief Declaration of class RmethDsc .
-*/
-
-#include "RmethDscBase.hpp"
-
-#ifndef included_Retro_RmethDsc
-#define included_Retro_RmethDsc 1
-
-namespace Retro {
-
- template
- class RmethDsc : public RmethDscBase {
- public:
- typedef int (TO::*pmeth_t) (TA& alist);
-
- RmethDsc();
- RmethDsc(TO* pobj, pmeth_t pmeth);
- RmethDsc(const RmethDsc& rhs);
- virtual ~RmethDsc();
-
- virtual int operator()(TA& alist);
-
- private:
- TO* fpObj;
- pmeth_t fpMeth;
- };
-
-} // end namespace Retro
-
-// implementation is all inline
-#include "RmethDsc.ipp"
-
-#endif
Index: trunk/tools/src/librtools/RosPrintfS.hpp
===================================================================
--- trunk/tools/src/librtools/RosPrintfS.hpp (revision 10)
+++ trunk/tools/src/librtools/RosPrintfS.hpp (nonexistent)
@@ -1,55 +0,0 @@
-// $Id: RosPrintfS.hpp 357 2011-01-31 08:00:13Z mueller $
-//
-// Copyright 2000-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Adopted from CTBprintfS
-// 2000-10-29 - - Last change on CTBprintfS
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintfS.hpp 357 2011-01-31 08:00:13Z mueller $
- \brief Declaration of class RosPrintfS .
-*/
-
-#ifndef included_Retro_RosPrintfS
-#define included_Retro_RosPrintfS 1
-
-#include "RosPrintfBase.hpp"
-
-namespace Retro {
-
- template
- class RosPrintfS : public RosPrintfBase {
- public:
- RosPrintfS(T value, const char* form, int width, int prec);
-
- virtual void ToStream(std::ostream& os) const;
-
- protected:
- T fValue; //!< value to be printed
- };
-
- template <>
- void RosPrintfS::ToStream(std::ostream& os) const;
- template <>
- void RosPrintfS::ToStream(std::ostream& os) const;
- template <>
- void RosPrintfS::ToStream(std::ostream& os) const;
- template <>
- void RosPrintfS::ToStream(std::ostream& os) const;
-
-} // end namespace Retro
-
-#endif
Index: trunk/tools/src/librtools/RlogStd.cpp
===================================================================
--- trunk/tools/src/librtools/RlogStd.cpp (revision 10)
+++ trunk/tools/src/librtools/RlogStd.cpp (nonexistent)
@@ -1,34 +0,0 @@
-// $Id: RlogStd.cpp 359 2011-02-06 22:37:43Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-04 358 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlogStd.cpp 359 2011-02-06 22:37:43Z mueller $
- \brief Implemenation of RlogStd.
-*/
-
-#include
-
-#include "RlogStd.hpp"
-
-//------------------------------------------+-----------------------------------
-// define global RlogFile objects
-
-Retro::RlogFile Retro::gRcout(&std::cout); //!< foo
-Retro::RlogFile Retro::gRcerr(&std::cerr); //!< bar
-
Index: trunk/tools/src/librtools/RosFill.hpp
===================================================================
--- trunk/tools/src/librtools/RosFill.hpp (revision 10)
+++ trunk/tools/src/librtools/RosFill.hpp (nonexistent)
@@ -1,57 +0,0 @@
-// $Id: RosFill.hpp 364 2011-02-26 08:33:01Z mueller $
-//
-// Copyright 2000-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-25 364 1.1 Support << also to string
-// 2011-01-30 359 1.0 Adopted from CTBosFill
-// 2000-02-06 - - Last change on CTBosFill
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosFill.hpp 364 2011-02-26 08:33:01Z mueller $
- \brief Declaration of class RosFill .
-*/
-
-#ifndef included_Retro_RosFill
-#define included_Retro_RosFill 1
-
-#include
-#include
-
-namespace Retro {
-
- class RosFill {
- public:
- RosFill(int count=0, char fill=' ');
-
- int Count() const;
- char Fill() const;
-
- private:
- int fCount; //!< blank count
- char fFill; //!< fill character
-
- };
-
- std::ostream& operator<<(std::ostream& os, const RosFill& obj);
- std::string& operator<<(std::string& os, const RosFill& obj);
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RosFill_NoInline))
-#include "RosFill.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librtools/RmethDsc.ipp
===================================================================
--- trunk/tools/src/librtools/RmethDsc.ipp (revision 10)
+++ trunk/tools/src/librtools/RmethDsc.ipp (nonexistent)
@@ -1,88 +0,0 @@
-// $Id: RmethDsc.ipp 360 2011-02-11 20:35:11Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-11 360 1.1 templetize object type TO and arglist type TA
-// 2011-02-06 359 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RmethDsc.ipp 360 2011-02-11 20:35:11Z mueller $
- \brief Implemenation (inline) of RmethDsc
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-/*!
- \class RmethDsc
- \brief FIXME_text
-*/
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Default constructor.
-*/
-
-template
-inline RmethDsc::RmethDsc()
- : fpObj(),
- fpMeth()
-{}
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief FIXME_text
-*/
-
-template
-inline RmethDsc::RmethDsc(TO* pobj, pmeth_t pmeth)
- : fpObj(pobj),
- fpMeth(pmeth)
-{}
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Copy constructor.
-*/
-
-template
-inline RmethDsc::RmethDsc(const RmethDsc& rhs)
- : fpObj(rhs.fpObj),
- fpMeth(rhs.fpMeth)
-{}
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Destructor.
-*/
-
-template
-inline RmethDsc::~RmethDsc()
-{}
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief FIXME_text
-*/
-
-template
-inline int RmethDsc::operator()(TA& alist)
-{
- return (fpObj->*fpMeth)(alist);
-}
-
-
-} // end namespace Retro
Index: trunk/tools/src/librtools/RosFill.ipp
===================================================================
--- trunk/tools/src/librtools/RosFill.ipp (revision 10)
+++ trunk/tools/src/librtools/RosFill.ipp (nonexistent)
@@ -1,59 +0,0 @@
-// $Id: RosFill.ipp 359 2011-02-06 22:37:43Z mueller $
-//
-// Copyright 2000-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 359 1.0 Adopted from CTBosFill
-// 2000-02-06 - - Last change on CTBosFill
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosFill.ipp 359 2011-02-06 22:37:43Z mueller $
- \brief Implemenation (inline) of RosFill.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! Constructor.
-/*!
- The fill character is specified with \a fill, the repeat count is
- specified with \a count. Note, that RosFill does not have a default
- constructor and that this constructor is the only means to set this object up.
- Note also, that the \a fill argument can be omitted, the default fill
- character is a blank.
-*/
-inline RosFill::RosFill(int count, char fill)
- : fCount(count),
- fFill(fill)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Get repeat count.
-
-inline int RosFill::Count() const
-{
- return fCount;
-}
-
-//------------------------------------------+-----------------------------------
-//! Get fill character.
-
-inline char RosFill::Fill() const
-{
- return fFill;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librtools/RosPrintBvi.cpp
===================================================================
--- trunk/tools/src/librtools/RosPrintBvi.cpp (revision 10)
+++ trunk/tools/src/librtools/RosPrintBvi.cpp (nonexistent)
@@ -1,147 +0,0 @@
-// $Id: RosPrintBvi.cpp 368 2011-03-12 09:58:53Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-12 368 1.0.1 allow base=0, will print in hex,oct and bin
-// 2011-03-05 366 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintBvi.cpp 368 2011-03-12 09:58:53Z mueller $
- \brief Implemenation of RosPrintBvi .
-*/
-
-#include
-
-#include "RosPrintBvi.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RosPrintBvi
- \brief FIXME_docs.
-*/
-
-//------------------------------------------+-----------------------------------
-//! Constructor. FIXME_docs
-
-RosPrintBvi::RosPrintBvi(uint8_t val, size_t base, size_t nbit)
- : fVal((uint8_t)val),
- fBase(base),
- fNbit(nbit)
-{
- if (base!=0 && base!=2 && base!=8 && base!=16)
- throw invalid_argument("RosPrintBvi::ctor: base must be 0,2,8, or 16");
- if (nbit<1 || nbit>8)
- throw invalid_argument("RosPrintBvi::ctor: nbit must be in 1,..,8");
-}
-
-//------------------------------------------+-----------------------------------
-//! Constructor. FIXME_docs
-
-RosPrintBvi::RosPrintBvi(uint16_t val, size_t base, size_t nbit)
- : fVal((uint16_t)val),
- fBase(base),
- fNbit(nbit)
-{
- if (base!=0 && base!=2 && base!=8 && base!=16)
- throw invalid_argument("RosPrintBvi::ctor: base must be 0,2,8, or 16");
- if (nbit<1 || nbit>16)
- throw invalid_argument("RosPrintBvi::ctor: nbit must be in 1,..,16");
-}
-
-//------------------------------------------+-----------------------------------
-//! Constructor. FIXME_docs
-
-RosPrintBvi::RosPrintBvi(uint32_t val, size_t base, size_t nbit)
- : fVal(val),
- fBase(base),
- fNbit(nbit)
-{
- if (base!=0 && base!=2 && base!=8 && base!=16)
- throw invalid_argument("RosPrintBvi::ctor: base must be 0,2,8, or 16");
- if (nbit<1 || nbit>32)
- throw invalid_argument("RosPrintBvi::ctor: nbit must be in 1,..,32");
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RosPrintBvi::Print(std::ostream& os) const
-{
- if (fBase == 0) {
- os << RosPrintBvi(fVal, 16, fNbit) << " "
- << RosPrintBvi(fVal, 8, fNbit) << " "
- << RosPrintBvi(fVal, 2, fNbit);
- return;
- }
-
- char buf[33];
- Convert(buf);
- os << buf;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RosPrintBvi::Print(std::string& os) const
-{
- if (fBase == 0) {
- os << RosPrintBvi(fVal, 16, fNbit);
- os += " ";
- os << RosPrintBvi(fVal, 8, fNbit);
- os += " ";
- os << RosPrintBvi(fVal, 2, fNbit);
- return;
- }
-
- char buf[33];
- Convert(buf);
- os += buf;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RosPrintBvi::Convert(char* pbuf) const
-{
-
- size_t nwidth = 1;
- if (fBase == 8) nwidth = 3;
- if (fBase == 16) nwidth = 4;
- uint32_t nmask = (1<0; i--) {
- uint32_t nibble = ((fVal)>>((i-1)*nwidth)) & nmask;
- nibble += (nibble <= 9) ? '0' : ('a'-10);
- *pbuf++ = (char) nibble;
- }
-
- *pbuf++ = '\0';
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RosPrintBvi_NoInline))
-#define inline
-#include "RosPrintBvi.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librtools/RiosState.hpp
===================================================================
--- trunk/tools/src/librtools/RiosState.hpp (revision 10)
+++ trunk/tools/src/librtools/RiosState.hpp (nonexistent)
@@ -1,64 +0,0 @@
-// $Id: RiosState.hpp 357 2011-01-31 08:00:13Z mueller $
-//
-// Copyright 2006-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Adopted from CTBioState
-// 2006-04-16 - - Last change on CTBioState
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RiosState.hpp 357 2011-01-31 08:00:13Z mueller $
- \brief Declaration of class RiosState.
-*/
-
-#ifndef included_Retro_RiosState
-#define included_Retro_RiosState 1
-
-#include
-
-namespace Retro {
-
- class RiosState {
- public:
- RiosState(std::ios& stream);
- RiosState(std::ios& stream, const char* form, int prec=-1);
- ~RiosState();
-
- void SetFormat(const char* form, int prec=-1);
- char Ctype();
-
- protected:
- std::ios& fStream;
- std::ios_base::fmtflags fOldFlags;
- int fOldPrecision;
- char fOldFill;
- char fCtype;
-
- // RiosState can't be default constructed, copied or assigned
- private:
- RiosState();
- RiosState(const RiosState& rhs);
- RiosState& operator=(const RiosState& rhs);
-
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RiosState_NoInline))
-#include "RiosState.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librtools/Rtools.cpp
===================================================================
--- trunk/tools/src/librtools/Rtools.cpp (revision 10)
+++ trunk/tools/src/librtools/Rtools.cpp (nonexistent)
@@ -1,63 +0,0 @@
-// $Id: $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-12 368 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: $
- \brief Implemenation of Rtools .
-*/
-
-#include
-
-#include "Rtools.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::Rtools
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-std::string Rtools::Flags2String(uint32_t flags, const RflagName* fnam,
- char delim)
-{
- if (fnam == 0)
- throw invalid_argument("Rtools::Flags2String: fnam==NULL");
-
- string rval;
- while (fnam->mask) {
- if (flags & fnam->mask) {
- if (!rval.empty()) rval += delim;
- rval += fnam->name;
- }
- fnam++;
- }
- return rval;
-}
-
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_Rtools_NoInline))
-#define inline
-//#include "Rtools.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librtools/RiosState.ipp
===================================================================
--- trunk/tools/src/librtools/RiosState.ipp (revision 10)
+++ trunk/tools/src/librtools/RiosState.ipp (nonexistent)
@@ -1,37 +0,0 @@
-// $Id: RiosState.ipp 359 2011-02-06 22:37:43Z mueller $
-//
-// Copyright 2006-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Adopted from CTBioState
-// 2006-04-16 - - Last change on CTBioState
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RiosState.ipp 359 2011-02-06 22:37:43Z mueller $
- \brief Implemenation (inline) of RiosState.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! Get conversion type.
-
-inline char RiosState::Ctype()
-{
- return fCtype;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librtools/RlogStd.hpp
===================================================================
--- trunk/tools/src/librtools/RlogStd.hpp (revision 10)
+++ trunk/tools/src/librtools/RlogStd.hpp (nonexistent)
@@ -1,37 +0,0 @@
-// $Id: RlogStd.hpp 358 2011-02-05 09:45:14Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-04 358 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlogStd.hpp 358 2011-02-05 09:45:14Z mueller $
- \brief Declaration of class RlogStd.
-*/
-
-#ifndef included_Retro_RlogStd
-#define included_Retro_RlogStd 1
-
-#include "RlogFile.hpp"
-
-namespace Retro {
-
- extern RlogFile gRcout;
- extern RlogFile gRcerr;
-
-} // end namespace Retro
-
-#endif
Index: trunk/tools/src/librtools/RosPrintBvi.hpp
===================================================================
--- trunk/tools/src/librtools/RosPrintBvi.hpp (revision 10)
+++ trunk/tools/src/librtools/RosPrintBvi.hpp (nonexistent)
@@ -1,62 +0,0 @@
-// $Id: RosPrintBvi.hpp 366 2011-03-05 14:55:15Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-05 366 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintBvi.hpp 366 2011-03-05 14:55:15Z mueller $
- \brief Declaration of class RosPrintBvi .
-*/
-
-#ifndef included_Retro_RosPrintBvi
-#define included_Retro_RosPrintBvi 1
-
-#include
-#include
-#include
-
-namespace Retro {
-
- class RosPrintBvi {
- public:
- explicit RosPrintBvi(uint8_t val, size_t base=2, size_t nbit=8);
- explicit RosPrintBvi(uint16_t val, size_t base=2, size_t nbit=16);
- explicit RosPrintBvi(uint32_t val, size_t base=2, size_t nbit=32);
-
- void Print(std::ostream& os) const;
- void Print(std::string& os) const;
-
- protected:
- void Convert(char* pbuf) const;
-
- protected:
- uint32_t fVal; //!< value to be printed
- size_t fBase; //!< base: 2,8, or 16
- size_t fNbit; //!< number of bits to print
-
- };
-
- std::ostream& operator<<(std::ostream& os, const RosPrintBvi& obj);
- std::string& operator<<(std::string& os, const RosPrintBvi& obj);
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RosPrintBvi_NoInline))
-#include "RosPrintBvi.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librtools/RosPrintBvi.ipp
===================================================================
--- trunk/tools/src/librtools/RosPrintBvi.ipp (revision 10)
+++ trunk/tools/src/librtools/RosPrintBvi.ipp (nonexistent)
@@ -1,53 +0,0 @@
-// $Id: RosPrintBvi.ipp 367 2011-03-06 20:07:18Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-05 366 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintBvi.ipp 367 2011-03-06 20:07:18Z mueller $
- \brief Implemenation (inline) of RosPrintBvi.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates RosPrintBvi
- \brief ostream insertion operator.
-*/
-
-inline std::ostream& operator<<(std::ostream& os, const RosPrintBvi& obj)
-{
- obj.Print(os);
- return os;
-}
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates RosPrintBvi
- \brief string insertion operator.
-*/
-
-inline std::string& operator<<(std::string& os, const RosPrintBvi& obj)
-{
- obj.Print(os);
- return os;
-}
-
-
-} // end namespace Retro
Index: trunk/tools/src/librtools/Rtools.hpp
===================================================================
--- trunk/tools/src/librtools/Rtools.hpp (revision 10)
+++ trunk/tools/src/librtools/Rtools.hpp (nonexistent)
@@ -1,50 +0,0 @@
-// $Id: $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-12 368 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: $
- \brief Declaration of class Rtools .
-*/
-
-#ifndef included_Retro_Rtools
-#define included_Retro_Rtools 1
-
-#include
-#include
-
-namespace Retro {
-
- struct RflagName {
- uint32_t mask;
- const char* name;
- };
-
-
- namespace Rtools {
- std::string Flags2String(uint32_t flags, const RflagName* fnam,
- char delim='|');
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_Rtools_NoInline))
-//#include "Rtools.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librtools/RosPrintf.hpp
===================================================================
--- trunk/tools/src/librtools/RosPrintf.hpp (revision 10)
+++ trunk/tools/src/librtools/RosPrintf.hpp (nonexistent)
@@ -1,73 +0,0 @@
-// $Id: RosPrintf.hpp 357 2011-01-31 08:00:13Z mueller $
-//
-// Copyright 2000-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Adopted from CTBprintf
-// 2000-12-18 - - Last change on CTBprintf
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintf.hpp 357 2011-01-31 08:00:13Z mueller $
- \brief Declaration of RosPrintf functions.
-
- For a detailed description of the usage of the \c RosPrintf system
- look into \ref using_rosprintf.
-*/
-
-#ifndef included_Retro_RosPrintf
-#define included_Retro_RosPrintf 1
-
-#include "RosPrintfS.hpp"
-
-namespace Retro {
-
- RosPrintfS RosPrintf(char value, const char* form=0,
- int width=0, int prec=0);
-
- RosPrintfS RosPrintf(signed char value, const char* form=0,
- int width=0, int prec=0);
- RosPrintfS RosPrintf(unsigned char value, const char* form=0,
- int width=0, int prec=0);
-
- RosPrintfS RosPrintf(short value, const char* form=0,
- int width=0, int prec=0);
- RosPrintfS RosPrintf(unsigned short value, const char* form=0,
- int width=0, int prec=0);
-
- RosPrintfS RosPrintf(int value, const char* form=0,
- int width=0, int prec=0);
- RosPrintfS RosPrintf(unsigned int value, const char* form=0,
- int width=0, int prec=0);
-
- RosPrintfS RosPrintf(long value, const char* form=0,
- int width=0, int prec=0);
- RosPrintfS RosPrintf(unsigned long value, const char* form=0,
- int width=0, int prec=0);
-
- RosPrintfS RosPrintf(double value, const char* form=0,
- int width=0, int prec=0);
-
- RosPrintfS RosPrintf(const char* value, const char* form=0,
- int width=0, int prec=0);
-
- RosPrintfS RosPrintf(const void* value, const char* form=0,
- int width=0, int prec=0);
-
-} // end namespace Retro
-
-// implementation is all inline
-#include "RosPrintf.ipp"
-
-#endif
Index: trunk/tools/src/librtools/Makefile
===================================================================
--- trunk/tools/src/librtools/Makefile (revision 10)
+++ trunk/tools/src/librtools/Makefile (nonexistent)
@@ -1,57 +0,0 @@
-# $Id: Makefile 374 2011-03-27 17:02:47Z mueller $
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-27 374 1.0.1 removed Rnamed (obsolete now)
-# 2011-01-15 357 1.0 Initial version (adopted from CTB...)
-#---
-#
-# Name of the sharable library
-#
-SONAME = rtools
-SOMAJV = 1
-SOMINV = 0
-#
-# Compile and Link search paths
-#
-INCLFLAGS =
-LDLIBS =
-#
-# Object files to be included
-#
-OBJ_all = RerrMsg.o RosFill.o RosPrintBvi.o RosPrintfBase.o RosPrintfS.o \
- RiosState.o \
- RlogFile.o RlogStd.o \
- Rstats.o Rtools.o
-#
-DEP_all = $(OBJ_all:.o=.dep)
-#
-#- generic part ----------------------------------------------------------------
-#
-SOFILE = lib$(SONAME).so
-SOFILEV = lib$(SONAME).so.$(SOMAJV)
-SOFILEVV = lib$(SONAME).so.$(SOMAJV).$(SOMINV)
-#
-include $(RETROBASE)/tools/make/generic_cpp.mk
-include $(RETROBASE)/tools/make/generic_dep.mk
-include $(RETROBASE)/tools/make/generic_so.mk
-#
-# The magic autodependcy include
-#
-include $(DEP_all)
-#
-# cleanup phonies:
-#
-.PHONY : clean cleandep realclean
-clean :
- @ rm -f $(OBJ_all)
- @ echo "Object files removed"
-#
-cleandep :
- @ rm -f $(DEP_all)
- @ echo "Dependency files removed"
-#
-realclean : clean cleandep
- @ rm -f $(SOPATH)/lib$(SONAME).a $(SOPATH)/lib$(SONAME).so*
- @ echo "Libraries removed"
-#
Index: trunk/tools/src/librtools/.cvsignore
===================================================================
--- trunk/tools/src/librtools/.cvsignore (revision 10)
+++ trunk/tools/src/librtools/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-*.dep
Index: trunk/tools/src/librtools/RosPrintf.ipp
===================================================================
--- trunk/tools/src/librtools/RosPrintf.ipp (revision 10)
+++ trunk/tools/src/librtools/RosPrintf.ipp (nonexistent)
@@ -1,269 +0,0 @@
-// $Id: RosPrintf.ipp 358 2011-02-05 09:45:14Z mueller $
-//
-// Copyright 2000-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Adopted from CTBprintf
-// 2000-12-18 - - Last change on CTBprintf
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintf.ipp 358 2011-02-05 09:45:14Z mueller $
- \brief Implemenation (inline) of RosPrintf.
-*/
-
-//------------------------------------------+-----------------------------------
-/*!
- \defgroup RosPrintf RosPrintf -- print format object creators
-*/
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a \c char value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(char value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a signed char value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(signed char value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a unsigned char value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(unsigned char value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a \c short value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(short value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a unsigned short value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(unsigned short value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a \c int value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(int value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a unsigned int value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(unsigned int value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a \c long value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(long value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of an unsigned long value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(unsigned long value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a \c double value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(double value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a const char* value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(const char* value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
-//------------------------------------------+-----------------------------------
-//! Creates a print object for the formatted output of a \c const void* value.
-/*!
- \ingroup RosPrintf
-
- For a full description of the of the \c RosPrintf system look into
- \ref using_rosprintf.
-
- \param value variable or expression to be printed
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline Retro::RosPrintfS
- Retro::RosPrintf(const void* value, const char* form, int width, int prec)
-{
- return Retro::RosPrintfS(value, form, width, prec);
-}
-
Index: trunk/tools/src/librtools/RlogFile.cpp
===================================================================
--- trunk/tools/src/librtools/RlogFile.cpp (revision 10)
+++ trunk/tools/src/librtools/RlogFile.cpp (nonexistent)
@@ -1,145 +0,0 @@
-// $Id: RlogFile.cpp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlogFile.cpp 365 2011-02-28 07:28:26Z mueller $
- \brief Implemenation of RlogFile.
-*/
-
-#include
-
-#include "RlogFile.hpp"
-#include "RosPrintf.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RlogFile
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RlogFile::RlogFile()
- : fpExtStream(0),
- fIntStream()
-{
- ClearTime();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RlogFile::RlogFile(std::ostream* os)
- : fpExtStream(os),
- fIntStream()
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RlogFile::~RlogFile()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RlogFile::Open(std::string name)
-{
- fpExtStream = 0;
- fIntStream.open(name.c_str());
- return fIntStream.is_open();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlogFile::Close()
-{
- fIntStream.close();
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlogFile::UseStream(std::ostream* os)
-{
- if (fIntStream.is_open()) Close();
- fpExtStream = os;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-std::ostream& RlogFile::operator()(char c)
-{
- struct timeval tval;
- gettimeofday(&tval, 0);
-
- struct tm tymd;
- localtime_r(&tval.tv_sec, &tymd);
-
- ostream& os = operator()();
-
- if (tymd.tm_year != fTagYear ||
- tymd.tm_mon != fTagMonth ||
- tymd.tm_mday != fTagDay) {
-
- os << "-+- "
- << RosPrintf(tymd.tm_year+1900,"d",4) << "-"
- << RosPrintf(tymd.tm_mon,"d0",2) << "-"
- << RosPrintf(tymd.tm_mday,"d0",2) << " -+- \n";
-
- fTagYear = tymd.tm_year;
- fTagMonth = tymd.tm_mon;
- fTagDay = tymd.tm_mday;
- }
-
- int usec = (int)(tval.tv_usec/1000);
-
- os << "-" << c << "- "
- << RosPrintf(tymd.tm_hour,"d0",2) << ":"
- << RosPrintf(tymd.tm_min,"d0",2) << ":"
- << RosPrintf(tymd.tm_sec,"d0",2) << "."
- << RosPrintf(usec,"d0",3) << " : ";
-
- return os;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RlogFile::ClearTime()
-{
- fTagYear = -1;
- fTagMonth = -1;
- fTagDay = -1;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RlogFile_NoInline))
-#define inline
-#include "RlogFile.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librtools/RlogFile.hpp
===================================================================
--- trunk/tools/src/librtools/RlogFile.hpp (revision 10)
+++ trunk/tools/src/librtools/RlogFile.hpp (nonexistent)
@@ -1,71 +0,0 @@
-// $Id: RlogFile.hpp 357 2011-01-31 08:00:13Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlogFile.hpp 357 2011-01-31 08:00:13Z mueller $
- \brief Declaration of class RlogFile.
-*/
-
-#ifndef included_Retro_RlogFile
-#define included_Retro_RlogFile 1
-
-#include
-#include
-#include
-
-namespace Retro {
-
- class RlogFile {
- public:
- RlogFile();
- explicit RlogFile(std::ostream* os);
- ~RlogFile();
-
- bool Open(std::string name);
- void Close();
- void UseStream(std::ostream* os);
-
- std::ostream& operator()();
- std::ostream& operator()(char c);
-
- protected:
- void ClearTime();
-
- protected:
- std::ostream* fpExtStream; //!< pointer to external stream
- std::ofstream fIntStream; //!< internal stream
- int fTagYear; //!< year of last time tag
- int fTagMonth; //!< month of last time tag
- int fTagDay; //!< day of last time tag
-
- // RlogFile is not copy or assignable
- private:
- RlogFile(const RlogFile& rhs);
- RlogFile& operator=(const RlogFile& rhs);
-
-
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RlogFile_NoInline))
-#include "RlogFile.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librtools/RmethDscBase.hpp
===================================================================
--- trunk/tools/src/librtools/RmethDscBase.hpp (revision 10)
+++ trunk/tools/src/librtools/RmethDscBase.hpp (nonexistent)
@@ -1,48 +0,0 @@
-// $Id: RmethDscBase.hpp 360 2011-02-11 20:35:11Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-11 360 1.1 templetize arglist type
-// 2011-02-06 359 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RmethDscBase.hpp 360 2011-02-11 20:35:11Z mueller $
- \brief Declaration of class RmethDscBase .
-*/
-
-#ifndef included_Retro_RmethDscBase
-#define included_Retro_RmethDscBase 1
-
-namespace Retro {
-
- template
- class RmethDscBase {
- public:
- RmethDscBase();
- RmethDscBase(const RmethDscBase& rhs);
- virtual ~RmethDscBase();
-
- virtual int operator()(TA& alist)=0;
-
- private:
- };
-
-} // end namespace Retro
-
-// implementation is all inline
-#include "RmethDscBase.ipp"
-
-#endif
Index: trunk/tools/src/librtools/RlogFile.ipp
===================================================================
--- trunk/tools/src/librtools/RlogFile.ipp (revision 10)
+++ trunk/tools/src/librtools/RlogFile.ipp (nonexistent)
@@ -1,36 +0,0 @@
-// $Id: RlogFile.ipp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RlogFile.ipp 365 2011-02-28 07:28:26Z mueller $
- \brief Implemenation (inline) of RlogFile.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline std::ostream& RlogFile::operator()()
-{
- return fpExtStream ? *fpExtStream : fIntStream;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librtools/RmethDscBase.ipp
===================================================================
--- trunk/tools/src/librtools/RmethDscBase.ipp (revision 10)
+++ trunk/tools/src/librtools/RmethDscBase.ipp (nonexistent)
@@ -1,62 +0,0 @@
-// $Id: RmethDscBase.ipp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-11 360 1.1 templetize arglist type
-// 2011-02-06 359 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RmethDscBase.ipp 365 2011-02-28 07:28:26Z mueller $
- \brief Implemenation (inline) of RmethDscBase
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-/*!
- \class RmethDscBase
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Default constructor.
-*/
-
-template
-inline RmethDscBase::RmethDscBase()
-{}
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Copy constructor.
-*/
-
-template
-inline RmethDscBase::RmethDscBase(const RmethDscBase& rhs)
-{}
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Destructor.
-*/
-
-template
-inline RmethDscBase::~RmethDscBase()
-{}
-
-
-} // end namespace Retro
Index: trunk/tools/src/librtools/Rstats.cpp
===================================================================
--- trunk/tools/src/librtools/Rstats.cpp (revision 10)
+++ trunk/tools/src/librtools/Rstats.cpp (nonexistent)
@@ -1,213 +0,0 @@
-// $Id: Rstats.cpp 368 2011-03-12 09:58:53Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-06 367 1.0.1 use max from algorithm
-// 2011-02-06 359 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: Rstats.cpp 368 2011-03-12 09:58:53Z mueller $
- \brief Implemenation of Rstats .
-*/
-
-#include
-#include
-
-#include "Rstats.hpp"
-#include "RosFill.hpp"
-#include "RosPrintf.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::Rstats
- \brief FIXME_docs
-*/
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-Rstats::Rstats()
- : fValue(),
- fName(),
- fText(),
- fHash(0),
- fFormat("f"),
- fWidth(12),
- fPrec(0)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Copy constructor
-
-Rstats::Rstats(const Rstats& rhs)
- : fValue(rhs.fValue),
- fName(rhs.fName),
- fText(rhs.fText),
- fHash(rhs.fHash),
- fFormat(rhs.fFormat),
- fWidth(rhs.fWidth),
- fPrec(rhs.fPrec)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-Rstats::~Rstats()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void Rstats::Define(size_t ind, const std::string& name,
- const std::string& text)
-{
- // update hash
- for (size_t i=0; i= Size()) {
- fValue.resize(ind+1);
- fName.resize(ind+1);
- fText.resize(ind+1);
- }
- fValue[ind] = 0.;
- fName[ind] = name;
- fText[ind] = text;
- }
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void Rstats::SetFormat(const char* format, int width, int prec)
-{
- fFormat = format;
- fWidth = width;
- fPrec = prec;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void Rstats::Print(std::ostream& os, const char* format,
- int width, int prec) const
-{
- if (format == 0 || format[0]==0) {
- format = fFormat.c_str();
- width = fWidth;
- prec = fPrec;
- }
-
- for (size_t i=0; i
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-06 359 1.1 use references in interface, fix printf usage
-// 2011-01-15 356 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RerrMsg.cpp 365 2011-02-28 07:28:26Z mueller $
- \brief Implemenation of RerrMsg.
-*/
-
-#include
-#include
-#include
-
-#include "RerrMsg.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RerrMsg
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RerrMsg::RerrMsg()
- : fMeth(),
- fText()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RerrMsg::RerrMsg(const RerrMsg& rhs)
- : fMeth(rhs.fMeth),
- fText(rhs.fText)
-{}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RerrMsg::~RerrMsg()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RerrMsg::Init(const std::string& meth, const std::string& text)
-{
- fMeth = meth;
- fText = text;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RerrMsg::InitErrno(const std::string& meth,
- const std::string& text, int errnum)
-{
- fMeth = meth;
- fText = text;
- AppendErrno(errnum);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RerrMsg::InitPrintf(const std::string& meth, const char* format, ...)
-{
- fMeth = meth;
-
- char buf[1024];
- buf[0] = 0;
-
- va_list ap;
- va_start (ap, format);
- vsnprintf (buf, sizeof(buf), format, ap);
- va_end (ap);
-
- fText = buf;
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RerrMsg::Prepend(const std::string& meth)
-{
- fMeth = meth + "->" + fMeth;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RerrMsg::Append(const std::string& text)
-{
- fText += text;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RerrMsg::AppendErrno(int errnum)
-{
- fText += strerror(errnum);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RerrMsg::AppendPrintf(const char* format, ...)
-{
- char buf[1024];
- buf[0] = 0;
-
- va_list ap;
- va_start (ap, format);
- vsnprintf (buf, sizeof(buf), format, ap);
- va_end (ap);
-
- fText += buf;
-
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-std::string RerrMsg::Message() const
-{
- return fMeth + ": " + fText;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-void RerrMsg::Grab(RerrMsg& rhs)
-{
- fMeth.swap(rhs.fMeth);
- fText.swap(rhs.fText);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-RerrMsg& RerrMsg::operator=(const RerrMsg& rhs)
-{
- if (&rhs == this) return *this;
- fMeth = rhs.fMeth;
- fText = rhs.fText;
- return *this;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RerrMsg_NoInline))
-#define inline
-#include "RerrMsg.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librtools/RosPrintfBase.cpp
===================================================================
--- trunk/tools/src/librtools/RosPrintfBase.cpp (revision 10)
+++ trunk/tools/src/librtools/RosPrintfBase.cpp (nonexistent)
@@ -1,51 +0,0 @@
-// $Id: $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-25 364 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: $
- \brief Implemenation of RosPrintfBase .
-*/
-
-#include
-
-#include "RosPrintfBase.hpp"
-
-using namespace std;
-using namespace Retro;
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates RosPrintfBase
- \brief string insertion
-*/
-
-std::string& Retro::operator<<(std::string& os, const RosPrintfBase& obj)
-{
- std::ostringstream sos;
- obj.ToStream(sos);
- os += sos.str();
- return os;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RosPrintfBase_NoInline))
-#define inline
-#include "RosPrintfBase.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librtools/Rstats.hpp
===================================================================
--- trunk/tools/src/librtools/Rstats.hpp (revision 10)
+++ trunk/tools/src/librtools/Rstats.hpp (nonexistent)
@@ -1,83 +0,0 @@
-// $Id: Rstats.hpp 364 2011-02-26 08:33:01Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-06 359 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: Rstats.hpp 364 2011-02-26 08:33:01Z mueller $
- \brief Declaration of class Rstats .
-*/
-
-#ifndef included_Retro_Rstats
-#define included_Retro_Rstats 1
-
-#include
-#include
-#include
-#include
-#include
-
-namespace Retro {
-
- class Rstats {
- public:
- Rstats();
- Rstats(const Rstats& rhs);
- ~Rstats();
-
- void Define(size_t ind, const std::string& name,
- const std::string& text);
-
- void Set(size_t ind, double val);
- void Inc(size_t ind, double val=1.);
-
- void SetFormat(const char* format, int width=0, int prec=0);
-
- size_t Size() const;
- double Value(size_t ind) const;
- const std::string& Name(size_t ind) const;
- const std::string& Text(size_t ind) const;
-
- void Print(std::ostream& os, const char* format=0,
- int width=0, int prec=0) const;
- void Dump(std::ostream& os, int ind=0, const char* text=0) const;
-
- double operator[](size_t ind) const;
-
- Rstats& operator=(const Rstats& rhs);
- Rstats& operator-(const Rstats& rhs);
- Rstats& operator*(double rhs);
-
- private:
- std::vector fValue; //!< counter value
- std::vector fName; //!< counter name
- std::vector fText; //!< counter text
- std::uint32_t fHash; //!< hash value for name+text
- std::string fFormat; //!< default format for Print
- int fWidth; //!< default width for Print
- int fPrec; //!< default precision for Print
- };
-
- std::ostream& operator<<(std::ostream& os, const Rstats& obj);
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_Rstats_NoInline))
-#include "Rstats.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librtools/RerrMsg.hpp
===================================================================
--- trunk/tools/src/librtools/RerrMsg.hpp (revision 10)
+++ trunk/tools/src/librtools/RerrMsg.hpp (nonexistent)
@@ -1,77 +0,0 @@
-// $Id: RerrMsg.hpp 359 2011-02-06 22:37:43Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-06 359 1.1 use references in interface
-// 2011-01-15 356 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-
-/*!
- \file
- \version $Id: RerrMsg.hpp 359 2011-02-06 22:37:43Z mueller $
- \brief Declaration of class RerrMsg.
-*/
-
-#ifndef included_Retro_RerrMsg
-#define included_Retro_RerrMsg 1
-
-#include
-#include
-
-namespace Retro {
-
- class RerrMsg {
- public:
- RerrMsg();
- RerrMsg(const RerrMsg& rhs);
- ~RerrMsg();
-
- void Init(const std::string& meth, const std::string& text);
- void InitErrno(const std::string& meth,
- const std::string& text, int errnum);
- void InitPrintf(const std::string& meth,
- const char* format, ...);
-
- void SetMeth(const std::string& meth);
- void SetText(const std::string& text);
-
- void Prepend(const std::string& meth);
- void Append(const std::string& text);
- void AppendErrno(int errnum);
- void AppendPrintf(const char* format, ...);
-
- const std::string& Meth() const;
- const std::string& Text() const;
- std::string Message() const;
-
- void Grab(RerrMsg& rhs);
-
- RerrMsg& operator=(const RerrMsg& rhs);
- operator std::string() const;
-
- protected:
- std::string fMeth; //!< originating method
- std::string fText; //!< message text
- };
-
- std::ostream& operator<<(std::ostream& os, const RerrMsg& obj);
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RerrMsg_NoInline))
-#include "RerrMsg.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librtools/RosPrintfBase.hpp
===================================================================
--- trunk/tools/src/librtools/RosPrintfBase.hpp (revision 10)
+++ trunk/tools/src/librtools/RosPrintfBase.hpp (nonexistent)
@@ -1,57 +0,0 @@
-// $Id: RosPrintfBase.hpp 364 2011-02-26 08:33:01Z mueller $
-//
-// Copyright 2006-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-25 364 1.1 Support << also to string
-// 2011-01-30 357 1.0 Adopted from CTBprintfBase
-// 2006-04-16 - - Last change on CTBprintfBase
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintfBase.hpp 364 2011-02-26 08:33:01Z mueller $
- \brief Declaration of RosPrintfBase class .
-*/
-
-#ifndef included_Retro_RosPrintfBase
-#define included_Retro_RosPrintfBase 1
-
-#include
-#include
-
-namespace Retro {
-
- class RosPrintfBase {
- public:
- RosPrintfBase(const char* form, int width, int prec);
- virtual ~RosPrintfBase();
-
- virtual void ToStream(std::ostream& os) const = 0;
-
- protected:
- const char* fForm; //!< format string
- int fWidth; //!< field width
- int fPrec; //!< field precision
- };
-
- std::ostream& operator<<(std::ostream& os, const RosPrintfBase& obj);
- std::string& operator<<(std::string& os, const RosPrintfBase& obj);
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RosPrintfBase_NoInline))
-#include "RosPrintfBase.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librtools/Rstats.ipp
===================================================================
--- trunk/tools/src/librtools/Rstats.ipp (revision 10)
+++ trunk/tools/src/librtools/Rstats.ipp (nonexistent)
@@ -1,98 +0,0 @@
-// $Id: Rstats.ipp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-06 359 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: Rstats.ipp 365 2011-02-28 07:28:26Z mueller $
- \brief Implemenation (inline) of Rstats.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void Rstats::Set(size_t ind, double val)
-{
- fValue.at(ind) = val;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void Rstats::Inc(size_t ind, double val)
-{
- fValue.at(ind) += val;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline size_t Rstats::Size() const
-{
- return fValue.size();
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline double Rstats::Value(size_t ind) const
-{
- return fValue.at(ind);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const std::string& Rstats::Name(size_t ind) const
-{
- return fName.at(ind);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const std::string& Rstats::Text(size_t ind) const
-{
- return fText.at(ind);
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline double Rstats::operator[](size_t ind) const
-{
- return fValue.at(ind);
-}
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates Rstats
- \brief ostream insertion operator.
-*/
-
-inline std::ostream& operator<<(std::ostream& os, const Rstats& obj)
-{
- obj.Print(os);
- return os;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librtools/RerrMsg.ipp
===================================================================
--- trunk/tools/src/librtools/RerrMsg.ipp (revision 10)
+++ trunk/tools/src/librtools/RerrMsg.ipp (nonexistent)
@@ -1,83 +0,0 @@
-// $Id: RerrMsg.ipp 365 2011-02-28 07:28:26Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-02-06 359 1.1 use references in interface
-// 2011-01-15 356 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RerrMsg.ipp 365 2011-02-28 07:28:26Z mueller $
- \brief Implemenation (inline) of RerrMsg.
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RerrMsg::SetMeth(const std::string& meth)
-{
- fMeth = meth;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline void RerrMsg::SetText(const std::string& text)
-{
- fText = text;
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const std::string& RerrMsg::Meth() const
-{
- return fMeth;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline const std::string& RerrMsg::Text() const
-{
- return fText;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-inline RerrMsg::operator std::string() const
-{
- return Message();
-}
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates RerrMsg
- \brief ostream insertion operator.
-*/
-
-inline std::ostream& operator<<(std::ostream& os, const RerrMsg& obj)
-{
- os << obj.Message();
- return os;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librtools/RosPrintfBase.ipp
===================================================================
--- trunk/tools/src/librtools/RosPrintfBase.ipp (revision 10)
+++ trunk/tools/src/librtools/RosPrintfBase.ipp (nonexistent)
@@ -1,74 +0,0 @@
-// $Id: RosPrintfBase.ipp 359 2011-02-06 22:37:43Z mueller $
-//
-// Copyright 2006-2011 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-01-30 357 1.0 Adopted from RosPrintfBase
-// 2006-04-16 - - Last change on RosPrintfBase
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RosPrintfBase.ipp 359 2011-02-06 22:37:43Z mueller $
- \brief Implemenation (inline) of RosPrintfBase
-*/
-
-// all method definitions in namespace Retro (avoid using in includes...)
-namespace Retro {
-
-/*!
- \class RosPrintfBase
- \brief Base class for print objects. **
-*/
-//------------------------------------------+-----------------------------------
-/*!
- \fn Retro::RosPrintfBase::ToStream(ostream& os) const
- \brief Concrete implementation of the ostream insertion.
-*/
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Constructor.
-
- \param form format descriptor string
- \param width field width
- \param prec precision
-*/
-
-inline RosPrintfBase::RosPrintfBase(const char* form, int width, int prec)
- : fForm(form),
- fWidth(width),
- fPrec(prec)
-{}
-
-//------------------------------------------+-----------------------------------
-/*!
- \brief Destructor.
-*/
-
-inline RosPrintfBase::~RosPrintfBase()
-{}
-
-//------------------------------------------+-----------------------------------
-/*!
- \relates RosPrintfBase
- \brief ostream insertion
-*/
-
-inline std::ostream& operator<<(std::ostream& os, const RosPrintfBase& obj)
-{
- obj.ToStream(os);
- return os;
-}
-
-} // end namespace Retro
Index: trunk/tools/src/librtools
===================================================================
--- trunk/tools/src/librtools (revision 10)
+++ trunk/tools/src/librtools (nonexistent)
trunk/tools/src/librtools
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-*.dep
Index: trunk/tools/src/librlinktpp/RtclRlinkConnect.cpp
===================================================================
--- trunk/tools/src/librlinktpp/RtclRlinkConnect.cpp (revision 10)
+++ trunk/tools/src/librlinktpp/RtclRlinkConnect.cpp (nonexistent)
@@ -1,833 +0,0 @@
-// $Id: RtclRlinkConnect.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-02-11 360 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RtclRlinkConnect.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of class RtclRlinkConnect.
- */
-
-#include
-
-#include
-#include
-
-#include "librtcltools/Rtcl.hpp"
-#include "librtcltools/RtclOPtr.hpp"
-#include "librtcltools/RtclNameSet.hpp"
-#include "librtcltools/RtclStats.hpp"
-#include "librtools/RmethDsc.hpp"
-#include "librtools/RosPrintf.hpp"
-#include "librlink/RlinkCommandList.hpp"
-#include "RtclRlinkConnect.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RtclRlinkConnect
- \brief FIXME_docs
-*/
-
-//------------------------------------------+-----------------------------------
-//! Default constructor
-
-RtclRlinkConnect::RtclRlinkConnect(Tcl_Interp* interp, const char* name)
- : RtclProxyOwned("RlinkConnect", interp, name,
- new RlinkConnect()),
- fErrCnt(0),
- fLogFileName("-")
-{
- typedef RmethDsc mdsc_t;
- AddMeth("open", new mdsc_t(this, &RtclRlinkConnect::M_open));
- AddMeth("close", new mdsc_t(this, &RtclRlinkConnect::M_close));
- AddMeth("exec", new mdsc_t(this, &RtclRlinkConnect::M_exec));
- AddMeth("amap", new mdsc_t(this, &RtclRlinkConnect::M_amap));
- AddMeth("errcnt", new mdsc_t(this, &RtclRlinkConnect::M_errcnt));
- AddMeth("wtlam", new mdsc_t(this, &RtclRlinkConnect::M_wtlam));
- AddMeth("oob", new mdsc_t(this, &RtclRlinkConnect::M_oob));
- AddMeth("stats", new mdsc_t(this, &RtclRlinkConnect::M_stats));
- AddMeth("log", new mdsc_t(this, &RtclRlinkConnect::M_log));
- AddMeth("print", new mdsc_t(this, &RtclRlinkConnect::M_print));
- AddMeth("dump", new mdsc_t(this, &RtclRlinkConnect::M_dump));
- AddMeth("config", new mdsc_t(this, &RtclRlinkConnect::M_config));
- AddMeth("$default", new mdsc_t(this, &RtclRlinkConnect::M_default));
-
- for (size_t i=0; i<8; i++) {
- fCmdnameObj[i] = Tcl_NewStringObj(RlinkCommand::CommandName(i), -1);
- }
-}
-
-//------------------------------------------+-----------------------------------
-//! Destructor
-
-RtclRlinkConnect::~RtclRlinkConnect()
-{}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_open(RtclArgs& args)
-{
- string path;
-
- if (!args.GetArg("?path", path)) return kERR;
- if (!args.AllDone()) return kERR;
-
- RerrMsg emsg;
- if (args.NOptMiss() == 0) { // open path
- if (!Obj().Open(path, emsg)) {
- args.AppendResult(emsg.Message());
- return kERR;
- }
- } else { // open
- string name = Obj().IsOpen() ? Obj().Port()->Url() : string();
- args.SetResult(name);
- }
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_close(RtclArgs& args)
-{
- if (!args.AllDone()) return kERR;
-
- if (!Obj().IsOpen()) {
- args.AppendResult("-E: port not open", NULL);
- return kERR;
- }
- Obj().Close();
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_exec(RtclArgs& args)
-{
- static RtclNameSet optset("-rreg|-rblk|-wreg|-wblk|-stat|-attn|-init|"
- "-edata|-estat|-estatdef|"
- "-volatile|-print|-dump|-rlist");
-
- Tcl_Interp* interp = args.Interp();
-
- RlinkCommandList clist;
- string opt;
- uint16_t addr;
-
- vector vardata;
- vector varstat;
- string varprint;
- string vardump;
- string varlist;
-
- uint8_t estatdef_val = 0x00;
- uint8_t estatdef_msk = 0xff;
-
- while (args.NextOpt(opt, optset)) {
-
- size_t lsize = clist.Size();
- if (opt == "-rreg") { // -rreg addr ?varData ?varStat ---
- if (!GetAddr(args, Obj(), addr)) return kERR;
- if (!GetVarName(args, "??varData", lsize, vardata)) return kERR;
- if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR;
- clist.AddRreg(addr);
-
- } else if (opt == "-rblk") { // -rblk addr size ?varData ?varStat
- int32_t bsize;
- if (!GetAddr(args, Obj(), addr)) return kERR;
- if (!args.GetArg("bsize", bsize, 1, 256)) return kERR;
- if (!GetVarName(args, "??varData", lsize, vardata)) return kERR;
- if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR;
- clist.AddRblk(addr, (size_t) bsize);
-
- } else if (opt == "-wreg") { // -wreg addr data ?varStat -------
- uint16_t data;
- if (!GetAddr(args, Obj(), addr)) return kERR;
- if (!args.GetArg("data", data)) return kERR;
- if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR;
- clist.AddWreg(addr, data);
-
- } else if (opt == "-wblk") { // -wblk addr block ?varStat ------
- vector block;
- if (!GetAddr(args, Obj(), addr)) return kERR;
- if (!args.GetArg("data", block, 1, 256)) return kERR;
- if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR;
- clist.AddWblk(addr, block);
-
- } else if (opt == "-stat") { // -stat varData ?varStat ---------
- if (!GetVarName(args, "??varData", lsize, vardata)) return kERR;
- if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR;
- clist.AddStat();
-
- } else if (opt == "-attn") { // -attn varData ?varStat ---------
- if (!GetVarName(args, "??varData", lsize, vardata)) return kERR;
- if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR;
- clist.AddAttn();
-
- } else if (opt == "-init") { // -init addr data ?varStat -------
- uint16_t data;
- if (!GetAddr(args, Obj(), addr)) return kERR;
- if (!args.GetArg("data", data)) return kERR;
- if (!GetVarName(args, "??varStat", lsize, varstat)) return kERR;
- clist.AddInit(addr, data);
-
- } else if (opt == "-edata") { // -edata data ?mask --------------
- if (!ClistNonEmpty(args, clist)) return kERR;
- if (clist[lsize-1].Expect()==0) {
- clist.LastExpect(new RlinkCommandExpect());
- }
- if (clist[lsize-1].Command() == RlinkCommand::kCmdRblk) {
- vector data;
- vector mask;
- size_t bsize = clist[lsize-1].BlockSize();
- if (!args.GetArg("data", data, 0, bsize)) return kERR;
- if (!args.GetArg("??mask", mask, 0, bsize)) return kERR;
- clist[lsize-1].Expect()->SetBlock(data, mask);
- } else {
- uint16_t data=0;
- uint16_t mask=0;
- if (!args.GetArg("data", data)) return kERR;
- if (!args.GetArg("??mask", mask)) return kERR;
- clist[lsize-1].Expect()->SetData(data, mask);
- }
-
- } else if (opt == "-estat") { // -estat ?stat ?mask -------------
- if (!ClistNonEmpty(args, clist)) return kERR;
- uint8_t stat=0;
- uint8_t mask=0;
- if (!args.GetArg("??stat", stat)) return kERR;
- if (!args.GetArg("??mask", mask)) return kERR;
- if (args.NOptMiss() == 2) mask = 0xff;
- if (clist[lsize-1].Expect()==0) {
- clist.LastExpect(new RlinkCommandExpect());
- }
- clist[lsize-1].Expect()->SetStatus(stat, mask);
-
- } else if (opt == "-estatdef") { // -estatdef ?stat ?mask -----------
- uint8_t stat=0;
- uint8_t mask=0;
- if (!args.GetArg("??stat", stat)) return kERR;
- if (!args.GetArg("??mask", mask)) return kERR;
- if (args.NOptMiss() == 2) mask = 0xff;
- estatdef_val = stat;
- estatdef_msk = mask;
-
- } else if (opt == "-volatile") { // -volatile ----------------------
- if (!ClistNonEmpty(args, clist)) return kERR;
- clist.LastVolatile();
-
- } else if (opt == "-print") { // -print ?varRes -----------------
- varprint = "-";
- if (!args.GetArg("??varRes", varprint)) return kERR;
- } else if (opt == "-dump") { // -dump ?varRes ------------------
- vardump = "-";
- if (!args.GetArg("??varRes", vardump)) return kERR;
- } else if (opt == "-rlist") { // -rlist ?varRes -----------------
- varlist = "-";
- if (!args.GetArg("??varRes", varlist)) return kERR;
- }
-
- if (lsize != clist.Size()) { // cmd added to clist (ind=lsize!)
- if (estatdef_msk != 0xff) { // estatdef defined
- if (clist[lsize].Expect()==0) {
- clist.LastExpect(new RlinkCommandExpect());
- }
- clist[lsize].Expect()->SetStatus(estatdef_val, estatdef_msk);
- }
- }
- }
-
- int nact = 0;
- if (varprint == "-") nact += 1;
- if (vardump == "-") nact += 1;
- if (varlist == "-") nact += 1;
- if (nact > 1) {
- args.AppendResult("-E: more that one of -print,-dump,-list without ",
- "target variable found", NULL);
- return kERR;
- }
-
- if (!args.AllDone()) return kERR;
-
- RerrMsg emsg;
-
- if (!Obj().Exec(clist, emsg)) {
- args.AppendResult(emsg.Message());
- return kERR;
- }
-
- for (size_t icmd=0; icmd retstat;
- RtclOPtr pele;
- switch (cmd.Command()) {
- case RlinkCommand::kCmdRreg:
- case RlinkCommand::kCmdAttn:
- pres = Tcl_NewIntObj((int)cmd.Data());
- break;
-
- case RlinkCommand::kCmdRblk:
- pres = Rtcl::NewListIntObj(cmd.Block());
- break;
-
- case RlinkCommand::kCmdStat:
- retstat.resize(2);
- retstat[0] = cmd.StatRequest();
- retstat[1] = cmd.Data();
- pres = Rtcl::NewListIntObj(retstat);
- break;
- }
- if(!Rtcl::SetVar(interp, vardata[icmd], pres)) return kERR;
- }
-
- if (icmdfirst);
- tpair[1] = Tcl_NewStringObj((it->second).c_str(),(it->second).length());
- Tcl_ListObjAppendElement(NULL, plist, Tcl_NewListObj(2, tpair));
- }
- args.SetResult(plist);
- }
- }
-
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_errcnt(RtclArgs& args)
-{
- static RtclNameSet optset("-clear");
- string opt;
- bool fclear = false;
-
- while (args.NextOpt(opt, optset)) {
- if (opt == "-clear") fclear = true;
- }
- if (!args.AllDone()) return kERR;
-
- args.SetResult(int(fErrCnt));
- if (fclear) fErrCnt = 0;
-
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_wtlam(RtclArgs& args)
-{
- double tout;
- if (!args.GetArg("tout", tout, 0.001)) return kERR;
- if (!args.AllDone()) return kERR;
-
- RerrMsg emsg;
- double twait = Obj().WaitAttn(tout, emsg);
-
- if (twait == -2.) {
- args.AppendResult(emsg.Message());
- return kERR;
- } else if (twait == -1.) {
- if (Obj().GetLogOpts().printlevel >= 2) {
- Obj().LogFile()() << "-- wtlam to=" << RosPrintf(tout, "f", 0,3)
- << " FAIL timeout" << endl;
- fErrCnt += 1;
- args.SetResult(tout);
- return kOK;
- }
- }
-
- if (Obj().GetLogOpts().printlevel >= 1) {
- Obj().LogFile()() << "-- wtlam to=" << RosPrintf(tout, "f", 0,3)
- << " T=" << RosPrintf(twait, "f", 0,3)
- << " OK" << endl;
- }
-
- args.SetResult(twait);
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_oob(RtclArgs& args)
-{
- static RtclNameSet optset("-rlmon|-rbmon|-sbcntl|-sbdata");
-
- string opt;
- uint16_t addr;
- uint16_t data;
- RerrMsg emsg;
-
- if (args.NextOpt(opt, optset)) {
- if (opt == "-rlmon") { // oob -rlmon (0|1)
- if (!args.GetArg("val", data, 1)) return kERR;
- if (!args.AllDone()) return kERR;
- addr = 15; // rlmon on bit 15
- if (!Obj().SndOob(0x00, (addr<<8)+data, emsg)) {
- args.AppendResult(emsg.Message());
- return kERR;
- }
-
- } else if (opt == "-rbmon") { // oob -rbmon (0|1)
- if (!args.GetArg("val", data, 1)) return kERR;
- if (!args.AllDone()) return kERR;
- addr = 14; // rbmon on bit 14
- if (!Obj().SndOob(0x00, (addr<<8)+data, emsg)) {
- args.AppendResult(emsg.Message());
- return kERR;
- }
-
- } else if (opt == "-sbcntl") { // oob -sbcntl bit (0|1)
- if (!args.GetArg("bit", addr, 15)) return kERR;
- if (!args.GetArg("val", data, 1)) return kERR;
- if (!args.AllDone()) return kERR;
- if (!Obj().SndOob(0x00, (addr<<8)+data, emsg)) {
- args.AppendResult(emsg.Message());
- return kERR;
- }
-
- } else if (opt == "-sbdata") { // oob -sbdata addr val
- if (!args.GetArg("bit", addr, 0x0ff)) return kERR;
- if (!args.GetArg("val", data)) return kERR;
- if (!args.AllDone()) return kERR;
- if (!Obj().SndOob(addr, data, emsg)) {
- args.AppendResult(emsg.Message());
- return kERR;
- }
- }
- } else {
- args.AppendResult("-E: missing option, one of "
- "-rlmon,-rbmon,-sbcntl,-sbdata",
- NULL);
- return kERR;
- }
-
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_stats(RtclArgs& args)
-{
- RtclStats::Context cntx;
- if (!RtclStats::GetArgs(args, cntx)) return kERR;
- if (!RtclStats::Exec(args, cntx, Obj().Stats())) return kERR;
- if (Obj().Port()) {
- if (!RtclStats::Exec(args, cntx, Obj().Port()->Stats())) return kERR;
- }
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_log(RtclArgs& args)
-{
- string msg;
- if (!args.GetArg("msg", msg)) return kERR;
- if (!args.AllDone()) return kERR;
- if (Obj().GetLogOpts().printlevel != 0 ||
- Obj().GetLogOpts().dumplevel != 0 ||
- Obj().GetLogOpts().tracelevel != 0) {
- Obj().LogFile()() << "# " << msg << endl;
- }
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_print(RtclArgs& args)
-{
- if (!args.AllDone()) return kERR;
-
- ostringstream sos;
- Obj().Print(sos);
- args.SetResult(sos);
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_dump(RtclArgs& args)
-{
- if (!args.AllDone()) return kERR;
-
- ostringstream sos;
- Obj().Dump(sos, 0);
- args.SetResult(sos);
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_config(RtclArgs& args)
-{
- static RtclNameSet optset("-baseaddr|-basedata|-basestat|"
- "-logfile|-logprintlevel|-logdumplevel|"
- "-logtracelevel");
-
- RlinkConnect::LogOpts logopts = Obj().GetLogOpts();
-
- if (args.NDone() == (size_t)args.Objc()) {
- ostringstream sos;
- sos << "-baseaddr " << RosPrintf(logopts.baseaddr, "d")
- << " -basedata " << RosPrintf(logopts.basedata, "d")
- << " -basestat " << RosPrintf(logopts.basestat, "d")
- << " -logfile {" << fLogFileName << "}"
- << " -logprintlevel " << RosPrintf(logopts.printlevel, "d")
- << " -logdumplevel " << RosPrintf(logopts.dumplevel, "d")
- << " -logtracelevel " << RosPrintf(logopts.tracelevel, "d");
- args.AppendResult(sos);
- return kOK;
- }
-
- string opt;
- while (args.NextOpt(opt, optset)) {
- if (opt == "-baseaddr") { // -baseaddr ?base -----------------
- if (!ConfigBase(args, logopts.baseaddr)) return kERR;
- if (args.NOptMiss() == 0) Obj().SetLogOpts(logopts);
-
- } else if (opt == "-basedata") { // -basedata ?base -----------------
- if (!ConfigBase(args, logopts.basedata)) return kERR;
- if (args.NOptMiss() == 0) Obj().SetLogOpts(logopts);
-
- } else if (opt == "-basestat") { // -basestat ?base -----------------
- if (!ConfigBase(args, logopts.basestat)) return kERR;
- if (args.NOptMiss() == 0) Obj().SetLogOpts(logopts);
-
- } else if (opt == "-logfile") { // -logfile ?name ------------------
- if (!args.Config("??name", fLogFileName)) return false;
- if (args.NOptMiss() == 0) { // new filename ?
- if (fLogFileName == "-") {
- Obj().LogUseStream(&cout);
- } else {
- if (!Obj().LogOpen(fLogFileName)) {
- args.AppendResult("-E: open failed for \"",
- fLogFileName.c_str(), "\", using stdout", NULL);
- Obj().LogUseStream(&cout);
- fLogFileName = "-";
- return kERR;
- }
- }
- }
-
- } else if (opt == "-logprintlevel") { // -logprintlevel ?loglevel --------
- if (!args.Config("??loglevel", logopts.printlevel, 3)) return false;
- if (args.NOptMiss() == 0) Obj().SetLogOpts(logopts);
-
- } else if (opt == "-logdumplevel") { // -logdumplevel ?loglevel ---------
- if (!args.Config("??loglevel", logopts.dumplevel, 3)) return false;
- if (args.NOptMiss() == 0) Obj().SetLogOpts(logopts);
-
- } else if (opt == "-logtracelevel") { // -logtracelevel ?loglevel --------
- if (!args.Config("??loglevel", logopts.tracelevel, 3)) return false;
- if (args.NOptMiss() == 0) Obj().SetLogOpts(logopts);
- }
- }
-
- if (!args.AllDone()) return kERR;
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-int RtclRlinkConnect::M_default(RtclArgs& args)
-{
- if (!args.AllDone()) return kERR;
- ostringstream sos;
- const RlinkConnect::LogOpts& logopts = Obj().GetLogOpts();
-
- sos << "print base: " << "addr " << RosPrintf(logopts.baseaddr, "d", 2)
- << " data " << RosPrintf(logopts.basedata, "d", 2)
- << " stat " << RosPrintf(logopts.basestat, "d", 2) << endl;
- sos << "logfile: " << fLogFileName
- << " printlevel " << logopts.printlevel
- << " dumplevel " << logopts.dumplevel;
-
- args.AppendResultLines(sos);
- return kOK;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RtclRlinkConnect::GetAddr(RtclArgs& args, RlinkConnect& conn,
- uint16_t& addr)
-{
- Tcl_Obj* pobj=0;
- if (!args.GetArg("addr", pobj)) return kERR;
-
- int tstint;
- // if a number is given..
- if (Tcl_GetIntFromObj(NULL, pobj, &tstint) == kOK) {
- if (tstint >= 0 && tstint <= 0x00ff) {
- addr = (uint16_t)tstint;
- } else {
- args.AppendResult("-E: value \"", Tcl_GetString(pobj),
- "\" for \"addr\" out of range 0...0x00ff", NULL);
- return false;
- }
- // if a name is given
- } else {
- string name(Tcl_GetString(pobj));
- uint16_t tstaddr;
- if (Obj().AddrMap().Find(name, tstaddr)) {
- addr = tstaddr;
- } else {
- args.AppendResult("-E: no address mapping known for \"",
- Tcl_GetString(pobj), "\"", NULL);
- return false;
- }
- }
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RtclRlinkConnect::GetVarName(RtclArgs& args, const char* argname,
- size_t nind,
- std::vector& varname)
-{
- while (varname.size() < nind+1) varname.push_back(string());
- string name;
- if (!args.GetArg(argname, name)) return false;
- if (name.length()) { // if variable defined
- char c = name[0];
- if (isdigit(c) || c=='+' || c=='-' ) { // check for mistaken number
- args.AppendResult("-E: invalid variable name \"", name.c_str(),
- "\": looks like a number", NULL);
- return false;
- }
- }
-
- varname[nind] = name;
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RtclRlinkConnect::ConfigBase(RtclArgs& args, size_t& base)
-{
- size_t tmp = base;
- if (!args.Config("??base", tmp, 16, 2)) return false;
- if (tmp != base && tmp != 2 && tmp !=8 && tmp != 16) {
- args.AppendResult("-E: base must be 2, 8, or 16, found \"",
- args.PeekArgString(-1), "\"", NULL);
- }
- base = tmp;
- return true;
-}
-
-
-//------------------------------------------+-----------------------------------
-//! FIXME_docs
-
-bool RtclRlinkConnect::ClistNonEmpty(RtclArgs& args,
- const RlinkCommandList& clist)
-{
- if (clist.Size() == 0) {
- args.AppendResult("-E: -volatile not allowed on empty command list", NULL);
- return false;
- }
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RtclRlinkConnect_NoInline))
-#define inline
-//#include "RtclRlinkConnect.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librlinktpp/RtclRlinkConnect.hpp
===================================================================
--- trunk/tools/src/librlinktpp/RtclRlinkConnect.hpp (revision 10)
+++ trunk/tools/src/librlinktpp/RtclRlinkConnect.hpp (nonexistent)
@@ -1,78 +0,0 @@
-// $Id: RtclRlinkConnect.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-02-11 360 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RtclRlinkConnect.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RtclRlinkConnect.
-*/
-
-#ifndef included_Retro_RtclRlinkConnect
-#define included_Retro_RtclRlinkConnect 1
-
-#include
-#include
-
-#include "librtcltools/RtclOPtr.hpp"
-#include "librtcltools/RtclProxyOwned.hpp"
-
-#include "librlink/RlinkConnect.hpp"
-
-namespace Retro {
-
- class RtclRlinkConnect : public RtclProxyOwned {
- public:
- RtclRlinkConnect(Tcl_Interp* interp, const char* name);
- ~RtclRlinkConnect();
-
- protected:
- int M_open(RtclArgs& args);
- int M_close(RtclArgs& args);
- int M_exec(RtclArgs& args);
- int M_amap(RtclArgs& args);
- int M_errcnt(RtclArgs& args);
- int M_wtlam(RtclArgs& args);
- int M_oob(RtclArgs& args);
- int M_stats(RtclArgs& args);
- int M_log(RtclArgs& args);
- int M_print(RtclArgs& args);
- int M_dump(RtclArgs& args);
- int M_config(RtclArgs& args);
- int M_default(RtclArgs& args);
-
- bool GetAddr(RtclArgs& args, RlinkConnect& conn, uint16_t& addr);
- bool GetVarName(RtclArgs& args, const char* argname,
- size_t nind, std::vector& varname);
- bool ConfigBase(RtclArgs& args, size_t& base);
- bool ClistNonEmpty(RtclArgs& args,
- const RlinkCommandList& clist);
-
- protected:
- RtclOPtr fCmdnameObj[8];
- size_t fErrCnt;
- std::string fLogFileName;
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RtclRlinkConnect_NoInline))
-//#include "RtclRlinkConnect.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librlinktpp/Rlinktpp_Init.cpp
===================================================================
--- trunk/tools/src/librlinktpp/Rlinktpp_Init.cpp (revision 10)
+++ trunk/tools/src/librlinktpp/Rlinktpp_Init.cpp (nonexistent)
@@ -1,62 +0,0 @@
-// $Id: Rlinktpp_Init.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-20 372 1.0.2 renamed ..tcl -> ..tpp
-// 2011-03-19 371 1.0.1 moved Bvi into librtoolstcl
-// 2011-02-11 360 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: Rlinktpp_Init.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of Rlinktpp_Init .
-*/
-
-#include "tcl.h"
-
-#include
-
-#include "librtcltools/RtclClassOwned.hpp"
-#include "RtclRlinkConnect.hpp"
-
-using namespace std;
-using namespace Retro;
-
-//------------------------------------------+-----------------------------------
-extern "C" int Rlinktpp_Init(Tcl_Interp* interp)
-{
- int irc;
-
- // use stubs
- const char* vers = Tcl_InitStubs(interp, TCL_VERSION, 0);
- if (vers == NULL) return TCL_ERROR;
-
- // declare package name and version
- irc = Tcl_PkgProvide(interp, "rlinktpp", "1.0.0");
- if (irc != TCL_OK) return irc;
-
- try {
- // register class commands
- RtclClassOwned::CreateClass(interp, "rlinkconnect",
- "RlinkConnect");
- return TCL_OK;
-
- } catch (exception& e) {
- Tcl_AppendResult(interp, "-E: exception caught in Rlinktpp_Init: \"",
- e.what(), "\"", NULL);
- }
- return TCL_ERROR;
-}
-
Index: trunk/tools/src/librlinktpp/.cvsignore
===================================================================
--- trunk/tools/src/librlinktpp/.cvsignore (revision 10)
+++ trunk/tools/src/librlinktpp/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-*.dep
Index: trunk/tools/src/librlinktpp/Makefile
===================================================================
--- trunk/tools/src/librlinktpp/Makefile (revision 10)
+++ trunk/tools/src/librlinktpp/Makefile (nonexistent)
@@ -1,54 +0,0 @@
-# $Id: Makefile 372 2011-03-20 22:48:11Z mueller $
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-20 372 1.0.1 renamed ..tcl -> ..tpp
-# 2011-02-12 360 1.0 Initial version
-#---
-#
-# Name of the sharable library
-#
-SONAME = rlinktpp
-SOMAJV = 1
-SOMINV = 0
-#
-# Compile and Link search paths
-#
-INCLFLAGS = -I/usr/include/tcl8.4 -I${RETROBASE}/tools/src
-LDLIBS = -L${RETROBASE}/tools/lib -lrtools -lrtcltools -lrlink
-#
-# Object files to be included
-#
-OBJ_all = Rlinktpp_Init.o RtclRlinkConnect.o
-#
-DEP_all = $(OBJ_all:.o=.dep)
-#
-#- generic part ----------------------------------------------------------------
-#
-SOFILE = lib$(SONAME).so
-SOFILEV = lib$(SONAME).so.$(SOMAJV)
-SOFILEVV = lib$(SONAME).so.$(SOMAJV).$(SOMINV)
-#
-include $(RETROBASE)/tools/make/generic_cpp.mk
-include $(RETROBASE)/tools/make/generic_dep.mk
-include $(RETROBASE)/tools/make/generic_so.mk
-#
-# The magic autodependcy include
-#
-include $(DEP_all)
-#
-# cleanup phonies:
-#
-.PHONY : clean cleandep realclean
-clean :
- @ rm -f $(OBJ_all)
- @ echo "Object files removed"
-#
-cleandep :
- @ rm -f $(DEP_all)
- @ echo "Dependency files removed"
-#
-realclean : clean cleandep
- @ rm -f $(SOPATH)/lib$(SONAME).a $(SOPATH)/lib$(SONAME).so*
- @ echo "Libraries removed"
-#
Index: trunk/tools/src/librlinktpp
===================================================================
--- trunk/tools/src/librlinktpp (revision 10)
+++ trunk/tools/src/librlinktpp (nonexistent)
trunk/tools/src/librlinktpp
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-*.dep
Index: trunk/tools/src/librutiltpp/RtclBvi.hpp
===================================================================
--- trunk/tools/src/librutiltpp/RtclBvi.hpp (revision 10)
+++ trunk/tools/src/librutiltpp/RtclBvi.hpp (nonexistent)
@@ -1,56 +0,0 @@
-// $Id: RtclBvi.hpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-02-18 362 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RtclBvi.hpp 375 2011-04-02 07:56:47Z mueller $
- \brief Declaration of class RtclBvi.
-*/
-
-#ifndef included_Retro_RtclBvi
-#define included_Retro_RtclBvi 1
-
-#include "tcl.h"
-
-namespace Retro {
-
- class RtclBvi {
- public:
- static void CreateCmds(Tcl_Interp* interp);
-
- protected:
- enum ConvMode {kStr2Int = 0,
- kInt2Str};
-
- static int DoCmd(ClientData cdata, Tcl_Interp* interp,
- int objc, Tcl_Obj* const objv[]);
- static Tcl_Obj* DoConv(Tcl_Interp* interp, ConvMode mode, Tcl_Obj* val,
- char form, int nbit);
- static bool CheckFormat(Tcl_Interp* interp, int objc,
- Tcl_Obj* const objv[], bool& list,
- char& form, int& nbit);
- };
-
-} // end namespace Retro
-
-#if !(defined(Retro_NoInline) || defined(Retro_RtclBvi_NoInline))
-//#include "RtclBvi.ipp"
-#endif
-
-#endif
Index: trunk/tools/src/librutiltpp/.cvsignore
===================================================================
--- trunk/tools/src/librutiltpp/.cvsignore (revision 10)
+++ trunk/tools/src/librutiltpp/.cvsignore (nonexistent)
@@ -1 +0,0 @@
-*.dep
Index: trunk/tools/src/librutiltpp/Makefile
===================================================================
--- trunk/tools/src/librutiltpp/Makefile (revision 10)
+++ trunk/tools/src/librutiltpp/Makefile (nonexistent)
@@ -1,54 +0,0 @@
-# $Id: Makefile 372 2011-03-20 22:48:11Z mueller $
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-03-20 372 1.0.1 renamed ..tcl -> ..tpp
-# 2011-03-19 371 1.0 Initial version
-#---
-#
-# Name of the sharable library
-#
-SONAME = rutiltpp
-SOMAJV = 1
-SOMINV = 0
-#
-# Compile and Link search paths
-#
-INCLFLAGS = -I/usr/include/tcl8.4 -I${RETROBASE}/tools/src
-LDLIBS = -L${RETROBASE}/tools/lib -lrtcltools
-#
-# Object files to be included
-#
-OBJ_all = Rutiltpp_Init.o RtclBvi.o
-#
-DEP_all = $(OBJ_all:.o=.dep)
-#
-#- generic part ----------------------------------------------------------------
-#
-SOFILE = lib$(SONAME).so
-SOFILEV = lib$(SONAME).so.$(SOMAJV)
-SOFILEVV = lib$(SONAME).so.$(SOMAJV).$(SOMINV)
-#
-include $(RETROBASE)/tools/make/generic_cpp.mk
-include $(RETROBASE)/tools/make/generic_dep.mk
-include $(RETROBASE)/tools/make/generic_so.mk
-#
-# The magic autodependcy include
-#
-include $(DEP_all)
-#
-# cleanup phonies:
-#
-.PHONY : clean cleandep realclean
-clean :
- @ rm -f $(OBJ_all)
- @ echo "Object files removed"
-#
-cleandep :
- @ rm -f $(DEP_all)
- @ echo "Dependency files removed"
-#
-realclean : clean cleandep
- @ rm -f $(SOPATH)/lib$(SONAME).a $(SOPATH)/lib$(SONAME).so*
- @ echo "Libraries removed"
-#
Index: trunk/tools/src/librutiltpp/RtclBvi.cpp
===================================================================
--- trunk/tools/src/librutiltpp/RtclBvi.cpp (revision 10)
+++ trunk/tools/src/librutiltpp/RtclBvi.cpp (nonexistent)
@@ -1,261 +0,0 @@
-// $Id: RtclBvi.cpp 375 2011-04-02 07:56:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-27 374 1.0 Initial version
-// 2011-02-13 361 0.1 First draft
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: RtclBvi.cpp 375 2011-04-02 07:56:47Z mueller $
- \brief Implemenation of RtclBvi.
-*/
-
-#include
-#include
-#include
-
-#include
-
-#include "RtclBvi.hpp"
-#include "librtcltools/RtclOPtr.hpp"
-
-using namespace std;
-using namespace Retro;
-
-/*!
- \class Retro::RtclBvi
- \brief FIXME_text
-*/
-
-static const int kOK = TCL_OK;
-static const int kERR = TCL_ERROR;
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-void RtclBvi::CreateCmds(Tcl_Interp* interp)
-{
- Tcl_CreateObjCommand(interp, "bvi", DoCmd, (ClientData) kStr2Int, NULL);
- Tcl_CreateObjCommand(interp, "pbvi", DoCmd, (ClientData) kInt2Str, NULL);
- return;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-int RtclBvi::DoCmd(ClientData cdata, Tcl_Interp* interp, int objc,
- Tcl_Obj* const objv[])
-{
- bool list = false;
- char form = 0;
- int nbit = 0;
- if (!CheckFormat(interp, objc, objv, list, form, nbit)) return kERR;
-
- ConvMode mode = (ConvMode)((int) cdata);
-
- if (list) {
- int lobjc = 0;
- Tcl_Obj** lobjv = 0;
- if (Tcl_ListObjGetElements(interp, objv[2], &lobjc, &lobjv) != kOK) {
- return kERR;
- }
-
- RtclOPtr rlist(Tcl_NewListObj(0, NULL));
-
- for (int i=0; i0 && isblank(pval[lval-1])) {
- lval--;
- }
-
- // check for c"ddd" format
- if (lval>3 && pval[1]=='"' && pval[lval-1]=='"') {
- if (strchr("bBoOdDxX", pval[0]) == 0) {
- Tcl_AppendResult(interp, "-E: bad prefix in c\"dddd\" format string",
- NULL);
- return 0;
- }
- form = pval[0];
- pval += 2;
- lval -= 3;
- // check for 0xddd format
- } else if (lval>2 && pval[0]=='0' && (pval[1]=='x' || pval[1]=='X')) {
- form = 'x';
- pval += 2;
- lval -= 2;
- }
-
- int base = 0;
- switch (form) {
- case 'b': case 'B': base = 2; break;
- case 'o': case 'O': base = 8; break;
- case 'd': case 'D': base = 10; break;
- case 'x': case 'X': base = 16; break;
- }
-
- unsigned long lres=0;
- char* eptr=0;
-
- if (base==10 && pval[0]=='-') {
- lres = (unsigned long) strtol(pval, &eptr, base);
- if (nbit<32) lres &= (1ul< (1ul<=0; i--) {
- unsigned int nibble = ((val_uint)>>(i*nwidth)) & nmask;
- nibble += (nibble <= 9) ? '0' : ('a'-10);
- *pbuf++ = (char) nibble;
- }
-
- if (form=='B' || form=='O' || form=='X') {
- *pbuf++ = '"';
- }
-
- return Tcl_NewStringObj(buf, pbuf-buf);
-
- } else {
- Tcl_AppendResult(interp, "-E: BUG! bad cdata in RtclBvi::DoConv() call",
- NULL);
- }
- return 0;
-}
-
-//------------------------------------------+-----------------------------------
-//! FIXME_text
-
-bool RtclBvi::CheckFormat(Tcl_Interp* interp, int objc, Tcl_Obj* const objv[],
- bool& list, char& form, int& nbit)
-{
- list = false;
- form = 'b';
- nbit = 0;
-
- if (objc != 3) {
- Tcl_WrongNumArgs(interp, 1, objv, "form arg");
- return false;
- }
-
- const char* opt = Tcl_GetString(objv[1]);
-
- while(*opt != 0) {
- switch (*opt) {
- case 'b':
- case 'B':
- case 'o':
- case 'O':
- case 'x':
- case 'X':
- form = *opt;
- break;
-
- case 'l':
- list = true;
- break;
-
- default:
- if (*opt>='0' && *opt<='9') {
- nbit = 10*nbit + ((*opt) - '0');
- if (nbit > 32) {
- Tcl_AppendResult(interp, "-E: invalid bvi format \"", opt, "\"",
- " bit count > 32", NULL);
- return false;
- }
- } else {
- Tcl_AppendResult(interp, "-E: invalid bvi format \"", opt, "\"",
- " allowed: [bBoOxXl][0-9]*", NULL);
- return false;
- }
- break;
- }
- opt++;
- }
-
- if (nbit==0) nbit=8;
-
- return true;
-}
-
-//------------------------------------------+-----------------------------------
-#if (defined(Retro_NoInline) || defined(Retro_RtclBvi_NoInline))
-#define inline
-//#include "RtclBvi.ipp"
-#undef inline
-#endif
Index: trunk/tools/src/librutiltpp/Rutiltpp_Init.cpp
===================================================================
--- trunk/tools/src/librutiltpp/Rutiltpp_Init.cpp (revision 10)
+++ trunk/tools/src/librutiltpp/Rutiltpp_Init.cpp (nonexistent)
@@ -1,59 +0,0 @@
-// $Id: Rutiltpp_Init.cpp 374 2011-03-27 17:02:47Z mueller $
-//
-// Copyright 2011- by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 2, or at your option any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
-// Revision History:
-// Date Rev Version Comment
-// 2011-03-20 372 1.0.2 renamed ..tcl -> ..tpp
-// 2011-03-19 371 1.0 Initial version
-// ---------------------------------------------------------------------------
-
-/*!
- \file
- \version $Id: Rutiltpp_Init.cpp 374 2011-03-27 17:02:47Z mueller $
- \brief Implemenation of Rutiltpp_Init .
-*/
-
-#include "tcl.h"
-
-#include
-
-#include "RtclBvi.hpp"
-
-using namespace std;
-using namespace Retro;
-
-//------------------------------------------+-----------------------------------
-extern "C" int Rutiltpp_Init(Tcl_Interp* interp)
-{
- int irc;
-
- // use stubs
- const char* vers = Tcl_InitStubs(interp, TCL_VERSION, 0);
- if (vers == NULL) return TCL_ERROR;
-
- // declare package name and version
- irc = Tcl_PkgProvide(interp, "rutiltpp", "1.0.0");
- if (irc != TCL_OK) return irc;
-
- try {
- // register general commands
- RtclBvi::CreateCmds(interp);
- return TCL_OK;
-
- } catch (exception& e) {
- Tcl_AppendResult(interp, "-E: exception caught in Rutiltpp_Init: \"",
- e.what(), "\"", NULL);
- }
- return TCL_ERROR;
-}
-
Index: trunk/tools/src/librutiltpp
===================================================================
--- trunk/tools/src/librutiltpp (revision 10)
+++ trunk/tools/src/librutiltpp (nonexistent)
trunk/tools/src/librutiltpp
Property changes :
Deleted: svn:ignore
## -1,33 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-*.dep
Index: trunk/tools/src
===================================================================
--- trunk/tools/src (revision 10)
+++ trunk/tools/src (nonexistent)
trunk/tools/src
Property changes :
Deleted: svn:ignore
## -1,32 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
Index: trunk/tools/dox/w11.Doxyfile
===================================================================
--- trunk/tools/dox/w11.Doxyfile (revision 10)
+++ trunk/tools/dox/w11.Doxyfile (nonexistent)
@@ -1,283 +0,0 @@
-# $Id: $
-# Revision History:
-# Date Rev Version Comment
-# 2011-01-09 354 1.0 Initial version
-#---------------------------------------------------------------------------
-#
-# Doxyfile 1.7.3
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-DOXYFILE_ENCODING = UTF-8
-PROJECT_NAME = w11
-PROJECT_NUMBER = 0.53
-PROJECT_BRIEF = "Backend server for Rlink and w11"
-PROJECT_LOGO =
-OUTPUT_DIRECTORY = $(HOME)/tmp/w11
-CREATE_SUBDIRS = NO
-OUTPUT_LANGUAGE = English
-BRIEF_MEMBER_DESC = YES
-REPEAT_BRIEF = YES
-ABBREVIATE_BRIEF =
-ALWAYS_DETAILED_SEC = NO
-INLINE_INHERITED_MEMB = NO
-FULL_PATH_NAMES = YES
-STRIP_FROM_PATH = $(RETROBASE)/tools/src
-STRIP_FROM_INC_PATH =
-SHORT_NAMES = NO
-JAVADOC_AUTOBRIEF = NO
-QT_AUTOBRIEF = NO
-MULTILINE_CPP_IS_BRIEF = NO
-INHERIT_DOCS = YES
-SEPARATE_MEMBER_PAGES = NO
-TAB_SIZE = 8
-ALIASES =
-OPTIMIZE_OUTPUT_FOR_C = NO
-OPTIMIZE_OUTPUT_JAVA = NO
-OPTIMIZE_FOR_FORTRAN = NO
-OPTIMIZE_OUTPUT_VHDL = NO
-EXTENSION_MAPPING = ipp=C++
-BUILTIN_STL_SUPPORT = YES
-CPP_CLI_SUPPORT = NO
-SIP_SUPPORT = NO
-IDL_PROPERTY_SUPPORT = YES
-DISTRIBUTE_GROUP_DOC = NO
-SUBGROUPING = YES
-TYPEDEF_HIDES_STRUCT = NO
-SYMBOL_CACHE_SIZE = 0
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL = YES
-EXTRACT_PRIVATE = YES
-EXTRACT_STATIC = YES
-EXTRACT_LOCAL_CLASSES = YES
-EXTRACT_LOCAL_METHODS = NO
-EXTRACT_ANON_NSPACES = NO
-HIDE_UNDOC_MEMBERS = NO
-HIDE_UNDOC_CLASSES = NO
-HIDE_FRIEND_COMPOUNDS = NO
-HIDE_IN_BODY_DOCS = NO
-INTERNAL_DOCS = NO
-CASE_SENSE_NAMES = YES
-HIDE_SCOPE_NAMES = NO
-SHOW_INCLUDE_FILES = YES
-FORCE_LOCAL_INCLUDES = NO
-INLINE_INFO = YES
-SORT_MEMBER_DOCS = NO
-SORT_BRIEF_DOCS = NO
-SORT_MEMBERS_CTORS_1ST = NO
-SORT_GROUP_NAMES = NO
-SORT_BY_SCOPE_NAME = NO
-STRICT_PROTO_MATCHING = NO
-GENERATE_TODOLIST = YES
-GENERATE_TESTLIST = YES
-GENERATE_BUGLIST = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS =
-MAX_INITIALIZER_LINES = 30
-SHOW_USED_FILES = YES
-SHOW_DIRECTORIES = NO
-SHOW_FILES = YES
-SHOW_NAMESPACES = YES
-FILE_VERSION_FILTER =
-LAYOUT_FILE =
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET = NO
-WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
-WARN_IF_DOC_ERROR = YES
-WARN_NO_PARAMDOC = NO
-WARN_FORMAT = "$file:$line: $text"
-WARN_LOGFILE =
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT = $(RETROBASE)/tools/src
-INPUT_ENCODING = UTF-8
-FILE_PATTERNS = *.cpp *.hpp *.ipp *.dox
-RECURSIVE = YES
-EXCLUDE =
-EXCLUDE_SYMLINKS = NO
-EXCLUDE_PATTERNS = */.svn* */tests/*
-EXCLUDE_SYMBOLS =
-EXAMPLE_PATH =
-EXAMPLE_PATTERNS =
-EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
-INPUT_FILTER =
-FILTER_PATTERNS =
-FILTER_SOURCE_FILES = NO
-FILTER_SOURCE_PATTERNS =
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER = YES
-INLINE_SOURCES = NO
-STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION = YES
-REFERENCES_LINK_SOURCE = YES
-USE_HTAGS = NO
-VERBATIM_HEADERS = YES
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX = YES
-COLS_IN_ALPHA_INDEX = 5
-IGNORE_PREFIX =
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML = YES
-HTML_OUTPUT = html
-HTML_FILE_EXTENSION = .html
-HTML_HEADER =
-HTML_FOOTER =
-HTML_STYLESHEET =
-HTML_COLORSTYLE_HUE = 220
-HTML_COLORSTYLE_SAT = 100
-HTML_COLORSTYLE_GAMMA = 80
-HTML_TIMESTAMP = YES
-HTML_ALIGN_MEMBERS = YES
-HTML_DYNAMIC_SECTIONS = NO
-GENERATE_DOCSET = NO
-DOCSET_FEEDNAME = "Doxygen generated docs"
-DOCSET_BUNDLE_ID = org.doxygen.Project
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-DOCSET_PUBLISHER_NAME = Publisher
-GENERATE_HTMLHELP = NO
-CHM_FILE =
-HHC_LOCATION =
-GENERATE_CHI = NO
-CHM_INDEX_ENCODING =
-BINARY_TOC = NO
-TOC_EXPAND = NO
-GENERATE_QHP = NO
-QCH_FILE =
-QHP_NAMESPACE = org.doxygen.Project
-QHP_VIRTUAL_FOLDER = doc
-QHP_CUST_FILTER_NAME =
-QHP_CUST_FILTER_ATTRS =
-QHP_SECT_FILTER_ATTRS =
-QHG_LOCATION =
-GENERATE_ECLIPSEHELP = NO
-ECLIPSE_DOC_ID = org.doxygen.Project
-DISABLE_INDEX = NO
-ENUM_VALUES_PER_LINE = 4
-GENERATE_TREEVIEW = YES
-USE_INLINE_TREES = YES
-TREEVIEW_WIDTH = 250
-EXT_LINKS_IN_WINDOW = NO
-FORMULA_FONTSIZE = 10
-FORMULA_TRANSPARENT = YES
-USE_MATHJAX = NO
-MATHJAX_RELPATH = http://www.mathjax.org/mathjax
-SEARCHENGINE = YES
-SERVER_BASED_SEARCH = NO
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX = NO
-LATEX_OUTPUT = latex
-LATEX_CMD_NAME = latex
-MAKEINDEX_CMD_NAME = makeindex
-COMPACT_LATEX = NO
-PAPER_TYPE = a4
-EXTRA_PACKAGES =
-LATEX_HEADER =
-PDF_HYPERLINKS = YES
-USE_PDFLATEX = YES
-LATEX_BATCHMODE = NO
-LATEX_HIDE_INDICES = NO
-LATEX_SOURCE_CODE = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF = NO
-RTF_OUTPUT = rtf
-COMPACT_RTF = NO
-RTF_HYPERLINKS = NO
-RTF_STYLESHEET_FILE =
-RTF_EXTENSIONS_FILE =
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN = NO
-MAN_OUTPUT = man
-MAN_EXTENSION = .3
-MAN_LINKS = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML = NO
-XML_OUTPUT = xml
-XML_SCHEMA =
-XML_DTD =
-XML_PROGRAMLISTING = YES
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD = NO
-PERLMOD_LATEX = NO
-PERLMOD_PRETTY = YES
-PERLMOD_MAKEVAR_PREFIX =
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING = YES
-MACRO_EXPANSION = NO
-EXPAND_ONLY_PREDEF = NO
-SEARCH_INCLUDES = YES
-INCLUDE_PATH =
-INCLUDE_FILE_PATTERNS =
-PREDEFINED =
-EXPAND_AS_DEFINED =
-SKIP_FUNCTION_MACROS = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-TAGFILES =
-GENERATE_TAGFILE =
-ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
-PERL_PATH = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS = YES
-MSCGEN_PATH =
-HIDE_UNDOC_RELATIONS = YES
-HAVE_DOT = YES
-DOT_NUM_THREADS = 0
-DOT_FONTNAME = Helvetica
-DOT_FONTSIZE = 10
-DOT_FONTPATH =
-CLASS_GRAPH = YES
-COLLABORATION_GRAPH = YES
-GROUP_GRAPHS = YES
-UML_LOOK = NO
-TEMPLATE_RELATIONS = NO
-INCLUDE_GRAPH = YES
-INCLUDED_BY_GRAPH = YES
-CALL_GRAPH = NO
-CALLER_GRAPH = NO
-GRAPHICAL_HIERARCHY = YES
-DIRECTORY_GRAPH = YES
-DOT_IMAGE_FORMAT = png
-DOT_PATH =
-DOTFILE_DIRS =
-MSCFILE_DIRS =
-DOT_GRAPH_MAX_NODES = 50
-MAX_DOT_GRAPH_DEPTH = 0
-DOT_TRANSPARENT = NO
-DOT_MULTI_TARGETS = NO
-GENERATE_LEGEND = YES
-DOT_CLEANUP = YES
Index: trunk/tools/dox
===================================================================
--- trunk/tools/dox (revision 10)
+++ trunk/tools/dox (nonexistent)
trunk/tools/dox
Property changes :
Deleted: svn:ignore
## -1,32 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
Index: trunk/tools/bin/ti_rri
===================================================================
--- trunk/tools/bin/ti_rri (revision 10)
+++ trunk/tools/bin/ti_rri (nonexistent)
@@ -1,204 +0,0 @@
-#! /usr/bin/env tclsh
-# -*- tcl -*-
-# $Id: ti_rri 375 2011-04-02 07:56:47Z mueller $
-#
-# Copyright 2011- by Walter F.J. Mueller
-#
-# This program is free software; you may redistribute and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation, either version 2, or at your option any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for complete details.
-#
-# Revision History:
-# Date Rev Version Comment
-# 2011-04-02 376 1.0 Initial version
-# 2011-03-19 371 0.1 First draft
-#
-#
-# --fifo[=name,keep]
-# --term[=???] ; not yet implemented...
-# --run=command
-# --log=filename ; default "-"
-# --logl=n ; default 2
-# --dmpl=n ; default 0
-# --tiol=n ; default 0
-# --int
-# --help
-# --
-# tcl cmds
-# @...tcl
-#
-
-array set opts {
- fifo 0
- fifo_ ""
- term 0
- term_ ""
- run_ ""
- log_ "-"
- logl_ 2
- dmpl_ 0
- tiol_ 0
- int 0
- help 0
-}
-
-set clist {}
-set optsendseen 0
-
-foreach arg $argv {
- if { $optsendseen } {
- lappend clist $arg
- continue
- }
- switch -regexp -- $arg {
- ^--?fifo=?.*$ { set opts(fifo) 1; regexp -- {=(.*)} $arg dummy opts(fifo_) }
- ^--?term=?.*$ { set opts(term) 1; regexp -- {=(.*)} $arg dummy opts(term_) }
- ^--?run=.+$ { regexp -- {=(.*)} $arg dummy opts(run_) }
- ^--?log=.+$ { regexp -- {=(.*)} $arg dummy opts(log_) }
- ^--?logl=.+$ { regexp -- {=(.*)} $arg dummy opts(logl_) }
- ^--?dmpl=.+$ { regexp -- {=(.*)} $arg dummy opts(dmpl_) }
- ^--?tiol=.+$ { regexp -- {=(.*)} $arg dummy opts(tiol_) }
- ^--?int$ { set opts(int) 1 }
- ^--?help$ { set opts(help) 1 }
- ^--$ { set optsendseen 1 }
- ^--.+$ { puts "-E: bad option $arg, see --help for proper usage"
- return 1
- }
- default { lappend clist $arg }
- }
-}
-
-if { $opts(help) } {
- puts "usage: ti_rri"
- return 0
-}
-
-if { $opts(fifo) && $opts(term) } {
- puts "-E: both --fifo and --term given, only one allowed"
- return 1
-}
-
-lappend auto_path [file join $env(RETROBASE) tools tcl]
-lappend auto_path [file join $env(RETROBASE) tools lib]
-
-package require rlink
-package require rutiltpp
-package require rlinktpp
-
-rlinkconnect rlc
-
-# setup logging
-if { $opts(log_) ne "-" } {
- rlc config -logfile $opts(log_)
-}
-rlc config -logprintlevel $opts(logl_)
-rlc config -logdumplevel $opts(dmpl_)
-rlc config -logtracelevel $opts(tiol_)
-
-# first start, if specified with -run, the test bench
-set runpid {}
-if { $opts(run_) ne "" } {
- if { [catch {eval "exec $opts(run_) &" } runpid] } {
- puts "-E: failed to execute \"$opts(run_)\" with error message\n $runpid"
- puts "aborting..."
- return 1
- }
-}
-
-# than open the rlink connection
-# handle --fifo
-if { $opts(fifo) } {
- set nlist [split $opts(fifo_) ","]
- set path [lindex $nlist 0]
- set keep [lindex $nlist 1]
- if {$path eq ""} {set path "rlink_cext_fifo"}
- set url "fifo:$path"
- if {$keep ne ""} {append url "?keep"}
- rlc open $url
-}
-
-# handle --term
-if { $opts(term) } {
- set nlist [split $opts(term_) ","]
- set dev [lindex $nlist 0]
- set baud [lindex $nlist 1]
- set brk [lindex $nlist 2]
- if {$dev eq ""} {set dev "/dev/ttyS0"}
- if {$baud eq ""} {set baud "115k"}
- set url "term:$dev?baud=$baud"
- if {$brk ne ""} {append url ";break"}
- rlc open $url
-}
-
-# setup simulation mode default
-set rlink::sim_mode [rlink::isfifo]
-
-foreach cmd $clist {
- # handle @filename commands
- if { [regexp {^@(.+)} $cmd dummy filename] } {
- # handle @file.tcl --> source tcl file
- if { [regexp {\.tcl$} $filename] } {
- if { [catch {source $filename} errmsg] } {
- puts "-E: failed to source file \"$filename\" with error message:"
- if {[info exists errorInfo]} {puts $errorInfo} else {puts $errmsg}
- puts "aborting..."
- break
- }
- # handle @file.dat ect --> not yet supported
- } else {
- puts "-E: only tcl supported but $filename found"
- puts "aborting..."
- break
- }
-
- # handle normal tcl commands --> eval them
- } else {
- if { [catch {eval $cmd} errmsg] } {
- puts "-E: eval of \"$cmd\" failed with error message:"
- if {[info exists errorInfo]} {puts $errorInfo} else {puts $errmsg}
- puts "aborting..."
- break
- }
- }
-}
-
-# if tclsh runs a script given on the command line or is invoked
-# like here via a shebang the tcl_interactive is always set to 0
-# so we have to check whether stdin/stdout is a terminal and set
-# tcl_interactive accordingly
-
-# FIXME_code: fstat not available (grr...), currently just assume istty
-set tcl_interactive 1
-
-if { $opts(int) || [llength $clist] == 0 } {
- if {$tcl_interactive} {
- package require tclreadline
- namespace eval tclreadline {
- proc prompt1 {} {
- set version [info tclversion]
- return "ti_rri > "
- }
- }
- ::tclreadline::Loop
- }
-}
-
-#
-# now close rlink connection
-#
-if { $opts(fifo) || $opts(term) } {
- rlc close
-}
-
-# FIXME_code: should sync here with -run process run-down
-# but no wait available in tcl (grr...)
-if { $runpid } {
- after 100; # currently just wait 100ms
-}
-
-return 0
trunk/tools/bin/ti_rri
Property changes :
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Index: trunk/tools/bin/pi_rri
===================================================================
--- trunk/tools/bin/pi_rri (revision 10)
+++ trunk/tools/bin/pi_rri (revision 9)
@@ -1,5 +1,5 @@
#!/usr/bin/perl -w
-# $Id: pi_rri 374 2011-03-27 17:02:47Z mueller $
+# $Id: pi_rri 351 2010-12-30 21:50:54Z mueller $
#
# Copyright 2007-2010 by Walter F.J. Mueller
#
@@ -6455,7 +6455,7 @@
my $newtios = new POSIX::Termios;
$newtios->getattr($fd) || die "getattr failed: $!"; ## hack for cygwin !!
- my $c_iflag = &POSIX::BRKINT; # ignore parity errors (??? WRONG??)
+ my $c_iflag = &POSIX::BRKINT; # ignore parity errors
my $c_oflag = 0;
my $c_cflag = &POSIX::CS8 | # 8 bit chars
&POSIX::CSTOPB | # 2 stop bits
@@ -6532,30 +6532,30 @@
printf "iflag = %8.8x:", $iflag;
print " BRKINT" if $iflag & &POSIX::BRKINT;
- print " ICRNL " if $iflag & &POSIX::ICRNL;
+ print " ICRNL " if $iflag & &POSIX::ICRNL;
print " IGNBRK" if $iflag & &POSIX::IGNBRK;
- print " IGNCR " if $iflag & &POSIX::IGNCR;
+ print " IGNCR " if $iflag & &POSIX::IGNCR;
print " IGNPAR" if $iflag & &POSIX::IGNPAR;
- print " INLCR " if $iflag & &POSIX::INLCR;
- print " INPCK " if $iflag & &POSIX::INPCK;
+ print " INLCR " if $iflag & &POSIX::INLCR;
+ print " INPCK " if $iflag & &POSIX::INPCK;
print " ISTRIP" if $iflag & &POSIX::ISTRIP;
- print " IXOFF " if $iflag & &POSIX::IXOFF;
- print " IXON " if $iflag & &POSIX::IXON;
+ print " IXOFF " if $iflag & &POSIX::IXOFF;
+ print " IXON " if $iflag & &POSIX::IXON;
print " PARMRK" if $iflag & &POSIX::PARMRK;
print "\n";
printf "oflag = %8.8x:", $oflag;
- print " OPOST " if $oflag & &POSIX::OPOST;
+ print " OPOST " if $oflag & &POSIX::OPOST;
print "\n";
printf "cflag = %8.8x:", $cflag;
print " CLOCAL" if $cflag & &POSIX::CLOCAL;
- print " CREAD " if $cflag & &POSIX::CREAD;
+ print " CREAD " if $cflag & &POSIX::CREAD;
print " CS5 " if ($cflag & &POSIX::CSIZE) == &POSIX::CS5;
print " CS6 " if ($cflag & &POSIX::CSIZE) == &POSIX::CS6;
print " CS7 " if ($cflag & &POSIX::CSIZE) == &POSIX::CS7;
print " CS8 " if ($cflag & &POSIX::CSIZE) == &POSIX::CS8;
print " CSTOPB" if $cflag & &POSIX::CSTOPB;
- print " HUPCL " if $cflag & &POSIX::HUPCL;
+ print " HUPCL " if $cflag & &POSIX::HUPCL;
print " PARENB" if $cflag & &POSIX::PARENB;
print " PARODD" if $cflag & &POSIX::PARODD;
@@ -6563,7 +6563,7 @@
&POSIX::B150 | &POSIX::B200 | &POSIX::B300 | &POSIX::B600 |
&POSIX::B1200 | &POSIX::B1800 | &POSIX::B2400 | &POSIX::B4800 |
&POSIX::B9600 | &POSIX::B19200 | &POSIX::B38400;
- print " B0 " if ($cflag & $sbits) == &POSIX::B0;
+ print " B0 " if ($cflag & $sbits) == &POSIX::B0;
print " B50 " if ($cflag & $sbits) == &POSIX::B50;
print " B75 " if ($cflag & $sbits) == &POSIX::B75;
print " B110 " if ($cflag & $sbits) == &POSIX::B110;
@@ -6582,13 +6582,13 @@
print "\n";
printf "lflag = %8.8x:", $lflag;
- print " ECHO " if $lflag & &POSIX::ECHO;
- print " ECHOE " if $lflag & &POSIX::ECHOE;
- print " ECHOK " if $lflag & &POSIX::ECHOK;
+ print " ECHO " if $lflag & &POSIX::ECHO;
+ print " ECHOE " if $lflag & &POSIX::ECHOE;
+ print " ECHOK " if $lflag & &POSIX::ECHOK;
print " ECHONL" if $lflag & &POSIX::ECHONL;
print " ICANON" if $lflag & &POSIX::ICANON;
print " IEXTEN" if $lflag & &POSIX::IEXTEN;
- print " ISIG " if $lflag & &POSIX::ISIG;
+ print " ISIG " if $lflag & &POSIX::ISIG;
print " NOFLSH" if $lflag & &POSIX::NOFLSH;
print " TOSTOP" if $lflag & &POSIX::TOSTOP;
print "\n";
/trunk/tools/bin/rm_dep
1,13 → 1,12
#!/bin/sh |
# $Id: rm_dep 354 2011-01-09 22:38:53Z mueller $ |
# $Id: rm_dep 284 2010-04-26 20:55:13Z mueller $ |
# |
# Revision History: |
# Date Rev Version Comment |
# 2011-01-09 354 1.1.1 add *.dep for cpp depends |
# 2010-04-26 284 1.1 add xargs -r to prevent rm errors on empty lists |
# 2010-04-24 282 1.0 Initial version |
# |
for ftype in dep dep_ghdl dep_isim dep_xst dep_ucf_cpp |
for ftype in dep_ghdl dep_isim dep_xst dep_ucf_cpp |
do |
echo "---------- remove *.$ftype ----------------------------------------" |
find -name "*.$ftype" | xargs --no-run-if-empty rm -v |
/trunk/rtl/sys_gen/tst_rlink/nexys2/sys_conf.vhd
File deleted
/trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tbw.dat
File deleted
/trunk/rtl/sys_gen/tst_rlink/nexys2/tb/sys_tst_rlink_n2.ucf_cpp
File deleted
\ No newline at end of file
trunk/rtl/sys_gen/tst_rlink/nexys2/tb/sys_tst_rlink_n2.ucf_cpp
Property changes :
Deleted: svn:special
## -1 +0,0 ##
-*
\ No newline at end of property
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2_ssim.vbom
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2_ssim.vbom (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2_ssim.vbom (nonexistent)
@@ -1,6 +0,0 @@
-# configure for _*sim case
-# Note: this tb uses sys_tst_rlink_n2.vbom in local directory
-# (not in .. as usual) to allow a tb specific configure !!!
-nexys2_aif = sys_tst_rlink_n2_ssim.vhd
-tb_tst_rlink_n2.vbom
-@top:tb_tst_rlink_n2
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/tb/sys_conf_sim.vhd
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/tb/sys_conf_sim.vhd (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/tb/sys_conf_sim.vhd (nonexistent)
@@ -1,45 +0,0 @@
--- $Id: sys_conf_sim.vhd 351 2010-12-30 21:50:54Z mueller $
---
--- Copyright 2010- by Walter F.J. Mueller
---
--- This program is free software; you may redistribute and/or modify it under
--- the terms of the GNU General Public License as published by the Free
--- Software Foundation, either version 2, or at your option any later version.
---
--- This program is distributed in the hope that it will be useful, but
--- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
--- for complete details.
---
-------------------------------------------------------------------------------
--- Package Name: sys_conf
--- Description: Definitions for sys_tst_rlink_n2 (for simulation)
---
--- Dependencies: -
--- Tool versions: xst 12.1; ghdl 0.29
--- Revision History:
--- Date Rev Version Comment
--- 2010-12-29 351 1.0 Initial version
-------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.slvtypes.all;
-
-package sys_conf is
-
- constant sys_conf_clkfx_divide : positive := 1;
- constant sys_conf_clkfx_multiply : positive := 1;
-
- constant sys_conf_ser2rri_cdinit : integer := 1-1; -- 1 cycle/bit in sim
-
- constant sys_conf_hio_debounce : boolean := false; -- no debouncers
-
- -- derived constants
-
- constant sys_conf_clksys : integer :=
- (50000000/sys_conf_clkfx_divide)*sys_conf_clkfx_multiply;
- constant sys_conf_clksys_mhz : integer := sys_conf_clksys/1000000;
-
-end package sys_conf;
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/tb/.cvsignore
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/tb/.cvsignore (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/tb/.cvsignore (nonexistent)
@@ -1,7 +0,0 @@
-tb_tst_rlink_n2
-tb_tst_rlink_n2_[sft]sim
-rlink_cext_fifo_rx
-rlink_cext_fifo_tx
-rlink_cext_conf
-sys_tst_rlink_n2.ucf
-*.dep_ucf_cpp
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vhd
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vhd (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vhd (nonexistent)
@@ -1,39 +0,0 @@
--- $Id: tb_tst_rlink_n2.vhd 351 2010-12-30 21:50:54Z mueller $
---
--- Copyright 2010- by Walter F.J. Mueller
---
--- This program is free software; you may redistribute and/or modify it under
--- the terms of the GNU General Public License as published by the Free
--- Software Foundation, either version 2, or at your option any later version.
---
--- This program is distributed in the hope that it will be useful, but
--- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
--- for complete details.
---
-------------------------------------------------------------------------------
--- Module Name: tb_tst_rlink
--- Description: Configuration for tb_tst_rlink_s2 for tb_nexys2_fusp
---
--- Dependencies: sys_tst_rlink_n2
---
--- To test: sys_tst_rlink_n2
---
--- Verified:
--- Date Rev Code ghdl ise Target Comment
--- 2010-12-xx xxx - 0.29 12.1 M53d xc3s1200e u:???
---
--- Revision History:
--- Date Rev Version Comment
--- 2010-12-29 351 1.0 Initial version
-------------------------------------------------------------------------------
-
-configuration tb_tst_rlink_n2 of tb_nexys2_fusp is
-
- for sim
- for all : nexys2_fusp_aif
- use entity work.sys_tst_rlink_n2;
- end for;
- end for;
-
-end tb_tst_rlink_n2;
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/tb/Makefile
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/tb/Makefile (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/tb/Makefile (nonexistent)
@@ -1,30 +0,0 @@
-# $Id: Makefile 351 2010-12-30 21:50:54Z mueller $
-#
-# Revision History:
-# Date Rev Version Comment
-# 2010-12-29 351 1.0 Initial version
-#
-EXE_all = tb_tst_rlink_n2
-#
-ISE_PATH = xc3s1200e-fg320-4
-#
-.phony : all all_ssim all_tsim clean
-#
-all : $(EXE_all)
-all_ssim : $(EXE_all:=_ssim)
-all_tsim : $(EXE_all:=_tsim)
-#
-clean : ise_clean ghdl_clean
- rm -f sys_tst_rlink_n2.ucf
-#
-#-----
-#
-include $(RETROBASE)/rtl/vlib/Makefile.ghdl
-include $(RETROBASE)/rtl/vlib/Makefile.xflow
-#
-VBOM_all = $(wildcard *.vbom)
-#
-include $(VBOM_all:.vbom=.dep_xst)
-include $(VBOM_all:.vbom=.dep_ghdl)
-include $(wildcard *.o.dep_ghdl)
-#
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vbom
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vbom (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/tb/tb_tst_rlink_n2.vbom (nonexistent)
@@ -1,7 +0,0 @@
-# configure tb_nexsy2_fusp with sys_tst_rlink_n2 target;
-# use vhdl configure file (tb_tst_rlink_n2.vhd) to allow
-# that all configurations will co-exist in work library
-nexys2_aif : ../sys_tst_rlink_n2.vbom
-sys_conf = sys_conf_sim.vhd
-../../../../bplib/nexys2/tb/tb_nexys2_fusp.vbom
-tb_tst_rlink_n2.vhd
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/tb
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/tb (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/tb (nonexistent)
trunk/rtl/sys_gen/tst_rlink/nexys2/tb
Property changes :
Deleted: svn:ignore
## -1,39 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-tb_tst_rlink_n2
-tb_tst_rlink_n2_[sft]sim
-rlink_cext_fifo_rx
-rlink_cext_fifo_tx
-rlink_cext_conf
-sys_tst_rlink_n2.ucf
-*.dep_ucf_cpp
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/sys_tst_rlink_n2.vhd
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/sys_tst_rlink_n2.vhd (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/sys_tst_rlink_n2.vhd (nonexistent)
@@ -1,181 +0,0 @@
--- $Id: sys_tst_rlink_n2.vhd 375 2011-04-02 07:56:47Z mueller $
---
--- Copyright 2010-2011 by Walter F.J. Mueller
---
--- This program is free software; you may redistribute and/or modify it under
--- the terms of the GNU General Public License as published by the Free
--- Software Foundation, either version 2, or at your option any later version.
---
--- This program is distributed in the hope that it will be useful, but
--- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
--- for complete details.
---
-------------------------------------------------------------------------------
--- Module Name: sys_tst_rlink_n2 - syn
--- Description: rlink tester design for nexys2
---
--- Dependencies: vlib/xlib/dcm_sp_sfs
--- vlib/genlib/clkdivce
--- bplib/s3board/s3_rs232_iob_int_ext
--- vlib/nexys2/n2_cram_dummy
---
--- Test bench: tb/tb_tst_rlink_n2
---
--- Target Devices: generic
--- Tool versions: xst 12.1; ghdl 0.29
---
--- Synthesized (xst):
--- Date Rev ise Target flop lutl lutm slic t peri
--- 2011-04-02 375 12.1 M53d xc3s1200e-4 688 1572 68 994 t 13.8
--- 2010-12-29 351 12.1 M53d xc3s1200e-4 604 1298 68 851 t 14.7
---
--- Revision History:
--- Date Rev Version Comment
--- 2010-12-29 351 1.0 Initial version
-------------------------------------------------------------------------------
---
-
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_arith.all;
-
-use work.slvtypes.all;
-use work.xlib.all;
-use work.genlib.all;
-use work.s3boardlib.all;
-use work.nexys2lib.all;
-use work.sys_conf.all;
-
--- ----------------------------------------------------------------------------
-
-entity sys_tst_rlink_n2 is -- top level
- -- implements nexys2_fusp_aif
- port (
- I_CLK50 : in slbit; -- 50 MHz clock
- O_CLKSYS : out slbit; -- DCM derived system clock
- I_RXD : in slbit; -- receive data (board view)
- O_TXD : out slbit; -- transmit data (board view)
- I_SWI : in slv8; -- s3 switches
- I_BTN : in slv4; -- s3 buttons
- O_LED : out slv8; -- s3 leds
- O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low)
- O_SEG_N : out slv8; -- 7 segment disp: segments (act.low)
- O_MEM_CE_N : out slbit; -- cram: chip enable (act.low)
- O_MEM_BE_N : out slv2; -- cram: byte enables (act.low)
- O_MEM_WE_N : out slbit; -- cram: write enable (act.low)
- O_MEM_OE_N : out slbit; -- cram: output enable (act.low)
- O_MEM_ADV_N : out slbit; -- cram: address valid (act.low)
- O_MEM_CLK : out slbit; -- cram: clock
- O_MEM_CRE : out slbit; -- cram: command register enable
- I_MEM_WAIT : in slbit; -- cram: mem wait
- O_FLA_CE_N : out slbit; -- flash ce.. (act.low)
- O_MEM_ADDR : out slv23; -- cram: address lines
- IO_MEM_DATA : inout slv16; -- cram: data lines
- O_FUSP_RTS_N : out slbit; -- fusp: rs232 rts_n
- I_FUSP_CTS_N : in slbit; -- fusp: rs232 cts_n
- I_FUSP_RXD : in slbit; -- fusp: rs232 rx
- O_FUSP_TXD : out slbit -- fusp: rs232 tx
- );
-end sys_tst_rlink_n2;
-
-architecture syn of sys_tst_rlink_n2 is
-
- signal CLK : slbit := '0';
-
- signal RXD : slbit := '1';
- signal TXD : slbit := '0';
- signal RTS_N : slbit := '0';
- signal CTS_N : slbit := '0';
-
- signal SWI : slv8 := (others=>'0');
- signal BTN : slv4 := (others=>'0');
-
- signal RESET : slbit := '0';
- signal CE_USEC : slbit := '0';
- signal CE_MSEC : slbit := '0';
-
-begin
-
- assert (sys_conf_clksys mod 1000000) = 0
- report "assert sys_conf_clksys on MHz grid"
- severity failure;
-
- DCM : dcm_sp_sfs
- generic map (
- CLKFX_DIVIDE => sys_conf_clkfx_divide,
- CLKFX_MULTIPLY => sys_conf_clkfx_multiply,
- CLKIN_PERIOD => 20.0)
- port map (
- CLKIN => I_CLK50,
- CLKFX => CLK,
- LOCKED => open
- );
-
- O_CLKSYS <= CLK;
-
- CLKDIV : clkdivce
- generic map (
- CDUWIDTH => 7,
- USECDIV => sys_conf_clksys_mhz,
- MSECDIV => 1000)
- port map (
- CLK => CLK,
- CE_USEC => CE_USEC,
- CE_MSEC => CE_MSEC
- );
-
- IOB_RS232 : s3_rs232_iob_int_ext
- port map (
- CLK => CLK,
- SEL => SWI(0),
- RXD => RXD,
- TXD => TXD,
- CTS_N => CTS_N,
- RTS_N => RTS_N,
- I_RXD0 => I_RXD,
- O_TXD0 => O_TXD,
- I_RXD1 => I_FUSP_RXD,
- O_TXD1 => O_FUSP_TXD,
- I_CTS1_N => I_FUSP_CTS_N,
- O_RTS1_N => O_FUSP_RTS_N
- );
-
- RLTEST : entity work.tst_rlink
- generic map (
- DEBOUNCE => sys_conf_hio_debounce,
- CDINIT => sys_conf_ser2rri_cdinit)
- port map (
- CLK => CLK,
- RESET => RESET,
- CE_USEC => CE_USEC,
- CE_MSEC => CE_MSEC,
- RXD => RXD,
- TXD => TXD,
- CTS_N => CTS_N,
- RTS_N => RTS_N,
- SWI => SWI,
- BTN => BTN,
- I_SWI => I_SWI,
- I_BTN => I_BTN,
- O_LED => O_LED,
- O_ANO_N => O_ANO_N,
- O_SEG_N => O_SEG_N
- );
-
- SRAM_PROT : n2_cram_dummy -- connect CRAM to protection dummy
- port map (
- O_MEM_CE_N => O_MEM_CE_N,
- O_MEM_BE_N => O_MEM_BE_N,
- O_MEM_WE_N => O_MEM_WE_N,
- O_MEM_OE_N => O_MEM_OE_N,
- O_MEM_ADV_N => O_MEM_ADV_N,
- O_MEM_CLK => O_MEM_CLK,
- O_MEM_CRE => O_MEM_CRE,
- I_MEM_WAIT => I_MEM_WAIT,
- O_FLA_CE_N => O_FLA_CE_N,
- O_MEM_ADDR => O_MEM_ADDR,
- IO_MEM_DATA => IO_MEM_DATA
- );
-
-end syn;
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/sys_tst_rlink_n2.vbom
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/sys_tst_rlink_n2.vbom (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/sys_tst_rlink_n2.vbom (nonexistent)
@@ -1,17 +0,0 @@
-# libs
-../../../vlib/slvtypes.vhd
-../../../vlib/xlib/xlib.vhd
-../../../vlib/genlib/genlib.vhd
-../../../bplib/s3board/s3boardlib.vbom
-../../../bplib/nexys2/nexys2lib.vhd
-sys_conf : sys_conf.vhd
-# components
-[xst,isim]../../../vlib/xlib/dcm_sp_sfs_unisim.vbom
-[ghdl]../../../vlib/xlib/dcm_sp_sfs_gsim.vbom
-../../../vlib/genlib/clkdivce.vbom
-../../../bplib/s3board/s3_rs232_iob_int_ext.vbom
-../tst_rlink.vbom
-../../../bplib/nexys2/n2_cram_dummy.vbom
-# design
-sys_tst_rlink_n2.vhd
-@ucf_cpp: sys_tst_rlink_n2.ucf
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/.cvsignore
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/.cvsignore (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/.cvsignore (nonexistent)
@@ -1,3 +0,0 @@
-_impactbatch.log
-sys_tst_rlink_n2.ucf
-*.dep_ucf_cpp
Index: trunk/rtl/sys_gen/tst_rlink/nexys2/Makefile
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2/Makefile (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2/Makefile (nonexistent)
@@ -1,32 +0,0 @@
-# $Id: Makefile 351 2010-12-30 21:50:54Z mueller $
-#
-# Revision History:
-# Date Rev Version Comment
-# 2010-12-29 351 1.0 Initial version
-#
-VBOM_all = $(wildcard *.vbom)
-BIT_all = $(VBOM_all:.vbom=.bit)
-#
-ISE_BOARD = nexys2
-ISE_PATH = xc3s1200e-fg320-4
-#
-.phony : all clean
-#
-all : $(BIT_all)
-#
-clean : ise_clean
- rm -f sys_tst_rlink_n2.ucf
-#
-sys_tst_rlink_n2.mcs : sys_tst_rlink_n2.bit
- promgen -w -x xcf04s -p mcs -u 0 sys_tst_rlink_n2
- mv sys_tst_rlink_n2.prm sys_tst_rlink_n2_prm.log
- mv sys_tst_rlink_n2.cfi sys_tst_rlink_n2_cfi.log
-#
-#----
-#
-include $(RETROBASE)/rtl/vlib/Makefile.xflow
-include $(RETROBASE)/rtl/vlib/Makefile.ghdl
-#
-include $(VBOM_all:.vbom=.dep_xst)
-include $(VBOM_all:.vbom=.dep_ghdl)
-#
Index: trunk/rtl/sys_gen/tst_rlink/nexys2
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/nexys2 (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/nexys2 (nonexistent)
trunk/rtl/sys_gen/tst_rlink/nexys2
Property changes :
Deleted: svn:ignore
## -1,35 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
-_impactbatch.log
-sys_tst_rlink_n2.ucf
-*.dep_ucf_cpp
Index: trunk/rtl/sys_gen/tst_rlink/tst_rlink.vhd
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/tst_rlink.vhd (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/tst_rlink.vhd (nonexistent)
@@ -1,293 +0,0 @@
--- $Id: tst_rlink.vhd 375 2011-04-02 07:56:47Z mueller $
---
--- Copyright 2010- by Walter F.J. Mueller
---
--- This program is free software; you may redistribute and/or modify it under
--- the terms of the GNU General Public License as published by the Free
--- Software Foundation, either version 2, or at your option any later version.
---
--- This program is distributed in the hope that it will be useful, but
--- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
--- for complete details.
---
-------------------------------------------------------------------------------
--- Module Name: tst_rlink - syn
--- Description: tester for rlink
---
--- Dependencies: rlink/rlink_base_serport
--- rbus/rbd_tester
--- rbus/rbd_bram
--- rbus/rbd_rbmon
--- rbus/rbd_eyemon
--- rbus/rbd_timer
--- s3board/s3_humanio_rbus
--- rbus/rb_sres_or_4
---
--- Test bench: nexys2/tb/tb_tst_rlink_n2
---
--- Target Devices: generic
--- Tool versions: xst 12.1; ghdl 0.29
---
--- Revision History:
--- Date Rev Version Comment
--- 2011-04-02 375 1.0.1 add rbd_eyemon and two timer
--- 2010-12-29 351 1.0 Initial version (inspired by sys_tst_rri)
-------------------------------------------------------------------------------
--- Usage of Nexys 2 Switches, Buttons, LEDs:
---
--- SWI(0): 0 -> main board RS232 port - implemented in sys_tst_rlink_*
--- 1 -> Pmod B/top RS232 port /
--- (1:7): no function (only connected to s3_humanio_rbus)
---
--- LED(0): timer 0 busy
--- LED(1): timer 1 busy
--- LED(2:7): no function (only connected to s3_humanio_rbus)
---
--- DSP: RL_SER_MONI.clkdiv (from auto bauder)
--- DP(0): RXSD (inverted to signal activity)
--- DP(1): RTS_N (shows rx back preasure)
--- DP(2): TXSD (inverted to signal activity)
--- DP(3): CTS_N (shows tx back preasure)
-
-library ieee;
-use ieee.std_logic_1164.all;
-use ieee.std_logic_arith.all;
-
-use work.slvtypes.all;
-use work.rblib.all;
-use work.rbdlib.all;
-use work.rlinklib.all;
-use work.s3boardlib.all;
-
--- ----------------------------------------------------------------------------
-
-entity tst_rlink is -- tester for rlink
- generic (
- DEBOUNCE : boolean := true;
- CDINIT : natural := 15);
- port (
- CLK : in slbit; -- clock
- RESET : in slbit; -- reset
- CE_USEC : in slbit; -- usec pulse
- CE_MSEC : in slbit; -- msec pulse
- RXD : in slbit; -- receive data (board view)
- TXD : out slbit; -- transmit data (board view)
- CTS_N : in slbit; -- rs232 cts_n
- RTS_N : out slbit; -- rs232 rts_n
- SWI : out slv8; -- switches (for top cntl)
- BTN : out slv4; -- buttons (for top cntl)
- I_SWI : in slv8; -- s3 switches
- I_BTN : in slv4; -- s3 buttons
- O_LED : out slv8; -- s3 leds
- O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low)
- O_SEG_N : out slv8 -- 7 segment disp: segments (act.low)
- );
-end tst_rlink;
-
-architecture syn of tst_rlink is
-
- signal RTS_N_L : slbit := '0';
- signal DSP_DAT : slv16 := (others=>'0');
- signal DSP_DP : slv4 := (others=>'0');
-
- signal SWI_L : slv8 := (others=>'0');
- signal BTN_L : slv4 := (others=>'0');
- signal LED : slv8 := (others=>'0');
-
- signal RB_MREQ : rb_mreq_type := rb_mreq_init;
- signal RB_SRES : rb_sres_type := rb_sres_init;
- signal RB_SRES_TEST : rb_sres_type := rb_sres_init;
- signal RB_SRES_BRAM : rb_sres_type := rb_sres_init;
- signal RB_SRES_MON : rb_sres_type := rb_sres_init;
- signal RB_SRES_EMON : rb_sres_type := rb_sres_init;
- signal RB_SRES_TIM0 : rb_sres_type := rb_sres_init;
- signal RB_SRES_TIM1 : rb_sres_type := rb_sres_init;
- signal RB_SRES_HIO : rb_sres_type := rb_sres_init;
- signal RB_SRES_SUM1 : rb_sres_type := rb_sres_init;
-
- signal RB_LAM : slv16 := (others=>'0');
- signal RB_STAT : slv3 := (others=>'0');
-
- signal RB_LAM_TEST : slv16 := (others=>'0');
-
- signal TIM0_DONE : slbit := '0';
- signal TIM0_BUSY : slbit := '0';
- signal TIM1_DONE : slbit := '0';
- signal TIM1_BUSY : slbit := '0';
-
- signal RL_MONI : rl_moni_type := rl_moni_init;
- signal RL_SER_MONI : rl_ser_moni_type := rl_ser_moni_init;
-
- constant rbaddr_mon : slv8 := "11111100"; -- 111111xx
- constant rbaddr_emon : slv8 := "11111000"; -- 111110xx
- constant rbaddr_bram : slv8 := "11110100"; -- 111101xx
- constant rbaddr_test : slv8 := "11110000"; -- 111100xx
- constant rbaddr_tim1 : slv8 := "11100001"; -- 11100001
- constant rbaddr_tim0 : slv8 := "11100000"; -- 11100000
- constant rbaddr_hio : slv8 := "11000000"; -- 110000xx
-
-begin
-
- RLINK : rlink_base_serport
- generic map (
- ATOWIDTH => 6, -- 64 cycles access timeout
- ITOWIDTH => 6, -- 64 periods max idle timeout
- CPREF => c_rlink_cpref,
- IFAWIDTH => 5,
- OFAWIDTH => 0,
- ENAPIN_RLMON => sbcntl_sbf_rlmon,
- ENAPIN_RBMON => sbcntl_sbf_rbmon,
- RB_ADDR => conv_std_logic_vector(2#11111110#,8),
- CDWIDTH => 13,
- CDINIT => CDINIT)
- port map (
- CLK => CLK,
- CE_USEC => CE_USEC,
- CE_MSEC => CE_MSEC,
- CE_INT => CE_MSEC,
- RESET => RESET,
- RXSD => RXD,
- TXSD => TXD,
- CTS_N => CTS_N,
- RTS_N => RTS_N_L,
- RB_MREQ => RB_MREQ,
- RB_SRES => RB_SRES,
- RB_LAM => RB_LAM,
- RB_STAT => RB_STAT,
- RL_MONI => RL_MONI,
- RL_SER_MONI => RL_SER_MONI
- );
-
- RB_LAM(15 downto 2) <= RB_LAM_TEST(15 downto 2);
- RB_LAM(1) <= TIM1_DONE;
- RB_LAM(0) <= TIM0_DONE;
-
- TEST : rbd_tester
- generic map (
- RB_ADDR => rbaddr_test)
- port map (
- CLK => CLK,
- RESET => RESET,
- RB_MREQ => RB_MREQ,
- RB_SRES => RB_SRES_TEST,
- RB_LAM => RB_LAM_TEST,
- RB_STAT => RB_STAT
- );
-
- BRAM : rbd_bram
- generic map (
- RB_ADDR => rbaddr_bram)
- port map (
- CLK => CLK,
- RESET => RESET,
- RB_MREQ => RB_MREQ,
- RB_SRES => RB_SRES_BRAM
- );
-
- MON : rbd_rbmon
- generic map (
- RB_ADDR => rbaddr_mon,
- AWIDTH => 9)
- port map (
- CLK => CLK,
- RESET => RESET,
- RB_MREQ => RB_MREQ,
- RB_SRES => RB_SRES_MON,
- RB_SRES_SUM => RB_SRES
- );
-
- EMON : rbd_eyemon
- generic map (
- RB_ADDR => rbaddr_emon,
- RDIV => conv_std_logic_vector(0,8))
- port map (
- CLK => CLK,
- RESET => RESET,
- RB_MREQ => RB_MREQ,
- RB_SRES => RB_SRES_EMON,
- RXSD => RXD,
- RXACT => RL_SER_MONI.rxact
- );
-
- TIM0 : rbd_timer
- generic map (
- RB_ADDR => rbaddr_tim0)
- port map (
- CLK => CLK,
- CE_USEC => CE_USEC,
- RESET => RESET,
- RB_MREQ => RB_MREQ,
- RB_SRES => RB_SRES_TIM0,
- DONE => TIM0_DONE,
- BUSY => TIM0_BUSY
- );
-
- TIM1 : rbd_timer
- generic map (
- RB_ADDR => rbaddr_tim1)
- port map (
- CLK => CLK,
- CE_USEC => CE_USEC,
- RESET => RESET,
- RB_MREQ => RB_MREQ,
- RB_SRES => RB_SRES_TIM1,
- DONE => TIM1_DONE,
- BUSY => TIM1_BUSY
- );
-
- HIO : s3_humanio_rbus
- generic map (
- DEBOUNCE => DEBOUNCE,
- RB_ADDR => rbaddr_hio)
- port map (
- CLK => CLK,
- RESET => RESET,
- CE_MSEC => CE_MSEC,
- RB_MREQ => RB_MREQ,
- RB_SRES => RB_SRES_HIO,
- SWI => SWI_L,
- BTN => BTN_L,
- LED => LED,
- DSP_DAT => DSP_DAT,
- DSP_DP => DSP_DP,
- I_SWI => I_SWI,
- I_BTN => I_BTN,
- O_LED => O_LED,
- O_ANO_N => O_ANO_N,
- O_SEG_N => O_SEG_N
- );
-
- RB_SRES_OR1 : rb_sres_or_4
- port map (
- RB_SRES_1 => RB_SRES_TEST,
- RB_SRES_2 => RB_SRES_BRAM,
- RB_SRES_3 => RB_SRES_MON,
- RB_SRES_4 => RB_SRES_HIO,
- RB_SRES_OR => RB_SRES_SUM1
- );
-
- RB_SRES_OR : rb_sres_or_4
- port map (
- RB_SRES_1 => RB_SRES_SUM1,
- RB_SRES_2 => RB_SRES_EMON,
- RB_SRES_3 => RB_SRES_TIM0,
- RB_SRES_4 => RB_SRES_TIM1,
- RB_SRES_OR => RB_SRES
- );
-
- DSP_DAT <= RL_SER_MONI.clkdiv;
- DSP_DP(0) <= RL_SER_MONI.rxact;
- DSP_DP(1) <= RTS_N_L;
- DSP_DP(2) <= RL_SER_MONI.txact;
- DSP_DP(3) <= CTS_N;
-
- LED(0) <= TIM0_BUSY;
- LED(1) <= TIM1_BUSY;
- LED(7) <= RL_SER_MONI.abact;
-
- RTS_N <= RTS_N_L;
- SWI <= SWI_L;
- BTN <= BTN_L;
-
-end syn;
Index: trunk/rtl/sys_gen/tst_rlink/tst_rlink.vbom
===================================================================
--- trunk/rtl/sys_gen/tst_rlink/tst_rlink.vbom (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink/tst_rlink.vbom (nonexistent)
@@ -1,17 +0,0 @@
-# libs
-../../vlib/slvtypes.vhd
-../../vlib/rbus/rblib.vhd
-../../vlib/rbus/rbdlib.vhd
-../../vlib/rlink/rlinklib.vbom
-../../bplib/s3board/s3boardlib.vhd
-# components
-../../vlib/rlink/rlink_base_serport.vbom
-../../vlib/rbus/rbd_tester.vbom
-../../vlib/rbus/rbd_bram.vbom
-../../vlib/rbus/rbd_rbmon.vbom
-../../vlib/rbus/rbd_eyemon.vbom
-../../vlib/rbus/rbd_timer.vbom
-../../bplib/s3board/s3_humanio_rbus.vbom
-../../vlib/rbus/rb_sres_or_4.vbom
-# design
-tst_rlink.vhd
Index: trunk/rtl/sys_gen/tst_rlink
===================================================================
--- trunk/rtl/sys_gen/tst_rlink (revision 10)
+++ trunk/rtl/sys_gen/tst_rlink (nonexistent)
trunk/rtl/sys_gen/tst_rlink
Property changes :
Deleted: svn:ignore
## -1,32 +0,0 ##
-*.dep_ghdl
-*.dep_isim
-*.dep_xst
-work-obj93.cf
-*.vcd
-*.ghw
-*.sav
-*.tmp
-*.exe
-ise
-xflow.his
-*.ngc
-*.ncd
-*.pcf
-*.bit
-*.msk
-isim
-isim.log
-isim.wdb
-fuse.log
-*_[sft]sim.vhd
-*_tsim.sdf
-*_xst.log
-*_tra.log
-*_twr.log
-*_map.log
-*_par.log
-*_pad.log
-*_bgn.log
-*_svn.log
-*_sum.log
-*_[dsft]sim.log
Index: trunk/rtl/sys_gen/w11a/tb/.cvsignore
===================================================================
--- trunk/rtl/sys_gen/w11a/tb/.cvsignore (revision 10)
+++ trunk/rtl/sys_gen/w11a/tb/.cvsignore (revision 9)
@@ -1,6 +1,6 @@
-rlink_cext_fifo_rx
-rlink_cext_fifo_tx
-rlink_cext_conf
+tb_rriext_fifo_rx
+tb_rriext_fifo_tx
+tb_rriext_conf
to_ptp
to_lda
tmu_ofile
Index: trunk/rtl/sys_gen/w11a/tb
===================================================================
--- trunk/rtl/sys_gen/w11a/tb (revision 10)
+++ trunk/rtl/sys_gen/w11a/tb (revision 9)
trunk/rtl/sys_gen/w11a/tb
Property changes :
Modified: svn:ignore
## -30,9 +30,9 ##
*_svn.log
*_sum.log
*_[dsft]sim.log
-rlink_cext_fifo_rx
-rlink_cext_fifo_tx
-rlink_cext_conf
+tb_rriext_fifo_rx
+tb_rriext_fifo_tx
+tb_rriext_conf
to_ptp
to_lda
tmu_ofile
Index: trunk/rtl/bplib/nexys2/tb/nexys2_fusp_dummy.vbom
===================================================================
--- trunk/rtl/bplib/nexys2/tb/nexys2_fusp_dummy.vbom (revision 10)
+++ trunk/rtl/bplib/nexys2/tb/nexys2_fusp_dummy.vbom (nonexistent)
@@ -1,7 +0,0 @@
-# libs
-../../../vlib/slvtypes.vhd
-../nexys2lib.vhd
-# components
-../n2_cram_dummy.vbom
-# design
-nexys2_fusp_dummy.vhd
Index: trunk/rtl/bplib/nexys2/tb/nexys2_fusp_dummy.vhd
===================================================================
--- trunk/rtl/bplib/nexys2/tb/nexys2_fusp_dummy.vhd (revision 10)
+++ trunk/rtl/bplib/nexys2/tb/nexys2_fusp_dummy.vhd (nonexistent)
@@ -1,90 +0,0 @@
--- $Id: nexys2_fusp_dummy.vhd 338 2010-11-13 22:19:25Z mueller $
---
--- Copyright 2010- by Walter F.J. Mueller
---
--- This program is free software; you may redistribute and/or modify it under
--- the terms of the GNU General Public License as published by the Free
--- Software Foundation, either version 2, or at your option any later version.
---
--- This program is distributed in the hope that it will be useful, but
--- WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
--- for complete details.
---
-------------------------------------------------------------------------------
--- Module Name: nexys2_dummy - syn
--- Description: nexys2 minimal target (base; serport loopback)
---
--- Dependencies: -
--- To test: tb_nexys2
--- Target Devices: generic
--- Tool versions: xst 11.4, 12.1; ghdl 0.26-0.29
---
--- Revision History:
--- Date Rev Version Comment
--- 2010-11-13 338 1.0.2 add O_CLKSYS (for DCM derived system clock)
--- 2010-11-06 336 1.0.1 rename input pin CLK -> I_CLK50
--- 2010-05-28 295 1.0 Initial version (derived from s3board_fusp_dummy)
-------------------------------------------------------------------------------
-
-library ieee;
-use ieee.std_logic_1164.all;
-
-use work.slvtypes.all;
-use work.nexys2lib.all;
-
-entity nexys2_fusp_dummy is -- NEXYS 2 dummy (base+fusp; loopback)
- -- implements nexys2_fusp_aif
- port (
- I_CLK50 : in slbit; -- 50 MHz board clock
- O_CLKSYS : out slbit; -- DCM derived system clock
- I_RXD : in slbit; -- receive data (board view)
- O_TXD : out slbit; -- transmit data (board view)
- I_SWI : in slv8; -- s3 switches
- I_BTN : in slv4; -- s3 buttons
- O_LED : out slv8; -- s3 leds
- O_ANO_N : out slv4; -- 7 segment disp: anodes (act.low)
- O_SEG_N : out slv8; -- 7 segment disp: segments (act.low)
- O_MEM_CE_N : out slbit; -- cram: chip enable (act.low)
- O_MEM_BE_N : out slv2; -- cram: byte enables (act.low)
- O_MEM_WE_N : out slbit; -- cram: write enable (act.low)
- O_MEM_OE_N : out slbit; -- cram: output enable (act.low)
- O_MEM_ADV_N : out slbit; -- cram: address valid (act.low)
- O_MEM_CLK : out slbit; -- cram: clock
- O_MEM_CRE : out slbit; -- cram: command register enable
- I_MEM_WAIT : in slbit; -- cram: mem wait
- O_FLA_CE_N : out slbit; -- flash ce.. (act.low)
- O_MEM_ADDR : out slv23; -- cram: address lines
- IO_MEM_DATA : inout slv16; -- cram: data lines
- O_FUSP_RTS_N : out slbit; -- fusp: rs232 rts_n
- I_FUSP_CTS_N : in slbit; -- fusp: rs232 cts_n
- I_FUSP_RXD : in slbit; -- fusp: rs232 rx
- O_FUSP_TXD : out slbit -- fusp: rs232 tx
- );
-end nexys2_fusp_dummy;
-
-architecture syn of nexys2_fusp_dummy is
-
-begin
-
- O_CLKSYS <= I_CLK50; -- use 50 MHz clock
- O_TXD <= I_RXD; -- loop back
- O_FUSP_TXD <= I_FUSP_RXD;
- O_FUSP_RTS_N <= I_FUSP_CTS_N;
-
- CRAM : n2_cram_dummy -- connect CRAM to protection dummy
- port map (
- O_MEM_CE_N => O_MEM_CE_N,
- O_MEM_BE_N => O_MEM_BE_N,
- O_MEM_WE_N => O_MEM_WE_N,
- O_MEM_OE_N => O_MEM_OE_N,
- O_MEM_ADV_N => O_MEM_ADV_N,
- O_MEM_CLK => O_MEM_CLK,
- O_MEM_CRE => O_MEM_CRE,
- I_MEM_WAIT => I_MEM_WAIT,
- O_FLA_CE_N => O_FLA_CE_N,
- O_MEM_ADDR => O_MEM_ADDR,
- IO_MEM_DATA => IO_MEM_DATA
- );
-
-end syn;
Index: trunk/rtl/bplib/s3board/tb/tbw.dat
===================================================================
--- trunk/rtl/bplib/s3board/tb/tbw.dat (revision 10)
+++ trunk/rtl/bplib/s3board/tb/tbw.dat (revision 9)
@@ -1,6 +1,6 @@
-# $Id: tbw.dat 353 2011-01-02 21:02:48Z mueller $
+# $Id: tbw.dat 290 2010-05-16 08:44:36Z mueller $
#
[tb_s3board_dummy]
-rlink_cext_fifo_rx =
-rlink_cext_fifo_tx =
-rlink_cext_conf =
+tb_rriext_fifo_rx =
+tb_rriext_fifo_tx =
+tb_rriext_conf =
Index: trunk/rtl/bplib/s3board/tb/.cvsignore
===================================================================
--- trunk/rtl/bplib/s3board/tb/.cvsignore (revision 10)
+++ trunk/rtl/bplib/s3board/tb/.cvsignore (revision 9)
@@ -3,9 +3,9 @@
tb_s3board_dummy_ISim
tb_s3board_dummy_ISim_[sft]sim
tb_s3board_fusp_dummy
-rlink_cext_fifo_rx
-rlink_cext_fifo_tx
-rlink_cext_conf
+tb_rriext_fifo_rx
+tb_rriext_fifo_tx
+tb_rriext_conf
tb_s3_sram_memctl
tb_s3_sram_memctl_[sft]sim
tb_s3_sram_memctl_stim
Index: trunk/rtl/bplib/s3board/tb
===================================================================
--- trunk/rtl/bplib/s3board/tb (revision 10)
+++ trunk/rtl/bplib/s3board/tb (revision 9)
trunk/rtl/bplib/s3board/tb
Property changes :
Modified: svn:ignore
## -35,9 +35,9 ##
tb_s3board_dummy_ISim
tb_s3board_dummy_ISim_[sft]sim
tb_s3board_fusp_dummy
-rlink_cext_fifo_rx
-rlink_cext_fifo_tx
-rlink_cext_conf
+tb_rriext_fifo_rx
+tb_rriext_fifo_tx
+tb_rriext_conf
tb_s3_sram_memctl
tb_s3_sram_memctl_[sft]sim
tb_s3_sram_memctl_stim
Index: trunk/rtl/vlib/rlink/tb/rlink_cext.c
===================================================================
--- trunk/rtl/vlib/rlink/tb/rlink_cext.c (revision 10)
+++ trunk/rtl/vlib/rlink/tb/rlink_cext.c (revision 9)
@@ -1,4 +1,4 @@
-/* $Id: rlink_cext.c 366 2011-03-05 14:55:15Z mueller $
+/* $Id: rlink_cext.c 351 2010-12-30 21:50:54Z mueller $
*
* Copyright 2007-2010 by Walter F.J. Mueller
*
@@ -13,7 +13,6 @@
*
* Revision History:
* Date Rev Vers Comment
- * 2011-03-05 366 1.3.1 add RLINK_CEXT_TRACE=2 trace level
* 2010-12-29 351 1.3 rename cext_rriext -> rlink_cext; rename functions
* cext_* -> rlink_cext_* and fifo file names
* tb_cext_* -> rlink_cext_*
@@ -79,12 +78,6 @@
char buf[1];
ssize_t nbyte;
nbyte = read(fd_rx, buf, 1);
- if (io_trace > 1) {
- printf("rlink_cext-I: read rc=%d", nbyte);
- if (nbyte < 0) printf(" errno=%d %s", errno, strerror(errno));
- printf("\n");
- }
-
if (nbyte < 0) {
qr_err = errno;
} else if (nbyte == 0) {
@@ -135,15 +128,8 @@
io_trace = 0;
env_val = getenv("RLINK_CEXT_TRACE");
- if (env_val) {
- printf("rlink_cext-I: seen RLINK_CEXT_TRACE=%s\n", env_val);
- if (strcmp(env_val, "1") == 0) {
- printf("rlink_cext-I: set trace level to 1\n");
- io_trace = 1;
- } else if (strcmp(env_val, "2") == 0) {
- printf("rlink_cext-I: set trace level to 2\n");
- io_trace = 2;
- }
+ if (env_val && strcmp(env_val, "1") == 0) {
+ io_trace = 1;
}
}
@@ -222,11 +208,6 @@
buf[0] = (unsigned char) dat;
nbyte = write(fd_tx, buf, 1);
- if (io_trace > 1) {
- printf("rlink_cext-I: write rc=%d", nbyte);
- if (nbyte < 0) printf(" errno=%d %s", errno, strerror(errno));
- printf("\n");
- }
if (nbyte < 0) {
perror("rlink_cext-E: write error on rlink_cext_fifo_tx");
/trunk/rtl/vlib/rbus/rbd_bram.vbom
File deleted
/trunk/rtl/vlib/rbus/rb_sres_or_4.vhd
File deleted
/trunk/rtl/vlib/rbus/rbd_eyemon.vhd
File deleted
/trunk/rtl/vlib/rbus/rbd_rbmon.vbom
File deleted
/trunk/rtl/vlib/rbus/rb_sres_or_4.vbom
File deleted
/trunk/rtl/vlib/rbus/rbd_timer.vbom
File deleted
/trunk/rtl/vlib/rbus/rbd_bram.vhd
File deleted
/trunk/rtl/vlib/rbus/rbd_rbmon.vhd
File deleted
/trunk/rtl/vlib/rbus/rbd_eyemon.vbom
File deleted
/trunk/rtl/vlib/rbus/rbd_timer.vhd
File deleted
/trunk/rtl/vlib/rbus/rbd_tester.vhd
1,4 → 1,4
-- $Id: rbd_tester.vhd 369 2011-03-13 22:39:26Z mueller $ |
-- $Id: rbd_tester.vhd 352 2011-01-02 13:01:37Z mueller $ |
-- |
-- Copyright 2010- by Walter F.J. Mueller <W.F.J.Mueller@gsi.de> |
-- |
42,6 → 42,7
-- 15 nofifo r/w/- a 1 disables fifo, to test delayed aborts |
-- 14:12 stat r/w/- echo'ed on RB_STAT |
-- 11:00 nbusy r/w/- busy cycles (for data and fifo access) |
-- 00 go r/w/- enables monitor |
-- bbbbbb01 15:00 data r/w/- Data register (just w/r reg, no function) |
-- bbbbbb10 15:00 fifo r/w/- Fifo interface register |
-- bbbbbb11 attn r/w/- Attn/Length register |
/trunk/rtl/vlib/memlib/ram_1swsr_wfirst_gen.vbom
File deleted
/trunk/rtl/vlib/memlib/ram_2swsr_wfirst_gen.vbom
File deleted
/trunk/rtl/vlib/memlib/ram_1swsr_wfirst_gen.vhd
File deleted
/trunk/rtl/vlib/memlib/ram_2swsr_wfirst_gen.vhd
File deleted
/trunk/doc/README.txt
1,4 → 1,4
# $Id: README.txt 353 2011-01-02 21:02:48Z mueller $ |
# $Id: README.txt 351 2010-12-30 21:50:54Z mueller $ |
|
Release notes for w11a |
|