testing/*.tcl sample & test code
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sat, 12 Jul 2008 07:50:17 +0000 (07:50 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sat, 12 Jul 2008 07:50:17 +0000 (07:50 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@799 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/startup.tcl
testing/tcl_test.tcl [new file with mode: 0644]

index 294dee2..dc3a089 100644 (file)
@@ -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 (file)
index 0000000..683b4fe
--- /dev/null
@@ -0,0 +1,65 @@
+if { $argc != 1 } {\r
+       puts "Usage: test_tcl.tcl <ipaddress>"\r
+       exit 1\r
+}\r
+\r
+puts $argv\r
+\r
+# Simple tcl client to connect to openocd\r
+global fo\r
+set fo [socket $argv 6666]\r
+\r
+# If a fn is unknown to Tcl, send it off to OpenOCD\r
+proc unknown args {    \r
+       global fo\r
+       puts $fo $args\r
+       flush $fo\r
+       gets $fo line\r
+       return $line\r
+}\r
+\r
+\r
+\r
+#Print help text for a command. Word wrap\r
+#help text that is too wide inside column.\r
+proc pc_help {args} {\r
+       global ocd_helptext\r
+       set cmd $args\r
+       foreach a [lsort $ocd_helptext] {\r
+               if {[string length $cmd]==0||[string first $cmd $a]!=-1||[string first $cmd [lindex $a 1]]!=-1} {\r
+                       set w 50\r
+                       set cmdname [lindex $a 0]\r
+                       set h [lindex $a 1]\r
+                       set n 0\r
+                       while 1 {\r
+                               if {$n > [string length $h]} {break}\r
+                               \r
+                               set next_a [expr $n+$w]\r
+                               if {[string length $h]>$n+$w} {\r
+                                       set xxxx [string range $h $n [expr $n+$w]]\r
+                                       for {set lastpos [expr [string length $xxxx]-1]} {$lastpos>=0&&[string compare [string range $xxxx $lastpos $lastpos] " "]!=0} {set lastpos [expr $lastpos-1]} {\r
+                                       }\r
+                                       #set next_a -1\r
+                                       if {$lastpos!=-1} {\r
+                                               set next_a [expr $lastpos+$n+1]\r
+                                       }\r
+                               }\r
+                               \r
+                               \r
+                               puts [format "%-25s %s" $cmdname [string range $h $n [expr $next_a-1]] ]\r
+                               set cmdname ""\r
+                               set n [expr $next_a]\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+puts "Running flash_banks"\r
+puts [flash_banks]\r
+puts "Running help on PC using data from OpenOCD"\r
+global ocd_helptext\r
+set ocd_helptext [get_help_text]\r
+puts [pc_help]\r
+\r
+\r
+\r