static void print_m3ua_tags(const u_char *buf, u_int size) { const u_char *p = buf; while (p < buf + size) { const struct m3ua_param_header *hdr = (const struct m3ua_param_header *) p; printf("\n\t\t\t%s: ", tok2str(ParamName, "Unknown Parameter (0x%04x)", EXTRACT_16BITS(&hdr->tag))); print_tag_value(p + sizeof(struct m3ua_param_header), EXTRACT_16BITS(&hdr->tag), EXTRACT_16BITS(&hdr->len)); p += EXTRACT_16BITS(&hdr->len); int align = (int) (p - buf) % 4; p += (align) ? 4 - align : 0; } }
void dump_useful_info() { int i; rpi_mailbox_property_t *buf; clock_info_t *clk_info; rpi_mailbox_tag_t tags[] = { TAG_GET_FIRMWARE_VERSION , TAG_GET_BOARD_MODEL , TAG_GET_BOARD_REVISION , TAG_GET_BOARD_MAC_ADDRESS , TAG_GET_BOARD_SERIAL //, TAG_GET_ARM_MEMORY //, TAG_GET_VC_MEMORY //, TAG_GET_DMA_CHANNELS //, TAG_GET_CLOCKS //, TAG_GET_COMMAND_LINE }; char *tagnames[] = { "FIRMWARE_VERSION" , "BOARD_MODEL" , "BOARD_REVISION" , "BOARD_MAC_ADDRESS" , "BOARD_SERIAL" //, "ARM_MEMORY" //, "VC_MEMORY" //, "DMA_CHANNEL" //, "CLOCKS" //, "COMMAND_LINE" }; char *clock_names[] = { "RESERVED", "EMMC", "UART", "ARM", "CORE", "V3D", "H264", "ISP", "SDRAM", "PIXEL", "PWM" }; int n = sizeof(tags) / sizeof(rpi_mailbox_tag_t); RPI_PropertyInit(); for (i = 0; i < n ; i++) { RPI_PropertyAddTag(tags[i]); } RPI_PropertyProcess(); for (i = 0; i < n; i++) { buf = RPI_PropertyGet(tags[i]); print_tag_value(tagnames[i], buf, 1); } for (i = MIN_CLK_ID; i <= MAX_CLK_ID; i++) { clk_info = get_clock_rates(i); printf("%15s_FREQ : %10.3f MHz %10.3f MHz %10.3f MHz\r\n", clock_names[i], (double) (clk_info->rate) / 1.0e6, (double) (clk_info->min_rate) / 1.0e6, (double) (clk_info->max_rate) / 1.0e6 ); } printf(" CORE TEMP : %6.2f °C\r\n", get_temp()); printf(" CORE VOLTAGE : %6.2f V\r\n", get_voltage(COMPONENT_CORE)); printf(" SDRAM_C VOLTAGE : %6.2f V\r\n", get_voltage(COMPONENT_SDRAM_C)); printf(" SDRAM_P VOLTAGE : %6.2f V\r\n", get_voltage(COMPONENT_SDRAM_P)); printf(" SDRAM_I VOLTAGE : %6.2f V\r\n", get_voltage(COMPONENT_SDRAM_I)); printf(" CMD_LINE : %s\r\n", get_cmdline()); printf(" COPRO : %s\r\n", get_cmdline_prop("copro")); }