Added HangmanGame class, but does not work yet

Dependencies:   SDFileSystem app epson mbed msp430 pl tests

Committer:
group-FlexBook
Date:
Mon Dec 04 09:32:20 2017 +0000
Revision:
0:fa7450a43b99
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew 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