execute all tests just once
[Arduino] / c2_ulx3s_test / sd.cpp
1 #include <Arduino.h>
2
3 #if 0
4 #include "spi.h"
5 volatile uint16_t *sd_spi    = (uint16_t *)0xFFFFFB50;
6 uint8_t sd_cmd0()
7 {
8  int i, r;
9
10  spi_start_tx(sd_spi);
11  for(i = 0; i < 10; i++)
12    spi_rxtx(sd_spi, 0xFF);
13  spi_rxtx(sd_spi, 0x40);
14  spi_rxtx(sd_spi, 0x00);
15  spi_rxtx(sd_spi, 0x00);
16  spi_rxtx(sd_spi, 0x00);
17  spi_rxtx(sd_spi, 0x95);
18
19  //Polling it to check  response to 0x01
20  r = 0xFF;
21  for(int i = 0; i < 1000 && r != 0xFF; i++)
22    r = spi_rxtx(sd_spi, 0xFF);
23  return r;
24 }
25
26 void sd_read(char *a)
27 {
28   uint8_t cmd0_response = sd_cmd0();
29   if(cmd0_response == 1)
30     sprintf(a, "SD: %02x OK  ", cmd0_response);
31   else
32     sprintf(a, "SD: %02x FAIL", cmd0_response);
33 }
34 #endif
35
36 #if 1
37 #include <SPI.h>
38 #include <SD.h>
39 // set up variables using the SD utility library functions:
40 Sd2Card card;
41 SdVolume volume;
42 SdFile root;
43 // reading sd card type is slow
44 int sd_read(char *a)
45 {
46   int ret = 0;
47   char *cardtype;
48   if (card.init(SPI_HALF_SPEED, 2))
49   {
50     switch (card.type())
51     {
52     case SD_CARD_TYPE_SD1:
53       cardtype = "1 ";
54       break;
55     case SD_CARD_TYPE_SD2:
56       cardtype = "2 ";
57       break;
58     case SD_CARD_TYPE_SDHC:
59       cardtype = "HC";
60       break;
61     default:
62       cardtype = "? ";
63     }
64     sprintf(a, "SD: %s OK", cardtype);
65     ret = 1;
66   }
67   else
68   {
69     sprintf(a, "SD: FAIL ");
70   }
71   return ret;
72 }
73 #endif