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