Touch panel library for GR-PEACH LCD Shield.

Dependents:   GR-PEACH_LCD_shield_touch_sample LCD_shield_config

Committer:
dkato
Date:
Tue Sep 27 12:36:07 2016 +0000
Revision:
1:538027089976
Add LCD type RSK TFT.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 1:538027089976 1 /* mbed Microcontroller Library
dkato 1:538027089976 2 * Copyright (C) 2016 Renesas Electronics Corporation. All rights reserved.
dkato 1:538027089976 3 *
dkato 1:538027089976 4 * Licensed under the Apache License, Version 2.0 (the "License");
dkato 1:538027089976 5 * you may not use this file except in compliance with the License.
dkato 1:538027089976 6 * You may obtain a copy of the License at
dkato 1:538027089976 7 *
dkato 1:538027089976 8 * http://www.apache.org/licenses/LICENSE-2.0
dkato 1:538027089976 9 *
dkato 1:538027089976 10 * Unless required by applicable law or agreed to in writing, software
dkato 1:538027089976 11 * distributed under the License is distributed on an "AS IS" BASIS,
dkato 1:538027089976 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dkato 1:538027089976 13 * See the License for the specific language governing permissions and
dkato 1:538027089976 14 * limitations under the License.
dkato 1:538027089976 15 */
dkato 1:538027089976 16
dkato 1:538027089976 17 #include "TouchKey_RSK_TFT.h"
dkato 1:538027089976 18
dkato 1:538027089976 19 TouchKey_RSK_TFT::TouchKey_RSK_TFT(PinName tprst, PinName tpint, PinName sda, PinName scl) :
dkato 1:538027089976 20 TouchKey(tprst, tpint), i2c(sda, scl) {
dkato 1:538027089976 21 }
dkato 1:538027089976 22
dkato 1:538027089976 23 int TouchKey_RSK_TFT::GetMaxTouchNum(void) {
dkato 1:538027089976 24 return 5;
dkato 1:538027089976 25 }
dkato 1:538027089976 26
dkato 1:538027089976 27 int TouchKey_RSK_TFT::GetCoordinates(int touch_buff_num, touch_pos_t * p_touch) {
dkato 1:538027089976 28 char buf[32];
dkato 1:538027089976 29 uint32_t wk_x;
dkato 1:538027089976 30 uint32_t wk_y;
dkato 1:538027089976 31 touch_pos_t * wk_touch;
dkato 1:538027089976 32 int count = 0;
dkato 1:538027089976 33 int i;
dkato 1:538027089976 34 int read_size;
dkato 1:538027089976 35
dkato 1:538027089976 36 if (touch_buff_num > GetMaxTouchNum()) {
dkato 1:538027089976 37 touch_buff_num = GetMaxTouchNum();
dkato 1:538027089976 38 }
dkato 1:538027089976 39 read_size = 2 + 6 * touch_buff_num;
dkato 1:538027089976 40
dkato 1:538027089976 41 if (p_touch != NULL) {
dkato 1:538027089976 42 for (i = 0; i < touch_buff_num; i++) {
dkato 1:538027089976 43 wk_touch = &p_touch[i];
dkato 1:538027089976 44 wk_touch->x = 0;
dkato 1:538027089976 45 wk_touch->y = 0;
dkato 1:538027089976 46 wk_touch->valid = false;
dkato 1:538027089976 47 }
dkato 1:538027089976 48 if (i2c.read((0x38 << 1), buf, read_size) == 0) {
dkato 1:538027089976 49 for (i = 0; i < touch_buff_num; i++) {
dkato 1:538027089976 50 if (buf[2] > i) {
dkato 1:538027089976 51 wk_touch = &p_touch[i];
dkato 1:538027089976 52 wk_x = (((uint32_t)buf[3 + (6 * i)] & 0x0F) << 8) | buf[4 + (6 * i)];
dkato 1:538027089976 53 if (wk_x < 800) {
dkato 1:538027089976 54 wk_touch->x = 800 - wk_x;
dkato 1:538027089976 55 } else {
dkato 1:538027089976 56 wk_touch->x = 0;
dkato 1:538027089976 57 }
dkato 1:538027089976 58 wk_y = (((uint32_t)buf[5 + (6 * i)] & 0x0F) << 8) | buf[6 + (6 * i)];
dkato 1:538027089976 59 if (wk_y < 480) {
dkato 1:538027089976 60 wk_touch->y = 480 - wk_y;
dkato 1:538027089976 61 } else {
dkato 1:538027089976 62 wk_touch->y = 0;
dkato 1:538027089976 63 }
dkato 1:538027089976 64 wk_touch->valid = 1;
dkato 1:538027089976 65 count++;
dkato 1:538027089976 66 }
dkato 1:538027089976 67 }
dkato 1:538027089976 68 }
dkato 1:538027089976 69 }
dkato 1:538027089976 70
dkato 1:538027089976 71 return count;
dkato 1:538027089976 72 }
dkato 1:538027089976 73
dkato 1:538027089976 74