| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -46,15 +46,20 @@ TouchWheel::TouchWheel() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 0, 0b100); | 
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 0, 0b100); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 1, 0b100); | 
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 1, 0b100); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 2, 0b100); | 
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 2, 0b100); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // Centre button. Set to channel 1.
 | 
					 | 
					 | 
					 | 
					  // Centre button. AKS disabled.
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 3, 0b100); | 
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 3, 0b000); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // Touch guard. Set as a guard, in channel 1.
 | 
					 | 
					 | 
					 | 
					  // Touch guard. Set as a guard, in channel 1.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 4, 0b10100); | 
					 | 
					 | 
					 | 
					  WriteRegister(Register::KEY_CONTROL_BASE + 4, 0b10100); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  // It's normal to press the wheel for a long time. Disable auto recalibration
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  // so that the user's finger isn't calibrated away.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  WriteRegister(Register::RECALIBRATION_DELAY, 0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // Unused extra keys. All disabled.
 | 
					 | 
					 | 
					 | 
					  // Unused extra keys. All disabled.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  for (int i = 5; i < 12; i++) { | 
					 | 
					 | 
					 | 
					  for (int i = 5; i < 12; i++) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    WriteRegister(Register::KEY_CONTROL_BASE + i, 1); | 
					 | 
					 | 
					 | 
					    WriteRegister(Register::KEY_CONTROL_BASE + i, 1); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					TouchWheel::~TouchWheel() {} | 
					 | 
					 | 
					 | 
					TouchWheel::~TouchWheel() {} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -67,7 +72,10 @@ void TouchWheel::WriteRegister(uint8_t reg, uint8_t val) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      .write_addr(kTouchWheelAddress, I2C_MASTER_WRITE) | 
					 | 
					 | 
					 | 
					      .write_addr(kTouchWheelAddress, I2C_MASTER_WRITE) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      .write_ack(reg, val) | 
					 | 
					 | 
					 | 
					      .write_ack(reg, val) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      .stop(); | 
					 | 
					 | 
					 | 
					      .stop(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  transaction.Execute(); | 
					 | 
					 | 
					 | 
					  esp_err_t res = transaction.Execute(); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  if (res != ESP_OK) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    ESP_LOGW(kTag, "write failed: %s", esp_err_to_name(res)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					uint8_t TouchWheel::ReadRegister(uint8_t reg) { | 
					 | 
					 | 
					 | 
					uint8_t TouchWheel::ReadRegister(uint8_t reg) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |