Added HangmanGame class, but does not work yet
Dependencies: SDFileSystem app epson mbed msp430 pl tests
hal.cpp@1:a5ec6f9dcf0d, 2017-12-04 (annotated)
- Committer:
- markpsymonds
- Date:
- Mon Dec 04 20:15:18 2017 +0000
- Revision:
- 1:a5ec6f9dcf0d
- Parent:
- 0:fa7450a43b99
Fixed most compile issues in hangman.cpp/.h.
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: hal.cpp |
group-FlexBook | 0:fa7450a43b99 | 3 | // |
group-FlexBook | 0:fa7450a43b99 | 4 | // Flexbook Hardware Abstraction Layer. |
group-FlexBook | 0:fa7450a43b99 | 5 | // |
group-FlexBook | 0:fa7450a43b99 | 6 | |
group-FlexBook | 0:fa7450a43b99 | 7 | #include "hal.h" |
group-FlexBook | 0:fa7450a43b99 | 8 | |
group-FlexBook | 0:fa7450a43b99 | 9 | #include "mcp23s17.h" |
group-FlexBook | 0:fa7450a43b99 | 10 | |
group-FlexBook | 0:fa7450a43b99 | 11 | #include "mbed.h" |
group-FlexBook | 0:fa7450a43b99 | 12 | |
group-FlexBook | 0:fa7450a43b99 | 13 | #include <stdio.h> |
group-FlexBook | 0:fa7450a43b99 | 14 | |
group-FlexBook | 0:fa7450a43b99 | 15 | // Initialisation values for MCP23S17 registers. |
group-FlexBook | 0:fa7450a43b99 | 16 | uint8_t MCP23S17value[0x16] = |
group-FlexBook | 0:fa7450a43b99 | 17 | { |
group-FlexBook | 0:fa7450a43b99 | 18 | 0x00, // IODIRA |
group-FlexBook | 0:fa7450a43b99 | 19 | 0x00, // IODIRB |
group-FlexBook | 0:fa7450a43b99 | 20 | 0xff, // IPOLA |
group-FlexBook | 0:fa7450a43b99 | 21 | 0x00, // IPOLB |
group-FlexBook | 0:fa7450a43b99 | 22 | 0x00, // GPINTENA |
group-FlexBook | 0:fa7450a43b99 | 23 | 0x00, // GPINTENB |
group-FlexBook | 0:fa7450a43b99 | 24 | 0x00, // DEFVALA |
group-FlexBook | 0:fa7450a43b99 | 25 | 0x00, // DEFVALB |
group-FlexBook | 0:fa7450a43b99 | 26 | 0x00, // INTCONA |
group-FlexBook | 0:fa7450a43b99 | 27 | 0x00, // INTCONB |
group-FlexBook | 0:fa7450a43b99 | 28 | 0x00, // IOCON1 |
group-FlexBook | 0:fa7450a43b99 | 29 | 0x00, // IOCON2 |
group-FlexBook | 0:fa7450a43b99 | 30 | 0x00, // GPPUA |
group-FlexBook | 0:fa7450a43b99 | 31 | 0x00, // GPPUB |
group-FlexBook | 0:fa7450a43b99 | 32 | 0x00, // INTFA |
group-FlexBook | 0:fa7450a43b99 | 33 | 0x00, // INTFB |
group-FlexBook | 0:fa7450a43b99 | 34 | 0x00, // INTCAPA |
group-FlexBook | 0:fa7450a43b99 | 35 | 0x00, // INTCAPB |
group-FlexBook | 0:fa7450a43b99 | 36 | 0x00, // GPIOA |
group-FlexBook | 0:fa7450a43b99 | 37 | 0x00, // GPIOB |
group-FlexBook | 0:fa7450a43b99 | 38 | 0x00, // OLATA |
group-FlexBook | 0:fa7450a43b99 | 39 | 0x00, // OLATB |
group-FlexBook | 0:fa7450a43b99 | 40 | }; |
group-FlexBook | 0:fa7450a43b99 | 41 | |
group-FlexBook | 0:fa7450a43b99 | 42 | namespace HAL { |
group-FlexBook | 0:fa7450a43b99 | 43 | |
group-FlexBook | 0:fa7450a43b99 | 44 | MCP23S17 &GetMCP23S17() |
group-FlexBook | 0:fa7450a43b99 | 45 | { |
group-FlexBook | 0:fa7450a43b99 | 46 | // The MCP23S17 uses pins 5, 6, 7 (SPI MOSI, MISO, SCK) and 19 (CS). |
group-FlexBook | 0:fa7450a43b99 | 47 | static SPI spi(p5, p6, p7); |
group-FlexBook | 0:fa7450a43b99 | 48 | static DigitalOut cs(p19); |
group-FlexBook | 0:fa7450a43b99 | 49 | static MCP23S17 mcp23s17(0x00, spi, cs); |
group-FlexBook | 0:fa7450a43b99 | 50 | |
group-FlexBook | 0:fa7450a43b99 | 51 | return mcp23s17; |
group-FlexBook | 0:fa7450a43b99 | 52 | } |
group-FlexBook | 0:fa7450a43b99 | 53 | |
group-FlexBook | 0:fa7450a43b99 | 54 | // Initialise the HAL. |
group-FlexBook | 0:fa7450a43b99 | 55 | void Initialise() |
group-FlexBook | 0:fa7450a43b99 | 56 | { |
group-FlexBook | 0:fa7450a43b99 | 57 | // Setup MCP23S17 I/O expander. |
group-FlexBook | 0:fa7450a43b99 | 58 | for(unsigned int reg = 0; reg < sizeof(MCP23S17value); reg++) |
group-FlexBook | 0:fa7450a43b99 | 59 | GetMCP23S17().Write((REG_MCP23S17) reg, MCP23S17value[reg]); |
group-FlexBook | 0:fa7450a43b99 | 60 | |
group-FlexBook | 0:fa7450a43b99 | 61 | GetMCP23S17().Write(GPIOA, 0); |
group-FlexBook | 0:fa7450a43b99 | 62 | GetMCP23S17().Write(GPIOB, 0); |
group-FlexBook | 0:fa7450a43b99 | 63 | } |
group-FlexBook | 0:fa7450a43b99 | 64 | |
group-FlexBook | 0:fa7450a43b99 | 65 | void EnablePowerToPages(Flexbook::PageType pages) |
group-FlexBook | 0:fa7450a43b99 | 66 | { |
group-FlexBook | 0:fa7450a43b99 | 67 | // Power on the board(s). |
group-FlexBook | 0:fa7450a43b99 | 68 | GetMCP23S17().Write(GPIOB, pages); |
group-FlexBook | 0:fa7450a43b99 | 69 | |
group-FlexBook | 0:fa7450a43b99 | 70 | // Wait for the power to stabilize. |
group-FlexBook | 0:fa7450a43b99 | 71 | wait(0.1); |
group-FlexBook | 0:fa7450a43b99 | 72 | |
group-FlexBook | 0:fa7450a43b99 | 73 | // Enable the I2C connection. |
group-FlexBook | 0:fa7450a43b99 | 74 | GetMCP23S17().Write(GPIOA, pages); |
group-FlexBook | 0:fa7450a43b99 | 75 | } |
group-FlexBook | 0:fa7450a43b99 | 76 | |
group-FlexBook | 0:fa7450a43b99 | 77 | Flexbook::PageType GetPageType() |
group-FlexBook | 0:fa7450a43b99 | 78 | { |
group-FlexBook | 0:fa7450a43b99 | 79 | using namespace Flexbook; |
group-FlexBook | 0:fa7450a43b99 | 80 | |
group-FlexBook | 0:fa7450a43b99 | 81 | static PageType lastype = Flexbook::PageType_PageNull; |
group-FlexBook | 0:fa7450a43b99 | 82 | |
group-FlexBook | 0:fa7450a43b99 | 83 | //printf("%x\n", GetMCP23S17().Read(GPIOA)); |
group-FlexBook | 0:fa7450a43b99 | 84 | |
group-FlexBook | 0:fa7450a43b99 | 85 | switch(GetMCP23S17().Read(GPIOA)) |
group-FlexBook | 0:fa7450a43b99 | 86 | { |
group-FlexBook | 0:fa7450a43b99 | 87 | case 0: |
group-FlexBook | 0:fa7450a43b99 | 88 | break; |
group-FlexBook | 0:fa7450a43b99 | 89 | |
group-FlexBook | 0:fa7450a43b99 | 90 | //case PageType_PageSensor: |
group-FlexBook | 0:fa7450a43b99 | 91 | case 0xFE: |
group-FlexBook | 0:fa7450a43b99 | 92 | lastype = PageType_PageSensor; |
group-FlexBook | 0:fa7450a43b99 | 93 | break; |
group-FlexBook | 0:fa7450a43b99 | 94 | |
group-FlexBook | 0:fa7450a43b99 | 95 | case 0xF7: |
group-FlexBook | 0:fa7450a43b99 | 96 | lastype = PageType_PageDice; |
group-FlexBook | 0:fa7450a43b99 | 97 | break; |
group-FlexBook | 0:fa7450a43b99 | 98 | |
group-FlexBook | 0:fa7450a43b99 | 99 | case PageType_PageOLED: |
group-FlexBook | 0:fa7450a43b99 | 100 | lastype = PageType_PageOLED; |
group-FlexBook | 0:fa7450a43b99 | 101 | break; |
group-FlexBook | 0:fa7450a43b99 | 102 | |
group-FlexBook | 0:fa7450a43b99 | 103 | //case PageType_PageTouch: |
group-FlexBook | 0:fa7450a43b99 | 104 | case 0xFD: |
group-FlexBook | 0:fa7450a43b99 | 105 | lastype = PageType_PageTouch; |
group-FlexBook | 0:fa7450a43b99 | 106 | break; |
group-FlexBook | 0:fa7450a43b99 | 107 | |
group-FlexBook | 0:fa7450a43b99 | 108 | case PageType_PageFlexEnable: |
group-FlexBook | 0:fa7450a43b99 | 109 | lastype = PageType_PageFlexEnable; |
group-FlexBook | 0:fa7450a43b99 | 110 | break; |
group-FlexBook | 0:fa7450a43b99 | 111 | |
group-FlexBook | 0:fa7450a43b99 | 112 | case PageType_PageNFC: |
group-FlexBook | 0:fa7450a43b99 | 113 | lastype = PageType_PageNFC; |
group-FlexBook | 0:fa7450a43b99 | 114 | break; |
group-FlexBook | 0:fa7450a43b99 | 115 | |
group-FlexBook | 0:fa7450a43b99 | 116 | default: |
group-FlexBook | 0:fa7450a43b99 | 117 | break; |
group-FlexBook | 0:fa7450a43b99 | 118 | } |
group-FlexBook | 0:fa7450a43b99 | 119 | |
group-FlexBook | 0:fa7450a43b99 | 120 | return lastype; |
group-FlexBook | 0:fa7450a43b99 | 121 | } |
group-FlexBook | 0:fa7450a43b99 | 122 | |
group-FlexBook | 0:fa7450a43b99 | 123 | } // End HAL namespace. |
group-FlexBook | 0:fa7450a43b99 | 124 | |
group-FlexBook | 0:fa7450a43b99 | 125 | |
group-FlexBook | 0:fa7450a43b99 | 126 | |
group-FlexBook | 0:fa7450a43b99 | 127 |