Error as described in MBs email to MS
Dependencies: SDFileSystem app epson mbed msp430 pl tests
main.cpp@1:5874c1a074a7, 2018-01-11 (annotated)
- Committer:
- marcbax
- Date:
- Thu Jan 11 14:12:00 2018 +0000
- Revision:
- 1:5874c1a074a7
- Parent:
- 0:c643d398cdb6
Version 180111a with error as reported to Mark Symonds
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marcbax | 0:c643d398cdb6 | 1 | // |
marcbax | 0:c643d398cdb6 | 2 | // Filename: main.cpp |
marcbax | 0:c643d398cdb6 | 3 | // |
marcbax | 0:c643d398cdb6 | 4 | // Flexbook startup. |
marcbax | 0:c643d398cdb6 | 5 | // |
marcbax | 0:c643d398cdb6 | 6 | |
marcbax | 0:c643d398cdb6 | 7 | #include "book.h" |
marcbax | 0:c643d398cdb6 | 8 | #include "bookmonitor.h" |
marcbax | 0:c643d398cdb6 | 9 | #include "eink.h" |
marcbax | 0:c643d398cdb6 | 10 | #include "hal.h" |
marcbax | 0:c643d398cdb6 | 11 | #include "log.h" |
marcbax | 0:c643d398cdb6 | 12 | #include "pagefactory.h" |
marcbax | 0:c643d398cdb6 | 13 | #include <string> |
marcbax | 0:c643d398cdb6 | 14 | |
marcbax | 0:c643d398cdb6 | 15 | using namespace Flexbook; |
marcbax | 0:c643d398cdb6 | 16 | |
marcbax | 0:c643d398cdb6 | 17 | #include "mbed.h" |
marcbax | 0:c643d398cdb6 | 18 | #include "SDFileSystem.h" |
marcbax | 0:c643d398cdb6 | 19 | |
marcbax | 0:c643d398cdb6 | 20 | DigitalOut led1(LED1); |
marcbax | 0:c643d398cdb6 | 21 | DigitalOut led2(LED2); |
marcbax | 0:c643d398cdb6 | 22 | DigitalOut led3(LED3); |
marcbax | 0:c643d398cdb6 | 23 | DigitalOut led4(LED4); |
marcbax | 0:c643d398cdb6 | 24 | DigitalOut buzz(p21, 0); |
marcbax | 0:c643d398cdb6 | 25 | //define all pins connected to companion PCBs as DigitalIn (high impedence) |
marcbax | 0:c643d398cdb6 | 26 | DigitalIn pin9(p9); |
marcbax | 0:c643d398cdb6 | 27 | DigitalIn pin10(p10); |
marcbax | 0:c643d398cdb6 | 28 | DigitalIn pin11(p11); |
marcbax | 0:c643d398cdb6 | 29 | DigitalIn pin12(p12); |
marcbax | 0:c643d398cdb6 | 30 | DigitalIn pin13(p13); |
marcbax | 0:c643d398cdb6 | 31 | DigitalIn pin14(p14); |
marcbax | 0:c643d398cdb6 | 32 | DigitalIn pin15(p15); |
marcbax | 0:c643d398cdb6 | 33 | DigitalIn pin16(p16); |
marcbax | 0:c643d398cdb6 | 34 | DigitalIn pin17(p17); |
marcbax | 0:c643d398cdb6 | 35 | DigitalIn pin18(p18); |
marcbax | 0:c643d398cdb6 | 36 | DigitalIn pin23(p23); |
marcbax | 0:c643d398cdb6 | 37 | DigitalIn pin24(p24); |
marcbax | 0:c643d398cdb6 | 38 | DigitalIn pin25(p25); |
marcbax | 0:c643d398cdb6 | 39 | DigitalIn pin26(p26); |
marcbax | 0:c643d398cdb6 | 40 | DigitalIn pin27(p27); |
marcbax | 0:c643d398cdb6 | 41 | DigitalIn pin28(p28); |
marcbax | 0:c643d398cdb6 | 42 | DigitalIn pin29(p29); |
marcbax | 0:c643d398cdb6 | 43 | DigitalIn pin30(p30); |
marcbax | 0:c643d398cdb6 | 44 | |
marcbax | 0:c643d398cdb6 | 45 | // MicroSD mbed |
marcbax | 0:c643d398cdb6 | 46 | // CS o-------------o 8 (DigitalOut cs) |
marcbax | 0:c643d398cdb6 | 47 | // DI o-------------o 5 (SPI mosi) |
marcbax | 0:c643d398cdb6 | 48 | // VCC o-------------o VOUT |
marcbax | 0:c643d398cdb6 | 49 | // SCK o-------------o 7 (SPI sclk) |
marcbax | 0:c643d398cdb6 | 50 | // GND o-------------o GND |
marcbax | 0:c643d398cdb6 | 51 | // DO o-------------o 6 (SPI miso) |
marcbax | 0:c643d398cdb6 | 52 | // CD o |
marcbax | 0:c643d398cdb6 | 53 | |
marcbax | 0:c643d398cdb6 | 54 | |
marcbax | 0:c643d398cdb6 | 55 | |
marcbax | 0:c643d398cdb6 | 56 | SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the Flexboard board |
marcbax | 0:c643d398cdb6 | 57 | |
marcbax | 0:c643d398cdb6 | 58 | void SDtest() |
marcbax | 0:c643d398cdb6 | 59 | { |
marcbax | 0:c643d398cdb6 | 60 | printf("\nSD card: "); |
marcbax | 0:c643d398cdb6 | 61 | |
marcbax | 0:c643d398cdb6 | 62 | FILE *fp1 = fopen("/sd/sdtest.txt", "w"); |
marcbax | 0:c643d398cdb6 | 63 | if(fp1 == NULL) { |
marcbax | 0:c643d398cdb6 | 64 | error("Could not open file for write\n"); |
marcbax | 0:c643d398cdb6 | 65 | } |
marcbax | 0:c643d398cdb6 | 66 | if(fprintf(fp1, "Hello SD Card\n") != 14) |
marcbax | 0:c643d398cdb6 | 67 | error("Could not write data\n"); |
marcbax | 0:c643d398cdb6 | 68 | fclose(fp1); |
marcbax | 0:c643d398cdb6 | 69 | |
marcbax | 0:c643d398cdb6 | 70 | FILE *fp2 = fopen("/sd/sdtest.txt", "r"); |
marcbax | 0:c643d398cdb6 | 71 | if(fp2 == NULL) { |
marcbax | 0:c643d398cdb6 | 72 | error("Could not open file for read\n"); |
marcbax | 0:c643d398cdb6 | 73 | } |
marcbax | 0:c643d398cdb6 | 74 | char data[64]; |
marcbax | 0:c643d398cdb6 | 75 | data[0] = 0; |
marcbax | 0:c643d398cdb6 | 76 | if(fgets(data, sizeof(data), fp2) == NULL) |
marcbax | 0:c643d398cdb6 | 77 | error("Could not read data\n"); |
marcbax | 0:c643d398cdb6 | 78 | fclose(fp2); |
marcbax | 0:c643d398cdb6 | 79 | |
marcbax | 0:c643d398cdb6 | 80 | printf("Ok\n"); |
marcbax | 0:c643d398cdb6 | 81 | } |
marcbax | 0:c643d398cdb6 | 82 | /* |
marcbax | 0:c643d398cdb6 | 83 | //function to count number of eligible words in the dictionary file |
marcbax | 0:c643d398cdb6 | 84 | int NumDictWords() |
marcbax | 0:c643d398cdb6 | 85 | { |
marcbax | 0:c643d398cdb6 | 86 | FILE *fp1 = fopen("/sd/hangdict.txt", "r"); |
marcbax | 0:c643d398cdb6 | 87 | if (fp1 == NULL) { |
marcbax | 0:c643d398cdb6 | 88 | printf("Could not open hangdict.txt\n"); |
marcbax | 0:c643d398cdb6 | 89 | } |
marcbax | 0:c643d398cdb6 | 90 | else { |
marcbax | 0:c643d398cdb6 | 91 | printf("hangdict.txt opened\n"); |
marcbax | 0:c643d398cdb6 | 92 | } |
marcbax | 0:c643d398cdb6 | 93 | int wordcount = 0; |
marcbax | 0:c643d398cdb6 | 94 | int wordlength = 0; |
marcbax | 0:c643d398cdb6 | 95 | int ch; |
marcbax | 0:c643d398cdb6 | 96 | while (EOF != (ch = getc(fp1))) { |
marcbax | 0:c643d398cdb6 | 97 | // check if character is an LF. It the word on that line is the right length, increment word counter |
marcbax | 0:c643d398cdb6 | 98 | if (ch == 10) { |
marcbax | 0:c643d398cdb6 | 99 | if ((wordlength > 7) && (wordlength < 15)) { |
marcbax | 0:c643d398cdb6 | 100 | wordcount = wordcount + 1; |
marcbax | 0:c643d398cdb6 | 101 | } |
marcbax | 0:c643d398cdb6 | 102 | wordlength = 0; |
marcbax | 0:c643d398cdb6 | 103 | } |
marcbax | 0:c643d398cdb6 | 104 | else { |
marcbax | 0:c643d398cdb6 | 105 | // if the character is not an LF, increment character count |
marcbax | 0:c643d398cdb6 | 106 | wordlength = wordlength + 1; |
marcbax | 0:c643d398cdb6 | 107 | } |
marcbax | 0:c643d398cdb6 | 108 | } |
marcbax | 0:c643d398cdb6 | 109 | fclose(fp1); |
marcbax | 0:c643d398cdb6 | 110 | printf("Word count: %u\n", wordcount); |
marcbax | 0:c643d398cdb6 | 111 | return wordcount; |
marcbax | 0:c643d398cdb6 | 112 | } |
marcbax | 0:c643d398cdb6 | 113 | |
marcbax | 0:c643d398cdb6 | 114 | // ReturnWord is used to pick an indexed word from the hangdict.txt file |
marcbax | 0:c643d398cdb6 | 115 | int ReturnWord(int wordindex, char* word2guess) |
marcbax | 0:c643d398cdb6 | 116 | { |
marcbax | 0:c643d398cdb6 | 117 | FILE *fp1 = fopen("/sd/hangdict.txt", "r"); |
marcbax | 0:c643d398cdb6 | 118 | printf("Returning word %u: ", wordindex); |
marcbax | 0:c643d398cdb6 | 119 | for (int i = 0; i < wordindex; i++) { |
marcbax | 0:c643d398cdb6 | 120 | fgets(word2guess, 24, fp1); |
marcbax | 0:c643d398cdb6 | 121 | while ((strlen(word2guess) < 6) || (strlen(word2guess) > 12)) { |
marcbax | 0:c643d398cdb6 | 122 | fgets(word2guess, 24, fp1); |
marcbax | 0:c643d398cdb6 | 123 | } |
marcbax | 0:c643d398cdb6 | 124 | } |
marcbax | 0:c643d398cdb6 | 125 | printf("%s", word2guess); |
marcbax | 0:c643d398cdb6 | 126 | fclose(fp1); |
marcbax | 0:c643d398cdb6 | 127 | return (strlen(word2guess)-2); |
marcbax | 0:c643d398cdb6 | 128 | } |
marcbax | 0:c643d398cdb6 | 129 | */ |
marcbax | 0:c643d398cdb6 | 130 | |
marcbax | 0:c643d398cdb6 | 131 | int main() |
marcbax | 0:c643d398cdb6 | 132 | { |
marcbax | 0:c643d398cdb6 | 133 | HAL::Initialise(); |
marcbax | 0:c643d398cdb6 | 134 | srand(time(NULL)); |
marcbax | 0:c643d398cdb6 | 135 | Flexbook::PageFactory factory; // Page creator |
marcbax | 0:c643d398cdb6 | 136 | Flexbook::Book book(factory); // Page container |
marcbax | 0:c643d398cdb6 | 137 | Flexbook::BookMonitor monitor(book); // Page turn monitor |
marcbax | 0:c643d398cdb6 | 138 | |
marcbax | 0:c643d398cdb6 | 139 | //This section to test individual pages: |
marcbax | 0:c643d398cdb6 | 140 | //book.PageChange(Flexbook::PageType_PageFlexEnable); |
marcbax | 0:c643d398cdb6 | 141 | //book.PageChange(Flexbook::PageType_PageSensor); |
marcbax | 0:c643d398cdb6 | 142 | //book.PageChange(Flexbook::PageType_PageTouch); |
marcbax | 0:c643d398cdb6 | 143 | //etc... |
marcbax | 0:c643d398cdb6 | 144 | |
marcbax | 0:c643d398cdb6 | 145 | //DisplayHardwareSettings(); |
marcbax | 0:c643d398cdb6 | 146 | |
marcbax | 0:c643d398cdb6 | 147 | //Log("White screen in main"); |
marcbax | 0:c643d398cdb6 | 148 | //WriteColour(Get_epdc(), 0xff);//PL_WHITE); |
marcbax | 0:c643d398cdb6 | 149 | |
marcbax | 0:c643d398cdb6 | 150 | /* |
marcbax | 0:c643d398cdb6 | 151 | wait(4); |
marcbax | 0:c643d398cdb6 | 152 | Log("Write partial image in main"); |
marcbax | 0:c643d398cdb6 | 153 | WritePartImage("/myfile.pgm", 60, 30, 60, 30, 100, 100); |
marcbax | 0:c643d398cdb6 | 154 | |
marcbax | 0:c643d398cdb6 | 155 | wait(4); |
marcbax | 0:c643d398cdb6 | 156 | Log("Update display in main"); |
marcbax | 0:c643d398cdb6 | 157 | UpdateDisplay(); |
marcbax | 0:c643d398cdb6 | 158 | |
marcbax | 0:c643d398cdb6 | 159 | Log("Write partial image 2"); |
marcbax | 0:c643d398cdb6 | 160 | WritePartImage("/myfile.pgm", 160, 100, 160, 100, 50, 200); |
marcbax | 0:c643d398cdb6 | 161 | |
marcbax | 0:c643d398cdb6 | 162 | wait(4); |
marcbax | 0:c643d398cdb6 | 163 | UpdateDisplay(); |
marcbax | 0:c643d398cdb6 | 164 | book.PageChange(Flexbook::PageType_PageTouch); |
marcbax | 0:c643d398cdb6 | 165 | */ |
marcbax | 0:c643d398cdb6 | 166 | |
marcbax | 0:c643d398cdb6 | 167 | Log("starting main loop"); |
marcbax | 0:c643d398cdb6 | 168 | while(true) // Main loop |
marcbax | 0:c643d398cdb6 | 169 | { |
marcbax | 0:c643d398cdb6 | 170 | monitor.CheckForPageChange(); // Creates/destructs pages based on sensor touches |
marcbax | 0:c643d398cdb6 | 171 | // In this version only PageSensor or PageTouch can be active |
marcbax | 0:c643d398cdb6 | 172 | // Other pages are created as dependents |
marcbax | 0:c643d398cdb6 | 173 | book.HandleActions(); // Performs actions for the currently active page |
marcbax | 0:c643d398cdb6 | 174 | } |
marcbax | 0:c643d398cdb6 | 175 | } |