Posted to tcl by crshults at Thu May 28 21:21:51 GMT 2015view pretty
set new_string { 0 "old scheme" 1 "new scheme" } set memsize_string { 0 256M 1 512M 2 1G } set manufacturer_string { 0 SONY 1 EGOMAN 2 EMBEST } set processor_string { 0 2835 1 2836 } set type_string { 0 MODELA 1 MODELB 2 MODELA+ 3 MODELB+ 4 "Pi2 MODELB" 5 ALPHA 6 CM } set rev_string { 0 REV0 1 REV1 2 REV2 } proc get_string_value {string_dict index} { if {[dict exists $string_dict $index]} { return [dict get $string_dict $index] } else { return unknown } } proc get_bit_field {input offset width} { return [expr {($input >> $offset) & ((1<<$width)-1)}] } proc print_pi_info {input} { set new [get_bit_field $input 23 1] set memsize [get_bit_field $input 20 3] set manufacturer [get_bit_field $input 16 4] set processor [get_bit_field $input 12 4] set type [get_bit_field $input 04 8] set rev [get_bit_field $input 00 4] puts "new: [::get_string_value $::new_string $new]" puts "memsize: [::get_string_value $::memsize_string $memsize]" puts "manufacturer: [::get_string_value $::manufacturer_string $manufacturer]" puts "processor: [::get_string_value $::processor_string $processor]" puts "type: [::get_string_value $::type_string $type]" puts "rev: [::get_string_value $::rev_string $rev]" } set example1 0xa01040 set example2 0xa0003f print_pi_info $example1 print_pi_info $example2