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 Plastic Logic EPD project on MSP430
group-FlexBook 0:fa7450a43b99 3
group-FlexBook 0:fa7450a43b99 4 Copyright (C) 2014 Plastic Logic Limited
group-FlexBook 0:fa7450a43b99 5
group-FlexBook 0:fa7450a43b99 6 This program is free software: you can redistribute it and/or modify
group-FlexBook 0:fa7450a43b99 7 it under the terms of the GNU General Public License as published by
group-FlexBook 0:fa7450a43b99 8 the Free Software Foundation, either version 3 of the License, or
group-FlexBook 0:fa7450a43b99 9 (at your option) any later version.
group-FlexBook 0:fa7450a43b99 10
group-FlexBook 0:fa7450a43b99 11 This program is distributed in the hope that it will be useful,
group-FlexBook 0:fa7450a43b99 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
group-FlexBook 0:fa7450a43b99 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
group-FlexBook 0:fa7450a43b99 14 GNU General Public License for more details.
group-FlexBook 0:fa7450a43b99 15
group-FlexBook 0:fa7450a43b99 16 You should have received a copy of the GNU General Public License
group-FlexBook 0:fa7450a43b99 17 along with this program. If not, see <http://www.gnu.org/licenses/>.
group-FlexBook 0:fa7450a43b99 18 */
group-FlexBook 0:fa7450a43b99 19 /*
group-FlexBook 0:fa7450a43b99 20 * epdpsu.c -- EPD PSU generic implementation
group-FlexBook 0:fa7450a43b99 21 *
group-FlexBook 0:fa7450a43b99 22 * Authors:
group-FlexBook 0:fa7450a43b99 23 * Guillaume Tucker <guillaume.tucker@plasticlogic.com>
group-FlexBook 0:fa7450a43b99 24 *
group-FlexBook 0:fa7450a43b99 25 */
group-FlexBook 0:fa7450a43b99 26
group-FlexBook 0:fa7450a43b99 27 #include <pl/epdpsu.h>
group-FlexBook 0:fa7450a43b99 28 #include <pl/gpio.h>
group-FlexBook 0:fa7450a43b99 29 #include <pl/epdc.h>
group-FlexBook 0:fa7450a43b99 30 #include "assert.h"
group-FlexBook 0:fa7450a43b99 31
group-FlexBook 0:fa7450a43b99 32 #define LOG_TAG "epdpsu"
group-FlexBook 0:fa7450a43b99 33 #include "utils.h"
group-FlexBook 0:fa7450a43b99 34
group-FlexBook 0:fa7450a43b99 35 /* Set to 1 to enable verbose logging */
group-FlexBook 0:fa7450a43b99 36 #define LOG_VERBOSE 0
group-FlexBook 0:fa7450a43b99 37
group-FlexBook 0:fa7450a43b99 38 /* --- GPIO --- */
group-FlexBook 0:fa7450a43b99 39
group-FlexBook 0:fa7450a43b99 40 static int pl_epdpsu_gpio_on(struct pl_epdpsu *psu)
group-FlexBook 0:fa7450a43b99 41 {
group-FlexBook 0:fa7450a43b99 42 struct pl_epdpsu_gpio *p = psu->data;
group-FlexBook 0:fa7450a43b99 43 unsigned timeout;
group-FlexBook 0:fa7450a43b99 44
group-FlexBook 0:fa7450a43b99 45 if (psu->state)
group-FlexBook 0:fa7450a43b99 46 return 0;
group-FlexBook 0:fa7450a43b99 47
group-FlexBook 0:fa7450a43b99 48 #if LOG_VERBOSE
group-FlexBook 0:fa7450a43b99 49 LOG("on");
group-FlexBook 0:fa7450a43b99 50 #endif
group-FlexBook 0:fa7450a43b99 51
group-FlexBook 0:fa7450a43b99 52 pl_gpio_set(p->gpio, p->hv_en, 1);
group-FlexBook 0:fa7450a43b99 53
group-FlexBook 0:fa7450a43b99 54 for (timeout = p->timeout_ms; timeout; timeout--) {
group-FlexBook 0:fa7450a43b99 55 if (pl_gpio_get(p->gpio, p->pok))
group-FlexBook 0:fa7450a43b99 56 break;
group-FlexBook 0:fa7450a43b99 57 mdelay(1);
group-FlexBook 0:fa7450a43b99 58 }
group-FlexBook 0:fa7450a43b99 59
group-FlexBook 0:fa7450a43b99 60 if (!timeout) {
group-FlexBook 0:fa7450a43b99 61 LOG("POK timeout");
group-FlexBook 0:fa7450a43b99 62 pl_gpio_set(p->gpio, p->hv_en, 0);
group-FlexBook 0:fa7450a43b99 63 return -1;
group-FlexBook 0:fa7450a43b99 64 }
group-FlexBook 0:fa7450a43b99 65
group-FlexBook 0:fa7450a43b99 66 pl_gpio_set(p->gpio, p->com_close, 1);
group-FlexBook 0:fa7450a43b99 67 msleep(p->on_delay_ms);
group-FlexBook 0:fa7450a43b99 68 psu->state = 1;
group-FlexBook 0:fa7450a43b99 69
group-FlexBook 0:fa7450a43b99 70 return 0;
group-FlexBook 0:fa7450a43b99 71 }
group-FlexBook 0:fa7450a43b99 72
group-FlexBook 0:fa7450a43b99 73 static int pl_epdpsu_gpio_off(struct pl_epdpsu *psu)
group-FlexBook 0:fa7450a43b99 74 {
group-FlexBook 0:fa7450a43b99 75 struct pl_epdpsu_gpio *p = psu->data;
group-FlexBook 0:fa7450a43b99 76
group-FlexBook 0:fa7450a43b99 77 #if LOG_VERBOSE
group-FlexBook 0:fa7450a43b99 78 LOG("off");
group-FlexBook 0:fa7450a43b99 79 #endif
group-FlexBook 0:fa7450a43b99 80
group-FlexBook 0:fa7450a43b99 81 pl_gpio_set(p->gpio, p->com_close, 0);
group-FlexBook 0:fa7450a43b99 82 pl_gpio_set(p->gpio, p->hv_en, 0);
group-FlexBook 0:fa7450a43b99 83 msleep(p->off_delay_ms);
group-FlexBook 0:fa7450a43b99 84 psu->state = 0;
group-FlexBook 0:fa7450a43b99 85
group-FlexBook 0:fa7450a43b99 86 return 0;
group-FlexBook 0:fa7450a43b99 87 }
group-FlexBook 0:fa7450a43b99 88
group-FlexBook 0:fa7450a43b99 89 int pl_epdpsu_gpio_init(struct pl_epdpsu *psu, struct pl_epdpsu_gpio *p)
group-FlexBook 0:fa7450a43b99 90 {
group-FlexBook 0:fa7450a43b99 91 assert(psu != NULL);
group-FlexBook 0:fa7450a43b99 92 assert(p != NULL);
group-FlexBook 0:fa7450a43b99 93 assert(p->gpio != NULL);
group-FlexBook 0:fa7450a43b99 94 assert(p->timeout_ms != 0);
group-FlexBook 0:fa7450a43b99 95 assert(p->hv_en != PL_GPIO_NONE);
group-FlexBook 0:fa7450a43b99 96 assert(p->com_close != PL_GPIO_NONE);
group-FlexBook 0:fa7450a43b99 97 assert(p->pok != PL_GPIO_NONE);
group-FlexBook 0:fa7450a43b99 98 assert(p->flt != PL_GPIO_NONE);
group-FlexBook 0:fa7450a43b99 99
group-FlexBook 0:fa7450a43b99 100 psu->on = pl_epdpsu_gpio_on;
group-FlexBook 0:fa7450a43b99 101 psu->off = pl_epdpsu_gpio_off;
group-FlexBook 0:fa7450a43b99 102 psu->state = 0;
group-FlexBook 0:fa7450a43b99 103 psu->data = p;
group-FlexBook 0:fa7450a43b99 104
group-FlexBook 0:fa7450a43b99 105 return 0;
group-FlexBook 0:fa7450a43b99 106 }
group-FlexBook 0:fa7450a43b99 107
group-FlexBook 0:fa7450a43b99 108 /* --- EPDC --- */
group-FlexBook 0:fa7450a43b99 109
group-FlexBook 0:fa7450a43b99 110 static int pl_epdpsu_epdc_on(struct pl_epdpsu *psu)
group-FlexBook 0:fa7450a43b99 111 {
group-FlexBook 0:fa7450a43b99 112 struct pl_epdc *epdc = psu->data;
group-FlexBook 0:fa7450a43b99 113
group-FlexBook 0:fa7450a43b99 114 if (!psu->state) {
group-FlexBook 0:fa7450a43b99 115 if (epdc->set_epd_power(epdc, 1))
group-FlexBook 0:fa7450a43b99 116 return -1;
group-FlexBook 0:fa7450a43b99 117
group-FlexBook 0:fa7450a43b99 118 psu->state = 1;
group-FlexBook 0:fa7450a43b99 119 }
group-FlexBook 0:fa7450a43b99 120
group-FlexBook 0:fa7450a43b99 121 return 0;
group-FlexBook 0:fa7450a43b99 122 }
group-FlexBook 0:fa7450a43b99 123
group-FlexBook 0:fa7450a43b99 124 static int pl_epdpsu_epdc_off(struct pl_epdpsu *psu)
group-FlexBook 0:fa7450a43b99 125 {
group-FlexBook 0:fa7450a43b99 126 struct pl_epdc *epdc = psu->data;
group-FlexBook 0:fa7450a43b99 127
group-FlexBook 0:fa7450a43b99 128 if (psu->state) {
group-FlexBook 0:fa7450a43b99 129 if (epdc->set_epd_power(epdc, 0))
group-FlexBook 0:fa7450a43b99 130 return -1;
group-FlexBook 0:fa7450a43b99 131
group-FlexBook 0:fa7450a43b99 132 psu->state = 0;
group-FlexBook 0:fa7450a43b99 133 }
group-FlexBook 0:fa7450a43b99 134
group-FlexBook 0:fa7450a43b99 135 return 0;
group-FlexBook 0:fa7450a43b99 136 }
group-FlexBook 0:fa7450a43b99 137
group-FlexBook 0:fa7450a43b99 138 int pl_epdpsu_epdc_init(struct pl_epdpsu *psu, struct pl_epdc *epdc)
group-FlexBook 0:fa7450a43b99 139 {
group-FlexBook 0:fa7450a43b99 140 psu->on = pl_epdpsu_epdc_on;
group-FlexBook 0:fa7450a43b99 141 psu->off = pl_epdpsu_epdc_off;
group-FlexBook 0:fa7450a43b99 142 psu->state = 0;
group-FlexBook 0:fa7450a43b99 143 psu->data = epdc;
group-FlexBook 0:fa7450a43b99 144
group-FlexBook 0:fa7450a43b99 145 return 0;
group-FlexBook 0:fa7450a43b99 146 }
group-FlexBook 0:fa7450a43b99 147
group-FlexBook 0:fa7450a43b99 148 #if PL_EPDPSU_STUB
group-FlexBook 0:fa7450a43b99 149
group-FlexBook 0:fa7450a43b99 150 /* --- Stub --- */
group-FlexBook 0:fa7450a43b99 151
group-FlexBook 0:fa7450a43b99 152 static int pl_epdpsu_stub_on(struct pl_epdpsu *psu)
group-FlexBook 0:fa7450a43b99 153 {
group-FlexBook 0:fa7450a43b99 154 #if LOG_VERBOSE
group-FlexBook 0:fa7450a43b99 155 LOG("stub on");
group-FlexBook 0:fa7450a43b99 156 #endif
group-FlexBook 0:fa7450a43b99 157
group-FlexBook 0:fa7450a43b99 158 psu->state = 1;
group-FlexBook 0:fa7450a43b99 159
group-FlexBook 0:fa7450a43b99 160 return 0;
group-FlexBook 0:fa7450a43b99 161 }
group-FlexBook 0:fa7450a43b99 162
group-FlexBook 0:fa7450a43b99 163 static int pl_epdpsu_stub_off(struct pl_epdpsu *psu)
group-FlexBook 0:fa7450a43b99 164 {
group-FlexBook 0:fa7450a43b99 165 #if LOG_VERBOSE
group-FlexBook 0:fa7450a43b99 166 LOG("stub off");
group-FlexBook 0:fa7450a43b99 167 #endif
group-FlexBook 0:fa7450a43b99 168
group-FlexBook 0:fa7450a43b99 169 psu->state = 0;
group-FlexBook 0:fa7450a43b99 170
group-FlexBook 0:fa7450a43b99 171 return 0;
group-FlexBook 0:fa7450a43b99 172 }
group-FlexBook 0:fa7450a43b99 173
group-FlexBook 0:fa7450a43b99 174 int pl_epdpsu_stub_init(struct pl_epdpsu *psu)
group-FlexBook 0:fa7450a43b99 175 {
group-FlexBook 0:fa7450a43b99 176 assert(psu != NULL);
group-FlexBook 0:fa7450a43b99 177
group-FlexBook 0:fa7450a43b99 178 psu->on = pl_epdpsu_stub_on;
group-FlexBook 0:fa7450a43b99 179 psu->off = pl_epdpsu_stub_off;
group-FlexBook 0:fa7450a43b99 180 psu->state = 0;
group-FlexBook 0:fa7450a43b99 181 psu->data = NULL;
group-FlexBook 0:fa7450a43b99 182
group-FlexBook 0:fa7450a43b99 183 return 0;
group-FlexBook 0:fa7450a43b99 184 }
group-FlexBook 0:fa7450a43b99 185
group-FlexBook 0:fa7450a43b99 186 #endif /* PL_EPDPSU_STUB */