def read(self, indev_drv, data) -> int: esp.get_ccount(self.start_time_ptr) coords = self.get_coords() esp.get_ccount(self.end_time_ptr) if self.end_time_ptr.int_val > self.start_time_ptr.int_val: self.touch_cycles += self.end_time_ptr.int_val - self.start_time_ptr.int_val self.touch_count += 1 if coords: data.point.x, data.point.y = coords data.state = lv.INDEV_STATE.PR return False data.state = lv.INDEV_STATE.REL return False
def flush(self, disp_drv, area, color_p): if self.end_time_ptr.int_val and self.end_time_ptr.int_val > self.start_time_ptr.int_val: self.flush_acc_dma_cycles += self.end_time_ptr.int_val - self.start_time_ptr.int_val esp.get_ccount(self.start_time_ptr) # esp.spi_device_acquire_bus(self.spi, esp.ESP.MAX_DELAY) # Column addresses self.send_cmd(0x2A) x1 = area.x1 + self.start_x x2 = area.x2 + self.start_x self.word_trans_data[0] = (x1 >> 8) & 0xFF self.word_trans_data[1] = x1 & 0xFF self.word_trans_data[2] = (x2 >> 8) & 0xFF self.word_trans_data[3] = x2 & 0xFF self.send_trans_word() # Page addresses self.send_cmd(0x2B) y1 = area.y1 + self.start_y y2 = area.y2 + self.start_y self.word_trans_data[0] = (y1 >> 8) & 0xFF self.word_trans_data[1] = y1 & 0xFF self.word_trans_data[2] = (y2 >> 8) & 0xFF self.word_trans_data[3] = y2 & 0xFF self.send_trans_word() # Memory write by DMA, disp_flush_ready when finished self.send_cmd(0x2C) size = (x2 - x1 + 1) * (y2 - y1 + 1) data_view = color_p.__dereference__(size * lv.color_t.__SIZE__) esp.get_ccount(self.end_time_ptr) if self.end_time_ptr.int_val > self.start_time_ptr.int_val: self.flush_acc_setup_cycles += self.end_time_ptr.int_val - self.start_time_ptr.int_val esp.get_ccount(self.start_time_ptr) self.send_data_dma(data_view)
def flush_isr(spi_transaction_ptr): lv.disp_flush_ready(self.disp_drv) # esp.spi_device_release_bus(self.spi) esp.get_ccount(self.end_time_ptr)