SD card interface rewrite to improve compatibility with some SD cards.
[SCSI2SD.git] / software / SCSI2SD / src / main.c
1 //      Copyright (C) 2014 Michael McMaster <michael@codesrc.com>\r
2 //\r
3 //      This file is part of SCSI2SD.\r
4 //\r
5 //      SCSI2SD is free software: you can redistribute it and/or modify\r
6 //      it under the terms of the GNU General Public License as published by\r
7 //      the Free Software Foundation, either version 3 of the License, or\r
8 //      (at your option) any later version.\r
9 //\r
10 //      SCSI2SD is distributed in the hope that it will be useful,\r
11 //      but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 //      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 //      GNU General Public License for more details.\r
14 //\r
15 //      You should have received a copy of the GNU General Public License\r
16 //      along with SCSI2SD.  If not, see <http://www.gnu.org/licenses/>.\r
17 \r
18 #include "device.h"\r
19 #include "scsi.h"\r
20 #include "scsiPhy.h"\r
21 #include "config.h"\r
22 #include "disk.h"\r
23 #include "led.h"\r
24 #include "time.h"\r
25 \r
26 const char* Notice = "Copyright (C) 2014 Michael McMaster <michael@codesrc.com>";\r
27 \r
28 uint8_t testData[512];\r
29 \r
30 int main()\r
31 {\r
32         timeInit();\r
33         ledInit();\r
34 \r
35         // Enable global interrupts.\r
36         // Needed for RST and ATN interrupt handlers.\r
37         CyGlobalIntEnable;\r
38 \r
39         // Set interrupt handlers.\r
40         scsiPhyInit();\r
41 \r
42         configInit();\r
43         debugInit();\r
44 \r
45         scsiInit();\r
46         scsiDiskInit();\r
47 \r
48         uint32_t lastSDPoll = getTime_ms();\r
49         sdPoll();\r
50 \r
51 \r
52 \r
53 \r
54         while (1)\r
55         {\r
56                 scsiDev.watchdogTick++;\r
57 \r
58                 scsiPoll();\r
59                 scsiDiskPoll();\r
60                 configPoll();\r
61 \r
62                 uint32_t now = getTime_ms();\r
63                 if (diffTime_ms(lastSDPoll, now) > 200)\r
64                 {\r
65                         lastSDPoll = now;\r
66                         sdPoll();\r
67                 }\r
68         }\r
69         return 0;\r
70 }\r
71 \r