Added HangmanGame class, but does not work yet

Dependencies:   SDFileSystem app epson mbed msp430 pl tests

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?

UserRevisionLine numberNew contents of line
group-FlexBook 0:fa7450a43b99 1 //
group-FlexBook 0:fa7450a43b99 2 // Filename: at42qt2120.h
group-FlexBook 0:fa7450a43b99 3 //
group-FlexBook 0:fa7450a43b99 4 // Atmel AT42QT2120 12 channel touch sensor.
group-FlexBook 0:fa7450a43b99 5 //
group-FlexBook 0:fa7450a43b99 6
group-FlexBook 0:fa7450a43b99 7 #ifndef AT42QT2120_H
group-FlexBook 0:fa7450a43b99 8 #define AT42QT2120_H
group-FlexBook 0:fa7450a43b99 9
group-FlexBook 0:fa7450a43b99 10 #include "mbed.h"
group-FlexBook 0:fa7450a43b99 11
group-FlexBook 0:fa7450a43b99 12 namespace HAL {
group-FlexBook 0:fa7450a43b99 13
group-FlexBook 0:fa7450a43b99 14 /**
group-FlexBook 0:fa7450a43b99 15 * @brief AT42QT2120 registers.
group-FlexBook 0:fa7450a43b99 16 */
group-FlexBook 0:fa7450a43b99 17 enum REG_AT42QT2120
group-FlexBook 0:fa7450a43b99 18 {
group-FlexBook 0:fa7450a43b99 19 QT_CHIP_ID = 0,
group-FlexBook 0:fa7450a43b99 20 QT_FIRMWARE_VERSION,
group-FlexBook 0:fa7450a43b99 21 QT_DETECTION_STATUS,
group-FlexBook 0:fa7450a43b99 22 QT_KEY_STATUS,
group-FlexBook 0:fa7450a43b99 23 QT_KEY_STATUS2,
group-FlexBook 0:fa7450a43b99 24 QT_SLIDER_POSITION = 5,
group-FlexBook 0:fa7450a43b99 25 QT_CALIBRATE,
group-FlexBook 0:fa7450a43b99 26 QT_RESET,
group-FlexBook 0:fa7450a43b99 27 QT_LP,
group-FlexBook 0:fa7450a43b99 28 QT_TTD,
group-FlexBook 0:fa7450a43b99 29 QT_ATD,
group-FlexBook 0:fa7450a43b99 30 QT_DI,
group-FlexBook 0:fa7450a43b99 31 QT_TRD,
group-FlexBook 0:fa7450a43b99 32 QT_DHT,
group-FlexBook 0:fa7450a43b99 33 QT_SLIDER_OPTION,
group-FlexBook 0:fa7450a43b99 34 QT_CHARDE_TIME,
group-FlexBook 0:fa7450a43b99 35 QT_KEY0_DTHR,
group-FlexBook 0:fa7450a43b99 36 QT_KEY1_DTHR,
group-FlexBook 0:fa7450a43b99 37 QT_KEY2_DTHR,
group-FlexBook 0:fa7450a43b99 38 QT_KEY3_DTHR,
group-FlexBook 0:fa7450a43b99 39 QT_KEY4_DTHR,
group-FlexBook 0:fa7450a43b99 40 QT_KEY5_DTHR,
group-FlexBook 0:fa7450a43b99 41 QT_KEY6_DTHR,
group-FlexBook 0:fa7450a43b99 42 QT_KEY7_DTHR,
group-FlexBook 0:fa7450a43b99 43 QT_KEY8_DTHR,
group-FlexBook 0:fa7450a43b99 44 QT_KEY9_DTHR,
group-FlexBook 0:fa7450a43b99 45 QT_KEY10_DTHR,
group-FlexBook 0:fa7450a43b99 46 QT_KEY11_DTHR,
group-FlexBook 0:fa7450a43b99 47 QT_KEY0_CTRL,
group-FlexBook 0:fa7450a43b99 48 QT_KEY1_CTRL,
group-FlexBook 0:fa7450a43b99 49 QT_KEY2_CTRL,
group-FlexBook 0:fa7450a43b99 50 QT_KEY3_CTRL,
group-FlexBook 0:fa7450a43b99 51 QT_KEY4_CTRL,
group-FlexBook 0:fa7450a43b99 52 QT_KEY5_CTRL,
group-FlexBook 0:fa7450a43b99 53 QT_KEY6_CTRL,
group-FlexBook 0:fa7450a43b99 54 QT_KEY7_CTRL,
group-FlexBook 0:fa7450a43b99 55 QT_KEY8_CTRL,
group-FlexBook 0:fa7450a43b99 56 QT_KEY9_CTRL,
group-FlexBook 0:fa7450a43b99 57 QT_KEY10_CTRL,
group-FlexBook 0:fa7450a43b99 58 QT_KEY11_CTRL,
group-FlexBook 0:fa7450a43b99 59 QT_KEY0_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 60 QT_KEY1_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 61 QT_KEY2_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 62 QT_KEY3_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 63 QT_KEY4_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 64 QT_KEY5_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 65 QT_KEY6_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 66 QT_KEY7_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 67 QT_KEY8_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 68 QT_KEY9_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 69 QT_KEY10_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 70 QT_KEY11_PULSE_SCALE,
group-FlexBook 0:fa7450a43b99 71 QT_KEY0_SIGNAL,
group-FlexBook 0:fa7450a43b99 72 QT_KEY1_SIGNAL = 54,
group-FlexBook 0:fa7450a43b99 73 QT_KEY2_SIGNAL = 56,
group-FlexBook 0:fa7450a43b99 74 QT_KEY3_SIGNAL = 58,
group-FlexBook 0:fa7450a43b99 75 QT_KEY4_SIGNAL = 60,
group-FlexBook 0:fa7450a43b99 76 QT_KEY5_SIGNAL = 62,
group-FlexBook 0:fa7450a43b99 77 QT_KEY6_SIGNAL = 64,
group-FlexBook 0:fa7450a43b99 78 QT_KEY7_SIGNAL = 66,
group-FlexBook 0:fa7450a43b99 79 QT_KEY8_SIGNAL = 68,
group-FlexBook 0:fa7450a43b99 80 QT_KEY9_SIGNAL = 70,
group-FlexBook 0:fa7450a43b99 81 QT_KEY10_SIGNAL = 72,
group-FlexBook 0:fa7450a43b99 82 QT_KEY11_SIGNAL = 74,
group-FlexBook 0:fa7450a43b99 83 QT_KEY0_REFERENCE = 76,
group-FlexBook 0:fa7450a43b99 84 QT_KEY1_REFERENCE = 78,
group-FlexBook 0:fa7450a43b99 85 QT_KEY2_REFERENCE = 80,
group-FlexBook 0:fa7450a43b99 86 QT_KEY3_REFERENCE = 82,
group-FlexBook 0:fa7450a43b99 87 QT_KEY4_REFERENCE = 84,
group-FlexBook 0:fa7450a43b99 88 QT_KEY5_REFERENCE = 86,
group-FlexBook 0:fa7450a43b99 89 QT_KEY6_REFERENCE = 88,
group-FlexBook 0:fa7450a43b99 90 QT_KEY7_REFERENCE = 90,
group-FlexBook 0:fa7450a43b99 91 QT_KEY8_REFERENCE = 92,
group-FlexBook 0:fa7450a43b99 92 QT_KEY9_REFERENCE = 94,
group-FlexBook 0:fa7450a43b99 93 QT_KEY10_REFERENCE = 96,
group-FlexBook 0:fa7450a43b99 94 QT_KEY11_REFERENCE = 98,
group-FlexBook 0:fa7450a43b99 95 };
group-FlexBook 0:fa7450a43b99 96
group-FlexBook 0:fa7450a43b99 97 enum SLIDERMODE_AT42QT2120
group-FlexBook 0:fa7450a43b99 98 {
group-FlexBook 0:fa7450a43b99 99 NONE,
group-FlexBook 0:fa7450a43b99 100 SLIDER,
group-FlexBook 0:fa7450a43b99 101 WHEEL
group-FlexBook 0:fa7450a43b99 102 };
group-FlexBook 0:fa7450a43b99 103
group-FlexBook 0:fa7450a43b99 104 // Control register bit positions.
group-FlexBook 0:fa7450a43b99 105 const uint8_t CTRL_EN = (1 << 0);
group-FlexBook 0:fa7450a43b99 106 const uint8_t CTRL_GPO = (1 << 1);
group-FlexBook 0:fa7450a43b99 107 const uint8_t CTRL_GUARD = (1 << 4);
group-FlexBook 0:fa7450a43b99 108
group-FlexBook 0:fa7450a43b99 109 const int KEY0 = (1 << 0);
group-FlexBook 0:fa7450a43b99 110 const int KEY1 = (1 << 1);
group-FlexBook 0:fa7450a43b99 111 const int KEY2 = (1 << 2);
group-FlexBook 0:fa7450a43b99 112 const int KEY3 = (1 << 3);
group-FlexBook 0:fa7450a43b99 113 const int KEY4 = (1 << 4);
group-FlexBook 0:fa7450a43b99 114 const int KEY5 = (1 << 5);
group-FlexBook 0:fa7450a43b99 115 const int KEY6 = (1 << 6);
group-FlexBook 0:fa7450a43b99 116 const int KEY7 = (1 << 7);
group-FlexBook 0:fa7450a43b99 117 const int KEY8 = (1 << 8);
group-FlexBook 0:fa7450a43b99 118 const int KEY9 = (1 << 9);
group-FlexBook 0:fa7450a43b99 119 const int KEY10 = (1 << 10);
group-FlexBook 0:fa7450a43b99 120 const int KEY11 = (1 << 11);
group-FlexBook 0:fa7450a43b99 121
group-FlexBook 0:fa7450a43b99 122 const uint8_t TDET = (1 << 0);
group-FlexBook 0:fa7450a43b99 123 const uint8_t SDET = (1 << 1);
group-FlexBook 0:fa7450a43b99 124
group-FlexBook 0:fa7450a43b99 125 /**
group-FlexBook 0:fa7450a43b99 126 * @brief Atmel AT42QT2120 encapsulation.
group-FlexBook 0:fa7450a43b99 127 * This chip is a 12 channel touch sensor.
group-FlexBook 0:fa7450a43b99 128 *
group-FlexBook 0:fa7450a43b99 129 * Example usage:
group-FlexBook 0:fa7450a43b99 130 <pre>
group-FlexBook 0:fa7450a43b99 131 I2C i2c(p28, p27);
group-FlexBook 0:fa7450a43b99 132 AT42QT2120 at42qt2120(i2c);
group-FlexBook 0:fa7450a43b99 133 ...
group-FlexBook 0:fa7450a43b99 134 at42qt2120.Write(QT_RESET, 0);
group-FlexBook 0:fa7450a43b99 135 </pre>
group-FlexBook 0:fa7450a43b99 136 *
group-FlexBook 0:fa7450a43b99 137 * The AT42QT2120 uses pins 28 and 27 (SDA and SCL) for communication
group-FlexBook 0:fa7450a43b99 138 * and the write command resets the chip.
group-FlexBook 0:fa7450a43b99 139 *
group-FlexBook 0:fa7450a43b99 140 * The chip address of the AT42QT2120 is fixed at 0x1c.
group-FlexBook 0:fa7450a43b99 141 *
group-FlexBook 0:fa7450a43b99 142 * Note that this code example does not cover the setup of the chip
group-FlexBook 0:fa7450a43b99 143 * configuration registers.
group-FlexBook 0:fa7450a43b99 144 */
group-FlexBook 0:fa7450a43b99 145 class AT42QT2120
group-FlexBook 0:fa7450a43b99 146 {
group-FlexBook 0:fa7450a43b99 147 public:
group-FlexBook 0:fa7450a43b99 148 /**
group-FlexBook 0:fa7450a43b99 149 * @brief Constructor.
group-FlexBook 0:fa7450a43b99 150 * @param I2C the I2C to use for communication.
group-FlexBook 0:fa7450a43b99 151 */
group-FlexBook 0:fa7450a43b99 152 AT42QT2120(I2C &i2c);
group-FlexBook 0:fa7450a43b99 153
group-FlexBook 0:fa7450a43b99 154 /**
group-FlexBook 0:fa7450a43b99 155 * @brief Calibrate any enabled touch sensors.
group-FlexBook 0:fa7450a43b99 156 * @return True if calibration was successfull.
group-FlexBook 0:fa7450a43b99 157 */
group-FlexBook 0:fa7450a43b99 158 bool Calibrate();
group-FlexBook 0:fa7450a43b99 159
group-FlexBook 0:fa7450a43b99 160 /**
group-FlexBook 0:fa7450a43b99 161 * @brief Set the key control bits.
group-FlexBook 0:fa7450a43b99 162 * See section 5.17 of the datasheet for more information.
group-FlexBook 0:fa7450a43b99 163 * All keys are initially disabled in the constructor so this
group-FlexBook 0:fa7450a43b99 164 * function must be called to configure the keys before use.
group-FlexBook 0:fa7450a43b99 165 * After calling this function you should call Calibrate().
group-FlexBook 0:fa7450a43b99 166 * @param key The key to configure.
group-FlexBook 0:fa7450a43b99 167 * @param guard Set to true if this is a guard channel.
group-FlexBook 0:fa7450a43b99 168 * @param group The key group (AKS) number.
group-FlexBook 0:fa7450a43b99 169 * @param gpu Set to true for high output.
group-FlexBook 0:fa7450a43b99 170 * @param enable Enable this key. Unused keys should be disabled.
group-FlexBook 0:fa7450a43b99 171 */
group-FlexBook 0:fa7450a43b99 172 bool SetKeyControl(uint8_t key, bool guard, uint8_t group, bool gpo, bool enable);
group-FlexBook 0:fa7450a43b99 173
group-FlexBook 0:fa7450a43b99 174 /**
group-FlexBook 0:fa7450a43b99 175 * @brief Set the slider options.
group-FlexBook 0:fa7450a43b99 176 * @param Set to SLIDER, WHEEL or NONE to set the required mode.
group-FlexBook 0:fa7450a43b99 177 */
group-FlexBook 0:fa7450a43b99 178 void SetSliderOptions(SLIDERMODE_AT42QT2120 mode);
group-FlexBook 0:fa7450a43b99 179
group-FlexBook 0:fa7450a43b99 180 /**
group-FlexBook 0:fa7450a43b99 181 * @brief Touch sensor status.
group-FlexBook 0:fa7450a43b99 182 */
group-FlexBook 0:fa7450a43b99 183 struct Status
group-FlexBook 0:fa7450a43b99 184 {
group-FlexBook 0:fa7450a43b99 185 /**
group-FlexBook 0:fa7450a43b99 186 * @brief True if the keys have changed.
group-FlexBook 0:fa7450a43b99 187 */
group-FlexBook 0:fa7450a43b99 188 bool keyschanged;
group-FlexBook 0:fa7450a43b99 189
group-FlexBook 0:fa7450a43b99 190 /**
group-FlexBook 0:fa7450a43b99 191 * @brief The key change bit mask.
group-FlexBook 0:fa7450a43b99 192 * Use KEYn to extract the individual key status.
group-FlexBook 0:fa7450a43b99 193 */
group-FlexBook 0:fa7450a43b99 194 uint16_t keys;
group-FlexBook 0:fa7450a43b99 195
group-FlexBook 0:fa7450a43b99 196 /**
group-FlexBook 0:fa7450a43b99 197 * @brief True if the slider has changed.
group-FlexBook 0:fa7450a43b99 198 */
group-FlexBook 0:fa7450a43b99 199 bool sliderchanged;
group-FlexBook 0:fa7450a43b99 200
group-FlexBook 0:fa7450a43b99 201 /**
group-FlexBook 0:fa7450a43b99 202 * @brief The slider position.
group-FlexBook 0:fa7450a43b99 203 */
group-FlexBook 0:fa7450a43b99 204 bool slider;
group-FlexBook 0:fa7450a43b99 205 };
group-FlexBook 0:fa7450a43b99 206
group-FlexBook 0:fa7450a43b99 207 /**
group-FlexBook 0:fa7450a43b99 208 * @brief Read the status of the touch sensor.
group-FlexBook 0:fa7450a43b99 209 * @param status Pointer to hold the status information.
group-FlexBook 0:fa7450a43b99 210 * @return True if the transfer completes successfully.
group-FlexBook 0:fa7450a43b99 211 */
group-FlexBook 0:fa7450a43b99 212 bool ReadStatus(Status &status);
group-FlexBook 0:fa7450a43b99 213
group-FlexBook 0:fa7450a43b99 214 /**
group-FlexBook 0:fa7450a43b99 215 * @brief Read a register.
group-FlexBook 0:fa7450a43b99 216 * @param reg The register to read.
group-FlexBook 0:fa7450a43b99 217 * @return The register value.
group-FlexBook 0:fa7450a43b99 218 */
group-FlexBook 0:fa7450a43b99 219 int Read(REG_AT42QT2120 reg);
group-FlexBook 0:fa7450a43b99 220
group-FlexBook 0:fa7450a43b99 221 /**
group-FlexBook 0:fa7450a43b99 222 * @brief Write a register.
group-FlexBook 0:fa7450a43b99 223 * @param reg The register to write.
group-FlexBook 0:fa7450a43b99 224 * @param value The value to write to the register.
group-FlexBook 0:fa7450a43b99 225 * @return True on success.
group-FlexBook 0:fa7450a43b99 226 */
group-FlexBook 0:fa7450a43b99 227 bool Write(REG_AT42QT2120 reg, uint8_t value);
group-FlexBook 0:fa7450a43b99 228
group-FlexBook 0:fa7450a43b99 229 private:
group-FlexBook 0:fa7450a43b99 230 I2C &i2c;
group-FlexBook 0:fa7450a43b99 231 Status status;
group-FlexBook 0:fa7450a43b99 232 };
group-FlexBook 0:fa7450a43b99 233
group-FlexBook 0:fa7450a43b99 234 } // End HAL namespace.
group-FlexBook 0:fa7450a43b99 235
group-FlexBook 0:fa7450a43b99 236 #endif // MCP23S17_H