mirror of
https://github.com/qmk/qmk_firmware
synced 2024-12-22 08:26:21 +00:00
Format code according to conventions (#16322)
This commit is contained in:
parent
afcdd7079c
commit
63646e8906
@ -29,7 +29,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef BLUEFRUIT_LE_SCK_DIVISOR
|
#ifndef BLUEFRUIT_LE_SCK_DIVISOR
|
||||||
# define BLUEFRUIT_LE_SCK_DIVISOR 2 // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
|
# define BLUEFRUIT_LE_SCK_DIVISOR 2 // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SAMPLE_BATTERY
|
#define SAMPLE_BATTERY
|
||||||
@ -77,10 +77,10 @@ struct sdep_msg {
|
|||||||
// information here.
|
// information here.
|
||||||
|
|
||||||
enum queue_type {
|
enum queue_type {
|
||||||
QTKeyReport, // 1-byte modifier + 6-byte key report
|
QTKeyReport, // 1-byte modifier + 6-byte key report
|
||||||
QTConsumer, // 16-bit key code
|
QTConsumer, // 16-bit key code
|
||||||
#ifdef MOUSE_ENABLE
|
#ifdef MOUSE_ENABLE
|
||||||
QTMouseMove, // 4-byte mouse report
|
QTMouseMove, // 4-byte mouse report
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -115,8 +115,8 @@ enum sdep_type {
|
|||||||
SdepResponse = 0x20,
|
SdepResponse = 0x20,
|
||||||
SdepAlert = 0x40,
|
SdepAlert = 0x40,
|
||||||
SdepError = 0x80,
|
SdepError = 0x80,
|
||||||
SdepSlaveNotReady = 0xFE, // Try again later
|
SdepSlaveNotReady = 0xFE, // Try again later
|
||||||
SdepSlaveOverflow = 0xFF, // You read more data than is available
|
SdepSlaveOverflow = 0xFF, // You read more data than is available
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ble_cmd {
|
enum ble_cmd {
|
||||||
@ -306,13 +306,15 @@ static bool ble_init(void) {
|
|||||||
wait_ms(10);
|
wait_ms(10);
|
||||||
writePinHigh(BLUEFRUIT_LE_RST_PIN);
|
writePinHigh(BLUEFRUIT_LE_RST_PIN);
|
||||||
|
|
||||||
wait_ms(1000); // Give it a second to initialize
|
wait_ms(1000); // Give it a second to initialize
|
||||||
|
|
||||||
state.initialized = true;
|
state.initialized = true;
|
||||||
return state.initialized;
|
return state.initialized;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint8_t min(uint8_t a, uint8_t b) { return a < b ? a : b; }
|
static inline uint8_t min(uint8_t a, uint8_t b) {
|
||||||
|
return a < b ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
static bool read_response(char *resp, uint16_t resplen, bool verbose) {
|
static bool read_response(char *resp, uint16_t resplen, bool verbose) {
|
||||||
char *dest = resp;
|
char *dest = resp;
|
||||||
@ -424,7 +426,9 @@ bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool verbose) {
|
|||||||
return at_command(cmdbuf, resp, resplen, verbose);
|
return at_command(cmdbuf, resp, resplen, verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bluefruit_le_is_connected(void) { return state.is_connected; }
|
bool bluefruit_le_is_connected(void) {
|
||||||
|
return state.is_connected;
|
||||||
|
}
|
||||||
|
|
||||||
bool bluefruit_le_enable_keyboard(void) {
|
bool bluefruit_le_enable_keyboard(void) {
|
||||||
char resbuf[128];
|
char resbuf[128];
|
||||||
@ -671,7 +675,9 @@ void bluefruit_le_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint32_t bluefruit_le_read_battery_voltage(void) { return state.vbat; }
|
uint32_t bluefruit_le_read_battery_voltage(void) {
|
||||||
|
return state.vbat;
|
||||||
|
}
|
||||||
|
|
||||||
bool bluefruit_le_set_mode_leds(bool on) {
|
bool bluefruit_le_set_mode_leds(bool on) {
|
||||||
if (!state.configured) {
|
if (!state.configured) {
|
||||||
|
@ -52,7 +52,7 @@ uint8_t auto_detect_output(void) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef BLUETOOTH_ENABLE
|
#ifdef BLUETOOTH_ENABLE
|
||||||
return OUTPUT_BLUETOOTH; // should check if BT is connected here
|
return OUTPUT_BLUETOOTH; // should check if BT is connected here
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return OUTPUT_NONE;
|
return OUTPUT_NONE;
|
||||||
|
@ -61,7 +61,9 @@ static inline uint16_t rn42_consumer_usage_to_bitmap(uint16_t usage) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void rn42_init(void) { uart_init(RN42_BAUD_RATE); }
|
void rn42_init(void) {
|
||||||
|
uart_init(RN42_BAUD_RATE);
|
||||||
|
}
|
||||||
|
|
||||||
void rn42_send_keyboard(report_keyboard_t *report) {
|
void rn42_send_keyboard(report_keyboard_t *report) {
|
||||||
uart_write(0xFD);
|
uart_write(0xFD);
|
||||||
@ -81,8 +83,8 @@ void rn42_send_mouse(report_mouse_t *report) {
|
|||||||
uart_write(report->buttons);
|
uart_write(report->buttons);
|
||||||
uart_write(report->x);
|
uart_write(report->x);
|
||||||
uart_write(report->y);
|
uart_write(report->y);
|
||||||
uart_write(report->v); // should try sending the wheel v here
|
uart_write(report->v); // should try sending the wheel v here
|
||||||
uart_write(report->h); // should try sending the wheel h here
|
uart_write(report->h); // should try sending the wheel h here
|
||||||
uart_write(0x00);
|
uart_write(0x00);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,11 +37,17 @@ uint32_t eeprom_read_dword(const uint32_t *addr) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void eeprom_write_byte(uint8_t *addr, uint8_t value) { eeprom_write_block(&value, addr, 1); }
|
void eeprom_write_byte(uint8_t *addr, uint8_t value) {
|
||||||
|
eeprom_write_block(&value, addr, 1);
|
||||||
|
}
|
||||||
|
|
||||||
void eeprom_write_word(uint16_t *addr, uint16_t value) { eeprom_write_block(&value, addr, 2); }
|
void eeprom_write_word(uint16_t *addr, uint16_t value) {
|
||||||
|
eeprom_write_block(&value, addr, 2);
|
||||||
|
}
|
||||||
|
|
||||||
void eeprom_write_dword(uint32_t *addr, uint32_t value) { eeprom_write_block(&value, addr, 4); }
|
void eeprom_write_dword(uint32_t *addr, uint32_t value) {
|
||||||
|
eeprom_write_block(&value, addr, 4);
|
||||||
|
}
|
||||||
|
|
||||||
void eeprom_update_block(const void *buf, void *addr, size_t len) {
|
void eeprom_update_block(const void *buf, void *addr, size_t len) {
|
||||||
uint8_t read_buf[len];
|
uint8_t read_buf[len];
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
|
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
|
||||||
# include "timer.h"
|
# include "timer.h"
|
||||||
# include "debug.h"
|
# include "debug.h"
|
||||||
#endif // DEBUG_EEPROM_OUTPUT
|
#endif // DEBUG_EEPROM_OUTPUT
|
||||||
|
|
||||||
static inline void fill_target_address(uint8_t *buffer, const void *addr) {
|
static inline void fill_target_address(uint8_t *buffer, const void *addr) {
|
||||||
uintptr_t p = (uintptr_t)addr;
|
uintptr_t p = (uintptr_t)addr;
|
||||||
@ -91,7 +91,7 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
|
|||||||
dprintf(" %02X", (int)(((uint8_t *)buf)[i]));
|
dprintf(" %02X", (int)(((uint8_t *)buf)[i]));
|
||||||
}
|
}
|
||||||
dprintf("\n");
|
dprintf("\n");
|
||||||
#endif // DEBUG_EEPROM_OUTPUT
|
#endif // DEBUG_EEPROM_OUTPUT
|
||||||
}
|
}
|
||||||
|
|
||||||
void eeprom_write_block(const void *buf, void *addr, size_t len) {
|
void eeprom_write_block(const void *buf, void *addr, size_t len) {
|
||||||
@ -122,7 +122,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
|
|||||||
dprintf(" %02X", (int)(read_buf[i]));
|
dprintf(" %02X", (int)(read_buf[i]));
|
||||||
}
|
}
|
||||||
dprintf("\n");
|
dprintf("\n");
|
||||||
#endif // DEBUG_EEPROM_OUTPUT
|
#endif // DEBUG_EEPROM_OUTPUT
|
||||||
|
|
||||||
i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE + write_length, 100);
|
i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE + write_length, 100);
|
||||||
wait_ms(EXTERNAL_EEPROM_WRITE_TIME);
|
wait_ms(EXTERNAL_EEPROM_WRITE_TIME);
|
||||||
|
@ -52,7 +52,9 @@
|
|||||||
# define EXTERNAL_EEPROM_SPI_TIMEOUT 100
|
# define EXTERNAL_EEPROM_SPI_TIMEOUT 100
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool spi_eeprom_start(void) { return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR); }
|
static bool spi_eeprom_start(void) {
|
||||||
|
return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR);
|
||||||
|
}
|
||||||
|
|
||||||
static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
|
static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
|
||||||
uint32_t deadline = timer_read32() + timeout;
|
uint32_t deadline = timer_read32() + timeout;
|
||||||
@ -80,7 +82,9 @@ static void spi_eeprom_transmit_address(uintptr_t addr) {
|
|||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
void eeprom_driver_init(void) { spi_init(); }
|
void eeprom_driver_init(void) {
|
||||||
|
spi_init();
|
||||||
|
}
|
||||||
|
|
||||||
void eeprom_driver_erase(void) {
|
void eeprom_driver_erase(void) {
|
||||||
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
|
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
|
||||||
@ -135,7 +139,7 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
|
|||||||
dprintf(" %02X", (int)(((uint8_t *)buf)[i]));
|
dprintf(" %02X", (int)(((uint8_t *)buf)[i]));
|
||||||
}
|
}
|
||||||
dprintf("\n");
|
dprintf("\n");
|
||||||
#endif // DEBUG_EEPROM_OUTPUT
|
#endif // DEBUG_EEPROM_OUTPUT
|
||||||
|
|
||||||
spi_stop();
|
spi_stop();
|
||||||
}
|
}
|
||||||
@ -192,7 +196,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
|
|||||||
dprintf(" %02X", (int)(uint8_t)(read_buf[i]));
|
dprintf(" %02X", (int)(uint8_t)(read_buf[i]));
|
||||||
}
|
}
|
||||||
dprintf("\n");
|
dprintf("\n");
|
||||||
#endif // DEBUG_EEPROM_OUTPUT
|
#endif // DEBUG_EEPROM_OUTPUT
|
||||||
|
|
||||||
spi_write(CMD_WRITE);
|
spi_write(CMD_WRITE);
|
||||||
spi_eeprom_transmit_address(target_addr);
|
spi_eeprom_transmit_address(target_addr);
|
||||||
|
@ -30,9 +30,13 @@ size_t clamp_length(intptr_t offset, size_t len) {
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
void eeprom_driver_init(void) { eeprom_driver_erase(); }
|
void eeprom_driver_init(void) {
|
||||||
|
eeprom_driver_erase();
|
||||||
|
}
|
||||||
|
|
||||||
void eeprom_driver_erase(void) { memset(transientBuffer, 0x00, TRANSIENT_EEPROM_SIZE); }
|
void eeprom_driver_erase(void) {
|
||||||
|
memset(transientBuffer, 0x00, TRANSIENT_EEPROM_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
void eeprom_read_block(void *buf, const void *addr, size_t len) {
|
void eeprom_read_block(void *buf, const void *addr, size_t len) {
|
||||||
intptr_t offset = (intptr_t)addr;
|
intptr_t offset = (intptr_t)addr;
|
||||||
|
@ -21,5 +21,5 @@
|
|||||||
*/
|
*/
|
||||||
#ifndef TRANSIENT_EEPROM_SIZE
|
#ifndef TRANSIENT_EEPROM_SIZE
|
||||||
# include "eeconfig.h"
|
# include "eeconfig.h"
|
||||||
# define TRANSIENT_EEPROM_SIZE (((EECONFIG_SIZE + 3) / 4) * 4) // based off eeconfig's current usage, aligned to 4-byte sizes, to deal with LTO
|
# define TRANSIENT_EEPROM_SIZE (((EECONFIG_SIZE + 3) / 4) * 4) // based off eeconfig's current usage, aligned to 4-byte sizes, to deal with LTO
|
||||||
#endif
|
#endif
|
||||||
|
@ -65,7 +65,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
// #define DEBUG_FLASH_SPI_OUTPUT
|
// #define DEBUG_FLASH_SPI_OUTPUT
|
||||||
|
|
||||||
static bool spi_flash_start(void) { return spi_start(EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN, EXTERNAL_FLASH_SPI_LSBFIRST, EXTERNAL_FLASH_SPI_MODE, EXTERNAL_FLASH_SPI_CLOCK_DIVISOR); }
|
static bool spi_flash_start(void) {
|
||||||
|
return spi_start(EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN, EXTERNAL_FLASH_SPI_LSBFIRST, EXTERNAL_FLASH_SPI_MODE, EXTERNAL_FLASH_SPI_CLOCK_DIVISOR);
|
||||||
|
}
|
||||||
|
|
||||||
static flash_status_t spi_flash_wait_while_busy(void) {
|
static flash_status_t spi_flash_wait_while_busy(void) {
|
||||||
uint32_t deadline = timer_read32() + EXTERNAL_FLASH_SPI_TIMEOUT;
|
uint32_t deadline = timer_read32() + EXTERNAL_FLASH_SPI_TIMEOUT;
|
||||||
@ -160,7 +162,9 @@ static flash_status_t spi_flash_transaction(uint8_t cmd, uint32_t addr, uint8_t
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
void flash_init(void) { spi_init(); }
|
void flash_init(void) {
|
||||||
|
spi_init();
|
||||||
|
}
|
||||||
|
|
||||||
flash_status_t flash_erase_chip(void) {
|
flash_status_t flash_erase_chip(void) {
|
||||||
flash_status_t response = FLASH_STATUS_SUCCESS;
|
flash_status_t response = FLASH_STATUS_SUCCESS;
|
||||||
@ -304,7 +308,7 @@ flash_status_t flash_read_block(uint32_t addr, void *buf, size_t len) {
|
|||||||
dprintf(" %02X", (int)(((uint8_t *)read_buf)[i]));
|
dprintf(" %02X", (int)(((uint8_t *)read_buf)[i]));
|
||||||
}
|
}
|
||||||
dprintf("\n");
|
dprintf("\n");
|
||||||
#endif // DEBUG_FLASH_SPI_OUTPUT
|
#endif // DEBUG_FLASH_SPI_OUTPUT
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -340,7 +344,7 @@ flash_status_t flash_write_block(uint32_t addr, const void *buf, size_t len) {
|
|||||||
dprintf(" %02X", (int)(uint8_t)(write_buf[i]));
|
dprintf(" %02X", (int)(uint8_t)(write_buf[i]));
|
||||||
}
|
}
|
||||||
dprintf("\n");
|
dprintf("\n");
|
||||||
#endif // DEBUG_FLASH_SPI_OUTPUT
|
#endif // DEBUG_FLASH_SPI_OUTPUT
|
||||||
|
|
||||||
/* Perform the write. */
|
/* Perform the write. */
|
||||||
response = spi_flash_transaction(FLASH_CMD_PP, addr, write_buf, write_length);
|
response = spi_flash_transaction(FLASH_CMD_PP, addr, write_buf, write_length);
|
||||||
|
@ -10,11 +10,11 @@
|
|||||||
#define TIMEOUT 100
|
#define TIMEOUT 100
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
CMD_IODIRA = 0x00, // i/o direction register
|
CMD_IODIRA = 0x00, // i/o direction register
|
||||||
CMD_IODIRB = 0x01,
|
CMD_IODIRB = 0x01,
|
||||||
CMD_GPPUA = 0x0C, // GPIO pull-up resistor register
|
CMD_GPPUA = 0x0C, // GPIO pull-up resistor register
|
||||||
CMD_GPPUB = 0x0D,
|
CMD_GPPUB = 0x0D,
|
||||||
CMD_GPIOA = 0x12, // general purpose i/o port register (write modifies OLAT)
|
CMD_GPIOA = 0x12, // general purpose i/o port register (write modifies OLAT)
|
||||||
CMD_GPIOB = 0x13,
|
CMD_GPIOB = 0x13,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -106,12 +106,14 @@ void DRV_init(void) {
|
|||||||
|
|
||||||
void DRV_rtp_init(void) {
|
void DRV_rtp_init(void) {
|
||||||
DRV_write(DRV_GO, 0x00);
|
DRV_write(DRV_GO, 0x00);
|
||||||
DRV_write(DRV_RTP_INPUT, 20); // 20 is the lowest value I've found where haptics can still be felt.
|
DRV_write(DRV_RTP_INPUT, 20); // 20 is the lowest value I've found where haptics can still be felt.
|
||||||
DRV_write(DRV_MODE, 0x05);
|
DRV_write(DRV_MODE, 0x05);
|
||||||
DRV_write(DRV_GO, 0x01);
|
DRV_write(DRV_GO, 0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DRV_amplitude(uint8_t amplitude) { DRV_write(DRV_RTP_INPUT, amplitude); }
|
void DRV_amplitude(uint8_t amplitude) {
|
||||||
|
DRV_write(DRV_RTP_INPUT, amplitude);
|
||||||
|
}
|
||||||
|
|
||||||
void DRV_pulse(uint8_t sequence) {
|
void DRV_pulse(uint8_t sequence) {
|
||||||
DRV_write(DRV_GO, 0x00);
|
DRV_write(DRV_GO, 0x00);
|
||||||
|
@ -28,13 +28,21 @@ uint8_t solenoid_dwell = SOLENOID_DEFAULT_DWELL;
|
|||||||
|
|
||||||
extern haptic_config_t haptic_config;
|
extern haptic_config_t haptic_config;
|
||||||
|
|
||||||
void solenoid_buzz_on(void) { haptic_set_buzz(1); }
|
void solenoid_buzz_on(void) {
|
||||||
|
haptic_set_buzz(1);
|
||||||
|
}
|
||||||
|
|
||||||
void solenoid_buzz_off(void) { haptic_set_buzz(0); }
|
void solenoid_buzz_off(void) {
|
||||||
|
haptic_set_buzz(0);
|
||||||
|
}
|
||||||
|
|
||||||
void solenoid_set_buzz(int buzz) { haptic_set_buzz(buzz); }
|
void solenoid_set_buzz(int buzz) {
|
||||||
|
haptic_set_buzz(buzz);
|
||||||
|
}
|
||||||
|
|
||||||
void solenoid_set_dwell(uint8_t dwell) { solenoid_dwell = dwell; }
|
void solenoid_set_dwell(uint8_t dwell) {
|
||||||
|
solenoid_dwell = dwell;
|
||||||
|
}
|
||||||
|
|
||||||
void solenoid_stop(void) {
|
void solenoid_stop(void) {
|
||||||
SOLENOID_PIN_WRITE_INACTIVE();
|
SOLENOID_PIN_WRITE_INACTIVE();
|
||||||
@ -89,4 +97,6 @@ void solenoid_setup(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void solenoid_shutdown(void) { SOLENOID_PIN_WRITE_INACTIVE(); }
|
void solenoid_shutdown(void) {
|
||||||
|
SOLENOID_PIN_WRITE_INACTIVE();
|
||||||
|
}
|
||||||
|
@ -39,7 +39,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
// Addressing Setting Commands
|
// Addressing Setting Commands
|
||||||
#define PAM_SETCOLUMN_LSB 0x00
|
#define PAM_SETCOLUMN_LSB 0x00
|
||||||
#define PAM_SETCOLUMN_MSB 0x10
|
#define PAM_SETCOLUMN_MSB 0x10
|
||||||
#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7
|
#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7
|
||||||
|
|
||||||
// Hardware Configuration Commands
|
// Hardware Configuration Commands
|
||||||
#define DISPLAY_START_LINE 0x40
|
#define DISPLAY_START_LINE 0x40
|
||||||
@ -138,7 +138,9 @@ bool st7565_init(display_rotation_t rotation) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) display_rotation_t st7565_init_user(display_rotation_t rotation) { return rotation; }
|
__attribute__((weak)) display_rotation_t st7565_init_user(display_rotation_t rotation) {
|
||||||
|
return rotation;
|
||||||
|
}
|
||||||
|
|
||||||
void st7565_clear(void) {
|
void st7565_clear(void) {
|
||||||
memset(st7565_buffer, 0, sizeof(st7565_buffer));
|
memset(st7565_buffer, 0, sizeof(st7565_buffer));
|
||||||
@ -212,7 +214,8 @@ void st7565_advance_page(bool clearPageRemainder) {
|
|||||||
remaining = remaining / ST7565_FONT_WIDTH;
|
remaining = remaining / ST7565_FONT_WIDTH;
|
||||||
|
|
||||||
// Write empty character until next line
|
// Write empty character until next line
|
||||||
while (remaining--) st7565_write_char(' ', false);
|
while (remaining--)
|
||||||
|
st7565_write_char(' ', false);
|
||||||
} else {
|
} else {
|
||||||
// Next page index out of bounds?
|
// Next page index out of bounds?
|
||||||
if (index + remaining >= ST7565_MATRIX_SIZE) {
|
if (index + remaining >= ST7565_MATRIX_SIZE) {
|
||||||
@ -263,7 +266,7 @@ void st7565_write_char(const char data, bool invert) {
|
|||||||
_Static_assert(sizeof(font) >= ((ST7565_FONT_END + 1 - ST7565_FONT_START) * ST7565_FONT_WIDTH), "ST7565_FONT_END references outside array");
|
_Static_assert(sizeof(font) >= ((ST7565_FONT_END + 1 - ST7565_FONT_START) * ST7565_FONT_WIDTH), "ST7565_FONT_END references outside array");
|
||||||
|
|
||||||
// set the reder buffer data
|
// set the reder buffer data
|
||||||
uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index
|
uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index
|
||||||
if (cast_data < ST7565_FONT_START || cast_data > ST7565_FONT_END) {
|
if (cast_data < ST7565_FONT_START || cast_data > ST7565_FONT_END) {
|
||||||
memset(st7565_cursor, 0x00, ST7565_FONT_WIDTH);
|
memset(st7565_cursor, 0x00, ST7565_FONT_WIDTH);
|
||||||
} else {
|
} else {
|
||||||
@ -389,7 +392,7 @@ void st7565_write_raw_P(const char *data, uint16_t size) {
|
|||||||
st7565_dirty |= ((ST7565_BLOCK_TYPE)1 << (i / ST7565_BLOCK_SIZE));
|
st7565_dirty |= ((ST7565_BLOCK_TYPE)1 << (i / ST7565_BLOCK_SIZE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // defined(__AVR__)
|
#endif // defined(__AVR__)
|
||||||
|
|
||||||
bool st7565_on(void) {
|
bool st7565_on(void) {
|
||||||
if (!st7565_initialized) {
|
if (!st7565_initialized) {
|
||||||
@ -429,7 +432,9 @@ bool st7565_off(void) {
|
|||||||
|
|
||||||
__attribute__((weak)) void st7565_off_user(void) {}
|
__attribute__((weak)) void st7565_off_user(void) {}
|
||||||
|
|
||||||
bool st7565_is_on(void) { return st7565_active; }
|
bool st7565_is_on(void) {
|
||||||
|
return st7565_active;
|
||||||
|
}
|
||||||
|
|
||||||
bool st7565_invert(bool invert) {
|
bool st7565_invert(bool invert) {
|
||||||
if (!st7565_initialized) {
|
if (!st7565_initialized) {
|
||||||
@ -445,9 +450,13 @@ bool st7565_invert(bool invert) {
|
|||||||
return st7565_inverted;
|
return st7565_inverted;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t st7565_max_chars(void) { return ST7565_DISPLAY_WIDTH / ST7565_FONT_WIDTH; }
|
uint8_t st7565_max_chars(void) {
|
||||||
|
return ST7565_DISPLAY_WIDTH / ST7565_FONT_WIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t st7565_max_lines(void) { return ST7565_DISPLAY_HEIGHT / ST7565_FONT_HEIGHT; }
|
uint8_t st7565_max_lines(void) {
|
||||||
|
return ST7565_DISPLAY_HEIGHT / ST7565_FONT_HEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
void st7565_task(void) {
|
void st7565_task(void) {
|
||||||
if (!st7565_initialized) {
|
if (!st7565_initialized) {
|
||||||
|
@ -29,16 +29,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
# define ST7565_DISPLAY_HEIGHT 32
|
# define ST7565_DISPLAY_HEIGHT 32
|
||||||
#endif
|
#endif
|
||||||
#ifndef ST7565_MATRIX_SIZE
|
#ifndef ST7565_MATRIX_SIZE
|
||||||
# define ST7565_MATRIX_SIZE (ST7565_DISPLAY_HEIGHT / 8 * ST7565_DISPLAY_WIDTH) // 1024 (compile time mathed)
|
# define ST7565_MATRIX_SIZE (ST7565_DISPLAY_HEIGHT / 8 * ST7565_DISPLAY_WIDTH) // 1024 (compile time mathed)
|
||||||
#endif
|
#endif
|
||||||
#ifndef ST7565_BLOCK_TYPE
|
#ifndef ST7565_BLOCK_TYPE
|
||||||
# define ST7565_BLOCK_TYPE uint16_t
|
# define ST7565_BLOCK_TYPE uint16_t
|
||||||
#endif
|
#endif
|
||||||
#ifndef ST7565_BLOCK_COUNT
|
#ifndef ST7565_BLOCK_COUNT
|
||||||
# define ST7565_BLOCK_COUNT (sizeof(ST7565_BLOCK_TYPE) * 8) // 32 (compile time mathed)
|
# define ST7565_BLOCK_COUNT (sizeof(ST7565_BLOCK_TYPE) * 8) // 32 (compile time mathed)
|
||||||
#endif
|
#endif
|
||||||
#ifndef ST7565_BLOCK_SIZE
|
#ifndef ST7565_BLOCK_SIZE
|
||||||
# define ST7565_BLOCK_SIZE (ST7565_MATRIX_SIZE / ST7565_BLOCK_COUNT) // 32 (compile time mathed)
|
# define ST7565_BLOCK_SIZE (ST7565_MATRIX_SIZE / ST7565_BLOCK_COUNT) // 32 (compile time mathed)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// the column address corresponding to the first column in the display hardware
|
// the column address corresponding to the first column in the display hardware
|
||||||
@ -174,7 +174,7 @@ void st7565_write_raw_P(const char *data, uint16_t size);
|
|||||||
# define st7565_write_P(data, invert) st7565_write(data, invert)
|
# define st7565_write_P(data, invert) st7565_write(data, invert)
|
||||||
# define st7565_write_ln_P(data, invert) st7565_write_ln(data, invert)
|
# define st7565_write_ln_P(data, invert) st7565_write_ln(data, invert)
|
||||||
# define st7565_write_raw_P(data, size) st7565_write_raw(data, size)
|
# define st7565_write_raw_P(data, size) st7565_write_raw(data, size)
|
||||||
#endif // defined(__AVR__)
|
#endif // defined(__AVR__)
|
||||||
|
|
||||||
// Can be used to manually turn on the screen if it is off
|
// Can be used to manually turn on the screen if it is off
|
||||||
// Returns true if the screen was on or turns on
|
// Returns true if the screen was on or turns on
|
||||||
|
@ -20,15 +20,15 @@
|
|||||||
|
|
||||||
#ifndef APA102_NOPS
|
#ifndef APA102_NOPS
|
||||||
# if defined(__AVR__)
|
# if defined(__AVR__)
|
||||||
# define APA102_NOPS 0 // AVR at 16 MHz already spends 62.5 ns per clock, so no extra delay is needed
|
# define APA102_NOPS 0 // AVR at 16 MHz already spends 62.5 ns per clock, so no extra delay is needed
|
||||||
# elif defined(PROTOCOL_CHIBIOS)
|
# elif defined(PROTOCOL_CHIBIOS)
|
||||||
|
|
||||||
# include "hal.h"
|
# include "hal.h"
|
||||||
# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103)
|
# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(GD32VF103)
|
||||||
# define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
|
# define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
|
||||||
# else
|
# else
|
||||||
# error("APA102_NOPS configuration required")
|
# error("APA102_NOPS configuration required")
|
||||||
# define APA102_NOPS 0 // this just pleases the compile so the above error is easier to spot
|
# define APA102_NOPS 0 // this just pleases the compile so the above error is easier to spot
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
@ -72,7 +72,9 @@ void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Overwrite the default rgblight_call_driver to use apa102 driver
|
// Overwrite the default rgblight_call_driver to use apa102 driver
|
||||||
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { apa102_setleds(start_led, num_leds); }
|
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) {
|
||||||
|
apa102_setleds(start_led, num_leds);
|
||||||
|
}
|
||||||
|
|
||||||
void static apa102_init(void) {
|
void static apa102_init(void) {
|
||||||
setPinOutput(RGB_DI_PIN);
|
setPinOutput(RGB_DI_PIN);
|
||||||
|
@ -23,17 +23,17 @@
|
|||||||
*/
|
*/
|
||||||
#define AWINIC_ID 0b1010 << 4
|
#define AWINIC_ID 0b1010 << 4
|
||||||
|
|
||||||
#define AW_PAGE_FUNCTION 0x00 << 1 // PG0, Function registers
|
#define AW_PAGE_FUNCTION 0x00 << 1 // PG0, Function registers
|
||||||
#define AW_PAGE_PWM 0x01 << 1 // PG1, LED PWM control
|
#define AW_PAGE_PWM 0x01 << 1 // PG1, LED PWM control
|
||||||
#define AW_PAGE_SCALING 0x02 << 1 // PG2, LED current scaling control
|
#define AW_PAGE_SCALING 0x02 << 1 // PG2, LED current scaling control
|
||||||
#define AW_PAGE_PATCHOICE 0x03 << 1 // PG3, Pattern choice?
|
#define AW_PAGE_PATCHOICE 0x03 << 1 // PG3, Pattern choice?
|
||||||
#define AW_PAGE_PWMSCALING 0x04 << 1 // PG4, LED PWM + Scaling control?
|
#define AW_PAGE_PWMSCALING 0x04 << 1 // PG4, LED PWM + Scaling control?
|
||||||
|
|
||||||
#define AW_WRITE 0
|
#define AW_WRITE 0
|
||||||
#define AW_READ 1
|
#define AW_READ 1
|
||||||
|
|
||||||
#define AW_REG_CONFIGURATION 0x00 // PG0
|
#define AW_REG_CONFIGURATION 0x00 // PG0
|
||||||
#define AW_REG_GLOBALCURRENT 0x01 // PG0
|
#define AW_REG_GLOBALCURRENT 0x01 // PG0
|
||||||
|
|
||||||
// Default value of AW_REG_CONFIGURATION
|
// Default value of AW_REG_CONFIGURATION
|
||||||
// D7:D4 = 1011, SWSEL (SW1~SW12 active)
|
// D7:D4 = 1011, SWSEL (SW1~SW12 active)
|
||||||
|
@ -42,13 +42,13 @@
|
|||||||
#define ISSI_REG_PICTUREFRAME 0x01
|
#define ISSI_REG_PICTUREFRAME 0x01
|
||||||
|
|
||||||
// Not defined in the datasheet -- See AN for IC
|
// Not defined in the datasheet -- See AN for IC
|
||||||
#define ISSI_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting
|
#define ISSI_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting
|
||||||
|
|
||||||
#define ISSI_REG_SHUTDOWN 0x0A
|
#define ISSI_REG_SHUTDOWN 0x0A
|
||||||
#define ISSI_REG_AUDIOSYNC 0x06
|
#define ISSI_REG_AUDIOSYNC 0x06
|
||||||
|
|
||||||
#define ISSI_COMMANDREGISTER 0xFD
|
#define ISSI_COMMANDREGISTER 0xFD
|
||||||
#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine'
|
#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine'
|
||||||
|
|
||||||
#ifndef ISSI_TIMEOUT
|
#ifndef ISSI_TIMEOUT
|
||||||
# define ISSI_TIMEOUT 100
|
# define ISSI_TIMEOUT 100
|
||||||
@ -148,7 +148,7 @@ void IS31FL3731_init(uint8_t addr) {
|
|||||||
|
|
||||||
// enable software shutdown
|
// enable software shutdown
|
||||||
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
|
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
|
||||||
#ifdef ISSI_3731_DEGHOST // set to enable de-ghosting of the array
|
#ifdef ISSI_3731_DEGHOST // set to enable de-ghosting of the array
|
||||||
IS31FL3731_write_register(addr, ISSI_REG_GHOST_IMAGE_PREVENTION, 0x10);
|
IS31FL3731_write_register(addr, ISSI_REG_GHOST_IMAGE_PREVENTION, 0x10);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -41,13 +41,13 @@
|
|||||||
#define ISSI_REG_PICTUREFRAME 0x01
|
#define ISSI_REG_PICTUREFRAME 0x01
|
||||||
|
|
||||||
// Not defined in the datasheet -- See AN for IC
|
// Not defined in the datasheet -- See AN for IC
|
||||||
#define ISSI_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting
|
#define ISSI_REG_GHOST_IMAGE_PREVENTION 0xC2 // Set bit 4 to enable de-ghosting
|
||||||
|
|
||||||
#define ISSI_REG_SHUTDOWN 0x0A
|
#define ISSI_REG_SHUTDOWN 0x0A
|
||||||
#define ISSI_REG_AUDIOSYNC 0x06
|
#define ISSI_REG_AUDIOSYNC 0x06
|
||||||
|
|
||||||
#define ISSI_COMMANDREGISTER 0xFD
|
#define ISSI_COMMANDREGISTER 0xFD
|
||||||
#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine'
|
#define ISSI_BANK_FUNCTIONREG 0x0B // helpfully called 'page nine'
|
||||||
|
|
||||||
#ifndef ISSI_TIMEOUT
|
#ifndef ISSI_TIMEOUT
|
||||||
# define ISSI_TIMEOUT 100
|
# define ISSI_TIMEOUT 100
|
||||||
@ -136,7 +136,7 @@ void IS31FL3731_init(uint8_t addr) {
|
|||||||
|
|
||||||
// enable software shutdown
|
// enable software shutdown
|
||||||
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
|
IS31FL3731_write_register(addr, ISSI_REG_SHUTDOWN, 0x00);
|
||||||
#ifdef ISSI_3731_DEGHOST // set to enable de-ghosting of the array
|
#ifdef ISSI_3731_DEGHOST // set to enable de-ghosting of the array
|
||||||
IS31FL3731_write_register(addr, ISSI_REG_GHOST_IMAGE_PREVENTION, 0x10);
|
IS31FL3731_write_register(addr, ISSI_REG_GHOST_IMAGE_PREVENTION, 0x10);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -39,16 +39,16 @@
|
|||||||
#define ISSI_INTERRUPTMASKREGISTER 0xF0
|
#define ISSI_INTERRUPTMASKREGISTER 0xF0
|
||||||
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
||||||
|
|
||||||
#define ISSI_PAGE_LEDCONTROL 0x00 // PG0
|
#define ISSI_PAGE_LEDCONTROL 0x00 // PG0
|
||||||
#define ISSI_PAGE_PWM 0x01 // PG1
|
#define ISSI_PAGE_PWM 0x01 // PG1
|
||||||
#define ISSI_PAGE_AUTOBREATH 0x02 // PG2
|
#define ISSI_PAGE_AUTOBREATH 0x02 // PG2
|
||||||
#define ISSI_PAGE_FUNCTION 0x03 // PG3
|
#define ISSI_PAGE_FUNCTION 0x03 // PG3
|
||||||
|
|
||||||
#define ISSI_REG_CONFIGURATION 0x00 // PG3
|
#define ISSI_REG_CONFIGURATION 0x00 // PG3
|
||||||
#define ISSI_REG_GLOBALCURRENT 0x01 // PG3
|
#define ISSI_REG_GLOBALCURRENT 0x01 // PG3
|
||||||
#define ISSI_REG_RESET 0x11 // PG3
|
#define ISSI_REG_RESET 0x11 // PG3
|
||||||
#define ISSI_REG_SWPULLUP 0x0F // PG3
|
#define ISSI_REG_SWPULLUP 0x0F // PG3
|
||||||
#define ISSI_REG_CSPULLUP 0x10 // PG3
|
#define ISSI_REG_CSPULLUP 0x10 // PG3
|
||||||
|
|
||||||
#ifndef ISSI_TIMEOUT
|
#ifndef ISSI_TIMEOUT
|
||||||
# define ISSI_TIMEOUT 100
|
# define ISSI_TIMEOUT 100
|
||||||
@ -59,7 +59,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ISSI_PWM_FREQUENCY
|
#ifndef ISSI_PWM_FREQUENCY
|
||||||
# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3733B only
|
# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3733B only
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ISSI_SWPULLUP
|
#ifndef ISSI_SWPULLUP
|
||||||
|
@ -47,13 +47,13 @@ void IS31FL3733_set_led_control_register(uint8_t index, bool value);
|
|||||||
void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index);
|
void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index);
|
||||||
void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index);
|
void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index);
|
||||||
|
|
||||||
#define PUR_0R 0x00 // No PUR resistor
|
#define PUR_0R 0x00 // No PUR resistor
|
||||||
#define PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
|
#define PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
|
||||||
#define PUR_3KR 0x03 // 3.0k Ohm resistor on all the time
|
#define PUR_3KR 0x03 // 3.0k Ohm resistor on all the time
|
||||||
#define PUR_4KR 0x04 // 4.0k Ohm resistor on all the time
|
#define PUR_4KR 0x04 // 4.0k Ohm resistor on all the time
|
||||||
#define PUR_8KR 0x05 // 8.0k Ohm resistor on all the time
|
#define PUR_8KR 0x05 // 8.0k Ohm resistor on all the time
|
||||||
#define PUR_16KR 0x06 // 16k Ohm resistor on all the time
|
#define PUR_16KR 0x06 // 16k Ohm resistor on all the time
|
||||||
#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL
|
#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL
|
||||||
|
|
||||||
#define A_1 0x00
|
#define A_1 0x00
|
||||||
#define A_2 0x01
|
#define A_2 0x01
|
||||||
|
@ -38,16 +38,16 @@
|
|||||||
#define ISSI_INTERRUPTMASKREGISTER 0xF0
|
#define ISSI_INTERRUPTMASKREGISTER 0xF0
|
||||||
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
||||||
|
|
||||||
#define ISSI_PAGE_LEDCONTROL 0x00 // PG0
|
#define ISSI_PAGE_LEDCONTROL 0x00 // PG0
|
||||||
#define ISSI_PAGE_PWM 0x01 // PG1
|
#define ISSI_PAGE_PWM 0x01 // PG1
|
||||||
#define ISSI_PAGE_AUTOBREATH 0x02 // PG2
|
#define ISSI_PAGE_AUTOBREATH 0x02 // PG2
|
||||||
#define ISSI_PAGE_FUNCTION 0x03 // PG3
|
#define ISSI_PAGE_FUNCTION 0x03 // PG3
|
||||||
|
|
||||||
#define ISSI_REG_CONFIGURATION 0x00 // PG3
|
#define ISSI_REG_CONFIGURATION 0x00 // PG3
|
||||||
#define ISSI_REG_GLOBALCURRENT 0x01 // PG3
|
#define ISSI_REG_GLOBALCURRENT 0x01 // PG3
|
||||||
#define ISSI_REG_RESET 0x11 // PG3
|
#define ISSI_REG_RESET 0x11 // PG3
|
||||||
#define ISSI_REG_SWPULLUP 0x0F // PG3
|
#define ISSI_REG_SWPULLUP 0x0F // PG3
|
||||||
#define ISSI_REG_CSPULLUP 0x10 // PG3
|
#define ISSI_REG_CSPULLUP 0x10 // PG3
|
||||||
|
|
||||||
#ifndef ISSI_TIMEOUT
|
#ifndef ISSI_TIMEOUT
|
||||||
# define ISSI_TIMEOUT 100
|
# define ISSI_TIMEOUT 100
|
||||||
@ -58,7 +58,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ISSI_PWM_FREQUENCY
|
#ifndef ISSI_PWM_FREQUENCY
|
||||||
# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3733B only
|
# define ISSI_PWM_FREQUENCY 0b000 // PFS - IS31FL3733B only
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ISSI_SWPULLUP
|
#ifndef ISSI_SWPULLUP
|
||||||
|
@ -48,13 +48,13 @@ void IS31FL3733_set_led_control_register(uint8_t index, bool red, bool green, bo
|
|||||||
void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index);
|
void IS31FL3733_update_pwm_buffers(uint8_t addr, uint8_t index);
|
||||||
void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index);
|
void IS31FL3733_update_led_control_registers(uint8_t addr, uint8_t index);
|
||||||
|
|
||||||
#define PUR_0R 0x00 // No PUR resistor
|
#define PUR_0R 0x00 // No PUR resistor
|
||||||
#define PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
|
#define PUR_05KR 0x02 // 0.5k Ohm resistor in t_NOL
|
||||||
#define PUR_3KR 0x03 // 3.0k Ohm resistor on all the time
|
#define PUR_3KR 0x03 // 3.0k Ohm resistor on all the time
|
||||||
#define PUR_4KR 0x04 // 4.0k Ohm resistor on all the time
|
#define PUR_4KR 0x04 // 4.0k Ohm resistor on all the time
|
||||||
#define PUR_8KR 0x05 // 8.0k Ohm resistor on all the time
|
#define PUR_8KR 0x05 // 8.0k Ohm resistor on all the time
|
||||||
#define PUR_16KR 0x06 // 16k Ohm resistor on all the time
|
#define PUR_16KR 0x06 // 16k Ohm resistor on all the time
|
||||||
#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL
|
#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL
|
||||||
|
|
||||||
#define A_1 0x00
|
#define A_1 0x00
|
||||||
#define A_2 0x01
|
#define A_2 0x01
|
||||||
|
@ -36,16 +36,16 @@
|
|||||||
#define ISSI_INTERRUPTMASKREGISTER 0xF0
|
#define ISSI_INTERRUPTMASKREGISTER 0xF0
|
||||||
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
||||||
|
|
||||||
#define ISSI_PAGE_LEDCONTROL 0x00 // PG0
|
#define ISSI_PAGE_LEDCONTROL 0x00 // PG0
|
||||||
#define ISSI_PAGE_PWM 0x01 // PG1
|
#define ISSI_PAGE_PWM 0x01 // PG1
|
||||||
#define ISSI_PAGE_AUTOBREATH 0x02 // PG2
|
#define ISSI_PAGE_AUTOBREATH 0x02 // PG2
|
||||||
#define ISSI_PAGE_FUNCTION 0x03 // PG3
|
#define ISSI_PAGE_FUNCTION 0x03 // PG3
|
||||||
|
|
||||||
#define ISSI_REG_CONFIGURATION 0x00 // PG3
|
#define ISSI_REG_CONFIGURATION 0x00 // PG3
|
||||||
#define ISSI_REG_GLOBALCURRENT 0x01 // PG3
|
#define ISSI_REG_GLOBALCURRENT 0x01 // PG3
|
||||||
#define ISSI_REG_RESET 0x11 // PG3
|
#define ISSI_REG_RESET 0x11 // PG3
|
||||||
#define ISSI_REG_SWPULLUP 0x0F // PG3
|
#define ISSI_REG_SWPULLUP 0x0F // PG3
|
||||||
#define ISSI_REG_CSPULLUP 0x10 // PG3
|
#define ISSI_REG_CSPULLUP 0x10 // PG3
|
||||||
|
|
||||||
#ifndef ISSI_TIMEOUT
|
#ifndef ISSI_TIMEOUT
|
||||||
# define ISSI_TIMEOUT 100
|
# define ISSI_TIMEOUT 100
|
||||||
|
@ -61,14 +61,14 @@ void IS31FL3736_mono_set_led_control_register(uint8_t index, bool enabled);
|
|||||||
void IS31FL3736_update_pwm_buffers(uint8_t addr1, uint8_t addr2);
|
void IS31FL3736_update_pwm_buffers(uint8_t addr1, uint8_t addr2);
|
||||||
void IS31FL3736_update_led_control_registers(uint8_t addr1, uint8_t addr2);
|
void IS31FL3736_update_led_control_registers(uint8_t addr1, uint8_t addr2);
|
||||||
|
|
||||||
#define PUR_0R 0x00 // No PUR resistor
|
#define PUR_0R 0x00 // No PUR resistor
|
||||||
#define PUR_05KR 0x01 // 0.5k Ohm resistor
|
#define PUR_05KR 0x01 // 0.5k Ohm resistor
|
||||||
#define PUR_1KR 0x02 // 1.0k Ohm resistor
|
#define PUR_1KR 0x02 // 1.0k Ohm resistor
|
||||||
#define PUR_2KR 0x03 // 2.0k Ohm resistor
|
#define PUR_2KR 0x03 // 2.0k Ohm resistor
|
||||||
#define PUR_4KR 0x04 // 4.0k Ohm resistor
|
#define PUR_4KR 0x04 // 4.0k Ohm resistor
|
||||||
#define PUR_8KR 0x05 // 8.0k Ohm resistor
|
#define PUR_8KR 0x05 // 8.0k Ohm resistor
|
||||||
#define PUR_16KR 0x06 // 16k Ohm resistor
|
#define PUR_16KR 0x06 // 16k Ohm resistor
|
||||||
#define PUR_32KR 0x07 // 32k Ohm resistor
|
#define PUR_32KR 0x07 // 32k Ohm resistor
|
||||||
|
|
||||||
#define A_1 0x00
|
#define A_1 0x00
|
||||||
#define A_2 0x02
|
#define A_2 0x02
|
||||||
|
@ -38,16 +38,16 @@
|
|||||||
#define ISSI_INTERRUPTMASKREGISTER 0xF0
|
#define ISSI_INTERRUPTMASKREGISTER 0xF0
|
||||||
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
||||||
|
|
||||||
#define ISSI_PAGE_LEDCONTROL 0x00 // PG0
|
#define ISSI_PAGE_LEDCONTROL 0x00 // PG0
|
||||||
#define ISSI_PAGE_PWM 0x01 // PG1
|
#define ISSI_PAGE_PWM 0x01 // PG1
|
||||||
#define ISSI_PAGE_AUTOBREATH 0x02 // PG2
|
#define ISSI_PAGE_AUTOBREATH 0x02 // PG2
|
||||||
#define ISSI_PAGE_FUNCTION 0x03 // PG3
|
#define ISSI_PAGE_FUNCTION 0x03 // PG3
|
||||||
|
|
||||||
#define ISSI_REG_CONFIGURATION 0x00 // PG3
|
#define ISSI_REG_CONFIGURATION 0x00 // PG3
|
||||||
#define ISSI_REG_GLOBALCURRENT 0x01 // PG3
|
#define ISSI_REG_GLOBALCURRENT 0x01 // PG3
|
||||||
#define ISSI_REG_RESET 0x11 // PG3
|
#define ISSI_REG_RESET 0x11 // PG3
|
||||||
#define ISSI_REG_SWPULLUP 0x0F // PG3
|
#define ISSI_REG_SWPULLUP 0x0F // PG3
|
||||||
#define ISSI_REG_CSPULLUP 0x10 // PG3
|
#define ISSI_REG_CSPULLUP 0x10 // PG3
|
||||||
|
|
||||||
#ifndef ISSI_TIMEOUT
|
#ifndef ISSI_TIMEOUT
|
||||||
# define ISSI_TIMEOUT 100
|
# define ISSI_TIMEOUT 100
|
||||||
|
@ -48,14 +48,14 @@ void IS31FL3737_set_led_control_register(uint8_t index, bool red, bool green, bo
|
|||||||
void IS31FL3737_update_pwm_buffers(uint8_t addr1, uint8_t addr2);
|
void IS31FL3737_update_pwm_buffers(uint8_t addr1, uint8_t addr2);
|
||||||
void IS31FL3737_update_led_control_registers(uint8_t addr1, uint8_t addr2);
|
void IS31FL3737_update_led_control_registers(uint8_t addr1, uint8_t addr2);
|
||||||
|
|
||||||
#define PUR_0R 0x00 // No PUR resistor
|
#define PUR_0R 0x00 // No PUR resistor
|
||||||
#define PUR_05KR 0x01 // 0.5k Ohm resistor in t_NOL
|
#define PUR_05KR 0x01 // 0.5k Ohm resistor in t_NOL
|
||||||
#define PUR_1KR 0x02 // 1.0k Ohm resistor in t_NOL
|
#define PUR_1KR 0x02 // 1.0k Ohm resistor in t_NOL
|
||||||
#define PUR_2KR 0x03 // 2.0k Ohm resistor in t_NOL
|
#define PUR_2KR 0x03 // 2.0k Ohm resistor in t_NOL
|
||||||
#define PUR_4KR 0x04 // 4.0k Ohm resistor in t_NOL
|
#define PUR_4KR 0x04 // 4.0k Ohm resistor in t_NOL
|
||||||
#define PUR_8KR 0x05 // 8.0k Ohm resistor in t_NOL
|
#define PUR_8KR 0x05 // 8.0k Ohm resistor in t_NOL
|
||||||
#define PUR_16KR 0x06 // 16k Ohm resistor in t_NOL
|
#define PUR_16KR 0x06 // 16k Ohm resistor in t_NOL
|
||||||
#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL
|
#define PUR_32KR 0x07 // 32k Ohm resistor in t_NOL
|
||||||
|
|
||||||
#define A_1 0x00
|
#define A_1 0x00
|
||||||
#define A_2 0x01
|
#define A_2 0x01
|
||||||
|
@ -42,16 +42,16 @@
|
|||||||
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
#define ISSI_INTERRUPTSTATUSREGISTER 0xF1
|
||||||
#define ISSI_IDREGISTER 0xFC
|
#define ISSI_IDREGISTER 0xFC
|
||||||
|
|
||||||
#define ISSI_PAGE_PWM0 0x00 // PG0
|
#define ISSI_PAGE_PWM0 0x00 // PG0
|
||||||
#define ISSI_PAGE_PWM1 0x01 // PG1
|
#define ISSI_PAGE_PWM1 0x01 // PG1
|
||||||
#define ISSI_PAGE_SCALING_0 0x02 // PG2
|
#define ISSI_PAGE_SCALING_0 0x02 // PG2
|
||||||
#define ISSI_PAGE_SCALING_1 0x03 // PG3
|
#define ISSI_PAGE_SCALING_1 0x03 // PG3
|
||||||
#define ISSI_PAGE_FUNCTION 0x04 // PG4
|
#define ISSI_PAGE_FUNCTION 0x04 // PG4
|
||||||
|
|
||||||
#define ISSI_REG_CONFIGURATION 0x00 // PG4
|
#define ISSI_REG_CONFIGURATION 0x00 // PG4
|
||||||
#define ISSI_REG_GLOBALCURRENT 0x01 // PG4
|
#define ISSI_REG_GLOBALCURRENT 0x01 // PG4
|
||||||
#define ISSI_REG_PULLDOWNUP 0x02 // PG4
|
#define ISSI_REG_PULLDOWNUP 0x02 // PG4
|
||||||
#define ISSI_REG_RESET 0x3F // PG4
|
#define ISSI_REG_RESET 0x3F // PG4
|
||||||
|
|
||||||
#ifndef ISSI_TIMEOUT
|
#ifndef ISSI_TIMEOUT
|
||||||
# define ISSI_TIMEOUT 100
|
# define ISSI_TIMEOUT 100
|
||||||
|
@ -51,14 +51,14 @@ void IS31FL3741_set_scaling_registers(const is31_led *pled, uint8_t red, uint8_t
|
|||||||
|
|
||||||
void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);
|
void IS31FL3741_set_pwm_buffer(const is31_led *pled, uint8_t red, uint8_t green, uint8_t blue);
|
||||||
|
|
||||||
#define PUR_0R 0x00 // No PUR resistor
|
#define PUR_0R 0x00 // No PUR resistor
|
||||||
#define PUR_05KR 0x01 // 0.5k Ohm resistor
|
#define PUR_05KR 0x01 // 0.5k Ohm resistor
|
||||||
#define PUR_1KR 0x02 // 1.0k Ohm resistor
|
#define PUR_1KR 0x02 // 1.0k Ohm resistor
|
||||||
#define PUR_2KR 0x03 // 2.0k Ohm resistor
|
#define PUR_2KR 0x03 // 2.0k Ohm resistor
|
||||||
#define PUR_4KR 0x04 // 4.0k Ohm resistor
|
#define PUR_4KR 0x04 // 4.0k Ohm resistor
|
||||||
#define PUR_8KR 0x05 // 8.0k Ohm resistor
|
#define PUR_8KR 0x05 // 8.0k Ohm resistor
|
||||||
#define PUR_16KR 0x06 // 16k Ohm resistor
|
#define PUR_16KR 0x06 // 16k Ohm resistor
|
||||||
#define PUR_32KR 0x07 // 32k Ohm resistor
|
#define PUR_32KR 0x07 // 32k Ohm resistor
|
||||||
|
|
||||||
#define CS1_SW1 0x00
|
#define CS1_SW1 0x00
|
||||||
#define CS2_SW1 0x01
|
#define CS2_SW1 0x01
|
||||||
|
@ -34,16 +34,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
# define OLED_DISPLAY_HEIGHT 64
|
# define OLED_DISPLAY_HEIGHT 64
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_MATRIX_SIZE
|
# ifndef OLED_MATRIX_SIZE
|
||||||
# define OLED_MATRIX_SIZE (OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH) // 1024 (compile time mathed)
|
# define OLED_MATRIX_SIZE (OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH) // 1024 (compile time mathed)
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_BLOCK_TYPE
|
# ifndef OLED_BLOCK_TYPE
|
||||||
# define OLED_BLOCK_TYPE uint16_t
|
# define OLED_BLOCK_TYPE uint16_t
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_BLOCK_COUNT
|
# ifndef OLED_BLOCK_COUNT
|
||||||
# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8) // 32 (compile time mathed)
|
# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8) // 32 (compile time mathed)
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_BLOCK_SIZE
|
# ifndef OLED_BLOCK_SIZE
|
||||||
# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT) // 32 (compile time mathed)
|
# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT) // 32 (compile time mathed)
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_COM_PINS
|
# ifndef OLED_COM_PINS
|
||||||
# define OLED_COM_PINS COM_PINS_ALT
|
# define OLED_COM_PINS COM_PINS_ALT
|
||||||
@ -68,7 +68,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
// If OLED_BLOCK_TYPE is uint8_t, these tables would look like:
|
// If OLED_BLOCK_TYPE is uint8_t, these tables would look like:
|
||||||
// #define OLED_SOURCE_MAP { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120 }
|
// #define OLED_SOURCE_MAP { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120 }
|
||||||
// #define OLED_TARGET_MAP { 56, 120, 48, 112, 40, 104, 32, 96, 24, 88, 16, 80, 8, 72, 0, 64 }
|
// #define OLED_TARGET_MAP { 56, 120, 48, 112, 40, 104, 32, 96, 24, 88, 16, 80, 8, 72, 0, 64 }
|
||||||
#else // defined(OLED_DISPLAY_128X64)
|
#else // defined(OLED_DISPLAY_128X64)
|
||||||
// Default 128x32
|
// Default 128x32
|
||||||
# ifndef OLED_DISPLAY_WIDTH
|
# ifndef OLED_DISPLAY_WIDTH
|
||||||
# define OLED_DISPLAY_WIDTH 128
|
# define OLED_DISPLAY_WIDTH 128
|
||||||
@ -77,16 +77,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
# define OLED_DISPLAY_HEIGHT 32
|
# define OLED_DISPLAY_HEIGHT 32
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_MATRIX_SIZE
|
# ifndef OLED_MATRIX_SIZE
|
||||||
# define OLED_MATRIX_SIZE (OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH) // 512 (compile time mathed)
|
# define OLED_MATRIX_SIZE (OLED_DISPLAY_HEIGHT / 8 * OLED_DISPLAY_WIDTH) // 512 (compile time mathed)
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_BLOCK_TYPE
|
# ifndef OLED_BLOCK_TYPE
|
||||||
# define OLED_BLOCK_TYPE uint16_t // Type to use for segmenting the oled display for smart rendering, use unsigned types only
|
# define OLED_BLOCK_TYPE uint16_t // Type to use for segmenting the oled display for smart rendering, use unsigned types only
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_BLOCK_COUNT
|
# ifndef OLED_BLOCK_COUNT
|
||||||
# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8) // 16 (compile time mathed)
|
# define OLED_BLOCK_COUNT (sizeof(OLED_BLOCK_TYPE) * 8) // 16 (compile time mathed)
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_BLOCK_SIZE
|
# ifndef OLED_BLOCK_SIZE
|
||||||
# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT) // 32 (compile time mathed)
|
# define OLED_BLOCK_SIZE (OLED_MATRIX_SIZE / OLED_BLOCK_COUNT) // 32 (compile time mathed)
|
||||||
# endif
|
# endif
|
||||||
# ifndef OLED_COM_PINS
|
# ifndef OLED_COM_PINS
|
||||||
# define OLED_COM_PINS COM_PINS_SEQ
|
# define OLED_COM_PINS COM_PINS_SEQ
|
||||||
@ -105,7 +105,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
// If OLED_BLOCK_TYPE is uint8_t, these tables would look like:
|
// If OLED_BLOCK_TYPE is uint8_t, these tables would look like:
|
||||||
// #define OLED_SOURCE_MAP { 0, 8, 16, 24, 32, 40, 48, 56 }
|
// #define OLED_SOURCE_MAP { 0, 8, 16, 24, 32, 40, 48, 56 }
|
||||||
// #define OLED_TARGET_MAP { 48, 32, 16, 0, 56, 40, 24, 8 }
|
// #define OLED_TARGET_MAP { 48, 32, 16, 0, 56, 40, 24, 8 }
|
||||||
#endif // defined(OLED_DISPLAY_CUSTOM)
|
#endif // defined(OLED_DISPLAY_CUSTOM)
|
||||||
|
|
||||||
#if !defined(OLED_IC)
|
#if !defined(OLED_IC)
|
||||||
# define OLED_IC OLED_IC_SSD1306
|
# define OLED_IC OLED_IC_SSD1306
|
||||||
@ -180,7 +180,7 @@ typedef enum {
|
|||||||
OLED_ROTATION_0 = 0,
|
OLED_ROTATION_0 = 0,
|
||||||
OLED_ROTATION_90 = 1,
|
OLED_ROTATION_90 = 1,
|
||||||
OLED_ROTATION_180 = 2,
|
OLED_ROTATION_180 = 2,
|
||||||
OLED_ROTATION_270 = 3, // OLED_ROTATION_90 | OLED_ROTATION_180
|
OLED_ROTATION_270 = 3, // OLED_ROTATION_90 | OLED_ROTATION_180
|
||||||
} oled_rotation_t;
|
} oled_rotation_t;
|
||||||
|
|
||||||
// Initialize the oled display, rotating the rendered output based on the define passed in.
|
// Initialize the oled display, rotating the rendered output based on the define passed in.
|
||||||
@ -262,7 +262,7 @@ void oled_write_raw_P(const char *data, uint16_t size);
|
|||||||
# define oled_write_P(data, invert) oled_write(data, invert)
|
# define oled_write_P(data, invert) oled_write(data, invert)
|
||||||
# define oled_write_ln_P(data, invert) oled_write(data, invert)
|
# define oled_write_ln_P(data, invert) oled_write(data, invert)
|
||||||
# define oled_write_raw_P(data, size) oled_write_raw(data, size)
|
# define oled_write_raw_P(data, size) oled_write_raw(data, size)
|
||||||
#endif // defined(__AVR__)
|
#endif // defined(__AVR__)
|
||||||
|
|
||||||
// Can be used to manually turn on the screen if it is off
|
// Can be used to manually turn on the screen if it is off
|
||||||
// Returns true if the screen was on or turns on
|
// Returns true if the screen was on or turns on
|
||||||
|
@ -53,7 +53,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define PAGE_ADDR 0x22
|
#define PAGE_ADDR 0x22
|
||||||
#define PAM_SETCOLUMN_LSB 0x00
|
#define PAM_SETCOLUMN_LSB 0x00
|
||||||
#define PAM_SETCOLUMN_MSB 0x10
|
#define PAM_SETCOLUMN_MSB 0x10
|
||||||
#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7
|
#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7
|
||||||
|
|
||||||
// Hardware Configuration Commands
|
// Hardware Configuration Commands
|
||||||
#define DISPLAY_START_LINE 0x40
|
#define DISPLAY_START_LINE 0x40
|
||||||
@ -97,9 +97,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define I2C_DATA 0x40
|
#define I2C_DATA 0x40
|
||||||
#if defined(__AVR__)
|
#if defined(__AVR__)
|
||||||
# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
|
# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
|
||||||
#else // defined(__AVR__)
|
#else // defined(__AVR__)
|
||||||
# define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
|
# define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
|
||||||
#endif // defined(__AVR__)
|
#endif // defined(__AVR__)
|
||||||
#define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
|
#define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
|
||||||
#define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, OLED_I2C_TIMEOUT)
|
#define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, OLED_I2C_TIMEOUT)
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ bool oled_inverted = false;
|
|||||||
uint8_t oled_brightness = OLED_BRIGHTNESS;
|
uint8_t oled_brightness = OLED_BRIGHTNESS;
|
||||||
oled_rotation_t oled_rotation = 0;
|
oled_rotation_t oled_rotation = 0;
|
||||||
uint8_t oled_rotation_width = 0;
|
uint8_t oled_rotation_width = 0;
|
||||||
uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values
|
uint8_t oled_scroll_speed = 0; // this holds the speed after being remapped to ssd1306 internal values
|
||||||
uint8_t oled_scroll_start = 0;
|
uint8_t oled_scroll_start = 0;
|
||||||
uint8_t oled_scroll_end = 7;
|
uint8_t oled_scroll_end = 7;
|
||||||
#if OLED_TIMEOUT > 0
|
#if OLED_TIMEOUT > 0
|
||||||
@ -190,7 +190,7 @@ bool oled_init(oled_rotation_t rotation) {
|
|||||||
#if (OLED_IC != OLED_IC_SH1106)
|
#if (OLED_IC != OLED_IC_SH1106)
|
||||||
// MEMORY_MODE is unsupported on SH1106 (Page Addressing only)
|
// MEMORY_MODE is unsupported on SH1106 (Page Addressing only)
|
||||||
MEMORY_MODE,
|
MEMORY_MODE,
|
||||||
0x00, // Horizontal addressing mode
|
0x00, // Horizontal addressing mode
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
if (I2C_TRANSMIT_P(display_setup1) != I2C_STATUS_SUCCESS) {
|
if (I2C_TRANSMIT_P(display_setup1) != I2C_STATUS_SUCCESS) {
|
||||||
@ -232,8 +232,12 @@ bool oled_init(oled_rotation_t rotation) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return rotation; }
|
__attribute__((weak)) oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||||
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) { return rotation; }
|
return rotation;
|
||||||
|
}
|
||||||
|
__attribute__((weak)) oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
return rotation;
|
||||||
|
}
|
||||||
|
|
||||||
void oled_clear(void) {
|
void oled_clear(void) {
|
||||||
memset(oled_buffer, 0, sizeof(oled_buffer));
|
memset(oled_buffer, 0, sizeof(oled_buffer));
|
||||||
@ -306,9 +310,9 @@ void oled_render(void) {
|
|||||||
// Set column & page position
|
// Set column & page position
|
||||||
static uint8_t display_start[] = {I2C_CMD, COLUMN_ADDR, 0, OLED_DISPLAY_WIDTH - 1, PAGE_ADDR, 0, OLED_DISPLAY_HEIGHT / 8 - 1};
|
static uint8_t display_start[] = {I2C_CMD, COLUMN_ADDR, 0, OLED_DISPLAY_WIDTH - 1, PAGE_ADDR, 0, OLED_DISPLAY_HEIGHT / 8 - 1};
|
||||||
if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
|
if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
|
||||||
calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
|
calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
|
||||||
} else {
|
} else {
|
||||||
calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
|
calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send column & page position
|
// Send column & page position
|
||||||
@ -368,7 +372,8 @@ void oled_advance_page(bool clearPageRemainder) {
|
|||||||
remaining = remaining / OLED_FONT_WIDTH;
|
remaining = remaining / OLED_FONT_WIDTH;
|
||||||
|
|
||||||
// Write empty character until next line
|
// Write empty character until next line
|
||||||
while (remaining--) oled_write_char(' ', false);
|
while (remaining--)
|
||||||
|
oled_write_char(' ', false);
|
||||||
} else {
|
} else {
|
||||||
// Next page index out of bounds?
|
// Next page index out of bounds?
|
||||||
if (index + remaining >= OLED_MATRIX_SIZE) {
|
if (index + remaining >= OLED_MATRIX_SIZE) {
|
||||||
@ -419,7 +424,7 @@ void oled_write_char(const char data, bool invert) {
|
|||||||
_Static_assert(sizeof(font) >= ((OLED_FONT_END + 1 - OLED_FONT_START) * OLED_FONT_WIDTH), "OLED_FONT_END references outside array");
|
_Static_assert(sizeof(font) >= ((OLED_FONT_END + 1 - OLED_FONT_START) * OLED_FONT_WIDTH), "OLED_FONT_END references outside array");
|
||||||
|
|
||||||
// set the reder buffer data
|
// set the reder buffer data
|
||||||
uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index
|
uint8_t cast_data = (uint8_t)data; // font based on unsigned type for index
|
||||||
if (cast_data < OLED_FONT_START || cast_data > OLED_FONT_END) {
|
if (cast_data < OLED_FONT_START || cast_data > OLED_FONT_END) {
|
||||||
memset(oled_cursor, 0x00, OLED_FONT_WIDTH);
|
memset(oled_cursor, 0x00, OLED_FONT_WIDTH);
|
||||||
} else {
|
} else {
|
||||||
@ -545,7 +550,7 @@ void oled_write_raw_P(const char *data, uint16_t size) {
|
|||||||
oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
|
oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // defined(__AVR__)
|
#endif // defined(__AVR__)
|
||||||
|
|
||||||
bool oled_on(void) {
|
bool oled_on(void) {
|
||||||
if (!oled_initialized) {
|
if (!oled_initialized) {
|
||||||
@ -595,7 +600,9 @@ bool oled_off(void) {
|
|||||||
return !oled_active;
|
return !oled_active;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_oled_on(void) { return oled_active; }
|
bool is_oled_on(void) {
|
||||||
|
return oled_active;
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t oled_set_brightness(uint8_t level) {
|
uint8_t oled_set_brightness(uint8_t level) {
|
||||||
if (!oled_initialized) {
|
if (!oled_initialized) {
|
||||||
@ -613,7 +620,9 @@ uint8_t oled_set_brightness(uint8_t level) {
|
|||||||
return oled_brightness;
|
return oled_brightness;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t oled_get_brightness(void) { return oled_brightness; }
|
uint8_t oled_get_brightness(void) {
|
||||||
|
return oled_brightness;
|
||||||
|
}
|
||||||
|
|
||||||
// Set the specific 8 lines rows of the screen to scroll.
|
// Set the specific 8 lines rows of the screen to scroll.
|
||||||
// 0 is the default for start, and 7 for end, which is the entire
|
// 0 is the default for start, and 7 for end, which is the entire
|
||||||
@ -693,7 +702,9 @@ bool oled_scroll_off(void) {
|
|||||||
return !oled_scrolling;
|
return !oled_scrolling;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_oled_scrolling(void) { return oled_scrolling; }
|
bool is_oled_scrolling(void) {
|
||||||
|
return oled_scrolling;
|
||||||
|
}
|
||||||
|
|
||||||
bool oled_invert(bool invert) {
|
bool oled_invert(bool invert) {
|
||||||
if (!oled_initialized) {
|
if (!oled_initialized) {
|
||||||
@ -777,5 +788,9 @@ void oled_task(void) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) bool oled_task_kb(void) { return oled_task_user(); }
|
__attribute__((weak)) bool oled_task_kb(void) {
|
||||||
__attribute__((weak)) bool oled_task_user(void) { return true; }
|
return oled_task_user();
|
||||||
|
}
|
||||||
|
__attribute__((weak)) bool oled_task_user(void) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user