Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem app epson mbed msp430 pl tests
pagetouch.cpp@0:c643d398cdb6, 2018-01-11 (annotated)
- Committer:
- marcbax
- Date:
- Thu Jan 11 13:42:27 2018 +0000
- Revision:
- 0:c643d398cdb6
Marc Bax version 180111. It hangs on the WritePartImage in the RedrawAlphabet routine in hangman.cpp. Within that call it does execute Ypos(), but not Xpos().
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| marcbax | 0:c643d398cdb6 | 1 | // |
| marcbax | 0:c643d398cdb6 | 2 | // Filename: pagetouch.cpp |
| marcbax | 0:c643d398cdb6 | 3 | // |
| marcbax | 0:c643d398cdb6 | 4 | // Flexbook page for page A4. |
| marcbax | 0:c643d398cdb6 | 5 | // |
| marcbax | 0:c643d398cdb6 | 6 | |
| marcbax | 0:c643d398cdb6 | 7 | #include "pagetouch.h" |
| marcbax | 0:c643d398cdb6 | 8 | #include "pageflexenable.h" |
| marcbax | 0:c643d398cdb6 | 9 | |
| marcbax | 0:c643d398cdb6 | 10 | #include "eink.h" |
| marcbax | 0:c643d398cdb6 | 11 | |
| marcbax | 0:c643d398cdb6 | 12 | #include "log.h" |
| marcbax | 0:c643d398cdb6 | 13 | |
| marcbax | 0:c643d398cdb6 | 14 | #include <iostream> |
| marcbax | 0:c643d398cdb6 | 15 | |
| marcbax | 0:c643d398cdb6 | 16 | namespace Flexbook { |
| marcbax | 0:c643d398cdb6 | 17 | |
| marcbax | 0:c643d398cdb6 | 18 | PageTouch::PageTouch() |
| marcbax | 0:c643d398cdb6 | 19 | : pageflexenable(), |
| marcbax | 0:c643d398cdb6 | 20 | hangmangame(), |
| marcbax | 0:c643d398cdb6 | 21 | i2c(p28, p27), irq(p26), |
| marcbax | 0:c643d398cdb6 | 22 | at42qt2120(i2c), key(0) |
| marcbax | 0:c643d398cdb6 | 23 | { |
| marcbax | 0:c643d398cdb6 | 24 | Log("Creating PageTouch"); |
| marcbax | 0:c643d398cdb6 | 25 | |
| marcbax | 0:c643d398cdb6 | 26 | |
| marcbax | 0:c643d398cdb6 | 27 | at42qt2120.SetSliderOptions(HAL::WHEEL); |
| marcbax | 0:c643d398cdb6 | 28 | |
| marcbax | 0:c643d398cdb6 | 29 | at42qt2120.SetKeyControl(1, false, 2, false, true); |
| marcbax | 0:c643d398cdb6 | 30 | at42qt2120.SetKeyControl(2, false, 2, false, true); |
| marcbax | 0:c643d398cdb6 | 31 | at42qt2120.SetKeyControl(3, false, 2, false, true); |
| marcbax | 0:c643d398cdb6 | 32 | |
| marcbax | 0:c643d398cdb6 | 33 | at42qt2120.SetKeyControl(5, false, 1, false, true); |
| marcbax | 0:c643d398cdb6 | 34 | at42qt2120.SetKeyControl(6, false, 1, false, true); |
| marcbax | 0:c643d398cdb6 | 35 | at42qt2120.SetKeyControl(7, false, 1, false, true); |
| marcbax | 0:c643d398cdb6 | 36 | at42qt2120.SetKeyControl(8, false, 1, false, true); |
| marcbax | 0:c643d398cdb6 | 37 | at42qt2120.SetKeyControl(9, false, 1, false, true); |
| marcbax | 0:c643d398cdb6 | 38 | at42qt2120.SetKeyControl(10, false, 1, false, true); |
| marcbax | 0:c643d398cdb6 | 39 | |
| marcbax | 0:c643d398cdb6 | 40 | irq.fall(callback(this, &Flexbook::PageTouch::TouchChange)); |
| marcbax | 0:c643d398cdb6 | 41 | newtouch = false; |
| marcbax | 0:c643d398cdb6 | 42 | imgnumber = 0; |
| marcbax | 0:c643d398cdb6 | 43 | |
| marcbax | 0:c643d398cdb6 | 44 | #ifdef VERBOSE |
| marcbax | 0:c643d398cdb6 | 45 | for(int n = 0; n < 99; n++) |
| marcbax | 0:c643d398cdb6 | 46 | printf("Register %03d %02x\n", n, at42qt2120.Read((HAL::REG_AT42QT2120) n)); |
| marcbax | 0:c643d398cdb6 | 47 | #endif |
| marcbax | 0:c643d398cdb6 | 48 | } |
| marcbax | 0:c643d398cdb6 | 49 | |
| marcbax | 0:c643d398cdb6 | 50 | PageTouch::~PageTouch() |
| marcbax | 0:c643d398cdb6 | 51 | { |
| marcbax | 0:c643d398cdb6 | 52 | Log("Deleting PageTouch"); |
| marcbax | 0:c643d398cdb6 | 53 | |
| marcbax | 0:c643d398cdb6 | 54 | irq.disable_irq(); |
| marcbax | 0:c643d398cdb6 | 55 | } |
| marcbax | 0:c643d398cdb6 | 56 | |
| marcbax | 0:c643d398cdb6 | 57 | void PageTouch::TouchChange() |
| marcbax | 0:c643d398cdb6 | 58 | { |
| marcbax | 0:c643d398cdb6 | 59 | static volatile bool inirq = false; |
| marcbax | 0:c643d398cdb6 | 60 | if(!inirq) |
| marcbax | 0:c643d398cdb6 | 61 | { |
| marcbax | 0:c643d398cdb6 | 62 | inirq = true; |
| marcbax | 0:c643d398cdb6 | 63 | Page::ShortBeep(); |
| marcbax | 0:c643d398cdb6 | 64 | |
| marcbax | 0:c643d398cdb6 | 65 | HAL::AT42QT2120::Status status; |
| marcbax | 0:c643d398cdb6 | 66 | if(at42qt2120.ReadStatus(status)) |
| marcbax | 0:c643d398cdb6 | 67 | { |
| marcbax | 0:c643d398cdb6 | 68 | if(status.keyschanged) |
| marcbax | 0:c643d398cdb6 | 69 | { |
| marcbax | 0:c643d398cdb6 | 70 | key = status.keys; |
| marcbax | 0:c643d398cdb6 | 71 | |
| marcbax | 0:c643d398cdb6 | 72 | if(status.keys & HAL::KEY0) |
| marcbax | 0:c643d398cdb6 | 73 | Log("Key 0"); |
| marcbax | 0:c643d398cdb6 | 74 | if(status.keys & HAL::KEY1) |
| marcbax | 0:c643d398cdb6 | 75 | Log("Key 1"); |
| marcbax | 0:c643d398cdb6 | 76 | if(status.keys & HAL::KEY2) |
| marcbax | 0:c643d398cdb6 | 77 | Log("Key 2"); |
| marcbax | 0:c643d398cdb6 | 78 | if(status.keys & HAL::KEY3) |
| marcbax | 0:c643d398cdb6 | 79 | Log("Key 3"); |
| marcbax | 0:c643d398cdb6 | 80 | if(status.keys & HAL::KEY4) |
| marcbax | 0:c643d398cdb6 | 81 | Log("Key 4"); |
| marcbax | 0:c643d398cdb6 | 82 | if(status.keys & HAL::KEY5) |
| marcbax | 0:c643d398cdb6 | 83 | Log("Key 5"); |
| marcbax | 0:c643d398cdb6 | 84 | if(status.keys & HAL::KEY6) |
| marcbax | 0:c643d398cdb6 | 85 | { |
| marcbax | 0:c643d398cdb6 | 86 | Log("Key 6"); |
| marcbax | 0:c643d398cdb6 | 87 | hangmangame.currentpos = hangmangame.MoveCursor(hangmangame.alphabet, 6, hangmangame.oldpos); |
| marcbax | 0:c643d398cdb6 | 88 | Log("back in pagetouch"); |
| marcbax | 0:c643d398cdb6 | 89 | } |
| marcbax | 0:c643d398cdb6 | 90 | if(status.keys & HAL::KEY7) |
| marcbax | 0:c643d398cdb6 | 91 | { |
| marcbax | 0:c643d398cdb6 | 92 | Log("Key 7"); |
| marcbax | 0:c643d398cdb6 | 93 | hangmangame.currentpos = hangmangame.MoveCursor(hangmangame.alphabet, 7, hangmangame.oldpos); |
| marcbax | 0:c643d398cdb6 | 94 | } |
| marcbax | 0:c643d398cdb6 | 95 | if(status.keys & HAL::KEY8) |
| marcbax | 0:c643d398cdb6 | 96 | { |
| marcbax | 0:c643d398cdb6 | 97 | Log("Key 8"); |
| marcbax | 0:c643d398cdb6 | 98 | } |
| marcbax | 0:c643d398cdb6 | 99 | if(status.keys & HAL::KEY9) |
| marcbax | 0:c643d398cdb6 | 100 | { |
| marcbax | 0:c643d398cdb6 | 101 | Log("Key 9"); |
| marcbax | 0:c643d398cdb6 | 102 | hangmangame.currentpos = hangmangame.MoveCursor(hangmangame.alphabet, 9, hangmangame.oldpos); |
| marcbax | 0:c643d398cdb6 | 103 | } |
| marcbax | 0:c643d398cdb6 | 104 | if(status.keys & HAL::KEY10) |
| marcbax | 0:c643d398cdb6 | 105 | { |
| marcbax | 0:c643d398cdb6 | 106 | Log("Key 10"); |
| marcbax | 0:c643d398cdb6 | 107 | hangmangame.currentpos = hangmangame.MoveCursor(hangmangame.alphabet, 10, hangmangame.oldpos); |
| marcbax | 0:c643d398cdb6 | 108 | } |
| marcbax | 0:c643d398cdb6 | 109 | if(status.keys & HAL::KEY11) |
| marcbax | 0:c643d398cdb6 | 110 | Log("Key 11"); |
| marcbax | 0:c643d398cdb6 | 111 | } |
| marcbax | 0:c643d398cdb6 | 112 | if(status.sliderchanged) |
| marcbax | 0:c643d398cdb6 | 113 | { |
| marcbax | 0:c643d398cdb6 | 114 | printf("Slider/wheel: %x\n", status.slider); |
| marcbax | 0:c643d398cdb6 | 115 | } |
| marcbax | 0:c643d398cdb6 | 116 | } |
| marcbax | 0:c643d398cdb6 | 117 | |
| marcbax | 0:c643d398cdb6 | 118 | inirq = false; |
| marcbax | 0:c643d398cdb6 | 119 | } |
| marcbax | 0:c643d398cdb6 | 120 | } |
| marcbax | 0:c643d398cdb6 | 121 | |
| marcbax | 0:c643d398cdb6 | 122 | int PageTouch::GetKey() |
| marcbax | 0:c643d398cdb6 | 123 | { |
| marcbax | 0:c643d398cdb6 | 124 | int outkey = key; |
| marcbax | 0:c643d398cdb6 | 125 | key = 0; |
| marcbax | 0:c643d398cdb6 | 126 | return outkey; |
| marcbax | 0:c643d398cdb6 | 127 | } |
| marcbax | 0:c643d398cdb6 | 128 | |
| marcbax | 0:c643d398cdb6 | 129 | /* |
| marcbax | 0:c643d398cdb6 | 130 | void PageTouch::HandlePageActions() |
| marcbax | 0:c643d398cdb6 | 131 | { |
| marcbax | 0:c643d398cdb6 | 132 | if (newtouch) |
| marcbax | 0:c643d398cdb6 | 133 | { |
| marcbax | 0:c643d398cdb6 | 134 | printf("%i \n", imgnumber); |
| marcbax | 0:c643d398cdb6 | 135 | pageflexenable.numimage = imgnumber; |
| marcbax | 0:c643d398cdb6 | 136 | //pageflexenable.UpdateImage(); |
| marcbax | 0:c643d398cdb6 | 137 | newtouch = false; |
| marcbax | 0:c643d398cdb6 | 138 | } |
| marcbax | 0:c643d398cdb6 | 139 | } |
| marcbax | 0:c643d398cdb6 | 140 | */ |
| marcbax | 0:c643d398cdb6 | 141 | } // End Flexbook namespace. |
| marcbax | 0:c643d398cdb6 | 142 | |
| marcbax | 0:c643d398cdb6 | 143 | |
| marcbax | 0:c643d398cdb6 | 144 |