예제 #1
0
/**
 * \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
}
예제 #2
0
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;
}
예제 #3
0
파일: ecmd.c 프로젝트: AnDann/ethersex
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));
}