From cebfbfa661b4e53cabf23bbb32c227e0b1962c77 Mon Sep 17 00:00:00 2001 From: oharboe Date: Sat, 12 Jul 2008 07:50:17 +0000 Subject: [PATCH] testing/*.tcl sample & test code git-svn-id: svn://svn.berlios.de/openocd/trunk@799 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/startup.tcl | 5 ++++ testing/tcl_test.tcl | 65 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 testing/tcl_test.tcl diff --git a/src/startup.tcl b/src/startup.tcl index 294dee28d..dc3a08957 100644 --- a/src/startup.tcl +++ b/src/startup.tcl @@ -19,6 +19,11 @@ proc add_help_text {cmd cmd_help} { lappend ocd_helptext [list $cmd $cmd_help] } +proc get_help_text {} { + global ocd_helptext + return $ocd_helptext +} + # Production command # FIX!!! need to figure out how to feed back relevant output # from e.g. "flash banks" command... diff --git a/testing/tcl_test.tcl b/testing/tcl_test.tcl new file mode 100644 index 000000000..683b4fe57 --- /dev/null +++ b/testing/tcl_test.tcl @@ -0,0 +1,65 @@ +if { $argc != 1 } { + puts "Usage: test_tcl.tcl " + exit 1 +} + +puts $argv + +# Simple tcl client to connect to openocd +global fo +set fo [socket $argv 6666] + +# If a fn is unknown to Tcl, send it off to OpenOCD +proc unknown args { + global fo + puts $fo $args + flush $fo + gets $fo line + return $line +} + + + +#Print help text for a command. Word wrap +#help text that is too wide inside column. +proc pc_help {args} { + global ocd_helptext + set cmd $args + foreach a [lsort $ocd_helptext] { + if {[string length $cmd]==0||[string first $cmd $a]!=-1||[string first $cmd [lindex $a 1]]!=-1} { + set w 50 + set cmdname [lindex $a 0] + set h [lindex $a 1] + set n 0 + while 1 { + if {$n > [string length $h]} {break} + + set next_a [expr $n+$w] + if {[string length $h]>$n+$w} { + set xxxx [string range $h $n [expr $n+$w]] + for {set lastpos [expr [string length $xxxx]-1]} {$lastpos>=0&&[string compare [string range $xxxx $lastpos $lastpos] " "]!=0} {set lastpos [expr $lastpos-1]} { + } + #set next_a -1 + if {$lastpos!=-1} { + set next_a [expr $lastpos+$n+1] + } + } + + + puts [format "%-25s %s" $cmdname [string range $h $n [expr $next_a-1]] ] + set cmdname "" + set n [expr $next_a] + } + } + } +} + +puts "Running flash_banks" +puts [flash_banks] +puts "Running help on PC using data from OpenOCD" +global ocd_helptext +set ocd_helptext [get_help_text] +puts [pc_help] + + +