1765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang/* 2765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * Author: Yevgeniy Kiveisha <yevgeniy.kiveisha@intel.com> 3765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * Copyright (c) 2014 Intel Corporation. 4765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * 5765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * Permission is hereby granted, free of charge, to any person obtaining 6765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * a copy of this software and associated documentation files (the 7765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * "Software"), to deal in the Software without restriction, including 8765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * without limitation the rights to use, copy, modify, merge, publish, 9765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * distribute, sublicense, and/or sell copies of the Software, and to 10765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * permit persons to whom the Software is furnished to do so, subject to 11765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * the following conditions: 12765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * 13765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * The above copyright notice and this permission notice shall be 14765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * included in all copies or substantial portions of the Software. 15765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * 16765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang */ 24765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 25765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang#include <iostream> 26765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang#include <string> 27765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang#include <stdexcept> 28765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang#include <unistd.h> 29765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang#include <stdlib.h> 30765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang#include <stdio.h> 31765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang#include <string.h> 32765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 33765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang#include "st7735.h" 34765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 35765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangusing namespace upm; 36765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 37765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::ST7735 (uint8_t csLCD, uint8_t cSD, uint8_t rs, uint8_t rst) 38765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang : GFX (160, 128, m_map, font), m_csLCDPinCtx(csLCD), m_cSDPinCtx(cSD), 39765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_rSTPinCtx(rst), m_rSPinCtx(rs), m_spi(0) { 40765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 41765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang initModule (); 42765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang configModule (); 43765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 44765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 45765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangvoid 46765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::initModule () { 47765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::Result error = mraa::SUCCESS; 48765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 49765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_height = 160; 50765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_width = 128; 51765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 52765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spi.frequency(15 * 1000000); 53765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 54765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_csLCDPinCtx.dir(mraa::DIR_OUT); 55765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 56765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 57765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 58765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 59765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_cSDPinCtx.dir(mraa::DIR_OUT); 60765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 61765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 62765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 63765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 64765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_rSTPinCtx.dir(mraa::DIR_OUT); 65765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 66765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 67765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 68765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 69765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_rSPinCtx.dir(mraa::DIR_OUT); 70765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 71765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 72765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 73765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 74765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_spi.frequency(15 * 1000000); 75765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 76765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 77765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 78765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 79765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang lcdCSOn (); 80765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 81765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 82765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangvoid 83765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::write (uint8_t value) { 84765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang rsLOW (); 85765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spi.writeByte(value); 86765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 87765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 88765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangvoid 89765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::data (uint8_t value) { 90765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang rsHIGH (); 91765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spi.writeByte(value); 92765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 93765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 94765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangvoid 95765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::executeCMDList(const uint8_t *addr) { 96765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang uint8_t numCommands, numArgs; 97765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang uint16_t ms; 98765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 99765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang numCommands = *(addr++); // Number of commands to follow 100765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang while(numCommands--) { // For each command... 101765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang write (*(addr++)); // Read, issue command 102765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang numArgs = *(addr++); // Number of args to follow 103765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang ms = numArgs & DELAY; // If hibit set, delay follows args 104765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang numArgs &= ~DELAY; // Mask out delay bit 105765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang while(numArgs--) { // For each argument... 106765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang data (*(addr++)); // Read, issue argument 107765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 108765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 109765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if(ms) { 110765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang ms = *(addr++); // Read post-command delay time (ms) 111765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (ms == 255) { 112765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang ms = 500; // If 255, delay for 500 ms 113765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 114765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang usleep (ms * 1000); 115765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 116765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 117765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 118765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 119765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangvoid 120765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1) { 121765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang uint8_t colstart, rowstart; 122765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang colstart = rowstart = 0; 123765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 124765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang write (ST7735_CASET); // Column addr set 125765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 126765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang rsHIGH (); 127765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spiBuffer[0] = 0x00; 128765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spiBuffer[1] = x0 + colstart; // XSTART 129765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spiBuffer[2] = 0x00; 130765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spiBuffer[3] = x1 + colstart; // XEND 131765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spi.write(m_spiBuffer, 4); 132765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 133765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang write (ST7735_RASET); // Row addr set 134765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 135765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang rsHIGH (); 136765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spiBuffer[0] = 0x00; 137765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spiBuffer[1] = y0 + rowstart; // YSTART 138765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spiBuffer[2] = 0x00; 139765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spiBuffer[3] = y1 + rowstart; // YEND 140765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spi.write(m_spiBuffer, 4); 141765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 142765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang write (ST7735_RAMWR); // write to RAM 143765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 144765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 145765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangvoid 146765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::drawPixel(int16_t x, int16_t y, uint16_t color) { 147765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (mraa::SUCCESS != setPixel (x, y, color)) { 148765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang return; 149765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 150765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 151765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang refresh (); 152765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 153765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 154765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangvoid 155765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::refresh () { 156765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang rsHIGH (); 157765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 158765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang int fragmentSize = m_height * m_width * 2 / 20; 159765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang for (int fragment = 0; fragment < 20; fragment++) { 160765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_spi.write(&m_map[fragment * fragmentSize], fragmentSize); 161765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 162765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 163765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 164765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangvoid 165765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::configModule() { 166765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang rsHIGH (); 167765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang lcdCSOff (); 168765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang lcdCSOn (); 169765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 170765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_rSTPinCtx.write(HIGH); 171765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang usleep (500000); 172765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_rSTPinCtx.write(LOW); 173765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang usleep (500000); 174765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang m_rSTPinCtx.write(HIGH); 175765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang usleep (500000); 176765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 177765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang executeCMDList (Rcmd1); 178765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang executeCMDList (Rcmd2red); 179765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang executeCMDList (Rcmd3); 180765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 181765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang write (ST7735_MADCTL); 182765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang data (0xC0); 183765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 184765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang setAddrWindow (0, 0, m_width - 1, m_height - 1); 185765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 186765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang fillScreen (ST7735_BLACK); 187765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang refresh (); 188765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 189765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 190765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangmraa::Result 191765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::lcdCSOn () { 192765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::Result error = mraa::SUCCESS; 193765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 194765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_csLCDPinCtx.write(LOW); 195765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 196765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 197765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 198765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 199765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_cSDPinCtx.write(HIGH); 200765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 201765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 202765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 203765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 204765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang return error; 205765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 206765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 207765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangmraa::Result 208765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::lcdCSOff () { 209765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::Result error = mraa::SUCCESS; 210765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 211765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_csLCDPinCtx.write(HIGH); 212765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 213765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 214765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 215765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 216765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang return error; 217765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 218765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 219765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangmraa::Result 220765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::sdCSOn () { 221765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::Result error = mraa::SUCCESS; 222765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 223765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_cSDPinCtx.write(LOW); 224765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 225765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 226765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 227765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 228765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_csLCDPinCtx.write(HIGH); 229765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 230765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 231765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 232765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 233765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang return error; 234765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 235765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 236765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangmraa::Result 237765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::sdCSOff () { 238765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::Result error = mraa::SUCCESS; 239765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 240765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_cSDPinCtx.write(HIGH); 241765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 242765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 243765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 244765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 245765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang return error; 246765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 247765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 248765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangmraa::Result 249765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::rsHIGH () { 250765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::Result error = mraa::SUCCESS; 251765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 252765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_rSPinCtx.write(HIGH); 253765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 254765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 255765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 256765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 257765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang return error; 258765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 259765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 260765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhangmraa::Result 261765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun ZhangST7735::rsLOW () { 262765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::Result error = mraa::SUCCESS; 263765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 264765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang error = m_rSPinCtx.write(LOW); 265765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang if (error != mraa::SUCCESS) { 266765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang mraa::printError (error); 267765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang } 268765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang 269765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang return error; 270765adb95dc941c32690d6c43bc08b9d07d197fcbJianxun Zhang} 271