<commit_before>/*
 * oled.cpp
 *
 *  Created on: 2015-11-12
 *      Author: <NAME>
 */

#include <Arduino.h>
#include <Wire.h>
#include <U8glib.h>
#include "oled.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0);	// I2C

#define OLED_LINES 4
const char* oledText[OLED_LINES];

void oledInit(void) {
	// u8g.setRot180();
	oledCls();
}

void oledLoop(void) {
	u8g.firstPage();
	do {
		for (int i = 0; i < OLED_LINES; i++) {
			int L = strlen(oledText[i]);
			if (L < 15) {
				u8g.setFont(u8g_font_9x15); // 2959 bytes
//			} else if (L < 17) {
//				u8g.setFont(u8g_font_8x13); // 2152 bytes
			} else if (L < 19) {
				u8g.setFont(u8g_font_7x13); // 2157 bytes
//			} else if (L < 22) {
//				u8g.setFont(u8g_font_6x13); // 2160 bytes
			} else {
				u8g.setFont(u8g_font_5x8); // 1693 bytes
			}
			u8g.drawStr(0, 15 + 16 * i, oledText[i]);
		}
	} while (u8g.nextPage());
}

void oledCls() {
	for (int i = 0; i < OLED_LINES; i++) {
		oledText[i] = "";
	}
}

void oledPrintLine(const char *str, int line) {
	oledText[line] = str;
}
<commit_msg>Add buffer for OLED strings<commit_after>/*
 * oled.cpp
 *
 *  Created on: 2015-11-12
 *      Author: <NAME>
 */

#include <Arduino.h>
#include <Wire.h>
#include <U8glib.h>
#include "oled.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0);	// I2C

#define OLED_LINES 4
#define OLED_MAX_LINE 24
char oledText[OLED_LINES][OLED_MAX_LINE + 1];

void oledInit(void) {
	// u8g.setRot180();
	oledCls();
	for (uint8_t i = 0; i < OLED_LINES; i++) {
		memset(oledText[i], '\0', OLED_MAX_LINE + 1);
	}
}

void oledLoop(void) {
	u8g.firstPage();
	do {
		for (int i = 0; i < OLED_LINES; i++) {
			int L = strlen(oledText[i]);
			if (L < 15) {
				u8g.setFont(u8g_font_9x15); // 2959 bytes
//			} else if (L < 17) {
//				u8g.setFont(u8g_font_8x13); // 2152 bytes
			} else if (L < 19) {
				u8g.setFont(u8g_font_7x13); // 2157 bytes
//			} else if (L < 22) {
//				u8g.setFont(u8g_font_6x13); // 2160 bytes
			} else {
				u8g.setFont(u8g_font_5x8); // 1693 bytes
			}
			u8g.drawStr(0, 15 + 16 * i, oledText[i]);
		}
	} while (u8g.nextPage());
}

void oledCls() {
	for (int i = 0; i < OLED_LINES; i++) {
		oledText[i][0] = '\0';
	}
}

void oledPrintLine(const char *str, int line) {
	strncpy(oledText[line], str, OLED_MAX_LINE);
}

{'fraction_non_alphanumeric': 0.18053097345132743, 'fraction_numerical': 0.08451327433628318, 'mean_word_length': 3.044722719141324, 'pattern_counts': {'":': 0, '<': 24, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4203522', 'n_tokens_mistral': 1273, 'n_tokens_neox': 1109, 'n_words': 216}