FlexBook / Mbed 2 deprecated FlexBook171204a

Dependencies:   SDFileSystem app epson mbed msp430 pl tests

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers pagetouch.cpp Source File

pagetouch.cpp

00001 //
00002 // Filename: pagetouch.cpp
00003 //
00004 // Flexbook page for page A4.
00005 //
00006 
00007 #include "pagetouch.h"
00008 #include "pageflexenable.h"
00009 
00010 #include "log.h"
00011 
00012 #include <iostream>
00013 
00014 namespace Flexbook {
00015 
00016 PageTouch::PageTouch()
00017 : pageflexenable(), 
00018   i2c(p28, p27), irq(p26),
00019   at42qt2120(i2c), key(0)
00020 {
00021     Log("Creating PageTouch");
00022 
00023     at42qt2120.SetSliderOptions(HAL::WHEEL);
00024 
00025     at42qt2120.SetKeyControl(1, false, 2, false, true);
00026     at42qt2120.SetKeyControl(2, false, 2, false, true);
00027     at42qt2120.SetKeyControl(3, false, 2, false, true);
00028 
00029     at42qt2120.SetKeyControl(5, false, 1, false, true);
00030     at42qt2120.SetKeyControl(6, false, 1, false, true);
00031     at42qt2120.SetKeyControl(7, false, 1, false, true);
00032     at42qt2120.SetKeyControl(8, false, 1, false, true);
00033     at42qt2120.SetKeyControl(9, false, 1, false, true);
00034     at42qt2120.SetKeyControl(10, false, 1, false, true);
00035 
00036     irq.fall(callback(this, &Flexbook::PageTouch::TouchChange));
00037     newtouch = false;
00038     imgnumber = 0;
00039 
00040 #ifdef VERBOSE
00041     for(int n = 0; n < 99; n++)
00042         printf("Register %03d %02x\n", n, at42qt2120.Read((HAL::REG_AT42QT2120) n));
00043 #endif
00044 }
00045 
00046 PageTouch::~PageTouch()
00047 {
00048     Log("Deleting PageTouch");
00049 
00050     irq.disable_irq();
00051 }
00052 
00053 void PageTouch::TouchChange()
00054 {
00055     static volatile bool inirq = false;
00056     if(!inirq)
00057     {
00058         inirq = true;
00059         Page::ShortBeep();
00060 
00061         HAL::AT42QT2120::Status status;
00062         if(at42qt2120.ReadStatus(status))
00063         {
00064             if(status.keyschanged)
00065             {
00066                 key = status.keys;
00067                 
00068                 if(status.keys & HAL::KEY0)
00069                     Log("Key 0");
00070                 if(status.keys & HAL::KEY1)
00071                     Log("Key 1");
00072                 if(status.keys & HAL::KEY2)
00073                     Log("Key 2");
00074                 if(status.keys & HAL::KEY3)
00075                     Log("Key 3");
00076                 if(status.keys & HAL::KEY4)
00077                     Log("Key 4");
00078                 if(status.keys & HAL::KEY5)
00079                     Log("Key 5");
00080                 if(status.keys & HAL::KEY6)
00081                 {
00082                     Log("Key 6");
00083                     if (imgnumber < 8) imgnumber = imgnumber + 1;
00084                     printf("%i \n", imgnumber);
00085                     pageflexenable.numimage = imgnumber;
00086                     Log("number set");
00087                     //pageflexenable.UpdateImage();
00088                     Log("image updated");
00089                 }
00090                 if(status.keys & HAL::KEY7)
00091                     Log("Key 7");
00092                 if(status.keys & HAL::KEY8)
00093                     Log("Key 8");
00094                 if(status.keys & HAL::KEY9)
00095                 {
00096                     Log("Key 9");
00097                     if (imgnumber > 0) imgnumber = imgnumber - 1;
00098                     printf("%i \n", imgnumber);
00099                     pageflexenable.numimage = imgnumber;
00100                     Log("number set");
00101                     //pageflexenable.UpdateImage();
00102                     Log("image updated");
00103                 }
00104                 if(status.keys & HAL::KEY10)
00105                     Log("Key 10");
00106                 if(status.keys & HAL::KEY11)
00107                     Log("Key 11");
00108             }
00109             if(status.sliderchanged)
00110             {
00111                 printf("Slider/wheel: %x\n", status.slider);
00112             }
00113         }
00114 
00115         inirq = false;
00116     }
00117 }
00118 
00119 int PageTouch::GetKey()
00120 {
00121     int outkey = key;
00122     key = 0;
00123     return outkey;
00124 }
00125 
00126 /*
00127 void PageTouch::HandlePageActions()
00128 {
00129     if (newtouch)
00130     {
00131         printf("%i \n", imgnumber);
00132         pageflexenable.numimage = imgnumber;
00133         //pageflexenable.UpdateImage();
00134         newtouch = false;
00135     }
00136 }
00137 */
00138 } // End Flexbook namespace.
00139 
00140 
00141