/** * \ingroup usartcmdline * \b DISK-Befehl Informationen zur SD-Karte ausgeben */ int16_t print_disk_info(char *outbuffer) //const struct fat16_fs_struct* fs) { #if !USE_MMC return cmd_502(outbuffer); #else if (!cwdir_ptr) return 0; if (outbuffer) // nur bei USART return cmd_502(outbuffer); struct sd_raw_info disk_info; if(!sd_raw_get_info(&disk_info)) { usart_write("\r\nDisk kann nicht gelesen werden."); return 0; } usart_write("\r\nmanuf: 0x%x",disk_info.manufacturer); usart_write("\r\noem: %s",disk_info.oem); usart_write("\r\nprod: %s",disk_info.product); usart_write("\r\nrev: %i",disk_info.revision); usart_write("\r\nserial: %l",disk_info.serial); usart_write("\r\ndate: %i/%i",disk_info.manufacturing_month,disk_info.manufacturing_year); usart_write("\r\nsize: %l",disk_info.capacity); usart_write("\r\ncopy: %i",disk_info.flag_copy); usart_write("\r\nwr.pr.: %i/%i",disk_info.flag_write_protect_temp,disk_info.flag_write_protect); usart_write("\r\nformat: %i",disk_info.format); // uart_puts_p(PSTR("free: ")); uart_putdw_dec(fat16_get_fs_free(fs)); uart_putc('/'); // uart_putdw_dec(fat16_get_fs_size(fs)); uart_putc('\n'); return 0; #endif }
uint8_t print_disk_info(const struct fat_fs_struct* fs) { if(!fs) return 0; struct sd_raw_info disk_info; if(!sd_raw_get_info(&disk_info)) return 0; uart_puts_p(PSTR("manuf: 0x")); uart_putc_hex(disk_info.manufacturer); uart_putc('\n'); uart_puts_p(PSTR("oem: ")); uart_puts((char*) disk_info.oem); uart_putc('\n'); uart_puts_p(PSTR("prod: ")); uart_puts((char*) disk_info.product); uart_putc('\n'); uart_puts_p(PSTR("rev: ")); uart_putc_hex(disk_info.revision); uart_putc('\n'); uart_puts_p(PSTR("serial: 0x")); uart_putdw_hex(disk_info.serial); uart_putc('\n'); uart_puts_p(PSTR("date: ")); uart_putw_dec(disk_info.manufacturing_month); uart_putc('/'); uart_putw_dec(disk_info.manufacturing_year); uart_putc('\n'); uart_puts_p(PSTR("size: ")); uart_putdw_dec(disk_info.capacity / 1024 / 1024); uart_puts_p(PSTR("MB\n")); uart_puts_p(PSTR("copy: ")); uart_putw_dec(disk_info.flag_copy); uart_putc('\n'); uart_puts_p(PSTR("wr.pr.: ")); uart_putw_dec(disk_info.flag_write_protect_temp); uart_putc('/'); uart_putw_dec(disk_info.flag_write_protect); uart_putc('\n'); uart_puts_p(PSTR("format: ")); uart_putw_dec(disk_info.format); uart_putc('\n'); uart_puts_p(PSTR("free: ")); uart_putdw_dec(fat_get_fs_free(fs)); uart_putc('/'); uart_putdw_dec(fat_get_fs_size(fs)); uart_putc('\n'); return 1; }
int16_t parse_cmd_sd_info(char *cmd, char *output, uint16_t len) { struct sd_raw_info info; if (sd_raw_get_info(&info) == 0) return ECMD_FINAL(snprintf_P(output, len, PSTR("read error"))); uint16_t cap = info.capacity / 1000000UL; return ECMD_FINAL(snprintf_P(output, len, PSTR("%3s %6s %d/20%02d %uMB %d %d %d"), &info.oem, &info.product, info.manufacturing_month, info.manufacturing_year, cap, info.flag_copy, info.flag_write_protect, info.format)); }