From f7aaed1b57d264a983d4890ce6ada930ce2f6368 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 31 Jul 2022 20:36:30 +0100 Subject: Migrate crkbd keymaps to oled driver (#17863) --- keyboards/crkbd/lib/i2c.c | 162 ------------------------------- keyboards/crkbd/lib/i2c.h | 46 --------- keyboards/crkbd/lib/layer_state_reader.c | 4 + 3 files changed, 4 insertions(+), 208 deletions(-) delete mode 100644 keyboards/crkbd/lib/i2c.c delete mode 100644 keyboards/crkbd/lib/i2c.h (limited to 'keyboards/crkbd/lib') diff --git a/keyboards/crkbd/lib/i2c.c b/keyboards/crkbd/lib/i2c.c deleted file mode 100644 index 7b82e838c2..0000000000 --- a/keyboards/crkbd/lib/i2c.c +++ /dev/null @@ -1,162 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "i2c.h" - -#if defined(USE_SSD_I2C) - -// Limits the amount of we wait for any one i2c transaction. -// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is -// 9 bits, a single transaction will take around 90μs to complete. -// -// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit -// poll loop takes at least 8 clock cycles to execute -#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8 - -#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE) - -volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; - -static volatile uint8_t slave_buffer_pos; -static volatile bool slave_has_register_set = false; - -// Wait for an i2c operation to finish -inline static -void i2c_delay(void) { - uint16_t lim = 0; - while(!(TWCR & (1<10. - // Check datasheets for more info. - TWBR = ((F_CPU/SCL_CLOCK)-16)/2; -} - -// Start a transaction with the given i2c slave address. The direction of the -// transfer is set with I2C_READ and I2C_WRITE. -// returns: 0 => success -// 1 => error -uint8_t i2c_master_start(uint8_t address) { - TWCR = (1< slave ACK -// 1 => slave NACK -uint8_t i2c_master_write(uint8_t data) { - TWDR = data; - TWCR = (1<= SLAVE_BUFFER_SIZE ) { - ack = 0; - slave_buffer_pos = 0; - } - slave_has_register_set = true; - } else { - i2c_slave_buffer[slave_buffer_pos] = TWDR; - BUFFER_POS_INC(); - } - break; - - case TW_ST_SLA_ACK: - case TW_ST_DATA_ACK: - // master has addressed this device as a slave transmitter and is - // requesting data. - TWDR = i2c_slave_buffer[slave_buffer_pos]; - BUFFER_POS_INC(); - break; - - case TW_BUS_ERROR: // something went wrong, reset twi state - TWCR = 0; - default: - break; - } - // Reset everything, so we are ready for the next TWI interrupt - TWCR |= (1< - -#ifndef F_CPU -#define F_CPU 16000000UL -#endif - -#define I2C_READ 1 -#define I2C_WRITE 0 - -#define I2C_ACK 1 -#define I2C_NACK 0 - -#define SLAVE_BUFFER_SIZE 0x10 - -// i2c SCL clock frequency 400kHz -#define SCL_CLOCK 400000L - -extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE]; - -void i2c_master_init(void); -uint8_t i2c_master_start(uint8_t address); -void i2c_master_stop(void); -uint8_t i2c_master_write(uint8_t data); -uint8_t i2c_master_read(int); -void i2c_reset_state(void); -void i2c_slave_init(uint8_t address); - - -static inline unsigned char i2c_start_read(unsigned char addr) { - return i2c_master_start((addr << 1) | I2C_READ); -} - -static inline unsigned char i2c_start_write(unsigned char addr) { - return i2c_master_start((addr << 1) | I2C_WRITE); -} - -// from SSD1306 scrips -extern unsigned char i2c_rep_start(unsigned char addr); -extern void i2c_start_wait(unsigned char addr); -extern unsigned char i2c_readAck(void); -extern unsigned char i2c_readNak(void); -extern unsigned char i2c_read(unsigned char ack); - -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); diff --git a/keyboards/crkbd/lib/layer_state_reader.c b/keyboards/crkbd/lib/layer_state_reader.c index 63d80b136c..601fd71958 100644 --- a/keyboards/crkbd/lib/layer_state_reader.c +++ b/keyboards/crkbd/lib/layer_state_reader.c @@ -29,7 +29,11 @@ const char *read_layer_state(void) { snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust"); break; default: +#if defined (LAYER_STATE_32BIT) snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state); +#else + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%d", layer_state); +#endif } return layer_state_str; -- cgit v1.2.3