Posted to tcl by crshults at Thu May 28 21:21:51 GMT 2015view raw
- 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