diff --git a/earthquake/earthquake.ino b/earthquake/earthquake.ino index 33ff706760c5363cdd686ed5215579ad44ddf525..e46d12dffff1d7523d6a1a0c8c600d83043dc777 100644 --- a/earthquake/earthquake.ino +++ b/earthquake/earthquake.ino @@ -10,6 +10,10 @@ --------------------*/ LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); +const int stateOn = 1; +const int stateOff = 2; +const int stateConnect = 3; + /*-------------------- * Pin const @@ -29,6 +33,10 @@ const int seismicPin = A0; /*-------------------- * Global variable * --------------------*/ +// +int stateLED = 1; + +int valGlobal = 0; // Toggle button int state = HIGH; // the current state of the output pin @@ -37,8 +45,6 @@ int previous = LOW; // the previous reading from the input pin long time = 0; // the last time the output pin was toggled long debounce = 200; // the debounce time, increase if the output flickers -// LCD -// LiquidCrystal lcd(0, 1, 8, 9, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN // Seven Segment const byte digit[] = {64, 121, 36, 48, 25, 18, 2, 120, 0, 16}; @@ -91,13 +97,11 @@ void gyroOn(); void gyroOff(); void printLCD(int,int,String); void clearLCD(); +bool isState(int); void setup() { Serial.begin(115200); - - lcd.begin(16,2); - lcd.backlight(); // Toggle button toggleButtonInit(); @@ -127,13 +131,19 @@ void loop() { previous = reading; if(state == HIGH){ + if(!isState(stateOn)){ + clearLCD(); + printLCD(0,0,"Arduino ON"); + delay(1000); + } gyroOn(); - clearLCD(); - printLCD(0,0,"Arduino ON"); } else { gyroOff(); - clearLCD(); - printLCD(0,0,"Arduino OFF"); + if(!isState(stateOff)){ + clearLCD(); + printLCD(0,0,"Arduino OFF"); + delay(1000); + } } } @@ -159,7 +169,10 @@ void sevenSegmentInit(){ magnitude = 0; } -void lcdInit(){} +void lcdInit(){ + lcd.begin(16,2); + lcd.backlight(); +} void gyroInit(){ @@ -240,9 +253,12 @@ double magnitudeConvert() { } void displaySevenSegment(int val){ - digitalWrite(latchPin, LOW); - shiftOut(dataPin, clockPin, MSBFIRST, digit[val]); - digitalWrite(latchPin, HIGH); + if(val!=valGlobal){ + digitalWrite(latchPin, LOW); + shiftOut(dataPin, clockPin, MSBFIRST, digit[val]); + digitalWrite(latchPin, HIGH); + valGlobal=val; + } } void ledActive(){ @@ -317,3 +333,9 @@ void clearLCD(){ lcd.clear(); } +bool isState(int state){ + int temp = stateLED; + stateLED = state; + return temp==state; +} + diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino b/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino new file mode 100644 index 0000000000000000000000000000000000000000..390fe7e75c54950ccc11aac95ffa6f5847b6539b --- /dev/null +++ b/libraries/ESP8266WiFi/examples/HTTPSRequest/HTTPSRequest.ino @@ -0,0 +1,89 @@ +/* + * HTTP over TLS (HTTPS) example sketch + * + * This example demonstrates how to use + * WiFiClientSecure class to access HTTPS API. + * We fetch and display the status of + * esp8266/Arduino project continuous integration + * build. + * + * Created by Ivan Grokhotkov, 2015. + * This example is in public domain. + */ + +#include <ESP8266WiFi.h> +#include <WiFiClientSecure.h> + +const char* ssid = "........"; +const char* password = "........"; + +const char* host = "api.github.com"; +const int httpsPort = 443; + +// Use web browser to view and copy +// SHA1 fingerprint of the certificate +const char* fingerprint = "CF 05 98 89 CA FF 8E D8 5E 5C E0 C2 E4 F7 E6 C3 C7 50 DD 5C"; + +void setup() { + Serial.begin(115200); + Serial.println(); + Serial.print("connecting to "); + Serial.println(ssid); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + + // Use WiFiClientSecure class to create TLS connection + WiFiClientSecure client; + Serial.print("connecting to "); + Serial.println(host); + if (!client.connect(host, httpsPort)) { + Serial.println("connection failed"); + return; + } + + if (client.verify(fingerprint, host)) { + Serial.println("certificate matches"); + } else { + Serial.println("certificate doesn't match"); + } + + String url = "/repos/esp8266/Arduino/commits/master/status"; + Serial.print("requesting URL: "); + Serial.println(url); + + client.print(String("GET ") + url + " HTTP/1.1\r\n" + + "Host: " + host + "\r\n" + + "User-Agent: BuildFailureDetectorESP8266\r\n" + + "Connection: close\r\n\r\n"); + + Serial.println("request sent"); + while (client.connected()) { + String line = client.readStringUntil('\n'); + if (line == "\r") { + Serial.println("headers received"); + break; + } + } + String line = client.readStringUntil('\n'); + if (line.startsWith("{\"state\":\"success\"")) { + Serial.println("esp8266/Arduino CI successfull!"); + } else { + Serial.println("esp8266/Arduino CI has failed"); + } + Serial.println("reply was:"); + Serial.println("=========="); + Serial.println(line); + Serial.println("=========="); + Serial.println("closing connection"); +} + +void loop() { +} diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino new file mode 100644 index 0000000000000000000000000000000000000000..9b84ed3b7a47e350104abf20879f11ef58b55739 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/CACert.ino @@ -0,0 +1,86 @@ + +const unsigned char caCert[] PROGMEM = { + 0x30, 0x82, 0x03, 0xc5, 0x30, 0x82, 0x02, 0xad, 0xa0, 0x03, 0x02, 0x01, + 0x02, 0x02, 0x10, 0x02, 0xac, 0x5c, 0x26, 0x6a, 0x0b, 0x40, 0x9b, 0x8f, + 0x0b, 0x79, 0xf2, 0xae, 0x46, 0x25, 0x77, 0x30, 0x0d, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6c, + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, + 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, + 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x31, 0x31, 0x31, 0x31, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30, 0x6c, 0x31, 0x0b, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, + 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, + 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, + 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc6, 0xcc, 0xe5, 0x73, 0xe6, + 0xfb, 0xd4, 0xbb, 0xe5, 0x2d, 0x2d, 0x32, 0xa6, 0xdf, 0xe5, 0x81, 0x3f, + 0xc9, 0xcd, 0x25, 0x49, 0xb6, 0x71, 0x2a, 0xc3, 0xd5, 0x94, 0x34, 0x67, + 0xa2, 0x0a, 0x1c, 0xb0, 0x5f, 0x69, 0xa6, 0x40, 0xb1, 0xc4, 0xb7, 0xb2, + 0x8f, 0xd0, 0x98, 0xa4, 0xa9, 0x41, 0x59, 0x3a, 0xd3, 0xdc, 0x94, 0xd6, + 0x3c, 0xdb, 0x74, 0x38, 0xa4, 0x4a, 0xcc, 0x4d, 0x25, 0x82, 0xf7, 0x4a, + 0xa5, 0x53, 0x12, 0x38, 0xee, 0xf3, 0x49, 0x6d, 0x71, 0x91, 0x7e, 0x63, + 0xb6, 0xab, 0xa6, 0x5f, 0xc3, 0xa4, 0x84, 0xf8, 0x4f, 0x62, 0x51, 0xbe, + 0xf8, 0xc5, 0xec, 0xdb, 0x38, 0x92, 0xe3, 0x06, 0xe5, 0x08, 0x91, 0x0c, + 0xc4, 0x28, 0x41, 0x55, 0xfb, 0xcb, 0x5a, 0x89, 0x15, 0x7e, 0x71, 0xe8, + 0x35, 0xbf, 0x4d, 0x72, 0x09, 0x3d, 0xbe, 0x3a, 0x38, 0x50, 0x5b, 0x77, + 0x31, 0x1b, 0x8d, 0xb3, 0xc7, 0x24, 0x45, 0x9a, 0xa7, 0xac, 0x6d, 0x00, + 0x14, 0x5a, 0x04, 0xb7, 0xba, 0x13, 0xeb, 0x51, 0x0a, 0x98, 0x41, 0x41, + 0x22, 0x4e, 0x65, 0x61, 0x87, 0x81, 0x41, 0x50, 0xa6, 0x79, 0x5c, 0x89, + 0xde, 0x19, 0x4a, 0x57, 0xd5, 0x2e, 0xe6, 0x5d, 0x1c, 0x53, 0x2c, 0x7e, + 0x98, 0xcd, 0x1a, 0x06, 0x16, 0xa4, 0x68, 0x73, 0xd0, 0x34, 0x04, 0x13, + 0x5c, 0xa1, 0x71, 0xd3, 0x5a, 0x7c, 0x55, 0xdb, 0x5e, 0x64, 0xe1, 0x37, + 0x87, 0x30, 0x56, 0x04, 0xe5, 0x11, 0xb4, 0x29, 0x80, 0x12, 0xf1, 0x79, + 0x39, 0x88, 0xa2, 0x02, 0x11, 0x7c, 0x27, 0x66, 0xb7, 0x88, 0xb7, 0x78, + 0xf2, 0xca, 0x0a, 0xa8, 0x38, 0xab, 0x0a, 0x64, 0xc2, 0xbf, 0x66, 0x5d, + 0x95, 0x84, 0xc1, 0xa1, 0x25, 0x1e, 0x87, 0x5d, 0x1a, 0x50, 0x0b, 0x20, + 0x12, 0xcc, 0x41, 0xbb, 0x6e, 0x0b, 0x51, 0x38, 0xb8, 0x4b, 0xcb, 0x02, + 0x03, 0x01, 0x00, 0x01, 0xa3, 0x63, 0x30, 0x61, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, + 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, + 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, + 0x01, 0xd4, 0x98, 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, + 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0xb1, 0x3e, 0xc3, 0x69, 0x03, 0xf8, 0xbf, 0x47, 0x01, 0xd4, 0x98, + 0x26, 0x1a, 0x08, 0x02, 0xef, 0x63, 0x64, 0x2b, 0xc3, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x01, 0x00, 0x1c, 0x1a, 0x06, 0x97, 0xdc, 0xd7, 0x9c, + 0x9f, 0x3c, 0x88, 0x66, 0x06, 0x08, 0x57, 0x21, 0xdb, 0x21, 0x47, 0xf8, + 0x2a, 0x67, 0xaa, 0xbf, 0x18, 0x32, 0x76, 0x40, 0x10, 0x57, 0xc1, 0x8a, + 0xf3, 0x7a, 0xd9, 0x11, 0x65, 0x8e, 0x35, 0xfa, 0x9e, 0xfc, 0x45, 0xb5, + 0x9e, 0xd9, 0x4c, 0x31, 0x4b, 0xb8, 0x91, 0xe8, 0x43, 0x2c, 0x8e, 0xb3, + 0x78, 0xce, 0xdb, 0xe3, 0x53, 0x79, 0x71, 0xd6, 0xe5, 0x21, 0x94, 0x01, + 0xda, 0x55, 0x87, 0x9a, 0x24, 0x64, 0xf6, 0x8a, 0x66, 0xcc, 0xde, 0x9c, + 0x37, 0xcd, 0xa8, 0x34, 0xb1, 0x69, 0x9b, 0x23, 0xc8, 0x9e, 0x78, 0x22, + 0x2b, 0x70, 0x43, 0xe3, 0x55, 0x47, 0x31, 0x61, 0x19, 0xef, 0x58, 0xc5, + 0x85, 0x2f, 0x4e, 0x30, 0xf6, 0xa0, 0x31, 0x16, 0x23, 0xc8, 0xe7, 0xe2, + 0x65, 0x16, 0x33, 0xcb, 0xbf, 0x1a, 0x1b, 0xa0, 0x3d, 0xf8, 0xca, 0x5e, + 0x8b, 0x31, 0x8b, 0x60, 0x08, 0x89, 0x2d, 0x0c, 0x06, 0x5c, 0x52, 0xb7, + 0xc4, 0xf9, 0x0a, 0x98, 0xd1, 0x15, 0x5f, 0x9f, 0x12, 0xbe, 0x7c, 0x36, + 0x63, 0x38, 0xbd, 0x44, 0xa4, 0x7f, 0xe4, 0x26, 0x2b, 0x0a, 0xc4, 0x97, + 0x69, 0x0d, 0xe9, 0x8c, 0xe2, 0xc0, 0x10, 0x57, 0xb8, 0xc8, 0x76, 0x12, + 0x91, 0x55, 0xf2, 0x48, 0x69, 0xd8, 0xbc, 0x2a, 0x02, 0x5b, 0x0f, 0x44, + 0xd4, 0x20, 0x31, 0xdb, 0xf4, 0xba, 0x70, 0x26, 0x5d, 0x90, 0x60, 0x9e, + 0xbc, 0x4b, 0x17, 0x09, 0x2f, 0xb4, 0xcb, 0x1e, 0x43, 0x68, 0xc9, 0x07, + 0x27, 0xc1, 0xd2, 0x5c, 0xf7, 0xea, 0x21, 0xb9, 0x68, 0x12, 0x9c, 0x3c, + 0x9c, 0xbf, 0x9e, 0xfc, 0x80, 0x5c, 0x9b, 0x63, 0xcd, 0xec, 0x47, 0xaa, + 0x25, 0x27, 0x67, 0xa0, 0x37, 0xf3, 0x00, 0x82, 0x7d, 0x54, 0xd7, 0xa9, + 0xf8, 0xe9, 0x2e, 0x13, 0xa3, 0x77, 0xe8, 0x1f, 0x4a +}; +const unsigned int caCertLen = 969; + diff --git a/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino new file mode 100644 index 0000000000000000000000000000000000000000..2fc0f2eb0336affade097fbb54091c8cce7131b2 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/HTTPSRequestCACert/HTTPSRequestCACert.ino @@ -0,0 +1,133 @@ +/* + HTTP over TLS (HTTPS) example sketch + + This example demonstrates how to use + WiFiClientSecure class to connect to a TLS server. + + This example verifies server certificate using the + root CA certificate. + + We fetch and display the status of + esp8266/Arduino project continuous integration + build. + + Created by Ivan Grokhotkov, 2017. + This example is in public domain. +*/ + +#include <time.h> +#include <ESP8266WiFi.h> +#include <WiFiClientSecure.h> + +const char* ssid = "........"; +const char* password = "........"; + +const char* host = "api.github.com"; +const int httpsPort = 443; + +// Root certificate used by api.github.com. +// Defined in "CACert" tab. +extern const unsigned char caCert[] PROGMEM; +extern const unsigned int caCertLen; + +WiFiClientSecure client; + +void setup() { + Serial.begin(115200); + Serial.println(); + Serial.print("connecting to "); + Serial.println(ssid); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + + // Synchronize time useing SNTP. This is necessary to verify that + // the TLS certificates offered by the server are currently valid. + Serial.print("Setting time using SNTP"); + configTime(8 * 3600, 0, "pool.ntp.org", "time.nist.gov"); + time_t now = time(nullptr); + while (now < 1000) { + delay(500); + Serial.print("."); + now = time(nullptr); + } + Serial.println(""); + struct tm timeinfo; + gmtime_r(&now, &timeinfo); + Serial.print("Current time: "); + Serial.print(asctime(&timeinfo)); + + // Load root certificate in DER format into WiFiClientSecure object + bool res = client.setCACert_P(caCert, caCertLen); + if (!res) { + Serial.println("Failed to load root CA certificate!"); + while (true) { + yield(); + } + } +} + +void loop() { + // Connect to remote server + Serial.print("connecting to "); + Serial.println(host); + if (!client.connect(host, httpsPort)) { + Serial.println("connection failed"); + return; + } + + // Verify validity of server's certificate + if (client.verifyCertChain(host)) { + Serial.println("Server certificate verified"); + } else { + Serial.println("ERROR: certificate verification failed!"); + return; + } + + String url = "/repos/esp8266/Arduino/commits/master/status"; + Serial.print("requesting URL: "); + Serial.println(url); + + client.print(String("GET ") + url + " HTTP/1.1\r\n" + + "Host: " + host + "\r\n" + + "User-Agent: BuildFailureDetectorESP8266\r\n" + + "Connection: close\r\n\r\n"); + + Serial.println("request sent"); + while (client.connected()) { + String line = client.readStringUntil('\n'); + if (line == "\r") { + Serial.println("headers received"); + break; + } + } + String line = client.readStringUntil('\n'); + if (line.startsWith("{\"state\":\"success\"")) { + Serial.println("esp8266/Arduino CI successfull!"); + } else { + Serial.println("esp8266/Arduino CI has failed"); + } + Serial.println("reply was:"); + Serial.println("=========="); + Serial.println(line); + Serial.println("=========="); + Serial.println(); + + static int repeat = 0; + if (++repeat == 3) { + Serial.println("Done"); + while (true) { + delay(1000); + } + } + delay(10000); +} + + diff --git a/libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino b/libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino new file mode 100644 index 0000000000000000000000000000000000000000..2eda6266c8494e6ed46d0041ce9e7dd51096abbd --- /dev/null +++ b/libraries/ESP8266WiFi/examples/NTPClient/NTPClient.ino @@ -0,0 +1,154 @@ +/* + + Udp NTP Client + + Get the time from a Network Time Protocol (NTP) time server + Demonstrates use of UDP sendPacket and ReceivePacket + For more on NTP time servers and the messages needed to communicate with them, + see http://en.wikipedia.org/wiki/Network_Time_Protocol + + created 4 Sep 2010 + by Michael Margolis + modified 9 Apr 2012 + by Tom Igoe + updated for the ESP8266 12 Apr 2015 + by Ivan Grokhotkov + + This code is in the public domain. + + */ + +#include <ESP8266WiFi.h> +#include <WiFiUdp.h> + +char ssid[] = "*************"; // your network SSID (name) +char pass[] = "********"; // your network password + + +unsigned int localPort = 2390; // local port to listen for UDP packets + +/* Don't hardwire the IP address or we won't get the benefits of the pool. + * Lookup the IP address for the host name instead */ +//IPAddress timeServer(129, 6, 15, 28); // time.nist.gov NTP server +IPAddress timeServerIP; // time.nist.gov NTP server address +const char* ntpServerName = "time.nist.gov"; + +const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message + +byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets + +// A UDP instance to let us send and receive packets over UDP +WiFiUDP udp; + +void setup() +{ + Serial.begin(115200); + Serial.println(); + Serial.println(); + + // We start by connecting to a WiFi network + Serial.print("Connecting to "); + Serial.println(ssid); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, pass); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + + Serial.println("Starting UDP"); + udp.begin(localPort); + Serial.print("Local port: "); + Serial.println(udp.localPort()); +} + +void loop() +{ + //get a random server from the pool + WiFi.hostByName(ntpServerName, timeServerIP); + + sendNTPpacket(timeServerIP); // send an NTP packet to a time server + // wait to see if a reply is available + delay(1000); + + int cb = udp.parsePacket(); + if (!cb) { + Serial.println("no packet yet"); + } + else { + Serial.print("packet received, length="); + Serial.println(cb); + // We've received a packet, read the data from it + udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer + + //the timestamp starts at byte 40 of the received packet and is four bytes, + // or two words, long. First, esxtract the two words: + + unsigned long highWord = word(packetBuffer[40], packetBuffer[41]); + unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]); + // combine the four bytes (two words) into a long integer + // this is NTP time (seconds since Jan 1 1900): + unsigned long secsSince1900 = highWord << 16 | lowWord; + Serial.print("Seconds since Jan 1 1900 = " ); + Serial.println(secsSince1900); + + // now convert NTP time into everyday time: + Serial.print("Unix time = "); + // Unix time starts on Jan 1 1970. In seconds, that's 2208988800: + const unsigned long seventyYears = 2208988800UL; + // subtract seventy years: + unsigned long epoch = secsSince1900 - seventyYears; + // print Unix time: + Serial.println(epoch); + + + // print the hour, minute and second: + Serial.print("The UTC time is "); // UTC is the time at Greenwich Meridian (GMT) + Serial.print((epoch % 86400L) / 3600); // print the hour (86400 equals secs per day) + Serial.print(':'); + if ( ((epoch % 3600) / 60) < 10 ) { + // In the first 10 minutes of each hour, we'll want a leading '0' + Serial.print('0'); + } + Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute) + Serial.print(':'); + if ( (epoch % 60) < 10 ) { + // In the first 10 seconds of each minute, we'll want a leading '0' + Serial.print('0'); + } + Serial.println(epoch % 60); // print the second + } + // wait ten seconds before asking for the time again + delay(10000); +} + +// send an NTP request to the time server at the given address +unsigned long sendNTPpacket(IPAddress& address) +{ + Serial.println("sending NTP packet..."); + // set all bytes in the buffer to 0 + memset(packetBuffer, 0, NTP_PACKET_SIZE); + // Initialize values needed to form NTP request + // (see URL above for details on the packets) + packetBuffer[0] = 0b11100011; // LI, Version, Mode + packetBuffer[1] = 0; // Stratum, or type of clock + packetBuffer[2] = 6; // Polling Interval + packetBuffer[3] = 0xEC; // Peer Clock Precision + // 8 bytes of zero for Root Delay & Root Dispersion + packetBuffer[12] = 49; + packetBuffer[13] = 0x4E; + packetBuffer[14] = 49; + packetBuffer[15] = 52; + + // all NTP fields have been given values, now + // you can send a packet requesting a timestamp: + udp.beginPacket(address, 123); //NTP requests are to port 123 + udp.write(packetBuffer, NTP_PACKET_SIZE); + udp.endPacket(); +} diff --git a/libraries/ESP8266WiFi/examples/WiFiAccessPoint/WiFiAccessPoint.ino b/libraries/ESP8266WiFi/examples/WiFiAccessPoint/WiFiAccessPoint.ino new file mode 100644 index 0000000000000000000000000000000000000000..1a1130747eca59df8ee77af5809d02863c986667 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/WiFiAccessPoint/WiFiAccessPoint.ino @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2015, Majenko Technologies + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * * Neither the name of Majenko Technologies nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* Create a WiFi access point and provide a web server on it. */ + +#include <ESP8266WiFi.h> +#include <WiFiClient.h> +#include <ESP8266WebServer.h> + +/* Set these to your desired credentials. */ +const char *ssid = "ESPap"; +const char *password = "thereisnospoon"; + +ESP8266WebServer server(80); + +/* Just a little test message. Go to http://192.168.4.1 in a web browser + * connected to this access point to see it. + */ +void handleRoot() { + server.send(200, "text/html", "<h1>You are connected</h1>"); +} + +void setup() { + delay(1000); + Serial.begin(115200); + Serial.println(); + Serial.print("Configuring access point..."); + /* You can remove the password parameter if you want the AP to be open. */ + WiFi.softAP(ssid, password); + + IPAddress myIP = WiFi.softAPIP(); + Serial.print("AP IP address: "); + Serial.println(myIP); + server.on("/", handleRoot); + server.begin(); + Serial.println("HTTP server started"); +} + +void loop() { + server.handleClient(); +} diff --git a/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino b/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino new file mode 100644 index 0000000000000000000000000000000000000000..427e2afbde3e9f7585e01da3734586efad914234 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/WiFiClient/WiFiClient.ino @@ -0,0 +1,96 @@ +/* + * This sketch sends data via HTTP GET requests to data.sparkfun.com service. + * + * You need to get streamId and privateKey at data.sparkfun.com and paste them + * below. Or just customize this script to talk to other HTTP servers. + * + */ + +#include <ESP8266WiFi.h> + +const char* ssid = "your-ssid"; +const char* password = "your-password"; + +const char* host = "data.sparkfun.com"; +const char* streamId = "...................."; +const char* privateKey = "...................."; + +void setup() { + Serial.begin(115200); + delay(10); + + // We start by connecting to a WiFi network + + Serial.println(); + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); + + /* Explicitly set the ESP8266 to be a WiFi-client, otherwise, it by default, + would try to act as both a client and an access-point and could cause + network-issues with your other WiFi-devices on your WiFi-network. */ + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); +} + +int value = 0; + +void loop() { + delay(5000); + ++value; + + Serial.print("connecting to "); + Serial.println(host); + + // Use WiFiClient class to create TCP connections + WiFiClient client; + const int httpPort = 80; + if (!client.connect(host, httpPort)) { + Serial.println("connection failed"); + return; + } + + // We now create a URI for the request + String url = "/input/"; + url += streamId; + url += "?private_key="; + url += privateKey; + url += "&value="; + url += value; + + Serial.print("Requesting URL: "); + Serial.println(url); + + // This will send the request to the server + client.print(String("GET ") + url + " HTTP/1.1\r\n" + + "Host: " + host + "\r\n" + + "Connection: close\r\n\r\n"); + unsigned long timeout = millis(); + while (client.available() == 0) { + if (millis() - timeout > 5000) { + Serial.println(">>> Client Timeout !"); + client.stop(); + return; + } + } + + // Read all the lines of the reply from server and print them to Serial + while(client.available()){ + String line = client.readStringUntil('\r'); + Serial.print(line); + } + + Serial.println(); + Serial.println("closing connection"); +} + diff --git a/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino b/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino new file mode 100644 index 0000000000000000000000000000000000000000..178b2e6614f7d27340faee10a45180279af505f2 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino @@ -0,0 +1,69 @@ +/* + * This sketch sends a message to a TCP server + * + */ + +#include <ESP8266WiFi.h> +#include <ESP8266WiFiMulti.h> + +ESP8266WiFiMulti WiFiMulti; + +void setup() { + Serial.begin(115200); + delay(10); + + // We start by connecting to a WiFi network + WiFi.mode(WIFI_STA); + WiFiMulti.addAP("SSID", "passpasspass"); + + Serial.println(); + Serial.println(); + Serial.print("Wait for WiFi... "); + + while(WiFiMulti.run() != WL_CONNECTED) { + Serial.print("."); + delay(500); + } + + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + + delay(500); +} + + +void loop() { + const uint16_t port = 80; + const char * host = "192.168.1.1"; // ip or dns + + + + Serial.print("connecting to "); + Serial.println(host); + + // Use WiFiClient class to create TCP connections + WiFiClient client; + + if (!client.connect(host, port)) { + Serial.println("connection failed"); + Serial.println("wait 5 sec..."); + delay(5000); + return; + } + + // This will send the request to the server + client.print("Send this data to server"); + + //read back one line from server + String line = client.readStringUntil('\r'); + client.println(line); + + Serial.println("closing connection"); + client.stop(); + + Serial.println("wait 5 sec..."); + delay(5000); +} + diff --git a/libraries/ESP8266WiFi/examples/WiFiEvents/WiFiEvents.ino b/libraries/ESP8266WiFi/examples/WiFiEvents/WiFiEvents.ino new file mode 100644 index 0000000000000000000000000000000000000000..9c0d5e355e13b862f026cf5135ff5772717a8ec8 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/WiFiEvents/WiFiEvents.ino @@ -0,0 +1,99 @@ +/* + This sketch shows how to use WiFi event handlers. + + In this example, ESP8266 works in AP mode. + Three event handlers are demonstrated: + - station connects to the ESP8266 AP + - station disconnects from the ESP8266 AP + - ESP8266 AP receives a probe request from a station + + Written by Markus Sattler, 2015-12-29. + Updated for new event handlers by Ivan Grokhotkov, 2017-02-02. + This example is released into public domain, + or, at your option, CC0 licensed. +*/ + +#include <ESP8266WiFi.h> +#include <stdio.h> + +const char* ssid = "ap-ssid"; +const char* password = "ap-password"; + +WiFiEventHandler stationConnectedHandler; +WiFiEventHandler stationDisconnectedHandler; +WiFiEventHandler probeRequestPrintHandler; +WiFiEventHandler probeRequestBlinkHandler; + +bool blinkFlag; + +void setup() { + Serial.begin(115200); + pinMode(LED_BUILTIN, OUTPUT); + digitalWrite(LED_BUILTIN, HIGH); + + // Don't save WiFi configuration in flash - optional + WiFi.persistent(false); + + // Set up an access point + WiFi.mode(WIFI_AP); + WiFi.softAP(ssid, password); + + // Register event handlers. + // Callback functions will be called as long as these handler objects exist. + // Call "onStationConnected" each time a station connects + stationConnectedHandler = WiFi.onSoftAPModeStationConnected(&onStationConnected); + // Call "onStationDisconnected" each time a station disconnects + stationDisconnectedHandler = WiFi.onSoftAPModeStationDisconnected(&onStationDisconnected); + // Call "onProbeRequestPrint" and "onProbeRequestBlink" each time + // a probe request is received. + // Former will print MAC address of the station and RSSI to Serial, + // latter will blink an LED. + probeRequestPrintHandler = WiFi.onSoftAPModeProbeRequestReceived(&onProbeRequestPrint); + probeRequestBlinkHandler = WiFi.onSoftAPModeProbeRequestReceived(&onProbeRequestBlink); +} + +void onStationConnected(const WiFiEventSoftAPModeStationConnected& evt) { + Serial.print("Station connected: "); + Serial.println(macToString(evt.mac)); +} + +void onStationDisconnected(const WiFiEventSoftAPModeStationDisconnected& evt) { + Serial.print("Station disconnected: "); + Serial.println(macToString(evt.mac)); +} + +void onProbeRequestPrint(const WiFiEventSoftAPModeProbeRequestReceived& evt) { + Serial.print("Probe request from: "); + Serial.print(macToString(evt.mac)); + Serial.print(" RSSI: "); + Serial.println(evt.rssi); +} + +void onProbeRequestBlink(const WiFiEventSoftAPModeProbeRequestReceived&) { + // We can't use "delay" or other blocking functions in the event handler. + // Therefore we set a flag here and then check it inside "loop" function. + blinkFlag = true; +} + +void loop() { + if (millis() > 10000 && probeRequestPrintHandler) { + // After 10 seconds, disable the probe request event handler which prints. + // Other three event handlers remain active. + Serial.println("Not printing probe requests any more (LED should still blink)"); + probeRequestPrintHandler = WiFiEventHandler(); + } + if (blinkFlag) { + blinkFlag = false; + digitalWrite(LED_BUILTIN, LOW); + delay(100); + digitalWrite(LED_BUILTIN, HIGH); + } + delay(10); +} + +String macToString(const unsigned char* mac) { + char buf[20]; + snprintf(buf, sizeof(buf), "%02x:%02x:%02x:%02x:%02x:%02x", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + return String(buf); +} diff --git a/libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino b/libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino new file mode 100644 index 0000000000000000000000000000000000000000..a4aa67823b04a464f56053b925c74b5611a3374d --- /dev/null +++ b/libraries/ESP8266WiFi/examples/WiFiMulti/WiFiMulti.ino @@ -0,0 +1,34 @@ +/* + * This sketch trys to Connect to the best AP based on a given list + * + */ + +#include <ESP8266WiFi.h> +#include <ESP8266WiFiMulti.h> + +ESP8266WiFiMulti wifiMulti; + +void setup() { + Serial.begin(115200); + delay(10); + + WiFi.mode(WIFI_STA); + wifiMulti.addAP("ssid_from_AP_1", "your_password_for_AP_1"); + wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); + wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); + + Serial.println("Connecting Wifi..."); + if(wifiMulti.run() == WL_CONNECTED) { + Serial.println(""); + Serial.println("WiFi connected"); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + } +} + +void loop() { + if(wifiMulti.run() != WL_CONNECTED) { + Serial.println("WiFi not connected!"); + delay(1000); + } +} diff --git a/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino b/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino new file mode 100644 index 0000000000000000000000000000000000000000..3e6ff7363bd1e3f642db44f082df0b82052a9664 --- /dev/null +++ b/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino @@ -0,0 +1,48 @@ +/* + * This sketch demonstrates how to scan WiFi networks. + * The API is almost the same as with the WiFi Shield library, + * the most obvious difference being the different file you need to include: + */ +#include "ESP8266WiFi.h" + +void setup() { + Serial.begin(115200); + + // Set WiFi to station mode and disconnect from an AP if it was previously connected + WiFi.mode(WIFI_STA); + WiFi.disconnect(); + delay(100); + + Serial.println("Setup done"); +} + +void loop() { + Serial.println("scan start"); + + // WiFi.scanNetworks will return the number of networks found + int n = WiFi.scanNetworks(); + Serial.println("scan done"); + if (n == 0) + Serial.println("no networks found"); + else + { + Serial.print(n); + Serial.println(" networks found"); + for (int i = 0; i < n; ++i) + { + // Print SSID and RSSI for each network found + Serial.print(i + 1); + Serial.print(": "); + Serial.print(WiFi.SSID(i)); + Serial.print(" ("); + Serial.print(WiFi.RSSI(i)); + Serial.print(")"); + Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*"); + delay(10); + } + } + Serial.println(""); + + // Wait a bit before scanning again + delay(5000); +} diff --git a/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino b/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino new file mode 100644 index 0000000000000000000000000000000000000000..fa81508401e369f87e5ccb0bc22f45fedf0a38be --- /dev/null +++ b/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino @@ -0,0 +1,91 @@ +/* + WiFiTelnetToSerial - Example Transparent UART to Telnet Server for esp8266 + + Copyright (c) 2015 Hristo Gochkov. All rights reserved. + This file is part of the ESP8266WiFi library for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include <ESP8266WiFi.h> + +//how many clients should be able to telnet to this ESP8266 +#define MAX_SRV_CLIENTS 1 +const char* ssid = "**********"; +const char* password = "**********"; + +WiFiServer server(23); +WiFiClient serverClients[MAX_SRV_CLIENTS]; + +void setup() { + Serial1.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + Serial1.print("\nConnecting to "); Serial1.println(ssid); + uint8_t i = 0; + while (WiFi.status() != WL_CONNECTED && i++ < 20) delay(500); + if(i == 21){ + Serial1.print("Could not connect to"); Serial1.println(ssid); + while(1) delay(500); + } + //start UART and the server + Serial.begin(115200); + server.begin(); + server.setNoDelay(true); + + Serial1.print("Ready! Use 'telnet "); + Serial1.print(WiFi.localIP()); + Serial1.println(" 23' to connect"); +} + +void loop() { + uint8_t i; + //check if there are any new clients + if (server.hasClient()){ + for(i = 0; i < MAX_SRV_CLIENTS; i++){ + //find free/disconnected spot + if (!serverClients[i] || !serverClients[i].connected()){ + if(serverClients[i]) serverClients[i].stop(); + serverClients[i] = server.available(); + Serial1.print("New client: "); Serial1.print(i); + continue; + } + } + //no free/disconnected spot so reject + WiFiClient serverClient = server.available(); + serverClient.stop(); + } + //check clients for data + for(i = 0; i < MAX_SRV_CLIENTS; i++){ + if (serverClients[i] && serverClients[i].connected()){ + if(serverClients[i].available()){ + //get data from the telnet client and push it to the UART + while(serverClients[i].available()) Serial.write(serverClients[i].read()); + } + } + } + //check UART for data + if(Serial.available()){ + size_t len = Serial.available(); + uint8_t sbuf[len]; + Serial.readBytes(sbuf, len); + //push UART data to all connected telnet clients + for(i = 0; i < MAX_SRV_CLIENTS; i++){ + if (serverClients[i] && serverClients[i].connected()){ + serverClients[i].write(sbuf, len); + delay(1); + } + } + } +} diff --git a/libraries/ESP8266WiFi/examples/WiFiWebServer/WiFiWebServer.ino b/libraries/ESP8266WiFi/examples/WiFiWebServer/WiFiWebServer.ino new file mode 100644 index 0000000000000000000000000000000000000000..8ec65227039dcd3867c5b8fc3ea7ff16ce378c3a --- /dev/null +++ b/libraries/ESP8266WiFi/examples/WiFiWebServer/WiFiWebServer.ino @@ -0,0 +1,99 @@ +/* + * This sketch demonstrates how to set up a simple HTTP-like server. + * The server will set a GPIO pin depending on the request + * http://server_ip/gpio/0 will set the GPIO2 low, + * http://server_ip/gpio/1 will set the GPIO2 high + * server_ip is the IP address of the ESP8266 module, will be + * printed to Serial when the module is connected. + */ + +#include <ESP8266WiFi.h> + +const char* ssid = "your-ssid"; +const char* password = "your-password"; + +// Create an instance of the server +// specify the port to listen on as an argument +WiFiServer server(80); + +void setup() { + Serial.begin(115200); + delay(10); + + // prepare GPIO2 + pinMode(2, OUTPUT); + digitalWrite(2, 0); + + // Connect to WiFi network + Serial.println(); + Serial.println(); + Serial.print("Connecting to "); + Serial.println(ssid); + + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("WiFi connected"); + + // Start the server + server.begin(); + Serial.println("Server started"); + + // Print the IP address + Serial.println(WiFi.localIP()); +} + +void loop() { + // Check if a client has connected + WiFiClient client = server.available(); + if (!client) { + return; + } + + // Wait until the client sends some data + Serial.println("new client"); + while(!client.available()){ + delay(1); + } + + // Read the first line of the request + String req = client.readStringUntil('\r'); + Serial.println(req); + client.flush(); + + // Match the request + int val; + if (req.indexOf("/gpio/0") != -1) + val = 0; + else if (req.indexOf("/gpio/1") != -1) + val = 1; + else { + Serial.println("invalid request"); + client.stop(); + return; + } + + // Set GPIO2 according to the request + digitalWrite(2, val); + + client.flush(); + + // Prepare the response + String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now "; + s += (val)?"high":"low"; + s += "</html>\n"; + + // Send the response to the client + client.print(s); + delay(1); + Serial.println("Client disonnected"); + + // The client will actually be disconnected + // when the function returns and 'client' object is detroyed +} + diff --git a/libraries/ESP8266WiFi/keywords.txt b/libraries/ESP8266WiFi/keywords.txt new file mode 100644 index 0000000000000000000000000000000000000000..7e7819f11ccef081ed964e52944427c91d189d3a --- /dev/null +++ b/libraries/ESP8266WiFi/keywords.txt @@ -0,0 +1,174 @@ +####################################### +# Syntax Coloring Map For ESP8266WiFi +####################################### + +####################################### +# Library (KEYWORD3) +####################################### + +ESP8266WiFi KEYWORD3 + +####################################### +# Datatypes (KEYWORD1) +####################################### + +WiFi KEYWORD1 +WiFiClient KEYWORD1 +WiFiServer KEYWORD1 +WiFiUDP KEYWORD1 +WiFiClientSecure KEYWORD1 +ESP8266WiFiMulti KEYWORD1 +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +#ESP8266WiFiGenericClass +onEvent KEYWORD2 +onStationModeConnected KEYWORD2 +onStationModeDisconnected KEYWORD2 +onStationModeAuthModeChanged KEYWORD2 +onStationModeGotIP KEYWORD2 +onStationModeDHCPTimeout KEYWORD2 +onSoftAPModeStationConnected KEYWORD2 +onSoftAPModeStationDisconnected KEYWORD2 +onWiFiModeChange KEYWORD2 +channel KEYWORD2 +setSleepMode KEYWORD2 +getSleepMode KEYWORD2 +setPhyMode KEYWORD2 +getPhyMode KEYWORD2 +setOutputPower KEYWORD2 +persistent KEYWORD2 +mode KEYWORD2 +getMode KEYWORD2 +enableSTA KEYWORD2 +enableAP KEYWORD2 +forceSleepBegin KEYWORD2 +forceSleepWake KEYWORD2 + +#ESP8266WiFi +printDiag KEYWORD2 + +#ESP8266WiFiAP +softAP KEYWORD2 +softAPIP KEYWORD2 +softAPmacAddress KEYWORD2 +softAPConfig KEYWORD2 +softAPdisconnect KEYWORD2 +softAPgetStationNum KEYWORD2 + +#ESP8266WiFiMulti +addAP KEYWORD2 +run KEYWORD2 + +#ESP8266WiFiScan +scanNetworks KEYWORD2 +scanNetworksAsync KEYWORD2 +scanComplete KEYWORD2 +scanDelete KEYWORD2 +getNetworkInfo KEYWORD2 +SSID KEYWORD2 +encryptionType KEYWORD2 +RSSI KEYWORD2 +BSSID KEYWORD2 +BSSIDstr KEYWORD2 +channel KEYWORD2 +isHidden KEYWORD2 + +#ESP8266WiFiSTA +begin KEYWORD2 +config KEYWORD2 +reconnect KEYWORD2 +disconnect KEYWORD2 +isConnected KEYWORD2 +setAutoConnect KEYWORD2 +getAutoConnect KEYWORD2 +setAutoReconnect KEYWORD2 +waitForConnectResult KEYWORD2 +localIP KEYWORD2 +macAddress KEYWORD2 +subnetMask KEYWORD2 +gatewayIP KEYWORD2 +dnsIP KEYWORD2 +hostname KEYWORD2 +status KEYWORD2 +SSID KEYWORD2 +psk KEYWORD2 +BSSID KEYWORD2 +BSSIDstr KEYWORD2 +RSSI KEYWORD2 +beginWPSConfig KEYWORD2 +beginSmartConfig KEYWORD2 +stopSmartConfig KEYWORD2 +smartConfigDone KEYWORD2 + +#WiFiClient +status KEYWORD2 +connect KEYWORD2 +write KEYWORD2 +write_P KEYWORD2 +available KEYWORD2 +read KEYWORD2 +peek KEYWORD2 +peekBytes KEYWORD2 +flush KEYWORD2 +stop KEYWORD2 +connected KEYWORD2 +bool KEYWORD2 +remoteIP KEYWORD2 +remotePort KEYWORD2 +localIP KEYWORD2 +localPort KEYWORD2 +getNoDelay KEYWORD2 +setNoDelay KEYWORD2 +setLocalPortStart KEYWORD2 +stopAll KEYWORD2 +stopAllExcept KEYWORD2 + +#WiFiClientSecure +verify KEYWORD2 +verifyCertChain KEYWORD2 +setCertificate KEYWORD2 +setPrivateKey KEYWORD2 +setCACert KEYWORD2 +setCertificate_P KEYWORD2 +setPrivateKey_P KEYWORD2 +setCACert_P KEYWORD2 +loadCertificate KEYWORD2 +loadPrivateKey KEYWORD2 +loadCACert KEYWORD2 +allowSelfSignedCerts KEYWORD2 + +#WiFiServer +hasClient KEYWORD2 +close KEYWORD2 + +#WiFiUdp +beginMulticast KEYWORD2 +beginPacket KEYWORD2 +beginPacketMulticast KEYWORD2 +endPacket KEYWORD2 +parsePacket KEYWORD2 +remoteIP KEYWORD2 +remotePort KEYWORD2 +destinationIP KEYWORD2 +localPort KEYWORD2 +stopAll KEYWORD2 +stopAllExcept KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### +WIFI_OFF LITERAL1 +WIFI_AP LITERAL1 +WIFI_STA LITERAL1 +WIFI_AP_STA LITERAL1 +WIFI_PHY_MODE_11B LITERAL1 +WIFI_PHY_MODE_11G LITERAL1 +WIFI_PHY_MODE_11N LITERAL1 +WIFI_NONE_SLEEP LITERAL1 +WIFI_LIGHT_SLEEP LITERAL1 +WIFI_MODEM_SLEEP LITERAL1 +WIFICLIENT_MAX_PACKET_SIZE LITERAL1 +UDP_TX_PACKET_MAX_SIZE LITERAL1 +DEBUG_ESP_WIFI LITERAL1 diff --git a/libraries/ESP8266WiFi/library.properties b/libraries/ESP8266WiFi/library.properties new file mode 100644 index 0000000000000000000000000000000000000000..3db731e8edc0fae149240e8256a7003fdc449ae8 --- /dev/null +++ b/libraries/ESP8266WiFi/library.properties @@ -0,0 +1,9 @@ +name=ESP8266WiFi +version=1.0 +author=Ivan Grokhotkov +maintainer=Ivan Grokhtkov <ivan@esp8266.com> +sentence=Enables network connection (local and Internet) using the ESP8266 built-in WiFi. +paragraph=With this library you can instantiate Servers, Clients and send/receive UDP packets through WiFi. The shield can connect either to open or encrypted networks (WEP, WPA). The IP address can be assigned statically or through a DHCP. The library can also manage DNS. +category=Communication +url= +architectures=esp8266 diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFi.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5ce0dab93fc622dfb0d6eed42b1b32034574b52e --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFi.cpp @@ -0,0 +1,92 @@ +/* + ESP8266WiFi.cpp - WiFi library for esp8266 + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Reworked on 28 Dec 2015 by Markus Sattler + + */ + +#include "ESP8266WiFi.h" + +extern "C" { +#include "c_types.h" +#include "ets_sys.h" +#include "os_type.h" +#include "osapi.h" +#include "mem.h" +#include "user_interface.h" +#include "smartconfig.h" +#include "lwip/opt.h" +#include "lwip/err.h" +#include "lwip/dns.h" +} + +#include "debug.h" + +// ----------------------------------------------------------------------------------------------------------------------- +// ---------------------------------------------------------- Debug ------------------------------------------------------ +// ----------------------------------------------------------------------------------------------------------------------- + + +/** + * Output WiFi settings to an object derived from Print interface (like Serial). + * @param p Print interface + */ +void ESP8266WiFiClass::printDiag(Print& p) { + const char* modes[] = { "NULL", "STA", "AP", "STA+AP" }; + p.print("Mode: "); + p.println(modes[wifi_get_opmode()]); + + const char* phymodes[] = { "", "B", "G", "N" }; + p.print("PHY mode: "); + p.println(phymodes[(int) wifi_get_phy_mode()]); + + p.print("Channel: "); + p.println(wifi_get_channel()); + + p.print("AP id: "); + p.println(wifi_station_get_current_ap_id()); + + p.print("Status: "); + p.println(wifi_station_get_connect_status()); + + p.print("Auto connect: "); + p.println(wifi_station_get_auto_connect()); + + struct station_config conf; + wifi_station_get_config(&conf); + + const char* ssid = reinterpret_cast<const char*>(conf.ssid); + p.print("SSID ("); + p.print(strlen(ssid)); + p.print("): "); + p.println(ssid); + + const char* passphrase = reinterpret_cast<const char*>(conf.password); + p.print("Passphrase ("); + p.print(strlen(passphrase)); + p.print("): "); + p.println(passphrase); + + p.print("BSSID set: "); + p.println(conf.bssid_set); + +} + +ESP8266WiFiClass WiFi; diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFi.h b/libraries/ESP8266WiFi/src/ESP8266WiFi.h new file mode 100644 index 0000000000000000000000000000000000000000..50223af19edb0d3f14fa5d5f698bff262ed71a59 --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFi.h @@ -0,0 +1,88 @@ +/* + ESP8266WiFi.h - esp8266 Wifi support. + Based on WiFi.h from Arduino WiFi shield library. + Copyright (c) 2011-2014 Arduino. All right reserved. + Modified by Ivan Grokhotkov, December 2014 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef WiFi_h +#define WiFi_h + +#include <stdint.h> + +extern "C" { +#include "include/wl_definitions.h" +} + +#include "IPAddress.h" + +#include "ESP8266WiFiType.h" +#include "ESP8266WiFiSTA.h" +#include "ESP8266WiFiAP.h" +#include "ESP8266WiFiScan.h" +#include "ESP8266WiFiGeneric.h" + +#include "WiFiClient.h" +#include "WiFiServer.h" +#include "WiFiClientSecure.h" + +#ifdef DEBUG_ESP_WIFI +#ifdef DEBUG_ESP_PORT +#define DEBUG_WIFI(...) DEBUG_ESP_PORT.printf( __VA_ARGS__ ) +#endif +#endif + +#ifndef DEBUG_WIFI +#define DEBUG_WIFI(...) +#endif + + +class ESP8266WiFiClass : public ESP8266WiFiGenericClass, public ESP8266WiFiSTAClass, public ESP8266WiFiScanClass, public ESP8266WiFiAPClass { + public: + + // workaround same function name with different signature + using ESP8266WiFiGenericClass::channel; + + using ESP8266WiFiSTAClass::SSID; + using ESP8266WiFiSTAClass::RSSI; + using ESP8266WiFiSTAClass::BSSID; + using ESP8266WiFiSTAClass::BSSIDstr; + + using ESP8266WiFiScanClass::SSID; + using ESP8266WiFiScanClass::encryptionType; + using ESP8266WiFiScanClass::RSSI; + using ESP8266WiFiScanClass::BSSID; + using ESP8266WiFiScanClass::BSSIDstr; + using ESP8266WiFiScanClass::channel; + using ESP8266WiFiScanClass::isHidden; + + // ---------------------------------------------------------------------------------------------- + // ------------------------------------------- Debug -------------------------------------------- + // ---------------------------------------------------------------------------------------------- + + public: + + void printDiag(Print& dest); + + friend class WiFiClient; + friend class WiFiServer; + +}; + +extern ESP8266WiFiClass WiFi; + +#endif diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2ab78ed49755f4a64ac05068bfe70ba20fdf1845 --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.cpp @@ -0,0 +1,328 @@ +/* + ESP8266WiFiSTA.cpp - WiFi library for esp8266 + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Reworked on 28 Dec 2015 by Markus Sattler + + */ + +#include "ESP8266WiFi.h" +#include "ESP8266WiFiGeneric.h" +#include "ESP8266WiFiAP.h" + +extern "C" { +#include "c_types.h" +#include "ets_sys.h" +#include "os_type.h" +#include "osapi.h" +#include "mem.h" +#include "user_interface.h" +} + +#include "debug.h" + + + +// ----------------------------------------------------------------------------------------------------------------------- +// ---------------------------------------------------- Private functions ------------------------------------------------ +// ----------------------------------------------------------------------------------------------------------------------- + +static bool softap_config_equal(const softap_config& lhs, const softap_config& rhs); + + + +/** + * compare two AP configurations + * @param lhs softap_config + * @param rhs softap_config + * @return equal + */ +static bool softap_config_equal(const softap_config& lhs, const softap_config& rhs) { + if(strcmp(reinterpret_cast<const char*>(lhs.ssid), reinterpret_cast<const char*>(rhs.ssid)) != 0) { + return false; + } + if(strcmp(reinterpret_cast<const char*>(lhs.password), reinterpret_cast<const char*>(rhs.password)) != 0) { + return false; + } + if(lhs.channel != rhs.channel) { + return false; + } + if(lhs.ssid_hidden != rhs.ssid_hidden) { + return false; + } + if(lhs.max_connection != rhs.max_connection) { + return false; + } + return true; +} + +// ----------------------------------------------------------------------------------------------------------------------- +// ----------------------------------------------------- AP function ----------------------------------------------------- +// ----------------------------------------------------------------------------------------------------------------------- + + +/** + * Set up an access point + * @param ssid Pointer to the SSID (max 63 char). + * @param passphrase (for WPA2 min 8 char, for open use NULL) + * @param channel WiFi channel number, 1 - 13. + * @param ssid_hidden Network cloaking (0 = broadcast SSID, 1 = hide SSID) + * @param max_connection Max simultaneous connected clients, 1 - 4. + */ +bool ESP8266WiFiAPClass::softAP(const char* ssid, const char* passphrase, int channel, int ssid_hidden, int max_connection) { + + if(!WiFi.enableAP(true)) { + // enable AP failed + DEBUG_WIFI("[AP] enableAP failed!\n"); + return false; + } + + if(!ssid || strlen(ssid) == 0 || strlen(ssid) > 31) { + // fail SSID too long or missing! + DEBUG_WIFI("[AP] SSID too long or missing!\n"); + return false; + } + + if(passphrase && strlen(passphrase) > 0 && (strlen(passphrase) > 63 || strlen(passphrase) < 8)) { + // fail passphrase to long or short! + DEBUG_WIFI("[AP] fail passphrase to long or short!\n"); + return false; + } + + bool ret = true; + + struct softap_config conf; + strcpy(reinterpret_cast<char*>(conf.ssid), ssid); + conf.channel = channel; + conf.ssid_len = strlen(ssid); + conf.ssid_hidden = ssid_hidden; + conf.max_connection = max_connection; + conf.beacon_interval = 100; + + if(!passphrase || strlen(passphrase) == 0) { + conf.authmode = AUTH_OPEN; + *conf.password = 0; + } else { + conf.authmode = AUTH_WPA2_PSK; + strcpy(reinterpret_cast<char*>(conf.password), passphrase); + } + + struct softap_config conf_current; + wifi_softap_get_config(&conf_current); + if(!softap_config_equal(conf, conf_current)) { + + ETS_UART_INTR_DISABLE(); + if(WiFi._persistent) { + ret = wifi_softap_set_config(&conf); + } else { + ret = wifi_softap_set_config_current(&conf); + } + ETS_UART_INTR_ENABLE(); + + if(!ret) { + DEBUG_WIFI("[AP] set_config failed!\n"); + return false; + } + + } else { + DEBUG_WIFI("[AP] softap config unchanged\n"); + } + + if(wifi_softap_dhcps_status() != DHCP_STARTED) { + DEBUG_WIFI("[AP] DHCP not started, starting...\n"); + if(!wifi_softap_dhcps_start()) { + DEBUG_WIFI("[AP] wifi_softap_dhcps_start failed!\n"); + ret = false; + } + } + + // check IP config + struct ip_info ip; + if(wifi_get_ip_info(SOFTAP_IF, &ip)) { + if(ip.ip.addr == 0x00000000) { + // Invalid config + DEBUG_WIFI("[AP] IP config Invalid resetting...\n"); + //192.168.244.1 , 192.168.244.1 , 255.255.255.0 + ret = softAPConfig(0x01F4A8C0, 0x01F4A8C0, 0x00FFFFFF); + if(!ret) { + DEBUG_WIFI("[AP] softAPConfig failed!\n"); + ret = false; + } + } + } else { + DEBUG_WIFI("[AP] wifi_get_ip_info failed!\n"); + ret = false; + } + + return ret; +} + + +/** + * Configure access point + * @param local_ip access point IP + * @param gateway gateway IP + * @param subnet subnet mask + */ +bool ESP8266WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet) { + DEBUG_WIFI("[APConfig] local_ip: %s gateway: %s subnet: %s\n", local_ip.toString().c_str(), gateway.toString().c_str(), subnet.toString().c_str()); + if(!WiFi.enableAP(true)) { + // enable AP failed + DEBUG_WIFI("[APConfig] enableAP failed!\n"); + return false; + } + bool ret = true; + + struct ip_info info; + info.ip.addr = static_cast<uint32_t>(local_ip); + info.gw.addr = static_cast<uint32_t>(gateway); + info.netmask.addr = static_cast<uint32_t>(subnet); + + if(!wifi_softap_dhcps_stop()) { + DEBUG_WIFI("[APConfig] wifi_softap_dhcps_stop failed!\n"); + } + + if(!wifi_set_ip_info(SOFTAP_IF, &info)) { + DEBUG_WIFI("[APConfig] wifi_set_ip_info failed!\n"); + ret = false; + } + + struct dhcps_lease dhcp_lease; + IPAddress ip = local_ip; + ip[3] += 99; + dhcp_lease.start_ip.addr = static_cast<uint32_t>(ip); + DEBUG_WIFI("[APConfig] DHCP IP start: %s\n", ip.toString().c_str()); + + ip[3] += 100; + dhcp_lease.end_ip.addr = static_cast<uint32_t>(ip); + DEBUG_WIFI("[APConfig] DHCP IP end: %s\n", ip.toString().c_str()); + + if(!wifi_softap_set_dhcps_lease(&dhcp_lease)) { + DEBUG_WIFI("[APConfig] wifi_set_ip_info failed!\n"); + ret = false; + } + + // set lease time to 720min --> 12h + if(!wifi_softap_set_dhcps_lease_time(720)) { + DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_lease_time failed!\n"); + ret = false; + } + + uint8 mode = 1; + if(!wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode)) { + DEBUG_WIFI("[APConfig] wifi_softap_set_dhcps_offer_option failed!\n"); + ret = false; + } + + if(!wifi_softap_dhcps_start()) { + DEBUG_WIFI("[APConfig] wifi_softap_dhcps_start failed!\n"); + ret = false; + } + + // check config + if(wifi_get_ip_info(SOFTAP_IF, &info)) { + if(info.ip.addr == 0x00000000) { + DEBUG_WIFI("[APConfig] IP config Invalid?!\n"); + ret = false; + } else if(local_ip != info.ip.addr) { + ip = info.ip.addr; + DEBUG_WIFI("[APConfig] IP config not set correct?! new IP: %s\n", ip.toString().c_str()); + ret = false; + } + } else { + DEBUG_WIFI("[APConfig] wifi_get_ip_info failed!\n"); + ret = false; + } + + return ret; +} + + + +/** + * Disconnect from the network (close AP) + * @param wifioff disable mode? + * @return one value of wl_status_t enum + */ +bool ESP8266WiFiAPClass::softAPdisconnect(bool wifioff) { + bool ret; + struct softap_config conf; + *conf.ssid = 0; + *conf.password = 0; + ETS_UART_INTR_DISABLE(); + if(WiFi._persistent) { + ret = wifi_softap_set_config(&conf); + } else { + ret = wifi_softap_set_config_current(&conf); + } + ETS_UART_INTR_ENABLE(); + + if(!ret) { + DEBUG_WIFI("[APdisconnect] set_config failed!\n"); + } + + if(wifioff) { + ret = WiFi.enableAP(false); + } + + return ret; +} + + +/** + * Get the count of the Station / client that are connected to the softAP interface + * @return Stations count + */ +uint8_t ESP8266WiFiAPClass::softAPgetStationNum() { + return wifi_softap_get_station_num(); +} + +/** + * Get the softAP interface IP address. + * @return IPAddress softAP IP + */ +IPAddress ESP8266WiFiAPClass::softAPIP() { + struct ip_info ip; + wifi_get_ip_info(SOFTAP_IF, &ip); + return IPAddress(ip.ip.addr); +} + + +/** + * Get the softAP interface MAC address. + * @param mac pointer to uint8_t array with length WL_MAC_ADDR_LENGTH + * @return pointer to uint8_t* + */ +uint8_t* ESP8266WiFiAPClass::softAPmacAddress(uint8_t* mac) { + wifi_get_macaddr(SOFTAP_IF, mac); + return mac; +} + +/** + * Get the softAP interface MAC address. + * @return String mac + */ +String ESP8266WiFiAPClass::softAPmacAddress(void) { + uint8_t mac[6]; + char macStr[18] = { 0 }; + wifi_get_macaddr(SOFTAP_IF, mac); + + sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + return String(macStr); +} diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h new file mode 100644 index 0000000000000000000000000000000000000000..52fba9fe64f8664cfa3f4626f8e86544be5ab574 --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiAP.h @@ -0,0 +1,54 @@ +/* + ESP8266WiFiAP.h - esp8266 Wifi support. + Based on WiFi.h from Arduino WiFi shield library. + Copyright (c) 2011-2014 Arduino. All right reserved. + Modified by Ivan Grokhotkov, December 2014 + Reworked by Markus Sattler, December 2015 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef ESP8266WIFIAP_H_ +#define ESP8266WIFIAP_H_ + + +#include "ESP8266WiFiType.h" +#include "ESP8266WiFiGeneric.h" + + +class ESP8266WiFiAPClass { + + // ---------------------------------------------------------------------------------------------- + // ----------------------------------------- AP function ---------------------------------------- + // ---------------------------------------------------------------------------------------------- + + public: + + bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int max_connection = 4); + bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet); + bool softAPdisconnect(bool wifioff = false); + + uint8_t softAPgetStationNum(); + + IPAddress softAPIP(); + + uint8_t* softAPmacAddress(uint8_t* mac); + String softAPmacAddress(void); + + protected: + +}; + +#endif /* ESP8266WIFIAP_H_*/ diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0a4a33772a26acaa0553d109a2f646c5933aff91 --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp @@ -0,0 +1,500 @@ +/* + ESP8266WiFiGeneric.cpp - WiFi library for esp8266 + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Reworked on 28 Dec 2015 by Markus Sattler + + */ + +#include <list> +#include <string.h> +#include "ESP8266WiFi.h" +#include "ESP8266WiFiGeneric.h" + +extern "C" { +#include "c_types.h" +#include "ets_sys.h" +#include "os_type.h" +#include "osapi.h" +#include "mem.h" +#include "user_interface.h" + +#include "lwip/opt.h" +#include "lwip/err.h" +#include "lwip/dns.h" +#include "lwip/init.h" // LWIP_VERSION_ +} + +#include "WiFiClient.h" +#include "WiFiUdp.h" +#include "debug.h" + +extern "C" void esp_schedule(); +extern "C" void esp_yield(); + + +// ----------------------------------------------------------------------------------------------------------------------- +// ------------------------------------------------- Generic WiFi function ----------------------------------------------- +// ----------------------------------------------------------------------------------------------------------------------- + +struct WiFiEventHandlerOpaque +{ + WiFiEventHandlerOpaque(WiFiEvent_t event, std::function<void(System_Event_t*)> handler) + : mEvent(event), mHandler(handler) + { + } + + void operator()(System_Event_t* e) + { + if (static_cast<WiFiEvent>(e->event) == mEvent || mEvent == WIFI_EVENT_ANY) { + mHandler(e); + } + } + + bool canExpire() + { + return mCanExpire; + } + + WiFiEvent_t mEvent; + std::function<void(System_Event_t*)> mHandler; + bool mCanExpire = true; /* stopgap solution to handle deprecated void onEvent(cb, evt) case */ +}; + +static std::list<WiFiEventHandler> sCbEventList; + +bool ESP8266WiFiGenericClass::_persistent = true; +WiFiMode_t ESP8266WiFiGenericClass::_forceSleepLastMode = WIFI_OFF; + +ESP8266WiFiGenericClass::ESP8266WiFiGenericClass() +{ + wifi_set_event_handler_cb((wifi_event_handler_cb_t) &ESP8266WiFiGenericClass::_eventCallback); +} + +void ESP8266WiFiGenericClass::onEvent(WiFiEventCb f, WiFiEvent_t event) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(event, [f](System_Event_t* e) { + (*f)(static_cast<WiFiEvent>(e->event)); + }); + handler->mCanExpire = false; + sCbEventList.push_back(handler); +} + +WiFiEventHandler ESP8266WiFiGenericClass::onStationModeConnected(std::function<void(const WiFiEventStationModeConnected&)> f) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_STAMODE_CONNECTED, [f](System_Event_t* e) { + auto& src = e->event_info.connected; + WiFiEventStationModeConnected dst; + dst.ssid = String(reinterpret_cast<char*>(src.ssid)); + memcpy(dst.bssid, src.bssid, 6); + dst.channel = src.channel; + f(dst); + }); + sCbEventList.push_back(handler); + return handler; +} + +WiFiEventHandler ESP8266WiFiGenericClass::onStationModeDisconnected(std::function<void(const WiFiEventStationModeDisconnected&)> f) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_STAMODE_DISCONNECTED, [f](System_Event_t* e){ + auto& src = e->event_info.disconnected; + WiFiEventStationModeDisconnected dst; + dst.ssid = String(reinterpret_cast<char*>(src.ssid)); + memcpy(dst.bssid, src.bssid, 6); + dst.reason = static_cast<WiFiDisconnectReason>(src.reason); + f(dst); + }); + sCbEventList.push_back(handler); + return handler; +} + +WiFiEventHandler ESP8266WiFiGenericClass::onStationModeAuthModeChanged(std::function<void(const WiFiEventStationModeAuthModeChanged&)> f) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_STAMODE_AUTHMODE_CHANGE, [f](System_Event_t* e){ + auto& src = e->event_info.auth_change; + WiFiEventStationModeAuthModeChanged dst; + dst.oldMode = src.old_mode; + dst.newMode = src.new_mode; + f(dst); + }); + sCbEventList.push_back(handler); + return handler; +} + +WiFiEventHandler ESP8266WiFiGenericClass::onStationModeGotIP(std::function<void(const WiFiEventStationModeGotIP&)> f) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_STAMODE_GOT_IP, [f](System_Event_t* e){ + auto& src = e->event_info.got_ip; + WiFiEventStationModeGotIP dst; + dst.ip = src.ip.addr; + dst.mask = src.mask.addr; + dst.gw = src.gw.addr; + f(dst); + }); + sCbEventList.push_back(handler); + return handler; +} + +WiFiEventHandler ESP8266WiFiGenericClass::onStationModeDHCPTimeout(std::function<void(void)> f) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_STAMODE_DHCP_TIMEOUT, [f](System_Event_t* e){ + (void) e; + f(); + }); + sCbEventList.push_back(handler); + return handler; +} + +WiFiEventHandler ESP8266WiFiGenericClass::onSoftAPModeStationConnected(std::function<void(const WiFiEventSoftAPModeStationConnected&)> f) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_SOFTAPMODE_STACONNECTED, [f](System_Event_t* e){ + auto& src = e->event_info.sta_connected; + WiFiEventSoftAPModeStationConnected dst; + memcpy(dst.mac, src.mac, 6); + dst.aid = src.aid; + f(dst); + }); + sCbEventList.push_back(handler); + return handler; +} + +WiFiEventHandler ESP8266WiFiGenericClass::onSoftAPModeStationDisconnected(std::function<void(const WiFiEventSoftAPModeStationDisconnected&)> f) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_SOFTAPMODE_STADISCONNECTED, [f](System_Event_t* e){ + auto& src = e->event_info.sta_disconnected; + WiFiEventSoftAPModeStationDisconnected dst; + memcpy(dst.mac, src.mac, 6); + dst.aid = src.aid; + f(dst); + }); + sCbEventList.push_back(handler); + return handler; +} + +WiFiEventHandler ESP8266WiFiGenericClass::onSoftAPModeProbeRequestReceived(std::function<void(const WiFiEventSoftAPModeProbeRequestReceived&)> f) +{ + WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_SOFTAPMODE_PROBEREQRECVED, [f](System_Event_t* e){ + auto& src = e->event_info.ap_probereqrecved; + WiFiEventSoftAPModeProbeRequestReceived dst; + memcpy(dst.mac, src.mac, 6); + dst.rssi = src.rssi; + f(dst); + }); + sCbEventList.push_back(handler); + return handler; +} + +// WiFiEventHandler ESP8266WiFiGenericClass::onWiFiModeChange(std::function<void(const WiFiEventModeChange&)> f) +// { +// WiFiEventHandler handler = std::make_shared<WiFiEventHandlerOpaque>(WIFI_EVENT_MODE_CHANGE, [f](System_Event_t* e){ +// WiFiEventModeChange& dst = *reinterpret_cast<WiFiEventModeChange*>(&e->event_info); +// f(dst); +// }); +// sCbEventList.push_back(handler); +// return handler; +// } + +/** + * callback for WiFi events + * @param arg + */ +void ESP8266WiFiGenericClass::_eventCallback(void* arg) +{ + System_Event_t* event = reinterpret_cast<System_Event_t*>(arg); + DEBUG_WIFI("wifi evt: %d\n", event->event); + + if(event->event == EVENT_STAMODE_DISCONNECTED) { + DEBUG_WIFI("STA disconnect: %d\n", event->event_info.disconnected.reason); + WiFiClient::stopAll(); + } + + for(auto it = std::begin(sCbEventList); it != std::end(sCbEventList); ) { + WiFiEventHandler &handler = *it; + if (handler->canExpire() && handler.unique()) { + it = sCbEventList.erase(it); + } + else { + (*handler)(event); + ++it; + } + } +} + +/** + * Return the current channel associated with the network + * @return channel (1-13) + */ +int32_t ESP8266WiFiGenericClass::channel(void) { + return wifi_get_channel(); +} + +/** + * set Sleep mode + * @param type sleep_type_t + * @return bool + */ +bool ESP8266WiFiGenericClass::setSleepMode(WiFiSleepType_t type) { + return wifi_set_sleep_type((sleep_type_t) type); +} + +/** + * get Sleep mode + * @return sleep_type_t + */ +WiFiSleepType_t ESP8266WiFiGenericClass::getSleepMode() { + return (WiFiSleepType_t) wifi_get_sleep_type(); +} + +/** + * set phy Mode + * @param mode phy_mode_t + * @return bool + */ +bool ESP8266WiFiGenericClass::setPhyMode(WiFiPhyMode_t mode) { + return wifi_set_phy_mode((phy_mode_t) mode); +} + +/** + * get phy Mode + * @return phy_mode_t + */ +WiFiPhyMode_t ESP8266WiFiGenericClass::getPhyMode() { + return (WiFiPhyMode_t) wifi_get_phy_mode(); +} + +/** + * set the output power of WiFi + * @param dBm max: +20.5dBm min: 0dBm + */ +void ESP8266WiFiGenericClass::setOutputPower(float dBm) { + + if(dBm > 20.5) { + dBm = 20.5; + } else if(dBm < 0) { + dBm = 0; + } + + uint8_t val = (dBm*4.0f); + system_phy_set_max_tpw(val); +} + + +/** + * store WiFi config in SDK flash area + * @param persistent + */ +void ESP8266WiFiGenericClass::persistent(bool persistent) { + _persistent = persistent; +} + + +/** + * set new mode + * @param m WiFiMode_t + */ +bool ESP8266WiFiGenericClass::mode(WiFiMode_t m) { + if(wifi_get_opmode() == (uint8) m) { + return true; + } + + bool ret = false; + + ETS_UART_INTR_DISABLE(); + if(_persistent) { + ret = wifi_set_opmode(m); + } else { + ret = wifi_set_opmode_current(m); + } + ETS_UART_INTR_ENABLE(); + + return ret; +} + +/** + * get WiFi mode + * @return WiFiMode + */ +WiFiMode_t ESP8266WiFiGenericClass::getMode() { + return (WiFiMode_t) wifi_get_opmode(); +} + +/** + * control STA mode + * @param enable bool + * @return ok + */ +bool ESP8266WiFiGenericClass::enableSTA(bool enable) { + + WiFiMode_t currentMode = getMode(); + bool isEnabled = ((currentMode & WIFI_STA) != 0); + + if(isEnabled != enable) { + if(enable) { + return mode((WiFiMode_t)(currentMode | WIFI_STA)); + } else { + return mode((WiFiMode_t)(currentMode & (~WIFI_STA))); + } + } else { + return true; + } +} + +/** + * control AP mode + * @param enable bool + * @return ok + */ +bool ESP8266WiFiGenericClass::enableAP(bool enable){ + + WiFiMode_t currentMode = getMode(); + bool isEnabled = ((currentMode & WIFI_AP) != 0); + + if(isEnabled != enable) { + if(enable) { + return mode((WiFiMode_t)(currentMode | WIFI_AP)); + } else { + return mode((WiFiMode_t)(currentMode & (~WIFI_AP))); + } + } else { + return true; + } +} + + +/** + * Disable WiFi for x us when value is not 0 + * @param sleep_time_in_us + * @return ok + */ +bool ESP8266WiFiGenericClass::forceSleepBegin(uint32 sleepUs) { + _forceSleepLastMode = getMode(); + if(!mode(WIFI_OFF)) { + return false; + } + + if(sleepUs == 0) { + sleepUs = 0xFFFFFFF; + } + + wifi_fpm_set_sleep_type(MODEM_SLEEP_T); + wifi_fpm_open(); + return (wifi_fpm_do_sleep(sleepUs) == 0); +} + +/** + * wake up WiFi Modem + * @return ok + */ +bool ESP8266WiFiGenericClass::forceSleepWake() { + wifi_fpm_do_wakeup(); + wifi_fpm_close(); + + // restore last mode + if(mode(_forceSleepLastMode)) { + if((_forceSleepLastMode & WIFI_STA) != 0){ + wifi_station_connect(); + } + return true; + } + return false; +} + + +// ----------------------------------------------------------------------------------------------------------------------- +// ------------------------------------------------ Generic Network function --------------------------------------------- +// ----------------------------------------------------------------------------------------------------------------------- + +#if LWIP_VERSION_MAJOR == 1 +void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback_arg); +#else +void wifi_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *callback_arg); +#endif + +static bool _dns_lookup_pending = false; + +/** + * Resolve the given hostname to an IP address. + * @param aHostname Name to be resolved + * @param aResult IPAddress structure to store the returned IP address + * @return 1 if aIPAddrString was successfully converted to an IP address, + * else error code + */ +int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResult) +{ + return hostByName(aHostname, aResult, 10000); +} + + +int ESP8266WiFiGenericClass::hostByName(const char* aHostname, IPAddress& aResult, uint32_t timeout_ms) +{ + ip_addr_t addr; + aResult = static_cast<uint32_t>(0); + + if(aResult.fromString(aHostname)) { + // Host name is a IP address use it! + DEBUG_WIFI_GENERIC("[hostByName] Host: %s is a IP!\n", aHostname); + return 1; + } + + DEBUG_WIFI_GENERIC("[hostByName] request IP for: %s\n", aHostname); + err_t err = dns_gethostbyname(aHostname, &addr, &wifi_dns_found_callback, &aResult); + if(err == ERR_OK) { + aResult = addr.addr; + } else if(err == ERR_INPROGRESS) { + _dns_lookup_pending = true; + delay(timeout_ms); + _dns_lookup_pending = false; + // will return here when dns_found_callback fires + if(aResult != 0) { + err = ERR_OK; + } + } + + if(err != 0) { + DEBUG_WIFI_GENERIC("[hostByName] Host: %s lookup error: %d!\n", aHostname, err); + } else { + DEBUG_WIFI_GENERIC("[hostByName] Host: %s IP: %s\n", aHostname, aResult.toString().c_str()); + } + + return (err == ERR_OK) ? 1 : 0; +} + +/** + * DNS callback + * @param name + * @param ipaddr + * @param callback_arg + */ +#if LWIP_VERSION_MAJOR == 1 +void wifi_dns_found_callback(const char *name, ip_addr_t *ipaddr, void *callback_arg) +#else +void wifi_dns_found_callback(const char *name, const ip_addr_t *ipaddr, void *callback_arg) +#endif +{ + (void) name; + if (!_dns_lookup_pending) { + return; + } + if(ipaddr) { + (*reinterpret_cast<IPAddress*>(callback_arg)) = ipaddr->addr; + } + esp_schedule(); // resume the hostByName function +} + + diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h new file mode 100644 index 0000000000000000000000000000000000000000..8a196004e893c4c302100099225190ba184ab844 --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.h @@ -0,0 +1,110 @@ +/* + ESP8266WiFiGeneric.h - esp8266 Wifi support. + Based on WiFi.h from Ardiono WiFi shield library. + Copyright (c) 2011-2014 Arduino. All right reserved. + Modified by Ivan Grokhotkov, December 2014 + Reworked by Markus Sattler, December 2015 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef ESP8266WIFIGENERIC_H_ +#define ESP8266WIFIGENERIC_H_ + +#include "ESP8266WiFiType.h" +#include <functional> +#include <memory> + +#ifdef DEBUG_ESP_WIFI +#ifdef DEBUG_ESP_PORT +#define DEBUG_WIFI_GENERIC(...) DEBUG_ESP_PORT.printf( __VA_ARGS__ ) +#endif +#endif + +#ifndef DEBUG_WIFI_GENERIC +#define DEBUG_WIFI_GENERIC(...) +#endif + +struct WiFiEventHandlerOpaque; +typedef std::shared_ptr<WiFiEventHandlerOpaque> WiFiEventHandler; + +typedef void (*WiFiEventCb)(WiFiEvent_t); + +class ESP8266WiFiGenericClass { + // ---------------------------------------------------------------------------------------------- + // -------------------------------------- Generic WiFi function --------------------------------- + // ---------------------------------------------------------------------------------------------- + + public: + ESP8266WiFiGenericClass(); + + // Note: this function is deprecated. Use one of the functions below instead. + void onEvent(WiFiEventCb cb, WiFiEvent_t event = WIFI_EVENT_ANY) __attribute__((deprecated)); + + // Subscribe to specific event and get event information as an argument to the callback + WiFiEventHandler onStationModeConnected(std::function<void(const WiFiEventStationModeConnected&)>); + WiFiEventHandler onStationModeDisconnected(std::function<void(const WiFiEventStationModeDisconnected&)>); + WiFiEventHandler onStationModeAuthModeChanged(std::function<void(const WiFiEventStationModeAuthModeChanged&)>); + WiFiEventHandler onStationModeGotIP(std::function<void(const WiFiEventStationModeGotIP&)>); + WiFiEventHandler onStationModeDHCPTimeout(std::function<void(void)>); + WiFiEventHandler onSoftAPModeStationConnected(std::function<void(const WiFiEventSoftAPModeStationConnected&)>); + WiFiEventHandler onSoftAPModeStationDisconnected(std::function<void(const WiFiEventSoftAPModeStationDisconnected&)>); + WiFiEventHandler onSoftAPModeProbeRequestReceived(std::function<void(const WiFiEventSoftAPModeProbeRequestReceived&)>); + // WiFiEventHandler onWiFiModeChange(std::function<void(const WiFiEventModeChange&)>); + + int32_t channel(void); + + bool setSleepMode(WiFiSleepType_t type); + WiFiSleepType_t getSleepMode(); + + bool setPhyMode(WiFiPhyMode_t mode); + WiFiPhyMode_t getPhyMode(); + + void setOutputPower(float dBm); + + void persistent(bool persistent); + + bool mode(WiFiMode_t); + WiFiMode_t getMode(); + + bool enableSTA(bool enable); + bool enableAP(bool enable); + + bool forceSleepBegin(uint32 sleepUs = 0); + bool forceSleepWake(); + + protected: + static bool _persistent; + static WiFiMode_t _forceSleepLastMode; + + static void _eventCallback(void *event); + + // ---------------------------------------------------------------------------------------------- + // ------------------------------------ Generic Network function -------------------------------- + // ---------------------------------------------------------------------------------------------- + + public: + + int hostByName(const char* aHostname, IPAddress& aResult); + int hostByName(const char* aHostname, IPAddress& aResult, uint32_t timeout_ms); + + protected: + + friend class ESP8266WiFiSTAClass; + friend class ESP8266WiFiScanClass; + friend class ESP8266WiFiAPClass; +}; + +#endif /* ESP8266WIFIGENERIC_H_ */ diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp new file mode 100644 index 0000000000000000000000000000000000000000..16562f1e0471f81a7c0da4bd74892e1927107e56 --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp @@ -0,0 +1,216 @@ +/** + * + * @file ESP8266WiFiMulti.cpp + * @date 16.05.2015 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the esp8266 core for Arduino environment. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "ESP8266WiFiMulti.h" +#include <limits.h> +#include <string.h> + +ESP8266WiFiMulti::ESP8266WiFiMulti() { +} + +ESP8266WiFiMulti::~ESP8266WiFiMulti() { + APlistClean(); +} + +bool ESP8266WiFiMulti::addAP(const char* ssid, const char *passphrase) { + return APlistAdd(ssid, passphrase); +} + +wl_status_t ESP8266WiFiMulti::run(void) { + + int8_t scanResult; + wl_status_t status = WiFi.status(); + if(status == WL_DISCONNECTED || status == WL_NO_SSID_AVAIL || status == WL_IDLE_STATUS || status == WL_CONNECT_FAILED) { + + scanResult = WiFi.scanComplete(); + if(scanResult == WIFI_SCAN_RUNNING) { + // scan is running + return WL_NO_SSID_AVAIL; + } else if(scanResult > 0) { + // scan done analyze + WifiAPlist_t bestNetwork { NULL, NULL }; + int bestNetworkDb = INT_MIN; + uint8 bestBSSID[6]; + int32_t bestChannel; + + DEBUG_WIFI_MULTI("[WIFI] scan done\n"); + delay(0); + + if(scanResult <= 0) { + DEBUG_WIFI_MULTI("[WIFI] no networks found\n"); + } else { + DEBUG_WIFI_MULTI("[WIFI] %d networks found\n", scanResult); + for(int8_t i = 0; i < scanResult; ++i) { + + String ssid_scan; + int32_t rssi_scan; + uint8_t sec_scan; + uint8_t* BSSID_scan; + int32_t chan_scan; + bool hidden_scan; + + WiFi.getNetworkInfo(i, ssid_scan, sec_scan, rssi_scan, BSSID_scan, chan_scan, hidden_scan); + + bool known = false; + for(uint32_t x = 0; x < APlist.size(); x++) { + WifiAPlist_t entry = APlist[x]; + + if(ssid_scan == entry.ssid) { // SSID match + known = true; + if(rssi_scan > bestNetworkDb) { // best network + if(sec_scan == ENC_TYPE_NONE || entry.passphrase) { // check for passphrase if not open wlan + bestNetworkDb = rssi_scan; + bestChannel = chan_scan; + memcpy((void*) &bestNetwork, (void*) &entry, sizeof(bestNetwork)); + memcpy((void*) &bestBSSID, (void*) BSSID_scan, sizeof(bestBSSID)); + } + } + break; + } + } + + if(known) { + DEBUG_WIFI_MULTI(" ---> "); + } else { + DEBUG_WIFI_MULTI(" "); + } + + DEBUG_WIFI_MULTI(" %d: [%d][%02X:%02X:%02X:%02X:%02X:%02X] %s (%d) %c\n", i, chan_scan, BSSID_scan[0], BSSID_scan[1], BSSID_scan[2], BSSID_scan[3], BSSID_scan[4], BSSID_scan[5], ssid_scan.c_str(), rssi_scan, (sec_scan == ENC_TYPE_NONE) ? ' ' : '*'); + delay(0); + } + } + + // clean up ram + WiFi.scanDelete(); + + DEBUG_WIFI_MULTI("\n\n"); + delay(0); + + if(bestNetwork.ssid) { + DEBUG_WIFI_MULTI("[WIFI] Connecting BSSID: %02X:%02X:%02X:%02X:%02X:%02X SSID: %s Channal: %d (%d)\n", bestBSSID[0], bestBSSID[1], bestBSSID[2], bestBSSID[3], bestBSSID[4], bestBSSID[5], bestNetwork.ssid, bestChannel, bestNetworkDb); + + WiFi.begin(bestNetwork.ssid, bestNetwork.passphrase, bestChannel, bestBSSID); + status = WiFi.status(); + + // wait for connection or fail + while(status != WL_CONNECTED && status != WL_NO_SSID_AVAIL && status != WL_CONNECT_FAILED) { + delay(10); + status = WiFi.status(); + } +#ifdef DEBUG_ESP_WIFI + IPAddress ip; + uint8_t * mac; + switch(status) { + case WL_CONNECTED: + ip = WiFi.localIP(); + mac = WiFi.BSSID(); + DEBUG_WIFI_MULTI("[WIFI] Connecting done.\n"); + DEBUG_WIFI_MULTI("[WIFI] SSID: %s\n", WiFi.SSID().c_str()); + DEBUG_WIFI_MULTI("[WIFI] IP: %d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]); + DEBUG_WIFI_MULTI("[WIFI] MAC: %02X:%02X:%02X:%02X:%02X:%02X\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + DEBUG_WIFI_MULTI("[WIFI] Channel: %d\n", WiFi.channel()); + break; + case WL_NO_SSID_AVAIL: + DEBUG_WIFI_MULTI("[WIFI] Connecting Failed AP not found.\n"); + break; + case WL_CONNECT_FAILED: + DEBUG_WIFI_MULTI("[WIFI] Connecting Failed.\n"); + break; + default: + DEBUG_WIFI_MULTI("[WIFI] Connecting Failed (%d).\n", status); + break; + } +#endif + } else { + DEBUG_WIFI_MULTI("[WIFI] no matching wifi found!\n"); + } + } else { + // start scan + DEBUG_WIFI_MULTI("[WIFI] delete old wifi config...\n"); + WiFi.disconnect(); + + DEBUG_WIFI_MULTI("[WIFI] start scan\n"); + // scan wifi async mode + WiFi.scanNetworks(true); + } + } + return status; +} + +// ################################################################################## + +bool ESP8266WiFiMulti::APlistAdd(const char* ssid, const char *passphrase) { + + WifiAPlist_t newAP; + + if(!ssid || *ssid == 0x00 || strlen(ssid) > 31) { + // fail SSID to long or missing! + DEBUG_WIFI_MULTI("[WIFI][APlistAdd] no ssid or ssid to long\n"); + return false; + } + + if(passphrase && strlen(passphrase) > 63) { + // fail passphrase to long! + DEBUG_WIFI_MULTI("[WIFI][APlistAdd] passphrase to long\n"); + return false; + } + + newAP.ssid = strdup(ssid); + + if(!newAP.ssid) { + DEBUG_WIFI_MULTI("[WIFI][APlistAdd] fail newAP.ssid == 0\n"); + return false; + } + + if(passphrase) { + newAP.passphrase = strdup(passphrase); + } else { + newAP.passphrase = strdup(""); + } + + if(!newAP.passphrase) { + DEBUG_WIFI_MULTI("[WIFI][APlistAdd] fail newAP.passphrase == 0\n"); + free(newAP.ssid); + return false; + } + + APlist.push_back(newAP); + DEBUG_WIFI_MULTI("[WIFI][APlistAdd] add SSID: %s\n", newAP.ssid); + return true; +} + +void ESP8266WiFiMulti::APlistClean(void) { + for(uint32_t i = 0; i < APlist.size(); i++) { + WifiAPlist_t entry = APlist[i]; + if(entry.ssid) { + free(entry.ssid); + } + if(entry.passphrase) { + free(entry.passphrase); + } + } + APlist.clear(); +} + diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.h b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.h new file mode 100644 index 0000000000000000000000000000000000000000..24b46b6cf37b6d243562183e47c63cff40638a9c --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.h @@ -0,0 +1,66 @@ +/** + * + * @file ESP8266WiFiMulti.h + * @date 16.05.2015 + * @author Markus Sattler + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the esp8266 core for Arduino environment. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + + +#ifndef WIFICLIENTMULTI_H_ +#define WIFICLIENTMULTI_H_ + +#include "ESP8266WiFi.h" +#undef min +#undef max +#include <vector> + +#ifdef DEBUG_ESP_WIFI +#ifdef DEBUG_ESP_PORT +#define DEBUG_WIFI_MULTI(...) DEBUG_ESP_PORT.printf( __VA_ARGS__ ) +#endif +#endif + +#ifndef DEBUG_WIFI_MULTI +#define DEBUG_WIFI_MULTI(...) +#endif + +typedef struct { + char * ssid; + char * passphrase; +} WifiAPlist_t; + +class ESP8266WiFiMulti { + public: + ESP8266WiFiMulti(); + ~ESP8266WiFiMulti(); + + bool addAP(const char* ssid, const char *passphrase = NULL); + + wl_status_t run(void); + + private: + std::vector<WifiAPlist_t> APlist; + bool APlistAdd(const char* ssid, const char *passphrase = NULL); + void APlistClean(void); + +}; + +#endif /* WIFICLIENTMULTI_H_ */ diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ba4efafba2902f3a129209a8fe050330da7e22ab --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp @@ -0,0 +1,684 @@ +/* + ESP8266WiFiSTA.cpp - WiFi library for esp8266 + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Reworked on 28 Dec 2015 by Markus Sattler + + */ + +#include "ESP8266WiFi.h" +#include "ESP8266WiFiGeneric.h" +#include "ESP8266WiFiSTA.h" + +extern "C" { +#include "c_types.h" +#include "ets_sys.h" +#include "os_type.h" +#include "osapi.h" +#include "mem.h" +#include "user_interface.h" +#include "smartconfig.h" +#include "lwip/err.h" +#include "lwip/dns.h" +#include "lwip/init.h" // LWIP_VERSION_ +} + +#include "debug.h" + +extern "C" void esp_schedule(); +extern "C" void esp_yield(); + +// ----------------------------------------------------------------------------------------------------------------------- +// ---------------------------------------------------- Private functions ------------------------------------------------ +// ----------------------------------------------------------------------------------------------------------------------- + +static bool sta_config_equal(const station_config& lhs, const station_config& rhs); + + +/** + * compare two STA configurations + * @param lhs station_config + * @param rhs station_config + * @return equal + */ +static bool sta_config_equal(const station_config& lhs, const station_config& rhs) { + if(strcmp(reinterpret_cast<const char*>(lhs.ssid), reinterpret_cast<const char*>(rhs.ssid)) != 0) { + return false; + } + + if(strcmp(reinterpret_cast<const char*>(lhs.password), reinterpret_cast<const char*>(rhs.password)) != 0) { + return false; + } + + if(lhs.bssid_set != rhs.bssid_set) { + return false; + } + + if(lhs.bssid_set) { + if(memcmp(lhs.bssid, rhs.bssid, 6) != 0) { + return false; + } + } + + return true; +} + +// ----------------------------------------------------------------------------------------------------------------------- +// ---------------------------------------------------- STA function ----------------------------------------------------- +// ----------------------------------------------------------------------------------------------------------------------- + +bool ESP8266WiFiSTAClass::_useStaticIp = false; + +/** + * Start Wifi connection + * if passphrase is set the most secure supported mode will be automatically selected + * @param ssid const char* Pointer to the SSID string. + * @param passphrase const char * Optional. Passphrase. Valid characters in a passphrase must be between ASCII 32-126 (decimal). + * @param bssid uint8_t[6] Optional. BSSID / MAC of AP + * @param channel Optional. Channel of AP + * @param connect Optional. call connect + * @return + */ +wl_status_t ESP8266WiFiSTAClass::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) { + + if(!WiFi.enableSTA(true)) { + // enable STA failed + return WL_CONNECT_FAILED; + } + + if(!ssid || *ssid == 0x00 || strlen(ssid) > 31) { + // fail SSID too long or missing! + return WL_CONNECT_FAILED; + } + + if(passphrase && strlen(passphrase) > 64) { + // fail passphrase too long! + return WL_CONNECT_FAILED; + } + + struct station_config conf; + strcpy(reinterpret_cast<char*>(conf.ssid), ssid); + + if(passphrase) { + if (strlen(passphrase) == 64) // it's not a passphrase, is the PSK + memcpy(reinterpret_cast<char*>(conf.password), passphrase, 64); + else + strcpy(reinterpret_cast<char*>(conf.password), passphrase); + } else { + *conf.password = 0; + } + + if(bssid) { + conf.bssid_set = 1; + memcpy((void *) &conf.bssid[0], (void *) bssid, 6); + } else { + conf.bssid_set = 0; + } + + struct station_config current_conf; + wifi_station_get_config(¤t_conf); + if(sta_config_equal(current_conf, conf)) { + DEBUGV("sta config unchanged"); + } + else { + ETS_UART_INTR_DISABLE(); + + if(WiFi._persistent) { + // workaround for #1997: make sure the value of ap_number is updated and written to flash + // to be removed after SDK update + wifi_station_ap_number_set(2); + wifi_station_ap_number_set(1); + + wifi_station_set_config(&conf); + } else { + wifi_station_set_config_current(&conf); + } + + ETS_UART_INTR_ENABLE(); + } + + ETS_UART_INTR_DISABLE(); + if(connect) { + wifi_station_connect(); + } + ETS_UART_INTR_ENABLE(); + + if(channel > 0 && channel <= 13) { + wifi_set_channel(channel); + } + + if(!_useStaticIp) { + wifi_station_dhcpc_start(); + } + + return status(); +} + +wl_status_t ESP8266WiFiSTAClass::begin(char* ssid, char *passphrase, int32_t channel, const uint8_t* bssid, bool connect) { + return begin((const char*) ssid, (const char*) passphrase, channel, bssid, connect); +} + +/** + * Use to connect to SDK config. + * @return wl_status_t + */ +wl_status_t ESP8266WiFiSTAClass::begin() { + + if(!WiFi.enableSTA(true)) { + // enable STA failed + return WL_CONNECT_FAILED; + } + + ETS_UART_INTR_DISABLE(); + wifi_station_connect(); + ETS_UART_INTR_ENABLE(); + + if(!_useStaticIp) { + wifi_station_dhcpc_start(); + } + return status(); +} + + +/** + * Change IP configuration settings disabling the dhcp client + * @param local_ip Static ip configuration + * @param gateway Static gateway configuration + * @param subnet Static Subnet mask + * @param dns1 Static DNS server 1 + * @param dns2 Static DNS server 2 + */ +bool ESP8266WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1, IPAddress dns2) { + + if(!WiFi.enableSTA(true)) { + return false; + } + + struct ip_info info; + info.ip.addr = static_cast<uint32_t>(local_ip); + info.gw.addr = static_cast<uint32_t>(gateway); + info.netmask.addr = static_cast<uint32_t>(subnet); + + if (local_ip == 0U && gateway == 0U && subnet == 0U) { + _useStaticIp = false; + wifi_station_dhcpc_start(); + return true; + } + + wifi_station_dhcpc_stop(); + if(wifi_set_ip_info(STATION_IF, &info)) { + _useStaticIp = true; + } else { + return false; + } + ip_addr_t d; + + if(dns1 != (uint32_t)0x00000000) { + // Set DNS1-Server + d.addr = static_cast<uint32_t>(dns1); + dns_setserver(0, &d); + } + + if(dns2 != (uint32_t)0x00000000) { + // Set DNS2-Server + d.addr = static_cast<uint32_t>(dns2); + dns_setserver(1, &d); + } + + return true; +} + +/** + * will force a disconnect an then start reconnecting to AP + * @return ok + */ +bool ESP8266WiFiSTAClass::reconnect() { + if((WiFi.getMode() & WIFI_STA) != 0) { + if(wifi_station_disconnect()) { + return wifi_station_connect(); + } + } + return false; +} + +/** + * Disconnect from the network + * @param wifioff + * @return one value of wl_status_t enum + */ +bool ESP8266WiFiSTAClass::disconnect(bool wifioff) { + bool ret; + struct station_config conf; + *conf.ssid = 0; + *conf.password = 0; + + ETS_UART_INTR_DISABLE(); + if(WiFi._persistent) { + wifi_station_set_config(&conf); + } else { + wifi_station_set_config_current(&conf); + } + ret = wifi_station_disconnect(); + ETS_UART_INTR_ENABLE(); + + if(wifioff) { + WiFi.enableSTA(false); + } + + return ret; +} + +/** + * is STA interface connected? + * @return true if STA is connected to an AD + */ +bool ESP8266WiFiSTAClass::isConnected() { + return (status() == WL_CONNECTED); +} + + +/** + * Setting the ESP8266 station to connect to the AP (which is recorded) + * automatically or not when powered on. Enable auto-connect by default. + * @param autoConnect bool + * @return if saved + */ +bool ESP8266WiFiSTAClass::setAutoConnect(bool autoConnect) { + bool ret; + ETS_UART_INTR_DISABLE(); + ret = wifi_station_set_auto_connect(autoConnect); + ETS_UART_INTR_ENABLE(); + return ret; +} + +/** + * Checks if ESP8266 station mode will connect to AP + * automatically or not when it is powered on. + * @return auto connect + */ +bool ESP8266WiFiSTAClass::getAutoConnect() { + return (wifi_station_get_auto_connect() != 0); +} + +/** + * Set whether reconnect or not when the ESP8266 station is disconnected from AP. + * @param autoReconnect + * @return + */ +bool ESP8266WiFiSTAClass::setAutoReconnect(bool autoReconnect) { + return wifi_station_set_reconnect_policy(autoReconnect); +} + +/** + * Wait for WiFi connection to reach a result + * returns the status reached or disconnect if STA is off + * @return wl_status_t + */ +uint8_t ESP8266WiFiSTAClass::waitForConnectResult() { + //1 and 3 have STA enabled + if((wifi_get_opmode() & 1) == 0) { + return WL_DISCONNECTED; + } + while(status() == WL_DISCONNECTED) { + delay(100); + } + return status(); +} + +/** + * Get the station interface IP address. + * @return IPAddress station IP + */ +IPAddress ESP8266WiFiSTAClass::localIP() { + struct ip_info ip; + wifi_get_ip_info(STATION_IF, &ip); + return IPAddress(ip.ip.addr); +} + + +/** + * Get the station interface MAC address. + * @param mac pointer to uint8_t array with length WL_MAC_ADDR_LENGTH + * @return pointer to uint8_t * + */ +uint8_t* ESP8266WiFiSTAClass::macAddress(uint8_t* mac) { + wifi_get_macaddr(STATION_IF, mac); + return mac; +} + +/** + * Get the station interface MAC address. + * @return String mac + */ +String ESP8266WiFiSTAClass::macAddress(void) { + uint8_t mac[6]; + char macStr[18] = { 0 }; + wifi_get_macaddr(STATION_IF, mac); + + sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + return String(macStr); +} + +/** + * Get the interface subnet mask address. + * @return IPAddress subnetMask + */ +IPAddress ESP8266WiFiSTAClass::subnetMask() { + struct ip_info ip; + wifi_get_ip_info(STATION_IF, &ip); + return IPAddress(ip.netmask.addr); +} + +/** + * Get the gateway ip address. + * @return IPAddress gatewayIP + */ +IPAddress ESP8266WiFiSTAClass::gatewayIP() { + struct ip_info ip; + wifi_get_ip_info(STATION_IF, &ip); + return IPAddress(ip.gw.addr); +} + +/** + * Get the DNS ip address. + * @param dns_no + * @return IPAddress DNS Server IP + */ +IPAddress ESP8266WiFiSTAClass::dnsIP(uint8_t dns_no) { +#if LWIP_VERSION_MAJOR == 1 + ip_addr_t dns_ip = dns_getserver(dns_no); + return IPAddress(dns_ip.addr); +#else + const ip_addr_t* dns_ip = dns_getserver(dns_no); + return IPAddress(dns_ip->addr); +#endif +} + + +/** + * Get ESP8266 station DHCP hostname + * @return hostname + */ +String ESP8266WiFiSTAClass::hostname(void) { + return String(wifi_station_get_hostname()); +} + + +/** + * Set ESP8266 station DHCP hostname + * @param aHostname max length:32 + * @return ok + */ +bool ESP8266WiFiSTAClass::hostname(char* aHostname) { + if(strlen(aHostname) > 32) { + return false; + } + return wifi_station_set_hostname(aHostname); +} + +/** + * Set ESP8266 station DHCP hostname + * @param aHostname max length:32 + * @return ok + */ +bool ESP8266WiFiSTAClass::hostname(const char* aHostname) { + return hostname((char*) aHostname); +} + +/** + * Set ESP8266 station DHCP hostname + * @param aHostname max length:32 + * @return ok + */ +bool ESP8266WiFiSTAClass::hostname(String aHostname) { + return hostname((char*) aHostname.c_str()); +} + +/** + * Return Connection status. + * @return one of the value defined in wl_status_t + * + */ +wl_status_t ESP8266WiFiSTAClass::status() { + station_status_t status = wifi_station_get_connect_status(); + + switch(status) { + case STATION_GOT_IP: + return WL_CONNECTED; + case STATION_NO_AP_FOUND: + return WL_NO_SSID_AVAIL; + case STATION_CONNECT_FAIL: + case STATION_WRONG_PASSWORD: + return WL_CONNECT_FAILED; + case STATION_IDLE: + return WL_IDLE_STATUS; + default: + return WL_DISCONNECTED; + } +} + +/** + * Return the current SSID associated with the network + * @return SSID + */ +String ESP8266WiFiSTAClass::SSID() const { + struct station_config conf; + wifi_station_get_config(&conf); + return String(reinterpret_cast<char*>(conf.ssid)); +} + +/** + * Return the current pre shared key associated with the network + * @return psk string + */ +String ESP8266WiFiSTAClass::psk() const { + struct station_config conf; + wifi_station_get_config(&conf); + return String(reinterpret_cast<char*>(conf.password)); +} + +/** + * Return the current bssid / mac associated with the network if configured + * @return bssid uint8_t * + */ +uint8_t* ESP8266WiFiSTAClass::BSSID(void) { + static struct station_config conf; + wifi_station_get_config(&conf); + return reinterpret_cast<uint8_t*>(conf.bssid); +} + +/** + * Return the current bssid / mac associated with the network if configured + * @return String bssid mac + */ +String ESP8266WiFiSTAClass::BSSIDstr(void) { + struct station_config conf; + char mac[18] = { 0 }; + wifi_station_get_config(&conf); + sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", conf.bssid[0], conf.bssid[1], conf.bssid[2], conf.bssid[3], conf.bssid[4], conf.bssid[5]); + return String(mac); +} + +/** + * Return the current network RSSI. + * @return RSSI value + */ +int32_t ESP8266WiFiSTAClass::RSSI(void) { + return wifi_station_get_rssi(); +} + + + +// ----------------------------------------------------------------------------------------------------------------------- +// -------------------------------------------------- STA remote configure ----------------------------------------------- +// ----------------------------------------------------------------------------------------------------------------------- + +void wifi_wps_status_cb(wps_cb_status status); + +/** + * WPS config + * so far only WPS_TYPE_PBC is supported (SDK 1.2.0) + * @return ok + */ +bool ESP8266WiFiSTAClass::beginWPSConfig(void) { + + if(!WiFi.enableSTA(true)) { + // enable STA failed + return false; + } + + disconnect(); + + DEBUGV("wps begin\n"); + + if(!wifi_wps_disable()) { + DEBUGV("wps disable failed\n"); + return false; + } + + // so far only WPS_TYPE_PBC is supported (SDK 1.2.0) + if(!wifi_wps_enable(WPS_TYPE_PBC)) { + DEBUGV("wps enable failed\n"); + return false; + } + + if(!wifi_set_wps_cb((wps_st_cb_t) &wifi_wps_status_cb)) { + DEBUGV("wps cb failed\n"); + return false; + } + + if(!wifi_wps_start()) { + DEBUGV("wps start failed\n"); + return false; + } + + esp_yield(); + // will return here when wifi_wps_status_cb fires + + return true; +} + +/** + * WPS callback + * @param status wps_cb_status + */ +void wifi_wps_status_cb(wps_cb_status status) { + DEBUGV("wps cb status: %d\r\n", status); + switch(status) { + case WPS_CB_ST_SUCCESS: + if(!wifi_wps_disable()) { + DEBUGV("wps disable failed\n"); + } + wifi_station_connect(); + break; + case WPS_CB_ST_FAILED: + DEBUGV("wps FAILED\n"); + break; + case WPS_CB_ST_TIMEOUT: + DEBUGV("wps TIMEOUT\n"); + break; + case WPS_CB_ST_WEP: + DEBUGV("wps WEP\n"); + break; + case WPS_CB_ST_UNK: + DEBUGV("wps UNKNOWN\n"); + if(!wifi_wps_disable()) { + DEBUGV("wps disable failed\n"); + } + break; + } + // TODO user function to get status + + esp_schedule(); // resume the beginWPSConfig function +} + + + +bool ESP8266WiFiSTAClass::_smartConfigStarted = false; +bool ESP8266WiFiSTAClass::_smartConfigDone = false; + +/** + * Start SmartConfig + */ +bool ESP8266WiFiSTAClass::beginSmartConfig() { + if(_smartConfigStarted) { + return false; + } + + if(!WiFi.enableSTA(true)) { + // enable STA failed + return false; + } + + if(smartconfig_start(reinterpret_cast<sc_callback_t>(&ESP8266WiFiSTAClass::_smartConfigCallback), 1)) { + _smartConfigStarted = true; + _smartConfigDone = false; + return true; + } + return false; +} + + +/** + * Stop SmartConfig + */ +bool ESP8266WiFiSTAClass::stopSmartConfig() { + if(!_smartConfigStarted) { + return true; + } + + if(smartconfig_stop()) { + _smartConfigStarted = false; + return true; + } + return false; +} + +/** + * Query SmartConfig status, to decide when stop config + * @return smartConfig Done + */ +bool ESP8266WiFiSTAClass::smartConfigDone() { + if(!_smartConfigStarted) { + return false; + } + + return _smartConfigDone; +} + + +/** + * _smartConfigCallback + * @param st + * @param result + */ +void ESP8266WiFiSTAClass::_smartConfigCallback(uint32_t st, void* result) { + sc_status status = (sc_status) st; + if(status == SC_STATUS_LINK) { + station_config* sta_conf = reinterpret_cast<station_config*>(result); + + wifi_station_set_config(sta_conf); + wifi_station_disconnect(); + wifi_station_connect(); + + _smartConfigDone = true; + } else if(status == SC_STATUS_LINK_OVER) { + WiFi.stopSmartConfig(); + } +} diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h new file mode 100644 index 0000000000000000000000000000000000000000..62b770fbf2693434cf6be95a2b33ce6e132c3cbd --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.h @@ -0,0 +1,107 @@ +/* + ESP8266WiFiSTA.h - esp8266 Wifi support. + Based on WiFi.h from Ardiono WiFi shield library. + Copyright (c) 2011-2014 Arduino. All right reserved. + Modified by Ivan Grokhotkov, December 2014 + Reworked by Markus Sattler, December 2015 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef ESP8266WIFISTA_H_ +#define ESP8266WIFISTA_H_ + + +#include "ESP8266WiFiType.h" +#include "ESP8266WiFiGeneric.h" + + +class ESP8266WiFiSTAClass { + // ---------------------------------------------------------------------------------------------- + // ---------------------------------------- STA function ---------------------------------------- + // ---------------------------------------------------------------------------------------------- + + public: + + wl_status_t begin(const char* ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true); + wl_status_t begin(char* ssid, char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true); + wl_status_t begin(); + + bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000); + + bool reconnect(); + bool disconnect(bool wifioff = false); + + bool isConnected(); + + bool setAutoConnect(bool autoConnect); + bool getAutoConnect(); + + bool setAutoReconnect(bool autoReconnect); + + uint8_t waitForConnectResult(); + + // STA network info + IPAddress localIP(); + + uint8_t * macAddress(uint8_t* mac); + String macAddress(); + + IPAddress subnetMask(); + IPAddress gatewayIP(); + IPAddress dnsIP(uint8_t dns_no = 0); + + String hostname(); + bool hostname(char* aHostname); + bool hostname(const char* aHostname); + bool hostname(String aHostname); + + // STA WiFi info + wl_status_t status(); + String SSID() const; + String psk() const; + + uint8_t * BSSID(); + String BSSIDstr(); + + int32_t RSSI(); + + protected: + + static bool _useStaticIp; + + // ---------------------------------------------------------------------------------------------- + // ------------------------------------ STA remote configure ----------------------------------- + // ---------------------------------------------------------------------------------------------- + + public: + + bool beginWPSConfig(void); + + bool beginSmartConfig(); + bool stopSmartConfig(); + bool smartConfigDone(); + + protected: + + static bool _smartConfigStarted; + static bool _smartConfigDone; + + static void _smartConfigCallback(uint32_t status, void* result); + +}; + + +#endif /* ESP8266WIFISTA_H_ */ diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c88963fd014aae34cb3b939b1173487c480dd98f --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp @@ -0,0 +1,335 @@ +/* + ESP8266WiFiScan.cpp - WiFi library for esp8266 + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Reworked on 28 Dec 2015 by Markus Sattler + + */ + +#include "ESP8266WiFi.h" +#include "ESP8266WiFiGeneric.h" +#include "ESP8266WiFiScan.h" + +extern "C" { +#include "c_types.h" +#include "ets_sys.h" +#include "os_type.h" +#include "osapi.h" +#include "mem.h" +#include "user_interface.h" +} + +#include "debug.h" + +extern "C" void esp_schedule(); +extern "C" void esp_yield(); + +// ----------------------------------------------------------------------------------------------------------------------- +// ---------------------------------------------------- Private functions ------------------------------------------------ +// ----------------------------------------------------------------------------------------------------------------------- + + + + +// ----------------------------------------------------------------------------------------------------------------------- +// ----------------------------------------------------- scan function --------------------------------------------------- +// ----------------------------------------------------------------------------------------------------------------------- + +bool ESP8266WiFiScanClass::_scanAsync = false; +bool ESP8266WiFiScanClass::_scanStarted = false; +bool ESP8266WiFiScanClass::_scanComplete = false; + +size_t ESP8266WiFiScanClass::_scanCount = 0; +void* ESP8266WiFiScanClass::_scanResult = 0; + +std::function<void(int)> ESP8266WiFiScanClass::_onComplete; + +/** + * Start scan WiFi networks available + * @param async run in async mode + * @param show_hidden show hidden networks + * @return Number of discovered networks + */ +int8_t ESP8266WiFiScanClass::scanNetworks(bool async, bool show_hidden) { + if(ESP8266WiFiScanClass::_scanStarted) { + return WIFI_SCAN_RUNNING; + } + + ESP8266WiFiScanClass::_scanAsync = async; + + WiFi.enableSTA(true); + + int status = wifi_station_get_connect_status(); + if(status != STATION_GOT_IP && status != STATION_IDLE) { + wifi_station_disconnect(); + } + + scanDelete(); + + struct scan_config config; + config.ssid = 0; + config.bssid = 0; + config.channel = 0; + config.show_hidden = show_hidden; + if(wifi_station_scan(&config, reinterpret_cast<scan_done_cb_t>(&ESP8266WiFiScanClass::_scanDone))) { + ESP8266WiFiScanClass::_scanComplete = false; + ESP8266WiFiScanClass::_scanStarted = true; + + if(ESP8266WiFiScanClass::_scanAsync) { + delay(0); // time for the OS to trigger the scan + return WIFI_SCAN_RUNNING; + } + + esp_yield(); + return ESP8266WiFiScanClass::_scanCount; + } else { + return WIFI_SCAN_FAILED; + } + +} + +/** + * Starts scanning WiFi networks available in async mode + * @param onComplete the event handler executed when the scan is done + * @param show_hidden show hidden networks + */ +void ESP8266WiFiScanClass::scanNetworksAsync(std::function<void(int)> onComplete, bool show_hidden) { + _onComplete = onComplete; + scanNetworks(true, show_hidden); +} + +/** + * called to get the scan state in Async mode + * @return scan result or status + * -1 if scan not fin + * -2 if scan not triggered + */ +int8_t ESP8266WiFiScanClass::scanComplete() { + + if(_scanStarted) { + return WIFI_SCAN_RUNNING; + } + + if(_scanComplete) { + return ESP8266WiFiScanClass::_scanCount; + } + + return WIFI_SCAN_FAILED; +} + +/** + * delete last scan result from RAM + */ +void ESP8266WiFiScanClass::scanDelete() { + if(ESP8266WiFiScanClass::_scanResult) { + delete[] reinterpret_cast<bss_info*>(ESP8266WiFiScanClass::_scanResult); + ESP8266WiFiScanClass::_scanResult = 0; + ESP8266WiFiScanClass::_scanCount = 0; + } + _scanComplete = false; +} + + +/** + * loads all infos from a scanned wifi in to the ptr parameters + * @param networkItem uint8_t + * @param ssid const char** + * @param encryptionType uint8_t * + * @param RSSI int32_t * + * @param BSSID uint8_t ** + * @param channel int32_t * + * @param isHidden bool * + * @return (true if ok) + */ +bool ESP8266WiFiScanClass::getNetworkInfo(uint8_t i, String &ssid, uint8_t &encType, int32_t &rssi, uint8_t* &bssid, int32_t &channel, bool &isHidden) { + struct bss_info* it = reinterpret_cast<struct bss_info*>(_getScanInfoByIndex(i)); + if(!it) { + return false; + } + + ssid = (const char*) it->ssid; + encType = encryptionType(i); + rssi = it->rssi; + bssid = it->bssid; // move ptr + channel = it->channel; + isHidden = (it->is_hidden != 0); + + return true; +} + + +/** + * Return the SSID discovered during the network scan. + * @param i specify from which network item want to get the information + * @return ssid string of the specified item on the networks scanned list + */ +String ESP8266WiFiScanClass::SSID(uint8_t i) { + struct bss_info* it = reinterpret_cast<struct bss_info*>(_getScanInfoByIndex(i)); + if(!it) { + return ""; + } + + return String(reinterpret_cast<const char*>(it->ssid)); +} + + +/** + * Return the encryption type of the networks discovered during the scanNetworks + * @param i specify from which network item want to get the information + * @return encryption type (enum wl_enc_type) of the specified item on the networks scanned list + */ +uint8_t ESP8266WiFiScanClass::encryptionType(uint8_t i) { + struct bss_info* it = reinterpret_cast<struct bss_info*>(_getScanInfoByIndex(i)); + if(!it) { + return -1; + } + + switch(it->authmode) { + case AUTH_OPEN: + return ENC_TYPE_NONE; + case AUTH_WEP: + return ENC_TYPE_WEP; + case AUTH_WPA_PSK: + return ENC_TYPE_TKIP; + case AUTH_WPA2_PSK: + return ENC_TYPE_CCMP; + case AUTH_WPA_WPA2_PSK: + return ENC_TYPE_AUTO; + default: + return -1; + } +} + +/** + * Return the RSSI of the networks discovered during the scanNetworks + * @param i specify from which network item want to get the information + * @return signed value of RSSI of the specified item on the networks scanned list + */ +int32_t ESP8266WiFiScanClass::RSSI(uint8_t i) { + struct bss_info* it = reinterpret_cast<struct bss_info*>(_getScanInfoByIndex(i)); + if(!it) { + return 0; + } + return it->rssi; +} + + +/** + * return MAC / BSSID of scanned wifi + * @param i specify from which network item want to get the information + * @return uint8_t * MAC / BSSID of scanned wifi + */ +uint8_t * ESP8266WiFiScanClass::BSSID(uint8_t i) { + struct bss_info* it = reinterpret_cast<struct bss_info*>(_getScanInfoByIndex(i)); + if(!it) { + return 0; + } + return it->bssid; +} + +/** + * return MAC / BSSID of scanned wifi + * @param i specify from which network item want to get the information + * @return String MAC / BSSID of scanned wifi + */ +String ESP8266WiFiScanClass::BSSIDstr(uint8_t i) { + char mac[18] = { 0 }; + struct bss_info* it = reinterpret_cast<struct bss_info*>(_getScanInfoByIndex(i)); + if(!it) { + return String(""); + } + sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", it->bssid[0], it->bssid[1], it->bssid[2], it->bssid[3], it->bssid[4], it->bssid[5]); + return String(mac); +} + +int32_t ESP8266WiFiScanClass::channel(uint8_t i) { + struct bss_info* it = reinterpret_cast<struct bss_info*>(_getScanInfoByIndex(i)); + if(!it) { + return 0; + } + return it->channel; +} + +/** + * return if the scanned wifi is Hidden (no SSID) + * @param networkItem specify from which network item want to get the information + * @return bool (true == hidden) + */ +bool ESP8266WiFiScanClass::isHidden(uint8_t i) { + struct bss_info* it = reinterpret_cast<struct bss_info*>(_getScanInfoByIndex(i)); + if(!it) { + return false; + } + return (it->is_hidden != 0); +} + +/** + * private + * scan callback + * @param result void *arg + * @param status STATUS + */ +void ESP8266WiFiScanClass::_scanDone(void* result, int status) { + if(status != OK) { + ESP8266WiFiScanClass::_scanCount = 0; + ESP8266WiFiScanClass::_scanResult = 0; + } else { + + int i = 0; + bss_info* head = reinterpret_cast<bss_info*>(result); + + for(bss_info* it = head; it; it = STAILQ_NEXT(it, next), ++i) + ; + ESP8266WiFiScanClass::_scanCount = i; + if(i == 0) { + ESP8266WiFiScanClass::_scanResult = 0; + } else { + bss_info* copied_info = new bss_info[i]; + i = 0; + for(bss_info* it = head; it; it = STAILQ_NEXT(it, next), ++i) { + memcpy(copied_info + i, it, sizeof(bss_info)); + } + + ESP8266WiFiScanClass::_scanResult = copied_info; + } + + } + + ESP8266WiFiScanClass::_scanStarted = false; + ESP8266WiFiScanClass::_scanComplete = true; + + if(!ESP8266WiFiScanClass::_scanAsync) { + esp_schedule(); + } else if (ESP8266WiFiScanClass::_onComplete) { + ESP8266WiFiScanClass::_onComplete(ESP8266WiFiScanClass::_scanCount); + ESP8266WiFiScanClass::_onComplete = nullptr; + } +} + +/** + * + * @param i specify from which network item want to get the information + * @return bss_info * + */ +void * ESP8266WiFiScanClass::_getScanInfoByIndex(int i) { + if(!ESP8266WiFiScanClass::_scanResult || (size_t) i > ESP8266WiFiScanClass::_scanCount) { + return 0; + } + return reinterpret_cast<bss_info*>(ESP8266WiFiScanClass::_scanResult) + i; +} diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h new file mode 100644 index 0000000000000000000000000000000000000000..da2ba7de38ba577b7a9011132ae32b157bff8c93 --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h @@ -0,0 +1,71 @@ +/* + ESP8266WiFiScan.h - esp8266 Wifi support. + Based on WiFi.h from Ardiono WiFi shield library. + Copyright (c) 2011-2014 Arduino. All right reserved. + Modified by Ivan Grokhotkov, December 2014 + Reworked by Markus Sattler, December 2015 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef ESP8266WIFISCAN_H_ +#define ESP8266WIFISCAN_H_ + +#include "ESP8266WiFiType.h" +#include "ESP8266WiFiGeneric.h" + +class ESP8266WiFiScanClass { + + // ---------------------------------------------------------------------------------------------- + // ----------------------------------------- scan function -------------------------------------- + // ---------------------------------------------------------------------------------------------- + + public: + + int8_t scanNetworks(bool async = false, bool show_hidden = false); + void scanNetworksAsync(std::function<void(int)> onComplete, bool show_hidden = false); + + int8_t scanComplete(); + void scanDelete(); + + // scan result + bool getNetworkInfo(uint8_t networkItem, String &ssid, uint8_t &encryptionType, int32_t &RSSI, uint8_t* &BSSID, int32_t &channel, bool &isHidden); + + String SSID(uint8_t networkItem); + uint8_t encryptionType(uint8_t networkItem); + int32_t RSSI(uint8_t networkItem); + uint8_t * BSSID(uint8_t networkItem); + String BSSIDstr(uint8_t networkItem); + int32_t channel(uint8_t networkItem); + bool isHidden(uint8_t networkItem); + + protected: + + static bool _scanAsync; + static bool _scanStarted; + static bool _scanComplete; + + static size_t _scanCount; + static void* _scanResult; + + static std::function<void(int)> _onComplete; + + static void _scanDone(void* result, int status); + static void * _getScanInfoByIndex(int i); + +}; + + +#endif /* ESP8266WIFISCAN_H_ */ diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiType.h b/libraries/ESP8266WiFi/src/ESP8266WiFiType.h new file mode 100644 index 0000000000000000000000000000000000000000..77c92a801cd6f94fa61c65a3a7a85ac54b00635f --- /dev/null +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiType.h @@ -0,0 +1,151 @@ +/* + ESP8266WiFiType.h - esp8266 Wifi support. + Copyright (c) 2011-2014 Arduino. All right reserved. + Modified by Ivan Grokhotkov, December 2014 + Reworked by Markus Sattler, December 2015 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + +#ifndef ESP8266WIFITYPE_H_ +#define ESP8266WIFITYPE_H_ + +#include <queue.h> + +#define WIFI_SCAN_RUNNING (-1) +#define WIFI_SCAN_FAILED (-2) + +// Note: these enums need to be in sync with the SDK! + +// TODO: replace/deprecate/remove enum typedefs ending with _t below + +typedef enum WiFiMode +{ + WIFI_OFF = 0, WIFI_STA = 1, WIFI_AP = 2, WIFI_AP_STA = 3 +} WiFiMode_t; + +typedef enum WiFiPhyMode +{ + WIFI_PHY_MODE_11B = 1, WIFI_PHY_MODE_11G = 2, WIFI_PHY_MODE_11N = 3 +} WiFiPhyMode_t; + +typedef enum WiFiSleepType +{ + WIFI_NONE_SLEEP = 0, WIFI_LIGHT_SLEEP = 1, WIFI_MODEM_SLEEP = 2 +} WiFiSleepType_t; + + +typedef enum WiFiEvent +{ + WIFI_EVENT_STAMODE_CONNECTED = 0, + WIFI_EVENT_STAMODE_DISCONNECTED, + WIFI_EVENT_STAMODE_AUTHMODE_CHANGE, + WIFI_EVENT_STAMODE_GOT_IP, + WIFI_EVENT_STAMODE_DHCP_TIMEOUT, + WIFI_EVENT_SOFTAPMODE_STACONNECTED, + WIFI_EVENT_SOFTAPMODE_STADISCONNECTED, + WIFI_EVENT_SOFTAPMODE_PROBEREQRECVED, + WIFI_EVENT_MAX, + WIFI_EVENT_ANY = WIFI_EVENT_MAX, + WIFI_EVENT_MODE_CHANGE +} WiFiEvent_t; + +enum WiFiDisconnectReason +{ + WIFI_DISCONNECT_REASON_UNSPECIFIED = 1, + WIFI_DISCONNECT_REASON_AUTH_EXPIRE = 2, + WIFI_DISCONNECT_REASON_AUTH_LEAVE = 3, + WIFI_DISCONNECT_REASON_ASSOC_EXPIRE = 4, + WIFI_DISCONNECT_REASON_ASSOC_TOOMANY = 5, + WIFI_DISCONNECT_REASON_NOT_AUTHED = 6, + WIFI_DISCONNECT_REASON_NOT_ASSOCED = 7, + WIFI_DISCONNECT_REASON_ASSOC_LEAVE = 8, + WIFI_DISCONNECT_REASON_ASSOC_NOT_AUTHED = 9, + WIFI_DISCONNECT_REASON_DISASSOC_PWRCAP_BAD = 10, /* 11h */ + WIFI_DISCONNECT_REASON_DISASSOC_SUPCHAN_BAD = 11, /* 11h */ + WIFI_DISCONNECT_REASON_IE_INVALID = 13, /* 11i */ + WIFI_DISCONNECT_REASON_MIC_FAILURE = 14, /* 11i */ + WIFI_DISCONNECT_REASON_4WAY_HANDSHAKE_TIMEOUT = 15, /* 11i */ + WIFI_DISCONNECT_REASON_GROUP_KEY_UPDATE_TIMEOUT = 16, /* 11i */ + WIFI_DISCONNECT_REASON_IE_IN_4WAY_DIFFERS = 17, /* 11i */ + WIFI_DISCONNECT_REASON_GROUP_CIPHER_INVALID = 18, /* 11i */ + WIFI_DISCONNECT_REASON_PAIRWISE_CIPHER_INVALID = 19, /* 11i */ + WIFI_DISCONNECT_REASON_AKMP_INVALID = 20, /* 11i */ + WIFI_DISCONNECT_REASON_UNSUPP_RSN_IE_VERSION = 21, /* 11i */ + WIFI_DISCONNECT_REASON_INVALID_RSN_IE_CAP = 22, /* 11i */ + WIFI_DISCONNECT_REASON_802_1X_AUTH_FAILED = 23, /* 11i */ + WIFI_DISCONNECT_REASON_CIPHER_SUITE_REJECTED = 24, /* 11i */ + + WIFI_DISCONNECT_REASON_BEACON_TIMEOUT = 200, + WIFI_DISCONNECT_REASON_NO_AP_FOUND = 201, + WIFI_DISCONNECT_REASON_AUTH_FAIL = 202, + WIFI_DISCONNECT_REASON_ASSOC_FAIL = 203, + WIFI_DISCONNECT_REASON_HANDSHAKE_TIMEOUT = 204, +}; + +struct WiFiEventModeChange +{ + WiFiMode oldMode; + WiFiMode newMode; +}; + +struct WiFiEventStationModeConnected +{ + String ssid; + uint8 bssid[6]; + uint8 channel; +}; + +struct WiFiEventStationModeDisconnected +{ + String ssid; + uint8 bssid[6]; + WiFiDisconnectReason reason; +}; + +struct WiFiEventStationModeAuthModeChanged +{ + uint8 oldMode; + uint8 newMode; +}; + +struct WiFiEventStationModeGotIP +{ + IPAddress ip; + IPAddress mask; + IPAddress gw; +}; + +struct WiFiEventSoftAPModeStationConnected +{ + uint8 mac[6]; + uint8 aid; +}; + +struct WiFiEventSoftAPModeStationDisconnected +{ + uint8 mac[6]; + uint8 aid; +}; + +struct WiFiEventSoftAPModeProbeRequestReceived +{ + int rssi; + uint8 mac[6]; +}; + + +#endif /* ESP8266WIFITYPE_H_ */ diff --git a/libraries/ESP8266WiFi/src/WiFiClient.cpp b/libraries/ESP8266WiFi/src/WiFiClient.cpp new file mode 100644 index 0000000000000000000000000000000000000000..576201c6845d545b26e7d5857679312512ad1f1c --- /dev/null +++ b/libraries/ESP8266WiFi/src/WiFiClient.cpp @@ -0,0 +1,341 @@ +/* + WiFiClient.cpp - TCP/IP client for esp8266, mostly compatible + with Arduino WiFi shield library + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#define LWIP_INTERNAL + +extern "C" +{ + #include "include/wl_definitions.h" + #include "osapi.h" + #include "ets_sys.h" +} + +#include "debug.h" +#include "ESP8266WiFi.h" +#include "WiFiClient.h" +#include "WiFiServer.h" +#include "lwip/opt.h" +#include "lwip/ip.h" +#include "lwip/tcp.h" +#include "lwip/inet.h" +#include "lwip/netif.h" +#include "include/ClientContext.h" +#include "c_types.h" + +uint16_t WiFiClient::_localPort = 0; + +template<> +WiFiClient* SList<WiFiClient>::_s_first = 0; + + +WiFiClient::WiFiClient() +: _client(0) +{ + _timeout = 5000; + WiFiClient::_add(this); +} + +WiFiClient::WiFiClient(ClientContext* client) +: _client(client) +{ + _timeout = 5000; + _client->ref(); + WiFiClient::_add(this); +} + +WiFiClient::~WiFiClient() +{ + WiFiClient::_remove(this); + if (_client) + _client->unref(); +} + +WiFiClient::WiFiClient(const WiFiClient& other) +{ + _client = other._client; + _timeout = other._timeout; + _localPort = other._localPort; + if (_client) + _client->ref(); + WiFiClient::_add(this); +} + +WiFiClient& WiFiClient::operator=(const WiFiClient& other) +{ + if (_client) + _client->unref(); + _client = other._client; + _timeout = other._timeout; + _localPort = other._localPort; + if (_client) + _client->ref(); + return *this; +} + + +int WiFiClient::connect(const char* host, uint16_t port) +{ + IPAddress remote_addr; + if (WiFi.hostByName(host, remote_addr, _timeout)) + { + return connect(remote_addr, port); + } + return 0; +} + +int WiFiClient::connect(IPAddress ip, uint16_t port) +{ + ip_addr_t addr; + addr.addr = ip; + + if (_client) + stop(); + + // if the default interface is down, tcp_connect exits early without + // ever calling tcp_err + // http://lists.gnu.org/archive/html/lwip-devel/2010-05/msg00001.html +#if LWIP_VERSION_MAJOR == 1 + netif* interface = ip_route(&addr); + if (!interface) { + DEBUGV("no route to host\r\n"); + return 0; + } +#endif + + tcp_pcb* pcb = tcp_new(); + if (!pcb) + return 0; + + if (_localPort > 0) { + pcb->local_port = _localPort++; + } + + _client = new ClientContext(pcb, nullptr, nullptr); + _client->ref(); + _client->setTimeout(_timeout); + int res = _client->connect(&addr, port); + if (res == 0) { + _client->unref(); + _client = nullptr; + return 0; + } + + return 1; +} + +void WiFiClient::setNoDelay(bool nodelay) { + if (!_client) + return; + _client->setNoDelay(nodelay); +} + +bool WiFiClient::getNoDelay() { + if (!_client) + return false; + return _client->getNoDelay(); +} + +size_t WiFiClient::availableForWrite () +{ + return _client->availableForWrite(); +} + +size_t WiFiClient::write(uint8_t b) +{ + return write(&b, 1); +} + +size_t WiFiClient::write(const uint8_t *buf, size_t size) +{ + if (!_client || !size) + { + return 0; + } + _client->setTimeout(_timeout); + return _client->write(buf, size); +} + +size_t WiFiClient::write(Stream& stream, size_t unused) +{ + (void) unused; + return WiFiClient::write(stream); +} + +size_t WiFiClient::write(Stream& stream) +{ + if (!_client || !stream.available()) + { + return 0; + } + _client->setTimeout(_timeout); + return _client->write(stream); +} + +size_t WiFiClient::write_P(PGM_P buf, size_t size) +{ + if (!_client || !size) + { + return 0; + } + _client->setTimeout(_timeout); + return _client->write_P(buf, size); +} + +int WiFiClient::available() +{ + if (!_client) + return false; + + int result = _client->getSize(); + + if (!result) { + optimistic_yield(100); + } + return result; +} + +int WiFiClient::read() +{ + if (!available()) + return -1; + + return _client->read(); +} + + +int WiFiClient::read(uint8_t* buf, size_t size) +{ + return (int) _client->read(reinterpret_cast<char*>(buf), size); +} + +int WiFiClient::peek() +{ + if (!available()) + return -1; + + return _client->peek(); +} + +size_t WiFiClient::peekBytes(uint8_t *buffer, size_t length) { + size_t count = 0; + + if(!_client) { + return 0; + } + + _startMillis = millis(); + while((available() < (int) length) && ((millis() - _startMillis) < _timeout)) { + yield(); + } + + if(available() < (int) length) { + count = available(); + } else { + count = length; + } + + return _client->peekBytes((char *)buffer, count); +} + +void WiFiClient::flush() +{ + if (_client) + _client->flush(); +} + +void WiFiClient::stop() +{ + if (!_client) + return; + + _client->unref(); + _client = 0; +} + +uint8_t WiFiClient::connected() +{ + if (!_client) + return 0; + + return _client->state() == ESTABLISHED || available(); +} + +uint8_t WiFiClient::status() +{ + if (!_client) + return CLOSED; + return _client->state(); +} + + WiFiClient::operator bool() +{ + return _client != 0; +} + +IPAddress WiFiClient::remoteIP() +{ + if (!_client) + return IPAddress(0U); + + return IPAddress(_client->getRemoteAddress()); +} + +uint16_t WiFiClient::remotePort() +{ + if (!_client) + return 0; + + return _client->getRemotePort(); +} + +IPAddress WiFiClient::localIP() +{ + if (!_client) + return IPAddress(0U); + + return IPAddress(_client->getLocalAddress()); +} + +uint16_t WiFiClient::localPort() +{ + if (!_client) + return 0; + + return _client->getLocalPort(); +} + +void WiFiClient::stopAll() +{ + for (WiFiClient* it = _s_first; it; it = it->_next) { + it->stop(); + } +} + + +void WiFiClient::stopAllExcept(WiFiClient* except) +{ + for (WiFiClient* it = _s_first; it; it = it->_next) { + if (it != except) { + it->stop(); + } + } +} diff --git a/libraries/ESP8266WiFi/src/WiFiClient.h b/libraries/ESP8266WiFi/src/WiFiClient.h new file mode 100644 index 0000000000000000000000000000000000000000..cb4f75c37bf1c92f625fe5314bb348db7df7e4ee --- /dev/null +++ b/libraries/ESP8266WiFi/src/WiFiClient.h @@ -0,0 +1,99 @@ +/* + WiFiClient.h - Library for Arduino Wifi shield. + Copyright (c) 2011-2014 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified by Ivan Grokhotkov, December 2014 - esp8266 support +*/ + +#ifndef wificlient_h +#define wificlient_h +#include <memory> +#include "Arduino.h" +#include "Print.h" +#include "Client.h" +#include "IPAddress.h" +#include "include/slist.h" + +#define WIFICLIENT_MAX_PACKET_SIZE 1460 + +class ClientContext; +class WiFiServer; + +class WiFiClient : public Client, public SList<WiFiClient> { +protected: + WiFiClient(ClientContext* client); + +public: + WiFiClient(); + virtual ~WiFiClient(); + WiFiClient(const WiFiClient&); + WiFiClient& operator=(const WiFiClient&); + + uint8_t status(); + virtual int connect(IPAddress ip, uint16_t port); + virtual int connect(const char *host, uint16_t port); + virtual size_t write(uint8_t); + virtual size_t write(const uint8_t *buf, size_t size); + size_t write_P(PGM_P buf, size_t size); + size_t write(Stream& stream); + + // This one is deprecated, use write(Stream& instead) + size_t write(Stream& stream, size_t unitSize) __attribute__ ((deprecated)); + + virtual int available(); + virtual int read(); + virtual int read(uint8_t *buf, size_t size); + virtual int peek(); + virtual size_t peekBytes(uint8_t *buffer, size_t length); + size_t peekBytes(char *buffer, size_t length) { + return peekBytes((uint8_t *) buffer, length); + } + virtual void flush(); + virtual void stop(); + virtual uint8_t connected(); + virtual operator bool(); + + IPAddress remoteIP(); + uint16_t remotePort(); + IPAddress localIP(); + uint16_t localPort(); + bool getNoDelay(); + void setNoDelay(bool nodelay); + static void setLocalPortStart(uint16_t port) { _localPort = port; } + + size_t availableForWrite(); + + friend class WiFiServer; + + using Print::write; + + static void stopAll(); + static void stopAllExcept(WiFiClient * c); + +protected: + + static int8_t _s_connected(void* arg, void* tpcb, int8_t err); + static void _s_err(void* arg, int8_t err); + + int8_t _connected(void* tpcb, int8_t err); + void _err(int8_t err); + + ClientContext* _client; + static uint16_t _localPort; +}; + +#endif diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e7bcb1a4e4d887984a22b58b78d7f44becf5754c --- /dev/null +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.cpp @@ -0,0 +1,704 @@ +/* + WiFiClientSecure.cpp - Variant of WiFiClient with TLS support + Copyright (c) 2015 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#define LWIP_INTERNAL + +extern "C" +{ +#include "osapi.h" +#include "ets_sys.h" +} +#include <errno.h> +#include "debug.h" +#include "ESP8266WiFi.h" +#include "WiFiClientSecure.h" +#include "WiFiClient.h" +#include "lwip/opt.h" +#include "lwip/ip.h" +#include "lwip/tcp.h" +#include "lwip/inet.h" +#include "lwip/netif.h" +#include "include/ClientContext.h" +#include "c_types.h" + +#ifdef DEBUG_ESP_SSL +#define DEBUG_SSL +#endif + +#ifdef DEBUG_SSL +#define SSL_DEBUG_OPTS (SSL_DISPLAY_STATES | SSL_DISPLAY_CERTS) +#else +#define SSL_DEBUG_OPTS 0 +#endif + +class SSLContext +{ +public: + SSLContext() + { + if (_ssl_ctx_refcnt == 0) { + _ssl_ctx = ssl_ctx_new(SSL_SERVER_VERIFY_LATER | SSL_DEBUG_OPTS | SSL_CONNECT_IN_PARTS | SSL_READ_BLOCKING | SSL_NO_DEFAULT_KEY, 0); + } + ++_ssl_ctx_refcnt; + } + + ~SSLContext() + { + if (_ssl) { + ssl_free(_ssl); + _ssl = nullptr; + } + + --_ssl_ctx_refcnt; + if (_ssl_ctx_refcnt == 0) { + ssl_ctx_free(_ssl_ctx); + } + + s_io_ctx = nullptr; + } + + void ref() + { + ++_refcnt; + } + + void unref() + { + if (--_refcnt == 0) { + delete this; + } + } + + void connect(ClientContext* ctx, const char* hostName, uint32_t timeout_ms) + { + SSL_EXTENSIONS* ext = ssl_ext_new(); + ssl_ext_set_host_name(ext, hostName); + ssl_ext_set_max_fragment_size(ext, 4096); + if (_ssl) { + /* Creating a new TLS session on top of a new TCP connection. + ssl_free will want to send a close notify alert, but the old TCP connection + is already gone at this point, so reset s_io_ctx. */ + s_io_ctx = nullptr; + ssl_free(_ssl); + _available = 0; + _read_ptr = nullptr; + } + s_io_ctx = ctx; + _ssl = ssl_client_new(_ssl_ctx, 0, nullptr, 0, ext); + uint32_t t = millis(); + + while (millis() - t < timeout_ms && ssl_handshake_status(_ssl) != SSL_OK) { + uint8_t* data; + int rc = ssl_read(_ssl, &data); + if (rc < SSL_OK) { + ssl_display_error(rc); + break; + } + } + } + + void stop() + { + s_io_ctx = nullptr; + } + + bool connected() + { + return _ssl != nullptr && ssl_handshake_status(_ssl) == SSL_OK; + } + + int read(uint8_t* dst, size_t size) + { + if (!_available) { + if (!_readAll()) { + return 0; + } + } + size_t will_copy = (_available < size) ? _available : size; + memcpy(dst, _read_ptr, will_copy); + _read_ptr += will_copy; + _available -= will_copy; + if (_available == 0) { + _read_ptr = nullptr; + } + return will_copy; + } + + int read() + { + if (!_available) { + if (!_readAll()) { + return -1; + } + } + int result = _read_ptr[0]; + ++_read_ptr; + --_available; + if (_available == 0) { + _read_ptr = nullptr; + } + return result; + } + + int peek() + { + if (!_available) { + if (!_readAll()) { + return -1; + } + } + return _read_ptr[0]; + } + + size_t peekBytes(char *dst, size_t size) + { + if (!_available) { + if (!_readAll()) { + return -1; + } + } + + size_t will_copy = (_available < size) ? _available : size; + memcpy(dst, _read_ptr, will_copy); + return will_copy; + } + + int available() + { + auto cb = _available; + if (cb == 0) { + cb = _readAll(); + } else { + optimistic_yield(100); + } + return cb; + } + + bool loadObject(int type, Stream& stream, size_t size) + { + std::unique_ptr<uint8_t[]> buf(new uint8_t[size]); + if (!buf.get()) { + DEBUGV("loadObject: failed to allocate memory\n"); + return false; + } + + size_t cb = stream.readBytes(buf.get(), size); + if (cb != size) { + DEBUGV("loadObject: reading %u bytes, got %u\n", size, cb); + return false; + } + + return loadObject(type, buf.get(), size); + } + + bool loadObject_P(int type, PGM_VOID_P data, size_t size) + { + std::unique_ptr<uint8_t[]> buf(new uint8_t[size]); + memcpy_P(buf.get(),data, size); + return loadObject(type, buf.get(), size); + } + + + bool loadObject(int type, const uint8_t* data, size_t size) + { + int rc = ssl_obj_memory_load(_ssl_ctx, type, data, static_cast<int>(size), nullptr); + if (rc != SSL_OK) { + DEBUGV("loadObject: ssl_obj_memory_load returned %d\n", rc); + return false; + } + return true; + } + + bool verifyCert() + { + int rc = ssl_verify_cert(_ssl); + if (_allowSelfSignedCerts && rc == SSL_X509_ERROR(X509_VFY_ERROR_SELF_SIGNED)) { + DEBUGV("Allowing self-signed certificate\n"); + return true; + } else if (rc != SSL_OK) { + DEBUGV("ssl_verify_cert returned %d\n", rc); + ssl_display_error(rc); + return false; + } + return true; + } + + void allowSelfSignedCerts() + { + _allowSelfSignedCerts = true; + } + + operator SSL*() + { + return _ssl; + } + + static ClientContext* getIOContext(int fd) + { + (void) fd; + return s_io_ctx; + } + +protected: + int _readAll() + { + if (!_ssl) { + return 0; + } + + optimistic_yield(100); + + uint8_t* data; + int rc = ssl_read(_ssl, &data); + if (rc <= 0) { + if (rc < SSL_OK && rc != SSL_CLOSE_NOTIFY && rc != SSL_ERROR_CONN_LOST) { + ssl_free(_ssl); + _ssl = nullptr; + } + return 0; + } + DEBUGV(":wcs ra %d\r\n", rc); + _read_ptr = data; + _available = rc; + return _available; + } + + static SSL_CTX* _ssl_ctx; + static int _ssl_ctx_refcnt; + SSL* _ssl = nullptr; + int _refcnt = 0; + const uint8_t* _read_ptr = nullptr; + size_t _available = 0; + bool _allowSelfSignedCerts = false; + static ClientContext* s_io_ctx; +}; + +SSL_CTX* SSLContext::_ssl_ctx = nullptr; +int SSLContext::_ssl_ctx_refcnt = 0; +ClientContext* SSLContext::s_io_ctx = nullptr; + +WiFiClientSecure::WiFiClientSecure() +{ +} + +WiFiClientSecure::~WiFiClientSecure() +{ + if (_ssl) { + _ssl->unref(); + } +} + +WiFiClientSecure::WiFiClientSecure(const WiFiClientSecure& other) + : WiFiClient(static_cast<const WiFiClient&>(other)) +{ + _ssl = other._ssl; + if (_ssl) { + _ssl->ref(); + } +} + +WiFiClientSecure& WiFiClientSecure::operator=(const WiFiClientSecure& rhs) +{ + (WiFiClient&) *this = rhs; + _ssl = rhs._ssl; + if (_ssl) { + _ssl->ref(); + } + return *this; +} + +int WiFiClientSecure::connect(IPAddress ip, uint16_t port) +{ + if (!WiFiClient::connect(ip, port)) { + return 0; + } + + return _connectSSL(nullptr); +} + +int WiFiClientSecure::connect(const char* name, uint16_t port) +{ + IPAddress remote_addr; + if (!WiFi.hostByName(name, remote_addr)) { + return 0; + } + if (!WiFiClient::connect(remote_addr, port)) { + return 0; + } + return _connectSSL(name); +} + +int WiFiClientSecure::_connectSSL(const char* hostName) +{ + if (!_ssl) { + _ssl = new SSLContext; + _ssl->ref(); + } + _ssl->connect(_client, hostName, 5000); + + auto status = ssl_handshake_status(*_ssl); + if (status != SSL_OK) { + _ssl->unref(); + _ssl = nullptr; + return 0; + } + + return 1; +} + +size_t WiFiClientSecure::write(const uint8_t *buf, size_t size) +{ + if (!_ssl) { + return 0; + } + + int rc = ssl_write(*_ssl, buf, size); + if (rc >= 0) { + return rc; + } + + if (rc != SSL_CLOSE_NOTIFY) { + _ssl->unref(); + _ssl = nullptr; + } + + return 0; +} + +int WiFiClientSecure::read(uint8_t *buf, size_t size) +{ + if (!_ssl) { + return 0; + } + + return _ssl->read(buf, size); +} + +int WiFiClientSecure::read() +{ + if (!_ssl) { + return -1; + } + + return _ssl->read(); +} + +int WiFiClientSecure::peek() +{ + if (!_ssl) { + return -1; + } + + return _ssl->peek(); +} + +size_t WiFiClientSecure::peekBytes(uint8_t *buffer, size_t length) +{ + size_t count = 0; + + if (!_ssl) { + return 0; + } + + _startMillis = millis(); + while ((available() < (int) length) && ((millis() - _startMillis) < _timeout)) { + yield(); + } + + if (!_ssl) { + return 0; + } + + if (available() < (int) length) { + count = available(); + } else { + count = length; + } + + return _ssl->peekBytes((char *)buffer, count); +} + +int WiFiClientSecure::available() +{ + if (!_ssl) { + return 0; + } + + return _ssl->available(); +} + + +/* +SSL TCP RX data connected +null x x N +!null x Y Y +Y Y x Y +x N N N +err x N N +*/ +uint8_t WiFiClientSecure::connected() +{ + if (_ssl) { + if (_ssl->available()) { + return true; + } + if (_client && _client->state() == ESTABLISHED && _ssl->connected()) { + return true; + } + } + return false; +} + +void WiFiClientSecure::stop() +{ + if (_ssl) { + _ssl->stop(); + } + WiFiClient::stop(); +} + +static bool parseHexNibble(char pb, uint8_t* res) +{ + if (pb >= '0' && pb <= '9') { + *res = (uint8_t) (pb - '0'); return true; + } else if (pb >= 'a' && pb <= 'f') { + *res = (uint8_t) (pb - 'a' + 10); return true; + } else if (pb >= 'A' && pb <= 'F') { + *res = (uint8_t) (pb - 'A' + 10); return true; + } + return false; +} + +// Compare a name from certificate and domain name, return true if they match +static bool matchName(const String& name, const String& domainName) +{ + int wildcardPos = name.indexOf('*'); + if (wildcardPos == -1) { + // Not a wildcard, expect an exact match + return name == domainName; + } + int firstDotPos = name.indexOf('.'); + if (wildcardPos > firstDotPos) { + // Wildcard is not part of leftmost component of domain name + // Do not attempt to match (rfc6125 6.4.3.1) + return false; + } + if (wildcardPos != 0 || firstDotPos != 1) { + // Matching of wildcards such as baz*.example.com and b*z.example.com + // is optional. Maybe implement this in the future? + return false; + } + int domainNameFirstDotPos = domainName.indexOf('.'); + if (domainNameFirstDotPos < 0) { + return false; + } + return domainName.substring(domainNameFirstDotPos) == name.substring(firstDotPos); +} + +bool WiFiClientSecure::verify(const char* fp, const char* domain_name) +{ + if (!_ssl) { + return false; + } + + uint8_t sha1[20]; + int len = strlen(fp); + int pos = 0; + for (size_t i = 0; i < sizeof(sha1); ++i) { + while (pos < len && ((fp[pos] == ' ') || (fp[pos] == ':'))) { + ++pos; + } + if (pos > len - 2) { + DEBUGV("pos:%d len:%d fingerprint too short\r\n", pos, len); + return false; + } + uint8_t high, low; + if (!parseHexNibble(fp[pos], &high) || !parseHexNibble(fp[pos+1], &low)) { + DEBUGV("pos:%d len:%d invalid hex sequence: %c%c\r\n", pos, len, fp[pos], fp[pos+1]); + return false; + } + pos += 2; + sha1[i] = low | (high << 4); + } + if (ssl_match_fingerprint(*_ssl, sha1) != 0) { + DEBUGV("fingerprint doesn't match\r\n"); + return false; + } + + return _verifyDN(domain_name); +} + +bool WiFiClientSecure::_verifyDN(const char* domain_name) +{ + DEBUGV("domain name: '%s'\r\n", (domain_name)?domain_name:"(null)"); + String domain_name_str(domain_name); + domain_name_str.toLowerCase(); + + const char* san = NULL; + int i = 0; + while ((san = ssl_get_cert_subject_alt_dnsname(*_ssl, i)) != NULL) { + String san_str(san); + san_str.toLowerCase(); + if (matchName(san_str, domain_name_str)) { + return true; + } + DEBUGV("SAN %d: '%s', no match\r\n", i, san); + ++i; + } + const char* common_name = ssl_get_cert_dn(*_ssl, SSL_X509_CERT_COMMON_NAME); + String common_name_str(common_name); + common_name_str.toLowerCase(); + if (common_name && matchName(common_name_str, domain_name_str)) { + return true; + } + DEBUGV("CN: '%s', no match\r\n", (common_name)?common_name:"(null)"); + + return false; +} + +bool WiFiClientSecure::verifyCertChain(const char* domain_name) +{ + if (!_ssl) { + return false; + } + if (!_ssl->verifyCert()) { + return false; + } + return _verifyDN(domain_name); +} + +void WiFiClientSecure::_initSSLContext() +{ + if (!_ssl) { + _ssl = new SSLContext; + _ssl->ref(); + } +} + +bool WiFiClientSecure::setCACert(const uint8_t* pk, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject(SSL_OBJ_X509_CACERT, pk, size); +} + +bool WiFiClientSecure::setCertificate(const uint8_t* pk, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject(SSL_OBJ_X509_CERT, pk, size); +} + +bool WiFiClientSecure::setPrivateKey(const uint8_t* pk, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject(SSL_OBJ_RSA_KEY, pk, size); +} + +bool WiFiClientSecure::setCACert_P(PGM_VOID_P pk, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject_P(SSL_OBJ_X509_CACERT, pk, size); +} + +bool WiFiClientSecure::setCertificate_P(PGM_VOID_P pk, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject_P(SSL_OBJ_X509_CERT, pk, size); +} + +bool WiFiClientSecure::setPrivateKey_P(PGM_VOID_P pk, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject_P(SSL_OBJ_RSA_KEY, pk, size); +} + +bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject(SSL_OBJ_X509_CACERT, stream, size); +} + +bool WiFiClientSecure::loadCertificate(Stream& stream, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject(SSL_OBJ_X509_CERT, stream, size); +} + +bool WiFiClientSecure::loadPrivateKey(Stream& stream, size_t size) +{ + _initSSLContext(); + return _ssl->loadObject(SSL_OBJ_RSA_KEY, stream, size); +} + +void WiFiClientSecure::allowSelfSignedCerts() +{ + _initSSLContext(); + _ssl->allowSelfSignedCerts(); +} + +extern "C" int __ax_port_read(int fd, uint8_t* buffer, size_t count) +{ + ClientContext* _client = SSLContext::getIOContext(fd); + if (!_client || (_client->state() != ESTABLISHED && !_client->getSize())) { + errno = EIO; + return -1; + } + size_t cb = _client->read((char*) buffer, count); + if (cb != count) { + errno = EAGAIN; + } + if (cb == 0) { + optimistic_yield(100); + return -1; + } + return cb; +} +extern "C" void ax_port_read() __attribute__ ((weak, alias("__ax_port_read"))); + +extern "C" int __ax_port_write(int fd, uint8_t* buffer, size_t count) +{ + ClientContext* _client = SSLContext::getIOContext(fd); + if (!_client || _client->state() != ESTABLISHED) { + errno = EIO; + return -1; + } + + size_t cb = _client->write(buffer, count); + if (cb != count) { + errno = EAGAIN; + } + return cb; +} +extern "C" void ax_port_write() __attribute__ ((weak, alias("__ax_port_write"))); + +extern "C" int __ax_get_file(const char *filename, uint8_t **buf) +{ + (void) filename; + *buf = 0; + return 0; +} +extern "C" void ax_get_file() __attribute__ ((weak, alias("__ax_get_file"))); + +extern "C" void __ax_wdt_feed() +{ + optimistic_yield(10000); +} +extern "C" void ax_wdt_feed() __attribute__ ((weak, alias("__ax_wdt_feed"))); diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecure.h b/libraries/ESP8266WiFi/src/WiFiClientSecure.h new file mode 100644 index 0000000000000000000000000000000000000000..afffbdb4ee8106b7519fa3b8df0c2b3aefc1da6f --- /dev/null +++ b/libraries/ESP8266WiFi/src/WiFiClientSecure.h @@ -0,0 +1,91 @@ +/* + WiFiClientSecure.h - Variant of WiFiClient with TLS support + Copyright (c) 2015 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#ifndef wificlientsecure_h +#define wificlientsecure_h +#include "WiFiClient.h" +#include "include/ssl.h" + + +class SSLContext; + +class WiFiClientSecure : public WiFiClient { +public: + WiFiClientSecure(); + ~WiFiClientSecure() override; + WiFiClientSecure(const WiFiClientSecure&); + WiFiClientSecure& operator=(const WiFiClientSecure&); + + int connect(IPAddress ip, uint16_t port) override; + int connect(const char* name, uint16_t port) override; + + bool verify(const char* fingerprint, const char* domain_name); + bool verifyCertChain(const char* domain_name); + + uint8_t connected() override; + size_t write(const uint8_t *buf, size_t size) override; + int read(uint8_t *buf, size_t size) override; + int available() override; + int read() override; + int peek() override; + size_t peekBytes(uint8_t *buffer, size_t length) override; + void stop() override; + + bool setCACert(const uint8_t* pk, size_t size); + bool setCertificate(const uint8_t* pk, size_t size); + bool setPrivateKey(const uint8_t* pk, size_t size); + + bool setCACert_P(PGM_VOID_P pk, size_t size); + bool setCertificate_P(PGM_VOID_P pk, size_t size); + bool setPrivateKey_P(PGM_VOID_P pk, size_t size); + + bool loadCACert(Stream& stream, size_t size); + bool loadCertificate(Stream& stream, size_t size); + bool loadPrivateKey(Stream& stream, size_t size); + + void allowSelfSignedCerts(); + + template<typename TFile> + bool loadCertificate(TFile& file) { + return loadCertificate(file, file.size()); + } + + template<typename TFile> + bool loadPrivateKey(TFile& file) { + return loadPrivateKey(file, file.size()); + } + + template<typename TFile> + bool loadCACert(TFile& file) { + return loadCACert(file, file.size()); + } + + +protected: + void _initSSLContext(); + int _connectSSL(const char* hostName); + bool _verifyDN(const char* name); + + SSLContext* _ssl = nullptr; +}; + +#endif //wificlientsecure_h diff --git a/libraries/ESP8266WiFi/src/WiFiServer.cpp b/libraries/ESP8266WiFi/src/WiFiServer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..380c4ad6e0d168ac78c9d828b23c2301aa68e547 --- /dev/null +++ b/libraries/ESP8266WiFi/src/WiFiServer.cpp @@ -0,0 +1,175 @@ +/* + WiFiServer.cpp - TCP/IP server for esp8266, mostly compatible + with Arduino WiFi shield library + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + + +#define LWIP_INTERNAL + +extern "C" { + #include "osapi.h" + #include "ets_sys.h" +} + +#include "debug.h" +#include "ESP8266WiFi.h" +#include "WiFiClient.h" +#include "WiFiServer.h" +#include "lwip/opt.h" +#include "lwip/tcp.h" +#include "lwip/inet.h" +#include "include/ClientContext.h" + +WiFiServer::WiFiServer(IPAddress addr, uint16_t port) +: _port(port) +, _addr(addr) +, _pcb(nullptr) +, _unclaimed(nullptr) +, _discarded(nullptr) +{ +} + +WiFiServer::WiFiServer(uint16_t port) +: _port(port) +, _addr((uint32_t) IPADDR_ANY) +, _pcb(nullptr) +, _unclaimed(nullptr) +, _discarded(nullptr) +{ +} + +void WiFiServer::begin() { + close(); + err_t err; + tcp_pcb* pcb = tcp_new(); + if (!pcb) + return; + + ip_addr_t local_addr; + local_addr.addr = (uint32_t) _addr; + pcb->so_options |= SOF_REUSEADDR; + err = tcp_bind(pcb, &local_addr, _port); + + if (err != ERR_OK) { + tcp_close(pcb); + return; + } + + tcp_pcb* listen_pcb = tcp_listen(pcb); + if (!listen_pcb) { + tcp_close(pcb); + return; + } + _pcb = listen_pcb; + tcp_accept(listen_pcb, &WiFiServer::_s_accept); + tcp_arg(listen_pcb, (void*) this); +} + +void WiFiServer::setNoDelay(bool nodelay) { + _noDelay = nodelay; +} + +bool WiFiServer::getNoDelay() { + return _noDelay; +} + +bool WiFiServer::hasClient() { + if (_unclaimed) + return true; + return false; +} + +WiFiClient WiFiServer::available(byte* status) { + (void) status; + if (_unclaimed) { + WiFiClient result(_unclaimed); + _unclaimed = _unclaimed->next(); + result.setNoDelay(_noDelay); + DEBUGV("WS:av\r\n"); + return result; + } + + optimistic_yield(1000); + return WiFiClient(); +} + +uint8_t WiFiServer::status() { + if (!_pcb) + return CLOSED; + return _pcb->state; +} + +void WiFiServer::close() { + if (!_pcb) { + return; + } + tcp_close(_pcb); + _pcb = nullptr; +} + +void WiFiServer::stop() { + close(); +} + +size_t WiFiServer::write(uint8_t b) { + return write(&b, 1); +} + +size_t WiFiServer::write(const uint8_t *buffer, size_t size) { + // write to all clients + // not implemented + (void) buffer; + (void) size; + return 0; +} + +template<typename T> +T* slist_append_tail(T* head, T* item) { + if (!head) + return item; + T* last = head; + while(last->next()) + last = last->next(); + last->next(item); + return head; +} + +long WiFiServer::_accept(tcp_pcb* apcb, long err) { + (void) err; + DEBUGV("WS:ac\r\n"); + ClientContext* client = new ClientContext(apcb, &WiFiServer::_s_discard, this); + _unclaimed = slist_append_tail(_unclaimed, client); + tcp_accepted(_pcb); + return ERR_OK; +} + +void WiFiServer::_discard(ClientContext* client) { + (void) client; + // _discarded = slist_append_tail(_discarded, client); + DEBUGV("WS:dis\r\n"); +} + +long WiFiServer::_s_accept(void *arg, tcp_pcb* newpcb, long err) { + return reinterpret_cast<WiFiServer*>(arg)->_accept(newpcb, err); +} + +void WiFiServer::_s_discard(void* server, ClientContext* ctx) { + reinterpret_cast<WiFiServer*>(server)->_discard(ctx); +} diff --git a/libraries/ESP8266WiFi/src/WiFiServer.h b/libraries/ESP8266WiFi/src/WiFiServer.h new file mode 100644 index 0000000000000000000000000000000000000000..8d16e9faa3b4f5a281e9e4a8fc51fd8e0c2c3be7 --- /dev/null +++ b/libraries/ESP8266WiFi/src/WiFiServer.h @@ -0,0 +1,72 @@ +/* + WiFiServer.h - Library for Arduino Wifi shield. + Copyright (c) 2011-2014 Arduino LLC. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified by Ivan Grokhotkov, December 2014 - esp8266 support +*/ + +#ifndef wifiserver_h +#define wifiserver_h + +extern "C" { + #include "include/wl_definitions.h" + + struct tcp_pcb; +} + +#include "Server.h" +#include "IPAddress.h" + +class ClientContext; +class WiFiClient; + +class WiFiServer : public Server { +private: + uint16_t _port; + IPAddress _addr; + tcp_pcb* _pcb; + + ClientContext* _unclaimed; + ClientContext* _discarded; + bool _noDelay = false; + +public: + WiFiServer(IPAddress addr, uint16_t port); + WiFiServer(uint16_t port); + virtual ~WiFiServer() {} + WiFiClient available(uint8_t* status = NULL); + bool hasClient(); + void begin(); + void setNoDelay(bool nodelay); + bool getNoDelay(); + virtual size_t write(uint8_t); + virtual size_t write(const uint8_t *buf, size_t size); + uint8_t status(); + void close(); + void stop(); + + using Print::write; + +protected: + long _accept(tcp_pcb* newpcb, long err); + void _discard(ClientContext* client); + + static long _s_accept(void *arg, tcp_pcb* newpcb, long err); + static void _s_discard(void* server, ClientContext* ctx); +}; + +#endif diff --git a/libraries/ESP8266WiFi/src/WiFiUdp.cpp b/libraries/ESP8266WiFi/src/WiFiUdp.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c163ccef998098db1cd299c0901a3d83f0e1ba80 --- /dev/null +++ b/libraries/ESP8266WiFi/src/WiFiUdp.cpp @@ -0,0 +1,300 @@ +/* + WiFiUdp.cpp - UDP client/server for esp8266, mostly compatible + with Arduino WiFi shield library + + Copyright (c) 2015 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#define LWIP_INTERNAL +#include <functional> + +extern "C" +{ + #include "include/wl_definitions.h" + #include "osapi.h" + #include "ets_sys.h" +} + +#include "debug.h" +#include "ESP8266WiFi.h" +#include "WiFiUdp.h" +#include "lwip/opt.h" +#include "lwip/udp.h" +#include "lwip/inet.h" +#include "lwip/igmp.h" +#include "lwip/mem.h" +#include "include/UdpContext.h" + + +template<> +WiFiUDP* SList<WiFiUDP>::_s_first = 0; + +/* Constructor */ +WiFiUDP::WiFiUDP() : _ctx(0) +{ + WiFiUDP::_add(this); +} + +WiFiUDP::WiFiUDP(const WiFiUDP& other) +{ + _ctx = other._ctx; + if (_ctx) + _ctx->ref(); + WiFiUDP::_add(this); +} + +WiFiUDP& WiFiUDP::operator=(const WiFiUDP& rhs) +{ + _ctx = rhs._ctx; + if (_ctx) + _ctx->ref(); + return *this; +} + +WiFiUDP::~WiFiUDP() +{ + WiFiUDP::_remove(this); + if (_ctx) + _ctx->unref(); +} + +/* Start WiFiUDP socket, listening at local port */ +uint8_t WiFiUDP::begin(uint16_t port) +{ + if (_ctx) { + _ctx->unref(); + _ctx = 0; + } + + _ctx = new UdpContext; + _ctx->ref(); + ip_addr_t addr; + addr.addr = INADDR_ANY; + return (_ctx->listen(addr, port)) ? 1 : 0; +} + +uint8_t WiFiUDP::beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port) +{ + if (_ctx) { + _ctx->unref(); + _ctx = 0; + } + + ip_addr_t ifaddr; + ifaddr.addr = (uint32_t) interfaceAddr; + ip_addr_t multicast_addr; + multicast_addr.addr = (uint32_t) multicast; + + if (igmp_joingroup(&ifaddr, &multicast_addr)!= ERR_OK) { + return 0; + } + + _ctx = new UdpContext; + _ctx->ref(); + if (!_ctx->listen(*IP_ADDR_ANY, port)) { + return 0; + } + + return 1; +} + +/* return number of bytes available in the current packet, + will return zero if parsePacket hasn't been called yet */ +int WiFiUDP::available() { + int result = 0; + + if (_ctx) { + result = static_cast<int>(_ctx->getSize()); + } + + if (!result) { + // yielding here will not make more data "available", + // but it will prevent the system from going into WDT reset + optimistic_yield(1000); + } + + return result; +} + +/* Release any resources being used by this WiFiUDP instance */ +void WiFiUDP::stop() +{ + if (_ctx) { + _ctx->disconnect(); + _ctx->unref(); + } + _ctx = 0; +} + +int WiFiUDP::beginPacket(const char *host, uint16_t port) +{ + IPAddress remote_addr; + if (WiFi.hostByName(host, remote_addr)) + { + return beginPacket(remote_addr, port); + } + return 0; +} + +int WiFiUDP::beginPacket(IPAddress ip, uint16_t port) +{ + ip_addr_t addr; + addr.addr = ip; + + if (!_ctx) { + _ctx = new UdpContext; + _ctx->ref(); + } + return (_ctx->connect(addr, port)) ? 1 : 0; +} + +int WiFiUDP::beginPacketMulticast(IPAddress multicastAddress, uint16_t port, + IPAddress interfaceAddress, int ttl) +{ + ip_addr_t mcastAddr; + mcastAddr.addr = multicastAddress; + ip_addr_t ifaceAddr; + ifaceAddr.addr = interfaceAddress; + + if (!_ctx) { + _ctx = new UdpContext; + _ctx->ref(); + } + if (!_ctx->connect(mcastAddr, port)) { + return 0; + } + _ctx->setMulticastInterface(ifaceAddr); + _ctx->setMulticastTTL(ttl); + return 1; +} + +int WiFiUDP::endPacket() +{ + if (!_ctx) + return 0; + + return (_ctx->send()) ? 1 : 0; +} + +size_t WiFiUDP::write(uint8_t byte) +{ + return write(&byte, 1); +} + +size_t WiFiUDP::write(const uint8_t *buffer, size_t size) +{ + if (!_ctx) + return 0; + + return _ctx->append(reinterpret_cast<const char*>(buffer), size); +} + +int WiFiUDP::parsePacket() +{ + if (!_ctx) + return 0; + + if (!_ctx->next()) { + optimistic_yield(100); + return 0; + } + + return _ctx->getSize(); +} + +int WiFiUDP::read() +{ + if (!_ctx) + return -1; + + return _ctx->read(); +} + +int WiFiUDP::read(unsigned char* buffer, size_t len) +{ + if (!_ctx) + return 0; + + return _ctx->read(reinterpret_cast<char*>(buffer), len); +} + +int WiFiUDP::peek() +{ + if (!_ctx) + return -1; + + return _ctx->peek(); +} + +void WiFiUDP::flush() +{ + if (_ctx) + _ctx->flush(); +} + +IPAddress WiFiUDP::remoteIP() +{ + if (!_ctx) + return IPAddress(0U); + + return IPAddress(_ctx->getRemoteAddress()); +} + +uint16_t WiFiUDP::remotePort() +{ + if (!_ctx) + return 0; + + return _ctx->getRemotePort(); +} + +IPAddress WiFiUDP::destinationIP() +{ + IPAddress addr; + + if (!_ctx) + return addr; + + addr = _ctx->getDestAddress(); + return addr; +} + +uint16_t WiFiUDP::localPort() +{ + if (!_ctx) + return 0; + + return _ctx->getLocalPort(); +} + +void WiFiUDP::stopAll() +{ + for (WiFiUDP* it = _s_first; it; it = it->_next) { + DEBUGV("%s %08x %08x\n", __func__, (uint32_t) it, (uint32_t) _s_first); + it->stop(); + } +} + +void WiFiUDP::stopAllExcept(WiFiUDP * exC) { + for (WiFiUDP* it = _s_first; it; it = it->_next) { + if (it->_ctx != exC->_ctx) { + DEBUGV("%s %08x %08x\n", __func__, (uint32_t) it, (uint32_t) _s_first); + it->stop(); + } + } +} diff --git a/libraries/ESP8266WiFi/src/WiFiUdp.h b/libraries/ESP8266WiFi/src/WiFiUdp.h new file mode 100644 index 0000000000000000000000000000000000000000..011de2e64fa6961c1e9ed72e9609a839cdde0df2 --- /dev/null +++ b/libraries/ESP8266WiFi/src/WiFiUdp.h @@ -0,0 +1,113 @@ +/* + WiFiUdp.h - Library for Arduino Wifi shield. + Copyright (c) 2011-2014 Arduino LLC. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified by Ivan Grokhotkov, January 2015 - esp8266 support +*/ + +#ifndef WIFIUDP_H +#define WIFIUDP_H + +#include <Udp.h> +#include <include/slist.h> + +#define UDP_TX_PACKET_MAX_SIZE 8192 + +class UdpContext; + +class WiFiUDP : public UDP, public SList<WiFiUDP> { +private: + UdpContext* _ctx; + +public: + WiFiUDP(); // Constructor + WiFiUDP(const WiFiUDP& other); + WiFiUDP& operator=(const WiFiUDP& rhs); + ~WiFiUDP(); + + operator bool() const { return _ctx != 0; } + + // initialize, start listening on specified port. + // Returns 1 if successful, 0 if there are no sockets available to use + virtual uint8_t begin(uint16_t port); + // Finish with the UDP connetion + virtual void stop(); + // join a multicast group and listen on the given port + uint8_t beginMulticast(IPAddress interfaceAddr, IPAddress multicast, uint16_t port); + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port); + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char *host, uint16_t port); + // Start building up a packet to send to the multicast address + // multicastAddress - muticast address to send to + // interfaceAddress - the local IP address of the interface that should be used + // use WiFi.localIP() or WiFi.softAPIP() depending on the interface you need + // ttl - multicast packet TTL (default is 1) + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacketMulticast(IPAddress multicastAddress, + uint16_t port, + IPAddress interfaceAddress, + int ttl = 1); + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket(); + // Write a single byte into the packet + virtual size_t write(uint8_t); + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t *buffer, size_t size); + + using Print::write; + + // Start processing the next available incoming packet + // Returns the size of the packet in bytes, or 0 if no packets are available + virtual int parsePacket(); + // Number of bytes remaining in the current packet + virtual int available(); + // Read a single byte from the current packet + virtual int read(); + // Read up to len bytes from the current packet and place them into buffer + // Returns the number of bytes read, or 0 if none are available + virtual int read(unsigned char* buffer, size_t len); + // Read up to len characters from the current packet and place them into buffer + // Returns the number of characters read, or 0 if none are available + virtual int read(char* buffer, size_t len) { return read((unsigned char*)buffer, len); }; + // Return the next byte from the current packet without moving on to the next byte + virtual int peek(); + virtual void flush(); // Finish reading the current packet + + // Return the IP address of the host who sent the current incoming packet + virtual IPAddress remoteIP(); + // Return the port of the host who sent the current incoming packet + virtual uint16_t remotePort(); + // Return the destination address for incoming packets, + // useful to distinguish multicast and ordinary packets + IPAddress destinationIP(); + // Return the local port for outgoing packets + uint16_t localPort(); + + static void stopAll(); + static void stopAllExcept(WiFiUDP * exC); + +}; + +#endif //WIFIUDP_H + diff --git a/libraries/ESP8266WiFi/src/include/ClientContext.h b/libraries/ESP8266WiFi/src/include/ClientContext.h new file mode 100644 index 0000000000000000000000000000000000000000..639b3587ce42676028b03276a49a31da9610549d --- /dev/null +++ b/libraries/ESP8266WiFi/src/include/ClientContext.h @@ -0,0 +1,548 @@ +/* + ClientContext.h - TCP connection handling on top of lwIP + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +#ifndef CLIENTCONTEXT_H +#define CLIENTCONTEXT_H + +class ClientContext; +class WiFiClient; + +typedef void (*discard_cb_t)(void*, ClientContext*); + +extern "C" void esp_yield(); +extern "C" void esp_schedule(); + +#include "DataSource.h" + +class ClientContext +{ +public: + ClientContext(tcp_pcb* pcb, discard_cb_t discard_cb, void* discard_cb_arg) : + _pcb(pcb), _rx_buf(0), _rx_buf_offset(0), _discard_cb(discard_cb), _discard_cb_arg(discard_cb_arg), _refcnt(0), _next(0) + { + tcp_setprio(pcb, TCP_PRIO_MIN); + tcp_arg(pcb, this); + tcp_recv(pcb, &_s_recv); + tcp_sent(pcb, &_s_sent); + tcp_err(pcb, &_s_error); + tcp_poll(pcb, &_s_poll, 1); + } + + err_t abort() + { + if(_pcb) { + DEBUGV(":abort\r\n"); + tcp_arg(_pcb, NULL); + tcp_sent(_pcb, NULL); + tcp_recv(_pcb, NULL); + tcp_err(_pcb, NULL); + tcp_poll(_pcb, NULL, 0); + tcp_abort(_pcb); + _pcb = 0; + } + return ERR_ABRT; + } + + err_t close() + { + err_t err = ERR_OK; + if(_pcb) { + DEBUGV(":close\r\n"); + tcp_arg(_pcb, NULL); + tcp_sent(_pcb, NULL); + tcp_recv(_pcb, NULL); + tcp_err(_pcb, NULL); + tcp_poll(_pcb, NULL, 0); + err = tcp_close(_pcb); + if(err != ERR_OK) { + DEBUGV(":tc err %d\r\n", (int) err); + tcp_abort(_pcb); + err = ERR_ABRT; + } + _pcb = 0; + } + return err; + } + + ~ClientContext() + { + } + + ClientContext* next() const + { + return _next; + } + + ClientContext* next(ClientContext* new_next) + { + _next = new_next; + return _next; + } + + void ref() + { + ++_refcnt; + DEBUGV(":ref %d\r\n", _refcnt); + } + + void unref() + { + if(this != 0) { + DEBUGV(":ur %d\r\n", _refcnt); + if(--_refcnt == 0) { + flush(); + close(); + if(_discard_cb) { + _discard_cb(_discard_cb_arg, this); + } + DEBUGV(":del\r\n"); + delete this; + } + } + } + + int connect(ip_addr_t* addr, uint16_t port) + { + err_t err = tcp_connect(_pcb, addr, port, &ClientContext::_s_connected); + if (err != ERR_OK) { + return 0; + } + _connect_pending = 1; + _op_start_time = millis(); + // This delay will be interrupted by esp_schedule in the connect callback + delay(_timeout_ms); + _connect_pending = 0; + if (state() != ESTABLISHED) { + abort(); + return 0; + } + return 1; + } + + size_t availableForWrite() + { + return _pcb? tcp_sndbuf(_pcb): 0; + } + + void setNoDelay(bool nodelay) + { + if(!_pcb) { + return; + } + if(nodelay) { + tcp_nagle_disable(_pcb); + } else { + tcp_nagle_enable(_pcb); + } + } + + bool getNoDelay() + { + if(!_pcb) { + return false; + } + return tcp_nagle_disabled(_pcb); + } + + void setTimeout(int timeout_ms) + { + _timeout_ms = timeout_ms; + } + + int getTimeout() + { + return _timeout_ms; + } + + uint32_t getRemoteAddress() + { + if(!_pcb) { + return 0; + } + + return _pcb->remote_ip.addr; + } + + uint16_t getRemotePort() + { + if(!_pcb) { + return 0; + } + + return _pcb->remote_port; + } + + uint32_t getLocalAddress() + { + if(!_pcb) { + return 0; + } + + return _pcb->local_ip.addr; + } + + uint16_t getLocalPort() + { + if(!_pcb) { + return 0; + } + + return _pcb->local_port; + } + + size_t getSize() const + { + if(!_rx_buf) { + return 0; + } + + return _rx_buf->tot_len - _rx_buf_offset; + } + + char read() + { + if(!_rx_buf) { + return 0; + } + + char c = reinterpret_cast<char*>(_rx_buf->payload)[_rx_buf_offset]; + _consume(1); + return c; + } + + size_t read(char* dst, size_t size) + { + if(!_rx_buf) { + return 0; + } + + size_t max_size = _rx_buf->tot_len - _rx_buf_offset; + size = (size < max_size) ? size : max_size; + + DEBUGV(":rd %d, %d, %d\r\n", size, _rx_buf->tot_len, _rx_buf_offset); + size_t size_read = 0; + while(size) { + size_t buf_size = _rx_buf->len - _rx_buf_offset; + size_t copy_size = (size < buf_size) ? size : buf_size; + DEBUGV(":rdi %d, %d\r\n", buf_size, copy_size); + os_memcpy(dst, reinterpret_cast<char*>(_rx_buf->payload) + _rx_buf_offset, copy_size); + dst += copy_size; + _consume(copy_size); + size -= copy_size; + size_read += copy_size; + } + return size_read; + } + + char peek() + { + if(!_rx_buf) { + return 0; + } + + return reinterpret_cast<char*>(_rx_buf->payload)[_rx_buf_offset]; + } + + size_t peekBytes(char *dst, size_t size) + { + if(!_rx_buf) { + return 0; + } + + size_t max_size = _rx_buf->tot_len - _rx_buf_offset; + size = (size < max_size) ? size : max_size; + + DEBUGV(":pd %d, %d, %d\r\n", size, _rx_buf->tot_len, _rx_buf_offset); + size_t buf_size = _rx_buf->len - _rx_buf_offset; + size_t copy_size = (size < buf_size) ? size : buf_size; + DEBUGV(":rpi %d, %d\r\n", buf_size, copy_size); + os_memcpy(dst, reinterpret_cast<char*>(_rx_buf->payload) + _rx_buf_offset, copy_size); + return copy_size; + } + + void flush() + { + if(!_rx_buf) { + return; + } + if(_pcb) { + tcp_recved(_pcb, (size_t) _rx_buf->tot_len); + } + pbuf_free(_rx_buf); + _rx_buf = 0; + _rx_buf_offset = 0; + } + + uint8_t state() const + { + if(!_pcb) { + return CLOSED; + } + + return _pcb->state; + } + + + size_t write(const uint8_t* data, size_t size) + { + if (!_pcb) { + return 0; + } + return _write_from_source(new BufferDataSource(data, size)); + } + + size_t write(Stream& stream) + { + if (!_pcb) { + return 0; + } + return _write_from_source(new BufferedStreamDataSource<Stream>(stream, stream.available())); + } + + size_t write_P(PGM_P buf, size_t size) + { + if (!_pcb) { + return 0; + } + ProgmemStream stream(buf, size); + return _write_from_source(new BufferedStreamDataSource<ProgmemStream>(stream, size)); + } + +protected: + + bool _is_timeout() + { + return millis() - _op_start_time > _timeout_ms; + } + + void _notify_error() + { + if (_connect_pending || _send_waiting) { + esp_schedule(); + } + } + + size_t _write_from_source(DataSource* ds) + { + assert(_datasource == nullptr); + assert(_send_waiting == 0); + _datasource = ds; + _written = 0; + _op_start_time = millis(); + do { + if (_write_some()) { + _op_start_time = millis(); + } + + if (!_datasource->available() || _is_timeout() || state() == CLOSED) { + if (_is_timeout()) { + DEBUGV(":wtmo\r\n"); + } + delete _datasource; + _datasource = nullptr; + break; + } + + ++_send_waiting; + esp_yield(); + } while(true); + _send_waiting = 0; + return _written; + } + + bool _write_some() + { + if (!_datasource || !_pcb) { + return false; + } + + size_t left = _datasource->available(); + size_t can_send = tcp_sndbuf(_pcb); + if (_pcb->snd_queuelen >= TCP_SND_QUEUELEN) { + can_send = 0; + } + size_t will_send = (can_send < left) ? can_send : left; + DEBUGV(":wr %d %d %d\r\n", will_send, left, _written); + bool need_output = false; + while( will_send && _datasource) { + size_t next_chunk = + will_send > _write_chunk_size ? _write_chunk_size : will_send; + const uint8_t* buf = _datasource->get_buffer(next_chunk); + if (state() == CLOSED) { + need_output = false; + break; + } + err_t err = tcp_write(_pcb, buf, next_chunk, TCP_WRITE_FLAG_COPY); + DEBUGV(":wrc %d %d %d\r\n", next_chunk, will_send, (int) err); + _datasource->release_buffer(buf, next_chunk); + if (err == ERR_OK) { + _written += next_chunk; + need_output = true; + } else { + break; + } + will_send -= next_chunk; + } + if( need_output ) { + tcp_output(_pcb); + return true; + } + return false; + } + + void _write_some_from_cb() + { + if (_send_waiting == 1) { + _send_waiting--; + esp_schedule(); + } + } + + err_t _sent(tcp_pcb* pcb, uint16_t len) + { + (void) pcb; + (void) len; + DEBUGV(":sent %d\r\n", len); + _write_some_from_cb(); + return ERR_OK; + } + + void _consume(size_t size) + { + ptrdiff_t left = _rx_buf->len - _rx_buf_offset - size; + if(left > 0) { + _rx_buf_offset += size; + } else if(!_rx_buf->next) { + DEBUGV(":c0 %d, %d\r\n", size, _rx_buf->tot_len); + if(_pcb) { + tcp_recved(_pcb, _rx_buf->len); + } + pbuf_free(_rx_buf); + _rx_buf = 0; + _rx_buf_offset = 0; + } else { + DEBUGV(":c %d, %d, %d\r\n", size, _rx_buf->len, _rx_buf->tot_len); + auto head = _rx_buf; + _rx_buf = _rx_buf->next; + _rx_buf_offset = 0; + pbuf_ref(_rx_buf); + if(_pcb) { + tcp_recved(_pcb, head->len); + } + pbuf_free(head); + } + } + + err_t _recv(tcp_pcb* pcb, pbuf* pb, err_t err) + { + (void) pcb; + (void) err; + if(pb == 0) { // connection closed + DEBUGV(":rcl\r\n"); + _notify_error(); + abort(); + return ERR_ABRT; + } + + if(_rx_buf) { + DEBUGV(":rch %d, %d\r\n", _rx_buf->tot_len, pb->tot_len); + pbuf_cat(_rx_buf, pb); + } else { + DEBUGV(":rn %d\r\n", pb->tot_len); + _rx_buf = pb; + _rx_buf_offset = 0; + } + return ERR_OK; + } + + void _error(err_t err) + { + (void) err; + DEBUGV(":er %d 0x%08x\r\n", (int) err, (uint32_t) _datasource); + tcp_arg(_pcb, NULL); + tcp_sent(_pcb, NULL); + tcp_recv(_pcb, NULL); + tcp_err(_pcb, NULL); + _pcb = NULL; + _notify_error(); + } + + err_t _connected(struct tcp_pcb *pcb, err_t err) + { + (void) err; + assert(pcb == _pcb); + assert(_connect_pending); + esp_schedule(); + return ERR_OK; + } + + err_t _poll(tcp_pcb*) + { + _write_some_from_cb(); + return ERR_OK; + } + + static err_t _s_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *pb, err_t err) + { + return reinterpret_cast<ClientContext*>(arg)->_recv(tpcb, pb, err); + } + + static void _s_error(void *arg, err_t err) + { + reinterpret_cast<ClientContext*>(arg)->_error(err); + } + + static err_t _s_poll(void *arg, struct tcp_pcb *tpcb) + { + return reinterpret_cast<ClientContext*>(arg)->_poll(tpcb); + } + + static err_t _s_sent(void *arg, struct tcp_pcb *tpcb, uint16_t len) + { + return reinterpret_cast<ClientContext*>(arg)->_sent(tpcb, len); + } + + static err_t _s_connected(void* arg, struct tcp_pcb *pcb, err_t err) + { + return reinterpret_cast<ClientContext*>(arg)->_connected(pcb, err); + } + +private: + tcp_pcb* _pcb; + + pbuf* _rx_buf; + size_t _rx_buf_offset; + + discard_cb_t _discard_cb; + void* _discard_cb_arg; + + DataSource* _datasource = nullptr; + size_t _written = 0; + size_t _write_chunk_size = 256; + uint32_t _timeout_ms = 5000; + uint32_t _op_start_time = 0; + uint8_t _send_waiting = 0; + uint8_t _connect_pending = 0; + + int8_t _refcnt; + ClientContext* _next; +}; + +#endif//CLIENTCONTEXT_H diff --git a/libraries/ESP8266WiFi/src/include/DataSource.h b/libraries/ESP8266WiFi/src/include/DataSource.h new file mode 100644 index 0000000000000000000000000000000000000000..77eb78b676c781ba5a5d68d73299113e2b450e7b --- /dev/null +++ b/libraries/ESP8266WiFi/src/include/DataSource.h @@ -0,0 +1,114 @@ +/* DataSource.h - a read-only object similar to Stream, but with less methods + * Copyright (c) 2016 Ivan Grokhotkov. All rights reserved. + * This file is distributed under MIT license. + */ +#ifndef DATASOURCE_H +#define DATASOURCE_H + +#include <assert.h> + +class DataSource { +public: + virtual ~DataSource() {} + virtual size_t available() = 0; + virtual const uint8_t* get_buffer(size_t size) = 0; + virtual void release_buffer(const uint8_t* buffer, size_t size) = 0; + +}; + +class BufferDataSource : public DataSource { +public: + BufferDataSource(const uint8_t* data, size_t size) : + _data(data), + _size(size) + { + } + + size_t available() override + { + return _size - _pos; + } + + const uint8_t* get_buffer(size_t size) override + { + assert(_pos + size <= _size); + return _data + _pos; + } + + void release_buffer(const uint8_t* buffer, size_t size) override + { + assert(buffer == _data + _pos); + _pos += size; + } + +protected: + const uint8_t* _data; + const size_t _size; + size_t _pos = 0; +}; + +template<typename TStream> +class BufferedStreamDataSource : public DataSource { +public: + BufferedStreamDataSource(TStream& stream, size_t size) : + _stream(stream), + _size(size) + { + } + + size_t available() override + { + return _size - _pos; + } + + const uint8_t* get_buffer(size_t size) override + { + assert(_pos + size <= _size); + if (_bufferSize < size) { + _buffer.reset(new uint8_t[size]); + _bufferSize = size; + } + size_t cb = _stream.readBytes(reinterpret_cast<char*>(_buffer.get()), size); + assert(cb == size); + return _buffer.get(); + } + + void release_buffer(const uint8_t* buffer, size_t size) override + { + (void) buffer; + _pos += size; + } + +protected: + TStream& _stream; + std::unique_ptr<uint8_t[]> _buffer; + size_t _size; + size_t _pos = 0; + size_t _bufferSize = 0; +}; + +class ProgmemStream +{ +public: + ProgmemStream(PGM_P buf, size_t size) : + _buf(buf), + _left(size) + { + } + + size_t readBytes(char* dst, size_t size) + { + size_t will_read = (_left < size) ? _left : size; + memcpy_P((void*)dst, (PGM_VOID_P)_buf, will_read); + _left -= will_read; + _buf += will_read; + return will_read; + } + +protected: + PGM_P _buf; + size_t _left; +}; + + +#endif //DATASOURCE_H diff --git a/libraries/ESP8266WiFi/src/include/UdpContext.h b/libraries/ESP8266WiFi/src/include/UdpContext.h new file mode 100644 index 0000000000000000000000000000000000000000..cb527ab0af307a995db2358d66d5d2b2cbbc757d --- /dev/null +++ b/libraries/ESP8266WiFi/src/include/UdpContext.h @@ -0,0 +1,418 @@ +/* + UdpContext.h - UDP connection handling on top of lwIP + + Copyright (c) 2014 Ivan Grokhotkov. All rights reserved. + This file is part of the esp8266 core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#ifndef UDPCONTEXT_H +#define UDPCONTEXT_H + +class UdpContext; + +extern "C" { +void esp_yield(); +void esp_schedule(); +#include "lwip/init.h" // LWIP_VERSION_ +} + + +#define GET_IP_HDR(pb) reinterpret_cast<ip_hdr*>(((uint8_t*)((pb)->payload)) - UDP_HLEN - IP_HLEN); +#define GET_UDP_HDR(pb) reinterpret_cast<udp_hdr*>(((uint8_t*)((pb)->payload)) - UDP_HLEN); + +class UdpContext +{ +public: + + typedef std::function<void(void)> rxhandler_t; + + UdpContext() + : _pcb(0) + , _rx_buf(0) + , _first_buf_taken(false) + , _rx_buf_offset(0) + , _refcnt(0) + , _tx_buf_head(0) + , _tx_buf_cur(0) + , _tx_buf_offset(0) + { + _pcb = udp_new(); +#ifdef LWIP_MAYBE_XCC + _mcast_ttl = 1; +#endif + } + + ~UdpContext() + { + udp_remove(_pcb); + _pcb = 0; + if (_tx_buf_head) + { + pbuf_free(_tx_buf_head); + _tx_buf_head = 0; + _tx_buf_cur = 0; + _tx_buf_offset = 0; + } + if (_rx_buf) + { + pbuf_free(_rx_buf); + _rx_buf = 0; + _rx_buf_offset = 0; + } + } + + void ref() + { + ++_refcnt; + } + + void unref() + { + if(this != 0) { + DEBUGV(":ur %d\r\n", _refcnt); + if(--_refcnt == 0) { + delete this; + } + } + } + + bool connect(ip_addr_t addr, uint16_t port) + { + ip_addr_copy(_pcb->remote_ip, addr); + _pcb->remote_port = port; + return true; + } + + bool listen(ip_addr_t addr, uint16_t port) + { + udp_recv(_pcb, &_s_recv, (void *) this); + err_t err = udp_bind(_pcb, &addr, port); + return err == ERR_OK; + } + + void disconnect() + { + udp_disconnect(_pcb); + } + +#if LWIP_VERSION_MAJOR == 1 + void setMulticastInterface(ip_addr_t addr) + { + udp_set_multicast_netif_addr(_pcb, addr); + } +#else + void setMulticastInterface(const ip_addr_t& addr) + { + udp_set_multicast_netif_addr(_pcb, &addr); + } +#endif + + void setMulticastTTL(int ttl) + { +#ifdef LWIP_MAYBE_XCC + _mcast_ttl = ttl; +#else + udp_set_multicast_ttl(_pcb, ttl); +#endif + } + + // warning: handler is called from tcp stack context + // esp_yield and non-reentrant functions which depend on it will fail + void onRx(rxhandler_t handler) { + _on_rx = handler; + } + + size_t getSize() const + { + if (!_rx_buf) + return 0; + + return _rx_buf->len - _rx_buf_offset; + } + + uint32_t getRemoteAddress() + { + if (!_rx_buf) + return 0; + + ip_hdr* iphdr = GET_IP_HDR(_rx_buf); + return iphdr->src.addr; + } + + uint16_t getRemotePort() + { + if (!_rx_buf) + return 0; + + udp_hdr* udphdr = GET_UDP_HDR(_rx_buf); + return ntohs(udphdr->src); + } + + uint32_t getDestAddress() + { + ip_hdr* iphdr = GET_IP_HDR(_rx_buf); + return iphdr->dest.addr; + } + + uint16_t getLocalPort() + { + if (!_pcb) + return 0; + + return _pcb->local_port; + } + + bool next() + { + if (!_rx_buf) + return false; + + if (!_first_buf_taken) + { + _first_buf_taken = true; + return true; + } + + auto head = _rx_buf; + _rx_buf = _rx_buf->next; + _rx_buf_offset = 0; + + if (_rx_buf) + { + pbuf_ref(_rx_buf); + } + pbuf_free(head); + return _rx_buf != 0; + } + + int read() + { + if (!_rx_buf || _rx_buf_offset == _rx_buf->len) + return -1; + + char c = reinterpret_cast<char*>(_rx_buf->payload)[_rx_buf_offset]; + _consume(1); + return c; + } + + size_t read(char* dst, size_t size) + { + if (!_rx_buf) + return 0; + + size_t max_size = _rx_buf->len - _rx_buf_offset; + size = (size < max_size) ? size : max_size; + DEBUGV(":urd %d, %d, %d\r\n", size, _rx_buf->len, _rx_buf_offset); + + memcpy(dst, reinterpret_cast<char*>(_rx_buf->payload) + _rx_buf_offset, size); + _consume(size); + + return size; + } + + int peek() + { + if (!_rx_buf || _rx_buf_offset == _rx_buf->len) + return -1; + + return reinterpret_cast<char*>(_rx_buf->payload)[_rx_buf_offset]; + } + + void flush() + { + if (!_rx_buf) + return; + + _consume(_rx_buf->len - _rx_buf_offset); + } + + + size_t append(const char* data, size_t size) + { + if (!_tx_buf_head || _tx_buf_head->tot_len < _tx_buf_offset + size) + { + _reserve(_tx_buf_offset + size); + } + if (!_tx_buf_head || _tx_buf_head->tot_len < _tx_buf_offset + size) + { + DEBUGV("failed _reserve"); + return 0; + } + + size_t left_to_copy = size; + while(left_to_copy) + { + // size already used in current pbuf + size_t used_cur = _tx_buf_offset - (_tx_buf_head->tot_len - _tx_buf_cur->tot_len); + size_t free_cur = _tx_buf_cur->len - used_cur; + if (free_cur == 0) + { + _tx_buf_cur = _tx_buf_cur->next; + continue; + } + size_t will_copy = (left_to_copy < free_cur) ? left_to_copy : free_cur; + memcpy(reinterpret_cast<char*>(_tx_buf_cur->payload) + used_cur, data, will_copy); + _tx_buf_offset += will_copy; + left_to_copy -= will_copy; + data += will_copy; + } + return size; + } + + bool send(ip_addr_t* addr = 0, uint16_t port = 0) + { + size_t data_size = _tx_buf_offset; + pbuf* tx_copy = pbuf_alloc(PBUF_TRANSPORT, data_size, PBUF_RAM); + if(!tx_copy){ + DEBUGV("failed pbuf_alloc"); + } + else{ + uint8_t* dst = reinterpret_cast<uint8_t*>(tx_copy->payload); + for (pbuf* p = _tx_buf_head; p; p = p->next) { + size_t will_copy = (data_size < p->len) ? data_size : p->len; + memcpy(dst, p->payload, will_copy); + dst += will_copy; + data_size -= will_copy; + } + } + pbuf_free(_tx_buf_head); + _tx_buf_head = 0; + _tx_buf_cur = 0; + _tx_buf_offset = 0; + if(!tx_copy){ + return false; + } + + + if (!addr) { + addr = &_pcb->remote_ip; + port = _pcb->remote_port; + } +#ifdef LWIP_MAYBE_XCC + uint16_t old_ttl = _pcb->ttl; + if (ip_addr_ismulticast(addr)) { + _pcb->ttl = _mcast_ttl; + } +#endif + err_t err = udp_sendto(_pcb, tx_copy, addr, port); + if (err != ERR_OK) { + DEBUGV(":ust rc=%d\r\n", (int) err); + } +#ifdef LWIP_MAYBE_XCC + _pcb->ttl = old_ttl; +#endif + pbuf_free(tx_copy); + return err == ERR_OK; + } + +private: + + void _reserve(size_t size) + { + const size_t pbuf_unit_size = 128; + if (!_tx_buf_head) + { + _tx_buf_head = pbuf_alloc(PBUF_TRANSPORT, pbuf_unit_size, PBUF_RAM); + if (!_tx_buf_head) + { + return; + } + _tx_buf_cur = _tx_buf_head; + _tx_buf_offset = 0; + } + + size_t cur_size = _tx_buf_head->tot_len; + if (size < cur_size) + return; + + size_t grow_size = size - cur_size; + + while(grow_size) + { + pbuf* pb = pbuf_alloc(PBUF_TRANSPORT, pbuf_unit_size, PBUF_RAM); + if (!pb) + { + return; + } + pbuf_cat(_tx_buf_head, pb); + if (grow_size < pbuf_unit_size) + return; + grow_size -= pbuf_unit_size; + } + } + + void _consume(size_t size) + { + _rx_buf_offset += size; + } + + void _recv(udp_pcb *upcb, pbuf *pb, + const ip_addr_t *addr, u16_t port) + { + (void) upcb; + (void) addr; + (void) port; + if (_rx_buf) + { + // there is some unread data + // chain the new pbuf to the existing one + DEBUGV(":urch %d, %d\r\n", _rx_buf->tot_len, pb->tot_len); + pbuf_cat(_rx_buf, pb); + } + else + { + DEBUGV(":urn %d\r\n", pb->tot_len); + _first_buf_taken = false; + _rx_buf = pb; + _rx_buf_offset = 0; + } + if (_on_rx) { + _on_rx(); + } + } + + +#if LWIP_VERSION_MAJOR == 1 + static void _s_recv(void *arg, + udp_pcb *upcb, pbuf *p, + ip_addr_t *addr, u16_t port) +#else + static void _s_recv(void *arg, + udp_pcb *upcb, pbuf *p, + const ip_addr_t *addr, u16_t port) +#endif + { + reinterpret_cast<UdpContext*>(arg)->_recv(upcb, p, addr, port); + } + +private: + udp_pcb* _pcb; + pbuf* _rx_buf; + bool _first_buf_taken; + size_t _rx_buf_offset; + int _refcnt; + pbuf* _tx_buf_head; + pbuf* _tx_buf_cur; + size_t _tx_buf_offset; + rxhandler_t _on_rx; +#ifdef LWIP_MAYBE_XCC + uint16_t _mcast_ttl; +#endif +}; + + + +#endif//CLIENTCONTEXT_H diff --git a/libraries/ESP8266WiFi/src/include/slist.h b/libraries/ESP8266WiFi/src/include/slist.h new file mode 100644 index 0000000000000000000000000000000000000000..0606f7243164f5107edd07c8074b7df6dc61bb86 --- /dev/null +++ b/libraries/ESP8266WiFi/src/include/slist.h @@ -0,0 +1,38 @@ +#ifndef SLIST_H +#define SLIST_H + +template<typename T> +class SList { +public: + SList() : _next(0) { } + +protected: + + static void _add(T* self) { + T* tmp = _s_first; + _s_first = self; + self->_next = tmp; + } + + static void _remove(T* self) { + if (_s_first == self) { + _s_first = self->_next; + self->_next = 0; + return; + } + + for (T* prev = _s_first; prev->_next; prev = prev->_next) { + if (prev->_next == self) { + prev->_next = self->_next; + self->_next = 0; + return; + } + } + } + + static T* _s_first; + T* _next; +}; + + +#endif //SLIST_H diff --git a/libraries/ESP8266WiFi/src/include/ssl.h b/libraries/ESP8266WiFi/src/include/ssl.h new file mode 100644 index 0000000000000000000000000000000000000000..8879e4cb9a45670c6dac6d974e55272e06d84a81 --- /dev/null +++ b/libraries/ESP8266WiFi/src/include/ssl.h @@ -0,0 +1,583 @@ +/* + * Copyright (c) 2007-2016, Cameron Rich + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the axTLS project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @mainpage axTLS API + * + * @image html axolotl.jpg + * + * The axTLS library has features such as: + * - The TLSv1 SSL client/server protocol + * - No requirement to use any openssl libraries. + * - A choice between AES block (128/256 bit) and RC4 (128 bit) stream ciphers. + * - RSA encryption/decryption with variable sized keys (up to 4096 bits). + * - Certificate chaining and peer authentication. + * - Session resumption, session renegotiation. + * - ASN.1, X.509, PKCS#8, PKCS#12 keys/certificates with DER/PEM encoding. + * - Highly configurable compile time options. + * - Portable across many platforms (written in ANSI C), and has language + * bindings in C, C#, VB.NET, Java, Perl and Lua. + * - Partial openssl API compatibility (via a wrapper). + * - A very small footprint (around 50-60kB for the library in 'server-only' + * mode). + * - No dependencies on sockets - can use serial connections for example. + * - A very simple API - ~ 20 functions/methods. + * + * A list of these functions/methods are described below. + * + * @ref c_api + * + * @ref bigint_api + * + * @ref csharp_api + * + * @ref java_api + */ +#ifndef HEADER_SSL_H +#define HEADER_SSL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* need to predefine before ssl_lib.h gets to it */ +#define SSL_SESSION_ID_SIZE 32 + +#define EXP_FUNC +#define STDCALL +// struct SSL_CTX_; +typedef struct SSL_CTX_ SSL_CTX; +typedef struct SSL_ SSL; +typedef struct SSL_EXTENSIONS_ SSL_EXTENSIONS; + +/* The optional parameters that can be given to the client/server SSL engine */ +#define SSL_CLIENT_AUTHENTICATION 0x00010000 +#define SSL_SERVER_VERIFY_LATER 0x00020000 +#define SSL_NO_DEFAULT_KEY 0x00040000 +#define SSL_DISPLAY_STATES 0x00080000 +#define SSL_DISPLAY_BYTES 0x00100000 +#define SSL_DISPLAY_CERTS 0x00200000 +#define SSL_DISPLAY_RSA 0x00400000 +#define SSL_CONNECT_IN_PARTS 0x00800000 +#define SSL_READ_BLOCKING 0x01000000 + +/* errors that can be generated */ +#define SSL_OK 0 +#define SSL_NOT_OK -1 +#define SSL_ERROR_DEAD -2 +#define SSL_CLOSE_NOTIFY -3 +#define SSL_ERROR_CONN_LOST -256 +#define SSL_ERROR_RECORD_OVERFLOW -257 +#define SSL_ERROR_SOCK_SETUP_FAILURE -258 +#define SSL_ERROR_INVALID_HANDSHAKE -260 +#define SSL_ERROR_INVALID_PROT_MSG -261 +#define SSL_ERROR_INVALID_HMAC -262 +#define SSL_ERROR_INVALID_VERSION -263 +#define SSL_ERROR_UNSUPPORTED_EXTENSION -264 +#define SSL_ERROR_INVALID_SESSION -265 +#define SSL_ERROR_NO_CIPHER -266 +#define SSL_ERROR_INVALID_CERT_HASH_ALG -267 +#define SSL_ERROR_BAD_CERTIFICATE -268 +#define SSL_ERROR_INVALID_KEY -269 +#define SSL_ERROR_FINISHED_INVALID -271 +#define SSL_ERROR_NO_CERT_DEFINED -272 +#define SSL_ERROR_NO_CLIENT_RENOG -273 +#define SSL_ERROR_NOT_SUPPORTED -274 +#define SSL_X509_OFFSET -512 +#define SSL_X509_ERROR(A) (SSL_X509_OFFSET+A) + +#define X509_OK 0 +#define X509_NOT_OK -1 +#define X509_VFY_ERROR_NO_TRUSTED_CERT -2 +#define X509_VFY_ERROR_BAD_SIGNATURE -3 +#define X509_VFY_ERROR_NOT_YET_VALID -4 +#define X509_VFY_ERROR_EXPIRED -5 +#define X509_VFY_ERROR_SELF_SIGNED -6 +#define X509_VFY_ERROR_INVALID_CHAIN -7 +#define X509_VFY_ERROR_UNSUPPORTED_DIGEST -8 +#define X509_INVALID_PRIV_KEY -9 +#define X509_MAX_CERTS -10 +#define X509_VFY_ERROR_BASIC_CONSTRAINT -11 + +/* alert types that are recognized */ +#define SSL_ALERT_TYPE_WARNING 1 +#define SLL_ALERT_TYPE_FATAL 2 + +/* these are all the alerts that are recognized */ +#define SSL_ALERT_CLOSE_NOTIFY 0 +#define SSL_ALERT_UNEXPECTED_MESSAGE 10 +#define SSL_ALERT_BAD_RECORD_MAC 20 +#define SSL_ALERT_RECORD_OVERFLOW 22 +#define SSL_ALERT_HANDSHAKE_FAILURE 40 +#define SSL_ALERT_BAD_CERTIFICATE 42 +#define SSL_ALERT_UNSUPPORTED_CERTIFICATE 43 +#define SSL_ALERT_CERTIFICATE_EXPIRED 45 +#define SSL_ALERT_CERTIFICATE_UNKNOWN 46 +#define SSL_ALERT_ILLEGAL_PARAMETER 47 +#define SSL_ALERT_UNKNOWN_CA 48 +#define SSL_ALERT_DECODE_ERROR 50 +#define SSL_ALERT_DECRYPT_ERROR 51 +#define SSL_ALERT_INVALID_VERSION 70 +#define SSL_ALERT_NO_RENEGOTIATION 100 +#define SSL_ALERT_UNSUPPORTED_EXTENSION 110 + +/* The ciphers that are supported */ +#define SSL_AES128_SHA 0x2f +#define SSL_AES256_SHA 0x35 +#define SSL_AES128_SHA256 0x3c +#define SSL_AES256_SHA256 0x3d + +/* build mode ids' */ +#define SSL_BUILD_SKELETON_MODE 0x01 +#define SSL_BUILD_SERVER_ONLY 0x02 +#define SSL_BUILD_ENABLE_VERIFICATION 0x03 +#define SSL_BUILD_ENABLE_CLIENT 0x04 +#define SSL_BUILD_FULL_MODE 0x05 + +/* offsets to retrieve configuration information */ +#define SSL_BUILD_MODE 0 +#define SSL_MAX_CERT_CFG_OFFSET 1 +#define SSL_MAX_CA_CERT_CFG_OFFSET 2 +#define SSL_HAS_PEM 3 + +/* default session sizes */ +#define SSL_DEFAULT_SVR_SESS 5 +#define SSL_DEFAULT_CLNT_SESS 1 + +/* X.509/X.520 distinguished name types */ +#define SSL_X509_CERT_COMMON_NAME 0 +#define SSL_X509_CERT_ORGANIZATION 1 +#define SSL_X509_CERT_ORGANIZATIONAL_NAME 2 +#define SSL_X509_CA_CERT_COMMON_NAME 3 +#define SSL_X509_CA_CERT_ORGANIZATION 4 +#define SSL_X509_CA_CERT_ORGANIZATIONAL_NAME 5 + +/* SSL object loader types */ +#define SSL_OBJ_X509_CERT 1 +#define SSL_OBJ_X509_CACERT 2 +#define SSL_OBJ_RSA_KEY 3 +#define SSL_OBJ_PKCS8 4 +#define SSL_OBJ_PKCS12 5 + +/** + * @defgroup c_api Standard C API + * @brief The standard interface in C. + * @{ + */ + +/** + * @brief Establish a new client/server context. + * + * This function is called before any client/server SSL connections are made. + * + * Each new connection will use the this context's private key and + * certificate chain. If a different certificate chain is required, then a + * different context needs to be be used. + * + * There are two threading models supported - a single thread with one + * SSL_CTX can support any number of SSL connections - and multiple threads can + * support one SSL_CTX object each (the default). But if a single SSL_CTX + * object uses many SSL objects in individual threads, then the + * CONFIG_SSL_CTX_MUTEXING option needs to be configured. + * + * @param options [in] Any particular options. At present the options + * supported are: + * - SSL_SERVER_VERIFY_LATER (client only): Don't stop a handshake if the server + * authentication fails. The certificate can be authenticated later with a + * call to ssl_verify_cert(). + * - SSL_CLIENT_AUTHENTICATION (server only): Enforce client authentication + * i.e. each handshake will include a "certificate request" message from the + * server. Only available if verification has been enabled. + * - SSL_DISPLAY_BYTES (full mode build only): Display the byte sequences + * during the handshake. + * - SSL_DISPLAY_STATES (full mode build only): Display the state changes + * during the handshake. + * - SSL_DISPLAY_CERTS (full mode build only): Display the certificates that + * are passed during a handshake. + * - SSL_DISPLAY_RSA (full mode build only): Display the RSA key details that + * are passed during a handshake. + * - SSL_CONNECT_IN_PARTS (client only): To use a non-blocking version of + * ssl_client_new(). + * @param num_sessions [in] The number of sessions to be used for session + * caching. If this value is 0, then there is no session caching. This option + * is not used in skeleton mode. + * @return A client/server context. + */ +EXP_FUNC SSL_CTX * STDCALL ssl_ctx_new(uint32_t options, int num_sessions); + +/** + * @brief Remove a client/server context. + * + * Frees any used resources used by this context. Each connection will be + * sent a "Close Notify" alert (if possible). + * @param ssl_ctx [in] The client/server context. + */ +EXP_FUNC void STDCALL ssl_ctx_free(SSL_CTX *ssl_ctx); + +/** + * @brief Allocates new SSL extensions structure and returns pointer to it + * + * @return ssl_ext Pointer to SSL_EXTENSIONS structure + * + */ +EXP_FUNC SSL_EXTENSIONS * STDCALL ssl_ext_new(); + +/** + * @brief Set the host name for SNI extension + * @param ssl_ext pointer returned by ssl_ext_new + * @param host_name pointer to a zero-terminated string containing host name + */ +EXP_FUNC void STDCALL ssl_ext_set_host_name(SSL_EXTENSIONS * ext, const char* host_name); + +/** + * @brief Set the maximum fragment size for the fragment size negotiation extension + * @param ssl_ext pointer returned by ssl_ext_new + * @param fragment_size fragment size, allowed values: 2^9, 2^10 ... 2^14 + */ +EXP_FUNC void STDCALL ssl_ext_set_max_fragment_size(SSL_EXTENSIONS * ext, unsigned fragment_size); + +/** + * @brief Frees SSL extensions structure + * + * @param ssl_ext [in] Pointer to SSL_EXTENSION structure + * + */ +EXP_FUNC void STDCALL ssl_ext_free(SSL_EXTENSIONS *ssl_ext); + +/** + * @brief (server only) Establish a new SSL connection to an SSL client. + * + * It is up to the application to establish the logical connection (whether it + * is a socket, serial connection etc). + * @param ssl_ctx [in] The server context. + * @param client_fd [in] The client's file descriptor. + * @return An SSL object reference. + */ +EXP_FUNC SSL * STDCALL ssl_server_new(SSL_CTX *ssl_ctx, int client_fd); + +/** + * @brief (client only) Establish a new SSL connection to an SSL server. + * + * It is up to the application to establish the initial logical connection + * (whether it is a socket, serial connection etc). + * + * This is a normally a blocking call - it will finish when the handshake is + * complete (or has failed). To use in non-blocking mode, set + * SSL_CONNECT_IN_PARTS in ssl_ctx_new(). + * @param ssl_ctx [in] The client context. + * @param client_fd [in] The client's file descriptor. + * @param session_id [in] A 32 byte session id for session resumption. This + * can be null if no session resumption is being used or required. This option + * is not used in skeleton mode. + * @param sess_id_size The size of the session id (max 32) + * @param ssl_ext pointer to a structure with the activated SSL extensions and their values + * @return An SSL object reference. Use ssl_handshake_status() to check + * if a handshake succeeded. + */ +EXP_FUNC SSL * STDCALL ssl_client_new(SSL_CTX *ssl_ctx, int client_fd, const uint8_t *session_id, uint8_t sess_id_size, SSL_EXTENSIONS* ssl_ext); + +/** + * @brief Free any used resources on this connection. + + * A "Close Notify" message is sent on this connection (if possible). It is up + * to the application to close the socket or file descriptor. + * @param ssl [in] The ssl object reference. + */ +EXP_FUNC void STDCALL ssl_free(SSL *ssl); + +/** + * @brief Read the SSL data stream. + * If the socket is non-blocking and data is blocked then SSO_OK will be + * returned. + * @param ssl [in] An SSL object reference. + * @param in_data [out] If the read was successful, a pointer to the read + * buffer will be here. Do NOT ever free this memory as this buffer is used in + * sucessive calls. If the call was unsuccessful, this value will be null. + * @return The number of decrypted bytes: + * - if > 0, then the handshaking is complete and we are returning the number + * of decrypted bytes. + * - SSL_OK if the handshaking stage is successful (but not yet complete). + * - < 0 if an error. + * @see ssl.h for the error code list. + * @note Use in_data before doing any successive ssl calls. + */ +EXP_FUNC int STDCALL ssl_read(SSL *ssl, uint8_t **in_data); + +/** + * @brief Write to the SSL data stream. + * if the socket is non-blocking and data is blocked then a check is made + * to ensure that all data is sent (i.e. blocked mode is forced). + * @param ssl [in] An SSL obect reference. + * @param out_data [in] The data to be written + * @param out_len [in] The number of bytes to be written. + * @return The number of bytes sent, or if < 0 if an error. + * @see ssl.h for the error code list. + */ +EXP_FUNC int STDCALL ssl_write(SSL *ssl, const uint8_t *out_data, int out_len); + +/** + * @brief Calculate the size of the encrypted data from what you are about to send + * @param ssl [in] An SSL obect reference. + * @param out_len [in] The number of bytes to be written. + * @return The number of bytes that will be sent, or if < 0 if an error. + * @see ssl.h for the error code list. + */ +EXP_FUNC int STDCALL ssl_calculate_write_length(SSL *ssl, int out_len); + +/** + * @brief Find an ssl object based on a file descriptor. + * + * Goes through the list of SSL objects maintained in a client/server context + * to look for a file descriptor match. + * @param ssl_ctx [in] The client/server context. + * @param client_fd [in] The file descriptor. + * @return A reference to the SSL object. Returns null if the object could not + * be found. + */ +EXP_FUNC SSL * STDCALL ssl_find(SSL_CTX *ssl_ctx, int client_fd); + +/** + * @brief Get the session id for a handshake. + * + * This will be a 32 byte sequence and is available after the first + * handshaking messages are sent. + * @param ssl [in] An SSL object reference. + * @return The session id as a 32 byte sequence. + * @note A SSLv23 handshake may have only 16 valid bytes. + */ +EXP_FUNC const uint8_t * STDCALL ssl_get_session_id(const SSL *ssl); + +/** + * @brief Get the session id size for a handshake. + * + * This will normally be 32 but could be 0 (no session id) or something else. + * @param ssl [in] An SSL object reference. + * @return The size of the session id. + */ +EXP_FUNC uint8_t STDCALL ssl_get_session_id_size(const SSL *ssl); + +/** + * @brief Return the cipher id (in the SSL form). + * @param ssl [in] An SSL object reference. + * @return The cipher id. This will be one of the following: + * - SSL_AES128_SHA (0x2f) + * - SSL_AES256_SHA (0x35) + * - SSL_RC4_128_SHA (0x05) + * - SSL_RC4_128_MD5 (0x04) + */ +EXP_FUNC uint8_t STDCALL ssl_get_cipher_id(const SSL *ssl); + +/** + * @brief Return the status of the handshake. + * @param ssl [in] An SSL object reference. + * @return SSL_OK if the handshake is complete and ok. + * @see ssl.h for the error code list. + */ +EXP_FUNC int STDCALL ssl_handshake_status(const SSL *ssl); + +/** + * @brief Retrieve various parameters about the axTLS engine. + * @param offset [in] The configuration offset. It will be one of the following: + * - SSL_BUILD_MODE The build mode. This will be one of the following: + * - SSL_BUILD_SERVER_ONLY (basic server mode) + * - SSL_BUILD_ENABLE_VERIFICATION (server can do client authentication) + * - SSL_BUILD_ENABLE_CLIENT (client/server capabilties) + * - SSL_BUILD_FULL_MODE (client/server with diagnostics) + * - SSL_BUILD_SKELETON_MODE (skeleton mode) + * - SSL_MAX_CERT_CFG_OFFSET The maximum number of certificates allowed. + * - SSL_MAX_CA_CERT_CFG_OFFSET The maximum number of CA certificates allowed. + * - SSL_HAS_PEM 1 if supported + * @return The value of the requested parameter. + */ +EXP_FUNC int STDCALL ssl_get_config(int offset); + +/** + * @brief Display why the handshake failed. + * + * This call is only useful in a 'full mode' build. The output is to stdout. + * @param error_code [in] An error code. + * @see ssl.h for the error code list. + */ +EXP_FUNC void STDCALL ssl_display_error(int error_code); + +/** + * @brief Authenticate a received certificate. + * + * This call is usually made by a client after a handshake is complete and the + * context is in SSL_SERVER_VERIFY_LATER mode. + * @param ssl [in] An SSL object reference. + * @return SSL_OK if the certificate is verified. + */ +EXP_FUNC int STDCALL ssl_verify_cert(const SSL *ssl); + +/** + * @brief Check if certificate fingerprint (SHA1) matches the one given. + * + * @param ssl [in] An SSL object reference. + * @param fp [in] SHA1 fingerprint to match against + * @return SSL_OK if the certificate is verified. + */ +EXP_FUNC int STDCALL ssl_match_fingerprint(const SSL *ssl, const uint8_t* fp); + +/** + * @brief Check if SHA256 hash of Subject Public Key Info matches the one given. + * + * @param ssl [in] An SSL object reference. + * @param fp [in] SHA256 hash to match against + * @return SSL_OK if the certificate is verified. + */ +EXP_FUNC int STDCALL ssl_match_spki_sha256(const SSL *ssl, const uint8_t* hash); + +/** + * @brief Retrieve an X.509 distinguished name component. + * + * When a handshake is complete and a certificate has been exchanged, then the + * details of the remote certificate can be retrieved. + * + * This will usually be used by a client to check that the server's common + * name matches the URL. + * + * @param ssl [in] An SSL object reference. + * @param component [in] one of: + * - SSL_X509_CERT_COMMON_NAME + * - SSL_X509_CERT_ORGANIZATION + * - SSL_X509_CERT_ORGANIZATIONAL_NAME + * - SSL_X509_CA_CERT_COMMON_NAME + * - SSL_X509_CA_CERT_ORGANIZATION + * - SSL_X509_CA_CERT_ORGANIZATIONAL_NAME + * @return The appropriate string (or null if not defined) + * @note Verification build mode must be enabled. + */ +EXP_FUNC const char * STDCALL ssl_get_cert_dn(const SSL *ssl, int component); + +/** + * @brief Retrieve a Subject Alternative DNSName + * + * When a handshake is complete and a certificate has been exchanged, then the + * details of the remote certificate can be retrieved. + * + * This will usually be used by a client to check that the server's DNS + * name matches the URL. + * + * @param ssl [in] An SSL object reference. + * @param dnsindex [in] The index of the DNS name to retrieve. + * @return The appropriate string (or null if not defined) + * @note Verification build mode must be enabled. + */ +EXP_FUNC const char * STDCALL ssl_get_cert_subject_alt_dnsname(const SSL *ssl, int dnsindex); + +/** + * @brief Force the client to perform its handshake again. + * + * For a client this involves sending another "client hello" message. + * For the server is means sending a "hello request" message. + * + * This is a blocking call on the client (until the handshake completes). + * + * @param ssl [in] An SSL object reference. + * @return SSL_OK if renegotiation instantiation was ok + */ +EXP_FUNC int STDCALL ssl_renegotiate(SSL *ssl); + +/** + * @brief Process a file that is in binary DER or ASCII PEM format. + * + * These are temporary objects that are used to load private keys, + * certificates etc into memory. + * @param ssl_ctx [in] The client/server context. + * @param obj_type [in] The format of the file. Can be one of: + * - SSL_OBJ_X509_CERT (no password required) + * - SSL_OBJ_X509_CACERT (no password required) + * - SSL_OBJ_RSA_KEY (AES128/AES256 PEM encryption supported) + * - SSL_OBJ_PKCS8 (RC4-128 encrypted data supported) + * - SSL_OBJ_PKCS12 (RC4-128 encrypted data supported) + * + * PEM files are automatically detected (if supported). The object type is + * also detected, and so is not relevant for these types of files. + * @param filename [in] The location of a file in DER/PEM format. + * @param password [in] The password used. Can be null if not required. + * @return SSL_OK if all ok + * @note Not available in skeleton build mode. + */ +EXP_FUNC int STDCALL ssl_obj_load(SSL_CTX *ssl_ctx, int obj_type, const char *filename, const char *password); + +/** + * @brief Process binary data. + * + * These are temporary objects that are used to load private keys, + * certificates etc into memory. + * @param ssl_ctx [in] The client/server context. + * @param obj_type [in] The format of the memory data. + * @param data [in] The binary data to be loaded. + * @param len [in] The amount of data to be loaded. + * @param password [in] The password used. Can be null if not required. + * @return SSL_OK if all ok + * @see ssl_obj_load for more details on obj_type. + */ +EXP_FUNC int STDCALL ssl_obj_memory_load(SSL_CTX *ssl_ctx, int obj_type, const uint8_t *data, int len, const char *password); + +#ifdef CONFIG_SSL_GENERATE_X509_CERT +/** + * @brief Create an X.509 certificate. + * + * This certificate is a self-signed v1 cert with a fixed start/stop validity + * times. It is signed with an internal private key in ssl_ctx. + * + * @param ssl_ctx [in] The client/server context. + * @param options [in] Not used yet. + * @param dn [in] An array of distinguished name strings. The array is defined + * by: + * - SSL_X509_CERT_COMMON_NAME (0) + * - If SSL_X509_CERT_COMMON_NAME is empty or not defined, then the + * hostname will be used. + * - SSL_X509_CERT_ORGANIZATION (1) + * - If SSL_X509_CERT_ORGANIZATION is empty or not defined, then $USERNAME + * will be used. + * - SSL_X509_CERT_ORGANIZATIONAL_NAME (2) + * - SSL_X509_CERT_ORGANIZATIONAL_NAME is optional. + * @param cert_data [out] The certificate as a sequence of bytes. + * @return < 0 if an error, or the size of the certificate in bytes. + * @note cert_data must be freed when there is no more need for it. + */ +EXP_FUNC int STDCALL ssl_x509_create(SSL_CTX *ssl_ctx, uint32_t options, const char * dn[], uint8_t **cert_data); +#endif + +/** + * @brief Return the axTLS library version as a string. + */ +EXP_FUNC const char * STDCALL ssl_version(void); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libraries/ESP8266WiFi/src/include/wl_definitions.h b/libraries/ESP8266WiFi/src/include/wl_definitions.h new file mode 100644 index 0000000000000000000000000000000000000000..5c8c536602aa37d1593a1c8a1ffd6c406f3446c7 --- /dev/null +++ b/libraries/ESP8266WiFi/src/include/wl_definitions.h @@ -0,0 +1,87 @@ +/* + wl_definitions.h - Library for Arduino Wifi shield. + Copyright (c) 2011-2014 Arduino. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +/* + * wl_definitions.h + * + * Created on: Mar 6, 2011 + * Author: dlafauci + */ + +#ifndef WL_DEFINITIONS_H_ +#define WL_DEFINITIONS_H_ + +// Maximum size of a SSID +#define WL_SSID_MAX_LENGTH 32 +// Length of passphrase. Valid lengths are 8-63. +#define WL_WPA_KEY_MAX_LENGTH 63 +// Length of key in bytes. Valid values are 5 and 13. +#define WL_WEP_KEY_MAX_LENGTH 13 +// Size of a MAC-address or BSSID +#define WL_MAC_ADDR_LENGTH 6 +// Size of a MAC-address or BSSID +#define WL_IPV4_LENGTH 4 +// Maximum size of a SSID list +#define WL_NETWORKS_LIST_MAXNUM 10 +// Maxmium number of socket +#define MAX_SOCK_NUM 4 +// Socket not available constant +#define SOCK_NOT_AVAIL 255 +// Default state value for Wifi state field +#define NA_STATE -1 +//Maximum number of attempts to establish wifi connection +#define WL_MAX_ATTEMPT_CONNECTION 10 + +typedef enum { + WL_NO_SHIELD = 255, // for compatibility with WiFi Shield library + WL_IDLE_STATUS = 0, + WL_NO_SSID_AVAIL = 1, + WL_SCAN_COMPLETED = 2, + WL_CONNECTED = 3, + WL_CONNECT_FAILED = 4, + WL_CONNECTION_LOST = 5, + WL_DISCONNECTED = 6 +} wl_status_t; + +/* Encryption modes */ +enum wl_enc_type { /* Values map to 802.11 encryption suites... */ + ENC_TYPE_WEP = 5, + ENC_TYPE_TKIP = 2, + ENC_TYPE_CCMP = 4, + /* ... except these two, 7 and 8 are reserved in 802.11-2007 */ + ENC_TYPE_NONE = 7, + ENC_TYPE_AUTO = 8 +}; + +#if !defined(LWIP_INTERNAL) && !defined(__LWIP_TCP_H__) +enum wl_tcp_state { + CLOSED = 0, + LISTEN = 1, + SYN_SENT = 2, + SYN_RCVD = 3, + ESTABLISHED = 4, + FIN_WAIT_1 = 5, + FIN_WAIT_2 = 6, + CLOSE_WAIT = 7, + CLOSING = 8, + LAST_ACK = 9, + TIME_WAIT = 10 +}; +#endif + +#endif /* WL_DEFINITIONS_H_ */ diff --git a/libraries/I2Cdev/I2Cdev.cpp b/libraries/I2Cdev/I2Cdev.cpp new file mode 100644 index 0000000000000000000000000000000000000000..db173b55a5e055564e68020ec895bf6a38ac3287 --- /dev/null +++ b/libraries/I2Cdev/I2Cdev.cpp @@ -0,0 +1,1457 @@ +// I2Cdev library collection - Main I2C device class +// Abstracts bit and byte I2C R/W functions into a convenient class +// 2013-06-05 by Jeff Rowberg <jeff@rowberg.net> +// +// Changelog: +// 2013-05-06 - add Francesco Ferrara's Fastwire v0.24 implementation with small modifications +// 2013-05-05 - fix issue with writing bit values to words (Sasquatch/Farzanegan) +// 2012-06-09 - fix major issue with reading > 32 bytes at a time with Arduino Wire +// - add compiler warnings when using outdated or IDE or limited I2Cdev implementation +// 2011-11-01 - fix write*Bits mask calculation (thanks sasquatch @ Arduino forums) +// 2011-10-03 - added automatic Arduino version detection for ease of use +// 2011-10-02 - added Gene Knight's NBWire TwoWire class implementation with small modifications +// 2011-08-31 - added support for Arduino 1.0 Wire library (methods are different from 0.x) +// 2011-08-03 - added optional timeout parameter to read* methods to easily change from default +// 2011-08-02 - added support for 16-bit registers +// - fixed incorrect Doxygen comments on some methods +// - added timeout value for read operations (thanks mem @ Arduino forums) +// 2011-07-30 - changed read/write function structures to return success or byte counts +// - made all methods static for multi-device memory savings +// 2011-07-28 - initial release + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2013 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +#include "I2Cdev.h" + +#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + + #ifdef I2CDEV_IMPLEMENTATION_WARNINGS + #if ARDUINO < 100 + #warning Using outdated Arduino IDE with Wire library is functionally limiting. + #warning Arduino IDE v1.6.5+ with I2Cdev Fastwire implementation is recommended. + #warning This I2Cdev implementation does not support: + #warning - Repeated starts conditions + #warning - Timeout detection (some Wire requests block forever) + #elif ARDUINO == 100 + #warning Using outdated Arduino IDE with Wire library is functionally limiting. + #warning Arduino IDE v1.6.5+ with I2Cdev Fastwire implementation is recommended. + #warning This I2Cdev implementation does not support: + #warning - Repeated starts conditions + #warning - Timeout detection (some Wire requests block forever) + #elif ARDUINO > 100 + /*#warning Using current Arduino IDE with Wire library is functionally limiting. + #warning Arduino IDE v1.6.5+ with I2CDEV_BUILTIN_FASTWIRE implementation is recommended. + #warning This I2Cdev implementation does not support: + #warning - Timeout detection (some Wire requests block forever)*/ + #endif + #endif + +#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE + + //#error The I2CDEV_BUILTIN_FASTWIRE implementation is known to be broken right now. Patience, Iago! + +#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE + + #ifdef I2CDEV_IMPLEMENTATION_WARNINGS + #warning Using I2CDEV_BUILTIN_NBWIRE implementation may adversely affect interrupt detection. + #warning This I2Cdev implementation does not support: + #warning - Repeated starts conditions + #endif + + // NBWire implementation based heavily on code by Gene Knight <Gene@Telobot.com> + // Originally posted on the Arduino forum at http://arduino.cc/forum/index.php/topic,70705.0.html + // Originally offered to the i2cdevlib project at http://arduino.cc/forum/index.php/topic,68210.30.html + TwoWire Wire; + +#endif + +/** Default constructor. + */ +I2Cdev::I2Cdev() { +} + +/** Read a single bit from an 8-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to read from + * @param bitNum Bit position to read (0-7) + * @param data Container for single bit value + * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) + * @return Status of read operation (true = success) + */ +int8_t I2Cdev::readBit(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint8_t *data, uint16_t timeout) { + uint8_t b; + uint8_t count = readByte(devAddr, regAddr, &b, timeout); + *data = b & (1 << bitNum); + return count; +} + +/** Read a single bit from a 16-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to read from + * @param bitNum Bit position to read (0-15) + * @param data Container for single bit value + * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) + * @return Status of read operation (true = success) + */ +int8_t I2Cdev::readBitW(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint16_t *data, uint16_t timeout) { + uint16_t b; + uint8_t count = readWord(devAddr, regAddr, &b, timeout); + *data = b & (1 << bitNum); + return count; +} + +/** Read multiple bits from an 8-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to read from + * @param bitStart First bit position to read (0-7) + * @param length Number of bits to read (not more than 8) + * @param data Container for right-aligned value (i.e. '101' read from any bitStart position will equal 0x05) + * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) + * @return Status of read operation (true = success) + */ +int8_t I2Cdev::readBits(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t *data, uint16_t timeout) { + // 01101001 read byte + // 76543210 bit numbers + // xxx args: bitStart=4, length=3 + // 010 masked + // -> 010 shifted + uint8_t count, b; + if ((count = readByte(devAddr, regAddr, &b, timeout)) != 0) { + uint8_t mask = ((1 << length) - 1) << (bitStart - length + 1); + b &= mask; + b >>= (bitStart - length + 1); + *data = b; + } + return count; +} + +/** Read multiple bits from a 16-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to read from + * @param bitStart First bit position to read (0-15) + * @param length Number of bits to read (not more than 16) + * @param data Container for right-aligned value (i.e. '101' read from any bitStart position will equal 0x05) + * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) + * @return Status of read operation (1 = success, 0 = failure, -1 = timeout) + */ +int8_t I2Cdev::readBitsW(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t *data, uint16_t timeout) { + // 1101011001101001 read byte + // fedcba9876543210 bit numbers + // xxx args: bitStart=12, length=3 + // 010 masked + // -> 010 shifted + uint8_t count; + uint16_t w; + if ((count = readWord(devAddr, regAddr, &w, timeout)) != 0) { + uint16_t mask = ((1 << length) - 1) << (bitStart - length + 1); + w &= mask; + w >>= (bitStart - length + 1); + *data = w; + } + return count; +} + +/** Read single byte from an 8-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to read from + * @param data Container for byte value read from device + * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) + * @return Status of read operation (true = success) + */ +int8_t I2Cdev::readByte(uint8_t devAddr, uint8_t regAddr, uint8_t *data, uint16_t timeout) { + return readBytes(devAddr, regAddr, 1, data, timeout); +} + +/** Read single word from a 16-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to read from + * @param data Container for word value read from device + * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) + * @return Status of read operation (true = success) + */ +int8_t I2Cdev::readWord(uint8_t devAddr, uint8_t regAddr, uint16_t *data, uint16_t timeout) { + return readWords(devAddr, regAddr, 1, data, timeout); +} + +/** Read multiple bytes from an 8-bit device register. + * @param devAddr I2C slave device address + * @param regAddr First register regAddr to read from + * @param length Number of bytes to read + * @param data Buffer to store read data in + * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) + * @return Number of bytes read (-1 indicates failure) + */ +int8_t I2Cdev::readBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t *data, uint16_t timeout) { + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print("I2C (0x"); + Serial.print(devAddr, HEX); + Serial.print(") reading "); + Serial.print(length, DEC); + Serial.print(" bytes from 0x"); + Serial.print(regAddr, HEX); + Serial.print("..."); + #endif + + int8_t count = 0; + uint32_t t1 = millis(); + + #if (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE) + + #if (ARDUINO < 100) + // Arduino v00xx (before v1.0), Wire library + + // I2C/TWI subsystem uses internal buffer that breaks with large data requests + // so if user requests more than BUFFER_LENGTH bytes, we have to do it in + // smaller chunks instead of all at once + for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) { + Wire.beginTransmission(devAddr); + Wire.send(regAddr); + Wire.endTransmission(); + Wire.beginTransmission(devAddr); + Wire.requestFrom(devAddr, (uint8_t)min(length - k, BUFFER_LENGTH)); + + for (; Wire.available() && (timeout == 0 || millis() - t1 < timeout); count++) { + data[count] = Wire.receive(); + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(data[count], HEX); + if (count + 1 < length) Serial.print(" "); + #endif + } + + Wire.endTransmission(); + } + #elif (ARDUINO == 100) + // Arduino v1.0.0, Wire library + // Adds standardized write() and read() stream methods instead of send() and receive() + + // I2C/TWI subsystem uses internal buffer that breaks with large data requests + // so if user requests more than BUFFER_LENGTH bytes, we have to do it in + // smaller chunks instead of all at once + for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) { + Wire.beginTransmission(devAddr); + Wire.write(regAddr); + Wire.endTransmission(); + Wire.beginTransmission(devAddr); + Wire.requestFrom(devAddr, (uint8_t)min(length - k, BUFFER_LENGTH)); + + for (; Wire.available() && (timeout == 0 || millis() - t1 < timeout); count++) { + data[count] = Wire.read(); + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(data[count], HEX); + if (count + 1 < length) Serial.print(" "); + #endif + } + + Wire.endTransmission(); + } + #elif (ARDUINO > 100) + // Arduino v1.0.1+, Wire library + // Adds official support for repeated start condition, yay! + + // I2C/TWI subsystem uses internal buffer that breaks with large data requests + // so if user requests more than BUFFER_LENGTH bytes, we have to do it in + // smaller chunks instead of all at once + for (uint8_t k = 0; k < length; k += min(length, BUFFER_LENGTH)) { + Wire.beginTransmission(devAddr); + Wire.write(regAddr); + Wire.endTransmission(); + Wire.beginTransmission(devAddr); + Wire.requestFrom(devAddr, (uint8_t)min(length - k, BUFFER_LENGTH)); + + for (; Wire.available() && (timeout == 0 || millis() - t1 < timeout); count++) { + data[count] = Wire.read(); + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(data[count], HEX); + if (count + 1 < length) Serial.print(" "); + #endif + } + } + #endif + + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE) + + // Fastwire library + // no loop required for fastwire + uint8_t status = Fastwire::readBuf(devAddr << 1, regAddr, data, length); + if (status == 0) { + count = length; // success + } else { + count = -1; // error + } + + #endif + + // check for timeout + if (timeout > 0 && millis() - t1 >= timeout && count < length) count = -1; // timeout + + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(". Done ("); + Serial.print(count, DEC); + Serial.println(" read)."); + #endif + + return count; +} + +/** Read multiple words from a 16-bit device register. + * @param devAddr I2C slave device address + * @param regAddr First register regAddr to read from + * @param length Number of words to read + * @param data Buffer to store read data in + * @param timeout Optional read timeout in milliseconds (0 to disable, leave off to use default class value in I2Cdev::readTimeout) + * @return Number of words read (-1 indicates failure) + */ +int8_t I2Cdev::readWords(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint16_t *data, uint16_t timeout) { + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print("I2C (0x"); + Serial.print(devAddr, HEX); + Serial.print(") reading "); + Serial.print(length, DEC); + Serial.print(" words from 0x"); + Serial.print(regAddr, HEX); + Serial.print("..."); + #endif + + int8_t count = 0; + uint32_t t1 = millis(); + + #if (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE) + + #if (ARDUINO < 100) + // Arduino v00xx (before v1.0), Wire library + + // I2C/TWI subsystem uses internal buffer that breaks with large data requests + // so if user requests more than BUFFER_LENGTH bytes, we have to do it in + // smaller chunks instead of all at once + for (uint8_t k = 0; k < length * 2; k += min(length * 2, BUFFER_LENGTH)) { + Wire.beginTransmission(devAddr); + Wire.send(regAddr); + Wire.endTransmission(); + Wire.beginTransmission(devAddr); + Wire.requestFrom(devAddr, (uint8_t)(length * 2)); // length=words, this wants bytes + + bool msb = true; // starts with MSB, then LSB + for (; Wire.available() && count < length && (timeout == 0 || millis() - t1 < timeout);) { + if (msb) { + // first byte is bits 15-8 (MSb=15) + data[count] = Wire.receive() << 8; + } else { + // second byte is bits 7-0 (LSb=0) + data[count] |= Wire.receive(); + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(data[count], HEX); + if (count + 1 < length) Serial.print(" "); + #endif + count++; + } + msb = !msb; + } + + Wire.endTransmission(); + } + #elif (ARDUINO == 100) + // Arduino v1.0.0, Wire library + // Adds standardized write() and read() stream methods instead of send() and receive() + + // I2C/TWI subsystem uses internal buffer that breaks with large data requests + // so if user requests more than BUFFER_LENGTH bytes, we have to do it in + // smaller chunks instead of all at once + for (uint8_t k = 0; k < length * 2; k += min(length * 2, BUFFER_LENGTH)) { + Wire.beginTransmission(devAddr); + Wire.write(regAddr); + Wire.endTransmission(); + Wire.beginTransmission(devAddr); + Wire.requestFrom(devAddr, (uint8_t)(length * 2)); // length=words, this wants bytes + + bool msb = true; // starts with MSB, then LSB + for (; Wire.available() && count < length && (timeout == 0 || millis() - t1 < timeout);) { + if (msb) { + // first byte is bits 15-8 (MSb=15) + data[count] = Wire.read() << 8; + } else { + // second byte is bits 7-0 (LSb=0) + data[count] |= Wire.read(); + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(data[count], HEX); + if (count + 1 < length) Serial.print(" "); + #endif + count++; + } + msb = !msb; + } + + Wire.endTransmission(); + } + #elif (ARDUINO > 100) + // Arduino v1.0.1+, Wire library + // Adds official support for repeated start condition, yay! + + // I2C/TWI subsystem uses internal buffer that breaks with large data requests + // so if user requests more than BUFFER_LENGTH bytes, we have to do it in + // smaller chunks instead of all at once + for (uint8_t k = 0; k < length * 2; k += min(length * 2, BUFFER_LENGTH)) { + Wire.beginTransmission(devAddr); + Wire.write(regAddr); + Wire.endTransmission(); + Wire.beginTransmission(devAddr); + Wire.requestFrom(devAddr, (uint8_t)(length * 2)); // length=words, this wants bytes + + bool msb = true; // starts with MSB, then LSB + for (; Wire.available() && count < length && (timeout == 0 || millis() - t1 < timeout);) { + if (msb) { + // first byte is bits 15-8 (MSb=15) + data[count] = Wire.read() << 8; + } else { + // second byte is bits 7-0 (LSb=0) + data[count] |= Wire.read(); + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(data[count], HEX); + if (count + 1 < length) Serial.print(" "); + #endif + count++; + } + msb = !msb; + } + + Wire.endTransmission(); + } + #endif + + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE) + + // Fastwire library + // no loop required for fastwire + uint16_t intermediate[(uint8_t)length]; + uint8_t status = Fastwire::readBuf(devAddr << 1, regAddr, (uint8_t *)intermediate, (uint8_t)(length * 2)); + if (status == 0) { + count = length; // success + for (uint8_t i = 0; i < length; i++) { + data[i] = (intermediate[2*i] << 8) | intermediate[2*i + 1]; + } + } else { + count = -1; // error + } + + #endif + + if (timeout > 0 && millis() - t1 >= timeout && count < length) count = -1; // timeout + + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(". Done ("); + Serial.print(count, DEC); + Serial.println(" read)."); + #endif + + return count; +} + +/** write a single bit in an 8-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to write to + * @param bitNum Bit position to write (0-7) + * @param value New bit value to write + * @return Status of operation (true = success) + */ +bool I2Cdev::writeBit(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint8_t data) { + uint8_t b; + readByte(devAddr, regAddr, &b); + b = (data != 0) ? (b | (1 << bitNum)) : (b & ~(1 << bitNum)); + return writeByte(devAddr, regAddr, b); +} + +/** write a single bit in a 16-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to write to + * @param bitNum Bit position to write (0-15) + * @param value New bit value to write + * @return Status of operation (true = success) + */ +bool I2Cdev::writeBitW(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint16_t data) { + uint16_t w; + readWord(devAddr, regAddr, &w); + w = (data != 0) ? (w | (1 << bitNum)) : (w & ~(1 << bitNum)); + return writeWord(devAddr, regAddr, w); +} + +/** Write multiple bits in an 8-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to write to + * @param bitStart First bit position to write (0-7) + * @param length Number of bits to write (not more than 8) + * @param data Right-aligned value to write + * @return Status of operation (true = success) + */ +bool I2Cdev::writeBits(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t data) { + // 010 value to write + // 76543210 bit numbers + // xxx args: bitStart=4, length=3 + // 00011100 mask byte + // 10101111 original value (sample) + // 10100011 original & ~mask + // 10101011 masked | value + uint8_t b; + if (readByte(devAddr, regAddr, &b) != 0) { + uint8_t mask = ((1 << length) - 1) << (bitStart - length + 1); + data <<= (bitStart - length + 1); // shift data into correct position + data &= mask; // zero all non-important bits in data + b &= ~(mask); // zero all important bits in existing byte + b |= data; // combine data with existing byte + return writeByte(devAddr, regAddr, b); + } else { + return false; + } +} + +/** Write multiple bits in a 16-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register regAddr to write to + * @param bitStart First bit position to write (0-15) + * @param length Number of bits to write (not more than 16) + * @param data Right-aligned value to write + * @return Status of operation (true = success) + */ +bool I2Cdev::writeBitsW(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t data) { + // 010 value to write + // fedcba9876543210 bit numbers + // xxx args: bitStart=12, length=3 + // 0001110000000000 mask word + // 1010111110010110 original value (sample) + // 1010001110010110 original & ~mask + // 1010101110010110 masked | value + uint16_t w; + if (readWord(devAddr, regAddr, &w) != 0) { + uint16_t mask = ((1 << length) - 1) << (bitStart - length + 1); + data <<= (bitStart - length + 1); // shift data into correct position + data &= mask; // zero all non-important bits in data + w &= ~(mask); // zero all important bits in existing word + w |= data; // combine data with existing word + return writeWord(devAddr, regAddr, w); + } else { + return false; + } +} + +/** Write single byte to an 8-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register address to write to + * @param data New byte value to write + * @return Status of operation (true = success) + */ +bool I2Cdev::writeByte(uint8_t devAddr, uint8_t regAddr, uint8_t data) { + return writeBytes(devAddr, regAddr, 1, &data); +} + +/** Write single word to a 16-bit device register. + * @param devAddr I2C slave device address + * @param regAddr Register address to write to + * @param data New word value to write + * @return Status of operation (true = success) + */ +bool I2Cdev::writeWord(uint8_t devAddr, uint8_t regAddr, uint16_t data) { + return writeWords(devAddr, regAddr, 1, &data); +} + +/** Write multiple bytes to an 8-bit device register. + * @param devAddr I2C slave device address + * @param regAddr First register address to write to + * @param length Number of bytes to write + * @param data Buffer to copy new data from + * @return Status of operation (true = success) + */ +bool I2Cdev::writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t* data) { + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print("I2C (0x"); + Serial.print(devAddr, HEX); + Serial.print(") writing "); + Serial.print(length, DEC); + Serial.print(" bytes to 0x"); + Serial.print(regAddr, HEX); + Serial.print("..."); + #endif + uint8_t status = 0; + #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE) + Wire.beginTransmission(devAddr); + Wire.send((uint8_t) regAddr); // send address + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100) + Wire.beginTransmission(devAddr); + Wire.write((uint8_t) regAddr); // send address + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE) + Fastwire::beginTransmission(devAddr); + Fastwire::write(regAddr); + #endif + for (uint8_t i = 0; i < length; i++) { + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(data[i], HEX); + if (i + 1 < length) Serial.print(" "); + #endif + #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE) + Wire.send((uint8_t) data[i]); + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100) + Wire.write((uint8_t) data[i]); + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE) + Fastwire::write((uint8_t) data[i]); + #endif + } + #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE) + Wire.endTransmission(); + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100) + status = Wire.endTransmission(); + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE) + Fastwire::stop(); + //status = Fastwire::endTransmission(); + #endif + #ifdef I2CDEV_SERIAL_DEBUG + Serial.println(". Done."); + #endif + return status == 0; +} + +/** Write multiple words to a 16-bit device register. + * @param devAddr I2C slave device address + * @param regAddr First register address to write to + * @param length Number of words to write + * @param data Buffer to copy new data from + * @return Status of operation (true = success) + */ +bool I2Cdev::writeWords(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint16_t* data) { + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print("I2C (0x"); + Serial.print(devAddr, HEX); + Serial.print(") writing "); + Serial.print(length, DEC); + Serial.print(" words to 0x"); + Serial.print(regAddr, HEX); + Serial.print("..."); + #endif + uint8_t status = 0; + #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE) + Wire.beginTransmission(devAddr); + Wire.send(regAddr); // send address + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100) + Wire.beginTransmission(devAddr); + Wire.write(regAddr); // send address + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE) + Fastwire::beginTransmission(devAddr); + Fastwire::write(regAddr); + #endif + for (uint8_t i = 0; i < length * 2; i++) { + #ifdef I2CDEV_SERIAL_DEBUG + Serial.print(data[i], HEX); + if (i + 1 < length) Serial.print(" "); + #endif + #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE) + Wire.send((uint8_t)(data[i] >> 8)); // send MSB + Wire.send((uint8_t)data[i++]); // send LSB + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100) + Wire.write((uint8_t)(data[i] >> 8)); // send MSB + Wire.write((uint8_t)data[i++]); // send LSB + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE) + Fastwire::write((uint8_t)(data[i] >> 8)); // send MSB + status = Fastwire::write((uint8_t)data[i++]); // send LSB + if (status != 0) break; + #endif + } + #if ((I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO < 100) || I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE) + Wire.endTransmission(); + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE && ARDUINO >= 100) + status = Wire.endTransmission(); + #elif (I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE) + Fastwire::stop(); + //status = Fastwire::endTransmission(); + #endif + #ifdef I2CDEV_SERIAL_DEBUG + Serial.println(". Done."); + #endif + return status == 0; +} + +/** Default timeout value for read operations. + * Set this to 0 to disable timeout detection. + */ +uint16_t I2Cdev::readTimeout = I2CDEV_DEFAULT_READ_TIMEOUT; + +#if I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE + // I2C library + ////////////////////// + // Copyright(C) 2012 + // Francesco Ferrara + // ferrara[at]libero[point]it + ////////////////////// + + /* + FastWire + - 0.24 added stop + - 0.23 added reset + + This is a library to help faster programs to read I2C devices. + Copyright(C) 2012 Francesco Ferrara + occhiobello at gmail dot com + [used by Jeff Rowberg for I2Cdevlib with permission] + */ + + boolean Fastwire::waitInt() { + int l = 250; + while (!(TWCR & (1 << TWINT)) && l-- > 0); + return l > 0; + } + + void Fastwire::setup(int khz, boolean pullup) { + TWCR = 0; + #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega328P__) + // activate internal pull-ups for twi (PORTC bits 4 & 5) + // as per note from atmega8 manual pg167 + if (pullup) PORTC |= ((1 << 4) | (1 << 5)); + else PORTC &= ~((1 << 4) | (1 << 5)); + #elif defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644__) + // activate internal pull-ups for twi (PORTC bits 0 & 1) + if (pullup) PORTC |= ((1 << 0) | (1 << 1)); + else PORTC &= ~((1 << 0) | (1 << 1)); + #else + // activate internal pull-ups for twi (PORTD bits 0 & 1) + // as per note from atmega128 manual pg204 + if (pullup) PORTD |= ((1 << 0) | (1 << 1)); + else PORTD &= ~((1 << 0) | (1 << 1)); + #endif + + TWSR = 0; // no prescaler => prescaler = 1 + TWBR = ((16000L / khz) - 16) / 2; // change the I2C clock rate + TWCR = 1 << TWEN; // enable twi module, no interrupt + } + + // added by Jeff Rowberg 2013-05-07: + // Arduino Wire-style "beginTransmission" function + // (takes 7-bit device address like the Wire method, NOT 8-bit: 0x68, not 0xD0/0xD1) + byte Fastwire::beginTransmission(byte device) { + byte twst, retry; + retry = 2; + do { + TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO) | (1 << TWSTA); + if (!waitInt()) return 1; + twst = TWSR & 0xF8; + if (twst != TW_START && twst != TW_REP_START) return 2; + + //Serial.print(device, HEX); + //Serial.print(" "); + TWDR = device << 1; // send device address without read bit (1) + TWCR = (1 << TWINT) | (1 << TWEN); + if (!waitInt()) return 3; + twst = TWSR & 0xF8; + } while (twst == TW_MT_SLA_NACK && retry-- > 0); + if (twst != TW_MT_SLA_ACK) return 4; + return 0; + } + + byte Fastwire::writeBuf(byte device, byte address, byte *data, byte num) { + byte twst, retry; + + retry = 2; + do { + TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO) | (1 << TWSTA); + if (!waitInt()) return 1; + twst = TWSR & 0xF8; + if (twst != TW_START && twst != TW_REP_START) return 2; + + //Serial.print(device, HEX); + //Serial.print(" "); + TWDR = device & 0xFE; // send device address without read bit (1) + TWCR = (1 << TWINT) | (1 << TWEN); + if (!waitInt()) return 3; + twst = TWSR & 0xF8; + } while (twst == TW_MT_SLA_NACK && retry-- > 0); + if (twst != TW_MT_SLA_ACK) return 4; + + //Serial.print(address, HEX); + //Serial.print(" "); + TWDR = address; // send data to the previously addressed device + TWCR = (1 << TWINT) | (1 << TWEN); + if (!waitInt()) return 5; + twst = TWSR & 0xF8; + if (twst != TW_MT_DATA_ACK) return 6; + + for (byte i = 0; i < num; i++) { + //Serial.print(data[i], HEX); + //Serial.print(" "); + TWDR = data[i]; // send data to the previously addressed device + TWCR = (1 << TWINT) | (1 << TWEN); + if (!waitInt()) return 7; + twst = TWSR & 0xF8; + if (twst != TW_MT_DATA_ACK) return 8; + } + //Serial.print("\n"); + + return 0; + } + + byte Fastwire::write(byte value) { + byte twst; + //Serial.println(value, HEX); + TWDR = value; // send data + TWCR = (1 << TWINT) | (1 << TWEN); + if (!waitInt()) return 1; + twst = TWSR & 0xF8; + if (twst != TW_MT_DATA_ACK) return 2; + return 0; + } + + byte Fastwire::readBuf(byte device, byte address, byte *data, byte num) { + byte twst, retry; + + retry = 2; + do { + TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO) | (1 << TWSTA); + if (!waitInt()) return 16; + twst = TWSR & 0xF8; + if (twst != TW_START && twst != TW_REP_START) return 17; + + //Serial.print(device, HEX); + //Serial.print(" "); + TWDR = device & 0xfe; // send device address to write + TWCR = (1 << TWINT) | (1 << TWEN); + if (!waitInt()) return 18; + twst = TWSR & 0xF8; + } while (twst == TW_MT_SLA_NACK && retry-- > 0); + if (twst != TW_MT_SLA_ACK) return 19; + + //Serial.print(address, HEX); + //Serial.print(" "); + TWDR = address; // send data to the previously addressed device + TWCR = (1 << TWINT) | (1 << TWEN); + if (!waitInt()) return 20; + twst = TWSR & 0xF8; + if (twst != TW_MT_DATA_ACK) return 21; + + /***/ + + retry = 2; + do { + TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO) | (1 << TWSTA); + if (!waitInt()) return 22; + twst = TWSR & 0xF8; + if (twst != TW_START && twst != TW_REP_START) return 23; + + //Serial.print(device, HEX); + //Serial.print(" "); + TWDR = device | 0x01; // send device address with the read bit (1) + TWCR = (1 << TWINT) | (1 << TWEN); + if (!waitInt()) return 24; + twst = TWSR & 0xF8; + } while (twst == TW_MR_SLA_NACK && retry-- > 0); + if (twst != TW_MR_SLA_ACK) return 25; + + for (uint8_t i = 0; i < num; i++) { + if (i == num - 1) + TWCR = (1 << TWINT) | (1 << TWEN); + else + TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWEA); + if (!waitInt()) return 26; + twst = TWSR & 0xF8; + if (twst != TW_MR_DATA_ACK && twst != TW_MR_DATA_NACK) return twst; + data[i] = TWDR; + //Serial.print(data[i], HEX); + //Serial.print(" "); + } + //Serial.print("\n"); + stop(); + + return 0; + } + + void Fastwire::reset() { + TWCR = 0; + } + + byte Fastwire::stop() { + TWCR = (1 << TWINT) | (1 << TWEN) | (1 << TWSTO); + if (!waitInt()) return 1; + return 0; + } +#endif + +#if I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE + // NBWire implementation based heavily on code by Gene Knight <Gene@Telobot.com> + // Originally posted on the Arduino forum at http://arduino.cc/forum/index.php/topic,70705.0.html + // Originally offered to the i2cdevlib project at http://arduino.cc/forum/index.php/topic,68210.30.html + + /* + call this version 1.0 + + Offhand, the only funky part that I can think of is in nbrequestFrom, where the buffer + length and index are set *before* the data is actually read. The problem is that these + are variables local to the TwoWire object, and by the time we actually have read the + data, and know what the length actually is, we have no simple access to the object's + variables. The actual bytes read *is* given to the callback function, though. + + The ISR code for a slave receiver is commented out. I don't have that setup, and can't + verify it at this time. Save it for 2.0! + + The handling of the read and write processes here is much like in the demo sketch code: + the process is broken down into sequential functions, where each registers the next as a + callback, essentially. + + For example, for the Read process, twi_read00 just returns if TWI is not yet in a + ready state. When there's another interrupt, and the interface *is* ready, then it + sets up the read, starts it, and registers twi_read01 as the function to call after + the *next* interrupt. twi_read01, then, just returns if the interface is still in a + "reading" state. When the reading is done, it copies the information to the buffer, + cleans up, and calls the user-requested callback function with the actual number of + bytes read. + + The writing is similar. + + Questions, comments and problems can go to Gene@Telobot.com. + + Thumbs Up! + Gene Knight + + */ + + uint8_t TwoWire::rxBuffer[NBWIRE_BUFFER_LENGTH]; + uint8_t TwoWire::rxBufferIndex = 0; + uint8_t TwoWire::rxBufferLength = 0; + + uint8_t TwoWire::txAddress = 0; + uint8_t TwoWire::txBuffer[NBWIRE_BUFFER_LENGTH]; + uint8_t TwoWire::txBufferIndex = 0; + uint8_t TwoWire::txBufferLength = 0; + + //uint8_t TwoWire::transmitting = 0; + void (*TwoWire::user_onRequest)(void); + void (*TwoWire::user_onReceive)(int); + + static volatile uint8_t twi_transmitting; + static volatile uint8_t twi_state; + static uint8_t twi_slarw; + static volatile uint8_t twi_error; + static uint8_t twi_masterBuffer[TWI_BUFFER_LENGTH]; + static volatile uint8_t twi_masterBufferIndex; + static uint8_t twi_masterBufferLength; + static uint8_t twi_rxBuffer[TWI_BUFFER_LENGTH]; + static volatile uint8_t twi_rxBufferIndex; + //static volatile uint8_t twi_Interrupt_Continue_Command; + static volatile uint8_t twi_Return_Value; + static volatile uint8_t twi_Done; + void (*twi_cbendTransmissionDone)(int); + void (*twi_cbreadFromDone)(int); + + void twi_init() { + // initialize state + twi_state = TWI_READY; + + // activate internal pull-ups for twi + // as per note from atmega8 manual pg167 + sbi(PORTC, 4); + sbi(PORTC, 5); + + // initialize twi prescaler and bit rate + cbi(TWSR, TWPS0); // TWI Status Register - Prescaler bits + cbi(TWSR, TWPS1); + + /* twi bit rate formula from atmega128 manual pg 204 + SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR)) + note: TWBR should be 10 or higher for master mode + It is 72 for a 16mhz Wiring board with 100kHz TWI */ + + TWBR = ((CPU_FREQ / TWI_FREQ) - 16) / 2; // bitrate register + // enable twi module, acks, and twi interrupt + + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); + + /* TWEN - TWI Enable Bit + TWIE - TWI Interrupt Enable + TWEA - TWI Enable Acknowledge Bit + TWINT - TWI Interrupt Flag + TWSTA - TWI Start Condition + */ + } + + typedef struct { + uint8_t address; + uint8_t* data; + uint8_t length; + uint8_t wait; + uint8_t i; + } twi_Write_Vars; + + twi_Write_Vars *ptwv = 0; + static void (*fNextInterruptFunction)(void) = 0; + + void twi_Finish(byte bRetVal) { + if (ptwv) { + free(ptwv); + ptwv = 0; + } + twi_Done = 0xFF; + twi_Return_Value = bRetVal; + fNextInterruptFunction = 0; + } + + uint8_t twii_WaitForDone(uint16_t timeout) { + uint32_t endMillis = millis() + timeout; + while (!twi_Done && (timeout == 0 || millis() < endMillis)) continue; + return twi_Return_Value; + } + + void twii_SetState(uint8_t ucState) { + twi_state = ucState; + } + + void twii_SetError(uint8_t ucError) { + twi_error = ucError ; + } + + void twii_InitBuffer(uint8_t ucPos, uint8_t ucLength) { + twi_masterBufferIndex = 0; + twi_masterBufferLength = ucLength; + } + + void twii_CopyToBuf(uint8_t* pData, uint8_t ucLength) { + uint8_t i; + for (i = 0; i < ucLength; ++i) { + twi_masterBuffer[i] = pData[i]; + } + } + + void twii_CopyFromBuf(uint8_t *pData, uint8_t ucLength) { + uint8_t i; + for (i = 0; i < ucLength; ++i) { + pData[i] = twi_masterBuffer[i]; + } + } + + void twii_SetSlaRW(uint8_t ucSlaRW) { + twi_slarw = ucSlaRW; + } + + void twii_SetStart() { + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA); + } + + void twi_write01() { + if (TWI_MTX == twi_state) return; // blocking test + twi_transmitting = 0 ; + if (twi_error == 0xFF) + twi_Finish (0); // success + else if (twi_error == TW_MT_SLA_NACK) + twi_Finish (2); // error: address send, nack received + else if (twi_error == TW_MT_DATA_NACK) + twi_Finish (3); // error: data send, nack received + else + twi_Finish (4); // other twi error + if (twi_cbendTransmissionDone) return twi_cbendTransmissionDone(twi_Return_Value); + return; + } + + + void twi_write00() { + if (TWI_READY != twi_state) return; // blocking test + if (TWI_BUFFER_LENGTH < ptwv -> length) { + twi_Finish(1); // end write with error 1 + return; + } + twi_Done = 0x00; // show as working + twii_SetState(TWI_MTX); // to transmitting + twii_SetError(0xFF); // to No Error + twii_InitBuffer(0, ptwv -> length); // pointer and length + twii_CopyToBuf(ptwv -> data, ptwv -> length); // get the data + twii_SetSlaRW((ptwv -> address << 1) | TW_WRITE); // write command + twii_SetStart(); // start the cycle + fNextInterruptFunction = twi_write01; // next routine + return twi_write01(); + } + + void twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait) { + uint8_t i; + ptwv = (twi_Write_Vars *)malloc(sizeof(twi_Write_Vars)); + ptwv -> address = address; + ptwv -> data = data; + ptwv -> length = length; + ptwv -> wait = wait; + fNextInterruptFunction = twi_write00; + return twi_write00(); + } + + void twi_read01() { + if (TWI_MRX == twi_state) return; // blocking test + if (twi_masterBufferIndex < ptwv -> length) ptwv -> length = twi_masterBufferIndex; + twii_CopyFromBuf(ptwv -> data, ptwv -> length); + twi_Finish(ptwv -> length); + if (twi_cbreadFromDone) return twi_cbreadFromDone(twi_Return_Value); + return; + } + + void twi_read00() { + if (TWI_READY != twi_state) return; // blocking test + if (TWI_BUFFER_LENGTH < ptwv -> length) twi_Finish(0); // error return + twi_Done = 0x00; // show as working + twii_SetState(TWI_MRX); // reading + twii_SetError(0xFF); // reset error + twii_InitBuffer(0, ptwv -> length - 1); // init to one less than length + twii_SetSlaRW((ptwv -> address << 1) | TW_READ); // read command + twii_SetStart(); // start cycle + fNextInterruptFunction = twi_read01; + return twi_read01(); + } + + void twi_readFrom(uint8_t address, uint8_t* data, uint8_t length) { + uint8_t i; + + ptwv = (twi_Write_Vars *)malloc(sizeof(twi_Write_Vars)); + ptwv -> address = address; + ptwv -> data = data; + ptwv -> length = length; + fNextInterruptFunction = twi_read00; + return twi_read00(); + } + + void twi_reply(uint8_t ack) { + // transmit master read ready signal, with or without ack + if (ack){ + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA); + } else { + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT); + } + } + + void twi_stop(void) { + // send stop condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO); + + // wait for stop condition to be exectued on bus + // TWINT is not set after a stop condition! + while (TWCR & _BV(TWSTO)) { + continue; + } + + // update twi state + twi_state = TWI_READY; + } + + void twi_releaseBus(void) { + // release bus + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT); + + // update twi state + twi_state = TWI_READY; + } + + SIGNAL(TWI_vect) { + switch (TW_STATUS) { + // All Master + case TW_START: // sent start condition + case TW_REP_START: // sent repeated start condition + // copy device address and r/w bit to output register and ack + TWDR = twi_slarw; + twi_reply(1); + break; + + // Master Transmitter + case TW_MT_SLA_ACK: // slave receiver acked address + case TW_MT_DATA_ACK: // slave receiver acked data + // if there is data to send, send it, otherwise stop + if (twi_masterBufferIndex < twi_masterBufferLength) { + // copy data to output register and ack + TWDR = twi_masterBuffer[twi_masterBufferIndex++]; + twi_reply(1); + } else { + twi_stop(); + } + break; + + case TW_MT_SLA_NACK: // address sent, nack received + twi_error = TW_MT_SLA_NACK; + twi_stop(); + break; + + case TW_MT_DATA_NACK: // data sent, nack received + twi_error = TW_MT_DATA_NACK; + twi_stop(); + break; + + case TW_MT_ARB_LOST: // lost bus arbitration + twi_error = TW_MT_ARB_LOST; + twi_releaseBus(); + break; + + // Master Receiver + case TW_MR_DATA_ACK: // data received, ack sent + // put byte into buffer + twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + + case TW_MR_SLA_ACK: // address sent, ack received + // ack if more bytes are expected, otherwise nack + if (twi_masterBufferIndex < twi_masterBufferLength) { + twi_reply(1); + } else { + twi_reply(0); + } + break; + + case TW_MR_DATA_NACK: // data received, nack sent + // put final byte into buffer + twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + + case TW_MR_SLA_NACK: // address sent, nack received + twi_stop(); + break; + + // TW_MR_ARB_LOST handled by TW_MT_ARB_LOST case + + // Slave Receiver (NOT IMPLEMENTED YET) + /* + case TW_SR_SLA_ACK: // addressed, returned ack + case TW_SR_GCALL_ACK: // addressed generally, returned ack + case TW_SR_ARB_LOST_SLA_ACK: // lost arbitration, returned ack + case TW_SR_ARB_LOST_GCALL_ACK: // lost arbitration, returned ack + // enter slave receiver mode + twi_state = TWI_SRX; + + // indicate that rx buffer can be overwritten and ack + twi_rxBufferIndex = 0; + twi_reply(1); + break; + + case TW_SR_DATA_ACK: // data received, returned ack + case TW_SR_GCALL_DATA_ACK: // data received generally, returned ack + // if there is still room in the rx buffer + if (twi_rxBufferIndex < TWI_BUFFER_LENGTH) { + // put byte in buffer and ack + twi_rxBuffer[twi_rxBufferIndex++] = TWDR; + twi_reply(1); + } else { + // otherwise nack + twi_reply(0); + } + break; + + case TW_SR_STOP: // stop or repeated start condition received + // put a null char after data if there's room + if (twi_rxBufferIndex < TWI_BUFFER_LENGTH) { + twi_rxBuffer[twi_rxBufferIndex] = 0; + } + + // sends ack and stops interface for clock stretching + twi_stop(); + + // callback to user defined callback + twi_onSlaveReceive(twi_rxBuffer, twi_rxBufferIndex); + + // since we submit rx buffer to "wire" library, we can reset it + twi_rxBufferIndex = 0; + + // ack future responses and leave slave receiver state + twi_releaseBus(); + break; + + case TW_SR_DATA_NACK: // data received, returned nack + case TW_SR_GCALL_DATA_NACK: // data received generally, returned nack + // nack back at master + twi_reply(0); + break; + + // Slave Transmitter + case TW_ST_SLA_ACK: // addressed, returned ack + case TW_ST_ARB_LOST_SLA_ACK: // arbitration lost, returned ack + // enter slave transmitter mode + twi_state = TWI_STX; + + // ready the tx buffer index for iteration + twi_txBufferIndex = 0; + + // set tx buffer length to be zero, to verify if user changes it + twi_txBufferLength = 0; + + // request for txBuffer to be filled and length to be set + // note: user must call twi_transmit(bytes, length) to do this + twi_onSlaveTransmit(); + + // if they didn't change buffer & length, initialize it + if (0 == twi_txBufferLength) { + twi_txBufferLength = 1; + twi_txBuffer[0] = 0x00; + } + + // transmit first byte from buffer, fall through + + case TW_ST_DATA_ACK: // byte sent, ack returned + // copy data to output register + TWDR = twi_txBuffer[twi_txBufferIndex++]; + + // if there is more to send, ack, otherwise nack + if (twi_txBufferIndex < twi_txBufferLength) { + twi_reply(1); + } else { + twi_reply(0); + } + break; + + case TW_ST_DATA_NACK: // received nack, we are done + case TW_ST_LAST_DATA: // received ack, but we are done already! + // ack future responses + twi_reply(1); + // leave slave receiver state + twi_state = TWI_READY; + break; + */ + + // all + case TW_NO_INFO: // no state information + break; + + case TW_BUS_ERROR: // bus error, illegal stop/start + twi_error = TW_BUS_ERROR; + twi_stop(); + break; + } + + if (fNextInterruptFunction) return fNextInterruptFunction(); + } + + TwoWire::TwoWire() { } + + void TwoWire::begin(void) { + rxBufferIndex = 0; + rxBufferLength = 0; + + txBufferIndex = 0; + txBufferLength = 0; + + twi_init(); + } + + void TwoWire::beginTransmission(uint8_t address) { + //beginTransmission((uint8_t)address); + + // indicate that we are transmitting + twi_transmitting = 1; + + // set address of targeted slave + txAddress = address; + + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; + } + + uint8_t TwoWire::endTransmission(uint16_t timeout) { + // transmit buffer (blocking) + //int8_t ret = + twi_cbendTransmissionDone = NULL; + twi_writeTo(txAddress, txBuffer, txBufferLength, 1); + int8_t ret = twii_WaitForDone(timeout); + + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; + + // indicate that we are done transmitting + // twi_transmitting = 0; + return ret; + } + + void TwoWire::nbendTransmission(void (*function)(int)) { + twi_cbendTransmissionDone = function; + twi_writeTo(txAddress, txBuffer, txBufferLength, 1); + return; + } + + void TwoWire::send(uint8_t data) { + if (twi_transmitting) { + // in master transmitter mode + // don't bother if buffer is full + if (txBufferLength >= NBWIRE_BUFFER_LENGTH) { + return; + } + + // put byte in tx buffer + txBuffer[txBufferIndex] = data; + ++txBufferIndex; + + // update amount in buffer + txBufferLength = txBufferIndex; + } else { + // in slave send mode + // reply to master + //twi_transmit(&data, 1); + } + } + + uint8_t TwoWire::receive(void) { + // default to returning null char + // for people using with char strings + uint8_t value = 0; + + // get each successive byte on each call + if (rxBufferIndex < rxBufferLength) { + value = rxBuffer[rxBufferIndex]; + ++rxBufferIndex; + } + + return value; + } + + uint8_t TwoWire::requestFrom(uint8_t address, int quantity, uint16_t timeout) { + // clamp to buffer length + if (quantity > NBWIRE_BUFFER_LENGTH) { + quantity = NBWIRE_BUFFER_LENGTH; + } + + // perform blocking read into buffer + twi_cbreadFromDone = NULL; + twi_readFrom(address, rxBuffer, quantity); + uint8_t read = twii_WaitForDone(timeout); + + // set rx buffer iterator vars + rxBufferIndex = 0; + rxBufferLength = read; + + return read; + } + + void TwoWire::nbrequestFrom(uint8_t address, int quantity, void (*function)(int)) { + // clamp to buffer length + if (quantity > NBWIRE_BUFFER_LENGTH) { + quantity = NBWIRE_BUFFER_LENGTH; + } + + // perform blocking read into buffer + twi_cbreadFromDone = function; + twi_readFrom(address, rxBuffer, quantity); + //uint8_t read = twii_WaitForDone(); + + // set rx buffer iterator vars + //rxBufferIndex = 0; + //rxBufferLength = read; + + rxBufferIndex = 0; + rxBufferLength = quantity; // this is a hack + + return; //read; + } + + uint8_t TwoWire::available(void) { + return rxBufferLength - rxBufferIndex; + } + +#endif diff --git a/libraries/I2Cdev/I2Cdev.h b/libraries/I2Cdev/I2Cdev.h new file mode 100644 index 0000000000000000000000000000000000000000..4c0a2e7a2624b0b2330431cce2d0e94810b9bbe7 --- /dev/null +++ b/libraries/I2Cdev/I2Cdev.h @@ -0,0 +1,278 @@ +// I2Cdev library collection - Main I2C device class header file +// Abstracts bit and byte I2C R/W functions into a convenient class +// 2013-06-05 by Jeff Rowberg <jeff@rowberg.net> +// +// Changelog: +// 2015-10-30 - simondlevy : support i2c_t3 for Teensy3.1 +// 2013-05-06 - add Francesco Ferrara's Fastwire v0.24 implementation with small modifications +// 2013-05-05 - fix issue with writing bit values to words (Sasquatch/Farzanegan) +// 2012-06-09 - fix major issue with reading > 32 bytes at a time with Arduino Wire +// - add compiler warnings when using outdated or IDE or limited I2Cdev implementation +// 2011-11-01 - fix write*Bits mask calculation (thanks sasquatch @ Arduino forums) +// 2011-10-03 - added automatic Arduino version detection for ease of use +// 2011-10-02 - added Gene Knight's NBWire TwoWire class implementation with small modifications +// 2011-08-31 - added support for Arduino 1.0 Wire library (methods are different from 0.x) +// 2011-08-03 - added optional timeout parameter to read* methods to easily change from default +// 2011-08-02 - added support for 16-bit registers +// - fixed incorrect Doxygen comments on some methods +// - added timeout value for read operations (thanks mem @ Arduino forums) +// 2011-07-30 - changed read/write function structures to return success or byte counts +// - made all methods static for multi-device memory savings +// 2011-07-28 - initial release + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2013 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +#ifndef _I2CDEV_H_ +#define _I2CDEV_H_ + +// ----------------------------------------------------------------------------- +// I2C interface implementation setting +// ----------------------------------------------------------------------------- +#ifndef I2CDEV_IMPLEMENTATION +#define I2CDEV_IMPLEMENTATION I2CDEV_ARDUINO_WIRE +//#define I2CDEV_IMPLEMENTATION I2CDEV_BUILTIN_FASTWIRE +#endif // I2CDEV_IMPLEMENTATION + +// comment this out if you are using a non-optimal IDE/implementation setting +// but want the compiler to shut up about it +#define I2CDEV_IMPLEMENTATION_WARNINGS + +// ----------------------------------------------------------------------------- +// I2C interface implementation options +// ----------------------------------------------------------------------------- +#define I2CDEV_ARDUINO_WIRE 1 // Wire object from Arduino +#define I2CDEV_BUILTIN_NBWIRE 2 // Tweaked Wire object from Gene Knight's NBWire project + // ^^^ NBWire implementation is still buggy w/some interrupts! +#define I2CDEV_BUILTIN_FASTWIRE 3 // FastWire object from Francesco Ferrara's project +#define I2CDEV_I2CMASTER_LIBRARY 4 // I2C object from DSSCircuits I2C-Master Library at https://github.com/DSSCircuits/I2C-Master-Library + +// ----------------------------------------------------------------------------- +// Arduino-style "Serial.print" debug constant (uncomment to enable) +// ----------------------------------------------------------------------------- +//#define I2CDEV_SERIAL_DEBUG + +#ifdef ARDUINO + #if ARDUINO < 100 + #include "WProgram.h" + #else + #include "Arduino.h" + #endif + #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + #include <Wire.h> + #endif + #if I2CDEV_IMPLEMENTATION == I2CDEV_I2CMASTER_LIBRARY + #include <I2C.h> + #endif +#endif + +#ifdef SPARK + #include <spark_wiring_i2c.h> + #define ARDUINO 101 +#endif + + +// 1000ms default read timeout (modify with "I2Cdev::readTimeout = [ms];") +#define I2CDEV_DEFAULT_READ_TIMEOUT 1000 + +class I2Cdev { + public: + I2Cdev(); + + static int8_t readBit(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout); + static int8_t readBitW(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint16_t *data, uint16_t timeout=I2Cdev::readTimeout); + static int8_t readBits(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout); + static int8_t readBitsW(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t *data, uint16_t timeout=I2Cdev::readTimeout); + static int8_t readByte(uint8_t devAddr, uint8_t regAddr, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout); + static int8_t readWord(uint8_t devAddr, uint8_t regAddr, uint16_t *data, uint16_t timeout=I2Cdev::readTimeout); + static int8_t readBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout); + static int8_t readWords(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint16_t *data, uint16_t timeout=I2Cdev::readTimeout); + + static bool writeBit(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint8_t data); + static bool writeBitW(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint16_t data); + static bool writeBits(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t data); + static bool writeBitsW(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t data); + static bool writeByte(uint8_t devAddr, uint8_t regAddr, uint8_t data); + static bool writeWord(uint8_t devAddr, uint8_t regAddr, uint16_t data); + static bool writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t *data); + static bool writeWords(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint16_t *data); + + static uint16_t readTimeout; +}; + +#if I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE + ////////////////////// + // FastWire 0.24 + // This is a library to help faster programs to read I2C devices. + // Copyright(C) 2012 + // Francesco Ferrara + ////////////////////// + + /* Master */ + #define TW_START 0x08 + #define TW_REP_START 0x10 + + /* Master Transmitter */ + #define TW_MT_SLA_ACK 0x18 + #define TW_MT_SLA_NACK 0x20 + #define TW_MT_DATA_ACK 0x28 + #define TW_MT_DATA_NACK 0x30 + #define TW_MT_ARB_LOST 0x38 + + /* Master Receiver */ + #define TW_MR_ARB_LOST 0x38 + #define TW_MR_SLA_ACK 0x40 + #define TW_MR_SLA_NACK 0x48 + #define TW_MR_DATA_ACK 0x50 + #define TW_MR_DATA_NACK 0x58 + + #define TW_OK 0 + #define TW_ERROR 1 + + class Fastwire { + private: + static boolean waitInt(); + + public: + static void setup(int khz, boolean pullup); + static byte beginTransmission(byte device); + static byte write(byte value); + static byte writeBuf(byte device, byte address, byte *data, byte num); + static byte readBuf(byte device, byte address, byte *data, byte num); + static void reset(); + static byte stop(); + }; +#endif + +#if I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE + // NBWire implementation based heavily on code by Gene Knight <Gene@Telobot.com> + // Originally posted on the Arduino forum at http://arduino.cc/forum/index.php/topic,70705.0.html + // Originally offered to the i2cdevlib project at http://arduino.cc/forum/index.php/topic,68210.30.html + + #define NBWIRE_BUFFER_LENGTH 32 + + class TwoWire { + private: + static uint8_t rxBuffer[]; + static uint8_t rxBufferIndex; + static uint8_t rxBufferLength; + + static uint8_t txAddress; + static uint8_t txBuffer[]; + static uint8_t txBufferIndex; + static uint8_t txBufferLength; + + // static uint8_t transmitting; + static void (*user_onRequest)(void); + static void (*user_onReceive)(int); + static void onRequestService(void); + static void onReceiveService(uint8_t*, int); + + public: + TwoWire(); + void begin(); + void begin(uint8_t); + void begin(int); + void beginTransmission(uint8_t); + //void beginTransmission(int); + uint8_t endTransmission(uint16_t timeout=0); + void nbendTransmission(void (*function)(int)) ; + uint8_t requestFrom(uint8_t, int, uint16_t timeout=0); + //uint8_t requestFrom(int, int); + void nbrequestFrom(uint8_t, int, void (*function)(int)); + void send(uint8_t); + void send(uint8_t*, uint8_t); + //void send(int); + void send(char*); + uint8_t available(void); + uint8_t receive(void); + void onReceive(void (*)(int)); + void onRequest(void (*)(void)); + }; + + #define TWI_READY 0 + #define TWI_MRX 1 + #define TWI_MTX 2 + #define TWI_SRX 3 + #define TWI_STX 4 + + #define TW_WRITE 0 + #define TW_READ 1 + + #define TW_MT_SLA_NACK 0x20 + #define TW_MT_DATA_NACK 0x30 + + #define CPU_FREQ 16000000L + #define TWI_FREQ 100000L + #define TWI_BUFFER_LENGTH 32 + + /* TWI Status is in TWSR, in the top 5 bits: TWS7 - TWS3 */ + + #define TW_STATUS_MASK (_BV(TWS7)|_BV(TWS6)|_BV(TWS5)|_BV(TWS4)|_BV(TWS3)) + #define TW_STATUS (TWSR & TW_STATUS_MASK) + #define TW_START 0x08 + #define TW_REP_START 0x10 + #define TW_MT_SLA_ACK 0x18 + #define TW_MT_SLA_NACK 0x20 + #define TW_MT_DATA_ACK 0x28 + #define TW_MT_DATA_NACK 0x30 + #define TW_MT_ARB_LOST 0x38 + #define TW_MR_ARB_LOST 0x38 + #define TW_MR_SLA_ACK 0x40 + #define TW_MR_SLA_NACK 0x48 + #define TW_MR_DATA_ACK 0x50 + #define TW_MR_DATA_NACK 0x58 + #define TW_ST_SLA_ACK 0xA8 + #define TW_ST_ARB_LOST_SLA_ACK 0xB0 + #define TW_ST_DATA_ACK 0xB8 + #define TW_ST_DATA_NACK 0xC0 + #define TW_ST_LAST_DATA 0xC8 + #define TW_SR_SLA_ACK 0x60 + #define TW_SR_ARB_LOST_SLA_ACK 0x68 + #define TW_SR_GCALL_ACK 0x70 + #define TW_SR_ARB_LOST_GCALL_ACK 0x78 + #define TW_SR_DATA_ACK 0x80 + #define TW_SR_DATA_NACK 0x88 + #define TW_SR_GCALL_DATA_ACK 0x90 + #define TW_SR_GCALL_DATA_NACK 0x98 + #define TW_SR_STOP 0xA0 + #define TW_NO_INFO 0xF8 + #define TW_BUS_ERROR 0x00 + + //#define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr)) + //#define _SFR_BYTE(sfr) _MMIO_BYTE(_SFR_ADDR(sfr)) + + #ifndef sbi // set bit + #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) + #endif // sbi + + #ifndef cbi // clear bit + #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) + #endif // cbi + + extern TwoWire Wire; + +#endif // I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_NBWIRE + +#endif /* _I2CDEV_H_ */ diff --git a/libraries/I2Cdev/keywords.txt b/libraries/I2Cdev/keywords.txt new file mode 100644 index 0000000000000000000000000000000000000000..4132a06c379cff6bdbf27034ff8ad7a1116bca51 --- /dev/null +++ b/libraries/I2Cdev/keywords.txt @@ -0,0 +1,38 @@ +####################################### +# Syntax Coloring Map For I2Cdev +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### +I2Cdev KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +readBit KEYWORD2 +readBitW KEYWORD2 +readBits KEYWORD2 +readBitsW KEYWORD2 +readByte KEYWORD2 +readBytes KEYWORD2 +readWord KEYWORD2 +readWords KEYWORD2 +writeBit KEYWORD2 +writeBitW KEYWORD2 +writeBits KEYWORD2 +writeBitsW KEYWORD2 +writeByte KEYWORD2 +writeBytes KEYWORD2 +writeWord KEYWORD2 +writeWords KEYWORD2 + +####################################### +# Instances (KEYWORD2) +####################################### + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/libraries/I2Cdev/library.json b/libraries/I2Cdev/library.json new file mode 100644 index 0000000000000000000000000000000000000000..d456096045ad885cad98dfbd42f03cd5506643a3 --- /dev/null +++ b/libraries/I2Cdev/library.json @@ -0,0 +1,13 @@ +{ + "name": "I2Cdevlib-Core", + "keywords": "i2cdevlib, i2c", + "description": "The I2C Device Library (I2Cdevlib) is a collection of uniform and well-documented classes to provide simple and intuitive interfaces to I2C devices.", + "include": "Arduino/I2Cdev", + "repository": + { + "type": "git", + "url": "https://github.com/jrowberg/i2cdevlib.git" + }, + "frameworks": "arduino", + "platforms": "atmelavr" +} diff --git a/libraries/LiquidCrystal/.DS_Store b/libraries/LiquidCrystal/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/libraries/LiquidCrystal/.DS_Store differ diff --git a/libraries/LiquidCrystal/.hg/00changelog.i b/libraries/LiquidCrystal/.hg/00changelog.i new file mode 100644 index 0000000000000000000000000000000000000000..d3a8311050e54c57c5be7cfe169e60a95768812c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/00changelog.i differ diff --git a/libraries/LiquidCrystal/.hg/bookmarks b/libraries/LiquidCrystal/.hg/bookmarks new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/libraries/LiquidCrystal/.hg/branch b/libraries/LiquidCrystal/.hg/branch new file mode 100644 index 0000000000000000000000000000000000000000..4ad96d51599fb734101f6229f6c1a8a509bd6255 --- /dev/null +++ b/libraries/LiquidCrystal/.hg/branch @@ -0,0 +1 @@ +default diff --git a/libraries/LiquidCrystal/.hg/cache/branchheads b/libraries/LiquidCrystal/.hg/cache/branchheads new file mode 100644 index 0000000000000000000000000000000000000000..b0950d5c64d4d22a7244bcaa4eef0d0aa6ac7445 --- /dev/null +++ b/libraries/LiquidCrystal/.hg/cache/branchheads @@ -0,0 +1,6 @@ +144fddd7979d950c8aa34a15807265c5a69e34b1 202 +d6123d225ca2af9f7c0a8be3e7fe3ab768149bb6 default +144fddd7979d950c8aa34a15807265c5a69e34b1 default +8d7b663c3bf3b5306cfc9d63b61347e3495a70ae fastIO +03bb450754353f6b46e6c323a012ec6be3d6756e V 1.2.0 preparation +714b1c6c35a1dc4507e6548185fafe30574ccd7e 1wire diff --git a/libraries/LiquidCrystal/.hg/cache/tags b/libraries/LiquidCrystal/.hg/cache/tags new file mode 100644 index 0000000000000000000000000000000000000000..3eaa3ce0ff6a4f4899b53f0ce2d6fc9eb579f51b --- /dev/null +++ b/libraries/LiquidCrystal/.hg/cache/tags @@ -0,0 +1,26 @@ +202 144fddd7979d950c8aa34a15807265c5a69e34b1 e7b6f4721117bf8fd4a109198917fa067e2808b8 +171 714b1c6c35a1dc4507e6548185fafe30574ccd7e 0e2b6b1e04480c0ff1dae7a4d2f841d4c85278c9 +142 03bb450754353f6b46e6c323a012ec6be3d6756e 517e4bd898835dcf4c7732af06f266eda1a6fa6d +85 8d7b663c3bf3b5306cfc9d63b61347e3495a70ae 635a4d6a5ad6536f152fdd8a47e4b370680d6c65 + +c0432608719bae3cdf60b0cb428181d36b25b945 V 1.2.2 +cdf9b4eb0556635c20da8273dfc1f3204864c0a0 V 1.2.0_RC1 +070f1d90be5f7bd513a4c5663f429c39077c06ab V 1.1.5 +b0a1d4a24de12d4a323b3a8f7564ae282f1f9209 V 1.1.4 +df4563d57b5cb8a6f534564f10a5d65935d8ef71 V 1.1.7 +82f18d4b8ebca14c59e0f8fc2fef075abb9a5d50 V 1.1.6 +2bbd1aad67c3ee1bda2fb8637618514100f49c7c V 1.2.1_RC1 +c57fe4cf1b3544f590ffb1cce38a1af03148cd89 V 1.1.3 +350358815c25656fde83ab5c636511e16f2d1b93 V 1.1.2 +2ec4883f118bb66655dbb4012df70df0a4f75b9b V 1.0.7_RC1 +a0910a053530c0a19bfbaa1144d1d3b90fcb5e3b V_1.2.1_RC5 +1cf625ca9242d298a480c655d38ad964cd61ae61 V 1.2.0 +a4eb104f6dffbe58fc3fd96a5ef9736be5bd07a4 V 1.2.1_RC3 +eac3d34ed9dd1bd80f57098ee563f57fa5df1586 V 1.2.1 +66821a8054ea8dfacdad6c19397dbf93f6bd7fa5 V 1.0.2_RC1 +2e6269d8b2695bd8d33941c3afe09c61b555a26b V 1.2.1_RC4 +c5879ff3f2e5e0d2a0755022781406bc8045567a V 1.2.1_RC2 +59c60fbefe8d447b4ca705fff75a4a1894b1433a V 1.3.3 +6e2da8cb3ba943fb281e6b9c2d18cf9ddd307c7d V 1.3.2 +fc43ac91ab9c004ec2b8c89f8c6e477fce624af9 V 1.3.1 +eab837be9770f9d3e004f26d299578d8cff9215b V 1.3.0 diff --git a/libraries/LiquidCrystal/.hg/dirstate b/libraries/LiquidCrystal/.hg/dirstate new file mode 100644 index 0000000000000000000000000000000000000000..65eafce2c02657ce52a95f7b1f7f305ae613a6cb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/dirstate differ diff --git a/libraries/LiquidCrystal/.hg/hgrc b/libraries/LiquidCrystal/.hg/hgrc new file mode 100644 index 0000000000000000000000000000000000000000..1eb34f9989b5a6f493b1ec74b029d8d49ecb6b32 --- /dev/null +++ b/libraries/LiquidCrystal/.hg/hgrc @@ -0,0 +1,2 @@ +[paths] +default = https://fmalpartida:Klamar01%21@bitbucket.org/fmalpartida/new-liquidcrystal diff --git a/libraries/LiquidCrystal/.hg/last-message.txt b/libraries/LiquidCrystal/.hg/last-message.txt new file mode 100644 index 0000000000000000000000000000000000000000..4b6ec3de29746486735dfdbb1efdf78d58048df1 --- /dev/null +++ b/libraries/LiquidCrystal/.hg/last-message.txt @@ -0,0 +1 @@ +Aligned to 8 bit I2C addresses. \ No newline at end of file diff --git a/libraries/LiquidCrystal/.hg/localtags b/libraries/LiquidCrystal/.hg/localtags new file mode 100644 index 0000000000000000000000000000000000000000..9c875f82af165694f3c6b5e88df58e7fa07661eb --- /dev/null +++ b/libraries/LiquidCrystal/.hg/localtags @@ -0,0 +1 @@ +fc43ac91ab9c004ec2b8c89f8c6e477fce624af9 V 1.3.1 diff --git a/libraries/LiquidCrystal/.hg/requires b/libraries/LiquidCrystal/.hg/requires new file mode 100644 index 0000000000000000000000000000000000000000..c1674f2dd0ba3560502e19399717d46bc591ea46 --- /dev/null +++ b/libraries/LiquidCrystal/.hg/requires @@ -0,0 +1,4 @@ +revlogv1 +fncache +store +dotencode diff --git a/libraries/LiquidCrystal/.hg/store/00changelog.i b/libraries/LiquidCrystal/.hg/store/00changelog.i new file mode 100644 index 0000000000000000000000000000000000000000..0748211d83f16b3457fc2bcbe6fc6fde63aacefa Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/00changelog.i differ diff --git a/libraries/LiquidCrystal/.hg/store/00manifest.i b/libraries/LiquidCrystal/.hg/store/00manifest.i new file mode 100644 index 0000000000000000000000000000000000000000..f12cdae8db6cb04ae6e8f6b6f07e890f7af156b9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/00manifest.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_fast_i_o.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_fast_i_o.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..74cbef652ebdaf0f435cf3aed6483bbed304b265 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_fast_i_o.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_fast_i_o.h.i b/libraries/LiquidCrystal/.hg/store/data/_fast_i_o.h.i new file mode 100644 index 0000000000000000000000000000000000000000..8ae87e02c7aa3db567e4bc2493723432a21524e1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_fast_i_o.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_i2_c_i_o.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_i2_c_i_o.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..a338447923607d8352bac042116603f6c5e7f426 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_i2_c_i_o.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_i2_c_i_o.h.i b/libraries/LiquidCrystal/.hg/store/data/_i2_c_i_o.h.i new file mode 100644 index 0000000000000000000000000000000000000000..a6ca15d130cc935ecda6e9976c6a686a69138867 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_i2_c_i_o.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_l_c_d.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_l_c_d.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..932a7338c8fa510ab985a946e446862d36fd58b2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_l_c_d.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_l_c_d.h.i b/libraries/LiquidCrystal/.hg/store/data/_l_c_d.h.i new file mode 100644 index 0000000000000000000000000000000000000000..931fdfeba219c9a8588fafdfd00817399c95810f Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_l_c_d.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..547aa725b863a62d33bc64f952c397c56efb285c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal.h.i new file mode 100644 index 0000000000000000000000000000000000000000..1ed010cb146438b6da40747541c952b17da03fff Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal__4bit.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal__4bit.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..de975ad1dfb37949f4c02454a5a5c9bd9781d975 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal__4bit.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal__4bit.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal__4bit.h.i new file mode 100644 index 0000000000000000000000000000000000000000..a1f82f526554f34dc4ff0b19c6bb2eb50a8c4cef Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal__4bit.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..4ed337e64f5735e0d243f9721cf7cb369301e871 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c.h.i new file mode 100644 index 0000000000000000000000000000000000000000..9bec6ef2acf70c8279481185f310fc8ff970e9eb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c___by_vac.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c___by_vac.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..6230362087cc313501f9b87d0bf603d92322d7fb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c___by_vac.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c___by_vac.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c___by_vac.h.i new file mode 100644 index 0000000000000000000000000000000000000000..2919cfd99382419d74a15697ab638a3827bb637d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___i2_c___by_vac.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_i2_c.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_i2_c.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..0112cebcbf3952d2e8fcc76c9b64b22469e0bc55 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_i2_c.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_i2_c.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_i2_c.h.i new file mode 100644 index 0000000000000000000000000000000000000000..c156f6c8c226c6898f80e700c292c08cac06ecc8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_i2_c.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..efc7ee982bf6350c3826cca22d22007b4621d8bb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r.h.i new file mode 100644 index 0000000000000000000000000000000000000000..d16b4d6a436a2022f86bf399396db170141a1322 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..be1a5927e1115729e3fc0e2b9bb28bf736ffdb6c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.h.i new file mode 100644 index 0000000000000000000000000000000000000000..7e546ebfe34e7055f99ab46fb4e633e595967c7e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.sch.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.sch.i new file mode 100644 index 0000000000000000000000000000000000000000..4480853fbd14fe2060d36838cbd770ac1ccf85ee Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1.sch.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1_w.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1_w.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..32c16761f63912f84b59cbd15d6adf6eb2a52b9f Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1_w.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1_w.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1_w.h.i new file mode 100644 index 0000000000000000000000000000000000000000..e061f50df9c3259035cc55e9210cc1e4d368b3b6 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r1_w.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r2_w.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r2_w.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..4a6b6ce575d19117c7e2e1911ba690ecf395bd1b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r2_w.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r2_w.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r2_w.h.i new file mode 100644 index 0000000000000000000000000000000000000000..1834c876e7fef2c5af5871038e4d33dcf37a10b9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r2_w.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r3_w.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r3_w.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..3e0b373b6e39b71e12272c2770666fe84be8fbfa Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r3_w.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r3_w.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r3_w.h.i new file mode 100644 index 0000000000000000000000000000000000000000..6b27af8827a69b5ead141c1b94c439c4dd552612 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r3_w.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r___l_c_d3.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r___l_c_d3.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..23e53d26b0be4b0e3a72c06185496e0ed188e5e3 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r___l_c_d3.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r___l_c_d3.h.i b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r___l_c_d3.h.i new file mode 100644 index 0000000000000000000000000000000000000000..b1c95ad09a7d94395f57be8061a21a80dbbf51ea Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_liquid_crystal___s_r___l_c_d3.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_r_e_a_d_m_e.md.i b/libraries/LiquidCrystal/.hg/store/data/_r_e_a_d_m_e.md.i new file mode 100644 index 0000000000000000000000000000000000000000..e2c9bfabb7e3ea1297e445a6c737b32098fb8ea0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_r_e_a_d_m_e.md.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_s_i2_c_i_o.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_s_i2_c_i_o.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..e5fbdfd360b62dcf61f5ed1bcb785a4daa318935 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_s_i2_c_i_o.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_s_i2_c_i_o.h.i b/libraries/LiquidCrystal/.hg/store/data/_s_i2_c_i_o.h.i new file mode 100644 index 0000000000000000000000000000000000000000..0bbbf4841089198316b480e4ec4cc5f54d78dab9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_s_i2_c_i_o.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_soft_i2_c_master.cpp.i b/libraries/LiquidCrystal/.hg/store/data/_soft_i2_c_master.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..8baf80418fb714fc76428d479e5d29b5e8c29421 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_soft_i2_c_master.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/_soft_i2_c_master.h.i b/libraries/LiquidCrystal/.hg/store/data/_soft_i2_c_master.h.i new file mode 100644 index 0000000000000000000000000000000000000000..17bca0b8d7803014d04e4a733187498a3d341209 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/_soft_i2_c_master.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/def/doxygen.def.i b/libraries/LiquidCrystal/.hg/store/data/def/doxygen.def.i new file mode 100644 index 0000000000000000000000000000000000000000..685098e7fe7974c5305738f2b63c1f411e13688e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/def/doxygen.def.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/delay__x.h.i b/libraries/LiquidCrystal/.hg/store/data/delay__x.h.i new file mode 100644 index 0000000000000000000000000000000000000000..401f76bbe86efac36073dd3844bc3c5190931116 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/delay__x.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ed868cf36d33a9f247640973a65c584916a2f828 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..838e0bb0e57273232a083e52fb93ecb73edf8c89 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d6069136d8a13b156de46c6e7cb388c790f75d7e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..446bbf4eb33846f8b7ac62f2ee8a60298df1e041 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__fast__i__o__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e9c89978050b98db54d0641653f0b0c45c6ee9fb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..64da83c923e4819c4c99ecc2561c8e16479b4c29 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b6202480d746c87e7a2a69d00597dba72de9edb8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6240acc22606e66ec2639ea16ff27b230bcd2d48 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__i2__c__i__o__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b012ba1d533570ed37a9b5859b24df5df0323af9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..30bc82a9df2a2ee7ce22ab9c1e5c727c5052b867 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..69644fbaee47b8e5204c9af8f991633b58df506a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c46f92f64431c049bd30adf9bf58568b4642dac9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__l__c__d__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..eb983f8d02fab96ba113e2fcaa9018d7d2447263 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5f8ee0eaeb241d810ccad8b15b1aa6edfadc7698 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..60687ce22425f9bb3bf2d196f3423734503b8124 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..456bb904a0651e6f92858d624c3c2811dd3f903a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..47af2ccb78d3b5e3dbf761811de5c69a56fc94f8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6bca326143339367223190f211f9bc01bbad5704 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b4f365e508e5c223c6a31280558bf2f807145660 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..407b6fdf0e8d6213d20c99df71770033321ee439 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______i2__c__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..08c157362d44acbe84bd9950bd0c1b9bd55403d0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2405b9e56d7aade4af9e15a4a7e161c04b7bda36 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3b448b99bcbf8c90b40cf4ad80916073c10dafc0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f0afd0f3c001c263266207cba4c5019c7195f377 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r2__w__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ac5adfafedf4f5c0053439b8dd18f6d744486613 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f0445ea4a62d4558caf108c9a609e0d364614f32 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e807f4fe2ccf6b6f97d32663c2a6a5497b9562c4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f0cc3630f7540b0be52feff7df2e7d18d04e4d82 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r3__w__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..57b056a8d3271a98391eb40c0f5ba13e0cffa430 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..35939f2663a95f7f55415bb324516aaf3ca00f0e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..8382020ed276ed4308a21cfafb913798680cbbaa Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c58a7ce46c6d6ecf6b0360ba94c3bdc04021d4d8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..760c485bf46c269d1badec443b836ace7804adde Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..38ebe5462a67936cd6b83ff68f39b80861b7f34c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b43c8a1fa487440bd87db1bfdba34aaaebba9c53 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..76da4e4907d69dd197f82873b43e11ccaeeeda34 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/__liquid__crystal______s__r______l__c__d3__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/annotated.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/annotated.html.i new file mode 100644 index 0000000000000000000000000000000000000000..55b79cdb06f3c2389f1dc96c208634ab4e12a28a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/annotated.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/bc__s.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/bc__s.png.i new file mode 100644 index 0000000000000000000000000000000000000000..0dd4588b76d97a387f2e249eb97a4eb9e80d7cf8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/bc__s.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__i2__c__i__o-members.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__i2__c__i__o-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b46c4e604bba67ad73873d1353425cf3d796470a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__i2__c__i__o-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__i2__c__i__o.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__i2__c__i__o.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0d8b55f7b183c327d79ae4b9a695c02c2b244d76 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__i2__c__i__o.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d-members.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a3a14493c4e46581061a7fbf95bb25766ebf6694 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9b6e92777baae570ff2b3682a4dc1cf59fd50778 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d.png.i new file mode 100644 index 0000000000000000000000000000000000000000..7c3f749d6c0b38baa7fbade68b4fa3d1f872366c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__l__c__d.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal-members.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f1667f1f8b0887eb5b0ae429473e50b94b8c6de1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal.html.i new file mode 100644 index 0000000000000000000000000000000000000000..89a8e0ecc3cbe351f6fd8e88b9e216dfa01b44bb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal.png.i new file mode 100644 index 0000000000000000000000000000000000000000..cdde0b94f92e0318f8b1a6344bb6b1a48a9bbcc9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c-members.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..fa13da1012b1a29570900d9a5427e0dbcf5874f7 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d35c9497609b158a46f8d29a5675d38bd38ff5d9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c.png.i new file mode 100644 index 0000000000000000000000000000000000000000..053653aeab298e9bc907b852395c1435409c9566 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______i2__c.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r-members.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6f3d017824be07f8a7b6b7e57aca5bb89adb1d68 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c706f9f49d8c26521eed4cd22efaca6566621bbf Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r.png.i new file mode 100644 index 0000000000000000000000000000000000000000..aaf0bbd216c6e2c2ed1c91f9f2128706bc8176b6 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w-members.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4928ee1f6514837c5f9bc64084d529b7b584ecd5 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c850beb3be3f09bc68c62d9b5a01364bd3fb410d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w.png.i new file mode 100644 index 0000000000000000000000000000000000000000..47109598ceb321d9c37d37775c467d7fa032f802 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r2__w.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w-members.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..32223ea3dd0e16a53669b35f2c0c283a99ee1ff2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5093c62edc745e2a09dfc8d07162f67b43c8a5f9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w.png.i new file mode 100644 index 0000000000000000000000000000000000000000..72ea7cf03277b06092d48e4852e9f90600cb5f4b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r3__w.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3-members.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2270e328b1fcfbee5c098b8047e624fd2da97976 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c79288ba7c930ae8fc33be632b0d8d8be0dff9a4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3.png.i new file mode 100644 index 0000000000000000000000000000000000000000..57e118d754e8e58db19df10ac23d9bc7aa1d5bdc Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/class__liquid__crystal______s__r______l__c__d3.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/classes.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/classes.html.i new file mode 100644 index 0000000000000000000000000000000000000000..bd1e75f55da13347536cdb9d49565a575c36acda Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/classes.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/closed.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/closed.png.i new file mode 100644 index 0000000000000000000000000000000000000000..c6493635d68aa738207ec574164b44db7d1bf505 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/closed.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/doxygen.css.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/doxygen.css.i new file mode 100644 index 0000000000000000000000000000000000000000..a9dc8017814dd67622289c021c7f57ea6cf2956b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/doxygen.css.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/doxygen.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/doxygen.png.i new file mode 100644 index 0000000000000000000000000000000000000000..5bdd3e53a2b8c37cec4156724ef9924896467c56 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/doxygen.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/files.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/files.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d658beb1f44253e090b40d4b0273ba83038d8d94 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/files.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/functions.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/functions.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6828e325b32cac0221cf6eab193c4a5a93b844ec Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/functions.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/functions__func.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/functions__func.html.i new file mode 100644 index 0000000000000000000000000000000000000000..57754e5b30e20ca9f01cd8ad172e2ba1d9582852 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/functions__func.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/functions__vars.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/functions__vars.html.i new file mode 100644 index 0000000000000000000000000000000000000000..17bc87855f32348e0567149950a578709427c768 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/functions__vars.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/globals.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals.html.i new file mode 100644 index 0000000000000000000000000000000000000000..75f23c9bb3a131fc9bbdb21d4e90e23f557862d0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__defs.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__defs.html.i new file mode 100644 index 0000000000000000000000000000000000000000..392985811a8b67460345d919841753daa1d99556 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__defs.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__enum.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__enum.html.i new file mode 100644 index 0000000000000000000000000000000000000000..847bd2d2287eaf37ebca67a865c4405d1a8d2cd8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__enum.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__eval.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__eval.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9f2d681135fbb0b207ea803f6278a78dd0ae6079 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__eval.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__func.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__func.html.i new file mode 100644 index 0000000000000000000000000000000000000000..42a9dc22a9b4bd9e65f6ce9688fb3ffa775c6f22 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__func.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__type.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__type.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a08da56e106fa1a2ba85d4cd1055ed6fd0232714 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/globals__type.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/hierarchy.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/hierarchy.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1358613d14e9f065304d9d343c813cdd275067e2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/hierarchy.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/index.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/index.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7e1a40e601d51ddc6696892c05f6f71c92229f15 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/index.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/installdox.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/installdox.i new file mode 100644 index 0000000000000000000000000000000000000000..57c5be1a4a10056f4f2c928c14bad65f24b78e75 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/installdox.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/jquery.js.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/jquery.js.i new file mode 100644 index 0000000000000000000000000000000000000000..508e46372174b250cd0ee3ef583357e9befca88e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/jquery.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/logo_google.jpg.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/logo_google.jpg.i new file mode 100644 index 0000000000000000000000000000000000000000..2ec2be32a6a3b039f218c8d4a65b7bb84ffd16c6 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/logo_google.jpg.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/nav__f.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/nav__f.png.i new file mode 100644 index 0000000000000000000000000000000000000000..16013bb00b0fe216d1b079b17365c72a83139102 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/nav__f.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/nav__h.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/nav__h.png.i new file mode 100644 index 0000000000000000000000000000000000000000..ec13f36dfcc94ad1bf4d90e81f2864ae2bbd3955 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/nav__h.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/open.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/open.png.i new file mode 100644 index 0000000000000000000000000000000000000000..6f65d3cf99b8afefe65294314e011d3224383d2d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/open.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__5f.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__5f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d088115a5d83676d8a151f901d14dda3c8d83460 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__5f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__61.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__61.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5f5e24cf47a4ccc7d325756cc632303f2c00447c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__61.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__62.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__62.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d61553d19ae26223497df91ab38274f5a911757c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__62.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__63.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__63.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1b386ef4f1a50e59bd51db838e73024678383b26 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__63.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__64.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__64.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0b3fa59758107e43bfe14eb6e29be0fb8179fe9c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__64.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__65.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__65.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4c882d086db8eeaefc292436f3f68013e4369e79 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__65.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__66.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a7e0353f3a503497e219661d616a95fc91636414 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__68.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__68.html.i new file mode 100644 index 0000000000000000000000000000000000000000..425c30b7c8f6851782b4ab0f13e704ea095fdc57 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__68.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__69.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__69.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a1409bfcdcaa2ceb27a5518e3316a1d9e0e47454 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__69.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2032a2c8030c3c5936c9d523a5b3239d3545f5b2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6d.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6d.html.i new file mode 100644 index 0000000000000000000000000000000000000000..796891620233270d5f49facb9610c039bdb89f12 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6d.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6e.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6e.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7db6eb7e49c93cf373b973d1a6b01f894286c840 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6e.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6f.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..05f7415e6721a6ce3611ee75f2efe7dc15cbbc90 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__6f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__70.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__70.html.i new file mode 100644 index 0000000000000000000000000000000000000000..22429f9a1b2fab4dc900100ba2ba0fd0c3b6bc46 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__70.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__72.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__72.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0fe622361337942b3768556b27dcc24702426597 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__72.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__73.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__73.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5ac346f975fb31bf078ffd7a74895d9fb03694e8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__73.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__74.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__74.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5954f842500d27670cb3db5a4a4fdf122f86a304 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__74.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__77.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__77.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0c93bb9606321d302898854a98aa1e558a89124d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/all__77.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/classes__69.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/classes__69.html.i new file mode 100644 index 0000000000000000000000000000000000000000..207725afe5212d21a916cbbdb7df75cab26e3e26 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/classes__69.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/classes__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/classes__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1c4ecf8e177806ff576c25c7022e31d28913366d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/classes__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/close.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/close.png.i new file mode 100644 index 0000000000000000000000000000000000000000..d8303502473cbc254b941f9ff528b2b53887ab7b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/close.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__5f.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__5f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..07bec7c3f85a4f547ac7a993ce64d02379d7a934 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__5f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__61.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__61.html.i new file mode 100644 index 0000000000000000000000000000000000000000..963a1f732ea2b8304e1fe21c2d6c0728d3af3f32 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__61.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__62.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__62.html.i new file mode 100644 index 0000000000000000000000000000000000000000..baa2d5b3ba1586319f0ff11535f69ee3f1789e36 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__62.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__63.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__63.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9f7a533d0967de3fe77c2bdbe6353437f2f04f26 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__63.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__64.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__64.html.i new file mode 100644 index 0000000000000000000000000000000000000000..010ae301a0df30ca0d98ecf57d40582763515271 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__64.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__65.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__65.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4c882d086db8eeaefc292436f3f68013e4369e79 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__65.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__66.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4aee9873d35a11455bcebd7ff1ca3edb69974787 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__68.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__68.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2e5852ddd0e60e0a28ef65cd30309adac8ff4062 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__68.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6259b619ee136bbb026f230b38cc8adb2fcdb430 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__72.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__72.html.i new file mode 100644 index 0000000000000000000000000000000000000000..222f1ba36a45c48b7e0116a74d51406774989b04 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__72.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__73.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__73.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c4ea3d145a610bcb6f1de72027c7cffbc2c98965 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__73.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__74.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__74.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5ed9072a4cfb178666a809a3ee7bf07d6e456102 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/defines__74.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enums__74.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enums__74.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7884f1622b2c28d6cbd0ccb909b2d13bb6481b9a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enums__74.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enumvalues__6e.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enumvalues__6e.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7449bce199db6adcb5b3be368d8fd4f3a422cb07 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enumvalues__6e.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enumvalues__70.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enumvalues__70.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ed33c4a100bf94ab72710361f9e334ab75c982b2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/enumvalues__70.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__66.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..238e0228dd767260d895f18dacb01db34c15ebf4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__69.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__69.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6e7575ecb9e267f70f712d733afbc3e7013117fb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__69.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a7297877fbeaee0bf204d0fc7f54593f05e32bab Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/files__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__61.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__61.html.i new file mode 100644 index 0000000000000000000000000000000000000000..41a54a7d753a224ca68213da008e8d34778265d2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__61.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__62.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__62.html.i new file mode 100644 index 0000000000000000000000000000000000000000..978e97786508b8805da01cf8684cc79b0786bfc1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__62.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__63.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__63.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b0b616df044f510cad5038084032fe5ec4c3741d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__63.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__64.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__64.html.i new file mode 100644 index 0000000000000000000000000000000000000000..220cf49d79a7b5f116b5f291cb846a0e29f9958e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__64.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__65.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__65.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a85cf812b50864b924a911eae104f0e03980977d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__65.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__66.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4dd8abb9331880dec40930e7d448d18c638750c9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__68.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__68.html.i new file mode 100644 index 0000000000000000000000000000000000000000..bb598587baf720c8b417ae6f7d56b65d4900a4ce Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__68.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__69.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__69.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2b9253f87dd9710ae7ac4f406652949a071b6caf Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__69.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..84a5aa2a9eeda8a31a79326bb743b87b500c8aa9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6d.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6d.html.i new file mode 100644 index 0000000000000000000000000000000000000000..796891620233270d5f49facb9610c039bdb89f12 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6d.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6e.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6e.html.i new file mode 100644 index 0000000000000000000000000000000000000000..621de2a023384f4f922992d39955e2ae122a8d3b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6e.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6f.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..05f7415e6721a6ce3611ee75f2efe7dc15cbbc90 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__6f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__70.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__70.html.i new file mode 100644 index 0000000000000000000000000000000000000000..8743f6d55553f64adcdd047f95c0a6b1a66308c9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__70.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__72.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__72.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a60444bba2ab18690954bb9a2c4aed88a1e2a9fb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__72.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__73.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__73.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6fe1c0f9eb41c9a776827238439db386a495d63e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__73.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__77.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__77.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0c93bb9606321d302898854a98aa1e558a89124d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/functions__77.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/mag__sel.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/mag__sel.png.i new file mode 100644 index 0000000000000000000000000000000000000000..9d19a32842e2e4a0ba9a7e350aba9bdcd897cf71 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/mag__sel.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/nomatches.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/nomatches.html.i new file mode 100644 index 0000000000000000000000000000000000000000..8ece14f69a14d2385780c032cf3f3f6df211978c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/nomatches.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search.css.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search.css.i new file mode 100644 index 0000000000000000000000000000000000000000..dc356c6310d51921f38cd27cdb389895a3105cdb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search.css.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search.js.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search.js.i new file mode 100644 index 0000000000000000000000000000000000000000..8184979ddc5a477582f7497554f6092914d0d1a9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__l.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__l.png.i new file mode 100644 index 0000000000000000000000000000000000000000..ed243a994ff2aebb6050f16b8b901d12469e63ce Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__l.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__m.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__m.png.i new file mode 100644 index 0000000000000000000000000000000000000000..9cbf40ed3997695b6651636ef1569892c3451a34 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__m.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__r.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__r.png.i new file mode 100644 index 0000000000000000000000000000000000000000..91806a9516429774c6edcf01a5d86ea4d4e25d8d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/search__r.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/typedefs__66.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/typedefs__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f900cd292adbb6590dbb8ccc7542a9c257bad2f1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/typedefs__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/search/variables__5f.html.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/variables__5f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3cc6c2dbc501562382027c8faa8a39fb7ca19127 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/search/variables__5f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__a.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__a.png.i new file mode 100644 index 0000000000000000000000000000000000000000..dbd3ec927e1d56049dd7679a66c6e3fd685abda5 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__a.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__b.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__b.png.i new file mode 100644 index 0000000000000000000000000000000000000000..36167c441dd18b41244144a99e3efa429faf13d0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__b.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__h.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__h.png.i new file mode 100644 index 0000000000000000000000000000000000000000..94d3c5c9db05b71bb356546ed4902e05afef3549 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__h.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__s.png.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__s.png.i new file mode 100644 index 0000000000000000000000000000000000000000..b29c2a26fac6ceac4fb4062b83e9d2cb156dd088 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/tab__s.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/docs/html/tabs.css.i b/libraries/LiquidCrystal/.hg/store/data/docs/html/tabs.css.i new file mode 100644 index 0000000000000000000000000000000000000000..6a89db8d9d4c8d61cfc0aa5575cb35590c4ca496 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/docs/html/tabs.css.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/doxygen__entrydb__2806.tmp.d b/libraries/LiquidCrystal/.hg/store/data/doxygen__entrydb__2806.tmp.d new file mode 100644 index 0000000000000000000000000000000000000000..a3ac6db5212dca7bca87dbc2ac940f787a722172 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/doxygen__entrydb__2806.tmp.d differ diff --git a/libraries/LiquidCrystal/.hg/store/data/doxygen__entrydb__2806.tmp.i b/libraries/LiquidCrystal/.hg/store/data/doxygen__entrydb__2806.tmp.i new file mode 100644 index 0000000000000000000000000000000000000000..073ffe7e61ad2759d5459f0f4ee52f6be0e55a36 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/doxygen__entrydb__2806.tmp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/doxygen__objdb__2806.tmp.i b/libraries/LiquidCrystal/.hg/store/data/doxygen__objdb__2806.tmp.i new file mode 100644 index 0000000000000000000000000000000000000000..3e59999aebf3036a396bf12f4bee33ead960c514 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/doxygen__objdb__2806.tmp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__4bit/_hello_world__4bit.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__4bit/_hello_world__4bit.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..44a37c1475d3bca0903d719ca330067d2cf06de4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__4bit/_hello_world__4bit.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__4bit/_hello_world__4bit.pde.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__4bit/_hello_world__4bit.pde.i new file mode 100644 index 0000000000000000000000000000000000000000..5f115d87b971457d9b42ded39f245992eeb19360 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__4bit/_hello_world__4bit.pde.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r/_hello_world___s_r.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r/_hello_world___s_r.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..60dfe956dac98d71f25325b29bd11f4ff0214bf8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r/_hello_world___s_r.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r/_hello_world___s_r.pde.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r/_hello_world___s_r.pde.i new file mode 100644 index 0000000000000000000000000000000000000000..faacf4321e7fdd4d56cfc5b347cfcf65e26f2cf3 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r/_hello_world___s_r.pde.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r1/_hello_world___s_r1.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r1/_hello_world___s_r1.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..da0ecc506273ee987a7307122a61fa92c2a6fbc4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r1/_hello_world___s_r1.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r1/_hello_world___s_r1.pde.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r1/_hello_world___s_r1.pde.i new file mode 100644 index 0000000000000000000000000000000000000000..4d3ba28c98bc21f8a2e7d472c4ca2c0c0745aff3 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world___s_r1/_hello_world___s_r1.pde.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__by_vac/_hello_world__by_vac.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__by_vac/_hello_world__by_vac.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..f5ea3bd1b55abe56c38b7a37db619ecc206d5cfa Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__by_vac/_hello_world__by_vac.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__i2c/_hello_world__i2c.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__i2c/_hello_world__i2c.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..814496fd5ce8cffb44677e4aa9a6f5aaba45893e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__i2c/_hello_world__i2c.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__i2c/_hello_world__i2c.pde.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__i2c/_hello_world__i2c.pde.i new file mode 100644 index 0000000000000000000000000000000000000000..ad4d769496f43627381b848f058a0d7e27560eeb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__i2c/_hello_world__i2c.pde.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__si2c/_hello_world__si2c.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__si2c/_hello_world__si2c.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..fa0e088042839be066b4470ea1649fc96b7ab2f0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_hello_world__si2c/_hello_world__si2c.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_l_c_di_speed/_l_c_di_speed.pde.i b/libraries/LiquidCrystal/.hg/store/data/examples/_l_c_di_speed/_l_c_di_speed.pde.i new file mode 100644 index 0000000000000000000000000000000000000000..692032436e461a786bc78246d4e67f25ee3890b4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_l_c_di_speed/_l_c_di_speed.pde.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_l_c_di_speed/_l_c_di_speed.txt.i b/libraries/LiquidCrystal/.hg/store/data/examples/_l_c_di_speed/_l_c_di_speed.txt.i new file mode 100644 index 0000000000000000000000000000000000000000..6febcab0673c0cbb36c8ccc3798b4ebd040f8b31 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_l_c_di_speed/_l_c_di_speed.txt.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_serial_display/_serial_display.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/_serial_display/_serial_display.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..71bca76cc0a9fa1f736fb4f3625b014d0ab1226b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_serial_display/_serial_display.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/_serial_display/_serial_display.pde.i b/libraries/LiquidCrystal/.hg/store/data/examples/_serial_display/_serial_display.pde.i new file mode 100644 index 0000000000000000000000000000000000000000..2d4008668fd0c89df61945bf77b62220c9609a34 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/_serial_display/_serial_display.pde.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o/i2c_l_c_dextra_i_o.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o/i2c_l_c_dextra_i_o.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..c7384b949afb67109a91b93a87fc0c43b39fa078 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o/i2c_l_c_dextra_i_o.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o/i2c_l_c_dextra_i_o.pde.i b/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o/i2c_l_c_dextra_i_o.pde.i new file mode 100644 index 0000000000000000000000000000000000000000..6176b0f1ba3c30c968797abfb9cff40b43fa24c1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o/i2c_l_c_dextra_i_o.pde.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o__temp_leonardo/i2c_l_c_dextra_i_o__temp_leonardo.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o__temp_leonardo/i2c_l_c_dextra_i_o__temp_leonardo.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..becdea7d74df0e8ff8844af3b7dc3c49f0426fbb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/i2c_l_c_dextra_i_o__temp_leonardo/i2c_l_c_dextra_i_o__temp_leonardo.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/performance_l_c_d/performance_l_c_d.ino.i b/libraries/LiquidCrystal/.hg/store/data/examples/performance_l_c_d/performance_l_c_d.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..2b7d28d6e6dfc7c856e327ba6a95236a36f7bd76 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/performance_l_c_d/performance_l_c_d.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/examples/performance_l_c_d/performance_l_c_d.pde.i b/libraries/LiquidCrystal/.hg/store/data/examples/performance_l_c_d/performance_l_c_d.pde.i new file mode 100644 index 0000000000000000000000000000000000000000..4bf50e07a32dd8f3015b78235b07071f2160c281 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/examples/performance_l_c_d/performance_l_c_d.pde.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/keywords.txt.i b/libraries/LiquidCrystal/.hg/store/data/keywords.txt.i new file mode 100644 index 0000000000000000000000000000000000000000..35830b18d1533dfd5e418148d5454f4c63faadab Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/keywords.txt.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_r_e_a_d_m_e.md.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_r_e_a_d_m_e.md.i new file mode 100644 index 0000000000000000000000000000000000000000..f177c1e0eee8b94b291c50488dbaa00136d27493 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_r_e_a_d_m_e.md.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master.cpp.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..8baf80418fb714fc76428d479e5d29b5e8c29421 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master.h.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master.h.i new file mode 100644 index 0000000000000000000000000000000000000000..dbd43f6422dcdbe2579e0fdce5653cdabf5254e5 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master___l_i_c_e_n_s_e.txt.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master___l_i_c_e_n_s_e.txt.i new file mode 100644 index 0000000000000000000000000000000000000000..04cb518d0aec98ea1f0555396c6c01d3356e5cdd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/_soft_i2_c_master___l_i_c_e_n_s_e.txt.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_b_m_a020_soft/_b_m_a020_soft.ino.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_b_m_a020_soft/_b_m_a020_soft.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..230b11b200d0ee2be53a03bb6f04e2141498d6ad Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_b_m_a020_soft/_b_m_a020_soft.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_eeprom24_a_a1024_soft/_eeprom24_a_a1024_soft.ino.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_eeprom24_a_a1024_soft/_eeprom24_a_a1024_soft.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..fc273a3bb201f0278ee242798546f279a96ff63d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_eeprom24_a_a1024_soft/_eeprom24_a_a1024_soft.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_i2_c_scan_soft/_i2_c_scan_soft.ino.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_i2_c_scan_soft/_i2_c_scan_soft.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..0e16537aee400a49dc7b80c574539fb12ec298c1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_i2_c_scan_soft/_i2_c_scan_soft.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_m_l_x90614_soft/_m_l_x90614_soft.ino.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_m_l_x90614_soft/_m_l_x90614_soft.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..3aea2cb0a81532ae523f10f0144823e1dd0120c1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_m_l_x90614_soft/_m_l_x90614_soft.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_t_s_l2561_soft/_t_s_l2561_soft.h.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_t_s_l2561_soft/_t_s_l2561_soft.h.i new file mode 100644 index 0000000000000000000000000000000000000000..d5283da66f991f7db83209c2c2616ab5a7cee140 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_t_s_l2561_soft/_t_s_l2561_soft.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_t_s_l2561_soft/_t_s_l2561_soft.ino.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_t_s_l2561_soft/_t_s_l2561_soft.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..6c5ccf9dd7bd7015cec5fb48d1bfa6ce41d90188 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/_t_s_l2561_soft/_t_s_l2561_soft.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/stretch_test/stretch_test.ino.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/stretch_test/stretch_test.ino.i new file mode 100644 index 0000000000000000000000000000000000000000..8eb28434cbea2e39164896298bbd7f46a9ec0f53 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/examples/stretch_test/stretch_test.ino.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/license.txt.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/license.txt.i new file mode 100644 index 0000000000000000000000000000000000000000..96281b4dcb50d5adb2073792d9d99a9447d7b210 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master/license.txt.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master.cpp.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master.cpp.i new file mode 100644 index 0000000000000000000000000000000000000000..0aae1fffe1868896dd9e92b0de8c1315ed16b372 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master.cpp.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master.h.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master.h.i new file mode 100644 index 0000000000000000000000000000000000000000..8584eac981dd340b330010aa66fd1e141c975047 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master.h.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master___l_i_c_e_n_s_e.txt.i b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master___l_i_c_e_n_s_e.txt.i new file mode 100644 index 0000000000000000000000000000000000000000..7418748cfb02da641bb58c40a7b1970a19676dd8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/thirdparty libraries/_soft_i2_c_master__/_soft_i2_c_master___l_i_c_e_n_s_e.txt.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/_doxyfile.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/_doxyfile.i new file mode 100644 index 0000000000000000000000000000000000000000..759fd7ee0be5b7f8a956c2a071d08c6a2f12609a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/_doxyfile.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/def/doxygen.def.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/def/doxygen.def.i new file mode 100644 index 0000000000000000000000000000000000000000..cc2612d7d159367e6b26754439e7a86b0047bbd7 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/def/doxygen.def.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/def/doxygen.def.txt.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/def/doxygen.def.txt.i new file mode 100644 index 0000000000000000000000000000000000000000..01178fd6525f1a65b92406aa14025b228bd864ca Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/def/doxygen.def.txt.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..cb98a9bdc5821c413f96c9b25587398c18735d0c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6c07435716719cb23804dad4f4a7fe3679c4256b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..46598732c834ac1a1b2a9bee58715322d1c45cf3 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4ab35354cfb0af8eab34168c3ba0c617d0f866cb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__fast__i__o__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1c3e67e51fcd98765a228787b6e0431359744c42 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9ec8398b78b612b7a9f872319f17065698c1af73 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7db2bcfdaf571eb680e6dcfcd26f668e1edf6976 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2a7ab721f11d4a1cdeff300c8aec52000ed380c8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__i2__c__i__o__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9b323a81345b89be56ba1b19c3e78f5b9d2ab128 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c9b928e4712f890c7e0ce90e14d7e088ceabd974 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c8ad73c5f3e3aa68268f1a7f589f968591f647b5 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e61b3bb0ae3a5274201621f011575a0dcf1d264f Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__l__c__d__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..028dc3194d86bd4ca58c91cc57181c70096d3f9c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5b3d5c80e78b35ae6718f569fb869e2b128df47c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7af283c09a948ab50a5f56b2913c726184fad3c9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f4d7dfb16a7043531c673fd55abc46f482316752 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..aa97607f9a69d3a908763be191d4a6a1a054f362 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0f5b3771f1172b9196831690026d318b74536371 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..05818ee78cc356b0f50ffb62d4864002f6decd19 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c868dda2f93b419ca5ec79a8bd1923880b997f82 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..10e22e8e82e995f4ea973aa2e377897fe3a8eb9b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c9fc01260ff83ce5fb8204d8e7d18c35eb7aea18 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..31e0f09ca933697f2210cd2e56506b4a60b00678 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1cdabac319fccbd5e0addcf8d51f9cd38f5bf66b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______i2__c______by__vac__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__i2__c__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__i2__c__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..8891370d3d9c46e61556dba36e73929bd3dd9afa Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__i2__c__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..338bdb915fcc5b0d44120c4faada27866777b520 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f7673432cd21b5bec6ad9f1f240ac3920af1b147 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..8544c91c2bfeec423bcf8d314d38cd5e98a0afde Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c9803c0c94d54f4f6784540dfb5c3885ca5bf5d5 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r1__w__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b0b7100e5802807126393c847d8b73fd24b887b7 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..686bb60b04b12e4dc25efedef29f32af35a60021 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..43df29830d73bbef4c56ecd935155b99a685b2d6 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2a0864636a1eccd343e69169b01e73b30b2d9793 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r2__w__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0b7d152e98e6cebaeabaf0fe8f84f3cf7a32c667 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f7f5e0da062e41bed31f24cc00cb8f23c10e9505 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b56a0cc32a07d9f774c806c7aa7ab78486003c82 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..49448238b8d26dfc5e07aa2f402f96c8a590860d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r3__w__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ab43e708c65050b9a01102658c7a92b59a95dcb0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..94f2577366fe0d8b571030608edc7f08ea18bf98 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..384a3f87f48344d131b226801c1e8f437602596b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4ced39ed68c28baf14e6159c480e17985929ef02 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e3a9759df6d499adfbcbff2cb2fe4abaecc06162 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c48679d9eda2ae16ee7c7e01b91eb6a722015710 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8cpp__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8h.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8h.html.i new file mode 100644 index 0000000000000000000000000000000000000000..453a07b1c6d4628ff9e8a8882f0d03a7a47e87ac Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8h.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..14794eb12a5ae01cc1a15183324d2fdf0aab0c3b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__liquid__crystal______s__r______l__c__d3__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__s__i2__c__i__o__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__s__i2__c__i__o__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7ce0ba2e25af6f852a3cb60e7b1e3faf4832f903 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__s__i2__c__i__o__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__soft__i2__c__master__8h__source.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__soft__i2__c__master__8h__source.html.i new file mode 100644 index 0000000000000000000000000000000000000000..8fecb7b67599dee9c065ee1f958be4c21697a4f2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/__soft__i2__c__master__8h__source.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/annotated.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/annotated.html.i new file mode 100644 index 0000000000000000000000000000000000000000..19dac9c4a01311f8ba4abcbe8a29297dfb93792e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/annotated.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/annotated__dup.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/annotated__dup.js.i new file mode 100644 index 0000000000000000000000000000000000000000..61042472f32b6fc347862b7da4539c8c5625c67c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/annotated__dup.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/arrowdown.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/arrowdown.png.i new file mode 100644 index 0000000000000000000000000000000000000000..055e8213c9867e9ba00d9f44ce6abf0597698dc5 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/arrowdown.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/arrowright.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/arrowright.png.i new file mode 100644 index 0000000000000000000000000000000000000000..a3de8cd3331040f4ebf1b803f59b910ea8f110c0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/arrowright.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/bc__s.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/bc__s.png.i new file mode 100644 index 0000000000000000000000000000000000000000..28d98518bf25a42e0980208f4b4f530cb763b1c9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/bc__s.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/bdwn.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/bdwn.png.i new file mode 100644 index 0000000000000000000000000000000000000000..42345a4c880d3f5e37dda7fd0bf879b59bcbf8e2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/bdwn.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..561f22908a8119143ba44a3cf47c6b4f3cbc2e2d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o.html.i new file mode 100644 index 0000000000000000000000000000000000000000..948ebdf86578d2e34f7b579c6a3f1338dd55b4ef Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o.js.i new file mode 100644 index 0000000000000000000000000000000000000000..871e96b8c4a31d651bb555e49ee43f29da65f088 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__i2__c__i__o.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ed0043dae30f63cb1682b6642f58383d31b4780a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ec32e2066bb28976fe9797965b7c296c9465b262 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.js.i new file mode 100644 index 0000000000000000000000000000000000000000..75db56f2c5e9a5026ab11d02ceb1bba900a8952e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.png.i new file mode 100644 index 0000000000000000000000000000000000000000..7b7dfdf7ab6e2f72452afa8ae2f8454f62c51206 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__l__c__d.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..73a02de6b24da309efb87c1c6a6c647da7f789f3 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ff4dda4f161b7ca00c8b9e9611d9b3bfdeb6763b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.js.i new file mode 100644 index 0000000000000000000000000000000000000000..40a1dcec0e4a4a94515096ec779c6d1c3c93e7df Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.png.i new file mode 100644 index 0000000000000000000000000000000000000000..e3725ad666240f9ef256a5e511a0cf894bee5b76 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..682092811a3ee6dc54a2f0d3f7fa9881c1e2c447 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..11cd2ada877d9014fba98466290895a4e8e347da Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.js.i new file mode 100644 index 0000000000000000000000000000000000000000..f9cb5d8f0921d9dfbea5835fa5d03e7368204aa4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.png.i new file mode 100644 index 0000000000000000000000000000000000000000..76c212631ee9e319eef4ff386fc8a2c620a8e47d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4f5c5dce1f827b7b7ece6faae6f71a45a0d14b54 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e630e79f5ac311b4e4ac3216d1fcc271753f8227 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.js.i new file mode 100644 index 0000000000000000000000000000000000000000..d6a015709e0ec7b7c50ed22aa300a42ef21860cd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.png.i new file mode 100644 index 0000000000000000000000000000000000000000..06f624311dee057a317b4b3c7b7254db32aee35b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______i2__c______by__vac.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c07b727f69d2ad867d248d27e6a7bf2b2bc8fbab Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4f77c924e1c57117e8b2605f6a06627362e65b6b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.js.i new file mode 100644 index 0000000000000000000000000000000000000000..67eb274b7499149c725e8e8e40c55b0605812c2e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.png.i new file mode 100644 index 0000000000000000000000000000000000000000..87349e8e0ede043ba1f1766ac4a73684e7a53e67 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__i2__c.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c976359323f667c581cf93fffed906d9596302a1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6ba496c4024d7a3cc3450ecc04f9a56b97f37184 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.js.i new file mode 100644 index 0000000000000000000000000000000000000000..d6c1f80536784fadc04347e541d09ce08b44fef6 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.png.i new file mode 100644 index 0000000000000000000000000000000000000000..0dad6b35856099932b55d26a330b887824e4ff7b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0b444ba374e444f50c857652af88bbef03aa8e94 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.html.i new file mode 100644 index 0000000000000000000000000000000000000000..192d24d269458fb29a6fc6820f38777624a261ed Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.js.i new file mode 100644 index 0000000000000000000000000000000000000000..18e3b42fac99547a59c26ae79e2d404828a669c8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.png.i new file mode 100644 index 0000000000000000000000000000000000000000..9a2155b080a2d144efc22d383d89f35f224acfe0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r1__w.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3c70ca66dd5ce6f04d3645f410985a96a5ce115e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d168e2e7fc317a117cb60596c9139f4026feb2f3 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.js.i new file mode 100644 index 0000000000000000000000000000000000000000..efa19d25bbe996a5047318993889e21a16cb3132 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.png.i new file mode 100644 index 0000000000000000000000000000000000000000..1c814dd890170ee6b091ed82addd3ea066af459e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r2__w.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6e73d81de167222d15191b2915d84f7a360e7ac5 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.html.i new file mode 100644 index 0000000000000000000000000000000000000000..bbf4f11b48593ee358cf0e371cdd69f29d89359c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.js.i new file mode 100644 index 0000000000000000000000000000000000000000..33f95ebcd338f5651241cd9a65352bd9f0c0488f Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.png.i new file mode 100644 index 0000000000000000000000000000000000000000..4edb1de241d19f0f862afe37b5a5f7fd71a3d364 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r3__w.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c6bc3eee09bda2d0ab1641853ff5f8280d2ddb64 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3.html.i new file mode 100644 index 0000000000000000000000000000000000000000..dd443390784da4ced5af1a0fbe451df4e82c80fc Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3.png.i new file mode 100644 index 0000000000000000000000000000000000000000..2d6bf752f9a6f5c3add9601da4e528a19130542d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__liquid__crystal______s__r______l__c__d3.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..985c4b07955073e8e559997849cd8270b07f888d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o.html.i new file mode 100644 index 0000000000000000000000000000000000000000..52b9f0f2aa969f705430a19345c8d0e17bb9ca78 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o.js.i new file mode 100644 index 0000000000000000000000000000000000000000..59713a65e24d01f0e6c5f00cbbc1797cd3d532cd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__s__i2__c__i__o.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master-members.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master-members.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ad5e18b68c27f15976b22d5ce5675b837dceaf4e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master-members.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master.html.i new file mode 100644 index 0000000000000000000000000000000000000000..db2e2fc37bbbac9181e08dfc9839825863fe1f53 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master.js.i new file mode 100644 index 0000000000000000000000000000000000000000..69bc5c2224306f84285c7faa9596c8242a66a1c2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/class__soft__i2__c__master.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/classes.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/classes.html.i new file mode 100644 index 0000000000000000000000000000000000000000..777e1c95cc009985f89b01ba81c8dce9c303e3b8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/classes.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/closed.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/closed.png.i new file mode 100644 index 0000000000000000000000000000000000000000..45bd756f3b1f565e630a5743e48250f8b02234fc Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/closed.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doc.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doc.png.i new file mode 100644 index 0000000000000000000000000000000000000000..baaf0383ad126e66d7f0796e2fc814033e3f1039 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doc.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doxygen.css.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doxygen.css.i new file mode 100644 index 0000000000000000000000000000000000000000..89553bbd641e898b37a46ea98356b3a1fcaefbf8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doxygen.css.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doxygen.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doxygen.png.i new file mode 100644 index 0000000000000000000000000000000000000000..89f0cc58efde27d93c0c20b4cc1b7708caeaaa03 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/doxygen.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/dynsections.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/dynsections.js.i new file mode 100644 index 0000000000000000000000000000000000000000..09b77f1571999d14c812524e49e7f11f0554b1d1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/dynsections.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/files.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/files.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3505ff8541c1812fd7fbda4da3c75ac729084218 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/files.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/files.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/files.js.i new file mode 100644 index 0000000000000000000000000000000000000000..175e1160f93b39849ffab7202e667def3e1c3f77 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/files.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/folderclosed.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/folderclosed.png.i new file mode 100644 index 0000000000000000000000000000000000000000..ae31023cb1e1593a70322b0f633278f0f03e2427 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/folderclosed.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/folderopen.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/folderopen.png.i new file mode 100644 index 0000000000000000000000000000000000000000..d6ab6d09feb89f21abcd71d1ebd045e94540f00a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/folderopen.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2blank.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2blank.png.i new file mode 100644 index 0000000000000000000000000000000000000000..cc2d8c88e66ca625b077257d5719887a18c6d8ad Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2blank.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2doc.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2doc.png.i new file mode 100644 index 0000000000000000000000000000000000000000..4507c9ec031ad3662dbc8956765ea41bb85d090e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2doc.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2folderclosed.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2folderclosed.png.i new file mode 100644 index 0000000000000000000000000000000000000000..536d8a72b7c243838615917e32640efc12caf39f Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2folderclosed.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2folderopen.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2folderopen.png.i new file mode 100644 index 0000000000000000000000000000000000000000..fb668ecc8282a2cb796a13f0f983d62482b619c9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2folderopen.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2lastnode.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2lastnode.png.i new file mode 100644 index 0000000000000000000000000000000000000000..cc2d8c88e66ca625b077257d5719887a18c6d8ad Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2lastnode.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2link.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2link.png.i new file mode 100644 index 0000000000000000000000000000000000000000..4507c9ec031ad3662dbc8956765ea41bb85d090e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2link.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2mlastnode.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2mlastnode.png.i new file mode 100644 index 0000000000000000000000000000000000000000..74960a7a93e4d81aa9729710ff1b9e587c5c8109 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2mlastnode.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2mnode.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2mnode.png.i new file mode 100644 index 0000000000000000000000000000000000000000..74960a7a93e4d81aa9729710ff1b9e587c5c8109 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2mnode.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2node.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2node.png.i new file mode 100644 index 0000000000000000000000000000000000000000..cc2d8c88e66ca625b077257d5719887a18c6d8ad Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2node.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2plastnode.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2plastnode.png.i new file mode 100644 index 0000000000000000000000000000000000000000..1c71c8efe2c1002b00e827b5acb11f4395dbf08e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2plastnode.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2pnode.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2pnode.png.i new file mode 100644 index 0000000000000000000000000000000000000000..1c71c8efe2c1002b00e827b5acb11f4395dbf08e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2pnode.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2splitbar.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2splitbar.png.i new file mode 100644 index 0000000000000000000000000000000000000000..779a3780c3eb417f32d6f347e4d1985cb37d2bc1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2splitbar.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2vertline.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2vertline.png.i new file mode 100644 index 0000000000000000000000000000000000000000..cc2d8c88e66ca625b077257d5719887a18c6d8ad Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/ftv2vertline.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions.html.i new file mode 100644 index 0000000000000000000000000000000000000000..069c1a123d8ffdfaa512b5055f5180ec0b9618f1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions__func.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions__func.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c5fd7f6593f892e514e58b3981d475d0ba9b43d7 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions__func.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions__vars.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions__vars.html.i new file mode 100644 index 0000000000000000000000000000000000000000..752807ded4b9c0994e1c56173a796c861f357308 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/functions__vars.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3da3238dea51e0748fd7a01f85fa9f7de7ec699d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__defs.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__defs.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2fd8b9dcabb0164926764180d94151c829eeff3a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__defs.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__enum.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__enum.html.i new file mode 100644 index 0000000000000000000000000000000000000000..440174494fc38ca5296f3b5f23c8ff29b7406c65 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__enum.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__eval.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__eval.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e3df84df445de7b13af93ab40451b0c47e010ea2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__eval.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__func.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__func.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4ac13f4863ab41ab29b368edc0188db6b78caa67 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__func.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__type.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__type.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f1a3f49c0d3784f9dc29ac896aae297744d25dc3 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/globals__type.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/hierarchy.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/hierarchy.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d458a23b6e057dfd6a7574b8f85c254f54ceb6a9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/hierarchy.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/hierarchy.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/hierarchy.js.i new file mode 100644 index 0000000000000000000000000000000000000000..804f0d1175c4b21d8f191c42ad7c40376b2667f7 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/hierarchy.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/index.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/index.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f9b524b7196c19f1b8562e82a208776db4b2c394 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/index.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/installdox.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/installdox.i new file mode 100644 index 0000000000000000000000000000000000000000..96c7b06cd834cd11331ea4036cc11290f179bc19 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/installdox.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/jquery.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/jquery.js.i new file mode 100644 index 0000000000000000000000000000000000000000..2fa8e5f8342d028dc2f92363a51410d874f0aa2e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/jquery.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/logo_google.jpg.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/logo_google.jpg.i new file mode 100644 index 0000000000000000000000000000000000000000..725252e0af4775443991b6b7b4e27418c4a295fb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/logo_google.jpg.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__f.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__f.png.i new file mode 100644 index 0000000000000000000000000000000000000000..37c860d9d44bc8df21c43707e570f61f9ea83681 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__f.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__g.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__g.png.i new file mode 100644 index 0000000000000000000000000000000000000000..13de989f21c861628a11892423e0cb0add1777db Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__g.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__h.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__h.png.i new file mode 100644 index 0000000000000000000000000000000000000000..823eba3402f1690d8c54912191f76215af4a4df1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/nav__h.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtree.css.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtree.css.i new file mode 100644 index 0000000000000000000000000000000000000000..8a5ea577ec4e62ae4977a4b4270851685e26c896 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtree.css.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtree.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtree.js.i new file mode 100644 index 0000000000000000000000000000000000000000..5ea8383a789418a2fb15ac80479c4d0393298733 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtree.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtreedata.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtreedata.js.i new file mode 100644 index 0000000000000000000000000000000000000000..3b26e63eb93b17660d5ae12e2ebc2c2c98b4dfb1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtreedata.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtreeindex0.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtreeindex0.js.i new file mode 100644 index 0000000000000000000000000000000000000000..d1256911b23e5f400df5aa1c70d7388d8bb5b50f Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/navtreeindex0.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/open.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/open.png.i new file mode 100644 index 0000000000000000000000000000000000000000..b1cf844d5f1a02a5f9f76b93b378b41416d41702 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/open.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/pages.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/pages.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1865fe8ea1ee6b6f144c02202b452bc381d21392 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/pages.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/resize.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/resize.js.i new file mode 100644 index 0000000000000000000000000000000000000000..b07a5899f1296db489bab7591e9176f60857f5b7 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/resize.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__0.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__0.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0705e078c3573085979d0e54fca724f9a4b194dc Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__0.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__0.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__0.js.i new file mode 100644 index 0000000000000000000000000000000000000000..8f047fb78704efd8a18e4eef8e2d3f924d2bc041 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__0.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__1.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__1.html.i new file mode 100644 index 0000000000000000000000000000000000000000..16bee3a647c9675a341f70b0d4bd74356ae2b300 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__1.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__1.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__1.js.i new file mode 100644 index 0000000000000000000000000000000000000000..b2d232ed6c1df070b239e93b0543e9d325c474c2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__1.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__2.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__2.html.i new file mode 100644 index 0000000000000000000000000000000000000000..8dfe56b2acd911af3a2cc16536864848418810e4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__2.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__2.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__2.js.i new file mode 100644 index 0000000000000000000000000000000000000000..d63e46bf7161272cf69ea9108292ac2964a1fc6c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__2.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__3.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__3.html.i new file mode 100644 index 0000000000000000000000000000000000000000..2a3a316ccd7168473b2f74698c8bafb0e3ddf0ac Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__3.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__3.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__3.js.i new file mode 100644 index 0000000000000000000000000000000000000000..b1cf649724c3100bfd71a68c20ad9493e5506243 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__3.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__4.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__4.html.i new file mode 100644 index 0000000000000000000000000000000000000000..eaa5ebc1e6fd005e6da0e1f7e0d8c68030b17690 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__4.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__4.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__4.js.i new file mode 100644 index 0000000000000000000000000000000000000000..ed60d4db9af4cba7237083776d9ab17a91989cb0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__4.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e9f92b46eb8cb6c12ead7854d8de7312c7018d78 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5.js.i new file mode 100644 index 0000000000000000000000000000000000000000..f1d709557524d56d6813590d87f9240b2b7a0fa4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5f.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1bedc82ce8fcf1d2d69a7b5259ab1fe42f772158 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__5f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f7966a6496938b755c1647a443be68754fba1321 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6.js.i new file mode 100644 index 0000000000000000000000000000000000000000..4d9755edc4264c5fc0b165ccc56e8b90c341ae18 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__61.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__61.html.i new file mode 100644 index 0000000000000000000000000000000000000000..84c87d7bd0f25c294f5d3cbe126c55c024785fcc Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__61.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__62.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__62.html.i new file mode 100644 index 0000000000000000000000000000000000000000..626285d876accf10b3c31c377200a9a357915677 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__62.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__63.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__63.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3505b1de84b7784565782d051e07b4583ff38831 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__63.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__64.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__64.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9ebb60887989e9e517e0baf59d41eb1509b55bae Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__64.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__65.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__65.html.i new file mode 100644 index 0000000000000000000000000000000000000000..edad4467b2ef5073889f5a7468db4db18efbfd8e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__65.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__66.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5a49c1f28190efcdd5cf293f8253cb30290ba83d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__68.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__68.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6bfcacd2ee0e29a3b204f0bf788de6c748b15633 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__68.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__69.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__69.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ce3912842568cb50f53e67460d36b62b4a5fc185 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__69.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..06a38ca21222dee33ad5937cb6ef91809e55d27e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6d.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6d.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5d35e5f917bdd05d26d18102bd65b80798402966 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6d.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6e.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6e.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a68980b4b17e80caadc1099b1156aa29ff9ba960 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6e.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6f.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..21f5f87a8aac57517ea469f09d3fbc9d2952e9d9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__6f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__7.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__7.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1a368887d7925313f9dd494f09a2ad4f092cd76b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__7.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__7.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__7.js.i new file mode 100644 index 0000000000000000000000000000000000000000..6cf69afe2fb09952de0d6b6fced0cb75e214668b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__7.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__70.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__70.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a1748ef2ae6463d151782d854b09b494db2131cf Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__70.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__72.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__72.html.i new file mode 100644 index 0000000000000000000000000000000000000000..50994125eea4617aeb132463b9764ef2ba966569 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__72.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__73.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__73.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5a14cc5952aa9bb821c4ad3034f96bd4b8516830 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__73.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__74.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__74.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3b587ef444a0d58765ebcca7c9af2675ae4ccdf4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__74.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__77.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__77.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9fac9be9ad0ffd70fce6e6cc9c1d807aae1dbc61 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__77.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__8.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__8.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0c6b354f55f3e5ae9f83dc5bce0ead6bb2b746b4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__8.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__8.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__8.js.i new file mode 100644 index 0000000000000000000000000000000000000000..d78af26c3475710bbbb76410e0885539cba63170 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__8.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__9.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__9.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9212f71afed1850433d055454eab8d713f13c82a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__9.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__9.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__9.js.i new file mode 100644 index 0000000000000000000000000000000000000000..ac92efe5a9a0956416c78a5abe6f739ec9f49a40 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__9.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__a.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__a.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3752f5b3b3e19b94ce8a3018db03778e0466fffb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__a.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__a.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__a.js.i new file mode 100644 index 0000000000000000000000000000000000000000..7cc01a69551c020b01b4740872c12dd5519b58fd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__a.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__b.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__b.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1dd974ff560443380a0c85b6baeb6e598c8d2bef Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__b.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__b.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__b.js.i new file mode 100644 index 0000000000000000000000000000000000000000..b877671f467ffb5df26073e2897e5678cd7eae99 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__b.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..fbe6e0d61d72214a3d3c74545046229dcc931f9b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__c.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__c.js.i new file mode 100644 index 0000000000000000000000000000000000000000..d1bcdc34f6f9f846d4441aa47438a4957c5e5306 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__c.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__d.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__d.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e304048b5d17d1e7c1e7ef4d06abf414a4200b9e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__d.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__d.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__d.js.i new file mode 100644 index 0000000000000000000000000000000000000000..57022bfc652a221b01c0aa7ce5743ad9436b421d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/all__d.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__0.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__0.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f00dd94514cb56b9448bc46d04eed71ada1bd12b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__0.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__0.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__0.js.i new file mode 100644 index 0000000000000000000000000000000000000000..301011f8df081a47667f35ea3fe03f8fabc58e76 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__0.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__1.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__1.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6f9b4ee05b9218c0d2fe6abe1db11c4b84b4905b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__1.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__1.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__1.js.i new file mode 100644 index 0000000000000000000000000000000000000000..ade58ff5c361768d0b27f3ae7238a883601a78d0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__1.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__2.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__2.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0ee78e0a5ade94ecb8c77cbbdfd4ffd967b090a4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__2.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__2.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__2.js.i new file mode 100644 index 0000000000000000000000000000000000000000..acbfcf84ea0fac50629566610059fd8ee4afc999 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__2.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__69.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__69.html.i new file mode 100644 index 0000000000000000000000000000000000000000..a37085a2527ab640f6c8304c483f9babf6b61d0a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__69.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7f7e45c7fc19ce1b0df2717ca017887fded2e41d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/classes__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/close.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/close.png.i new file mode 100644 index 0000000000000000000000000000000000000000..b9639f00f4354b616e7e220e7f60843f3c842b08 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/close.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__5f.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__5f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..46ecef4ce4f4a1b15bf224c0d666407dab48b5f2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__5f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__61.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__61.html.i new file mode 100644 index 0000000000000000000000000000000000000000..fb0304f176be51e69e988e3db01d04ea15c8bd7c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__61.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__62.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__62.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c44889f48d5f62d92f78e644bbb73606b3dd5233 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__62.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__63.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__63.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ab12f3b4f04fe52c36c3a887172c5d9d383f63e1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__63.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__64.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__64.html.i new file mode 100644 index 0000000000000000000000000000000000000000..994003c94a01feaa8f3ec60175de4bf05db1be83 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__64.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__65.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__65.html.i new file mode 100644 index 0000000000000000000000000000000000000000..edad4467b2ef5073889f5a7468db4db18efbfd8e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__65.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__66.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e2d13c141bb5049feb29e555e3b104f66767412d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__68.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__68.html.i new file mode 100644 index 0000000000000000000000000000000000000000..118c71f04c7702319e6e1ea7d1183bf7653176eb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__68.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..8841d88c2e82e55627addf45a32f324a8e5ceab7 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__72.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__72.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1baddd8de7d008f33180976b035ac19a3b900e70 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__72.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__73.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__73.html.i new file mode 100644 index 0000000000000000000000000000000000000000..bad99b8ebc4b992018ddc59bb234c05242ff907b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__73.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__74.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__74.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c5d8751a24aef02a2507e825b469d8df00406485 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/defines__74.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enums__74.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enums__74.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6fff098ccb47f29744cca6015009b436c6b8d16b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enums__74.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__68.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__68.html.i new file mode 100644 index 0000000000000000000000000000000000000000..37a1c819e20d8bbff06477c0b6ce7e6677325cf7 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__68.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__6e.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__6e.html.i new file mode 100644 index 0000000000000000000000000000000000000000..bc5179b3e3a6b5f9ce922df66a1587851306b23a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__6e.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__70.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__70.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b3048ffdd390c77e674ae6dabe073ae6a528b1bd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__70.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__73.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__73.html.i new file mode 100644 index 0000000000000000000000000000000000000000..7a69744cb96c5ef8f41d5fbde4618e091ceace21 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/enumvalues__73.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__66.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b756129be1cc40331ad67e3a4b3cff452890dd77 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__69.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__69.html.i new file mode 100644 index 0000000000000000000000000000000000000000..534dd89de3ff705ed1804ae4a67d724f4da2c010 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__69.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0d4d9e0e1bf9d0a07c965c4ac01c433d2c6d1518 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/files__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__0.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__0.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4e10e43f9eebcbc563e3ee2713ec99b584101cd8 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__0.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__0.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__0.js.i new file mode 100644 index 0000000000000000000000000000000000000000..8f047fb78704efd8a18e4eef8e2d3f924d2bc041 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__0.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__1.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__1.html.i new file mode 100644 index 0000000000000000000000000000000000000000..de126251e9ec0b4f80857416fe49d0cfac37a301 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__1.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__1.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__1.js.i new file mode 100644 index 0000000000000000000000000000000000000000..b2d232ed6c1df070b239e93b0543e9d325c474c2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__1.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__2.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__2.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5b2aaa581d34f6685b743b254c37f7a104dd02dd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__2.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__2.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__2.js.i new file mode 100644 index 0000000000000000000000000000000000000000..d63e46bf7161272cf69ea9108292ac2964a1fc6c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__2.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__3.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__3.html.i new file mode 100644 index 0000000000000000000000000000000000000000..4ad88ab900d38c1afd0c7148e920608541070a4d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__3.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__3.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__3.js.i new file mode 100644 index 0000000000000000000000000000000000000000..b1cf649724c3100bfd71a68c20ad9493e5506243 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__3.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__4.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__4.html.i new file mode 100644 index 0000000000000000000000000000000000000000..6d8b16866ad94114c80f3e4729e22a37e6f2a6dc Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__4.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__4.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__4.js.i new file mode 100644 index 0000000000000000000000000000000000000000..ed60d4db9af4cba7237083776d9ab17a91989cb0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__4.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__5.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__5.html.i new file mode 100644 index 0000000000000000000000000000000000000000..3a7b126fe47bf6f3280d0ed43511348c4cfd5932 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__5.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__5.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__5.js.i new file mode 100644 index 0000000000000000000000000000000000000000..46b2054b9a66dc1f3b9ff588e47d3fa4d75dbb18 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__5.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d1320b8dadb3bf242c2905ea2e62ad21f69d2c78 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6.js.i new file mode 100644 index 0000000000000000000000000000000000000000..1bb035a91f393dc842acd88755d6cad4f40438c1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__61.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__61.html.i new file mode 100644 index 0000000000000000000000000000000000000000..da8ba6f8e767f75e0539272f997ab39bfbe63ca1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__61.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__62.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__62.html.i new file mode 100644 index 0000000000000000000000000000000000000000..594e407d795a7067884465e36be51c30940563ad Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__62.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__63.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__63.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5c090a735540930df2061a8542ab3b48d678b93c Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__63.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__64.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__64.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1326545cc0a3de2cc0d8dd9ea712eb5d618498eb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__64.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__65.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__65.html.i new file mode 100644 index 0000000000000000000000000000000000000000..f481106ddf16d6e1fa91b9b825809c52023892bc Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__65.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__66.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c0da38aa789313100e219ceea98052e35f7cda2a Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__68.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__68.html.i new file mode 100644 index 0000000000000000000000000000000000000000..51ee5b2ed2679a1309bbb6c0960b5ce20df905cd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__68.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__69.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__69.html.i new file mode 100644 index 0000000000000000000000000000000000000000..30bb7c047e8a34380280714b60a956b2dfbfe2dc Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__69.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..cb6200255e65d1c94346f6fae6f4cbe266e6c105 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6d.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6d.html.i new file mode 100644 index 0000000000000000000000000000000000000000..5d35e5f917bdd05d26d18102bd65b80798402966 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6d.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6e.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6e.html.i new file mode 100644 index 0000000000000000000000000000000000000000..167c2106521d79d17e9fdfec664686790f59b6b9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6e.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6f.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..21f5f87a8aac57517ea469f09d3fbc9d2952e9d9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__6f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__7.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__7.html.i new file mode 100644 index 0000000000000000000000000000000000000000..712186fd8db02e79cde3b45e7babeefadb3c0a69 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__7.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__7.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__7.js.i new file mode 100644 index 0000000000000000000000000000000000000000..6cf69afe2fb09952de0d6b6fced0cb75e214668b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__7.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__70.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__70.html.i new file mode 100644 index 0000000000000000000000000000000000000000..85b5f755602cd648d20d72bf2d8fbbab4d702c10 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__70.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__72.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__72.html.i new file mode 100644 index 0000000000000000000000000000000000000000..e20916b9d04c9b1bc9407f06b2c155ff6771a59b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__72.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__73.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__73.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d377c4afa6dae6fab14c3b5df2f9f4f501b04a29 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__73.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__77.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__77.html.i new file mode 100644 index 0000000000000000000000000000000000000000..9fac9be9ad0ffd70fce6e6cc9c1d807aae1dbc61 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__77.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__8.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__8.html.i new file mode 100644 index 0000000000000000000000000000000000000000..d4ea69bac27f1a42f9986cd48e7a3b88f89a60e9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__8.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__8.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__8.js.i new file mode 100644 index 0000000000000000000000000000000000000000..d78af26c3475710bbbb76410e0885539cba63170 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__8.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__9.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__9.html.i new file mode 100644 index 0000000000000000000000000000000000000000..b36b3f747fe2f632f213c7d9476aa48a1401b7ac Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__9.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__9.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__9.js.i new file mode 100644 index 0000000000000000000000000000000000000000..ac92efe5a9a0956416c78a5abe6f739ec9f49a40 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__9.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__a.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__a.html.i new file mode 100644 index 0000000000000000000000000000000000000000..c74c2fd1df3ec5915fa80cc758cfb0782a890dcf Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__a.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__a.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__a.js.i new file mode 100644 index 0000000000000000000000000000000000000000..7cc01a69551c020b01b4740872c12dd5519b58fd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__a.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__b.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__b.html.i new file mode 100644 index 0000000000000000000000000000000000000000..ca97da313fc6af4c8c09e3eab8cd8cb4190d0f75 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__b.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__b.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__b.js.i new file mode 100644 index 0000000000000000000000000000000000000000..90ccc0f0592cea6bacdd1ed339775186e29c1cf5 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__b.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__c.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__c.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0c38974786f8fee2f32754ccc6559a29f1519b96 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__c.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__c.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__c.js.i new file mode 100644 index 0000000000000000000000000000000000000000..27ed50f5e8387363a78a9eacbc2b87edfa1185fd Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__c.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__d.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__d.html.i new file mode 100644 index 0000000000000000000000000000000000000000..688d5836dce18b7e19bea0ea37a6a3000afcc754 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__d.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__d.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__d.js.i new file mode 100644 index 0000000000000000000000000000000000000000..57022bfc652a221b01c0aa7ce5743ad9436b421d Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/functions__d.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/mag__sel.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/mag__sel.png.i new file mode 100644 index 0000000000000000000000000000000000000000..d8311d735c4a8b31f7448debffa61962a4e0f7fa Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/mag__sel.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/nomatches.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/nomatches.html.i new file mode 100644 index 0000000000000000000000000000000000000000..635878df769f25de24936cf19e099034efa91ad2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/nomatches.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/pages__0.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/pages__0.html.i new file mode 100644 index 0000000000000000000000000000000000000000..1009e8e8be63a5b25e4ffae086062d5394984e17 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/pages__0.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/pages__0.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/pages__0.js.i new file mode 100644 index 0000000000000000000000000000000000000000..f50ec36441e99115cb4b24fed8e0945f38a35127 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/pages__0.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search.css.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search.css.i new file mode 100644 index 0000000000000000000000000000000000000000..d689c95182ec2960ad252594d34004c9f66ac77b Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search.css.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search.js.i new file mode 100644 index 0000000000000000000000000000000000000000..5de0b30cd8ed3e366c950fa3b2c36981819353e2 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__l.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__l.png.i new file mode 100644 index 0000000000000000000000000000000000000000..b075fbdaf40e015341c0c2da2a1c6dadbaab97ee Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__l.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__m.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__m.png.i new file mode 100644 index 0000000000000000000000000000000000000000..044da961716589f7bfde886e5a6cd8dd5ecbba80 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__m.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__r.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__r.png.i new file mode 100644 index 0000000000000000000000000000000000000000..9522ebb80878df2e10adc8fb5c7388824ccd9a38 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/search__r.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/searchdata.js.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/searchdata.js.i new file mode 100644 index 0000000000000000000000000000000000000000..bc50e20ae39d7fb52d0268cf85327d67f78419b1 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/searchdata.js.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/typedefs__66.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/typedefs__66.html.i new file mode 100644 index 0000000000000000000000000000000000000000..0d2600aa86a154fd93df3c21e322d2e8b1445be4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/typedefs__66.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/variables__5f.html.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/variables__5f.html.i new file mode 100644 index 0000000000000000000000000000000000000000..81efc26b2127b34b238069bd7ad8aaf04dccb9e4 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/search/variables__5f.html.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/splitbar.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/splitbar.png.i new file mode 100644 index 0000000000000000000000000000000000000000..708e33b601d83c35cb3c6b11d2634eacfadab110 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/splitbar.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/sync__off.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/sync__off.png.i new file mode 100644 index 0000000000000000000000000000000000000000..58f7c46f9c87e177dd1ec7347428f5caeaa311d0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/sync__off.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/sync__on.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/sync__on.png.i new file mode 100644 index 0000000000000000000000000000000000000000..42a8cd44b2d1274d153acef9c7a3847265acce9f Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/sync__on.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__a.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__a.png.i new file mode 100644 index 0000000000000000000000000000000000000000..00851d7b7c63329a4e98173b69a1e87963cfef51 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__a.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__b.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__b.png.i new file mode 100644 index 0000000000000000000000000000000000000000..fb96b247046d9798b34f62361abf87be089e0f51 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__b.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__h.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__h.png.i new file mode 100644 index 0000000000000000000000000000000000000000..bf7c4699370d236ac96115d45e829b88b9021bf0 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__h.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__s.png.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__s.png.i new file mode 100644 index 0000000000000000000000000000000000000000..3802c5364696930c57c59585eaa1c5267e677fae Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tab__s.png.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tabs.css.i b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tabs.css.i new file mode 100644 index 0000000000000000000000000000000000000000..18897e99422627476ea1a80f20be3880d4c4f7bb Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/utility/docs/html/tabs.css.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/~2ehgignore.i b/libraries/LiquidCrystal/.hg/store/data/~2ehgignore.i new file mode 100644 index 0000000000000000000000000000000000000000..496c78cbad7d38d6bc0848c110ec83a980f910a9 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/~2ehgignore.i differ diff --git a/libraries/LiquidCrystal/.hg/store/data/~2ehgtags.i b/libraries/LiquidCrystal/.hg/store/data/~2ehgtags.i new file mode 100644 index 0000000000000000000000000000000000000000..1da1585387ccf185b59c3c07f187e31ffb87a781 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/data/~2ehgtags.i differ diff --git a/libraries/LiquidCrystal/.hg/store/dh/utility/docs/html/md___users_fmalpartida__documents_development_mercurial_r945e6cf0c5a25adbd13121dc8faf9920ab60c890.i b/libraries/LiquidCrystal/.hg/store/dh/utility/docs/html/md___users_fmalpartida__documents_development_mercurial_r945e6cf0c5a25adbd13121dc8faf9920ab60c890.i new file mode 100644 index 0000000000000000000000000000000000000000..a23ac6513337ecfdf22acb53209518dce46f458e Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/dh/utility/docs/html/md___users_fmalpartida__documents_development_mercurial_r945e6cf0c5a25adbd13121dc8faf9920ab60c890.i differ diff --git a/libraries/LiquidCrystal/.hg/store/fncache b/libraries/LiquidCrystal/.hg/store/fncache new file mode 100644 index 0000000000000000000000000000000000000000..5431df1c372c27ec0dd3736d7fef73e0e501dff2 --- /dev/null +++ b/libraries/LiquidCrystal/.hg/store/fncache @@ -0,0 +1,520 @@ +data/docs/html/_liquid_crystal___s_r_8h_source.html.i +data/docs/html/search/defines_68.html.i +data/utility/docs/def/doxygen.def.i +data/utility/docs/html/navtreeindex0.js.i +data/utility/docs/html/search/all_61.html.i +data/utility/docs/html/search/all_68.html.i +data/utility/docs/html/hierarchy.js.i +data/utility/docs/html/class_liquid_crystal___s_r3_w.js.i +data/docs/html/search/search_l.png.i +data/docs/html/class_liquid_crystal___s_r.png.i +data/utility/docs/html/folderopen.png.i +data/docs/html/globals_eval.html.i +data/utility/docs/html/search/all_2.js.i +data/LiquidCrystal.h.i +data/LCD.h.i +data/utility/docs/html/class_liquid_crystal___s_r2_w-members.html.i +data/utility/docs/html/search/classes_69.html.i +data/utility/docs/html/ftv2mnode.png.i +data/utility/docs/html/search/functions_68.html.i +data/LiquidCrystal_SI2C.h.i +data/docs/html/search/search.css.i +data/examples/performanceLCD/performanceLCD.pde.i +data/utility/docs/html/globals_func.html.i +data/utility/docs/html/_i2_c_i_o_8cpp_source.html.i +data/docs/html/search/functions_65.html.i +data/utility/docs/html/doc.png.i +data/docs/html/annotated.html.i +data/docs/html/class_liquid_crystal___s_r___l_c_d3.html.i +data/.hgtags.i +data/utility/docs/html/functions_vars.html.i +data/utility/docs/html/search/defines_68.html.i +data/docs/html/class_i2_c_i_o.html.i +data/utility/docs/html/ftv2folderclosed.png.i +data/utility/docs/html/search/defines_65.html.i +data/utility/docs/html/search/all_6f.html.i +data/utility/docs/html/search/all_73.html.i +data/docs/html/search/search_m.png.i +data/utility/docs/html/search/functions_8.js.i +data/utility/docs/html/search/all_7.js.i +data/utility/docs/html/search/functions_6.js.i +data/docs/html/_liquid_crystal___s_r_8cpp_source.html.i +data/utility/docs/html/search/all_64.html.i +data/utility/docs/html/search/enumvalues_68.html.i +data/utility/docs/html/nav_h.png.i +data/docs/html/_liquid_crystal___s_r3_w_8h.html.i +data/utility/docs/html/globals.html.i +data/utility/docs/html/search/variables_5f.html.i +data/docs/html/tab_h.png.i +data/utility/docs/html/arrowright.png.i +data/utility/docs/html/search/functions_c.js.i +data/utility/docs/html/search/files_6c.html.i +data/utility/docs/html/search/all_6e.html.i +data/utility/docs/html/search/classes_2.js.i +data/utility/docs/html/search/all_62.html.i +data/utility/docs/html/classes.html.i +data/docs/html/tabs.css.i +data/utility/docs/html/class_liquid_crystal___s_r.js.i +data/utility/docs/html/_liquid_crystal___s_r2_w_8h_source.html.i +data/examples/SerialDisplay/SerialDisplay.pde.i +data/utility/docs/html/arrowdown.png.i +data/utility/docs/html/class_liquid_crystal___s_r2_w.html.i +data/docs/html/class_liquid_crystal.png.i +data/utility/docs/html/search/all_8.js.i +data/utility/docs/html/search/enumvalues_70.html.i +data/utility/docs/html/class_liquid_crystal-members.html.i +data/docs/html/search/defines_61.html.i +data/utility/docs/html/_liquid_crystal_8cpp_source.html.i +data/LiquidCrystal_SR_LCD3.cpp.i +data/utility/docs/html/search/classes_0.html.i +data/docs/html/class_l_c_d.png.i +data/docs/html/search/all_5f.html.i +data/utility/docs/html/class_l_c_d.png.i +data/utility/docs/html/search/all_4.html.i +data/utility/docs/html/class_l_c_d-members.html.i +data/utility/docs/html/tabs.css.i +data/utility/docs/html/_liquid_crystal___s_r1_w_8h_source.html.i +data/utility/docs/html/class_liquid_crystal.png.i +data/docs/html/search/all_72.html.i +data/utility/docs/html/search/pages_0.html.i +data/docs/html/search/nomatches.html.i +data/utility/docs/html/search/functions_3.html.i +data/docs/html/_liquid_crystal___s_r2_w_8cpp.html.i +data/LiquidCrystal_SR1W.cpp.i +data/LiquidCrystal_I2C_ByVac.h.i +data/utility/docs/html/class_s_i2_c_i_o.js.i +data/docs/html/doxygen.png.i +data/utility/docs/html/class_i2_c_i_o-members.html.i +data/docs/html/_liquid_crystal___s_r2_w_8h_source.html.i +data/docs/html/search/all_74.html.i +data/utility/docs/html/_fast_i_o_8h_source.html.i +data/docs/html/search/functions_77.html.i +data/LiquidCrystal_SR.cpp.i +data/utility/docs/html/_liquid_crystal___s_r1_w_8h.html.i +data/def/doxygen.def.i +data/utility/docs/html/search/all_3.html.i +data/docs/html/search/defines_73.html.i +data/docs/html/search/all_61.html.i +data/docs/html/search/functions_70.html.i +data/utility/docs/html/_l_c_d_8h.html.i +data/docs/html/search/defines_74.html.i +data/docs/html/_i2_c_i_o_8h.html.i +data/docs/html/search/functions_61.html.i +data/utility/docs/html/search/functions_d.html.i +data/docs/html/search/files_66.html.i +data/utility/docs/html/search/functions_3.js.i +data/docs/html/tab_s.png.i +data/docs/html/search/functions_6e.html.i +data/docs/html/search/files_6c.html.i +data/utility/docs/html/pages.html.i +data/thirdparty libraries/SoftI2CMaster/examples/TSL2561Soft/TSL2561Soft.h.i +data/docs/html/_l_c_d_8cpp.html.i +data/utility/docs/html/search/functions_4.html.i +data/utility/docs/html/search/all_4.js.i +data/utility/docs/html/search/all_d.js.i +data/utility/docs/html/search/functions_63.html.i +data/LiquidCrystal_SR_LCD3.h.i +data/utility/docs/html/resize.js.i +data/utility/docs/html/class_i2_c_i_o.html.i +data/thirdparty libraries/SoftI2CMaster/examples/Eeprom24AA1024Soft/Eeprom24AA1024Soft.ino.i +data/utility/docs/html/globals_type.html.i +data/examples/HelloWorld_si2c/HelloWorld_si2c.ino.i +data/utility/docs/html/_liquid_crystal_8h.html.i +data/utility/docs/html/class_soft_i2_c_master-members.html.i +data/docs/html/search/search.js.i +data/docs/html/_liquid_crystal___s_r3_w_8h_source.html.i +data/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8h_source.html.i +data/docs/html/search/variables_5f.html.i +data/docs/html/search/all_77.html.i +data/thirdparty libraries/SoftI2CMaster/SoftI2CMaster_LICENSE.txt.i +data/utility/docs/html/hierarchy.html.i +data/utility/docs/html/md___users_fmalpartida__documents_development_mercurial_repos__s_w__newliquid_crystal__r_e_a_d_m_e.html.i +data/docs/html/search/all_6d.html.i +data/docs/html/search/all_62.html.i +data/utility/docs/html/_liquid_crystal___s_r3_w_8h_source.html.i +data/utility/docs/html/search/functions_6f.html.i +data/LiquidCrystal_SR1.sch.i +data/docs/html/search/all_63.html.i +data/docs/html/class_liquid_crystal___s_r.html.i +data/docs/html/search/functions_62.html.i +data/utility/docs/html/search/functions_66.html.i +data/thirdparty libraries/SoftI2CMaster/SoftI2CMaster.h.i +data/docs/html/class_liquid_crystal___s_r___l_c_d3.png.i +data/utility/docs/html/search/functions_c.html.i +data/utility/docs/html/class_liquid_crystal___s_r2_w.js.i +data/LiquidCrystal_I2C_ByVac.cpp.i +data/utility/docs/html/search/all_5.html.i +data/utility/docs/html/doxygen.css.i +data/utility/docs/html/_liquid_crystal___s_r_8cpp_source.html.i +data/utility/docs/html/class_liquid_crystal___i2_c.html.i +data/utility/docs/html/ftv2node.png.i +data/utility/docs/html/search/all_6.js.i +data/utility/docs/html/class_liquid_crystal___s_r___l_c_d3.html.i +data/docs/html/search/typedefs_66.html.i +data/docs/html/_liquid_crystal___i2_c_8cpp.html.i +data/utility/docs/html/folderclosed.png.i +data/utility/docs/html/class_liquid_crystal___s_r2_w.png.i +data/docs/html/search/functions_63.html.i +data/utility/docs/html/search/defines_66.html.i +data/utility/docs/html/class_soft_i2_c_master.html.i +data/utility/docs/html/search/functions_6e.html.i +data/utility/docs/html/_soft_i2_c_master_8h_source.html.i +data/LiquidCrystal_SR3W.h.i +data/utility/docs/html/_l_c_d_8h_source.html.i +data/docs/html/tab_a.png.i +data/utility/docs/html/closed.png.i +data/utility/docs/html/search/all_77.html.i +data/docs/html/class_liquid_crystal___s_r2_w.png.i +data/docs/html/globals.html.i +data/thirdparty libraries/SoftI2CMaster/examples/I2CScanSoft/I2CScanSoft.ino.i +data/docs/html/logoGoogle.jpg.i +data/utility/docs/html/_liquid_crystal_8cpp.html.i +data/docs/html/class_liquid_crystal___i2_c.png.i +data/utility/docs/html/search/all_2.html.i +data/LiquidCrystal_4bit.cpp.i +data/docs/html/functions_func.html.i +data/utility/docs/html/dynsections.js.i +data/I2CIO.h.i +data/utility/docs/html/sync_off.png.i +data/utility/docs/html/_liquid_crystal___s_r1_w_8cpp.html.i +data/utility/docs/html/search/search.css.i +data/utility/docs/html/files.js.i +data/utility/docs/html/search/all_66.html.i +data/utility/docs/html/class_liquid_crystal___s_i2_c.png.i +data/examples/LCDiSpeed/LCDiSpeed.pde.i +data/examples/performanceLCD/performanceLCD.ino.i +data/utility/docs/html/search/defines_64.html.i +data/thirdparty libraries/SoftI2CMaster/SoftI2CMaster.cpp.i +data/utility/docs/html/search/functions_7.html.i +data/docs/html/_fast_i_o_8h_source.html.i +data/utility/docs/html/ftv2link.png.i +data/docs/html/search/all_64.html.i +data/utility/docs/html/search/functions_a.html.i +data/docs/html/search/functions_6f.html.i +data/examples/HelloWorld_4bit/HelloWorld_4bit.pde.i +data/docs/html/class_liquid_crystal___i2_c.html.i +data/LiquidCrystal_I2C.cpp.i +data/utility/docs/html/class_liquid_crystal___s_r.png.i +data/keywords.txt.i +data/utility/docs/html/search/functions_9.html.i +data/docs/html/search/defines_63.html.i +data/docs/html/_fast_i_o_8h.html.i +data/docs/html/search/defines_64.html.i +data/utility/docs/html/index.html.i +data/utility/docs/html/class_liquid_crystal___s_r1_w-members.html.i +data/utility/docs/html/_liquid_crystal___s_r_8h.html.i +data/utility/docs/html/_liquid_crystal___s_i2_c_8h_source.html.i +data/utility/docs/html/navtree.js.i +data/utility/docs/html/class_liquid_crystal___s_i2_c.js.i +data/docs/html/installdox.i +data/utility/docs/html/class_i2_c_i_o.js.i +data/LiquidCrystal_4bit.h.i +data/docs/html/search/all_70.html.i +data/utility/docs/html/_liquid_crystal___s_r3_w_8cpp_source.html.i +data/utility/docs/html/_liquid_crystal___i2_c_8cpp.html.i +data/utility/docs/html/search/all_5f.html.i +data/utility/docs/def/doxygen.def.txt.i +data/utility/docs/html/splitbar.png.i +data/docs/html/_liquid_crystal___s_r___l_c_d3_8h.html.i +data/docs/html/class_l_c_d-members.html.i +data/utility/docs/html/search/functions_0.js.i +data/examples/LCDiSpeed/LCDiSpeed.txt.i +data/docs/html/search/defines_6c.html.i +data/examples/HelloWorld_byVac/HelloWorld_byVac.ino.i +data/docs/html/_l_c_d_8h_source.html.i +data/utility/docs/html/files.html.i +data/docs/html/open.png.i +data/docs/html/class_liquid_crystal___s_r-members.html.i +data/docs/html/_liquid_crystal_8cpp.html.i +data/utility/docs/html/search/enums_74.html.i +data/docs/html/_liquid_crystal___s_r2_w_8cpp_source.html.i +data/docs/html/search/all_68.html.i +data/utility/docs/html/class_liquid_crystal___i2_c-members.html.i +data/utility/docs/html/search/functions_72.html.i +data/docs/html/class_liquid_crystal___s_r3_w.html.i +data/utility/docs/html/search/defines_61.html.i +data/docs/html/class_liquid_crystal___s_r2_w-members.html.i +data/LiquidCrystal_SR.h.i +data/delay_x.h.i +data/docs/html/_liquid_crystal___i2_c_8h_source.html.i +data/utility/docs/html/search/all_74.html.i +data/utility/docs/html/search/all_1.js.i +data/docs/html/search/defines_5f.html.i +data/SI2CIO.cpp.i +data/docs/html/search/all_6c.html.i +data/utility/docs/html/class_liquid_crystal___i2_c___by_vac-members.html.i +data/docs/html/_liquid_crystal_8cpp_source.html.i +data/utility/docs/html/_liquid_crystal___s_r3_w_8cpp.html.i +data/docs/html/search/functions_66.html.i +data/utility/docs/html/search/functions_62.html.i +data/utility/docs/html/_liquid_crystal___s_r2_w_8h.html.i +data/docs/html/files.html.i +data/utility/docs/html/_liquid_crystal___s_r2_w_8cpp_source.html.i +data/docs/html/tab_b.png.i +data/docs/html/functions.html.i +data/utility/docs/html/search/all_70.html.i +data/utility/docs/html/class_liquid_crystal___i2_c___by_vac.html.i +data/docs/html/index.html.i +data/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp.html.i +data/utility/docs/html/ftv2mlastnode.png.i +data/utility/docs/html/search/defines_62.html.i +data/LCD.cpp.i +data/utility/docs/html/ftv2pnode.png.i +data/docs/html/bc_s.png.i +data/examples/i2cLCDextraIO/i2cLCDextraIO.ino.i +data/docs/html/search/all_66.html.i +data/utility/docs/html/ftv2splitbar.png.i +data/utility/docs/html/logoGoogle.jpg.i +data/docs/html/globals_enum.html.i +data/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster.cpp.i +data/docs/html/globals_defs.html.i +data/utility/docs/html/search/defines_73.html.i +data/utility/docs/html/class_liquid_crystal___s_r.html.i +data/utility/docs/html/tab_a.png.i +data/utility/docs/html/search/all_b.js.i +data/examples/HelloWorld_i2c/HelloWorld_i2c.pde.i +data/utility/docs/html/search/pages_0.js.i +data/utility/docs/html/search/classes_2.html.i +data/docs/html/class_liquid_crystal-members.html.i +data/utility/docs/html/class_liquid_crystal___i2_c___by_vac.js.i +data/utility/docs/html/search/functions_d.js.i +data/utility/docs/html/search/files_69.html.i +data/docs/html/class_liquid_crystal___s_r2_w.html.i +data/SoftI2CMaster.cpp.i +data/utility/docs/html/search/functions_2.js.i +data/utility/docs/html/functions_func.html.i +data/utility/docs/html/search/all_65.html.i +data/utility/docs/html/search/all_9.js.i +data/utility/docs/html/search/enumvalues_6e.html.i +data/utility/docs/html/search/close.png.i +data/utility/docs/html/search/all_b.html.i +data/utility/docs/html/nav_g.png.i +data/utility/docs/html/_l_c_d_8cpp_source.html.i +data/utility/docs/html/class_liquid_crystal___i2_c___by_vac.png.i +data/docs/html/_liquid_crystal___s_r_8cpp.html.i +data/doxygen_entrydb_2806.tmp.i +data/utility/docs/html/ftv2lastnode.png.i +data/utility/docs/html/class_l_c_d.html.i +data/utility/docs/html/search/all_1.html.i +data/doxygen_entrydb_2806.tmp.d +data/docs/html/search/all_65.html.i +data/utility/docs/html/class_liquid_crystal.js.i +data/docs/html/_liquid_crystal_8h_source.html.i +data/utility/docs/html/search/functions_0.html.i +data/docs/html/search/all_6e.html.i +data/utility/docs/html/class_liquid_crystal___s_r1_w.js.i +data/docs/html/search/defines_72.html.i +data/LiquidCrystal_SR1.h.i +data/docs/html/_liquid_crystal_8h.html.i +data/docs/html/_liquid_crystal___s_r_8h.html.i +data/docs/html/jquery.js.i +data/docs/html/globals_type.html.i +data/utility/docs/html/search/all_8.html.i +data/utility/docs/html/search/functions_7.js.i +data/utility/docs/html/search/all_72.html.i +data/utility/docs/html/navtree.css.i +data/docs/html/search/all_73.html.i +data/utility/docs/html/search/functions_6d.html.i +data/utility/docs/html/search/functions_8.html.i +data/docs/html/_liquid_crystal___s_r3_w_8cpp_source.html.i +data/utility/docs/html/search/functions_a.js.i +data/utility/docs/html/_liquid_crystal___s_r2_w_8cpp.html.i +data/docs/html/search/functions_64.html.i +data/docs/html/_fast_i_o_8cpp.html.i +data/FastIO.h.i +data/utility/docs/html/search/all_3.js.i +data/utility/docs/html/search/classes_1.html.i +data/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster.h.i +data/docs/html/search/functions_73.html.i +data/utility/docs/html/search/all_63.html.i +data/utility/docs/html/class_liquid_crystal___s_r1_w.png.i +data/utility/docs/html/globals_defs.html.i +data/utility/docs/html/search/classes_6c.html.i +data/docs/html/search/enums_74.html.i +data/utility/docs/Doxyfile.i +data/.hgignore.i +data/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster_LICENSE.txt.i +data/utility/docs/html/search/all_6c.html.i +data/docs/html/search/classes_6c.html.i +data/utility/docs/html/_liquid_crystal___s_r3_w_8h.html.i +data/docs/html/class_liquid_crystal___s_r3_w.png.i +data/utility/docs/html/search/all_c.html.i +data/utility/docs/html/class_liquid_crystal___s_r3_w-members.html.i +data/utility/docs/html/_liquid_crystal___s_r1_w_8cpp_source.html.i +data/utility/docs/html/_liquid_crystal___i2_c___by_vac_8h_source.html.i +data/docs/html/_i2_c_i_o_8cpp.html.i +data/docs/html/search/enumvalues_6e.html.i +data/README.md.i +data/utility/docs/html/search/functions_b.js.i +data/utility/docs/html/search/all_a.js.i +data/docs/html/search/functions_68.html.i +data/utility/docs/html/_i2_c_i_o_8h_source.html.i +data/utility/docs/html/search/all_d.html.i +data/utility/docs/html/_liquid_crystal___i2_c_8h.html.i +data/docs/html/_liquid_crystal___s_r2_w_8h.html.i +data/docs/html/_i2_c_i_o_8cpp_source.html.i +data/utility/docs/html/search/functions_65.html.i +data/docs/html/globals_func.html.i +data/docs/html/_liquid_crystal___s_r___l_c_d3_8h_source.html.i +data/docs/html/search/all_6f.html.i +data/SI2CIO.h.i +data/utility/docs/html/_liquid_crystal___i2_c_8cpp_source.html.i +data/docs/html/_i2_c_i_o_8h_source.html.i +data/utility/docs/html/class_liquid_crystal.html.i +data/docs/html/search/files_69.html.i +data/utility/docs/html/search/functions_6.html.i +data/docs/html/search/defines_66.html.i +data/examples/HelloWorld_4bit/HelloWorld_4bit.ino.i +data/utility/docs/html/jquery.js.i +data/docs/html/search/mag_sel.png.i +data/utility/docs/html/search/classes_0.js.i +data/utility/docs/html/search/functions_1.html.i +data/utility/docs/html/search/functions_73.html.i +data/thirdparty libraries/SoftI2CMaster/license.txt.i +data/utility/docs/html/annotated_dup.js.i +data/docs/html/_l_c_d_8cpp_source.html.i +data/utility/docs/html/class_liquid_crystal___s_r3_w.html.i +data/LiquidCrystal_SR1.cpp.i +data/docs/html/search/defines_65.html.i +data/utility/docs/html/search/searchdata.js.i +data/docs/html/search/classes_69.html.i +data/utility/docs/html/search/search_m.png.i +data/utility/docs/html/search/functions_b.html.i +data/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp.html.i +data/docs/html/search/functions_69.html.i +data/utility/docs/html/search/functions_64.html.i +data/utility/docs/html/search/functions_9.js.i +data/docs/html/class_liquid_crystal___i2_c-members.html.i +data/utility/docs/html/class_s_i2_c_i_o.html.i +data/utility/docs/html/search/functions_4.js.i +data/LiquidCrystal_SI2C.cpp.i +data/thirdparty libraries/SoftI2CMaster/examples/BMA020Soft/BMA020Soft.ino.i +data/utility/docs/html/search/functions_2.html.i +data/docs/html/hierarchy.html.i +data/docs/html/_liquid_crystal___s_r3_w_8cpp.html.i +data/docs/html/classes.html.i +data/utility/docs/html/class_liquid_crystal___s_r___l_c_d3.png.i +data/docs/html/nav_h.png.i +data/docs/html/nav_f.png.i +data/docs/html/search/functions_6c.html.i +data/docs/html/class_l_c_d.html.i +data/utility/docs/html/search/nomatches.html.i +data/utility/docs/html/search/all_9.html.i +data/utility/docs/html/search/all_c.js.i +data/utility/docs/html/_s_i2_c_i_o_8h_source.html.i +data/thirdparty libraries/SoftI2CMaster/examples/TSL2561Soft/TSL2561Soft.ino.i +data/utility/docs/html/sync_on.png.i +data/utility/docs/html/class_liquid_crystal___i2_c.png.i +data/utility/docs/html/globals_eval.html.i +data/utility/docs/html/ftv2plastnode.png.i +data/utility/docs/html/bdwn.png.i +data/utility/docs/html/_fast_i_o_8cpp.html.i +data/LiquidCrystal_SR2W.cpp.i +data/examples/i2cLCDextraIO/i2cLCDextraIO.pde.i +data/utility/docs/html/functions.html.i +data/utility/docs/html/search/enumvalues_73.html.i +data/utility/docs/html/class_liquid_crystal___s_r1_w.html.i +data/docs/html/_liquid_crystal___i2_c_8cpp_source.html.i +data/utility/docs/html/_liquid_crystal___i2_c_8h_source.html.i +data/thirdparty libraries/SoftI2CMaster/examples/MLX90614Soft/MLX90614Soft.ino.i +data/utility/docs/html/doxygen.png.i +data/examples/HelloWorld_SR/HelloWorld_SR.ino.i +data/LiquidCrystal_SR2W.h.i +data/docs/html/search/all_69.html.i +data/utility/docs/html/search/all_5.js.i +data/docs/html/class_liquid_crystal.html.i +data/utility/docs/html/class_liquid_crystal___s_r___l_c_d3-members.html.i +data/utility/docs/html/search/functions_1.js.i +data/utility/docs/html/search/functions_6c.html.i +data/docs/html/search/functions_6d.html.i +data/utility/docs/html/installdox.i +data/utility/docs/html/bc_s.png.i +data/examples/HelloWorld_SR/HelloWorld_SR.pde.i +data/utility/docs/html/ftv2doc.png.i +data/examples/HelloWorld_i2c/HelloWorld_i2c.ino.i +data/utility/docs/html/search/all_69.html.i +data/utility/docs/html/class_liquid_crystal___s_r3_w.png.i +data/examples/i2cLCDextraIO_tempLeonardo/i2cLCDextraIO_tempLeonardo.ino.i +data/utility/docs/html/search/functions_70.html.i +data/utility/docs/html/navtreedata.js.i +data/I2CIO.cpp.i +data/LiquidCrystal_SR3W.cpp.i +data/docs/html/search/close.png.i +data/docs/html/class_liquid_crystal___s_r___l_c_d3-members.html.i +data/utility/docs/html/class_liquid_crystal___i2_c.js.i +data/utility/docs/html/search/defines_5f.html.i +data/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp_source.html.i +data/docs/html/_liquid_crystal___i2_c_8h.html.i +data/utility/docs/html/ftv2vertline.png.i +data/utility/docs/html/search/functions_77.html.i +data/docs/html/search/search_r.png.i +data/docs/html/functions_vars.html.i +data/utility/docs/html/ftv2folderopen.png.i +data/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp_source.html.i +data/LiquidCrystal_SR1W.h.i +data/utility/docs/html/_fast_i_o_8h.html.i +data/utility/docs/html/class_liquid_crystal___s_i2_c-members.html.i +data/docs/html/_fast_i_o_8cpp_source.html.i +data/utility/docs/html/search/all_a.html.i +data/docs/html/search/defines_62.html.i +data/utility/docs/html/search/all_0.js.i +data/thirdparty libraries/SoftI2CMaster/examples/stretchTest/stretchTest.ino.i +data/utility/docs/html/search/search_r.png.i +data/utility/docs/html/search/functions_69.html.i +data/utility/docs/html/_i2_c_i_o_8cpp.html.i +data/FastIO.cpp.i +data/doxygen_objdb_2806.tmp.i +data/docs/html/search/functions_72.html.i +data/utility/docs/html/_liquid_crystal___s_r_8h_source.html.i +data/utility/docs/html/_liquid_crystal___i2_c___by_vac_8cpp_source.html.i +data/utility/docs/html/globals_enum.html.i +data/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8h.html.i +data/utility/docs/html/search/classes_1.js.i +data/utility/docs/html/_fast_i_o_8cpp_source.html.i +data/examples/SerialDisplay/SerialDisplay.ino.i +data/utility/docs/html/search/typedefs_66.html.i +data/utility/docs/html/search/defines_6c.html.i +data/docs/html/class_liquid_crystal___s_r3_w-members.html.i +data/docs/html/closed.png.i +data/utility/docs/html/_i2_c_i_o_8h.html.i +data/utility/docs/html/search/functions_5.js.i +data/utility/docs/html/class_l_c_d.js.i +data/examples/HelloWorld_SR1/HelloWorld_SR1.ino.i +data/utility/docs/html/tab_h.png.i +data/utility/docs/html/class_liquid_crystal___s_r-members.html.i +data/utility/docs/html/search/all_6d.html.i +data/utility/docs/html/annotated.html.i +data/utility/docs/html/search/search.js.i +data/docs/html/doxygen.css.i +data/utility/docs/html/search/all_7.html.i +data/utility/docs/html/_liquid_crystal___i2_c___by_vac_8cpp.html.i +data/utility/docs/html/search/defines_63.html.i +data/utility/docs/html/search/all_6.html.i +data/utility/docs/html/_liquid_crystal_8h_source.html.i +data/utility/docs/html/search/defines_72.html.i +data/utility/docs/html/search/all_0.html.i +data/SoftI2CMaster.h.i +data/examples/HelloWorld_SR1/HelloWorld_SR1.pde.i +data/utility/docs/html/_l_c_d_8cpp.html.i +data/utility/docs/html/search/files_66.html.i +data/utility/docs/html/ftv2blank.png.i +data/utility/docs/html/search/defines_74.html.i +data/utility/docs/html/open.png.i +data/thirdparty libraries/SoftI2CMaster/README.md.i +data/utility/docs/html/search/functions_61.html.i +data/utility/docs/html/search/mag_sel.png.i +data/docs/html/class_i2_c_i_o-members.html.i +data/utility/docs/html/search/functions_5.html.i +data/utility/docs/html/class_soft_i2_c_master.js.i +data/utility/docs/html/nav_f.png.i +data/utility/docs/html/class_s_i2_c_i_o-members.html.i +data/utility/docs/html/_liquid_crystal___s_r_8cpp.html.i +data/LiquidCrystal.cpp.i +data/utility/docs/html/class_liquid_crystal___s_i2_c.html.i +data/utility/docs/html/tab_b.png.i +data/docs/html/search/enumvalues_70.html.i +data/utility/docs/html/tab_s.png.i +data/utility/docs/html/search/search_l.png.i +data/utility/docs/html/_liquid_crystal___i2_c___by_vac_8h.html.i +data/docs/html/_l_c_d_8h.html.i +data/LiquidCrystal_I2C.h.i diff --git a/libraries/LiquidCrystal/.hg/store/undo b/libraries/LiquidCrystal/.hg/store/undo new file mode 100644 index 0000000000000000000000000000000000000000..cb3299f0c4240a6e8f1430341ed1a1b7f59cb8ea Binary files /dev/null and b/libraries/LiquidCrystal/.hg/store/undo differ diff --git a/libraries/LiquidCrystal/.hg/strip-backup/49ed0cdee2e3-backup.hg b/libraries/LiquidCrystal/.hg/strip-backup/49ed0cdee2e3-backup.hg new file mode 100644 index 0000000000000000000000000000000000000000..6575bb519a9fe3a24e324925da25a9b33c9eb369 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/strip-backup/49ed0cdee2e3-backup.hg differ diff --git a/libraries/LiquidCrystal/.hg/strip-backup/f0b18272c98e-backup.hg b/libraries/LiquidCrystal/.hg/strip-backup/f0b18272c98e-backup.hg new file mode 100644 index 0000000000000000000000000000000000000000..c1b0c99146f28c5a9fc6742693a5542ad680ee82 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/strip-backup/f0b18272c98e-backup.hg differ diff --git a/libraries/LiquidCrystal/.hg/undo.bookmarks b/libraries/LiquidCrystal/.hg/undo.bookmarks new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/libraries/LiquidCrystal/.hg/undo.branch b/libraries/LiquidCrystal/.hg/undo.branch new file mode 100644 index 0000000000000000000000000000000000000000..331d858ce9b12fa6720414196a9dd6e0b6a0faaa --- /dev/null +++ b/libraries/LiquidCrystal/.hg/undo.branch @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/libraries/LiquidCrystal/.hg/undo.desc b/libraries/LiquidCrystal/.hg/undo.desc new file mode 100644 index 0000000000000000000000000000000000000000..29558b6e9ec1ea9476591c09a702f8445d7ec705 --- /dev/null +++ b/libraries/LiquidCrystal/.hg/undo.desc @@ -0,0 +1,2 @@ +202 +commit diff --git a/libraries/LiquidCrystal/.hg/undo.dirstate b/libraries/LiquidCrystal/.hg/undo.dirstate new file mode 100644 index 0000000000000000000000000000000000000000..86ab2a77a8498d62537a1340bf3153debb44ae85 Binary files /dev/null and b/libraries/LiquidCrystal/.hg/undo.dirstate differ diff --git a/libraries/LiquidCrystal/.hgignore b/libraries/LiquidCrystal/.hgignore new file mode 100644 index 0000000000000000000000000000000000000000..762efca006c426c49d9d42e562b67c9cea3f78cd --- /dev/null +++ b/libraries/LiquidCrystal/.hgignore @@ -0,0 +1,3 @@ +syntax: glob +.DS_Store +delay_x.h diff --git a/libraries/LiquidCrystal/.hgtags b/libraries/LiquidCrystal/.hgtags new file mode 100644 index 0000000000000000000000000000000000000000..a6109bda400e885c81501449cec4111313636e9d --- /dev/null +++ b/libraries/LiquidCrystal/.hgtags @@ -0,0 +1,39 @@ +350358815c25656fde83ab5c636511e16f2d1b93 V 1.1.2 +350358815c25656fde83ab5c636511e16f2d1b93 V 1.1.2 +3afcaba7f807357817b0deedec59a6dc0452d291 V 1.1.3 +3afcaba7f807357817b0deedec59a6dc0452d291 V 1.1.3 +c57fe4cf1b3544f590ffb1cce38a1af03148cd89 V 1.1.3 +b0a1d4a24de12d4a323b3a8f7564ae282f1f9209 V 1.1.4 +070f1d90be5f7bd513a4c5663f429c39077c06ab V 1.1.5 +cb271438ac1fa67906296cd2c821da61814be2ea V 1.1.6 +cb271438ac1fa67906296cd2c821da61814be2ea V 1.1.6 +82f18d4b8ebca14c59e0f8fc2fef075abb9a5d50 V 1.1.6 +981e5559fab2205d613d3c192a322e16f9a20fb2 V 1.1.7 +df4563d57b5cb8a6f534564f10a5d65935d8ef71 V 1.1.7 +2ec4883f118bb66655dbb4012df70df0a4f75b9b V 1.0.7_RC1 +e1485608a8fcda9e6d3a52380e558005283e2619 V 1.2.0_RC1 +2ec4883f118bb66655dbb4012df70df0a4f75b9b V 1.2.0_RC1 +66821a8054ea8dfacdad6c19397dbf93f6bd7fa5 V 1.0.2_RC1 +e1485608a8fcda9e6d3a52380e558005283e2619 V 1.2.0_RC1 +9a1bd27980a539427b876c5bc9cf76a6e679df25 V 1.2.0_RC1 +e1485608a8fcda9e6d3a52380e558005283e2619 V 1.2.0_RC1 +cdf9b4eb0556635c20da8273dfc1f3204864c0a0 V 1.2.0_RC1 +1cf625ca9242d298a480c655d38ad964cd61ae61 V 1.2.0 +5dc9d6595d270ea757ef0ea9eae017b8f89732f3 V 1.2.1_RC1 +2299ac1b335bb99702ee345ea82f9fe8cbd809ef V 1.2.1_RC1 +5dc9d6595d270ea757ef0ea9eae017b8f89732f3 V 1.2.1_RC1 +2bbd1aad67c3ee1bda2fb8637618514100f49c7c V 1.2.1_RC1 +f3f7c8436a62c7f3d50ba8f7d5790cd4ede94210 V 1.2.1_RC2 +c5879ff3f2e5e0d2a0755022781406bc8045567a V 1.2.1_RC2 +488875877f5714d1e286d9a331e40abe57103efe V 1.2.1_RC3 +a4eb104f6dffbe58fc3fd96a5ef9736be5bd07a4 V 1.2.1_RC3 +83bc88dc5c5637bf982c9d8d3dee1e6d57d13bc4 V 1.2.1_RC4 +2e6269d8b2695bd8d33941c3afe09c61b555a26b V 1.2.1_RC4 +a0910a053530c0a19bfbaa1144d1d3b90fcb5e3b V_1.2.1_RC5 +eac3d34ed9dd1bd80f57098ee563f57fa5df1586 V 1.2.1 +c0432608719bae3cdf60b0cb428181d36b25b945 V 1.2.2 +eab837be9770f9d3e004f26d299578d8cff9215b V 1.3.0 +fc43ac91ab9c004ec2b8c89f8c6e477fce624af9 V 1.3.1 +fc43ac91ab9c004ec2b8c89f8c6e477fce624af9 V 1.3.1 +6e2da8cb3ba943fb281e6b9c2d18cf9ddd307c7d V 1.3.2 +59c60fbefe8d447b4ca705fff75a4a1894b1433a V 1.3.3 diff --git a/libraries/LiquidCrystal/FastIO.cpp b/libraries/LiquidCrystal/FastIO.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2d086907b63cee7c05bdd074b02e0df5f0eaa798 --- /dev/null +++ b/libraries/LiquidCrystal/FastIO.cpp @@ -0,0 +1,267 @@ +// --------------------------------------------------------------------------- +// Created by Florian Fida on 20/01/12 +// Copyright 2012 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// http://creativecommons.org/licenses/by-sa/3.0/ +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// --------------------------------------------------------------------------- +// fio_shiftOut1 functions are based on Shif1 protocol developed by Roman Black +// (http://www.romanblack.com/shift1.htm) +// +// Thread Safe: No +// Extendable: Yes +// +// @file FastIO.h +// This file implements basic fast IO routines. +// +// @brief +// +// @version API 1.0.0 +// +// @author Florian Fida - +// +// 2012-03-16 bperrybap updated fio_shiftout() to be smaller & faster +// +// @todo: +// support chipkit: +// (https://github.com/chipKIT32/chipKIT32-MAX/blob/master/hardware/pic32/ +// cores/pic32/wiring_digital.c) +// --------------------------------------------------------------------------- +#include "FastIO.h" + + +fio_register fio_pinToOutputRegister(uint8_t pin, uint8_t initial_state) +{ + pinMode(pin, OUTPUT); + + if(initial_state != SKIP) + { + digitalWrite(pin, initial_state); // also turns off pwm timer + } +#ifdef FIO_FALLBACK + // just wasting memory if not using fast io... + return 0; +#else + return portOutputRegister(digitalPinToPort(pin)); +#endif +} + + +fio_register fio_pinToInputRegister(uint8_t pin) +{ + pinMode(pin, INPUT); + digitalWrite(pin, LOW); // also turns off pwm timer and pullup +#ifdef FIO_FALLBACK + // just wasting memory if not using fast io... + return 0; +#else + return portInputRegister(digitalPinToPort(pin)); +#endif +} + + +fio_bit fio_pinToBit(uint8_t pin) +{ +#ifdef FIO_FALLBACK + // (ab)use the bit variable to store the pin + return pin; +#else + return digitalPinToBitMask(pin); +#endif +} + + +void fio_digitalWrite(fio_register pinRegister, fio_bit pinBit, uint8_t value) +{ +#ifdef FIO_FALLBACK + digitalWrite(pinBit, value); +#else + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + if(value == LOW) + { + fio_digitalWrite_LOW(pinRegister,pinBit); + } + else + { + fio_digitalWrite_HIGH(pinRegister,pinBit); + } + } +#endif +} + +int fio_digitalRead(fio_register pinRegister, uint8_t pinBit) +{ +#ifdef FIO_FALLBACK + return digitalRead (pinBit); +#else + if (*pinRegister & pinBit) + { + return HIGH; + } + return LOW; +#endif +} + +void fio_shiftOut (fio_register dataRegister, fio_bit dataBit, + fio_register clockRegister, fio_bit clockBit, + uint8_t value, uint8_t bitOrder) +{ + // # disable interrupts + int8_t i; + + if(bitOrder == LSBFIRST) + { + for(i = 0; i < 8; i++) + { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + if(value & 1) + { + fio_digitalWrite_HIGH(dataRegister, dataBit); + } + else + { + fio_digitalWrite_LOW(dataRegister, dataBit); + } + value >>= 1; + fio_digitalWrite_HIGH (clockRegister, clockBit); + fio_digitalWrite_LOW (clockRegister,clockBit); + } + } + + } + else + { + for(i = 0; i < 8; i++) + { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + if(value & 0x80) + { + fio_digitalWrite_HIGH(dataRegister, dataBit); + } + else + { + fio_digitalWrite_LOW(dataRegister, dataBit); + } + value <<= 1; + fio_digitalWrite_HIGH (clockRegister, clockBit); + fio_digitalWrite_LOW (clockRegister,clockBit); + } + } + } +} + + +void fio_shiftOut(fio_register dataRegister, fio_bit dataBit, + fio_register clockRegister, fio_bit clockBit) +{ + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + // shift out 0x0 (B00000000) fast, byte order is irrelevant + fio_digitalWrite_LOW (dataRegister, dataBit); + + for(uint8_t i = 0; i<8; ++i) + { + fio_digitalWrite_HIGH (clockRegister, clockBit); + fio_digitalWrite_SWITCH (clockRegister, clockBit); + } + } +} + + +void fio_shiftOut1_init(uint8_t pin) +{ + fio_shiftOut1_init(fio_pinToOutputRegister(pin,HIGH),fio_pinToBit(pin)); +} + +void fio_shiftOut1_init(fio_register shift1Register, fio_bit shift1Bit) +{ + // Make sure that capacitors are charged + // 300us is an educated guess... + fio_digitalWrite(shift1Register,shift1Bit,HIGH); + delayMicroseconds(300); +} + + +void fio_shiftOut1(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, + boolean noLatch) +{ + /* + * this function are based on Shif1 protocol developed by Roman Black + * (http://www.romanblack.com/shift1.htm) + * + * test sketches: + * http://pastebin.com/raw.php?i=2hnC9v2Z + * http://pastebin.com/raw.php?i=bGg4DhXQ + * http://pastebin.com/raw.php?i=tg1ZFiM5 + * http://pastebin.com/raw.php?i=93ExPDD3 - cascading + * tested with: + * TPIC6595N - seems to work fine (circuit: http://www.3guys1laser.com/ + * arduino-one-wire-shift-register-prototype) + * 7HC595N + */ + + // iterate but ignore last bit (is it correct now?) + for(int8_t i = 7; i>=0; --i) + { + + // assume that pin is HIGH (smokin' pot all day... :) - requires + // initialization + if(value & _BV(i)) + { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + // HIGH = 1 Bit + fio_digitalWrite_SWITCHTO(shift1Register,shift1Bit,LOW); + //hold pin LOW for 1us - done! :) + fio_digitalWrite_SWITCHTO(shift1Register,shift1Bit,HIGH); + } // end critical section + //hold pin HIGH for 15us + delayMicroseconds(15); + } + else + { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + // LOW = 0 Bit + fio_digitalWrite_SWITCHTO(shift1Register,shift1Bit,LOW); + // hold pin LOW for 15us + delayMicroseconds(15); + fio_digitalWrite_SWITCHTO(shift1Register,shift1Bit,HIGH); + } // end critical section + + // hold pin HIGH for 30us + delayMicroseconds(30); + } + if(!noLatch && i==1) + { + break; + } + } + + if(!noLatch) + { + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + // send last bit (=LOW) and Latch command + fio_digitalWrite_SWITCHTO(shift1Register,shift1Bit,LOW); + } // end critical section + delayMicroseconds(199); // Hold pin low for 200us + + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + fio_digitalWrite_HIGH(shift1Register,shift1Bit); + } // end critical section + delayMicroseconds(299); // Hold pin high for 300us and leave it that + // way - using explicit HIGH here, just in case. + } +} + +void fio_shiftOut1(uint8_t pin, uint8_t value, boolean noLatch) +{ + fio_shiftOut1(fio_pinToOutputRegister(pin, SKIP),fio_pinToBit(pin),value, noLatch); +} diff --git a/libraries/LiquidCrystal/FastIO.h b/libraries/LiquidCrystal/FastIO.h new file mode 100644 index 0000000000000000000000000000000000000000..3d250e39dfc6b3264f458d7e0bfec0430a15cd70 --- /dev/null +++ b/libraries/LiquidCrystal/FastIO.h @@ -0,0 +1,231 @@ +// --------------------------------------------------------------------------- +// Created by Florian Fida on 20/01/12 +// Copyright 2012 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// http://creativecommons.org/licenses/by-sa/3.0/ +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// --------------------------------------------------------------------------- +// fio_shiftOut1 functions are based on Shif1 protocol developed by Roman Black +// (http://www.romanblack.com/shift1.htm) +// +// Thread Safe: No +// Extendable: Yes +// +// @file FastIO.h +// This file implements basic fast IO routines. +// +// @brief +// +// @version API 1.0.0 +// +// @author Florian Fida - +// 2012-03-16 bperrybap mods for chipkit32 (pic32) Arduino +// support chipkit: +// (https://github.com/chipKIT32/chipKIT32-MAX/blob/master/hardware/pic32/ +// cores/pic32/wiring_digital.c) +// --------------------------------------------------------------------------- +#ifndef _FAST_IO_H_ +#define _FAST_IO_H_ + +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif + +#include <pins_arduino.h> // pleasing sanguino core +#include <inttypes.h> + + +#define SKIP 0x23 + +#if defined (__AVR__) +#include <util/atomic.h> // for critical section management +typedef uint8_t fio_bit; +typedef volatile uint8_t *fio_register; + + +#elif defined(__PIC32MX__) +typedef uint32_t fio_bit; +typedef volatile uint32_t *fio_register; + + +#else +// fallback to Arduino standard digital i/o routines +#define FIO_FALLBACK +#define ATOMIC_BLOCK(dummy) if(true) +#define ATOMIC_RESTORESTATE +typedef uint8_t fio_bit; +typedef uint8_t fio_register; +#endif + + + +#if !defined(FIO_FALLBACK) && !defined(ATOMIC_BLOCK) +/* + * Define an ATOMIC_BLOCK that implements ATOMIC_FORCEON type + * Using the portable Arduino interrupts() and noInterrupts() + */ +#define ATOMIC_RESTORESTATE ATOMIC_FORCEON // sorry, no support for save/restore yet. +#define ATOMIC_FORCEON uint8_t sreg_save \ + __attribute__((__cleanup__(__iSeiParam))) = 0 + +static __inline__ uint8_t __iCliRetVal(void) +{ + noInterrupts(); + return(1); +} +static __inline__ void __iSeiParam(const uint8_t *__s) +{ + interrupts(); +} +#define ATOMIC_BLOCK(type) for(type, __Todo = __iCliRetVal(); __Todo; __Todo = 0) + +#endif // end of block to create compatible ATOMIC_BLOCK() + +/*! + @defined + @abstract Performs a bitwise shift. + @discussion Defines _BV bit shift which is very dependent macro defined by + Atmel. + + \note The bit shift is performed by the compiler which then inserts the + result into the code. Thus, there is no run-time overhead when using + _BV(). +*/ +#ifndef _BV +#define _BV(bit) (1 << (bit)) +#endif + +/*! + @function + @abstract Get the output register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register + */ +fio_register fio_pinToOutputRegister(uint8_t pin, uint8_t initial_state = LOW); + +/*! + @function + @abstract Get the input register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register + */ +fio_register fio_pinToInputRegister(uint8_t pin); + +/*! + @function + @abstract Find the bit which belongs to specified pin + @discussion if fast digitalWrite is disabled this function returns the pin + @param pin[in] Number of a digital pin + @result Bit + */ +fio_bit fio_pinToBit(uint8_t pin); + + +/*! + @method + @abstract direct digital write + @discussion without any checks + @discussion falls back to normal digitalWrite if fast io is disabled + @param pinRegister[in] Register - ignored if fast digital write is disabled + @param pinBit[in] Bit - Pin if fast digital write is disabled + @param value[in] desired output + */ +// __attribute__ ((always_inline)) /* let the optimizer decide that for now */ +void fio_digitalWrite ( fio_register pinRegister, fio_bit pinBit, uint8_t value ); + +/** + * This is where the magic happens that makes things fast. + * Implemented as preprocessor directives to force inlining + * SWITCH is fast for FIO but probably slow for FIO_FALLBACK so SWITCHTO is recommended if the value is known. + */ + +#ifndef FIO_FALLBACK +#define fio_digitalWrite_LOW(reg,bit) *reg &= ~bit +#define fio_digitalWrite_HIGH(reg,bit) *reg |= bit +#define fio_digitalWrite_SWITCH(reg,bit) *reg ^= bit +#define fio_digitalWrite_SWITCHTO(reg,bit,val) fio_digitalWrite_SWITCH(reg,bit) +#else +// reg -> dummy NULL, bit -> pin +#define fio_digitalWrite_HIGH(reg,bit) digitalWrite(bit,HIGH) +#define fio_digitalWrite_LOW(reg,bit) digitalWrite(bit,LOW) +#define fio_digitalWrite_SWITCH(reg,bit) digitalWrite(bit, !digitalRead(bit)) +#define fio_digitalWrite_SWITCHTO(reg,bit,val) digitalWrite(bit,val); +#endif + +/*! + @function + @abstract direct digital read + @discussion without any checks + @discussion falls back to normal digitalRead if fast io is disabled + @param pinRegister[in] Register - ignored if fast io is disabled + @param pinBit[in] Bit - Pin if fast io is disabled + @result Value read from pin + */ +int fio_digitalRead ( fio_register pinRegister, fio_bit pinBit ); + +/*! + @method + @abstract faster shift out + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled + @param bitOrder[in] bit order + */ +void fio_shiftOut( fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, + fio_bit clockBit, uint8_t value, uint8_t bitOrder ); + +/*! + @method + @abstract faster shift out clear + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled + */ +void fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit); + +/*! + * @method + * @abstract one wire shift out + * @discussion protocol needs initialisation (fio_shiftOut1_init) + * @param shift1Register[in] pins register + * @param shift1Bit[in] pins bit + * @param value[in] value to shift out, last byte is ignored and always shifted out LOW + */ +void fio_shiftOut1(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, boolean noLatch = false); +/*! + * @method + * @abstract one wire shift out + * @discussion protocol needs initialisation (fio_shiftOut1_init) + * @param pin[in] digital pin + * @param value[in] value to shift out, last byte is ignored and always shifted out LOW + */ +void fio_shiftOut1(uint8_t pin, uint8_t value, boolean noLatch = false); +/*! + * @method + * @abstract initializes one wire shift out protocol + * @discussion Puts pin to HIGH state and delays until Capacitors are charged. + * @param shift1Register[in] pins register + * @param shift1Bit[in] pins bit + */ +void fio_shiftOut1_init(fio_register shift1Register, fio_bit shift1Bit); +/*! + * @method + * @abstract initializes one wire shift out protocol + * @discussion Puts pin to HIGH state and delays until Capacitors are charged. + * @param pin[in] digital pin + */ +void fio_shiftOut1_init(uint8_t pin); + +#endif // FAST_IO_H diff --git a/libraries/LiquidCrystal/I2CIO.cpp b/libraries/LiquidCrystal/I2CIO.cpp new file mode 100644 index 0000000000000000000000000000000000000000..497bc94c2daebf7ec2b866637416cd5eccd09c66 --- /dev/null +++ b/libraries/LiquidCrystal/I2CIO.cpp @@ -0,0 +1,223 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file I2CIO.h +// This file implements a basic IO library using the PCF8574 I2C IO Expander +// chip. +// +// @brief +// Implement a basic IO library to drive the PCF8574* I2C IO Expander ASIC. +// The library implements basic IO general methods to configure IO pin direction +// read and write uint8_t operations and basic pin level routines to set or read +// a particular IO port. +// +// +// @version API 1.0.0 +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#if (ARDUINO < 100) + #include <WProgram.h> +#else + #include <Arduino.h> +#endif + +#if (ARDUINO < 10000) + #include <../Wire/Wire.h> +#else + #include <Wire.h> +#endif + +#include <inttypes.h> + +#include "I2CIO.h" + + + +// CLASS VARIABLES +// --------------------------------------------------------------------------- + + +// CONSTRUCTOR +// --------------------------------------------------------------------------- +I2CIO::I2CIO ( ) +{ + _i2cAddr = 0x0; + _dirMask = 0xFF; // mark all as INPUTs + _shadow = 0x0; // no values set + _initialised = false; +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + + +// +// begin +int I2CIO::begin ( uint8_t i2cAddr ) +{ + _i2cAddr = i2cAddr; + + Wire.begin ( ); + + _initialised = isAvailable ( _i2cAddr ); + + if (_initialised) + { +#if (ARDUINO < 100) + _shadow = Wire.receive (); +#else + _shadow = Wire.read (); // Remove the byte read don't need it. +#endif + } + return ( _initialised ); +} + +// +// pinMode +void I2CIO::pinMode ( uint8_t pin, uint8_t dir ) +{ + if ( _initialised ) + { + if ( OUTPUT == dir ) + { + _dirMask &= ~( 1 << pin ); + } + else + { + _dirMask |= ( 1 << pin ); + } + } +} + +// +// portMode +void I2CIO::portMode ( uint8_t dir ) +{ + + if ( _initialised ) + { + if ( dir == INPUT ) + { + _dirMask = 0xFF; + } + else + { + _dirMask = 0x00; + } + } +} + +// +// read +uint8_t I2CIO::read ( void ) +{ + uint8_t retVal = 0; + + if ( _initialised ) + { + Wire.requestFrom ( _i2cAddr, (uint8_t)1 ); +#if (ARDUINO < 100) + retVal = ( _dirMask & Wire.receive ( ) ); +#else + retVal = ( _dirMask & Wire.read ( ) ); +#endif + + } + return ( retVal ); +} + +// +// write +int I2CIO::write ( uint8_t value ) +{ + int status = 0; + + if ( _initialised ) + { + // Only write HIGH the values of the ports that have been initialised as + // outputs updating the output shadow of the device + _shadow = ( value & ~(_dirMask) ); + + Wire.beginTransmission ( _i2cAddr ); +#if (ARDUINO < 100) + Wire.send ( _shadow ); +#else + Wire.write ( _shadow ); +#endif + status = Wire.endTransmission (); + } + return ( (status == 0) ); +} + +// +// digitalRead +uint8_t I2CIO::digitalRead ( uint8_t pin ) +{ + uint8_t pinVal = 0; + + // Check if initialised and that the pin is within range of the device + // ------------------------------------------------------------------- + if ( ( _initialised ) && ( pin <= 7 ) ) + { + // Remove the values which are not inputs and get the value of the pin + pinVal = this->read() & _dirMask; + pinVal = ( pinVal >> pin ) & 0x01; // Get the pin value + } + return (pinVal); +} + +// +// digitalWrite +int I2CIO::digitalWrite ( uint8_t pin, uint8_t level ) +{ + uint8_t writeVal; + int status = 0; + + // Check if initialised and that the pin is within range of the device + // ------------------------------------------------------------------- + if ( ( _initialised ) && ( pin <= 7 ) ) + { + // Only write to HIGH the port if the port has been configured as + // an OUTPUT pin. Add the new state of the pin to the shadow + writeVal = ( 1 << pin ) & ~_dirMask; + if ( level == HIGH ) + { + _shadow |= writeVal; + + } + else + { + _shadow &= ~writeVal; + } + status = this->write ( _shadow ); + } + return ( status ); +} + +// +// PRIVATE METHODS +// --------------------------------------------------------------------------- +bool I2CIO::isAvailable (uint8_t i2cAddr) +{ + int error; + + Wire.beginTransmission( i2cAddr ); + error = Wire.endTransmission(); + if (error==0) + { + return true; + } + else //Some error occured + { + return false; + } +} diff --git a/libraries/LiquidCrystal/I2CIO.h b/libraries/LiquidCrystal/I2CIO.h new file mode 100644 index 0000000000000000000000000000000000000000..95e59fcdc406dddfb89901832704d217e6e9b015 --- /dev/null +++ b/libraries/LiquidCrystal/I2CIO.h @@ -0,0 +1,158 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file I2CIO.h +// This file implements a basic IO library using the PCF8574 I2C IO Expander +// chip. +// +// @brief +// Implement a basic IO library to drive the PCF8574* I2C IO Expander ASIC. +// The library implements basic IO general methods to configure IO pin direction +// read and write uint8_t operations and basic pin level routines to set or read +// a particular IO port. +// +// @version API 1.0.0 +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- + +#ifndef _I2CIO_H_ +#define _I2CIO_H_ + +#include <inttypes.h> + +#define _I2CIO_VERSION "1.0.0" + +/*! + @class + @abstract I2CIO + @discussion Library driver to control PCF8574 based ASICs. Implementing + library calls to set/get port through I2C bus. + */ + +class I2CIO +{ +public: + /*! + @method + @abstract Constructor method + @discussion Class constructor constructor. + */ + I2CIO ( ); + + /*! + @method + @abstract Initializes the device. + @discussion This method initializes the device allocating an I2C address. + This method is the first method that should be call prior to calling any + other method form this class. On initialization all pins are configured + as INPUT on the device. + + @param i2cAddr: I2C Address where the device is located. + @result 1 if the device was initialized correctly, 0 otherwise + */ + int begin ( uint8_t i2cAddr ); + + /*! + @method + @abstract Sets the mode of a particular pin. + @discussion Sets the mode of a particular pin to INPUT, OUTPUT. digitalWrite + has no effect on pins which are not declared as output. + + @param pin[in] Pin from the I2C IO expander to be configured. Range 0..7 + @param dir[in] Pin direction (INPUT, OUTPUT). + */ + void pinMode ( uint8_t pin, uint8_t dir ); + + /*! + @method + @abstract Sets all the pins of the device in a particular direction. + @discussion This method sets all the pins of the device in a particular + direction. This method is useful to set all the pins of the device to be + either inputs or outputs. + @param dir[in] Direction of all the pins of the device (INPUT, OUTPUT). + */ + void portMode ( uint8_t dir ); + + /*! + @method + @abstract Reads all the pins of the device that are configured as INPUT. + @discussion Reads from the device the status of the pins that are configured + as INPUT. During initialization all pins are configured as INPUTs by default. + Please refer to pinMode or portMode. + + @param none + */ + uint8_t read ( void ); + + /*! + @method + @abstract Read a pin from the device. + @discussion Reads a particular pin from the device. To read a particular + pin it has to be configured as INPUT. During initialization all pins are + configured as INPUTs by default. Please refer to pinMode or portMode. + + @param pin[in] Pin from the port to read its status. Range (0..7) + @result Returns the pin status (HIGH, LOW) if the pin is configured + as an output, reading its value will always return LOW regardless of its + real state. + */ + uint8_t digitalRead ( uint8_t pin ); + + /*! + @method + @abstract Write a value to the device. + @discussion Writes to a set of pins in the device. The value is the binary + representation of all the pins in device. The value written is masked with + the configuration of the direction of the pins; to change the state of + a particular pin with this method, such pin has to be configured as OUTPUT + using the portMode or pinMode methods. If no pins have been configured as + OUTPUTs this method will have no effect. + + @param value[in] value to be written to the device. + @result 1 on success, 0 otherwise + */ + int write ( uint8_t value ); + + /*! + @method + @abstract Writes a digital level to a particular pin. + @discussion Write a level to the indicated pin of the device. For this + method to have effect, the pin has to be configured as OUTPUT using the + pinMode or portMode methods. + + @param pin[in] device pin to change level. Range (0..7). + @para level[in] logic level to set the pin at (HIGH, LOW). + @result 1 on success, 0 otherwise. + */ + int digitalWrite ( uint8_t pin, uint8_t level ); + + + +private: + uint8_t _shadow; // Shadow output + uint8_t _dirMask; // Direction mask + uint8_t _i2cAddr; // I2C address + bool _initialised; // Initialised object + + /*! + @method + @abstract Check if I2C device is available. + @discussion Checks to see if an I2C device is available at address i2cAddr. + + @param i2cAddr[in] I2C address to check availability + @result true if available, false otherwise. + */ + bool isAvailable (uint8_t i2cAddr); + +}; + +#endif \ No newline at end of file diff --git a/libraries/LiquidCrystal/LCD.cpp b/libraries/LiquidCrystal/LCD.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c96f1a33893ec0e624691f656d317be5e870a59b --- /dev/null +++ b/libraries/LiquidCrystal/LCD.cpp @@ -0,0 +1,372 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LCD.cpp +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK. +// +// @brief +// This is a basic implementation of the HD44780 library of the +// Arduino SDK. This library is a refactored version of the one supplied +// in the Arduino SDK in such a way that it simplifies its extension +// to support other mechanism to communicate to LCDs such as I2C, Serial, SR, ... +// The original library has been reworked in such a way that this will be +// the base class implementing all generic methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets. +// +// This base class is a pure abstract class and needs to be extended. As reference, +// it has been extended to drive 4 and 8 bit mode control, LCDs and I2C extension +// backpacks such as the I2CLCDextraIO using the PCF8574* I2C IO Expander ASIC. +// +// +// @version API 1.1.0 +// +// 2012.03.29 bperrybap - changed comparision to use LCD_5x8DOTS rather than 0 +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#include <stdio.h> +#include <string.h> +#include <inttypes.h> + +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif + +//extern "C" void __cxa_pure_virtual() { while (1); } +#include "LCD.h" + + +// CLASS CONSTRUCTORS +// --------------------------------------------------------------------------- +// Constructor +LCD::LCD () +{ + +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- +// When the display powers up, it is configured as follows: +// 0. LCD starts in 8 bit mode +// 1. Display clear +// 2. Function set: +// DL = 1; 8-bit interface data +// N = 0; 1-line display +// F = 0; 5x8 dot character font +// 3. Display on/off control: +// D = 0; Display off +// C = 0; Cursor off +// B = 0; Blinking off +// 4. Entry mode set: +// I/D = 1; Increment by 1 +// S = 0; No shift +// +// Note, however, that resetting the Arduino doesn't reset the LCD, so we +// can't assume that its in that state when a application starts (and the +// LiquidCrystal constructor is called). +// A call to begin() will reinitialize the LCD. +// +void LCD::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) +{ + if (lines > 1) + { + _displayfunction |= LCD_2LINE; + } + _numlines = lines; + _cols = cols; + + // for some 1 line displays you can select a 10 pixel high font + // ------------------------------------------------------------ + if ((dotsize != LCD_5x8DOTS) && (lines == 1)) + { + _displayfunction |= LCD_5x10DOTS; + } + + // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! + // according to datasheet, we need at least 40ms after power rises above 2.7V + // before sending commands. Arduino can turn on way before 4.5V so we'll wait + // 50 + // --------------------------------------------------------------------------- + delay (100); // 100ms delay + + //put the LCD into 4 bit or 8 bit mode + // ------------------------------------- + if (! (_displayfunction & LCD_8BITMODE)) + { + // this is according to the hitachi HD44780 datasheet + // figure 24, pg 46 + + // we start in 8bit mode, try to set 4 bit mode + // Special case of "Function Set" + send(0x03, FOUR_BITS); + delayMicroseconds(4500); // wait min 4.1ms + + // second try + send ( 0x03, FOUR_BITS ); + delayMicroseconds(150); // wait min 100us + + // third go! + send( 0x03, FOUR_BITS ); + delayMicroseconds(150); // wait min of 100us + + // finally, set to 4-bit interface + send ( 0x02, FOUR_BITS ); + delayMicroseconds(150); // wait min of 100us + + } + else + { + // this is according to the hitachi HD44780 datasheet + // page 45 figure 23 + + // Send function set command sequence + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(4500); // wait more than 4.1ms + + // second try + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(150); + + // third go + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds(150); + + } + + // finally, set # lines, font size, etc. + command(LCD_FUNCTIONSET | _displayfunction); + delayMicroseconds ( 60 ); // wait more + + // turn the display on with no cursor or blinking default + _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; + display(); + + // clear the LCD + clear(); + + // Initialize to default text direction (for romance languages) + _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; + // set the entry mode + command(LCD_ENTRYMODESET | _displaymode); + + backlight(); + +} + +// Common LCD Commands +// --------------------------------------------------------------------------- +void LCD::clear() +{ + command(LCD_CLEARDISPLAY); // clear display, set cursor position to zero + delayMicroseconds(HOME_CLEAR_EXEC); // this command is time consuming +} + +void LCD::home() +{ + command(LCD_RETURNHOME); // set cursor position to zero + delayMicroseconds(HOME_CLEAR_EXEC); // This command is time consuming +} + +void LCD::setCursor(uint8_t col, uint8_t row) +{ + const byte row_offsetsDef[] = { 0x00, 0x40, 0x14, 0x54 }; // For regular LCDs + const byte row_offsetsLarge[] = { 0x00, 0x40, 0x10, 0x50 }; // For 16x4 LCDs + + if ( row >= _numlines ) + { + row = _numlines-1; // rows start at 0 + } + + // 16x4 LCDs have special memory map layout + // ---------------------------------------- + if ( _cols == 16 && _numlines == 4 ) + { + command(LCD_SETDDRAMADDR | (col + row_offsetsLarge[row])); + } + else + { + command(LCD_SETDDRAMADDR | (col + row_offsetsDef[row])); + } + +} + +// Turn the display on/off +void LCD::noDisplay() +{ + _displaycontrol &= ~LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +void LCD::display() +{ + _displaycontrol |= LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turns the underline cursor on/off +void LCD::noCursor() +{ + _displaycontrol &= ~LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LCD::cursor() +{ + _displaycontrol |= LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turns on/off the blinking cursor +void LCD::noBlink() +{ + _displaycontrol &= ~LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +void LCD::blink() +{ + _displaycontrol |= LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// These commands scroll the display without changing the RAM +void LCD::scrollDisplayLeft(void) +{ + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); +} + +void LCD::scrollDisplayRight(void) +{ + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); +} + +// This is for text that flows Left to Right +void LCD::leftToRight(void) +{ + _displaymode |= LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This is for text that flows Right to Left +void LCD::rightToLeft(void) +{ + _displaymode &= ~LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This method moves the cursor one space to the right +void LCD::moveCursorRight(void) +{ + command(LCD_CURSORSHIFT | LCD_CURSORMOVE | LCD_MOVERIGHT); +} + +// This method moves the cursor one space to the left +void LCD::moveCursorLeft(void) +{ + command(LCD_CURSORSHIFT | LCD_CURSORMOVE | LCD_MOVELEFT); +} + + +// This will 'right justify' text from the cursor +void LCD::autoscroll(void) +{ + _displaymode |= LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'left justify' text from the cursor +void LCD::noAutoscroll(void) +{ + _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// Write to CGRAM of new characters +void LCD::createChar(uint8_t location, uint8_t charmap[]) +{ + location &= 0x7; // we only have 8 locations 0-7 + + command(LCD_SETCGRAMADDR | (location << 3)); + delayMicroseconds(30); + + for (uint8_t i = 0; i < 8; i++) + { + write(charmap[i]); // call the virtual write method + delayMicroseconds(40); + } +} + +#ifdef __AVR__ +void LCD::createChar(uint8_t location, const char *charmap) +{ + location &= 0x7; // we only have 8 memory locations 0-7 + + command(LCD_SETCGRAMADDR | (location << 3)); + delayMicroseconds(30); + + for (uint8_t i = 0; i < 8; i++) + { + write(pgm_read_byte_near(charmap++)); + delayMicroseconds(40); + } +} +#endif // __AVR__ + +// +// Switch on the backlight +void LCD::backlight ( void ) +{ + setBacklight(255); +} + +// +// Switch off the backlight +void LCD::noBacklight ( void ) +{ + setBacklight(0); +} + +// +// Switch fully on the LCD (backlight and LCD) +void LCD::on ( void ) +{ + display(); + backlight(); +} + +// +// Switch fully off the LCD (backlight and LCD) +void LCD::off ( void ) +{ + noBacklight(); + noDisplay(); +} + +// General LCD commands - generic methods used by the rest of the commands +// --------------------------------------------------------------------------- +void LCD::command(uint8_t value) +{ + send(value, COMMAND); +} + +#if (ARDUINO < 100) +void LCD::write(uint8_t value) +{ + send(value, DATA); +} +#else +size_t LCD::write(uint8_t value) +{ + send(value, DATA); + return 1; // assume OK +} +#endif diff --git a/libraries/LiquidCrystal/LCD.h b/libraries/LiquidCrystal/LCD.h new file mode 100644 index 0000000000000000000000000000000000000000..36c86e6aff47185c673820ccc76c279ff17de560 --- /dev/null +++ b/libraries/LiquidCrystal/LCD.h @@ -0,0 +1,578 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LCD.h +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. This library is a refactored version of the one supplied +// in the Arduino SDK in such a way that it simplifies its extension +// to support other mechanism to communicate to LCDs such as I2C, Serial, SR, +// The original library has been reworked in such a way that this will be +// the base class implementing all generic methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets. +// +// This base class is a pure abstract class and needs to be extended. As reference, +// it has been extended to drive 4 and 8 bit mode control, LCDs and I2C extension +// backpacks such as the I2CLCDextraIO using the PCF8574* I2C IO Expander ASIC. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// @version API 1.1.0 +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#ifndef _LCD_H_ +#define _LCD_H_ + +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif + +#ifdef __AVR__ +#include <avr/pgmspace.h> +#endif + +#include <inttypes.h> +#include <Print.h> + + +/*! + @defined + @abstract Performs a bitwise shift. + @discussion Defines _BV bit shift which is very dependent macro defined by + Atmel. + + \note The bit shift is performed by the compiler which then inserts the + result into the code. Thus, there is no run-time overhead when using + _BV(). +*/ +#ifndef _BV +#define _BV(bit) (1 << (bit)) +#endif + +/*! + @defined + @abstract Enables disables fast waits for write operations for LCD + @discussion If defined, the library will avoid doing un-necessary waits. + this can be done, because the time taken by Arduino's slow digitalWrite + operations. If fast digitalIO operations, comment this line out or undefine + the mode. + */ +#ifdef __AVR__ +#define FAST_MODE +#endif + +/*! + @function + @abstract waits for a given time in microseconds (compilation dependent). + @discussion Waits for a given time defined in microseconds depending on + the FAST_MODE define. If the FAST_MODE is defined the call will return + inmediatelly. + @param uSec[in] time in microseconds. + @result None + */ +inline static void waitUsec ( uint16_t uSec ) +{ +#ifndef FAST_MODE + delayMicroseconds ( uSec ); +#endif // FAST_MODE +} + + +/*! + @defined + @abstract All these definitions shouldn't be used unless you are writing + a driver. + @discussion All these definitions are for driver implementation only and + shouldn't be used by applications. + */ +// LCD Commands +// --------------------------------------------------------------------------- +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x20 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +// --------------------------------------------------------------------------- +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off and cursor control +// --------------------------------------------------------------------------- +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +// --------------------------------------------------------------------------- +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +// --------------------------------------------------------------------------- +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_2LINE 0x08 +#define LCD_1LINE 0x00 +#define LCD_5x10DOTS 0x04 +#define LCD_5x8DOTS 0x00 + + +// Define COMMAND and DATA LCD Rs (used by send method). +// --------------------------------------------------------------------------- +#define COMMAND 0 +#define DATA 1 +#define FOUR_BITS 2 + + +/*! + @defined + @abstract Defines the duration of the home and clear commands + @discussion This constant defines the time it takes for the home and clear + commands in the LCD - Time in microseconds. + */ +#define HOME_CLEAR_EXEC 2000 + +/*! + @defined + @abstract Backlight off constant declaration + @discussion Used in combination with the setBacklight to swith off the + LCD backlight. @set setBacklight +*/ +#define BACKLIGHT_OFF 0 + +/*! + @defined + @abstract Backlight on constant declaration + @discussion Used in combination with the setBacklight to swith on the + LCD backlight. @set setBacklight + */ +#define BACKLIGHT_ON 255 + + +/*! + @typedef + @abstract Define backlight control polarity + @discussion Backlight control polarity. @see setBacklightPin. + */ +typedef enum { POSITIVE, NEGATIVE } t_backlighPol; + +class LCD : public Print +{ +public: + + /*! + @method + @abstract LiquidCrystal abstract constructor. + @discussion LiquidCrystal class abstract constructor needed to create + the base abstract class. + */ + LCD ( ); + + /*! + @function + @abstract LCD initialization. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class. + + This method is abstract, a base implementation is available common to all LCD + drivers. Should it not be compatible with some other LCD driver, a derived + implementation should be done on the driver specif class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] character size, default==LCD_5x8DOTS + */ + virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); + + /*! + @function + @abstract Clears the LCD. + @discussion Clears the LCD screen and positions the cursor in the upper-left + corner. + + This operation is time consuming for the LCD. + + @param none + */ + void clear(); + + /*! + @function + @abstract Sets the cursor to the upper-left corner. + @discussion Positions the cursor in the upper-left of the LCD. + That is, use that location in outputting subsequent text to the display. + To also clear the display, use the clear() function instead. + + This operation is time consuming for the LCD. + + @param none + */ + void home(); + + /*! + @function + @abstract Turns off the LCD display. + @discussion Turns off the LCD display, without losing the text currently + being displayed on it. + + @param none + */ + void noDisplay(); + + /*! + @function + @abstract Turns on the LCD display. + @discussion Turns on the LCD display, after it's been turned off with + noDisplay(). This will restore the text (and cursor location) that was on + the display prior to calling noDisplay(). + + @param none + */ + void display(); + + /*! + @function + @abstract Turns off the blinking of the LCD cursor. + + @param none + */ + void noBlink(); + + /*! + @function + @abstract Display the cursor of the LCD. + @discussion Display the blinking LCD cursor. If used in combination with + the cursor() function, the result will depend on the particular display. + + @param none + */ + void blink(); + + /*! + @function + @abstract Hides the LCD cursor. + + @param none + */ + void noCursor(); + + /*! + @function + @abstract Display the LCD cursor. + @discussion Display the LCD cursor: an underscore (line) at the location + where the next character will be written. + + @param none + */ + void cursor(); + + /*! + @function + @abstract Scrolls the contents of the display (text and cursor) one space + to the left. + + @param none + */ + void scrollDisplayLeft(); + + /*! + @function + @abstract Scrolls the contents of the display (text and cursor) one space + to the right. + + @param none + */ + void scrollDisplayRight(); + + /*! + @function + @abstract Set the direction for text written to the LCD to left-to-right. + @discussion Set the direction for text written to the LCD to left-to-right. + All subsequent characters written to the display will go from left to right, + but does not affect previously-output text. + + This is the default configuration. + + @param none + */ + void leftToRight(); + + /*! + @function + @abstract Set the direction for text written to the LCD to right-to-left. + @discussion Set the direction for text written to the LCD to right-to-left. + All subsequent characters written to the display will go from right to left, + but does not affect previously-output text. + + left-to-right is the default configuration. + + @param none + */ + void rightToLeft(); + + /*! + @function + @abstract Moves the cursor one space to the left. + @discussion + @param none + */ + void moveCursorLeft(); + + + /*! + @function + @abstract Moves the cursor one space to the right. + + @param none + */ + void moveCursorRight(); + + /*! + @function + @abstract Turns on automatic scrolling of the LCD. + @discussion Turns on automatic scrolling of the LCD. This causes each + character output to the display to push previous characters over by one + space. If the current text direction is left-to-right (the default), + the display scrolls to the left; if the current direction is right-to-left, + the display scrolls to the right. + This has the effect of outputting each new character to the same location on + the LCD. + + @param none + */ + void autoscroll(); + + /*! + @function + @abstract Turns off automatic scrolling of the LCD. + @discussion Turns off automatic scrolling of the LCD, this is the default + configuration of the LCD. + + @param none + */ + void noAutoscroll(); + + /*! + @function + @abstract Creates a custom character for use on the LCD. + @discussion Create a custom character (glyph) for use on the LCD. + Most chipsets only support up to eight characters of 5x8 pixels. Therefore, + this methods has been limited to locations (numbered 0 to 7). + + The appearance of each custom character is specified by an array of eight + bytes, one for each row. The five least significant bits of each byte + determine the pixels in that row. To display a custom character on screen, + write()/print() its number, i.e. lcd.print (char(x)); // Where x is 0..7. + + @param location[in] LCD memory location of the character to create + (0 to 7) + @param charmap[in] the bitmap array representing each row of the character. + */ + void createChar(uint8_t location, uint8_t charmap[]); + +#ifdef __AVR__ + /*! + @function + @abstract Creates a custom character for use on the LCD. + @discussion Create a custom character (glyph) for use on t{he LCD. + Most chipsets only support up to eight characters of 5x8 pixels. Therefore, + this methods has been limited to locations (numbered 0 to 7). + + The appearance of each custom character is specified by an array of eight + bytes, one for each row. The five least significant bits of each byte + determine the pixels in that row. To display a custom character on screen, + write()/print() its number, i.e. lcd.print (char(x)); // Where x is 0..7. + + This method take the character defined in program memory. + + @param location[in] LCD memory location of the character to create + (0 to 7) + @param charmap[in] the bitmap array representing each row of the character. + Usage for flash defined characters: + const char str_pstr[] PROGMEM = {0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0}; + */ + void createChar(uint8_t location, const char *charmap); +#endif // __AVR__ + + /*! + @function + @abstract Position the LCD cursor. + @discussion Sets the position of the LCD cursor. Set the location at which + subsequent text written to the LCD will be displayed. + + @param col[in] LCD column + @param row[in] LCD row - line. + */ + void setCursor(uint8_t col, uint8_t row); + + /*! + @function + @abstract Switch-on the LCD backlight. + @discussion Switch-on the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + */ + void backlight ( void ); + + /*! + @function + @abstract Switch-off the LCD backlight. + @discussion Switch-off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + */ + void noBacklight ( void ); + + /*! + @function + @abstract Switch on the LCD module. + @discussion Switch on the LCD module, it will switch on the LCD controller + and the backlight. This method has the same effect of calling display and + backlight. @see display, @see backlight + */ + void on ( void ); + + /*! + @function + @abstract Switch off the LCD module. + @discussion Switch off the LCD module, it will switch off the LCD controller + and the backlight. This method has the same effect of calling noDisplay and + noBacklight. @see display, @see backlight + */ + void off ( void ); + + // + // virtual class methods + // -------------------------------------------------------------------------- + /*! + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + This method is device dependent and can be programmed on each subclass. An + empty function call is provided that does nothing. + + @param value: pin associated to backlight control. + @param pol: backlight polarity control (POSITIVE, NEGATIVE) + */ + virtual void setBacklightPin ( uint8_t value, t_backlighPol pol ) { }; + + /*! + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. The behaviour + of this method is very dependent on the device. Some controllers support + dimming some don't. Please read the actual header file for each individual + device. The setBacklightPin method has to be called before setting the backlight + or the adequate backlight control constructor. + @see setBacklightPin. + + NOTE: The prefered methods to control the backlight are "backlight" and + "noBacklight". + + @param 0..255 - the value is very dependent on the LCD. However, + BACKLIGHT_OFF will be interpreted as off and BACKLIGHT_ON will drive the + backlight on. + */ + virtual void setBacklight ( uint8_t value ) { }; + + /*! + @function + @abstract Writes to the LCD. + @discussion This method writes character to the LCD in the current cursor + position. + + This is the virtual write method, implemented in the Print class, therefore + all Print class methods will end up calling this method. + + @param value[in] Value to write to the LCD. + */ +#if (ARDUINO < 100) + virtual void write(uint8_t value); +#else + virtual size_t write(uint8_t value); +#endif + +#if (ARDUINO < 100) + using Print::write; +#else + using Print::write; +#endif + +protected: + // Internal LCD variables to control the LCD shared between all derived + // classes. + uint8_t _displayfunction; // LCD_5x10DOTS or LCD_5x8DOTS, LCD_4BITMODE or + // LCD_8BITMODE, LCD_1LINE or LCD_2LINE + uint8_t _displaycontrol; // LCD base control command LCD on/off, blink, cursor + // all commands are "ored" to its contents. + uint8_t _displaymode; // Text entry mode to the LCD + uint8_t _numlines; // Number of lines of the LCD, initialized with begin() + uint8_t _cols; // Number of columns in the LCD + t_backlighPol _polarity; // Backlight polarity + +private: + /*! + @function + @abstract Send a command to the LCD. + @discussion This method sends a command to the LCD by setting the Register + select line of the LCD. + + This command shouldn't be used to drive the LCD, only to implement any other + feature that is not available on this library. + + @param value[in] Command value to send to the LCD (COMMAND, DATA or + FOUR_BITS). + */ + void command(uint8_t value); + + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD. This is a pure abstract + method, therefore, it is implementation dependent of each derived class how + to physically write to the LCD. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. + */ +#if (ARDUINO < 100) + virtual void send(uint8_t value, uint8_t mode) { }; +#else + virtual void send(uint8_t value, uint8_t mode) = 0; +#endif + +}; + +#endif diff --git a/libraries/LiquidCrystal/LiquidCrystal.cpp b/libraries/LiquidCrystal/LiquidCrystal.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f3aeac7fb9af89c425963af31baff1c40fdbd354 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal.cpp @@ -0,0 +1,309 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal.cpp +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using the parallel port of +// the LCD (4 bit and 8 bit). +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#include <stdio.h> +#include <string.h> +#include <inttypes.h> + +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif +#include "LiquidCrystal.h" + +// CONSTANT definitions +// --------------------------------------------------------------------------- +#define LCD_NOBACKLIGHT 0xFF + +// LCD driver configuration (4bit or 8bit driver control) +#define LCD_4BIT 1 +#define LCD_8BIT 0 + +// STATIC helper functions +// --------------------------------------------------------------------------- + + +// CONSTRUCTORS +// --------------------------------------------------------------------------- + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + init(LCD_8BIT, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + init(LCD_8BIT, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +{ + init(LCD_4BIT, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +{ + init(LCD_4BIT, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0); +} + +// Contructors with backlight control +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t backlightPin, t_backlighPol pol) +{ + init(LCD_8BIT, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7); + setBacklightPin ( backlightPin, pol ); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t backlightPin, t_backlighPol pol) +{ + init(LCD_8BIT, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7); + setBacklightPin ( backlightPin, pol ); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t backlightPin, t_backlighPol pol) +{ + init(LCD_4BIT, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0); + setBacklightPin ( backlightPin, pol ); +} + +LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t backlightPin, t_backlighPol pol) +{ + init(LCD_4BIT, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0); + setBacklightPin ( backlightPin, pol ); +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + +/************ low level data pushing commands **********/ +// +// send +void LiquidCrystal::send(uint8_t value, uint8_t mode) +{ + // Only interested in COMMAND or DATA + digitalWrite( _rs_pin, ( mode == DATA ) ); + + // if there is a RW pin indicated, set it low to Write + // --------------------------------------------------- + if (_rw_pin != 255) + { + digitalWrite(_rw_pin, LOW); + } + + if ( mode != FOUR_BITS ) + { + if ( (_displayfunction & LCD_8BITMODE ) ) + { + writeNbits(value, 8); + } + else + { + writeNbits ( value >> 4, 4 ); + writeNbits ( value, 4 ); + } + } + else + { + writeNbits ( value, 4 ); + } + waitUsec ( EXEC_TIME ); // wait for the command to execute by the LCD +} + +// +// setBacklightPin +void LiquidCrystal::setBacklightPin ( uint8_t pin, t_backlighPol pol ) +{ + pinMode ( pin, OUTPUT ); // Difine the backlight pin as output + _backlightPin = pin; + _polarity = pol; + setBacklight(BACKLIGHT_OFF); // Set the backlight low by default +} + +// +// setBackligh +void LiquidCrystal::setBacklight ( uint8_t value ) +{ + // Check if there is a pin assigned to the backlight + // --------------------------------------------------- + if ( _backlightPin != LCD_NOBACKLIGHT ) + { + + // Check if the pin is associated to a timer, i.e. PWM + // We dont need to use != NOT_ON_TIMER hack to detect PWM and + // 1.5x Arduino and above has a macro to check for PWM capability + // on a pin. + // --------------------------------------------------- +#if digitalPinHasPWM + if(digitalPinHasPWM(_backlightPin)) +#elif digitalPinToTimer + // On older 1.x Arduino have to check using hack + if(digitalPinToTimer(_backlightPin) != NOT_ON_TIMER) +#else + if(0) // if neither of the above we assume no PWM +#endif + { + // Check for control polarity inversion + // --------------------------------------------------- + if ( _polarity == POSITIVE ) + { + analogWrite ( _backlightPin, value ); + } + else + { + analogWrite ( _backlightPin, 255 - value ); + } + } + // Not a PWM pin, set the backlight pin for POSI or NEG + // polarity + // -------------------------------------------------------- + else if (((value > 0) && (_polarity == POSITIVE)) || + ((value == 0) && (_polarity == NEGATIVE))) + { + digitalWrite( _backlightPin, HIGH); + } + else + { + digitalWrite( _backlightPin, LOW); + } + } +} + +// PRIVATE METHODS +// --------------------------------------------------------------------------- + + +// init +void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + uint8_t i; + + // Initialize the IO pins + // ----------------------- + + _rs_pin = rs; + _rw_pin = rw; + _enable_pin = enable; + + _data_pins[0] = d0; + _data_pins[1] = d1; + _data_pins[2] = d2; + _data_pins[3] = d3; + _data_pins[4] = d4; + _data_pins[5] = d5; + _data_pins[6] = d6; + _data_pins[7] = d7; + + // Initialize the IO port direction to OUTPUT + // ------------------------------------------ + + for ( i = 0; i < 4; i++ ) + { + pinMode ( _data_pins[i], OUTPUT ); + } + + // Initialize the rest of the ports if it is an 8bit controlled LCD + // ---------------------------------------------------------------- + + if ( !fourbitmode ) + { + for ( i = 4; i < 8; i++ ) + { + pinMode ( _data_pins[i], OUTPUT ); + } + } + pinMode(_rs_pin, OUTPUT); + + // we can save 1 pin by not using RW. Indicate by passing 255 instead of pin# + if (_rw_pin != 255) + { + pinMode(_rw_pin, OUTPUT); + } + + pinMode(_enable_pin, OUTPUT); + + // Initialise displaymode functions to defaults: LCD_1LINE and LCD_5x8DOTS + // ------------------------------------------------------------------------- + if (fourbitmode) + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + else + _displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS; + + // Now we pull both RS and R/W low to begin commands + digitalWrite(_rs_pin, LOW); + digitalWrite(_enable_pin, LOW); + + if (_rw_pin != 255) + { + digitalWrite(_rw_pin, LOW); + } + + // Initialise the backlight pin no nothing + _backlightPin = LCD_NOBACKLIGHT; + _polarity = POSITIVE; +} + +// +// pulseEnable +void LiquidCrystal::pulseEnable(void) +{ + // There is no need for the delays, since the digitalWrite operation + // takes longer. + digitalWrite(_enable_pin, HIGH); + waitUsec(1); // enable pulse must be > 450ns + digitalWrite(_enable_pin, LOW); +} + +// +// write4bits +void LiquidCrystal::writeNbits(uint8_t value, uint8_t numBits) +{ + for (uint8_t i = 0; i < numBits; i++) + { + digitalWrite(_data_pins[i], (value >> i) & 0x01); + } + pulseEnable(); +} + diff --git a/libraries/LiquidCrystal/LiquidCrystal.h b/libraries/LiquidCrystal/LiquidCrystal.h new file mode 100644 index 0000000000000000000000000000000000000000..e2114dc67f5a5741607d2600ee9dc114d372ce7d --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal.h @@ -0,0 +1,161 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal.h +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using the parallel port of +// the LCD (4 bit and 8 bit). +// +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#ifndef LiquidCrystal_4bit_h +#define LiquidCrystal_4bit_h + +#include <inttypes.h> + +#include "LCD.h" +#include "FastIO.h" + + +/*! + @defined + @abstract Command execution time on the LCD. + @discussion This defines how long a command takes to execute by the LCD. + The time is expressed in micro-seconds. + */ +#define EXEC_TIME 37 + +class LiquidCrystal : public LCD +{ +public: + /*! + @method + @abstract 8 bit LCD constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. + */ + LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + + // Constructors with backlight control + LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t backlightPin, t_backlighPol pol); + LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t backlightPin, t_backlighPol pol); + /*! + @method + @abstract 4 bit LCD constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. + */ + LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3); + LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3); + + // Constructors with backlight control + LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t backlightPin, t_backlighPol pol); + LiquidCrystal(uint8_t rs, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t backlightPin, t_backlighPol pol); + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. + */ + virtual void send(uint8_t value, uint8_t mode); + + /*! + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + + @param pin: pin assigned to the backlight + @param pol: backlight pin control polarity (POSITIVE, NEGATIVE). + */ + void setBacklightPin ( uint8_t pin, t_backlighPol pol ); + + /*! + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. For dimming control of the + backlight, the configuration pin must be a PWM output pin. Dim control + is achieved by passing a value from 1 to 255 as a parameter. If the + pin configured when calling the setBacklightPin does not support PWM, + then: (0) backlight off, (1..255) backlight on. + + @param value: backlight value. 0: off, 1..255: dim control of the + backlight. For negative logic 255: off, 254..0: dim control. + */ + void setBacklight ( uint8_t value ); + +private: + + /*! + @method + @abstract Initializes the LCD pin allocation and associated HW + @discussion Initializes the LCD pin allocation and configuration. + */ + void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, + uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + + /*! + @method + @abstract Writes numBits bits from value value to the LCD. + @discussion Writes numBists bits (the least significant) to the LCD control + data lines. + */ + void writeNbits(uint8_t value, uint8_t numBits); + + /*! + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. + */ + void pulseEnable(); + + uint8_t _rs_pin; // LOW: command. HIGH: character. + uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD. + uint8_t _enable_pin; // activated by a HIGH pulse. + uint8_t _data_pins[8]; // Data pins. + uint8_t _backlightPin; // Pin associated to control the LCD backlight +}; + +#endif diff --git a/libraries/LiquidCrystal/LiquidCrystal_I2C.cpp b/libraries/LiquidCrystal/LiquidCrystal_I2C.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8f1ce776527000a05a63ecff42915d1867fa7082 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_I2C.cpp @@ -0,0 +1,291 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_I2C.c +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK but using an I2C IO extension board. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using I2C extension +// backpacks such as the I2CLCDextraIO with the PCF8574* I2C IO Expander ASIC. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif +#include <inttypes.h> +#include "I2CIO.h" +#include "LiquidCrystal_I2C.h" + +// CONSTANT definitions +// --------------------------------------------------------------------------- + +// flags for backlight control +/*! + @defined + @abstract LCD_NOBACKLIGHT + @discussion NO BACKLIGHT MASK + */ +#define LCD_NOBACKLIGHT 0x00 + +/*! + @defined + @abstract LCD_BACKLIGHT + @discussion BACKLIGHT MASK used when backlight is on + */ +#define LCD_BACKLIGHT 0xFF + + +// Default library configuration parameters used by class constructor with +// only the I2C address field. +// --------------------------------------------------------------------------- +/*! + @defined + @abstract Enable bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Enable + */ +#define EN 6 // Enable bit + +/*! + @defined + @abstract Read/Write bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Rw pin + */ +#define RW 5 // Read/Write bit + +/*! + @defined + @abstract Register bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Register select pin + */ +#define RS 4 // Register select bit + +/*! + @defined + @abstract LCD dataline allocation this library only supports 4 bit LCD control + mode. + @discussion D4, D5, D6, D7 LCD data lines pin mapping of the extender module + */ +#define D4 0 +#define D5 1 +#define D6 2 +#define D7 3 + + +// CONSTRUCTORS +// --------------------------------------------------------------------------- +LiquidCrystal_I2C::LiquidCrystal_I2C( uint8_t lcd_Addr ) +{ + config(lcd_Addr, EN, RW, RS, D4, D5, D6, D7); +} + + +LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t backlighPin, + t_backlighPol pol = POSITIVE) +{ + config(lcd_Addr, EN, RW, RS, D4, D5, D6, D7); + setBacklightPin(backlighPin, pol); +} + +LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, + uint8_t Rs) +{ + config(lcd_Addr, En, Rw, Rs, D4, D5, D6, D7); +} + +LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, + uint8_t Rs, uint8_t backlighPin, + t_backlighPol pol = POSITIVE) +{ + config(lcd_Addr, En, Rw, Rs, D4, D5, D6, D7); + setBacklightPin(backlighPin, pol); +} + +LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, + uint8_t Rs, uint8_t d4, uint8_t d5, + uint8_t d6, uint8_t d7 ) +{ + config(lcd_Addr, En, Rw, Rs, d4, d5, d6, d7); +} + +LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, + uint8_t Rs, uint8_t d4, uint8_t d5, + uint8_t d6, uint8_t d7, uint8_t backlighPin, + t_backlighPol pol = POSITIVE ) +{ + config(lcd_Addr, En, Rw, Rs, d4, d5, d6, d7); + setBacklightPin(backlighPin, pol); +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + +// +// begin +void LiquidCrystal_I2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) +{ + + init(); // Initialise the I2C expander interface + LCD::begin ( cols, lines, dotsize ); +} + + +// User commands - users can expand this section +//---------------------------------------------------------------------------- +// Turn the (optional) backlight off/on + +// +// setBacklightPin +void LiquidCrystal_I2C::setBacklightPin ( uint8_t value, t_backlighPol pol = POSITIVE ) +{ + _backlightPinMask = ( 1 << value ); + _polarity = pol; + setBacklight(BACKLIGHT_OFF); +} + +// +// setBacklight +void LiquidCrystal_I2C::setBacklight( uint8_t value ) +{ + // Check if backlight is available + // ---------------------------------------------------- + if ( _backlightPinMask != 0x0 ) + { + // Check for polarity to configure mask accordingly + // ---------------------------------------------------------- + if (((_polarity == POSITIVE) && (value > 0)) || + ((_polarity == NEGATIVE ) && ( value == 0 ))) + { + _backlightStsMask = _backlightPinMask & LCD_BACKLIGHT; + } + else + { + _backlightStsMask = _backlightPinMask & LCD_NOBACKLIGHT; + } + _i2cio.write( _backlightStsMask ); + } +} + + +// PRIVATE METHODS +// --------------------------------------------------------------------------- + +// +// init +int LiquidCrystal_I2C::init() +{ + int status = 0; + + // initialize the backpack IO expander + // and display functions. + // ------------------------------------------------------------------------ + if ( _i2cio.begin ( _Addr ) == 1 ) + { + _i2cio.portMode ( OUTPUT ); // Set the entire IO extender to OUTPUT + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + status = 1; + _i2cio.write(0); // Set the entire port to LOW + } + return ( status ); +} + +// +// config +void LiquidCrystal_I2C::config (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ) +{ + _Addr = lcd_Addr; + + _backlightPinMask = 0; + _backlightStsMask = LCD_NOBACKLIGHT; + _polarity = POSITIVE; + + _En = ( 1 << En ); + _Rw = ( 1 << Rw ); + _Rs = ( 1 << Rs ); + + // Initialise pin mapping + _data_pins[0] = ( 1 << d4 ); + _data_pins[1] = ( 1 << d5 ); + _data_pins[2] = ( 1 << d6 ); + _data_pins[3] = ( 1 << d7 ); +} + + + +// low level data pushing commands +//---------------------------------------------------------------------------- + +// +// send - write either command or data +void LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) +{ + // No need to use the delay routines since the time taken to write takes + // longer that what is needed both for toggling and enable pin an to execute + // the command. + + if ( mode == FOUR_BITS ) + { + write4bits( (value & 0x0F), COMMAND ); + } + else + { + write4bits( (value >> 4), mode ); + write4bits( (value & 0x0F), mode); + } +} + +// +// write4bits +void LiquidCrystal_I2C::write4bits ( uint8_t value, uint8_t mode ) +{ + uint8_t pinMapValue = 0; + + // Map the value to LCD pin mapping + // -------------------------------- + for ( uint8_t i = 0; i < 4; i++ ) + { + if ( ( value & 0x1 ) == 1 ) + { + pinMapValue |= _data_pins[i]; + } + value = ( value >> 1 ); + } + + // Is it a command or data + // ----------------------- + if ( mode == DATA ) + { + mode = _Rs; + } + + pinMapValue |= mode | _backlightStsMask; + pulseEnable ( pinMapValue ); +} + +// +// pulseEnable +void LiquidCrystal_I2C::pulseEnable (uint8_t data) +{ + _i2cio.write (data | _En); // En HIGH + _i2cio.write (data & ~_En); // En LOW +} \ No newline at end of file diff --git a/libraries/LiquidCrystal/LiquidCrystal_I2C.h b/libraries/LiquidCrystal/LiquidCrystal_I2C.h new file mode 100644 index 0000000000000000000000000000000000000000..ea6d87f7f96f104572d7f3cdbb8f2cc894264b81 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_I2C.h @@ -0,0 +1,204 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_I2C.h +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK but using an I2C IO extension board. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using I2C extension +// backpacks such as the I2CLCDextraIO with the PCF8574* I2C IO Expander ASIC. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#ifndef LiquidCrystal_I2C_h +#define LiquidCrystal_I2C_h +#include <inttypes.h> +#include <Print.h> + +#include "I2CIO.h" +#include "LCD.h" + + +class LiquidCrystal_I2C : public LCD +{ +public: + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + */ + LiquidCrystal_I2C (uint8_t lcd_Addr); + // Constructor with backlight control + LiquidCrystal_I2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol); + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + */ + LiquidCrystal_I2C( uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs); + // Constructor with backlight control + LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t backlighPin, t_backlighPol pol); + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + @param d4[in] LCD data 0 pin map on IO extender module + @param d5[in] LCD data 1 pin map on IO extender module + @param d6[in] LCD data 2 pin map on IO extender module + @param d7[in] LCD data 3 pin map on IO extender module + */ + LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ); + // Constructor with backlight control + LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t backlighPin, t_backlighPol pol); + /*! + @function + @abstract LCD initialization and associated HW. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class or parent class. + + The begin method can be overloaded if necessary to initialize any HW that + is implemented by a library and can't be done during construction, here + we use the Wire class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] size of the characters of the LCD: LCD_5x8DOTS or + LCD_5x10DOTS. + */ + virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); + + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. + */ + virtual void send(uint8_t value, uint8_t mode); + + /*! + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. This device + doesn't support dimming backlight capability. + + @param 0: backlight off, 1..255: backlight on. + */ + void setBacklightPin ( uint8_t value, t_backlighPol pol ); + + /*! + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param value: backlight mode (HIGH|LOW) + */ + void setBacklight ( uint8_t value ); + +private: + + /*! + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. + */ + int init(); + + /*! + @function + @abstract Initialises class private variables + @discussion This is the class single point for initialising private variables. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + @param d4[in] LCD data 0 pin map on IO extender module + @param d5[in] LCD data 1 pin map on IO extender module + @param d6[in] LCD data 2 pin map on IO extender module + @param d7[in] LCD data 3 pin map on IO extender module + */ + void config (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ); + + /*! + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. + @param value[in] Value to write to the LCD + @param more[in] Value to distinguish between command and data. + COMMAND == command, DATA == data. + */ + void write4bits(uint8_t value, uint8_t mode); + + /*! + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. + */ + void pulseEnable(uint8_t); + + + uint8_t _Addr; // I2C Address of the IO expander + uint8_t _backlightPinMask; // Backlight IO pin mask + uint8_t _backlightStsMask; // Backlight status mask + I2CIO _i2cio; // I2CIO PCF8574* expansion module driver I2CLCDextraIO + uint8_t _En; // LCD expander word for enable pin + uint8_t _Rw; // LCD expander word for R/W pin + uint8_t _Rs; // LCD expander word for Register Select pin + uint8_t _data_pins[4]; // LCD data lines + +}; + +#endif diff --git a/libraries/LiquidCrystal/LiquidCrystal_I2C_ByVac.cpp b/libraries/LiquidCrystal/LiquidCrystal_I2C_ByVac.cpp new file mode 100644 index 0000000000000000000000000000000000000000..69dd9e72dfcea7f51d547717da697d69902b5c1c --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_I2C_ByVac.cpp @@ -0,0 +1,105 @@ +// --------------------------------------------------------------------------- +// Created by GHPS on 5/06/2012. +// Copyright 2012 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_I2C_ByVac.c +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK but using the extension board BV4218/BV4208 from ByVac. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using I2C extension +// backpack BV4218 from ByVac. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// @author GHPS - ghps@users.sourceforge.net +// --------------------------------------------------------------------------- +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif +#include <inttypes.h> +#include "LiquidCrystal_I2C_ByVac.h" + +// CONSTRUCTORS +// --------------------------------------------------------------------------- +LiquidCrystal_I2C_ByVac::LiquidCrystal_I2C_ByVac( uint8_t lcd_Addr ) +{ + _Addr = lcd_Addr; + _polarity == NEGATIVE; +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + +// +// begin +void LiquidCrystal_I2C_ByVac::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) +{ + Wire.begin(); + LCD::begin ( cols, lines, dotsize ); +} + +// User commands - users can expand this section +//---------------------------------------------------------------------------- +// Turn the integrated backlight off/on + +// setBacklight +void LiquidCrystal_I2C_ByVac::setBacklight( uint8_t value ) +{ + Wire.beginTransmission(_Addr); + Wire.write(0x03); // ByVac command code 0x03 for backlight + if (value==0) Wire.write(1); else Wire.write((byte)0); // 1 for off since polarity is NEGATIVE + Wire.endTransmission(); +} + +// Turn the contrast off/on + +// setContrast +void LiquidCrystal_I2C_ByVac::setContrast( uint8_t value ) +{ + Wire.beginTransmission(_Addr); + Wire.write(0x05); // ByVac command code 0x05 for contrast + if (value==0) Wire.write((byte)0); else Wire.write(1); + Wire.endTransmission(); +} + +// PRIVATE METHODS +// --------------------------------------------------------------------------- + +// +// init +int LiquidCrystal_I2C_ByVac::init() +{ + int status = 0; + + // ByVac backpack initialized by onboard firmware + // ------------------------------------------------------------------------ + status=1; + return ( status ); +} + +// low level data pushing commands +//---------------------------------------------------------------------------- + +// +// send - write either command or data +void LiquidCrystal_I2C_ByVac::send(uint8_t value, uint8_t mode) +{ + Wire.beginTransmission(_Addr); + Wire.write(mode+1); // map COMMAND (0) -> ByVac command code 0x01/ DATA (1) -> ByVac command code 0x02 + Wire.write(value); + Wire.endTransmission(); +} diff --git a/libraries/LiquidCrystal/LiquidCrystal_I2C_ByVac.h b/libraries/LiquidCrystal/LiquidCrystal_I2C_ByVac.h new file mode 100644 index 0000000000000000000000000000000000000000..2e8133165c2fe8c264d324e090c809af14929585 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_I2C_ByVac.h @@ -0,0 +1,130 @@ +// --------------------------------------------------------------------------- +// Created by GHPS on 5/06/2012. +// Copyright 2012 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_I2C_ByVac.c +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK but using the extension board BV4218/BV4208 from ByVac. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using I2C extension +// backpack BV4218 from ByVac. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// @author GHPS - ghps-et-users-sourceforge-net +// --------------------------------------------------------------------------- +#ifndef LiquidCrystal_I2C_ByVac_h +#define LiquidCrystal_I2C_ByVac_h +#include <inttypes.h> +#include <Print.h> + +#if (ARDUINO < 10000) + #include <../Wire/Wire.h> +#else + #include <Wire.h> +#endif +#include "LCD.h" + + +class LiquidCrystal_I2C_ByVac : public LCD +{ +public: + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For BV4218, + the address can be configured using the address commands (to be implemented). + */ + LiquidCrystal_I2C_ByVac (uint8_t lcd_Addr); + + /*! + @function + @abstract LCD initialization and associated HW. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class or parent class. + + The begin method can be overloaded if necessary to initialize any HW that + is implemented by a library and can't be done during construction, here + we use the Wire class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] size of the characters of the LCD: LCD_5x8DOTS or + LCD_5x10DOTS. + */ + virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); + + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. + */ + virtual void send(uint8_t value, uint8_t mode); + + + /*! + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + + @param value: backlight mode (HIGH|LOW) + */ + void setBacklight ( uint8_t value ); + + /*! + @function + @abstract Switch-on/off the LCD contrast. + @discussion Switch-on/off the LCD contrast. + + + @param value: contrast mode (HIGH|LOW) + */ + void setContrast ( uint8_t value ); + +private: + + /*! + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. + */ + int init(); + + /*! + @function + @abstract Initialises class private variables + @discussion This is the class single point for initialising private variables. + + @param lcd_Addr[in] I2C address of the IO expansion module. For BV4218, + the address can be configured using the address commands. + */ + + uint8_t _Addr; // I2C Address of the IO expander + +}; + +#endif diff --git a/libraries/LiquidCrystal/LiquidCrystal_SI2C.cpp b/libraries/LiquidCrystal/LiquidCrystal_SI2C.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f690cd3060d82cb0ddfcae35af48a07dc7fcea4c --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SI2C.cpp @@ -0,0 +1,294 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_SI2C.c +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK but using an I2C IO extension board and software I2C. +// It will use digital pins 6 and 7 for SCL and SDA, but it can be changed +// in SI2CIO.cpp to use other pins if needed. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using I2C extension +// backpacks such as the I2CLCDextraIO with the PCF8574* I2C IO Expander ASIC. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// Adapted to SoftIC2 by Adrian Piccioli - adrianpiccioli@gmail.com +// --------------------------------------------------------------------------- +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif +#include <inttypes.h> +#include "SI2CIO.h" +#include "LiquidCrystal_SI2C.h" + +// CONSTANT definitions +// --------------------------------------------------------------------------- + +// flags for backlight control +/*! + @defined + @abstract LCD_NOBACKLIGHT + @discussion NO BACKLIGHT MASK + */ +#define LCD_NOBACKLIGHT 0x00 + +/*! + @defined + @abstract LCD_BACKLIGHT + @discussion BACKLIGHT MASK used when backlight is on + */ +#define LCD_BACKLIGHT 0xFF + + +// Default library configuration parameters used by class constructor with +// only the I2C address field. +// --------------------------------------------------------------------------- +/*! + @defined + @abstract Enable bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Enable + */ +#define EN 6 // Enable bit + +/*! + @defined + @abstract Read/Write bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Rw pin + */ +#define RW 5 // Read/Write bit + +/*! + @defined + @abstract Register bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Register select pin + */ +#define RS 4 // Register select bit + +/*! + @defined + @abstract LCD dataline allocation this library only supports 4 bit LCD control + mode. + @discussion D4, D5, D6, D7 LCD data lines pin mapping of the extender module + */ +#define D4 0 +#define D5 1 +#define D6 2 +#define D7 3 + + +// CONSTRUCTORS +// --------------------------------------------------------------------------- +LiquidCrystal_SI2C::LiquidCrystal_SI2C( uint8_t lcd_Addr ) +{ + config(lcd_Addr, EN, RW, RS, D4, D5, D6, D7); +} + + +LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t backlighPin, + t_backlighPol pol = POSITIVE) +{ + config(lcd_Addr, EN, RW, RS, D4, D5, D6, D7); + setBacklightPin(backlighPin, pol); +} + +LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, + uint8_t Rs) +{ + config(lcd_Addr, En, Rw, Rs, D4, D5, D6, D7); +} + +LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, + uint8_t Rs, uint8_t backlighPin, + t_backlighPol pol = POSITIVE) +{ + config(lcd_Addr, En, Rw, Rs, D4, D5, D6, D7); + setBacklightPin(backlighPin, pol); +} + +LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, + uint8_t Rs, uint8_t d4, uint8_t d5, + uint8_t d6, uint8_t d7 ) +{ + config(lcd_Addr, En, Rw, Rs, d4, d5, d6, d7); +} + +LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, + uint8_t Rs, uint8_t d4, uint8_t d5, + uint8_t d6, uint8_t d7, uint8_t backlighPin, + t_backlighPol pol = POSITIVE ) +{ + config(lcd_Addr, En, Rw, Rs, d4, d5, d6, d7); + setBacklightPin(backlighPin, pol); +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + +// +// begin +void LiquidCrystal_SI2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) +{ + + init(); // Initialise the I2C expander interface + LCD::begin ( cols, lines, dotsize ); +} + + +// User commands - users can expand this section +//---------------------------------------------------------------------------- +// Turn the (optional) backlight off/on + +// +// setBacklightPin +void LiquidCrystal_SI2C::setBacklightPin ( uint8_t value, t_backlighPol pol = POSITIVE ) +{ + _backlightPinMask = ( 1 << value ); + _polarity = pol; + setBacklight(BACKLIGHT_OFF); +} + +// +// setBacklight +void LiquidCrystal_SI2C::setBacklight( uint8_t value ) +{ + // Check if backlight is available + // ---------------------------------------------------- + if ( _backlightPinMask != 0x0 ) + { + // Check for polarity to configure mask accordingly + // ---------------------------------------------------------- + if (((_polarity == POSITIVE) && (value > 0)) || + ((_polarity == NEGATIVE ) && ( value == 0 ))) + { + _backlightStsMask = _backlightPinMask & LCD_BACKLIGHT; + } + else + { + _backlightStsMask = _backlightPinMask & LCD_NOBACKLIGHT; + } + _si2cio.write( _backlightStsMask ); + } +} + + +// PRIVATE METHODS +// --------------------------------------------------------------------------- + +// +// init +int LiquidCrystal_SI2C::init() +{ + int status = 0; + + // initialize the backpack IO expander + // and display functions. + // ------------------------------------------------------------------------ + if ( _si2cio.begin ( _Addr ) == 1 ) + { + _si2cio.portMode ( OUTPUT ); // Set the entire IO extender to OUTPUT + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + status = 1; + _si2cio.write(0); // Set the entire port to LOW + } + return ( status ); +} + +// +// config +void LiquidCrystal_SI2C::config (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ) +{ + _Addr = lcd_Addr; + + _backlightPinMask = 0; + _backlightStsMask = LCD_NOBACKLIGHT; + _polarity = POSITIVE; + + _En = ( 1 << En ); + _Rw = ( 1 << Rw ); + _Rs = ( 1 << Rs ); + + // Initialise pin mapping + _data_pins[0] = ( 1 << d4 ); + _data_pins[1] = ( 1 << d5 ); + _data_pins[2] = ( 1 << d6 ); + _data_pins[3] = ( 1 << d7 ); +} + + + +// low level data pushing commands +//---------------------------------------------------------------------------- + +// +// send - write either command or data +void LiquidCrystal_SI2C::send(uint8_t value, uint8_t mode) +{ + // No need to use the delay routines since the time taken to write takes + // longer that what is needed both for toggling and enable pin an to execute + // the command. + + if ( mode == FOUR_BITS ) + { + write4bits( (value & 0x0F), COMMAND ); + } + else + { + write4bits( (value >> 4), mode ); + write4bits( (value & 0x0F), mode); + } +} + +// +// write4bits +void LiquidCrystal_SI2C::write4bits ( uint8_t value, uint8_t mode ) +{ + uint8_t pinMapValue = 0; + + // Map the value to LCD pin mapping + // -------------------------------- + for ( uint8_t i = 0; i < 4; i++ ) + { + if ( ( value & 0x1 ) == 1 ) + { + pinMapValue |= _data_pins[i]; + } + value = ( value >> 1 ); + } + + // Is it a command or data + // ----------------------- + if ( mode == DATA ) + { + mode = _Rs; + } + + pinMapValue |= mode | _backlightStsMask; + pulseEnable ( pinMapValue ); +} + +// +// pulseEnable +void LiquidCrystal_SI2C::pulseEnable (uint8_t data) +{ + _si2cio.write (data | _En); // En HIGH + _si2cio.write (data & ~_En); // En LOW +} \ No newline at end of file diff --git a/libraries/LiquidCrystal/LiquidCrystal_SI2C.h b/libraries/LiquidCrystal/LiquidCrystal_SI2C.h new file mode 100644 index 0000000000000000000000000000000000000000..af615165ce30e9c315de08fc5b7f0b2e2dcdbb20 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SI2C.h @@ -0,0 +1,207 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_I2C.h +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK but using an I2C IO extension board and software I2C. +// It will use digital pins 6 and 7 for SCL and SDA, but it can be changed +// in SI2CIO.cpp to use other pins if needed. + +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using I2C extension +// backpacks such as the I2CLCDextraIO with the PCF8574* I2C IO Expander ASIC. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// Adapted to SoftIC2 by Adrian Piccioli - adrianpiccioli@gmail.com +// --------------------------------------------------------------------------- +#ifndef LiquidCrystal_SI2C_h +#define LiquidCrystal_SI2C_h +#include <inttypes.h> +#include <Print.h> + +#include "SI2CIO.h" +#include "LCD.h" + + +class LiquidCrystal_SI2C : public LCD +{ +public: + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + */ + LiquidCrystal_SI2C (uint8_t lcd_Addr); + // Constructor with backlight control + LiquidCrystal_SI2C (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol); + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + */ + LiquidCrystal_SI2C( uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs); + // Constructor with backlight control + LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t backlighPin, t_backlighPol pol); + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + @param d4[in] LCD data 0 pin map on IO extender module + @param d5[in] LCD data 1 pin map on IO extender module + @param d6[in] LCD data 2 pin map on IO extender module + @param d7[in] LCD data 3 pin map on IO extender module + */ + LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ); + // Constructor with backlight control + LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t backlighPin, t_backlighPol pol); + /*! + @function + @abstract LCD initialization and associated HW. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class or parent class. + + The begin method can be overloaded if necessary to initialize any HW that + is implemented by a library and can't be done during construction, here + we use the Wire class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] size of the characters of the LCD: LCD_5x8DOTS or + LCD_5x10DOTS. + */ + virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); + + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. + */ + virtual void send(uint8_t value, uint8_t mode); + + /*! + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. This device + doesn't support dimming backlight capability. + + @param 0: backlight off, 1..255: backlight on. + */ + void setBacklightPin ( uint8_t value, t_backlighPol pol ); + + /*! + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param value: backlight mode (HIGH|LOW) + */ + void setBacklight ( uint8_t value ); + +private: + + /*! + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. + */ + int init(); + + /*! + @function + @abstract Initialises class private variables + @discussion This is the class single point for initialising private variables. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + @param d4[in] LCD data 0 pin map on IO extender module + @param d5[in] LCD data 1 pin map on IO extender module + @param d6[in] LCD data 2 pin map on IO extender module + @param d7[in] LCD data 3 pin map on IO extender module + */ + void config (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ); + + /*! + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. + @param value[in] Value to write to the LCD + @param more[in] Value to distinguish between command and data. + COMMAND == command, DATA == data. + */ + void write4bits(uint8_t value, uint8_t mode); + + /*! + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. + */ + void pulseEnable(uint8_t); + + + uint8_t _Addr; // I2C Address of the IO expander + uint8_t _backlightPinMask; // Backlight IO pin mask + uint8_t _backlightStsMask; // Backlight status mask + SI2CIO _si2cio; // I2CIO PCF8574* expansion module driver I2CLCDextraIO + uint8_t _En; // LCD expander word for enable pin + uint8_t _Rw; // LCD expander word for R/W pin + uint8_t _Rs; // LCD expander word for Register Select pin + uint8_t _data_pins[4]; // LCD data lines + +}; + +#endif diff --git a/libraries/LiquidCrystal/LiquidCrystal_SR.cpp b/libraries/LiquidCrystal/LiquidCrystal_SR.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a966caaa8ea53b58bd1c7b51a5bcb7fe72734944 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SR.cpp @@ -0,0 +1,209 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_SR.h +// Connects an LCD using 2 or 3 pins from the Arduino, via an 8-bit +// ShiftRegister (SR from now on). +// +// @brief +// This is a port of the ShiftRegLCD library from raron and ported to the +// LCD library. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library and can +// be used as such. +// +// Modified to work serially with the shiftOut() function, an 8-bit +// unlatched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out) +// shift register (IE a very simple SR), and an LCD in 4-bit mode. +// Any such shift register should do (pref. 74LS family IC's for 2-wire). +// I used 74LS164, for the reason that's what I had at hand. +// +// Connection description: +// +// SR output: +// Bit #0 - N/C - not connected, used to hold a zero +// Bit #1 - N/C +// Bit #2 - connects to RS (Register Select) on the LCD +// Bits #3-6 - connects to LCD data inputs D4 - D7. +// Bit #7 - enables the LCD enable-puls (via the diode-resistor AND "gate") +// +// 2 or 3 Pins required from the Arduino for Data, Clock and (optional) Enable +// If not using Enable, the Data pin is used for the enable signal by defining +// the same pin for Enable as for Data. Data and Clock outputs/pins goes to +// the shiftregister. +// LCD RW-pin hardwired to LOW (only writing to LCD). +// Busy Flag (BF, data bit D7) is not read. +// +// Original project homepage: http://code.google.com/p/arduinoshiftreglcd/ +// +// +// History +// 2012.03.29 bperrybap - Added delays for faster fio shiftout (it got too fast) +// AVR needed delay. cmd/write delays are based on CPU speed so it works on pic32. +// Added code to support indicating two wire mode by using enable=data pin +// (documentation indicated this as working) +// Fixed incorrect use of 5x10 for default font - now matches original LQ library. +// can now eliminate enable pin in constructor for two wire mode. +// 2012.01.16 Florian Fida - faster digitalWrite/shiftOut +// 2011.10.29 fmalpartida - adaption of the library to the LCD class hierarchy. +// 2011.07.02 Fixed a minor flaw in setCursor function. No functional change, +// just a bit more memory efficient. +// Thanks to CapnBry (from google code and github) who noticed it. +// URL to his version of shiftregLCD: +// https://github.com/CapnBry/HeaterMeter/commit/c6beba1b46b092ab0b33bcbd0a30a201fd1f28c1 +// 2009.07.30 raron - minor corrections to the comments. +// Fixed timing to datasheet safe. Fixed keyword highlights. +// 2009.07.28 Mircho / raron - a new modification to the schematics, and a +// more streamlined interface +// 2009.07.27 Thanks to an excellent suggestion from mircho at the Arduino +// playgrond forum, the number of wires now required is only two! +// 2009.07.25 raron - Fixed comments. I really messed up the comments before +// posting this, so I had to fix it. +// Renamed a function, but no improvements or functional changes. +// 2009.07.23 Incorporated some proper initialization routines +// inspired (lets say copy-paste-tweaked) from LiquidCrystal +// library improvements from LadyAda. +// 2009.05.23 raron - first version, but based mostly (as in almost verbatim) +// on the "official" LiquidCrystal library. +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#include <stdio.h> +#include <string.h> +#include <inttypes.h> + +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif +#include "LiquidCrystal_SR.h" + +#include "FastIO.h" + + +// CONSTRUCTORS +// --------------------------------------------------------------------------- +// Assuming 1 line 8 pixel high font +LiquidCrystal_SR::LiquidCrystal_SR (uint8_t srdata, uint8_t srclock, + uint8_t enable ) +{ + init ( srdata, srclock, enable, 1, 0 ); +} + + +// PRIVATE METHODS +// --------------------------------------------------------------------------- + +// +// init +void LiquidCrystal_SR::init(uint8_t srdata, uint8_t srclock, uint8_t enable, + uint8_t lines, uint8_t font) +{ + // Initialise private variables + _two_wire = 0; + + _srDataRegister = fio_pinToOutputRegister(srdata); + _srDataBit = fio_pinToBit(srdata); + _srClockRegister = fio_pinToOutputRegister(srclock); + _srClockBit = fio_pinToBit(srclock); + + if ((enable == TWO_WIRE) || (enable == srdata)) + { + _two_wire = 1; + _srEnableRegister = _srDataRegister; + _srEnableBit = _srDataBit; + } + else + { + _srEnableRegister = fio_pinToOutputRegister(enable); + _srEnableBit = fio_pinToBit(enable); + } + + // Configure control pins as outputs + // ------------------------------------------------------------------------ + + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; +} + +// +// shiftIt +void LiquidCrystal_SR::shiftIt(uint8_t val) +{ + if (_two_wire) + { + // Clear to get Enable LOW + fio_shiftOut(_srDataRegister, _srDataBit, _srClockRegister, _srClockBit); + } + fio_shiftOut(_srDataRegister, _srDataBit, _srClockRegister, _srClockBit, val, MSBFIRST); + + // LCD ENABLE PULSE + // + // While this library is written with a shift register without an output + // latch in mind, it can work in 3-wire mode with a shiftregister with a + // latch. The shiftregister latch pin (STR, RCL or similar) is then + // connected to the LCD enable pin. The LCD is (very likely) slower + // to read the Enable pulse, and then reads the new contents of the SR. + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + fio_digitalWrite_HIGH(_srEnableRegister, _srEnableBit); + delayMicroseconds (1); // enable pulse must be >450ns + fio_digitalWrite_SWITCHTO(_srEnableRegister, _srEnableBit, LOW); + } // end critical section +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + + +/************ low level data pushing commands **********/ +// +// send +void LiquidCrystal_SR::send(uint8_t value, uint8_t mode) +{ + // Divide byte in two nibbles include the RS signal + // and format it for shiftregister output wiring to the LCD + // We are only interested in my COMMAND or DATA for myMode + uint8_t myMode = ( mode == DATA ) ? SR_RS_BIT : 0; // RS bit; LOW: command. HIGH: character. + + if ( mode != FOUR_BITS ) + { + shiftIt(myMode | SR_EN_BIT | ((value >> 1) & 0x78)); // upper nibble + } + + shiftIt(myMode | SR_EN_BIT | ((value << 3) & 0x78)); // lower nibble + /* + * Add some delay since this code is so fast it needs some added delay + * even on AVRs because the shiftout is shorter than the LCD command execution time. + */ +#if (F_CPU <= 16000000) + if(_two_wire) + delayMicroseconds ( 10 ); + else + delayMicroseconds ( 17 ); // 3 wire mode is faster so it must delay longer +#else + delayMicroseconds ( 37 ); // commands & data writes need > 37us to complete +#endif + +} + +// +// setBacklightPin +void LiquidCrystal_SR::setBacklightPin ( uint8_t pin, t_backlighPol pol ) +{ } + +// +// setBacklight +void LiquidCrystal_SR::setBacklight ( uint8_t mode ) +{ } + diff --git a/libraries/LiquidCrystal/LiquidCrystal_SR.h b/libraries/LiquidCrystal/LiquidCrystal_SR.h new file mode 100644 index 0000000000000000000000000000000000000000..0d220228f9ba53d213c27e9cbd410e31c8dfee75 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SR.h @@ -0,0 +1,176 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_SR.h +// Connects an LCD using 2 or 3 pins from the Arduino, via an 8-bit +// ShiftRegister (SR from now on). +// +// @brief +// This is a port of the ShiftRegLCD library from raron and ported to the +// LCD library. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library and can +// be used as such. +// +// Modified to work serially with the shiftOut() function, an 8-bit +// unlatched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out) +// shift register (IE a very simple SR), and an LCD in 4-bit mode. +// Any such shift register should do (pref. 74LS family IC's for 2-wire). +// I used 74LS164, for the reason that's what I had at hand. +// +// Connection description: +// +// SR output: +// Bit #0 - N/C - not connected, used to hold a zero +// Bit #1 - N/C +// Bit #2 - connects to RS (Register Select) on the LCD +// Bits #3-6 - connects to LCD data inputs D4 - D7. +// Bit #7 - enables the LCD enable-puls (via the diode-resistor AND "gate") +// +// 2 or 3 Pins required from the Arduino for Data, Clock and (optional) Enable +// If not using Enable, the Data pin will be used for the enable signal. +// 2 wire mode can be indicated by: +// - ommitting the enable pin in constructor +// - defining the same pin for Enable as for Data in constructor +// - by using the token TWO_WIRE for the enable pin. +// +// Data and Clock outputs/pins goes to the shiftregister. +// LCD RW-pin hardwired to LOW (only writing to LCD). +// Busy Flag (BF, data bit D7) is not read. +// +// Original project homepage: http://code.google.com/p/arduinoshiftreglcd/ +// +// +// History +// 2012.03.29 bperrybap - can now eliminate enable pin in constructor for two wire mode. +// 2011.10.29 fmalpartida - adaption of the library to the LCD class hierarchy. +// 2011.07.02 Fixed a minor flaw in setCursor function. No functional change, +// just a bit more memory efficient. +// Thanks to CapnBry (from google code and github) who noticed it. +// URL to his version of shiftregLCD: +// https://github.com/CapnBry/HeaterMeter/commit/c6beba1b46b092ab0b33bcbd0a30a201fd1f28c1 +// 2009.07.30 raron - minor corrections to the comments. +// Fixed timing to datasheet safe. Fixed keyword highlights. +// 2009.07.28 Mircho / raron - a new modification to the schematics, and a +// more streamlined interface +// 2009.07.27 Thanks to an excellent suggestion from mircho at the Arduiono +// playgrond forum, the number of wires now required is only two! +// 2009.07.25 raron - Fixed comments. I really messed up the comments before +// posting this, so I had to fix it. +// Renamed a function, but no improvements or functional changes. +// 2009.07.23 Incorporated some proper initialization routines +// inspired (lets say copy-paste-tweaked) from LiquidCrystal +// library improvements from LadyAda. +// 2009.05.23 raron - first version, but based mostly (as in almost verbatim) +// on the "official" LiquidCrystal library. +// +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#ifndef _LIQUIDCRYSTAL_SR_ +#define _LIQUIDCRYSTAL_SR_ + +#include <inttypes.h> +#include "LCD.h" +#include "FastIO.h" + + +// two-wire indicator constant +// --------------------------------------------------------------------------- +#define TWO_WIRE 204 +#define SR_RS_BIT 0x04 +#define SR_EN_BIT 0x80 + +class LiquidCrystal_SR : public LCD +{ +public: + /*! + @method + @abstract LCD SHIFT REGISTER constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. Assuming 1 line 8 pixel high + font. + + @param srdata[in] pin for shiftregister data line. + @param srclock[in] pin for shiftregister clock line. + @param enable[in] optional direct enable pin for the LCD + */ + LiquidCrystal_SR ( uint8_t srdata, uint8_t srclock, uint8_t enable=TWO_WIRE ); + + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command using the shift register. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. + */ + virtual void send(uint8_t value, uint8_t mode); + + + /*! + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + @warning Currently not supported + + @param mode: backlight mode (HIGH|LOW) + @param pol: backlight polarity + */ + void setBacklightPin ( uint8_t pin, t_backlighPol pol ); + + /*! + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param mode: backlight mode (HIGH|LOW) + */ + void setBacklight ( uint8_t mode ); + +private: + + /*! + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. + */ + void init ( uint8_t srdata, uint8_t srclock, uint8_t enable, uint8_t lines, + uint8_t font ); + + /*! + * @method + * @abstract takes care of shifting and the enable pulse + */ + void shiftIt (uint8_t val); + + uint8_t _enable_pin; // Enable Pin + uint8_t _two_wire; // two wire mode + + fio_register _srDataRegister; // Serial Data pin + fio_bit _srDataBit; + fio_register _srClockRegister; // Clock Pin + fio_bit _srClockBit; + fio_register _srEnableRegister; // Enable Pin + fio_bit _srEnableBit; + +}; + +#endif + diff --git a/libraries/LiquidCrystal/LiquidCrystal_SR1W.cpp b/libraries/LiquidCrystal/LiquidCrystal_SR1W.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f32ef7083df4c97033be8ec64ce7999ebb5444b1 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SR1W.cpp @@ -0,0 +1,252 @@ +// --------------------------------------------------------------------------- +// Created/Adapted by Stephen Erisman 2013-07-06 +// Copyright 2013 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_SR1W.cpp +// Connects a hd44780 LCD using 1 pin from the Arduino, via an 8-bit Latching +// ShiftRegister (SR1W from now on). +// +// @brief +// This is an optimized implementation of the 1-wire shift concept developed by +// Roman Black (http://www.romanblack.com/shift1.htm) that also makes use of +// (and merges) the diode-resistor AND "gate" concept (http://www.rentron.com/Myke1.htm) +// as well as introducing some new and original ideas (particularly how HW_CLEAR works). +// +// +// See the corresponding SR1W header file for full details. +// +// History +// 2013.07.31 serisman - fixed potential interrupt bug and made more performance optimizations +// 2013.07.10 serisman - more performance optimizations and modified the HW_CLEAR circuit a bit +// 2013.07.09 serisman - added an even faster version that performs the clear in hardware +// 2013.07.08 serisman - changed code to shift data MSB first to match SR2W +// 2013.07.07 serisman - major speed optimization +// 2013.07.06 serisman - created/modified from SR2W and FastIO sources to create SR1W +// @author S. Erisman - arduino@serisman.com +// --------------------------------------------------------------------------- + +#include "LiquidCrystal_SR1W.h" + +// CONSTRUCTORS +// --------------------------------------------------------------------------- +// Assuming 1 line 8 pixel high font +LiquidCrystal_SR1W::LiquidCrystal_SR1W (uint8_t srdata, t_sr1w_circuitType circuitType, t_backlighPol blpol) +{ + init ( srdata, circuitType, blpol, 1, 0 ); +} + +// PRIVATE METHODS +// --------------------------------------------------------------------------- + +// +// init +void LiquidCrystal_SR1W::init(uint8_t srdata, t_sr1w_circuitType circuitType, t_backlighPol blpol, uint8_t lines, uint8_t font) +{ + _srRegister = fio_pinToOutputRegister(srdata); + _srMask = fio_pinToBit(srdata); + + _circuitType = circuitType; + + _blPolarity = blpol; + + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + + clearSR(); + + backlight(); // set default backlight state to on +} + +// +// clearSR +uint8_t LiquidCrystal_SR1W::clearSR() +{ + uint8_t numDelays = 0; + + // Store these as local variables for extra performance (and smaller compiled sketch size) + fio_register srRegister = _srRegister; + fio_bit srMask = _srMask; + + // Set the Serial PIN to a LOW state + SR1W_ATOMIC_WRITE_LOW(srRegister, srMask); + + // We need to delay to make sure the Data and Latch/EN capacitors are fully discharged + // This also triggers the EN pin because of the falling edge. + SR1W_DELAY(); + + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + // Pre-calculate these values for extra performance and to make sure the clock pulse is as quick as possible + fio_bit reg_val = *srRegister; + fio_bit bit_low = reg_val & ~srMask; + fio_bit bit_high = reg_val | srMask; + + // Clear the shift register (without triggering the Latch/EN pins) + // We only need to shift 7 bits here because the subsequent HIGH transistion will also shift a '0' in. + for (int8_t i = 6; i>=0; i--) + { + // Shift in a '0' (NOTE: This clock pulse needs to execute as quickly as possible) + *srRegister = bit_high; + *srRegister = bit_low; + } + + // Set the Serial PIN to a HIGH state so the next nibble/byte can be loaded + // This also shifts the 8th '0' bit in. + *srRegister = bit_high; + } + + // Give the Data capacitor a chance to fully charge + SR1W_DELAY(); + + return numDelays; +} + +// +// loadSR +uint8_t LiquidCrystal_SR1W::loadSR(uint8_t val) +{ + uint8_t numDelays = 0; + + // Store these as local variables for extra performance (and smaller compiled sketch size) + fio_register srRegister = _srRegister; + fio_bit srMask = _srMask; + + // NOTE: This assumes the Serial PIN is already HIGH and the Data capacitor is fully charged + uint8_t previousBit = 1; + + // Send the data to the shift register (MSB first) + for (int8_t i = 7; i>=0; i--) + { + if (val & 0x80) + { + if (previousBit == 0) + { + // We need to make sure the Data capacitor has fully recharged + SR1W_DELAY(); + } + + previousBit = 1; + + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + // Pre-calculate these values to make sure the clock pulse is as quick as possible + fio_bit reg_val = *srRegister; + fio_bit bit_low = reg_val & ~srMask; + fio_bit bit_high = reg_val | srMask; + + // Shift in a '1' (NOTE: This clock pulse needs to execute as quickly as possible) + *srRegister = bit_low; + *srRegister = bit_high; + } + } + else + { + // Shift in a '0' + SR1W_ATOMIC_WRITE_LOW(srRegister, srMask); + + // We need to make sure the Data capacitor has fully discharged + SR1W_DELAY(); + + previousBit = 0; + + SR1W_ATOMIC_WRITE_HIGH(srRegister, srMask); + } + val <<= 1; + } + + // NOTE: Serial PIN is currently HIGH + + // For SW_CLEAR, we need to delay to make sure the Latch/EN capacitor is fully charged. + // This triggers the Latch pin because of the rising edge. + // For HW_CLEAR, we need to delay to give the hardware time to perform the clear. + // This also gives the Data capacitor a chance to fully charge + SR1W_DELAY(); + + if (_circuitType == SW_CLEAR) + { + // Clear the shift register to get ready for the next nibble/byte + // This also discharges the Latch/EN capacitor which finally triggers the EN pin because of the falling edge. + numDelays += clearSR(); + } + else + { + // For some reason HW_CLEAR isn't totally stable unless we delay a little bit more. + // TODO... figure this out... + SR1W_DELAY(); + } + + return numDelays; +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + + +/************ low level data pushing commands **********/ +// +// send +void LiquidCrystal_SR1W::send(uint8_t value, uint8_t mode) +{ + uint8_t numDelays = 0; + + uint8_t data; + + if ( mode != FOUR_BITS ) + { + // upper nibble + data = ( mode == DATA ) ? SR1W_RS_MASK : 0; + data |= SR1W_EN_MASK | SR1W_UNUSED_MASK; + data |= _blMask; + + if (value & _BV(4)) data |= SR1W_D4_MASK; + if (value & _BV(5)) data |= SR1W_D5_MASK; + if (value & _BV(6)) data |= SR1W_D6_MASK; + if (value & _BV(7)) data |= SR1W_D7_MASK; + + numDelays += loadSR(data); + } + + // lower nibble + data = ( mode == DATA ) ? SR1W_RS_MASK : 0; + data |= SR1W_EN_MASK | SR1W_UNUSED_MASK; + data |= _blMask; + + if (value & _BV(0)) data |= SR1W_D4_MASK; + if (value & _BV(1)) data |= SR1W_D5_MASK; + if (value & _BV(2)) data |= SR1W_D6_MASK; + if (value & _BV(3)) data |= SR1W_D7_MASK; + + numDelays += loadSR(data); + + // Make sure we wait at least 40 uS between bytes. + unsigned int totalDelay = numDelays * SR1W_DELAY_US; + if (totalDelay < 40) + delayMicroseconds(40 - totalDelay); +} + +// +// setBacklight +void LiquidCrystal_SR1W::setBacklight ( uint8_t value ) +{ + // Check for polarity to configure mask accordingly + // ---------------------------------------------------------- + if ( ((_blPolarity == POSITIVE) && (value > 0)) || + ((_blPolarity == NEGATIVE ) && ( value == 0 )) ) + { + _blMask = SR1W_BL_MASK; + } + else + { + _blMask = 0; + } + + // Send a dummy (non-existant) command to allow the backlight PIN to be latched. + // The seems to be safe because the LCD appears to treat this as a NOP. + send(0, COMMAND); +} \ No newline at end of file diff --git a/libraries/LiquidCrystal/LiquidCrystal_SR1W.h b/libraries/LiquidCrystal/LiquidCrystal_SR1W.h new file mode 100644 index 0000000000000000000000000000000000000000..d71c173f2adbff95267a53a917e526cb4e72a1e7 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SR1W.h @@ -0,0 +1,373 @@ + +// --------------------------------------------------------------------------- +// Created/Adapted by Stephen Erisman 2013-07-06 +// Copyright 2013 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// @file LiquidCrystal_SR1W.h +// Connects a hd44780 LCD using 1 pin from the Arduino, via an 8-bit Latching +// ShiftRegister (SR1W from now on). +// +// @brief +// This is the 1 wire shift register interface class for the LCD library +// +// The functionality provided by this class and its base class is a superset of +// the original functionality of the Arduino LiquidCrystal library and can +// be used as such. +// See the LCD class for a full description of the API functions available. +// +// It works with a 8-bit latched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out) +// shift register, and an hd44780 LCD in 4-bit mode. +// The 74HC595 shift register has been tested. +// +// +// 1 Pin required from the Arduino: +// - Serial PIN: +// The Serial PIN is wired directly to the shift register's Clock PIN and its +// unaltered signal directly triggers the Clock on every LOW to HIGH transition. +// +// Additionally, the Serial PIN is wired through a resistor capacitor (RC) filter to +// the shift register's Data PIN. During a quick transition of the Serial PIN the +// RC filter will maintain the Data PIN's previous value because the capacitor isn't +// given enough time to charge (or discharge) to the alternate state. If the transition +// is held for enough time, however, the RC capacitor will charge (or discharge) and the +// value seen by the Data PIN will have changed state. +// +// There are two circuit versions that behave differently for Latch, Enable, and Clear: +// +// HW_CLEAR version: +// In this version the shift register's Latch and LCD's Enable PINs are wired directly to +// the shift register's Q'H output. The shift register's /Clear PIN is then wired up +// through two logic "gates": first QH and Q'H are AND'd together with a diode-resistor +// "gate" the output of which is NAND'd with VCC using a resistor-NPN-resistor "gate". +// So, /CLR = ((QH AND Q'H) NAND VCC). We also put a capacitor on the NPN base to GND +// to delay the signal a bit and allow the Latch and EN signals some extra time to trigger. +// +// This all fits together as follows: +// 1. We shift in a '1'. +// 2. Ws shift in the other 7 bits. +// 3. At this point the first '1' has been shifted into Q'H causing it to go HIGH. +// 4. When Q'H is HIGH it causes Latch and EN to also go HIGH. +// 5. When Latch transitions to HIGH it changes the shift register outputs to the bits +// that were shifted in. +// 6. This causes QH to go HIGH (if it wasn't already). +// 7. Now that QH AND Q'H are both HIGH they causes the base capacitor to start charging. +// 8. When the capacitor has charged enough the transistor brings /CLR LOW. +// 8. This will cause /CLR to trigger and the shift register will be cleared +// (NOTE: This doesn't change the latched outputs) +// 9. The clearing of the shift register causes Q'H to go LOW. +// 9. When Q'H is LOW it causes Latch and EN to also go LOW. +// 10. When EN transitions to LOW the LCD reads in the bits on the shift register pins +// and does it's thing. +// 11. Now that Q'H is LOW the base capacitor starts discharging. +// 12. When the capacitor has discharged enough the transistor will stop sinking /CLR. +// 13. This will cause /CLR to be pulled back up to HIGH by the VCC pullup resistor +// (it will stay that way until our next nibble/byte has been shifted in) +// 14. We are now ready for our next nibble/byte. +// +// +// SW_CLEAR version: +// In this version the Serial PIN is wired to the shift register's Latch and LCD's Enable +// PINs through another RC filter. These PINs are also wired through a diode (AND "gate") +// tied to the shift register's Q'H output. This combination means that the Latch and +// Enable PINs will be held LOW as long as EITHER the Q'H or RC output is LOW. +// +// This all fits together as follows: +// 1. We shift in a '1'. +// 2. We shift in the other 7 bits. (NOTE: We leave Serial PIN HIGH at the end of this) +// 3. At this point the first '1' has been shifted into Q'H causing it to go HIGH. +// (NOTE: Up until this time Q'H has been LOW so the attached diode has been keeping +// the Latch/EN pins LOW.) +// 4. Now that Q'H is HIGH it causes the attached diode to stop discharging the Latch/EN +// capacitor. We delay here for a while to make sure it is fully charged. +// 5. When the capacitor has charged enough Latch/EN will be HIGH +// 5. When Latch transitions to HIGH it changes the shift register outputs to what was +// shifted in. +// 6. We now bring the Serial PIN LOW and wait for the Latch/EN capacitor to discharge. +// 7. When the capacitor has discharged enough Latch/EN will be LOW +// 8. When EN transitions to LOW the LCD reads in the bits on the shift register pins +// and does it's thing. +// 9. We now shift in '0' 8 times (as quickly as possible). +// 10. If we keep the LOW to HIGH to LOW pulses short enough while shifting in the '0's +// the Latch/EN capacitor won't have time to charge to a point where it will re-trigger +// the Latch/EN pins. +// 11. Now Q'H will be LOW and the shift register has been cleared (NOTE: This doesn't +// change the latched outputs.) +// 12. We now bring the Serial PIN HIGH again and wait for the Data capacitor to recharge. +// 13. When the Data capacitor has fully charged we are ready for our next nibble/byte. +// +// +// These designs incorporate (and merge) ideas originally found here (1-wire concept): +// http://www.romanblack.com/shift1.htm +// and here (diode-resistor AND "gate" EN control): +// http://www.rentron.com/Myke1.htm +// as well as introducing some new and original ideas (particularly how HW_CLEAR works). +// +// Because of its use of the diode AND "gate", the SW_CLEAR design allows for faster sending +// of data to the LCD compared to Roman's original design. With the proposed 5uS delay (see +// notes below), a byte can be sent to the LCD in as little as 30 uS (plus overhead) when +// sending all 1's. This increases to as much as 190 uS (plus overhead) when sending all 0's. +// This is in comparison to Roman's estimate of around 3-4 mS to send a byte. So this +// implementation is 15-133 times faster for the cost of a single (1N4148 or similar) diode. +// +// The HW_CLEAR version is even faster as it can completely eliminate the clearSR() call as +// well as the delays that are needed to latch the data in the SW_CLEAR version. +// +// +// Default Shift Register Bits - Shifted MSB first: +// Bit #0 (QA) - not used +// Bit #1 (QB) - connects to LCD data input D7 +// Bit #2 (QC) - connects to LCD data input D6 +// Bit #3 (QD) - connects to LCD data input D5 +// Bit #4 (QE) - connects to LCD data input D4 +// Bit #5 (QF) - optional backlight control +// Bit #6 (QG) - connects to RS (Register Select) on the LCD +// Bit #7 (QH) - used for /CLR on the HW_CLEAR version (cannot be changed) +// (Q'H) - used for Latch/EN (via the diode AND "gate") (cannot be changed) +// +// NOTE: Any of these can be changed around as needed EXCEPT Bit #7 (QH and Q'H). +// +// +// Circuit Types (for the 74HC595) +// ------------------------------- +// The 74HC595 is a latching shift register. See the explanations above for how these circuits +// work. +// +// +// HW_CLEAR version: (Faster but higher part count) +// ------------------------------------------------ +// +// 74HC595 (VCC) +// +----u----+ | 2.2nF +// (LCD D7)------------1-|QB VCC|-16--+ +----||----(GND) +// (LCD D6)------------2-|QC QA|-15 | +// (LCD D5)------------3-|QD SER|-14-------+--[ Resistor ]--+ +// (LCD D4)------------4-|QE /OE|-13--(GND) 1.5k | +// (BL Circuit)--------5-|QF RCK|-12-----+ | +// | | \ | +// (LCD RS)------------6-|QG SCK|-11-------)----------------+--(Serial PIN) +// | | | +// +-------7-|QH /CLR|-10-------)--+--[ Resistor ]--(VCC) +// | | | / | 1k +// | +--8-|GND Q'H|--9-----+ | +// | | +---------+ | | (GND)--(LCD RW) +// | | 0.1uF | \ +// | (GND)-----||----(VCC) +------)--------------(LCD EN) +// | | / +// |----|<|----+--[ Resistor ]--| | +// diode | 1k C +// | | +// +-------------+---B-|> (NPN) +// | | +// (2.2nF) = E +// | | +// (GND) (GND) +// +// +// SW_CLEAR version: (Lower part count but slower) +// ----------------------------------------------- +// +// 74HC595 (VCC) +// +----u----+ | 2.2nF +// (LCD D7)------------1-|QB VCC|-16--+ +----||----(GND) +// (LCD D6)------------2-|QC QA|-15 | +// (LCD D5)------------3-|QD SER|-14---------+--[ Resistor ]--+ +// (LCD D4)------------4-|QE /OE|-13--(GND) 1.5k | +// (BL Circuit)--------5-|QF RCK|-12---------+ | +// | | \ | +// (LCD RS)------------6-|QG SCK|-11-----------)--------------+--(Serial PIN) +// 7-|QH /CLR|-10--(VCC) / | +// +--8-|GND Q'H|--9---|<|---+--[ Resistor ]--+ +// | +---------+ diode | 1.5k +// | | +// | 0.1uF | +// (GND)-----||----(VCC) +----||----(GND) +// | 2.2nF +// (LCD EN)-------------------------------------+ +// (LCD RW)--(GND) +// +// +// In either case the LCD RW pin is hardwired to GND meaning we will only be able to write +// to the LCD. +// Therefore, the Busy Flag (BF, data bit D7) is not able to be read and we have to make use +// of the minimum delay time constraints. This isn't really a problem because it usually +// takes us longer to shift and latch the data than the minimum delay anyway. For now, we +// simply keep track of our delays and add more delay at the end to get to at least 37 uS. +// +// +// Backlight Control Circuit +// ------------------------- +// Since we are using the latching nature of the shift resiter we don't need the extra +// backlight circuitry that SR2W uses. Keeping it around, however, would still work because +// the circuit just slows down the transitions to the mosfet a bit. +// +// Here are two more optimized versions that can be used. +// +// +// NPN Transistor version: (Cheaper but more power draw and higher part count) +// --------------------------------------------------------------------------- +// +// (value depends on LCD, 100ohm is usually safe) +// (LCD BL anode)---[ resistor ]---(VCC) +// +// (LCD BL cathode)---------------+ +// | +// C +// | +// (BL input)--[ Resistor ]---B-|> (NPN) +// 1k | +// E +// | +// (GND) +// +// NOTE: The Bate resistor is needed because the NPN is current fed. For lower +// power draw, try a 10k resistor. +// +// +// N-CH Mosfet version: (More costly but less power draw and lower part count) +// --------------------------------------------------------------------------- +// +// (value depends on LCD, 100ohm is usually safe) +// (LCD BL anode)---[ resistor ]---(VCC) +// +// (LCD BL cathode)---------------+ +// | +// D +// | +// (BL input)----------------G-|-< (2N7000 FET) +// | +// S +// | +// (GND) +// +// NOTE: Gate resistor not needed because the mosfet is voltage fed and only really +// pulls current while switching. +// +// In either case, when the BL input is HIGH the LCD backlight will turn on. +// +// +// History +// 2013.07.31 serisman - fixed potential interrupt bug and made more performance optimizations +// 2013.07.10 serisman - more performance optimizations and modified the HW_CLEAR circuit a bit +// 2013.07.09 serisman - added an even faster version that performs the clear in hardware +// 2013.07.08 serisman - changed code to shift data MSB first to match SR2W +// 2013.07.07 serisman - major speed optimization +// 2013.07.06 serisman - created/modified from SR2W source to create SR1W +// @author S. Erisman - arduino@serisman.com +// -------------------------------------------------------------------------------- + +#ifndef _LIQUIDCRYSTAL_SR1W_ +#define _LIQUIDCRYSTAL_SR1W_ + +#include <inttypes.h> +#include "LCD.h" +#include "FastIO.h" + +// 1-wire SR timing constants +// --------------------------------------------------------------------------- + +// NOTE: +// The 1.5k resistor (1.2k - 1.8k with a 20% tolerance) +// takes between 2.376uS and 4.36uS to fully charge or discharge +// the 2.2n capacitor (1.98n - 2.42n with a 10% tolerance). +// We round this up to a 5uS delay to provide an additional safety margin. + +#define SR1W_DELAY_US 5 +#define SR1W_DELAY() { delayMicroseconds(SR1W_DELAY_US); numDelays++; } + +// 1-wire SR output bit constants +// --------------------------------------------------------------------------- + +#define SR1W_UNUSED_MASK 0x01 // Set unused bit(s) to '1' as they are slightly faster to clock in. +#define SR1W_D7_MASK 0x02 +#define SR1W_D6_MASK 0x04 +#define SR1W_D5_MASK 0x08 +#define SR1W_D4_MASK 0x10 +#define SR1W_BL_MASK 0x20 +#define SR1W_RS_MASK 0x40 +#define SR1W_EN_MASK 0x80 // This cannot be changed. It has to be the first thing shifted in. + +#define SR1W_ATOMIC_WRITE_LOW(reg, mask) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg &= ~mask; } +#define SR1W_ATOMIC_WRITE_HIGH(reg, mask) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg |= mask; } + + +typedef enum { SW_CLEAR, HW_CLEAR } t_sr1w_circuitType; + +class LiquidCrystal_SR1W : public LCD +{ +public: + /*! + @method + @abstract LCD 1 wire SHIFT REGISTER constructor. + @discussion Defines the pin assignments that connect to the shift register. + The constructor does not initialize the LCD. Assuming 1 line 8 pixel high + font. + + @param srdata[in] Arduino pin for shift register. + @param circuitType[in] optionally select an alternate circuit type + @param blpol[in] optional backlight polarity (default = POSITIVE) + */ + LiquidCrystal_SR1W (uint8_t srdata, t_sr1w_circuitType circuitType, + t_backlighPol blpol = POSITIVE); + + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command using the shift register. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA=8bit data, COMMAND=8bit cmd, FOUR_BITS=4bit cmd + the LCD. + */ + virtual void send(uint8_t value, uint8_t mode); + + + /*! + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param mode[in] backlight mode (0 off, non-zero on) + */ + void setBacklight ( uint8_t mode ); + +private: + + /*! + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. + */ + void init ( uint8_t srdata, t_sr1w_circuitType circuitType, t_backlighPol blpol, + uint8_t lines, uint8_t font ); + + /*! + @method + @abstract Clears the shift register to ensure the Latch/Enable pins aren't + triggered accidentally. + */ + uint8_t clearSR (); + + /*! + * @method + * @abstract takes care of shifting and the enable pulse + */ + uint8_t loadSR (uint8_t val); + + fio_register _srRegister; // Serial PIN + fio_bit _srMask; + + t_sr1w_circuitType _circuitType; + + uint8_t _blPolarity; + uint8_t _blMask; +}; +#endif \ No newline at end of file diff --git a/libraries/LiquidCrystal/LiquidCrystal_SR2W.cpp b/libraries/LiquidCrystal/LiquidCrystal_SR2W.cpp new file mode 100644 index 0000000000000000000000000000000000000000..df4559a3350ffeb7821c5323eec2b723db8762c5 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SR2W.cpp @@ -0,0 +1,135 @@ +// --------------------------------------------------------------------------- +// Created/Adapted by Bill Perry 2012-03-16 +// Copyright 2012 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_SR2W.cpp +// Connects a hd44780 LCD using 2 pins from the Arduino, via an 8-bit +// ShiftRegister (SR2W from now on). +// +// @brief +// This is a port of the ShiftRegLCD library from raron and ported to the +// LCD library. +// +// +// See the corresponding SR2W header file for full details. +// +// History +// 2012.03.29 bperrybap - Fixed incorrect use of 5x10 for default font +// (now matches original LQ library) +// Fixed typo in SR2W mask define names +// changed default backlight state to on +// 2012.03.16 bperrybap - created/modified from SR sources to create SR2W +// @author B. Perry - bperrybap@opensource.billsworld.billandterrie.com +// --------------------------------------------------------------------------- + +#include "LiquidCrystal_SR2W.h" + +// CONSTRUCTORS +// --------------------------------------------------------------------------- +// Assuming 1 line 8 pixel high font +LiquidCrystal_SR2W::LiquidCrystal_SR2W (uint8_t srdata, uint8_t srclock, t_backlighPol blpol) +{ + init ( srdata, srclock, blpol, 1, 0 ); +} + + +// PRIVATE METHODS +// --------------------------------------------------------------------------- + +// +// init +void LiquidCrystal_SR2W::init(uint8_t srdata, uint8_t srclock, t_backlighPol blpol, uint8_t lines, uint8_t font) +{ + _srDataRegister = fio_pinToOutputRegister(srdata); + _srDataMask = fio_pinToBit(srdata); + _srClockRegister = fio_pinToOutputRegister(srclock); + _srClockMask = fio_pinToBit(srclock); + + _blPolarity = blpol; + + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + + backlight(); // set default backlight state to on +} + +// +// loadSR +void LiquidCrystal_SR2W::loadSR(uint8_t val) +{ + // Clear to keep Enable LOW while clocking in new bits + fio_shiftOut(_srDataRegister, _srDataMask, _srClockRegister, _srClockMask); + + + // clock out SR data byte + fio_shiftOut(_srDataRegister, _srDataMask, _srClockRegister, _srClockMask, val, MSBFIRST); + + + // strobe LCD enable which can now be toggled by the data line + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + fio_digitalWrite_HIGH(_srDataRegister, _srDataMask); + waitUsec (1); // enable pulse must be >450ns + fio_digitalWrite_SWITCHTO(_srDataRegister, _srDataMask, LOW); + } // end critical section +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + + +/************ low level data pushing commands **********/ +// +// send +void LiquidCrystal_SR2W::send(uint8_t value, uint8_t mode) +{ + uint8_t myMode = ( mode == DATA ) ? SR2W_RS_MASK : 0; + + myMode = myMode | SR2W_EN_MASK | _blMask; + + if ( mode != FOUR_BITS ) + { + loadSR(myMode | ((value >> 1) & SR2W_DATA_MASK)); // upper nibble + } + + loadSR(myMode | ((value << 3) & SR2W_DATA_MASK)); // lower nibble + + /* + * Don't call waitUsec() + * do our own delay optmization since this code is so fast it needs some added delay + * even on slower AVRs. + */ +#if (F_CPU <= 16000000) + delayMicroseconds ( 10 ); // commands & data writes need > 37us to complete +#else + delayMicroseconds ( 37 ); // commands & data writes need > 37us to complete +#endif +} + +// +// setBacklight +void LiquidCrystal_SR2W::setBacklight ( uint8_t value ) +{ + // Check for polarity to configure mask accordingly + // ---------------------------------------------------------- + if ( ((_blPolarity == POSITIVE) && (value > 0)) || + ((_blPolarity == NEGATIVE ) && ( value == 0 )) ) + { + _blMask = SR2W_BL_MASK; + } + else + { + _blMask = 0; + } + + // send dummy data of blMask to set BL pin + // Note: loadSR() will strobe the data line trying to pulse EN + // but E will not strobe because the EN output bit is not set. + loadSR(_blMask); +} diff --git a/libraries/LiquidCrystal/LiquidCrystal_SR2W.h b/libraries/LiquidCrystal/LiquidCrystal_SR2W.h new file mode 100644 index 0000000000000000000000000000000000000000..2bccb871921c29de81f3a59863cbfad0b71b34f8 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SR2W.h @@ -0,0 +1,202 @@ +// --------------------------------------------------------------------------- +// Created/Adapted by Bill Perry 2012-03-16 +// Copyright 2012 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// @file LiquidCrystal_SR2W.h +// Connects a hd44780 LCD using 2 pins from the Arduino, via an 8-bit +// ShiftRegister (SR2W from now on). +// +// @brief +// This is the 2 wire shift register interface class for the LCD library +// +// The functionality provided by this class and its base class is a superset of +// the original functionality of the Arduino LiquidCrystal library and can +// be used as such. +// See the LCD class for a full description of the API functions available. +// +// It works with a 8-bit unlatched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out) +// shift register (IE a very simple SR), and an hd44780 LCD in 4-bit mode. +// Any such shift register should do (pref. 74LS family IC's for 2-wire). +// 74LS164 and 74HC595 have been exstensively tested. +// +// +// 2 Pins required from the Arduino: +// - Data/Enable +// - Clock +// The Data pin is also used to control the enable signal +// LCD RW-pin hardwired to LOW (only writing to LCD). +// Busy Flag (BF, data bit D7) is not read. +// +// Original project homepage: http://code.google.com/p/arduinoshiftreglcd/ +// +// Shift register bits +// Bit #0 - (cannot be used on 74HC595) +// Bit #1 - optional backlight control +// Bit #2 - connects to RS (Register Select) on the LCD +// Bit #3 - connects to LCD data inputs D4 +// Bit #4 - connects to LCD data inputs D5 +// Bit #5 - connects to LCD data inputs D6 +// Bit #6 - connects to LCD data inputs D7 +// Bit #7 - enables the LCD enable-puls (via the diode-resistor AND "gate") +// +// Wiring for a 74LS164 +// --------------------- +// 1k/4.7k +// +--------[ Resistor ]--------+---(LCD Enable) +// | | +// | 74LS164 (VCC) | +// | +----u----+ | _V_ diode +// (data pin)---+---+--1-|A VCC|-14-+ | +// | | | | +// +--2-|B Q7|-13------+ +// 3-|Q0 Q6|-12--(LCD D7) +// (BL Circuit)--------4-|Q1 Q5|-11--(LCD D6) +// (LCD RS)------------5-|Q2 Q4|-10--(LCD D5) +// (LCD D4)------------6-|Q3 /MR|--9--(VCC) +// +-7-|GND CP|--8--(clock pin) +// | +---------+ +// | 0.1uf +// (gnd)-----||----(vcc) +// +// Wiring for a 74HC595 +// -------------------- +// NOTE: the 74HC595 is a latching shift register. In order to get it to operate +// in a "non latching" mode, RCLK and SCLK are tied together. The side effect of this +// is that the latched output is one clock behind behind the internal shift register bits. +// To compensate for this the wiring is offset by one bit position lower. +// For example, while the backlight is hooked to Q0 it is still using bit 1 of +// of the shift register because the outputs are 1 clock behind the real internal shift +// register. +// +// 74HC595 (VCC) +// +----u----+ | +-----------------------(BL circuit) +// (LCD RS)------------1-|Q1 VCC|-16-+ | +--------------------(data pin) +// (LCD D4)------------2-|Q2 Q0|-15----+ | 1k/4.7k +// (LCD D5)------------3-|Q3 SER|-14-------+---[ Resistor ]--+--(LCD Enable) +// (LCD D6)------------4-|Q4 /OE|-13--(gnd) | +// (LCD D7)------------5-|Q5 RCLK|-12-------+ | +// | | | | +// +------6-|Q6 SCLK|-11-------+--(clock pin) | +// | 7-|Q7 /MR|-10--(VCC) | +// | +-8-|GND Q6'|--9 | +// | | +---------+ diode _V_ +// | | 0.1uf | +// | (gnd)-----||----(vcc) | +// +-----------------------------------------------+ +// +// +// Backlight Control circuit +// ------------------------- +// Because the shift resiter is not latching the outputs, the backlight circuitry +// will "see" the output bits as they are shifted into the shift register which +// can cause the backlight to flicker rather than remain constantly on/off. +// The circuit below slows down the transitions to the transistor to remove +// the visible flicker. When the BL input is HIGH the LCD backlight will turn on. +// +// (value depends on LCD, 100ohm is usually safe) +// (LCD BL anode)---[ resistor ]---(vcc) +// +// (LCD BL cathode)-------------------------------+ +// | +// D +// | +// (BL input)----[ 4.7k Resistor ]----+-------G-|-< (2N7000 FET) +// | | +// (0.1uf) = S +// | | +// (gnd) (gnd) +// +// +// +// +// History +// 2012.03.16 bperrybap - creation/adaption from SR header to create SR2W header. +// Fixed typo in SR2W mask define names +// @author B. Perry - bperrybap@opensource.billsworld.billandterrie.com +// -------------------------------------------------------------------------------- +#ifndef _LIQUIDCRYSTAL_SR2W_ +#define _LIQUIDCRYSTAL_SR2W_ + +#include <inttypes.h> +#include "LCD.h" +#include "FastIO.h" + + +// two-wire SR output bit constants +// --------------------------------------------------------------------------- + +#define SR2W_BL_MASK 0x02 +#define SR2W_RS_MASK 0x04 +#define SR2W_DATA_MASK 0x78 // data bits are hard coded to be SR bits 6,5,4,3 +#define SR2W_EN_MASK 0x80 // cannot ever be changed + +class LiquidCrystal_SR2W : public LCD +{ +public: + /*! + @method + @abstract LCD 2 wire SHIFT REGISTER constructor. + @discussion Defines the pin assignments that connect to the shift register. + The constructor does not initialize the LCD. Assuming 1 line 8 pixel high + font. + + @param srdata[in] Arduino pin for shift register data line. + @param srclock[in] Arduino pin for shift register clock line. + @param blpol[in] optional backlight polarity (default = POSITIVE) + */ + LiquidCrystal_SR2W (uint8_t srdata, uint8_t srclock, t_backlighPol blpol = POSITIVE); + + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command using the shift register. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA=8bit data, COMMAND=8bit cmd, FOUR_BITS=4bit cmd + the LCD. + */ + virtual void send(uint8_t value, uint8_t mode); + + + /*! + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param mode[in] backlight mode (0 off, non-zero on) + */ + void setBacklight ( uint8_t mode ); + +private: + + /*! + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. + */ + void init ( uint8_t srdata, uint8_t srclock, t_backlighPol blpol, uint8_t lines, uint8_t font ); + + /*! + * @method + * @abstract takes care of shifting and the enable pulse + */ + void loadSR (uint8_t val); + + fio_register _srDataRegister; // Serial Data pin + fio_bit _srDataMask; + fio_register _srClockRegister; // Clock Pin + fio_bit _srClockMask; + + uint8_t _blPolarity; + uint8_t _blMask; +}; +#endif diff --git a/libraries/LiquidCrystal/LiquidCrystal_SR3W.cpp b/libraries/LiquidCrystal/LiquidCrystal_SR3W.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6144c06f07a5c1ec96f916c67e5b20d3bcc8fec1 --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SR3W.cpp @@ -0,0 +1,283 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 7.3.2012. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_SRG.h +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK but using a generic SHIFT REGISTER extension board. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using a 3 wire latching +// shift register. While it has been tested with a 74HC595N shift register +// it should also work with other latching shift registers such as the MC14094 +// and the HEF4094 +// +// This particular driver has been created as generic as possible to enable +// users to configure and connect their LCDs using just 3 digital IOs from the +// AVR or Arduino, and connect the LCD to the outputs of the shiftregister +// in any configuration. The library is configured by passing the IO pins +// that control the strobe, data and clock of the shift register and a map +// of how the shiftregister is connected to the LCD. +// +// +// +--------------------------------------------+ +// | MCU | +// | IO1 IO2 IO3 | +// +----+-------------+-------------+-----------+ +// | | | +// | | | +// +----+-------------+-------------+-----------+ +// | Strobe Data Clock | +// | 8-bit shift/latch register | 74HC595N +// | Qa0 Qb1 Qc2 Qd3 Qe4 Qf5 Qg6 Qh7 | +// +----+----+----+----+----+----+----+----+----+ +// | | | | | | | +// |11 |12 |13 |14 |6 |5 |4 (LCD pins) +// +----+----+----+----+----+----+----+----+----+ +// | DB4 DB5 DB6 DB7 E Rw RS | +// | LCD Module | +// +// NOTE: Rw is not used by the driver so it can be connected to GND. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// +// History +// 2012.03.29 bperrybap - fixed constructors not properly using Rs +// Fixed incorrect use of 5x10 for default font +// - now matches original LQ library. +// moved delay to send() so it is per cmd/write vs shiftout() +// NOTE: delay is on hairy edge of working when FAST_MODE is on. +// because of waitUsec(). +// There is margin at 16Mhz AVR but might fail on 20Mhz AVRs. +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +// flags for backlight control +#include <stdio.h> +#include <string.h> +#include <inttypes.h> + +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif +#include "LiquidCrystal_SR3W.h" + +#include "FastIO.h" + +/*! + @defined + @abstract LCD_NOBACKLIGHT + @discussion No BACKLIGHT MASK + */ +#define LCD_NOBACKLIGHT 0x00 + +/*! + @defined + @abstract LCD_BACKLIGHT + @discussion BACKLIGHT MASK used when backlight is on + */ +#define LCD_BACKLIGHT 0xFF + + +// Default library configuration parameters used by class constructor with +// only the I2C address field. +// --------------------------------------------------------------------------- +/*! + @defined + @abstract Enable bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Enable + */ +#define EN 4 // Enable bit + +/*! + @defined + @abstract Read/Write bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Rw pin + */ +#define RW 5 // Read/Write bit + +/*! + @defined + @abstract Register bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Register select pin + */ +#define RS 6 // Register select bit + +/*! + @defined + @abstract LCD dataline allocation this library only supports 4 bit LCD control + mode. + @discussion D4, D5, D6, D7 LCD data lines pin mapping of the extender module + */ +#define D4 0 +#define D5 1 +#define D6 2 +#define D7 3 + + + +LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe) +{ + init( data, clk, strobe, RS, RW, EN, D4, D5, D6, D7 ); +} + +LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, + uint8_t backlighPin, t_backlighPol pol) +{ + init( data, clk, strobe, RS, RW, EN, D4, D5, D6, D7 ); + setBacklightPin(backlighPin, pol); +} + +LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, + uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ) +{ + init( data, clk, strobe, Rs, Rw, En, d4, d5, d6, d7 ); +} + +LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, + uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t backlighPin, t_backlighPol pol) +{ + init( data, clk, strobe, Rs, Rw, En, d4, d5, d6, d7 ); + setBacklightPin(backlighPin, pol); +} + + +void LiquidCrystal_SR3W::send(uint8_t value, uint8_t mode) +{ + + if ( mode != FOUR_BITS ) + { + write4bits( (value >> 4), mode ); // upper nibble + } + write4bits( (value & 0x0F), mode); // lower nibble + + +#if (F_CPU <= 16000000) + // No need to use the delay routines on AVR since the time taken to write + // on AVR with SR pin mapping even with fio is longer than LCD command execution. + waitUsec(37); //goes away on AVRs +#else + delayMicroseconds ( 37 ); // commands & data writes need > 37us to complete +#endif + +} + + +void LiquidCrystal_SR3W::setBacklightPin ( uint8_t value, t_backlighPol pol = POSITIVE ) +{ + _backlightPinMask = ( 1 << value ); + _backlightStsMask = LCD_NOBACKLIGHT; + _polarity = pol; + setBacklight (BACKLIGHT_OFF); // Set backlight to off as initial setup +} + +void LiquidCrystal_SR3W::setBacklight ( uint8_t value ) +{ + // Check if backlight is available + // ---------------------------------------------------- + if ( _backlightPinMask != 0x0 ) + { + // Check for polarity to configure mask accordingly + // ---------------------------------------------------------- + if (((_polarity == POSITIVE) && (value > 0)) || + ((_polarity == NEGATIVE ) && ( value == 0 ))) + { + _backlightStsMask = _backlightPinMask & LCD_BACKLIGHT; + } + else + { + _backlightStsMask = _backlightPinMask & LCD_NOBACKLIGHT; + } + loadSR( _backlightStsMask ); + } +} + + +// PRIVATE METHODS +// ----------------------------------------------------------------------------- + +int LiquidCrystal_SR3W::init(uint8_t data, uint8_t clk, uint8_t strobe, + uint8_t Rs, uint8_t Rw, uint8_t En, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +{ + _data = fio_pinToBit(data); + _clk = fio_pinToBit(clk); + _strobe = fio_pinToBit(strobe); + _data_reg = fio_pinToOutputRegister(data); + _clk_reg = fio_pinToOutputRegister(clk); + _strobe_reg = fio_pinToOutputRegister(strobe); + + // LCD pin mapping + _backlightPinMask = 0; + _backlightStsMask = LCD_NOBACKLIGHT; + _polarity = POSITIVE; + + _En = ( 1 << En ); + _Rw = ( 1 << Rw ); + _Rs = ( 1 << Rs ); + + // Initialise pin mapping + _data_pins[0] = ( 1 << d4 ); + _data_pins[1] = ( 1 << d5 ); + _data_pins[2] = ( 1 << d6 ); + _data_pins[3] = ( 1 << d7 ); + + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + + return (1); +} + +void LiquidCrystal_SR3W::write4bits(uint8_t value, uint8_t mode) +{ + uint8_t pinMapValue = 0; + + // Map the value to LCD pin mapping + // -------------------------------- + for ( uint8_t i = 0; i < 4; i++ ) + { + if ( ( value & 0x1 ) == 1 ) + { + pinMapValue |= _data_pins[i]; + } + value = ( value >> 1 ); + } + + // Is it a command or data + // ----------------------- + mode = ( mode == DATA ) ? _Rs : 0; + + pinMapValue |= mode | _backlightStsMask; + loadSR ( pinMapValue | _En ); // Send with enable high + loadSR ( pinMapValue); // Send with enable low +} + + +void LiquidCrystal_SR3W::loadSR(uint8_t value) +{ + // Load the shift register with information + fio_shiftOut(_data_reg, _data, _clk_reg, _clk, value, MSBFIRST); + + // Strobe the data into the latch + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) + { + fio_digitalWrite_HIGH(_strobe_reg, _strobe); + fio_digitalWrite_SWITCHTO(_strobe_reg, _strobe, LOW); + } +} diff --git a/libraries/LiquidCrystal/LiquidCrystal_SR3W.h b/libraries/LiquidCrystal/LiquidCrystal_SR3W.h new file mode 100644 index 0000000000000000000000000000000000000000..fccaa988f002ade1f2a5abbf2dd07b3c1c8173be --- /dev/null +++ b/libraries/LiquidCrystal/LiquidCrystal_SR3W.h @@ -0,0 +1,204 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 7.3.2012. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file LiquidCrystal_SR3W.h +// This file implements a basic liquid crystal library that comes as standard +// in the Arduino SDK but using a generic SHIFT REGISTER extension board. +// +// @brief +// This is a basic implementation of the LiquidCrystal library of the +// Arduino SDK. The original library has been reworked in such a way that +// this class implements the all methods to command an LCD based +// on the Hitachi HD44780 and compatible chipsets using a 3 wire latching +// shift register. While it has been tested with a 74HC595N shift register +// it should also work with other latching shift registers such as the MC14094 +// and the HEF4094 +// +// This particular driver has been created as generic as possible to enable +// users to configure and connect their LCDs using just 3 digital IOs from the +// AVR or Arduino, and connect the LCD to the outputs of the shiftregister +// in any configuration. The library is configured by passing the IO pins +// that control the strobe, data and clock of the shift register and a map +// of how the shiftregister is connected to the LCD. +// +// +// +--------------------------------------------+ +// | MCU | +// | IO1 IO2 IO3 | +// +----+-------------+-------------+-----------+ +// | | | +// | | | +// +----+-------------+-------------+-----------+ +// | Strobe Data Clock | +// | 8-bit shift/latch register | 74HC595N +// | Qa0 Qb1 Qc2 Qd3 Qe4 Qf5 Qg6 Qh7 | +// +----+----+----+----+----+----+----+----+----+ +// | | | | | | | +// |11 |12 |13 |14 |6 |5 |4 (LCD pins) +// +----+----+----+----+----+----+----+----+----+ +// | DB4 DB5 DB6 DB7 E Rw RS | +// | LCD Module | +// +// NOTE: Rw is not used by the driver so it can be connected to GND. +// +// The functionality provided by this class and its base class is identical +// to the original functionality of the Arduino LiquidCrystal library. +// +// +// @author F. Malpartida - fmalpartida@gmail.com +// --------------------------------------------------------------------------- +#ifndef _LIQUIDCRYSTAL_SR3W_H_ +#define _LIQUIDCRYSTAL_SR3W_H_ + +#include <inttypes.h> +#include "LCD.h" +#include "FastIO.h" + + +class LiquidCrystal_SR3W : public LCD +{ +public: + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the IO driving the + shift register. The constructor does not initialize the LCD. + Default configuration: + Shift register LCD + QA - 0 DB4 + QB - 1 DB5 + QC - 2 DB6 + QD - 3 DB7 + QE - 4 E + QF - 5 + QG - 6 Rs + GND Rw + + @param strobe[in] digital IO connected to shiftregister strobe pin. + @param data[in] digital IO connected to the shiftregister data pin. + @param clk[in] digital IO connected to the shiftregister clock pin. + */ + LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe); + // Constructor with backlight control + LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, + uint8_t backlighPin, t_backlighPol pol); + + /*! + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the control lines of + the LCD and the shiftregister. The constructor does not initialize the LCD. + + @param strobe[in] digital IO connected to shiftregister strobe pin. + @param data[in] digital IO connected to shiftregister data pin. + @param clk[in] digital IO connected to shiftregister clock pin. + @param En[in] LCD En (Enable) pin connected to SR output pin. + @param Rw[in] LCD Rw (Read/write) pin connected to SR output pin. + @param Rs[in] LCD Rs (Reg Select) pin connected to SR output pin. + @param d4[in] LCD data 4 pin map to the SR output pin. + @param d5[in] LCD data 5 pin map to the SR output pin. + @param d6[in] LCD data 6 pin map to the SR output pin. + @param d7[in] LCD data 7 pin map to the SR output pin. + */ + LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, + uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ); + // Constructor with backlight control + LiquidCrystal_SR3W( uint8_t data, uint8_t clk, uint8_t strobe, + uint8_t En, uint8_t Rw, uint8_t Rs, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, + uint8_t backlighPin, t_backlighPol pol); + + /*! + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. + */ + virtual void send(uint8_t value, uint8_t mode); + + /*! + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. This device + doesn't support dimming backlight capability. + + @param value: pin mapped on the 74HC595N (0, .., 7) for (Qa0, .., Qh7) + respectively. + @param pol: polarity POSITIVE|NEGATIVE. + */ + void setBacklightPin ( uint8_t value, t_backlighPol pol ); + + /*! + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param value: backlight mode (HIGH|LOW) + */ + void setBacklight ( uint8_t value ); + +private: + + /*! + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. + */ + int init(uint8_t data, uint8_t clk, uint8_t strobe, + uint8_t Rs, uint8_t Rw, uint8_t En, + uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + + /*! + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. + @param value[in] Value to write to the LCD + @param more[in] Value to distinguish between command and data. + COMMAND == command, DATA == data. + */ + void write4bits(uint8_t value, uint8_t mode); + + /*! + @function + @abstract load into the shift register a byte + @discussion loads into the shift register a byte + @param value[in]: value to be loaded into the shiftregister. + */ + void loadSR(uint8_t value); + + + fio_bit _strobe; // shift register strobe pin + fio_register _strobe_reg; // SR strobe pin MCU register + fio_bit _data; // shift register data pin + fio_register _data_reg; // SR data pin MCU register + fio_bit _clk; // shift register clock pin + fio_register _clk_reg; // SR clock pin MCU register + uint8_t _En; // LCD expander word for enable pin + uint8_t _Rw; // LCD expander word for R/W pin + uint8_t _Rs; // LCD expander word for Register Select pin + uint8_t _data_pins[4]; // LCD data lines + uint8_t _backlightPinMask; // Backlight IO pin mask + uint8_t _backlightStsMask; // Backlight status mask + +}; + +#endif + diff --git a/libraries/LiquidCrystal/README.md b/libraries/LiquidCrystal/README.md new file mode 100644 index 0000000000000000000000000000000000000000..3a2a7a1401717a429d1def9d7834da3e654e8c37 --- /dev/null +++ b/libraries/LiquidCrystal/README.md @@ -0,0 +1,48 @@ +# README # + +## Introduction ## + + + +Welcome to the *LCD Library* for **Arduino** and **Chipkit**. It is a derivate of the original LiquidCrystal Library as sourced in the Arduino SDK. It has been developed to be compatible with the current LiquidCrystal library, +its performance is almost 5 times faster and fully extendable if need be. + +It supports most ``Hitachi HD44780`` based LCDs, or compatible, connected to any project using: 4, 8 +wire parallel interface, I2C IO port expander (native I2C and bit bang) and Shift Regiter. + +It currently supports 4 types of connections: + +* 4 bit parallel LCD interface +* 8 bit parallel LCD interface +* I2C IO bus expansion board with the PCF8574* I2C IO expander ASIC such as [I2C LCD extra IO](http://www.electrofunltd.com/2011/10/i2c-lcd-extra-io.html "I2C LCD extra IO"). +* ShiftRegister adaptor board as described [Shift Register project home](http://code.google.com/p/arduinoshiftreglcd/ "Shift Register project home") or in the HW configuration described below, 2 and 3 wire configurations supported. +* ShiftRegister 3 wire latch adaptor board as described [ShiftRegister 3 Wire Home](http://www.arduino.cc/playground/Code/LCD3wires "ShiftRegister 3 Wire Home") +* Support for 1 wire shift register [ShiftRegister 1 Wire](http://www.romanblack.com/shift1.htm "ShiftRegister 1 Wire") +* I2C bus expansion using general purpose IO lines. + +### How do I get set up? ### + +* Please refer to the project's [wiki](https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home "wiki") + + +### Contributors +The library has had the invaluable contribution of: + +* [piccaso](http://www.3guys1laser.com/blog-cheap-arduino-2-wire-lcd-display-0 "picas") - Florian Fida - Flo, thanks for testing and improving the SR library, initial version of the 1 wire interface and speed improvements. +* B. Perry - *bperrybap@opensource.billsworld.billandterrie.com*, with his thoughtful contribution, speed improvements and development support for the SR2W library. +* Adrian Piccioli, with his contribution to the i2c GPIO support. +* [todbot](https://github.com/todbot "todbot") Tod E. Kurt for the [softwarei2cmaster](https://github.com/todbot/SoftI2CMaster "softwarei2cmaster") library. +* [felias-fogg](https://github.com/felias-fogg) - Bernhard for the [softwarei2cmaster fast](https://github.com/felias-fogg/SoftI2CMaster "softwirei2cmaster") + +#### Contribution guidelines + +* Writing tests +* Code review +* Help out with bug fixing +* Setup a project logo +* Write new drivers to support more LCDs. + +### Who do I talk to? ### + +* Repo owner or admin +* For SoftI2CMaster latest versions, updates and support, please refer to [SoftI2CMaster](https://github.com/todbot/SoftI2CMaster "todbot") \ No newline at end of file diff --git a/libraries/LiquidCrystal/SI2CIO.cpp b/libraries/LiquidCrystal/SI2CIO.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8dbe5e850a1b16ac8ee2572c443e7b92ec303546 --- /dev/null +++ b/libraries/LiquidCrystal/SI2CIO.cpp @@ -0,0 +1,211 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file SI2CIO.h +// This file implements a basic IO library using the PCF8574 I2C IO Expander +// chip, but using software I2C. +// +// @brief +// Implement a basic IO library to drive the PCF8574* I2C IO Expander ASIC. +// The library implements basic IO general methods to configure IO pin direction +// read and write uint8_t operations and basic pin level routines to set or read +// a particular IO port. +// +// +// @version API 1.0.0 +// +// @author F. Malpartida - fmalpartida@gmail.com +// Adapted to SoftIC2 by Adrian Piccioli - adrianpiccioli@gmail.com +// --------------------------------------------------------------------------- +#if (ARDUINO < 100) +#include <WProgram.h> +#else +#include <Arduino.h> +#endif + +#include <inttypes.h> + +/*#define SCL_PIN 6 +#define SCL_PORT PORTD +#define SDA_PIN 7 +#define SDA_PORT PORTD*/ + +//#define I2C_FASTMODE 1 +//#define I2C_SLOWMODE 1 + +#define SCL_PIN 0 +#define SCL_PORT PORTB +#define SDA_PIN 1 +#define SDA_PORT PORTB + +#if defined (__AVR__) +#include "SI2CIO.h" +#include "SoftI2CMaster.h" + + +// CLASS VARIABLES +// --------------------------------------------------------------------------- + + +// CONSTRUCTOR +// --------------------------------------------------------------------------- +SI2CIO::SI2CIO ( ) +{ + _i2cAddr = 0x0; + _dirMask = 0xFF; // mark all as INPUTs + _shadow = 0x0; // no values set + _initialised = false; +} + +// PUBLIC METHODS +// --------------------------------------------------------------------------- + +// +// begin +int SI2CIO::begin ( uint8_t i2cAddr ) +{ + // convert to 8 bit addresses for mapping as needed by the bitbang library + _i2cAddr = ( i2cAddr << 1 ); + + i2c_init(); + + _initialised = i2c_start(_i2cAddr | I2C_READ); + + _shadow = i2c_read(true); + + i2c_stop(); + + return ( _initialised ); +} + +// +// pinMode +void SI2CIO::pinMode ( uint8_t pin, uint8_t dir ) +{ + if ( _initialised ) + { + if ( OUTPUT == dir ) + { + _dirMask &= ~( 1 << pin ); + } + else + { + _dirMask |= ( 1 << pin ); + } + } +} + +// +// portMode +void SI2CIO::portMode ( uint8_t dir ) +{ + + if ( _initialised ) + { + if ( dir == INPUT ) + { + _dirMask = 0xFF; + } + else + { + _dirMask = 0x00; + } + } +} + +// +// read +uint8_t SI2CIO::read ( void ) +{ + uint8_t retVal = 0; + + if ( _initialised ) + { + i2c_start(_i2cAddr | I2C_READ); + + retVal = (_dirMask & i2c_read(true)); + + i2c_stop(); + } + return ( retVal ); +} + +// +// write +int SI2CIO::write ( uint8_t value ) +{ + int status = 0; + + if ( _initialised ) + { + // Only write HIGH the values of the ports that have been initialised as + // outputs updating the output shadow of the device + _shadow = ( value & ~(_dirMask) ); + + status = i2c_start(_i2cAddr | I2C_WRITE); + + status &= i2c_write(_shadow); + + i2c_stop(); + } + return ( (status == 0) ); +} + +// +// digitalRead +uint8_t SI2CIO::digitalRead ( uint8_t pin ) +{ + uint8_t pinVal = 0; + + // Check if initialised and that the pin is within range of the device + // ------------------------------------------------------------------- + if ( ( _initialised ) && ( pin <= 7 ) ) + { + // Remove the values which are not inputs and get the value of the pin + pinVal = this->read() & _dirMask; + pinVal = ( pinVal >> pin ) & 0x01; // Get the pin value + } + return (pinVal); +} + +// +// digitalWrite +int SI2CIO::digitalWrite ( uint8_t pin, uint8_t level ) +{ + uint8_t writeVal; + int status = 0; + + // Check if initialised and that the pin is within range of the device + // ------------------------------------------------------------------- + if ( ( _initialised ) && ( pin <= 7 ) ) + { + // Only write to HIGH the port if the port has been configured as + // an OUTPUT pin. Add the new state of the pin to the shadow + writeVal = ( 1 << pin ) & ~_dirMask; + if ( level == HIGH ) + { + _shadow |= writeVal; + } + else + { + _shadow &= ~writeVal; + } + status = this->write ( _shadow ); + } + return ( status ); +} + +// +// PRIVATE METHODS +// --------------------------------------------------------------------------- +#else +#error "ONLY SUPPORTED ON AVR PROCESSORS" +#endif // __AVR__ \ No newline at end of file diff --git a/libraries/LiquidCrystal/SI2CIO.h b/libraries/LiquidCrystal/SI2CIO.h new file mode 100644 index 0000000000000000000000000000000000000000..ab5095bb2febf31de6fcd23592552d4249bd8f39 --- /dev/null +++ b/libraries/LiquidCrystal/SI2CIO.h @@ -0,0 +1,149 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file SI2CIO.h +// This file implements a basic IO library using the PCF8574 I2C IO Expander +// chip, but using software I2C. +// +// @brief +// Implement a basic IO library to drive the PCF8574* I2C IO Expander ASIC. +// The library implements basic IO general methods to configure IO pin direction +// read and write uint8_t operations and basic pin level routines to set or read +// a particular IO port. +// +// @version API 1.0.0 +// +// @author F. Malpartida - fmalpartida@gmail.com +// Adapted to SoftIC2 by Adrian Piccioli - adrianpiccioli@gmail.com +// --------------------------------------------------------------------------- + +#ifndef _SI2CIO_H_ +#define _SI2CIO_H_ + +#include <inttypes.h> + +#define _SI2CIO_VERSION "1.0.0" + +/*! + @class + @abstract SI2CIO + @discussion Library driver to control PCF8574 based ASICs. Implementing + library calls to set/get port through I2C bus. + */ + +class SI2CIO +{ +public: + /*! + @method + @abstract Constructor method + @discussion Class constructor constructor. + */ + SI2CIO ( ); + + /*! + @method + @abstract Initializes the device. + @discussion This method initializes the device allocating an I2C address. + This method is the first method that should be call prior to calling any + other method form this class. On initialization all pins are configured + as INPUT on the device. + + @param i2cAddr: I2C Address where the device is located. + @result 1 if the device was initialized correctly, 0 otherwise + */ + int begin ( uint8_t i2cAddr ); + + /*! + @method + @abstract Sets the mode of a particular pin. + @discussion Sets the mode of a particular pin to INPUT, OUTPUT. digitalWrite + has no effect on pins which are not declared as output. + + @param pin[in] Pin from the I2C IO expander to be configured. Range 0..7 + @param dir[in] Pin direction (INPUT, OUTPUT). + */ + void pinMode ( uint8_t pin, uint8_t dir ); + + /*! + @method + @abstract Sets all the pins of the device in a particular direction. + @discussion This method sets all the pins of the device in a particular + direction. This method is useful to set all the pins of the device to be + either inputs or outputs. + @param dir[in] Direction of all the pins of the device (INPUT, OUTPUT). + */ + void portMode ( uint8_t dir ); + + /*! + @method + @abstract Reads all the pins of the device that are configured as INPUT. + @discussion Reads from the device the status of the pins that are configured + as INPUT. During initialization all pins are configured as INPUTs by default. + Please refer to pinMode or portMode. + + @param none + */ + uint8_t read ( void ); + + /*! + @method + @abstract Read a pin from the device. + @discussion Reads a particular pin from the device. To read a particular + pin it has to be configured as INPUT. During initialization all pins are + configured as INPUTs by default. Please refer to pinMode or portMode. + + @param pin[in] Pin from the port to read its status. Range (0..7) + @result Returns the pin status (HIGH, LOW) if the pin is configured + as an output, reading its value will always return LOW regardless of its + real state. + */ + uint8_t digitalRead ( uint8_t pin ); + + /*! + @method + @abstract Write a value to the device. + @discussion Writes to a set of pins in the device. The value is the binary + representation of all the pins in device. The value written is masked with + the configuration of the direction of the pins; to change the state of + a particular pin with this method, such pin has to be configured as OUTPUT + using the portMode or pinMode methods. If no pins have been configured as + OUTPUTs this method will have no effect. + + @param value[in] value to be written to the device. + @result 1 on success, 0 otherwise + */ + int write ( uint8_t value ); + + /*! + @method + @abstract Writes a digital level to a particular pin. + @discussion Write a level to the indicated pin of the device. For this + method to have effect, the pin has to be configured as OUTPUT using the + pinMode or portMode methods. + + @param pin[in] device pin to change level. Range (0..7). + @para level[in] logic level to set the pin at (HIGH, LOW). + @result 1 on success, 0 otherwise. + */ + int digitalWrite ( uint8_t pin, uint8_t level ); + + + +private: + uint8_t _shadow; // Shadow output + uint8_t _dirMask; // Direction mask + uint8_t _i2cAddr; // I2C address + bool _initialised; // Initialised object + +}; + +#endif \ No newline at end of file diff --git a/libraries/LiquidCrystal/SoftI2CMaster.h b/libraries/LiquidCrystal/SoftI2CMaster.h new file mode 100644 index 0000000000000000000000000000000000000000..fae5a2cf402647e89086b4f328813ae2d25bf37f --- /dev/null +++ b/libraries/LiquidCrystal/SoftI2CMaster.h @@ -0,0 +1,515 @@ +/* Arduino SoftI2C library. + * + * This is a very fast and very light-weight software I2C-master library + * written in assembler. It is based on Peter Fleury's I2C software + * library: http://homepage.hispeed.ch/peterfleury/avr-software.html + * + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino I2cMaster Library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +/* In order to use the library, you need to define SDA_PIN, SCL_PIN, + * SDA_PORT and SCL_PORT before including this file. Have a look at + * http://www.arduino.cc/en/Reference/PortManipulation for finding out + * which values to use. For example, if you use digital pin 3 for + * SDA and digital pin 13 for SCL you have to use the following + * definitions: + * #define SDA_PIN 3 + * #define SDA_PORT PORTB + * #define SCL_PIN 5 + * #define SCL_PORT PORTB + * + * You can also define the following constants (see also below): + * - I2C_CPUFREQ, when changing CPU clock frequency dynamically + * - I2C_FASTMODE = 1 meaning that the I2C bus allows speeds up to 400 kHz + * - I2C_SLOWMODE = 1 meaning that the I2C bus will allow only up to 25 kHz + * - I2C_NOINTERRUPT = 1 in order to prohibit interrupts while + * communicating (see below). This can be useful if you use the library + * for communicationg with SMbus devices, which have timeouts. + * Note, however, that interrupts are disabledfrom issuing a start condition + * until issuing a stop condition. So use this option with care! + * - I2C_TIMEOUT = 0..10000 mssec in order to return from the I2C functions + * in case of a I2C bus lockup (i.e., SCL constantly low). 0 means no timeout + */ + +/* Changelog: + * Version 1.1: + * - removed I2C_CLOCK_STRETCHING + * - added I2C_TIMEOUT time in msec (0..10000) until timeout or 0 if no timeout + * - changed i2c_init to return true iff both SDA and SCL are high + * - changed interrupt disabling so that the previous IRQ state is retored + * Version 1.0: basic functionality + */ +#include <avr/io.h> +#include <Arduino.h> + +#ifndef _SOFTI2C_H +#define _SOFTI2C_H 1 + +#if defined (__AVR__) + +// Init function. Needs to be called once in the beginning. +// Returns false if SDA or SCL are low, which probably means +// a I2C bus lockup or that the lines are not pulled up. +boolean __attribute__ ((noinline)) i2c_init(void); + +// Start transfer function: <addr> is the 8-bit I2C address (including the R/W +// bit). +// Return: true if the slave replies with an "acknowledge", false otherwise +bool __attribute__ ((noinline)) i2c_start(uint8_t addr); + +// Similar to start function, but wait for an ACK! Be careful, this can +// result in an infinite loop! +void __attribute__ ((noinline)) i2c_start_wait(uint8_t addr); + +// Repeated start function: After having claimed the bus with a start condition, +// you can address another or the same chip again without an intervening +// stop condition. +// Return: true if the slave replies with an "acknowledge", false otherwise +bool __attribute__ ((noinline)) i2c_rep_start(uint8_t addr); + +// Issue a stop condition, freeing the bus. +void __attribute__ ((noinline)) i2c_stop(void) asm("ass_i2c_stop"); + +// Write one byte to the slave chip that had been addressed +// by the previous start call. <value> is the byte to be sent. +// Return: true if the slave replies with an "acknowledge", false otherwise +bool __attribute__ ((noinline)) i2c_write(uint8_t value) asm("ass_i2c_write"); + +// Read one byte. If <last> is true, we send a NAK after having received +// the byte in order to terminate the read sequence. +uint8_t __attribute__ ((noinline)) i2c_read(bool last); + +// You can set I2C_CPUFREQ independently of F_CPU if you +// change the CPU frequency on the fly. If do not define it, +// it will use the value of F_CPU +#ifndef I2C_CPUFREQ +#define I2C_CPUFREQ F_CPU +#endif + +// If I2C_FASTMODE is set to 1, then the highest possible frequency below 400kHz +// is selected. Be aware that not all slave chips may be able to deal with that! +#ifndef I2C_FASTMODE +#define I2C_FASTMODE 0 +#endif + +// If I2C_FASTMODE is not defined or defined to be 0, then you can set +// I2C_SLOWMODE to 1. In this case, the I2C frequency will not be higher +// than 25KHz. This could be useful for problematic buses. +#ifndef I2C_SLOWMODE +#define I2C_SLOWMODE 0 +#endif + +// if I2C_NOINTERRUPT is 1, then the I2C routines are not interruptable. +// This is most probably only necessary if you are using a 1MHz system clock, +// you are communicating with a SMBus device, and you want to avoid timeouts. +// Be aware that the interrupt bit is enabled after each call. So the +// I2C functions should not be called in interrupt routines or critical regions. +#ifndef I2C_NOINTERRUPT +#define I2C_NOINTERRUPT 0 +#endif + +// I2C_TIMEOUT can be set to a value between 1 and 10000. +// If it is defined and nonzero, it leads to a timeout if the +// SCL is low longer than I2C_TIMEOUT milliseconds, i.e., max timeout is 10 sec +#ifndef I2C_TIMEOUT +#define I2C_TIMEOUT 0 +#else +#if I2C_TIMEOUT > 10000 +#error I2C_TIMEOUT is too large +#endif +#endif + +#define I2C_TIMEOUT_DELAY_LOOPS (I2C_CPUFREQ/1000UL)*I2C_TIMEOUT/4000UL +#if I2C_TIMEOUT_DELAY_LOOPS < 1 +#define I2C_MAX_STRETCH 1 +#else +#if I2C_TIMEOUT_DELAY_LOOPS > 60000UL +#define I2C_MAX_STRETCH 60000UL +#else +#define I2C_MAX_STRETCH I2C_TIMEOUT_DELAY_LOOPS +#endif +#endif + +#if I2C_FASTMODE +#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/400000L)/2-19)/3) +#else +#if I2C_SLOWMODE +#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/25000L)/2-19)/3) +#else +#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/100000L)/2-19)/3) +#endif +#endif + +// Table of I2C bus speed in kbit/sec: +// CPU clock: 1MHz 2MHz 4MHz 8MHz 16MHz 20MHz +// Fast I2C mode 40 80 150 300 400 400 +// Standard I2C mode 40 80 100 100 100 100 +// Slow I2C mode 25 25 25 25 25 25 + +// constants for reading & writing +#define I2C_READ 1 +#define I2C_WRITE 0 + +// map the IO register back into the IO address space +#define SDA_DDR (_SFR_IO_ADDR(SDA_PORT) - 1) +#define SCL_DDR (_SFR_IO_ADDR(SCL_PORT) - 1) +#define SDA_OUT _SFR_IO_ADDR(SDA_PORT) +#define SCL_OUT _SFR_IO_ADDR(SCL_PORT) +#define SDA_IN (_SFR_IO_ADDR(SDA_PORT) - 2) +#define SCL_IN (_SFR_IO_ADDR(SCL_PORT) - 2) + +#ifndef __tmp_reg__ +#define __tmp_reg__ 0 +#endif + + +// Internal delay functions. +void __attribute__ ((noinline)) i2c_delay_half(void) asm("ass_i2c_delay_half"); +void __attribute__ ((noinline)) i2c_wait_scl_high(void) asm("ass_i2c_wait_scl_high"); + +void i2c_delay_half(void) +{ // function call 3 cycles => 3C +#if I2C_DELAY_COUNTER < 1 + __asm__ __volatile__ (" ret"); + // 7 cycles for call and return +#else + __asm__ __volatile__ + ( + " ldi r25, %[DELAY] ;load delay constant ;; 4C \n\t" + "_Lidelay: \n\t" + " dec r25 ;decrement counter ;; 4C+xC \n\t" + " brne _Lidelay ;;5C+(x-1)2C+xC\n\t" + " ret ;; 9C+(x-1)2C+xC = 7C+xC" + : : [DELAY] "M" I2C_DELAY_COUNTER : "r25"); + // 7 cycles + 3 times x cycles +#endif +} + +void i2c_wait_scl_high(void) +{ +#if I2C_TIMEOUT <= 0 + __asm__ __volatile__ + ("_Li2c_wait_stretch: \n\t" + " sbis %[SCLIN],%[SCLPIN] ;wait for SCL high \n\t" + " rjmp _Li2c_wait_stretch \n\t" + " cln ;signal: no timeout \n\t" + " ret " + : : [SCLIN] "I" (SCL_IN), [SCLPIN] "I" (SCL_PIN)); +#else + __asm__ __volatile__ + ( " ldi r27, %[HISTRETCH] ;load delay counter \n\t" + " ldi r26, %[LOSTRETCH] \n\t" + "_Lwait_stretch: \n\t" + " clr __tmp_reg__ ;do next loop 255 times \n\t" + "_Lwait_stretch_inner_loop: \n\t" + " rcall _Lcheck_scl_level ;call check function ;; 12C \n\t" + " brpl _Lstretch_done ;done if N=0 ;; +1 = 13C\n\t" + " dec __tmp_reg__ ;dec inner loop counter;; +1 = 14C\n\t" + " brne _Lwait_stretch_inner_loop ;; +2 = 16C\n\t" + " sbiw r26,1 ;dec outer loop counter \n\t" + " brne _Lwait_stretch ;continue with outer loop \n\t" + " sen ;timeout -> set N-bit=1 \n\t" + " rjmp _Lwait_return ;and return with N=1\n\t" + "_Lstretch_done: ;SCL=1 sensed \n\t" + " cln ;OK -> clear N-bit \n\t" + " rjmp _Lwait_return ; and return with N=0 \n\t" + + "_Lcheck_scl_level: ;; call = 3C\n\t" + " cln ;; +1C = 4C \n\t" + " sbic %[SCLIN],%[SCLPIN] ;skip if SCL still low ;; +2C = 6C \n\t" + " rjmp _Lscl_high ;; +0C = 6C \n\t" + " sen ;; +1 = 7C\n\t " + "_Lscl_high: " + " nop ;; +1C = 8C \n\t" + " ret ;return N-Bit=1 if low ;; +4 = 12C\n\t" + + "_Lwait_return:" + : : [SCLIN] "I" (SCL_IN), [SCLPIN] "I" (SCL_PIN), + [HISTRETCH] "M" (I2C_MAX_STRETCH>>8), + [LOSTRETCH] "M" (I2C_MAX_STRETCH&0xFF) + : "r26", "r27"); +#endif +} + + +boolean i2c_init(void) +{ + __asm__ __volatile__ + (" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t" + " cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t" + " cbi %[SDAOUT],%[SDAPIN] ;clear SDA output value \n\t" + " cbi %[SCLOUT],%[SCLPIN] ;clear SCL output value \n\t" + " clr r24 ;set return value to false \n\t" + " clr r25 ;set return value to false \n\t" + " sbis %[SDAIN],%[SDAPIN] ;check for SDA high\n\t" + " ret ;if low return with false \n\t" + " sbis %[SCLIN],%[SCLPIN] ;check for SCL high \n\t" + " ret ;if low return with false \n\t" + " ldi r24,1 ;set return value to true \n\t" + " ret " + : : + [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), + [SCLIN] "I" (SCL_IN), [SCLOUT] "I" (SCL_OUT), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), + [SDAIN] "I" (SDA_IN), [SDAOUT] "I" (SDA_OUT)); + return true; +} + +bool i2c_start(uint8_t addr) +{ + __asm__ __volatile__ + ( +#if I2C_NOINTERRUPT + " cli ;clear IRQ bit \n\t" +#endif + " sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t" + " rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t" + " rcall ass_i2c_delay_half ;wait T/2 \n\t" + " rcall ass_i2c_write ;now write address \n\t" + " ret" + : : [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), + [SCLIN] "I" (SCL_IN),[SCLPIN] "I" (SCL_PIN)); + return true; // we never return here! +} + +bool i2c_rep_start(uint8_t addr) +{ + __asm__ __volatile__ + + ( +#if I2C_NOINTERRUPT + " cli \n\t" +#endif + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t" + " rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " rcall ass_i2c_write \n\t" + " ret" + : : [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN),[SCLIN] "I" (SCL_IN), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN)); + return true; // just to fool the compiler +} + +void i2c_start_wait(uint8_t addr) +{ + __asm__ __volatile__ + ( + " push r24 ;save original parameter \n\t" + "_Li2c_start_wait1: \n\t" + " pop r24 ;restore original parameter\n\t" + " push r24 ;and save again \n\t" +#if I2C_NOINTERRUPT + " cli ;disable interrupts \n\t" +#endif + " sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t" + " rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " rcall ass_i2c_write ;write address \n\t" + " tst r24 ;if device not busy -> done \n\t" + " brne _Li2c_start_wait_done \n\t" + " rcall ass_i2c_stop ;terminate write & enable IRQ \n\t" + " rjmp _Li2c_start_wait1 ;device busy, poll ack again \n\t" + "_Li2c_start_wait_done: \n\t" + " pop __tmp_reg__ ;pop off orig argument \n\t" + " ret " + : : [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), + [SCLIN] "I" (SCL_IN),[SCLPIN] "I" (SCL_PIN)); +} + +void i2c_stop(void) +{ + __asm__ __volatile__ + ( + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low \n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t" + " rcall ass_i2c_delay_half ;T/2 delay \n\t" + " cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t" + " rcall ass_i2c_delay_half ;T/2 delay \n\t" + " sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t" + " rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t" + " rcall ass_i2c_delay_half \n\t" +#if I2C_NOINTERRUPT + " sei ;enable interrupts again!\n\t" +#endif + : : [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), [SCLIN] "I" (SCL_IN), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN)); +} + +bool i2c_write(uint8_t value) +{ + __asm__ __volatile__ + ( + " sec ;set carry flag \n\t" + " rol r24 ;shift in carry and shift out MSB \n\t" + " rjmp _Li2c_write_first \n\t" + "_Li2c_write_bit:\n\t" + " lsl r24 ;left shift into carry ;; 1C\n\t" + "_Li2c_write_first:\n\t" + " breq _Li2c_get_ack ;jump if TXreg is empty;; +1 = 2C \n\t" + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 4C \n\t" + " nop \n\t" + " nop \n\t" + " nop \n\t" + " brcc _Li2c_write_low ;;+1/+2=5/6C\n\t" + " nop ;; +1 = 7C \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA ;; +2 = 9C \n\t" + " rjmp _Li2c_write_high ;; +2 = 11C \n\t" + "_Li2c_write_low: \n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low ;; +2 = 9C \n\t" + " rjmp _Li2c_write_high ;;+2 = 11C \n\t" + "_Li2c_write_high: \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;;+X = 11C+X\n\t" +#endif + " cbi %[SCLDDR],%[SCLPIN] ;release SCL ;;+2 = 13C+X\n\t" + " cln ;clear N-bit ;;+1 = 14C+X\n\t" + " nop \n\t" + " nop \n\t" + " nop \n\t" + " sbis %[SCLIN],%[SCLPIN] ;check for SCL high ;;+2 = 16C+X\n\t" + " rcall ass_i2c_wait_scl_high \n\t" + " brpl _Ldelay_scl_high ;;+2 = 18C+X\n\t" + "_Li2c_write_return_false: \n\t" + " clr r24 ; return false because of timeout \n\t" + " rjmp _Li2c_write_return \n\t" + "_Ldelay_scl_high: \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;;+X= 18C+2X\n\t" +#endif + " rjmp _Li2c_write_bit \n\t" + " ;; +2 = 20C +2X for one bit-loop \n\t" + "_Li2c_get_ack: \n\t" + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 5C \n\t" + " nop \n\t" + " nop \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA ;;+2 = 7C \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; +X = 7C+X \n\t" +#endif + " clr r25 ;; 17C+2X \n\t" + " clr r24 ;return 0 ;; 14C + X \n\t" + " cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; +2 = 9C+X\n\t" + "_Li2c_ack_wait: \n\t" + " cln ; clear N-bit ;; 10C + X\n\t" + " nop \n\t" + " sbis %[SCLIN],%[SCLPIN] ;wait SCL high ;; 12C + X \n\t" + " rcall ass_i2c_wait_scl_high \n\t" + " brmi _Li2c_write_return_false ;; 13C + X \n\t " + " sbis %[SDAIN],%[SDAPIN] ;if SDA hi -> return 0 ;; 15C + X \n\t" + " ldi r24,1 ;return true ;; 16C + X \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 16C + 2X \n\t" +#endif + "_Li2c_write_return: \n\t" + " nop \n\t " + " nop \n\t " + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t" + " ret \n\t" + " ;; + 4 = 17C + 2X for acknowldge bit" + :: + [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), [SCLIN] "I" (SCL_IN), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), [SDAIN] "I" (SDA_IN)); + return true; // fooling the compiler +} + +uint8_t i2c_read(bool last) +{ + __asm__ __volatile__ + ( + " ldi r23,0x01 \n\t" + "_Li2c_read_bit: \n\t" + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; 2C \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA(prev. ACK);; 4C \n\t" + " nop \n\t" + " nop \n\t" + " nop \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 4C+X \n\t" +#endif + " cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; 6C + X \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 6C + 2X \n\t" +#endif + " cln ; clear N-bit ;; 7C + 2X \n\t" + " nop \n\t " + " nop \n\t " + " nop \n\t " + " sbis %[SCLIN], %[SCLPIN] ;check for SCL high ;; 9C +2X \n\t" + " rcall ass_i2c_wait_scl_high \n\t" + " brmi _Li2c_read_return ;return if timeout ;; 10C + 2X\n\t" + " clc ;clear carry flag ;; 11C + 2X\n\t" + " sbic %[SDAIN],%[SDAPIN] ;if SDA is high ;; 11C + 2X\n\t" + " sec ;set carry flag ;; 12C + 2X\n\t" + " rol r23 ;store bit ;; 13C + 2X\n\t" + " brcc _Li2c_read_bit ;while receiv reg not full \n\t" + " ;; 15C + 2X for one bit loop \n\t" + + "_Li2c_put_ack: \n\t" + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; 2C \n\t" + " cpi r24,0 ;; 3C \n\t" + " breq _Li2c_put_ack_low ;if (ack=0) ;; 5C \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t" + " rjmp _Li2c_put_ack_high \n\t" + "_Li2c_put_ack_low: ;else \n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low ;; 7C \n\t" + "_Li2c_put_ack_high: \n\t" + " nop \n\t " + " nop \n\t " + " nop \n\t " +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 7C + X \n\t" +#endif + " cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; 9C +X \n\t" + " cln ;clear N ;; +1 = 10C\n\t" + " nop \n\t " + " nop \n\t " + " sbis %[SCLIN],%[SCLPIN] ;wait SCL high ;; 12C + X\n\t" + " rcall ass_i2c_wait_scl_high \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 11C + 2X\n\t" +#endif + "_Li2c_read_return: \n\t" + " nop \n\t " + " nop \n\t " + "sbi %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t" + " mov r24,r23 ;; 12C + 2X \n\t" + " clr r25 ;; 13 C + 2X\n\t" + " ret ;; 17C + X" + :: + [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), [SCLIN] "I" (SCL_IN), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), [SDAIN] "I" (SDA_IN) + ); + return ' '; // fool the compiler! +} + +#else +#error "ONLY SUPPORTED ON AVR PROCESSORS" +#endif // defined (__AVR__) + +#endif + + + diff --git a/libraries/LiquidCrystal/def/doxygen.def b/libraries/LiquidCrystal/def/doxygen.def new file mode 100644 index 0000000000000000000000000000000000000000..e19fb0b29ea629bb95c71a86325493315b995b2a --- /dev/null +++ b/libraries/LiquidCrystal/def/doxygen.def @@ -0,0 +1,8422 @@ +AutoGen Definitions dummy; +class = { + cp-id = 'class_i2_c_i_o'; + cp-name = 'I2CIO'; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a6f814653d903dc2ff6e8420eeb7954ae'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'i2cAddr'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '62'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the device. + @discussion This method initializes the device allocating an I2C address. + This method is the first method that should be call prior to calling any + other method form this class. On initialization all pins are configured + as INPUT on the device. + + @param i2cAddr: I2C Address where the device is located. + @result 1 if the device was initialized correctly, 0 otherwise +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1ac26221011a8b49bcea9ef62712ea88a7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'digitalRead'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '108'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Read a pin from the device. + @discussion Reads a particular pin from the device. To read a particular + pin it has to be configured as INPUT. During initialization all pins are + configured as INPUTs by default. Please refer to pinMode or portMode. + + @param pin[in] Pin from the port to read its status. Range (0..7) + @result Returns the pin status (HIGH, LOW) if the pin is configured + as an output, reading its value will always return LOW regardless of its + real state. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a473206162522b847546777d16a7c6dcd'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'digitalWrite'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'level'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '136'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes a digital level to a particular pin. + @discussion Write a level to the indicated pin of the device. For this + method to have effect, the pin has to be configured as OUTPUT using the + pinMode or portMode methods. + + @param pin[in] device pin to change level. Range (0..7). + @para level[in] logic level to set the pin at (HIGH, LOW). + @result 1 on success, 0 otherwise. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a32eb7832075ad6011d67874405a0d0a6'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'I2CIO'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '49'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Constructor method + @discussion Class constructor constructor. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a53b94274eb6bb68564cf5243323db887'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pinMode'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'dir'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '73'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Sets the mode of a particular pin. + @discussion Sets the mode of a particular pin to INPUT, OUTPUT. digitalWrite + has no effect on pins which are not declared as output. + + @param pin[in] Pin from the I2C IO expander to be configured. Range 0..7 + @param dir[in] Pin direction (INPUT, OUTPUT). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a0341888753bc54c4384f5593a870fb34'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'portMode'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'dir'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '83'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Sets all the pins of the device in a particular direction. + @discussion This method sets all the pins of the device in a particular + direction. This method is useful to set all the pins of the device to be + either inputs or outputs. + @param dir[in] Direction of all the pins of the device (INPUT, OUTPUT). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a7a3db7bfc15ede0ae9e8c8bd44290ef7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'read'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '94'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Reads all the pins of the device that are configured as INPUT. + @discussion Reads from the device the status of the pins that are configured + as INPUT. During initialization all pins are configured as INPUTs by default. + Please refer to pinMode or portMode. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1ae2063569c927d0008e2593d14504fdcd'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '123'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Write a value to the device. + @discussion Writes to a set of pins in the device. The value is the binary + representation of all the pins in device. The value written is masked with + the configuration of the direction of the pins; to change the state of + a particular pin with this method, such pin has to be configured as OUTPUT + using the portMode or pinMode methods. If no pins have been configured as + OUTPUTs this method will have no effect. + + @param value[in] value to be written to the device. + @result 1 on success, 0 otherwise +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1a283a99ef1c6f58fa8a0489089cba9682'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_dirMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '142'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1ade58da873af4240a53053ef5f12a2728'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_i2cAddr'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '143'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1a8c566f3fd332eefe4db57cbe6b69337c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +bool +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_initialised'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '144'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1abcd6f7f5f176f965d8ae535afa9f6cec'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_shadow'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '141'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + cp-fileline = '42'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_l_c_d'; + cp-name = 'LCD'; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___i2_c'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___i2_c___by_vac'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___s_r'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___s_r1_w'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___s_r2_w'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___s_r3_w'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1abb3ed88d530f6283e6159b4973e7da9e'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'autoscroll'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '358'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns on automatic scrolling of the LCD. + @discussion Turns on automatic scrolling of the LCD. This causes each + character output to the display to push previous characters over by one + space. If the current text direction is left-to-right (the default), + the display scrolls to the left; if the current direction is right-to-left, + the display scrolls to the right. + This has the effect of outputting each new character to the same location on + the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aba8867fe2210cbfa8db869208709be10'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'backlight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '428'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on the LCD backlight. + @discussion Switch-on the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a3f587d1cbb2d59765ef60a5216b56fea'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'cols'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rows'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charsize'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '200'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract LCD initialization. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class. + + This method is abstract, a base implementation is available common to all LCD + drivers. Should it not be compatible with some other LCD driver, a derived + implementation should be done on the driver specif class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] character size, default==LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a878b36878fa8287093964eba83aace77'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'blink'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '264'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Display the cursor of the LCD. + @discussion Display the blinking LCD cursor. If used in combination with + the cursor() function, the result will depend on the particular display. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1afa699e0beeeee03cce8cef87eba81c4a'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'clear'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '212'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Clears the LCD. + @discussion Clears the LCD screen and positions the cursor in the upper-left + corner. + + This operation is time consuming for the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a91cba8f93c692abcddf8bc3de58d2d3a'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'createChar'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'location'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charmap'; + sec-mem-param-array = '[]'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '386'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Creates a custom character for use on the LCD. + @discussion Create a custom character (glyph) for use on the LCD. + Most chipsets only support up to eight characters of 5x8 pixels. Therefore, + this methods has been limited to locations (numbered 0 to 7). + + The appearance of each custom character is specified by an array of eight + bytes, one for each row. The five least significant bits of each byte + determine the pixels in that row. To display a custom character on screen, + write()/print() its number, i.e. lcd.print (char(x)); // Where x is 0..7. + + @param location[in] LCD memory location of the character to create + (0 to 7) + @param charmap[in] the bitmap array representing each row of the character. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a194814f64dfa50a90e07e0fe0d361620'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'cursor'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '282'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Display the LCD cursor. + @discussion Display the LCD cursor: an underscore (line) at the location + where the next character will be written. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a5b07cf05e8e5e7c53654f5ca0cf58b89'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'display'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '246'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns on the LCD display. + @discussion Turns on the LCD display, after it's been turned off with + noDisplay(). This will restore the text (and cursor location) that was on + the display prior to calling noDisplay(). + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aee45ad37f09312f5d9982257e2d37e68'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'home'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '225'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the cursor to the upper-left corner. + @discussion Positions the cursor in the upper-left of the LCD. + That is, use that location in outputting subsequent text to the display. + To also clear the display, use the clear() function instead. + + This operation is time consuming for the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a00bb2db1390721abc7b24ac4b8c276c8'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LCD'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '183'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract LiquidCrystal abstract constructor. + @discussion LiquidCrystal class abstract constructor needed to create + the base abstract class. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a238e9f6476dc7df64af04eb6c87f6ac7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'leftToRight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '313'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Set the direction for text written to the LCD to left-to-right. + @discussion Set the direction for text written to the LCD to left-to-right. + All subsequent characters written to the display will go from left to right, + but does not affect previously-output text. + + This is the default configuration. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aad2abc99d1aca5403873579d9d72c2d4'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'moveCursorLeft'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '334'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Moves the cursor one space to the left. + @discussion + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a09eec0c712e54b066f5894635c1fe75c'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'moveCursorRight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '343'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Moves the cursor one space to the right. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a96035dde40efbf73390e00b5beb00231'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noAutoscroll'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '368'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off automatic scrolling of the LCD. + @discussion Turns off automatic scrolling of the LCD, this is the default + configuration of the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a2a331b4e142734411b2f1cfaffe7a488'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '437'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-off the LCD backlight. + @discussion Switch-off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a3b755c4b397b5985752be8c30ee1a9b5'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noBlink'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '254'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off the blinking of the LCD cursor. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aec8ffaa1e69c7a6e13ac0cfbc29151d9'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noCursor'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '272'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Hides the LCD cursor. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1af3974da6d988ba2d21c25135ada12108'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noDisplay'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '235'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off the LCD display. + @discussion Turns off the LCD display, without losing the text currently + being displayed on it. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a191639be183be1476c9bfe6d455d23b2'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'off'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '455'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch off the LCD module. + @discussion Switch off the LCD module, it will switch off the LCD controller + and the backlight. This method has the same effect of calling noDisplay and + noBacklight. @see display, @see backlight +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a718da3a638deb59bd1c7a5222a52d98a'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'on'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '446'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch on the LCD module. + @discussion Switch on the LCD module, it will switch on the LCD controller + and the backlight. This method has the same effect of calling display and + backlight. @see display, @see backlight +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1ac014830eadc26bfd86308ea8734f4428'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'rightToLeft'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '326'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Set the direction for text written to the LCD to right-to-left. + @discussion Set the direction for text written to the LCD to right-to-left. + All subsequent characters written to the display will go from right to left, + but does not affect previously-output text. + + left-to-right is the default configuration. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a6f3a503055b3b8dcf0f61b2633c584f7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'scrollDisplayLeft'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '291'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Scrolls the contents of the display (text and cursor) one space + to the left. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1abfc44b294772f09020bfa32af8a79571'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'scrollDisplayRight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '300'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Scrolls the contents of the display (text and cursor) one space + to the right. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a3305570d7b37eb93f2cf840263c15828'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '489'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. The behaviour + of this method is very dependent on the device. Some controllers support + dimming some don't. Please read the actual header file for each individual + device. The setBacklightPin method has to be called before setting the backlight + or the adequate backlight control constructor. + @see setBacklightPin. + + NOTE: The prefered methods to control the backlight are "backlight" and + "noBacklight". + + @param 0..255 - the value is very dependent on the LCD. However, + BACKLIGHT_OFF will be interpreted as off and BACKLIGHT_ON will drive the + backlight on. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a53f4ee9b39d9ab3d7ae4d9f8dedca3bc'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '470'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + This method is device dependent and can be programmed on each subclass. An + empty function call is provided that does nothing. + + @param value: pin associated to backlight control. + @param pol: backlight polarity control (POSITIVE, NEGATIVE) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a48220450fd152b25994eb7d0ba340e8d'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setCursor'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'col'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'row'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '419'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Position the LCD cursor. + @discussion Sets the position of the LCD cursor. Set the location at which + subsequent text written to the LCD will be displayed. + + @param col[in] LCD column + @param row[in] LCD row - line. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a2d89cc2e62f72afb5f15a7fd812900e3'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '503'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Writes to the LCD. + @discussion This method writes character to the LCD in the current cursor + position. + + This is the virtual write method, implemented in the Print class, therefore + all Print class methods will end up calling this method. + + @param value[in] Value to write to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'protected-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1a88b16ea0e5c7d1cabc5007d48bcbd2b0'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_cols'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '523'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1ae47a0e2eff74431a39774b788d5761f4'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displaycontrol'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '519'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1aef093ba3f8e1016267b40ac235a0fa0f'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displayfunction'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '517'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1a726b9a68d091dd8683a18e83f3a8fd3c'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displaymode'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '521'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1ac1374911fb145fea430c21092ada0c06'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_numlines'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '522'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1a990338759d2abe10b0fb1743b7789566'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_polarity'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '524'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a31a0cb42497d83cdc9cb8000828f7190'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'command'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '539'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a command to the LCD. + @discussion This method sends a command to the LCD by setting the Register + select line of the LCD. + + This command shouldn't be used to drive the LCD, only to implement any other + feature that is not available on this library. + + @param value[in] Command value to send to the LCD (COMMAND, DATA or + FOUR_BITS). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a8a5b6f6f448a6ca6eeb3466c370d47ab'; + sec-mem-virt = virtual; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '555'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD. This is a pure abstract + method, therefore, it is implementation dependent of each derived class how + to physically write to the LCD. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + cp-fileline = '174'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 5; + node-label = 'LiquidCrystal_I2C_ByVac'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c___by_vac'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 6; + node-label = 'LiquidCrystal_SR'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 2; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 3; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 4; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 8; + node-label = 'LiquidCrystal_SR2W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r2_w'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 7; + node-label = 'LiquidCrystal_SR1W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r1_w'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 9; + node-label = 'LiquidCrystal_SR3W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r3_w'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal'; + cp-name = 'LiquidCrystal'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a49d2bd8d26031a1c83bcbd73978a1686'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '55'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract 8 bit LCD constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a30e3d865c4b4a003a36cb45903f93644'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '58'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1ae0c3c8f7661634b1400f00a1c9c02c26'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlightPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '68'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a52a4de3d866e347208a32dfc9d797729'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlightPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '86'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a0a0a8dfa7a2e775a031fd65f5c6366ec'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '76'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract 4 bit LCD constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a8b90122c67a6d14b967c8a11ba490670'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlightPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '83'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a23124e6dd5ac4a9b6147629b96e91953'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '78'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1aff2330186495fde93370d46c0ca2cbf0'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlightPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '64'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a56142f8b3753bedd133e4139e5eb5089'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '99'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1aa2b898366e1c656ac313b9007c98cebd'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '125'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. For dimming control of the + backlight, the configuration pin must be a PWM output pin. Dim control + is achieved by passing a value from 1 to 255 as a parameter. If the + pin configured when calling the setBacklightPin does not support PWM, + then: (0) backlight off, (1..255) backlight on. + + @param value: backlight value. 0: off, 1..255: dim control of the + backlight. For negative logic 255: off, 254..0: dim control. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a63740dc1198d8169a39d9c6daff0efc9'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '109'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + + @param pin: pin assigned to the backlight + @param pol: backlight pin control polarity (POSITIVE, NEGATIVE). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1ae45eec827b26174f73e9cf3ddda635af'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'fourbitmode'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '136'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD pin allocation and associated HW + @discussion Initializes the LCD pin allocation and configuration. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a44d84c010396c993f124d2feb9dc794d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pulseEnable'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '152'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a641301bc315a4e167c5aee7ea99993fd'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'writeNbits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'numBits'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '144'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes numBits bits from value value to the LCD. + @discussion Writes numBists bits (the least significant) to the LCD control + data lines. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1a23a1807a1fe4210ac7cfca9b779513ea'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightPin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '158'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1a0b2da39d056aed9940b0525e554668d7'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_pins'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '157'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1aef7d920abae32b5faa2625ffa3879c4b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_enable_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '156'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1affd20665bda00d8b0e37d5ee87543e81'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_rs_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '154'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1a29061eaa64c2e9f3b985ff52249b62a9'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_rw_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '155'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + cp-fileline = '45'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 12; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 11; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '12'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 14; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 13; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '14'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___i2_c'; + cp-name = 'LiquidCrystal_I2C'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aeee2ada537f0cfbfda8613324b57c4a6'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'cols'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rows'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charsize'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '110'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract LCD initialization and associated HW. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class or parent class. + + The begin method can be overloaded if necessary to initialize any HW that + is implemented by a library and can't be done during construction, here + we use the Wire class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] size of the characters of the LCD: LCD_5x8DOTS or + LCD_5x10DOTS. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a9fc9bc519ebbf7503dadc11622e02ed6'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '53'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1add1f2da7de4ec9b9cd5c9b5fab712464'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '70'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a7d9b54d3a91fa0e0e50db27cda6b4654'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '89'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + @param d4[in] LCD data 0 pin map on IO extender module + @param d5[in] LCD data 1 pin map on IO extender module + @param d6[in] LCD data 2 pin map on IO extender module + @param d7[in] LCD data 3 pin map on IO extender module +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a517f8847ebf09f0eacfb9c7232975fce'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '67'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1ab15622287533de7a47f3e2012ebf18be'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '93'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aac537d195557e0b8afac1a71441a484c'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '51'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a8bf1fab7efe13e8b17b96c42d1f810b4'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '124'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1af11b8fa0082616e2b6e6e4238589d8a8'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '145'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param value: backlight mode (HIGH|LOW) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a2eaf86f62d1f169b3763b03fbf88f70b'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '134'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. This device + doesn't support dimming backlight capability. + + @param 0: backlight off, 1..255: backlight on. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1adb997350478bdc0ab8eb5cc5623a2ad9'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'config'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '172'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Initialises class private variables + @discussion This is the class single point for initialising private variables. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + @param d4[in] LCD data 0 pin map on IO extender module + @param d5[in] LCD data 1 pin map on IO extender module + @param d6[in] LCD data 2 pin map on IO extender module + @param d7[in] LCD data 3 pin map on IO extender module +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a459c4fa106fb7bac5940e3c6aea736af'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '154'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a1d715dbf40f06b4c15004cd356b5a321'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pulseEnable'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-defname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '190'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a60111950cc0a47e6223c22949faa15f3'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write4bits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '182'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. + @param value[in] Value to write to the LCD + @param more[in] Value to distinguish between command and data. + COMMAND == command, DATA == data. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a0bb3cc7ec414b373ef00e0cc6642ec88'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Addr'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '193'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a9d59c16cde5c3ffb30a881e9a61c9a32'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightPinMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '194'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a0eaa7c2ac1040a1786960618866c066e'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightStsMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '195'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a3436246b17062357066c636aa598b49d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_pins'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '200'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aa0a878e97b6111abf1bc8d767a548cf2'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_En'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '197'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1adcc89f14c444ff086f544f33fc18ca4c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +I2CIO +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_i2cio'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '196'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1ab70fc18e99a70e3293c4f6ba25c37efa'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Rs'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '199'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a882df32eb9ae0e7a1b74f9a8ee4bffe9'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Rw'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '198'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + cp-fileline = '39'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 16; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 15; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '16'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 18; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 17; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '18'; + relation = public-inheritance; + }; /* node-child */ + node-child = { + child-id = '19'; + relation = usage; + edgelabel = <<_EnD_oF_dEf_TeXt_ +_i2cio +_EnD_oF_dEf_TeXt_; + }; /* node-child */ + }; /* node */ + node = { + node-id = 19; + node-label = 'I2CIO'; + node-link = { + node-link-id = 'class_i2_c_i_o'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___i2_c___by_vac'; + cp-name = 'LiquidCrystal_I2C_ByVac'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c___by_vac_1a34ce9cf919b9f8de59f842a4e94c1abb'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'cols'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rows'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charsize'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + sec-mem-desc-line = '68'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract LCD initialization and associated HW. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class or parent class. + + The begin method can be overloaded if necessary to initialize any HW that + is implemented by a library and can't be done during construction, here + we use the Wire class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] size of the characters of the LCD: LCD_5x8DOTS or + LCD_5x10DOTS. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c___by_vac_1a29c027cc8bfa78bb8d9ff3124fe83a31'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C_ByVac'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + sec-mem-desc-line = '50'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For BV4218, + the address can be configured using the address commands (to be implemented). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c___by_vac_1a9e64cc68ec5df1a0fa421a242239b1b1'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + sec-mem-desc-line = '82'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c___by_vac_1a9b16e6ce123e2ebe3a3e33b2306e66a7'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + sec-mem-desc-line = '92'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + + @param value: backlight mode (HIGH|LOW) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c___by_vac_1a53c79a20e8d21d2c3bc9e6d0dfc79cb4'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setContrast'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + sec-mem-desc-line = '102'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD contrast. + @discussion Switch-on/off the LCD contrast. + + @param value: contrast mode (HIGH|LOW) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c___by_vac_1a7293d7ccd2a1f6305430f57a2023b5ef'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + sec-mem-desc-line = '111'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c___by_vac_1a6989e196aecac177e2b3b06d83877079'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Addr'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + sec-mem-desc-line = '122'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Initialises class private variables + @discussion This is the class single point for initialising private variables. + + @param lcd_Addr[in] I2C address of the IO expansion module. For BV4218, + the address can be configured using the address commands. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + cp-fileline = '38'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 20; + node-label = 'LiquidCrystal_I2C_ByVac'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c___by_vac'; + }; + node-child = { + child-id = '21'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 21; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 22; + node-label = 'LiquidCrystal_I2C_ByVac'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c___by_vac'; + }; + node-child = { + child-id = '23'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 23; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___s_r'; + cp-name = 'LiquidCrystal_SR'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1ac3fe0b48f8d4c1c941d82d1333495cfc'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srclock'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +TWO_WIRE +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '108'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract LCD SHIFT REGISTER constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. Assuming 1 line 8 pixel high + font. + + @param srdata[in] pin for shiftregister data line. + @param srclock[in] pin for shiftregister clock line. + @param enable[in] optional direct enable pin for the LCD +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1a03821351a32db07cb7e42c8c11ce8d47'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '122'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command using the shift register. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1ad9f3e3f36257984c23fb508973e14535'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '145'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param mode: backlight mode (HIGH|LOW) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1a5bfc0dcc1f042bcb59992493a3a7231d'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '134'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + @warning Currently not supported + + @param mode: backlight mode (HIGH|LOW) + @param pol: backlight polarity +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1a0f15bf3f5041a91469da5fd75aba5d5e'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srclock'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lines'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'font'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '155'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1a2684630ad69618fab065f53eea543df8'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'shiftIt'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'val'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '161'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract takes care of shifting and the enable pulse +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1acee96e0ef397441bdde73ca921160476'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_enable_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '163'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a68bffb6befc28cb716fb0c48b50f65fc'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srClockBit'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '169'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a507726b30de4b552b4e32faf9a3aa9e3'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srClockRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '168'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a9984b207beddba9ff299f9356f891065'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srDataBit'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '167'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a1e5bf3e5c6ec5b6c41f6949b6e34fd34'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srDataRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '166'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a12e3ee583d454d5f52223beca91f5bae'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srEnableBit'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '171'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1adab0eb2bb7392a77375034530bf230eb'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srEnableRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '170'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1ad20f9d3282b047fdbae8e97b07d4fc89'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_two_wire'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '164'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + cp-fileline = '95'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 24; + node-label = 'LiquidCrystal_SR'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r'; + }; + node-child = { + child-id = '25'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 25; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 26; + node-label = 'LiquidCrystal_SR'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r'; + }; + node-child = { + child-id = '27'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 27; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___s_r1_w'; + cp-name = 'LiquidCrystal_SR1W'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1a33bff2c123d3dc42a829b0f8034912c9'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR1W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_sr1w_circuitType +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'circuitType'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'blpol'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +POSITIVE +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '314'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract LCD 1 wire SHIFT REGISTER constructor. + @discussion Defines the pin assignments that connect to the shift register. + The constructor does not initialize the LCD. Assuming 1 line 8 pixel high + font. + + @param srdata[in] Arduino pin for shift register. + @param circuitType[in] optionally select an alternate circuit type + @param blpol[in] optional backlight polarity (default = POSITIVE) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1a7fc0b03977907b4d526a6b9e49a331b1'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '328'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command using the shift register. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA=8bit data, COMMAND=8bit cmd, FOUR_BITS=4bit cmd + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1a82d844569eb258559afb40ab354eb0a5'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '340'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param mode[in] backlight mode (0 off, non-zero on) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1a69e25db9a22f6db2298a491f7ad1e584'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'clearSR'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '357'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Clears the shift register to ensure the Latch/Enable pins aren't + triggered accidentally. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1a0327b271d94edec240063b64406bf0b9'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_sr1w_circuitType +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'circuitType'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'blpol'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lines'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'font'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '350'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1afcb233448f4cec3f4074a812554dc389'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'loadSR'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'val'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '363'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract takes care of shifting and the enable pulse +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1a925c01c77c3fa96b8f9e9b0861f25ded'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_blMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '371'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1aed16f51df5f5a6aaadabdc4ccc04b998'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_blPolarity'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '370'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1a03ff5be51ff970ec73a521740d4a4d97'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +t_sr1w_circuitType +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_circuitType'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '368'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1a1a23b85dfd7f61b455959f5c43b4654c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '366'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r1_w_1ad8d5ad6e9b25dd1c86b17a73ddc61369'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + sec-mem-desc-line = '365'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + cp-fileline = '300'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 29; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 28; + node-label = 'LiquidCrystal_SR1W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r1_w'; + }; + node-child = { + child-id = '29'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 31; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 30; + node-label = 'LiquidCrystal_SR1W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r1_w'; + }; + node-child = { + child-id = '31'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___s_r2_w'; + cp-name = 'LiquidCrystal_SR2W'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1af307fdf5c8feb757e965074dcdeb1dd3'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR2W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srclock'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'blpol'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +POSITIVE +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '151'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract LCD 2 wire SHIFT REGISTER constructor. + @discussion Defines the pin assignments that connect to the shift register. + The constructor does not initialize the LCD. Assuming 1 line 8 pixel high + font. + + @param srdata[in] Arduino pin for shift register data line. + @param srclock[in] Arduino pin for shift register clock line. + @param blpol[in] optional backlight polarity (default = POSITIVE) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a65dc6f261c319be8e56f3c1f6a5c877d'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '165'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command using the shift register. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA=8bit data, COMMAND=8bit cmd, FOUR_BITS=4bit cmd + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a2158db27287c1564a03e7a1472beb3b6'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '177'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param mode[in] backlight mode (0 off, non-zero on) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a12c14153e7056cb4a98310529bace6a8'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srclock'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'blpol'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lines'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'font'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '186'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1ae369efcd3fca47a018a034f5f4a1679b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'loadSR'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'val'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '192'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract takes care of shifting and the enable pulse +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a3b1dfb83ad02274c30fa940a10619737'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_blMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '200'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a906f803e1ae324b5383fa004093124f4'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_blPolarity'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '199'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a27727d63c1ce0f9aada630814b8f022b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srClockMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '197'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1aa36d38c009bf846e7726fc48c0067fc3'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srClockRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '196'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1ad188042fdcc7df0178248401c678eb8e'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srDataMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '195'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a2e43c3f1d6b0e5599a1b4d14ef428077'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srDataRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '194'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + cp-fileline = '138'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 33; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 32; + node-label = 'LiquidCrystal_SR2W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r2_w'; + }; + node-child = { + child-id = '33'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 35; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 34; + node-label = 'LiquidCrystal_SR2W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r2_w'; + }; + node-child = { + child-id = '35'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___s_r3_w'; + cp-name = 'LiquidCrystal_SR3W'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1ae1396bcd5e9c5b7ed13182c166de776b'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR3W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '90'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the IO driving the + shift register. The constructor does not initialize the LCD. + Default configuration: + Shift register LCD + QA - 0 DB4 + QB - 1 DB5 + QC - 2 DB6 + QD - 3 DB7 + QE - 4 E + QF - 5 + QG - 6 Rs + GND Rw + + @param strobe[in] digital IO connected to shiftregister strobe pin. + @param data[in] digital IO connected to the shiftregister data pin. + @param clk[in] digital IO connected to the shiftregister clock pin. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a7b2f382b76bc9d88adb8d681e824b4de'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR3W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '93'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a24f051747dfeda48f7b207c3358c8015'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR3W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '119'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a4fab8ff2f21bba3efd133cd8c87fffc0'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR3W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '114'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the control lines of + the LCD and the shiftregister. The constructor does not initialize the LCD. + + @param strobe[in] digital IO connected to shiftregister strobe pin. + @param data[in] digital IO connected to shiftregister data pin. + @param clk[in] digital IO connected to shiftregister clock pin. + @param En[in] LCD En (Enable) pin connected to SR output pin. + @param Rw[in] LCD Rw (Read/write) pin connected to SR output pin. + @param Rs[in] LCD Rs (Reg Select) pin connected to SR output pin. + @param d4[in] LCD data 4 pin map to the SR output pin. + @param d5[in] LCD data 5 pin map to the SR output pin. + @param d6[in] LCD data 6 pin map to the SR output pin. + @param d7[in] LCD data 7 pin map to the SR output pin. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1ade34af5b7fe795482f1848c2176d6e56'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '133'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a6d0fc7907ef9fd87c408a21b9bd49295'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '154'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param value: backlight mode (HIGH|LOW) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a894d0ea8ea61c1d15acd8a26d417e477'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '143'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. This device + doesn't support dimming backlight capability. + + @param 0: backlight off, 1..255: backlight on. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a45cde916021d9b52b0f769c17886b2ef'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '165'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a80f6e4e8b10635d9daed718f2918c1bd'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'loadSR'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '183'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract load into the shift register a byte + @discussion loads into the shift register a byte + @param value[in]: value to be loaded into the shiftregister. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1ac0702caa5d07ffd8e832ad8a5d0afe7c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write4bits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '175'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. + @param value[in] Value to write to the LCD + @param more[in] Value to distinguish between command and data. + COMMAND == command, DATA == data. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a21ef2e5b78edd0d160d81b0c06d41440'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightPinMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '196'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1adf17379bfac4def5c780fc8ad023764c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightStsMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '197'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a2c14746e8f626a53f777c8df68f8a92b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_clk'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '190'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1af7d09207dffb9f2fc85fc60661ffa0d4'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_clk_reg'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '191'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1ab81049d446d2e7399ee6b20c9da4cdde'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '188'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a366adab314f5dc8b7e53298d6eccf85d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_pins'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '195'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a301acb36345c56ae336156fdeee4a783'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_reg'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '189'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a4306c59b6bf3870fecad23d6b0c0aa5d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_En'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '192'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a062da9fb985a7e88128d7d95fd8239d6'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Rs'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '194'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1aef47417b089e53af1ce032e5f1b23b43'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Rw'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '193'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a0d40b3c14c3f56fd341d41220f425925'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_strobe'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '186'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a2a7d9703b04a91658b7a590b926ff9cd'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_strobe_reg'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '187'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + cp-fileline = '67'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 37; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 36; + node-label = 'LiquidCrystal_SR3W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r3_w'; + }; + node-child = { + child-id = '37'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 39; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 38; + node-label = 'LiquidCrystal_SR3W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r3_w'; + }; + node-child = { + child-id = '39'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +file = { + file-id = '_fast_i_o_8cpp'; + file-name = 'FastIO.cpp'; + func = { + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a83fc2fdc19ab3f9aade9e1a2f39e81a6'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_digitalRead'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinBit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '96'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract direct digital read + @discussion without any checks + @discussion falls back to normal digitalRead if fast io is disabled + @param pinRegister[in] Register - ignored if fast io is disabled + @param pinBit[in] Bit - Pin if fast io is disabled + @result Value read from pin +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1ae91bbe682b02a5842c291055c0e998b5'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_digitalWrite'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '77'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract direct digital write + @discussion without any checks + @discussion falls back to normal digitalWrite if fast io is disabled + @param pinRegister[in] Register - ignored if fast digital write is disabled + @param pinBit[in] Bit - Pin if fast digital write is disabled + @param value[in] desired output +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a07a19dfbdca1afaca5d666bdaa3be7d5'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToBit'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '66'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Find the bit which belongs to specified pin + @discussion if fast digitalWrite is disabled this function returns the pin + @param pin[in] Number of a digital pin + @result Bit +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1afb934fc0ded94cbb5ed8ed14e2a123ed'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToInputRegister'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '53'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Get the input register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a04210cc785c3b4a11c86f794949c327f'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToOutputRegister'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'initial_state'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '36'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Get the output register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a5d8d5977294d614d15bda19f75d6b787'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockBit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '161'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract faster shift out clear + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a56c72b9f00680662229895ab22aaa743'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'bitOrder'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '111'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract faster shift out + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled + @param bitOrder[in] bit order +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a7ac8b242e7e3cacf175e481889e047dd'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +boolean +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'noLatch'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '265'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract one wire shift out + @discussion protocol needs initialisation (fio_shiftOut1_init) + @param pin[in] digital pin + @param value[in] value to shift out, last byte is ignored and always shifted out LOW +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a5b4d1684030dc620938b7c2fbdf5ced8'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Register'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Bit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +boolean +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'noLatch'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '192'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract one wire shift out + @discussion protocol needs initialisation (fio_shiftOut1_init) + @param shift1Register[in] pins register + @param shift1Bit[in] pins bit + @param value[in] value to shift out, last byte is ignored and always shifted out LOW +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a2d0e4495eb12504255bbd3f82405b17b'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1_init'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Register'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Bit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '182'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract initializes one wire shift out protocol + @discussion Puts pin to HIGH state and delays until Capacitors are charged. + @param shift1Register[in] pins register + @param shift1Bit[in] pins bit +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1ae4b2e099f8ade9ee674d1565669e870a'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1_init'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '177'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract initializes one wire shift out protocol + @discussion Puts pin to HIGH state and delays until Capacitors are charged. + @param pin[in] digital pin +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_fast_i_o_8h'; + file-name = 'FastIO.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a04971fe5fabe4129736708c494e08e6d'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'ATOMIC_BLOCK'; + define-mem-param = { + define-mem-def-name = 'dummy'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +if(true) +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '58'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a362c18b15a09703e42e1c246c47420ef'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'ATOMIC_RESTORESTATE'; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '59'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a89e1c62276052100c62b6c82a2e95622'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'fio_digitalWrite_HIGH'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'bit'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +digitalWrite(bit,HIGH) +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '143'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + This is where the magic happens that makes things fast. + Implemented as preprocessor directives to force inlining + SWITCH is fast for FIO but probably slow for FIO_FALLBACK so SWITCHTO is recommended if the value is known. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1ac8f00a1bccb98109531b88fbb6e91478'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'fio_digitalWrite_LOW'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'bit'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +digitalWrite(bit,LOW) +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '144'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a6d1dffed7f0c8f28f6c88146315f7832'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'fio_digitalWrite_SWITCH'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'bit'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +digitalWrite(bit, !digitalRead(bit)) +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '145'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1accae9687fdfc5f3492fb6344d62eb190'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'fio_digitalWrite_SWITCHTO'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'bit'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'val'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +digitalWrite(bit,val); +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '146'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a32f90d0ad5c1295c97cc1e79936aadd6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'FIO_FALLBACK'; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '57'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a688a4adbb87520a2b68681bd6bfb199e'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SKIP'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x23 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '42'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + typedef = { + typedef-member = { + typedef-mem-kind = 'typedef'; + typedef-mem-id = '_fast_i_o_8h_1a0a595a88b29bcfd1540b6fac75787937'; + typedef-mem-virt = normal; + typedef-mem-prot = public; + typedef-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + typedef-mem-name = 'fio_bit'; + typedef-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + typedef-mem-desc-line = '60'; + typedef-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + typedef-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* typedef-member */ + typedef-member = { + typedef-mem-kind = 'typedef'; + typedef-mem-id = '_fast_i_o_8h_1ae44ea3af54ef26db03f1ae2ea62f9c1f'; + typedef-mem-virt = normal; + typedef-mem-prot = public; + typedef-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + typedef-mem-name = 'fio_register'; + typedef-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + typedef-mem-desc-line = '61'; + typedef-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + typedef-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* typedef-member */ + }; + func = { + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a197336e47e1c3f929056ce3abbbc7e8d'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_digitalRead'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinBit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '158'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract direct digital read + @discussion without any checks + @discussion falls back to normal digitalRead if fast io is disabled + @param pinRegister[in] Register - ignored if fast io is disabled + @param pinBit[in] Bit - Pin if fast io is disabled + @result Value read from pin +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1ae91bbe682b02a5842c291055c0e998b5'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_digitalWrite'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '128'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract direct digital write + @discussion without any checks + @discussion falls back to normal digitalWrite if fast io is disabled + @param pinRegister[in] Register - ignored if fast digital write is disabled + @param pinBit[in] Bit - Pin if fast digital write is disabled + @param value[in] desired output +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a07a19dfbdca1afaca5d666bdaa3be7d5'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToBit'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '115'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Find the bit which belongs to specified pin + @discussion if fast digitalWrite is disabled this function returns the pin + @param pin[in] Number of a digital pin + @result Bit +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1afb934fc0ded94cbb5ed8ed14e2a123ed'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToInputRegister'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '106'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Get the input register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a385ae40d960c1a57e86818332476a802'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToOutputRegister'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'initial_state'; + func-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LOW +_EnD_oF_dEf_TeXt_; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '97'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Get the output register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a5d8d5977294d614d15bda19f75d6b787'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockBit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '184'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract faster shift out clear + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a56c72b9f00680662229895ab22aaa743'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'bitOrder'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '172'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract faster shift out + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled + @param bitOrder[in] bit order +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a33ce251dcd6b448185cda415a99001cf'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Register'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Bit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +boolean +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'noLatch'; + func-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +false +_EnD_oF_dEf_TeXt_; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '194'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract one wire shift out + @discussion protocol needs initialisation (fio_shiftOut1_init) + @param shift1Register[in] pins register + @param shift1Bit[in] pins bit + @param value[in] value to shift out, last byte is ignored and always shifted out LOW +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1af2aac35d9a8ab7a2c87672f2c7cbbafb'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +boolean +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'noLatch'; + func-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +false +_EnD_oF_dEf_TeXt_; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '202'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract one wire shift out + @discussion protocol needs initialisation (fio_shiftOut1_init) + @param pin[in] digital pin + @param value[in] value to shift out, last byte is ignored and always shifted out LOW +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a2d0e4495eb12504255bbd3f82405b17b'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1_init'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Register'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Bit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '210'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract initializes one wire shift out protocol + @discussion Puts pin to HIGH state and delays until Capacitors are charged. + @param shift1Register[in] pins register + @param shift1Bit[in] pins bit +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1ae4b2e099f8ade9ee674d1565669e870a'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1_init'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '217'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract initializes one wire shift out protocol + @discussion Puts pin to HIGH state and delays until Capacitors are charged. + @param pin[in] digital pin +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_i2_c_i_o_8cpp'; + file-name = 'I2CIO.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_i2_c_i_o_8h'; + file-name = 'I2CIO.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_i2_c_i_o_8h_1a218dbde2f6fda8c5825e25da10864c71'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = '_I2CIO_VERSION'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +"1.0.0" +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + define-mem-desc-line = '32'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_l_c_d_8cpp'; + file-name = 'LCD.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_l_c_d_8h'; + file-name = 'LCD.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a0f50ae3b4bdb42dd5ad74b2c604a7515'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'BACKLIGHT_OFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '155'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Backlight off constant declaration + @discussion Used in combination with the setBacklight to swith off the + LCD backlight. @set setBacklight +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aa5bad1c51f5fac029f3deacfef48c54b'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'BACKLIGHT_ON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +255 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '163'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Backlight on constant declaration + @discussion Used in combination with the setBacklight to swith on the + LCD backlight. @set setBacklight +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab0d87e07831e7e4943caef187872123e'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'COMMAND'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '136'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aad9ae913bdfab20dd94ad04ee2d5b045'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'DATA'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +1 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '137'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aa1e30e32b6c2cf8d90a9281328472dbe'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'FOUR_BITS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +2 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '138'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ad25b138788d83e67f840588754e2df2f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'HOME_CLEAR_EXEC'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +2000 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '147'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Defines the duration of the home and clear commands + @discussion This constant defines the time it takes for the home and clear + commands in the LCD - Time in microseconds. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a8c85cf88d8af66a47c42249d81c94641'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_1LINE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '129'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a7987e93538df2819583ba43b81ddbb25'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_2LINE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '128'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab8c35d355d2372090c7a347e961c9224'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_4BITMODE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '127'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1abb3210156d88d3fe18c9352eb161fe42'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_5x10DOTS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '130'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a9ef57e724c1b846dae0f531aff6fb464'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_5x8DOTS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '131'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a59a57ca857dae5d89eb5f2a38c4ac6f0'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_8BITMODE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x10 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '126'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a4b28243034cec656b0ed490ba6979752'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BLINKOFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '115'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ac3b19d4e6553b9bbf18a23387e439206'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BLINKON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '114'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1acc3509bc0442b41e2b816555de473ed2'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CLEARDISPLAY'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '92'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract All these definitions shouldn't be used unless you are writing + a driver. + @discussion All these definitions are for driver implementation only and + shouldn't be used by applications. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ac21f0302ac4136775877d5f4759e4f74'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORMOVE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '120'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a32b194a3adaa0a0bb69acee2e6a754fa'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSOROFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '113'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab67f0adccde68de88eee0513fdfc4574'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '112'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a61f16a2b7550e4700f7898a7587c5594'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORSHIFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x10 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '96'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1adfb8b2b8b8a08d7313504d7a4f89d99f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYCONTROL'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '95'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab2f7b67abfac33f610acfd5d7a971f40'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYMOVE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '119'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a257ebe775cac7140cf82aa40d8ce545a'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYOFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '111'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a76236ae8317b34bbc98ea56bc0a2639c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '110'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ae7c6309fce6200bd7526d090a4a84dd0'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYLEFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '104'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a5597e1d5819ea2f0734ad4313abf6703'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYMODESET'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '94'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a43c26ba2e66880fac95ef640b56873ad'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYRIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '103'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a049ee97e98d04788c1da9a55590fbe42'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYSHIFTDECREMENT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '106'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aa2cf1d0f4a319e53c009cffe1184466c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYSHIFTINCREMENT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '105'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aaef882ae70d1f485cd132815d9716111'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_FUNCTIONSET'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x20 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '97'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aafb86adb0dfca1e65d65b2cd1946a009'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_MOVELEFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '122'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1acf5999180233790bb2c9902efde58f7f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_MOVERIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '121'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a154c86a887633d0f6d9988e4dbb1f419'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_RETURNHOME'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '93'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aae6ea856879c11dee58493184582a52f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_SETCGRAMADDR'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x40 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '98'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a15008b832807a208d9d88c74e6751ebf'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_SETDDRAMADDR'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '99'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + enum = { + enum-member = { + enum-mem-kind = 'enum'; + enum-mem-id = '_l_c_d_8h_1aeeef728bf4726268aa5e99391a1502bc'; + enum-mem-virt = normal; + enum-mem-prot = public; + enum-mem-name = 't_backlighPol'; + enum-mem-enum = { enum-name = POSITIVE; }; + enum-mem-enum = { enum-name = NEGATIVE; }; + enum-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + enum-mem-desc-line = '171'; + enum-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + enum-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* enum-member */ + }; + func = { + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_l_c_d_8h_1a6eac41e4be58d7736ac0c19de225c0dc'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +static void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'waitUsec'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint16_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'uSec'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + func-mem-desc-line = '76'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Enables disables fast waits for write operations for LCD + @discussion If defined, the library will avoid doing un-necessary waits. + this can be done, because the time taken by Arduino's slow digitalWrite + operations. If fast digitalIO operations, comment this line out or undefine + the mode. + + + @function + @abstract waits for a given time in microseconds (compilation dependent). + @discussion Waits for a given time defined in microseconds depending on + the FAST_MODE define. If the FAST_MODE is defined the call will return + inmediatelly. + @param uSec[in] time in microseconds. + @result None +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal_8cpp'; + file-name = 'LiquidCrystal.cpp'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal_8cpp_1a31e1c14e8c2845dec3301f0ebd36b43c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_4BIT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +1 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + define-mem-desc-line = '45'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal_8cpp_1a57d84af8cf61ceee4eb91db77889f071'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_8BIT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + define-mem-desc-line = '46'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal_8cpp_1a65fa786d6e31fe8b1aa51784a9736581'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_NOBACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0xFF +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + define-mem-desc-line = '42'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal_8h'; + file-name = 'LiquidCrystal.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal_8h_1adebff0f00a59c9f9863bc196938d5726'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'EXEC_TIME'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +37 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + define-mem-desc-line = '42'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Command execution time on the LCD. + @discussion This defines how long a command takes to execute by the LCD. + The time is expressed in micro-seconds. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___i2_c_8cpp'; + file-name = 'LiquidCrystal_I2C.cpp'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a3d9bb178282c3cb69740c94ba1e48fed'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D4'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '88'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD dataline allocation this library only supports 4 bit LCD control + mode. + @discussion D4, D5, D6, D7 LCD data lines pin mapping of the extender module +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a2ddd4183d444d6d128cbdbd6269e4e0c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D5'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +1 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '89'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a79a18a7f5ccf7a7ca31f302bd62527a6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D6'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +2 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '90'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a2ba78f059a7ebebc95e7beef690e88d6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D7'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +3 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '91'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a22e6626f2c98ed902f8ded47f6438c05'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'EN'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +6 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '66'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Enable bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Enable +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1ac059d24dfe9c1e1f7c07cb7869a1833b'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0xFF +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '55'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD_BACKLIGHT + @discussion BACKLIGHT MASK used when backlight is on +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a65fa786d6e31fe8b1aa51784a9736581'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_NOBACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '48'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD_NOBACKLIGHT + @discussion NO BACKLIGHT MASK +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1af8903d8eea3868940c60af887473b152'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'RS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +4 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '80'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Register bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Register select pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1afc4ded33ac0ca43defcce639e965748a'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'RW'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +5 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '73'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Read/Write bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Rw pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___i2_c_8h'; + file-name = 'LiquidCrystal_I2C.h'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___i2_c___by_vac_8cpp'; + file-name = 'LiquidCrystal_I2C_ByVac.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___i2_c___by_vac_8h'; + file-name = 'LiquidCrystal_I2C_ByVac.h'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C_ByVac.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r_8cpp'; + file-name = 'LiquidCrystal_SR.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r_8h'; + file-name = 'LiquidCrystal_SR.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r_8h_1a0075b041d82abb47f279dce482e7b087'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR_EN_BIT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + define-mem-desc-line = '92'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r_8h_1afdaa2bbb2cc185700864ac8d7a570ced'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR_RS_BIT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + define-mem-desc-line = '91'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r_8h_1a40fb1f76bc5f8ca9e6534b47bd6da27c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'TWO_WIRE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +204 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + define-mem-desc-line = '90'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r1_w_8cpp'; + file-name = 'LiquidCrystal_SR1W.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r1_w_8h'; + file-name = 'LiquidCrystal_SR1W.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a7582c2cf6ceaeddf740f675c8f731ecf'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_ATOMIC_WRITE_HIGH'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'mask'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg |= mask; } +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '294'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a895edbf1947d432e4616bc4592de8cfa'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_ATOMIC_WRITE_LOW'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'mask'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg &= ~mask; } +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '293'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a2bfc90f6a1e21e271196273a8db741af'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_BL_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x20 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '289'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a2ee8ae46c168f471666c4aaddbca1ec0'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_D4_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x10 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '288'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a159fe0dd329cef231ae7d8ad674adad3'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_D5_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '287'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a5cea156a4ee75a239b094b1c24116140'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_D6_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '286'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a7accf5938d87cf2edbda80b26e0e6f69'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_D7_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '285'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a645c2cb325144756182083dad23498e7'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_DELAY'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +{ delayMicroseconds(SR1W_DELAY_US); numDelays++; } +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '279'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1af142acb4543f9067f60a28d58a49f033'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_DELAY_US'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +5 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '278'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a6875204445378ad8d8a8ded846cbcbaa'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_EN_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '291'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1a874628609b122ed01ccd5e39411f86de'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_RS_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x40 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '290'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r1_w_8h_1ae4324c30e18eea1716bd2b0f60027712'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR1W_UNUSED_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + define-mem-desc-line = '284'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + enum = { + enum-member = { + enum-mem-kind = 'enum'; + enum-mem-id = '_liquid_crystal___s_r1_w_8h_1a31959259c88db00960459461ba423d99'; + enum-mem-virt = normal; + enum-mem-prot = public; + enum-mem-name = 't_sr1w_circuitType'; + enum-mem-enum = { enum-name = SW_CLEAR; }; + enum-mem-enum = { enum-name = HW_CLEAR; }; + enum-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + enum-mem-desc-line = '297'; + enum-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + enum-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* enum-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR1W.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r2_w_8cpp'; + file-name = 'LiquidCrystal_SR2W.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r2_w_8h'; + file-name = 'LiquidCrystal_SR2W.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r2_w_8h_1a53e3add69865ae57ca872cb41fcae9e3'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR2W_BL_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + define-mem-desc-line = '132'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r2_w_8h_1a7cf86f2a173473d01e02b2ac786a8690'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR2W_DATA_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x78 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + define-mem-desc-line = '134'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r2_w_8h_1a8d17b6abb5bcde6883dbdc86d34be9d8'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR2W_EN_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + define-mem-desc-line = '135'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r2_w_8h_1acce98b026d9fdcb2e126705c14af7500'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR2W_RS_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + define-mem-desc-line = '133'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r3_w_8cpp'; + file-name = 'LiquidCrystal_SR3W.cpp'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a3d9bb178282c3cb69740c94ba1e48fed'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D4'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '126'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD dataline allocation this library only supports 4 bit LCD control + mode. + @discussion D4, D5, D6, D7 LCD data lines pin mapping of the extender module +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a2ddd4183d444d6d128cbdbd6269e4e0c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D5'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +1 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '127'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a79a18a7f5ccf7a7ca31f302bd62527a6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D6'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +2 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '128'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a2ba78f059a7ebebc95e7beef690e88d6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D7'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +3 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '129'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a22e6626f2c98ed902f8ded47f6438c05'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'EN'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +4 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '104'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Enable bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Enable +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1ac059d24dfe9c1e1f7c07cb7869a1833b'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0xFF +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '93'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD_BACKLIGHT + @discussion BACKLIGHT MASK used when backlight is on +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a65fa786d6e31fe8b1aa51784a9736581'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_NOBACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '86'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD_NOBACKLIGHT + @discussion No BACKLIGHT MASK +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1af8903d8eea3868940c60af887473b152'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'RS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +6 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '118'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Register bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Register select pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1afc4ded33ac0ca43defcce639e965748a'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'RW'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +5 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '111'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Read/Write bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Rw pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r3_w_8h'; + file-name = 'LiquidCrystal_SR3W.h'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ diff --git a/libraries/LiquidCrystal/doxygen_entrydb_2806.tmp b/libraries/LiquidCrystal/doxygen_entrydb_2806.tmp new file mode 100644 index 0000000000000000000000000000000000000000..a9b164c26a9b638f20185ecfb216ee0de80c2f0e Binary files /dev/null and b/libraries/LiquidCrystal/doxygen_entrydb_2806.tmp differ diff --git a/libraries/LiquidCrystal/doxygen_objdb_2806.tmp b/libraries/LiquidCrystal/doxygen_objdb_2806.tmp new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/libraries/LiquidCrystal/examples/HelloWorld_4bit/HelloWorld_4bit.pde b/libraries/LiquidCrystal/examples/HelloWorld_4bit/HelloWorld_4bit.pde new file mode 100644 index 0000000000000000000000000000000000000000..0c06514a77318ab6a1df342abe2fcda3456c287a --- /dev/null +++ b/libraries/LiquidCrystal/examples/HelloWorld_4bit/HelloWorld_4bit.pde @@ -0,0 +1,78 @@ +#include <Wire.h> +#include <LiquidCrystal.h> + + +#define CONTRAST_PIN 9 +#define BACKLIGHT_PIN 7 +#define CONTRAST 110 +LiquidCrystal lcd(12, 11, 5, 4, 3, 2, BACKLIGH_PIN, POSITIVE ); + + +// Creat a set of new characters +byte smiley[8] = { + 0b00000, + 0b00000, + 0b01010, + 0b00000, + 0b00000, + 0b10001, + 0b01110, + 0b00000 +}; + +byte armsUp[8] = { + 0b00100, + 0b01010, + 0b00100, + 0b10101, + 0b01110, + 0b00100, + 0b00100, + 0b01010 +}; + +byte frownie[8] = { + 0b00000, + 0b00000, + 0b01010, + 0b00000, + 0b00000, + 0b00000, + 0b01110, + 0b10001 +}; + +void setup() +{ + Serial.begin ( 57600 ); + + // Switch on the backlight and LCD contrast levels + pinMode(CONTRAST_PIN, OUTPUT); + analogWrite ( CONTRAST_PIN, CONTRAST ); + + //lcd.setBacklightPin ( BACKLIGHT_PIN, POSITIVE ); + //lcd.setBacklight ( HIGH ); + lcd.backlight(); + + lcd.begin(16,2); // initialize the lcd + + lcd.createChar (0, smiley); // load character to the LCD + lcd.createChar (1, armsUp); // load character to the LCD + lcd.createChar (2, frownie); // load character to the LCD + + lcd.home (); // go home + lcd.print("Hello, ARDUINO "); + lcd.setCursor ( 0, 1 ); // go to the next line + lcd.print (" FORUM - fm "); +} + +void loop() +{ + // Do a little animation by writing to the same location + lcd.setCursor ( 14, 1 ); + lcd.print (char(2)); + delay (200); + lcd.setCursor ( 14, 1 ); + lcd.print ( char(0)); + delay (200); +} diff --git a/libraries/LiquidCrystal/examples/HelloWorld_SR/HelloWorld_SR.pde b/libraries/LiquidCrystal/examples/HelloWorld_SR/HelloWorld_SR.pde new file mode 100644 index 0000000000000000000000000000000000000000..00c8eeb0d16a731b975513a6ca142bea400601e1 --- /dev/null +++ b/libraries/LiquidCrystal/examples/HelloWorld_SR/HelloWorld_SR.pde @@ -0,0 +1,36 @@ +#include <Wire.h> +#include <LiquidCrystal_SR.h> + +LiquidCrystal_SR lcd(8,7,TWO_WIRE); +// | | +// | \-- Clock Pin +// \---- Data/Enable Pin + +// Creat a set of new characters +byte armsUp[8] = {0b00100,0b01010,0b00100,0b10101,0b01110,0b00100,0b00100,0b01010}; +byte armsDown[8] = {0b00100,0b01010,0b00100,0b00100,0b01110,0b10101,0b00100,0b01010}; + +void setup(){ + + lcd.begin(16,2); // initialize the lcd + + lcd.createChar (0, armsUp); // load character to the LCD + lcd.createChar (1, armsDown); // load character to the LCD + + lcd.home (); // go home + lcd.print("LiquidCrystal_SR"); +} + +void loop(){ + // Do a little animation + for(int i = 0; i <= 15; i++) showHappyGuy(i); + for(int i = 15; i >= 0; i--) showHappyGuy(i); +} + +void showHappyGuy(int pos){ + lcd.setCursor ( pos, 1 ); // go to position + lcd.print(char(random(0,2))); // show one of the two custom characters + delay(150); // wait so it can be seen + lcd.setCursor ( pos, 1 ); // go to position again + lcd.print(" "); // delete character +} \ No newline at end of file diff --git a/libraries/LiquidCrystal/examples/HelloWorld_byVac/HelloWorld_byVac.ino b/libraries/LiquidCrystal/examples/HelloWorld_byVac/HelloWorld_byVac.ino new file mode 100644 index 0000000000000000000000000000000000000000..4133544ae5ce6e3c4fb52f4e76fc0282f7ce00a1 --- /dev/null +++ b/libraries/LiquidCrystal/examples/HelloWorld_byVac/HelloWorld_byVac.ino @@ -0,0 +1,72 @@ +//#include <LiquidCrystal.h> +//LiquidCrystal lcd(4, 7, 8, 9, 10, 11, 12); + +#include <Wire.h> +//#include <LiquidCrystal_I2C_ByVac.h> +//LiquidCrystal_I2C_ByVac lcd(0x21); + +//#include <LiquidCrystal_I2C.h> +//LiquidCrystal_I2C lcd_1(0x27,2,1,0,4,5,6,7,backlight_pin,POSITIVE); // DF Robots + +//#include <LiquidCrystal_SR.h> +//LiquidCrystal_SR lcd(14,15,4); + +#include <LiquidCrystal.h> +//LiquidCrystal lcd(4, 7, 8, 9, 10, 11, 12); +LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LCD Shield + +uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4}; +uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0}; +uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0}; +uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0}; +uint8_t duck[8] = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0}; +uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0}; +uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0}; +uint8_t retarrow[8] = { 0x1,0x1,0x5,0x9,0x1f,0x8,0x4}; + + +const byte backLightpin = 5; +//const byte backLightpin = 10; +const byte contrast_pin = 6; + +void setup () { + //lcd.begin(16,2); + lcd.begin(20,4); + lcd.clear(); + // lcd.backlight(); + // lcd.setBacklightPin(3); + // lcd.setBacklight(1); + pinMode(backLightpin, OUTPUT); + analogWrite(backLightpin, 210); + pinMode(contrast_pin, OUTPUT); + analogWrite(contrast_pin, 40); + lcd.createChar(0, bell); + lcd.createChar(1, note); + lcd.createChar(2, clock); + lcd.createChar(3, heart); + lcd.createChar(4, duck); + lcd.createChar(5, check); + lcd.createChar(6, cross); + lcd.createChar(7, retarrow); + } + +// display all keycodes +void displayKeyCodes(void) { + uint8_t i = 0; + while (1) { + lcd.clear(); + lcd.print("Codes 0x"); lcd.print(i, HEX); + lcd.print("-0x"); lcd.print(i+16, HEX); + lcd.setCursor(0, 1); + for (int j=0; j<16; j++) { + lcd.write(i+j); + } + i+=16; + + delay(10000); + }} + + +void loop () { + displayKeyCodes(); +} diff --git a/libraries/LiquidCrystal/examples/HelloWorld_i2c/HelloWorld_i2c.pde b/libraries/LiquidCrystal/examples/HelloWorld_i2c/HelloWorld_i2c.pde new file mode 100644 index 0000000000000000000000000000000000000000..d0fd78cea9385d920fe44e03b8286e3c773639db --- /dev/null +++ b/libraries/LiquidCrystal/examples/HelloWorld_i2c/HelloWorld_i2c.pde @@ -0,0 +1,61 @@ +#include <Wire.h> +#include <LiquidCrystal_I2C.h> + + + +#define BACKLIGHT_PIN 13 + +LiquidCrystal_I2C lcd(0x38); // Set the LCD I2C address + +//LiquidCrystal_I2C lcd(0x38, BACKLIGHT_PIN, POSITIVE); // Set the LCD I2C address + + +// Creat a set of new characters +const uint8_t charBitmap[][8] = { + { 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 }, + { 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 }, + { 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 }, + { 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 }, + { 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 }, + { 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 }, + { 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 }, + { 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 } + +}; + +void setup() +{ + int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0])); + + // Switch on the backlight + pinMode ( BACKLIGHT_PIN, OUTPUT ); + digitalWrite ( BACKLIGHT_PIN, HIGH ); + + lcd.begin(16,2); // initialize the lcd + + for ( int i = 0; i < charBitmapSize; i++ ) + { + lcd.createChar ( i, (uint8_t *)charBitmap[i] ); + } + + lcd.home (); // go home + lcd.print("Hello, ARDUINO "); + lcd.setCursor ( 0, 1 ); // go to the next line + lcd.print (" FORUM - fm "); + delay ( 1000 ); +} + +void loop() +{ + lcd.home (); + // Do a little animation by writing to the same location + for ( int i = 0; i < 2; i++ ) + { + for ( int j = 0; j < 16; j++ ) + { + lcd.print (char(random(7))); + } + lcd.setCursor ( 0, 1 ); + } + delay (200); +} diff --git a/libraries/LiquidCrystal/examples/HelloWorld_si2c/HelloWorld_si2c.ino b/libraries/LiquidCrystal/examples/HelloWorld_si2c/HelloWorld_si2c.ino new file mode 100644 index 0000000000000000000000000000000000000000..0472289336ad50ce7c3546675d665b69324464bc --- /dev/null +++ b/libraries/LiquidCrystal/examples/HelloWorld_si2c/HelloWorld_si2c.ino @@ -0,0 +1,54 @@ +#include <Wire.h> +#include <LiquidCrystal_SI2C.h> + +LiquidCrystal_SI2C lcd(0x4e,2,1,0,4,5,6,7); + +// Creat a set of new characters +const uint8_t charBitmap[][8] = { + { 0xc, 0x12, 0x12, 0xc, 0, 0, 0, 0 }, + { 0x6, 0x9, 0x9, 0x6, 0, 0, 0, 0 }, + { 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0, 0x0 }, + { 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0, 0x0 }, + { 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0, 0x0 }, + { 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0, 0x0 }, + { 0x0, 0x0, 0x0, 0x6, 0x9, 0x9, 0x6, 0x0 }, + { 0x0, 0x0, 0x0, 0xc, 0x12, 0x12, 0xc, 0x0 } + +}; + +void setup() +{ + int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0])); + + lcd.begin (16,2); + lcd.setBacklightPin(3, POSITIVE); + lcd.setBacklight(HIGH); + + for ( int i = 0; i < charBitmapSize; i++ ) + { + lcd.createChar ( i, (uint8_t *)charBitmap[i] ); + } + + lcd.home (); // go home + lcd.print("Hello, Arduino "); + lcd.setCursor ( 0, 1 ); // go to the next line + for ( int i = 0; i < 8; i++ ) + lcd.print (char(i)); + delay ( 1000 ); +} + +void loop() +{ + lcd.home (); + // Do a little animation by writing to the same location + for ( int i = 0; i < 2; i++ ) + { + for ( int j = 0; j < 16; j++ ) + { + lcd.print (char(random(7))); + } + lcd.setCursor ( 0, 1 ); + } + delay (500); +} + diff --git a/libraries/LiquidCrystal/examples/LCDiSpeed/LCDiSpeed.pde b/libraries/LiquidCrystal/examples/LCDiSpeed/LCDiSpeed.pde new file mode 100644 index 0000000000000000000000000000000000000000..3a485a3541d07268a7c269604207b7c1c8e1d458 --- /dev/null +++ b/libraries/LiquidCrystal/examples/LCDiSpeed/LCDiSpeed.pde @@ -0,0 +1,281 @@ +static char dummyvar; // dummy declaration for STUPID IDE!!!! +/*---------------------------------------------------------------------------- + * vi:ts=4 + * + * LCDiSpeed - LCD Interface Speed + * + * Created by Bill Perry 2012-03-16 + * Copyright 2012 - Under creative commons license 3.0: + * Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0) + * license page: http://creativecommons.org/licenses/by-nc-sa/3.0/ + * + * Sketch to measure and report the speed of the interface to the LCD and + * speed of updating the LCD. + * + * It runs a Frames/Sec (FPS) test which writes a "frame" of each digit 0-9 to + * the display. + * A "frame" is a full display of characters. + * It is created by positioning the cursor to the begining of each row + * and then writing a character to every position on the row, until the + * entire display is filled. + * The FPS test does a frame of 9's then 8's, .... down to 0's + * On fast interfaces it will not normally be seen. + * + * The sketch will then calculate & report transfer speeds and + * LCD update rates to the LCD display. + * + * Reported Information: + * - Single byte transfer speed (ByteXfer) + * This is the time it takes for a single character to be sent from + * the sketch to the LCD display. + * + * - Frame/Sec (FPS) + * This is the number of times the full display can be updated + * in one second. + * + * - Frame Time (Ftime) + * This is the amount of time it takes to update the full LCD display. + * + * + * The sketch will also report "independent" FPS and Ftime values. + * These are timing values that are independent of the size of the LCD under test. + * Currently they represent the timing for a 16x2 LCD + * The value of always having numbers for a 16x2 display + * is that these numbers can be compared to each other since they are + * independent of the size of the actual LCD display that is running the test. + * + * All times & rates are measured and calculeted from what a sketch "sees" + * using the LiquidCrystal API. + * It includes any/all s/w overhead including the time to go through the + * Arduino Print class and LCD library. + * The actual low level hardware times are obviously lower. + * + * History + * 2012.03.15 bperrybap - Original creation + * + * @author Bill Perry - bperrybap@opensource.billsworld.billandterrie.com + *---------------------------------------------------------------------------- + +/* + * Define your LCD size + */ +#define LCD_COLS 16 +#define LCD_ROWS 2 + +/* + * Pick your interface. + */ + +//#define LCDIF_4BIT +//#define LCDIF_I2C +//#define LCDIF_SR2W +//#define LCDIF_SR_2W // SR in 2 wire mode +//#define LCDIF_SR_3W // SR in 3 wire mode +//#define LCDIF_SR3W +//#define LCDIF_SR1W +#define LCDIF_SI2C + +/* + * Options + */ + +#define FPS_iter 1 // number of iterations to repeat each "frame" within the test + // (current frame test is 10 full display frames, 1 for each digits 0-9) + // FPS_iter like 100 will allow the frames to be seen + // Note: the only reason other than visual to make this larger than 1 + // might be to compensate for Async serial buffering should a serial interface be tested + // even with 1 iteration, 340 bytes are written for a 16x2 display + // bytes written = FPS_iter * ((LCD_ROWS * LCD_COLS) + LCD_ROWS) * 10 + +#define iLCD // turn on code to calculate speed of "independent" sized display +#define iLCD_ROWS 2 // independent FPS row size +#define iLCD_COLS 16 // independent FPS col size + + +#define DELAY_TIME 3500 // delay time to see information on lcd + +#if defined(LCDIF_4BIT) + +// Include the Liquid Crystal library code: +#include <LiquidCrystal.h> + +// initialize the library with the numbers of the interface pins +// lcd(RS, E, d4, d5, d6, d7, bl, polarity) +#ifdef BACKLIGHT_ON +LiquidCrystal lcd( 8, 9, 4, 5, 6, 7, 10, POSITIVE); // new constructor with backlight support +#else +LiquidCrystal lcd( 8, 9, 4, 5, 6, 7); // old style constructor w/o backlight (to test old library) +#endif + +#elif defined(LCDIF_I2C) +#include <Wire.h> +#include <LiquidCrystal_I2C.h> + +LiquidCrystal_I2C lcd(0x38); // Set the LCD I2C address + + +#elif defined(LCDIF_SR3W) +#include <LiquidCrystal_SR3W.h> + // d,clk,strb, en,rw,rs,d4,d5,d6,d7,bl,blpol +//LiquidCrystal_SR3W lcd (2, 3, 4, 6, 7, 1, 2, 3, 4, 5, 0, POSITIVE); +LiquidCrystal_SR3W lcd(3, 2, 4); + +#elif defined(LCDIF_SR2W) + +#include <LiquidCrystal_SR2W.h> + // d, clk, (blPolarity optional, defaults to POSITIVE) +LiquidCrystal_SR2W lcd (2, 3); + +#elif defined(LCDIF_SR1W) + +#include <LiquidCrystal_SR1W.h> +LiquidCrystal_SR1W lcd (2); + +#elif defined(LCDIF_SR_2W) + +#include <LiquidCrystal_SR.h> + // d, clk +LiquidCrystal_SR lcd (2, 3); + +#elif defined(LCDIF_SR_3W) + +#include <LiquidCrystal_SR.h> + // d,clk,strb +LiquidCrystal_SR lcd (2, 3, 4); + +#elif defined(LCDIF_SI2C) + +#include <LiquidCrystal_SI2C.h> + +LiquidCrystal_SI2C lcd(0x4e,2,1,0,4,5,6,7); + +#endif + +void setup() +{ + // set up the LCD's number of columns and rows: + lcd.begin(LCD_COLS, LCD_ROWS); +lcd.setBacklightPin(3, POSITIVE); + lcd.setBacklight(HIGH); +#ifdef BACKLIGHT_ON + lcd.backlight(); // make sure backlight is on with new library +#endif +} + +void loop() +{ +unsigned long etime; +char buf[8]; + + lcd.clear(); + + + /* + * Time an FPS test + */ + + etime = timeFPS(FPS_iter, LCD_COLS, LCD_ROWS); + + /* + * show the average single byte xfer time during the FPS test + */ + showByteXfer(etime); + + /* + * show FPS rate and Frame update time for this display + */ + + sprintf(buf, "%dx%d", LCD_COLS, LCD_ROWS); + showFPS(etime, buf); + +#ifdef iLCD + /* + * calculate Independent FPS and Frame update time + * (rate & time for a "standard" display - default of 16x2) + * This is simply a matter of scaling the time based on the + * ratio of the display sizes. + */ + + etime = etime *iLCD_ROWS * iLCD_COLS / LCD_ROWS / LCD_COLS; + + /* + * show independent FPS rate & Frame update time + */ + sprintf(buf, "%dx%d", iLCD_COLS, iLCD_ROWS); + showFPS(etime, buf); +#endif + +} + +unsigned long timeFPS(uint8_t iter, uint8_t cols, uint8_t rows) +{ +char c; +unsigned long stime, etime; + + stime = micros(); + for(c = '9'; c >= '0'; c--) // do not change this unless you change the FPS/ByteXfer calcuations as well + { + for(uint8_t i = 0; i < iter; i++) + { + for(uint8_t row = 0; row < rows; row++) + { + lcd.setCursor(0, row); + for(uint8_t col = 0; col< cols;col++) + { + lcd.write(c); + } + } + } + } + etime = micros(); + return((etime-stime)); +} +void showFPS(unsigned long etime, const char *type) +{ +float fps; + + + /* + * calculate Frame update time and FPS rate + * The 10.0 is for the 10 frames done per iteration + * one for each digit 0-9 + */ + + fps = (10.0 * FPS_iter) * 1000000.0/(etime); + + + lcd.clear(); + lcd.print(type); + lcd.print("FPS: "); + lcd.print(fps); + + if(LCD_ROWS > 1) + { + lcd.setCursor(0,1); + } + else + { + delay(DELAY_TIME); + lcd.clear(); + } + lcd.print("Ftime: "); + lcd.print((etime)/10.0/FPS_iter/1000); + lcd.print("ms"); + + delay(DELAY_TIME); +} +void showByteXfer(unsigned long etime) +{ + lcd.clear(); + lcd.print("ByteXfer: "); + /* + * Calculate average byte xfer time from time of FPS test + * This takes into consideration the set cursor position commands which + * are single byte commands and take the same amount of time as a data byte write. + * The final result is rounded up to an integer. + */ + lcd.print((int) (etime / (FPS_iter * (10.0 * (LCD_COLS * LCD_ROWS + LCD_ROWS)))+0.5)); + lcd.print("uS"); + + delay(DELAY_TIME); +} diff --git a/libraries/LiquidCrystal/examples/LCDiSpeed/LCDiSpeed.txt b/libraries/LiquidCrystal/examples/LCDiSpeed/LCDiSpeed.txt new file mode 100644 index 0000000000000000000000000000000000000000..b59d0133aaa0ad48cdbb8dc7a787c59506e39e0d --- /dev/null +++ b/libraries/LiquidCrystal/examples/LCDiSpeed/LCDiSpeed.txt @@ -0,0 +1,20 @@ +16Mhz AVR +Interface ByteXfer 16x2FPS Ftime +---------------------------------------------- +4BIT 338uS 86.92 11.51ms (orignal Liquid Crystal) +4BIT 98uS 298.58 3.35ms +SR2W 76uS 388.62 2.57ms +SR_2W 72uS 406.90 2.46ms +SR_3W 61uS 480.03 2.08ms +SR3W 102uS 287.92 3.47ms + + +80Mhz Pic32 (ChipKit Uno32) +Interface ByteXfer 16x2FPS Ftime +---------------------------------------------- +4BIT 232uS 126.73 7.89ms (orignal mpide Liquid Crystal) +4BIT 57uS 517.41 1.93ms +SR2W 53uS 557.35 1.79ms +SR_2W 53uS 554.66 1.80ms +SR_3W 50uS 591.40 1.69ms +SR3W 56uS 524.91 1.91ms diff --git a/libraries/LiquidCrystal/examples/SerialDisplay/SerialDisplay.pde b/libraries/LiquidCrystal/examples/SerialDisplay/SerialDisplay.pde new file mode 100644 index 0000000000000000000000000000000000000000..ce21e1c2c90d423685f51a6dbd06f39c92777b0b --- /dev/null +++ b/libraries/LiquidCrystal/examples/SerialDisplay/SerialDisplay.pde @@ -0,0 +1,37 @@ +/* + * Displays text sent over the serial port (e.g. from the Serial Monitor) on + * an attached LCD. + */ +#include <Wire.h> +#include <LiquidCrystal_I2C.h> + +#define BACKLIGHT_PIN 13 + +LiquidCrystal_I2C lcd(0x38); // set the LCD address to 0x38 + +void setup() +{ + pinMode ( BACKLIGHT_PIN, OUTPUT ); + lcd.begin (16,2); + digitalWrite ( BACKLIGHT_PIN, HIGH ); + + Serial.begin(57600); +} + +void loop() +{ + // when characters arrive over the serial port... + if (Serial.available()) + { + // wait a bit for the entire message to arrive + delay(100); + // clear the screen + lcd.clear(); + // read all the available characters + while (Serial.available() > 0) + { + // display each character to the LCD + lcd.write(Serial.read()); + } + } +} diff --git a/libraries/LiquidCrystal/examples/i2cLCDextraIO/i2cLCDextraIO.pde b/libraries/LiquidCrystal/examples/i2cLCDextraIO/i2cLCDextraIO.pde new file mode 100644 index 0000000000000000000000000000000000000000..5eaad1f0a5176cde582136b1edf76e4974d7f22d --- /dev/null +++ b/libraries/LiquidCrystal/examples/i2cLCDextraIO/i2cLCDextraIO.pde @@ -0,0 +1,246 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 1/1/12. +// Copyright 2011 - Under creative commons license: +// Attribution-NonCommercial-ShareAlike CC BY-NC-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file i2CLCDextraIO.pde +// Temperature logging to demonstrate the I2CLCDextraIO library. +// +// @brief This application is a demostration file for the I2CLCDextraIO library +// that reads a temperature from the internal ATMEGA328p temperature sensor +// and displays it on the LCD. The application also demonstrates some of the +// methods of the library, such as loading custom characters to the LCD, +// moving around the LCD, and writing to it. +// +// @author F. Malpartida +// --------------------------------------------------------------------------- +#include <Wire.h> +#include <LCD.h> + +#define _LCD_I2C_ + +#ifdef _LCD_I2C_ +#include <LiquidCrystal_I2C.h> +#endif + +#ifdef _LCD_4BIT_ +#include <LiquidCrystal.h> +#endif + + +/*! + @defined CHAR_WIDTH + @abstract Character witdth of the display, expressed in pixeles per character. +*/ +#define CHAR_WIDTH 5 + +/*! + @defined BACKLIGHT_PIN + @abstract LCD backlight pin definition. + @discussion AVR pin used for the backlight illumintation of the LCD. +*/ +#define BACKLIGHT_PIN 7 + +/*! + @defined TEMP_CAL_OFFSET + @abstract Temperature calibration offset. + @discussion This is the offset value that has to be modified to get a + correct temperature reading from the internal temperature sensor + of your AVR. +*/ +#define TEMP_CAL_OFFSET 334 + +/*! + @defined FILTER_ALP + @abstract Low pass filter alpha value + @discussion This value defines how much does the current reading, influences + the over all value. The smaller, the less influence the current + reading has over the overall result. +*/ +#define FILTER_ALP 0.1 + +extern unsigned int __bss_end; +extern unsigned int __heap_start; +extern void *__brkval; + +#ifdef _LCD_I2C_ +LiquidCrystal_I2C lcd(0x38); // set the LCD address to 0x20 for a 16 chars and 2 line display +#endif + +#ifdef _LCD_4BIT_ +LiquidCrystal lcd(12, 11, 5, 4, 3, 2, BACKLIGHT_PIN, POSITIVE); +#endif +const int CONTRAST_PIN = 9; +const int CONTRAST = 65; + + + +LCD *myLCD = &lcd; + +static double tempFilter; + + +/*! + @const charBitmap + @abstract Define Character bitmap for the bargraph. + @discussion Defines a character bitmap to represent a bargraph on a text + display. The bitmap goes from a blank character to full black. +*/ +const uint8_t charBitmap[][8] = { + { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0 }, + { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0 }, + { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0 }, + { 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x0 }, + { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0 }, + { 0xe, 0x11, 0x11, 0x11, 0xe, 0, 0, 0 }, + { 0x6, 0x9, 0x9, 0x6, 0x0, 0, 0, 0} +}; + +/*! + @function + @abstract Return available RAM memory + @discussion This routine returns the ammount of RAM memory available after + initialising the C runtime. + @param + @result Free RAM available. +*/ + +static int freeMemory() +{ + int free_memory; + + if((int)__brkval == 0) + free_memory = ((int)&free_memory) - ((int)&__bss_end); + else + free_memory = ((int)&free_memory) - ((int)__brkval); + + return free_memory; +} + +/*! + @function + @abstract Returns AVR328p internal temperature + @discussion Configures the ADC MUX for the temperature ADC channel and + waits for conversion and returns the value of the ADC module + @result The internal temperature reading - in degrees C +*/ + +static int readTemperature() +{ + ADMUX = 0xC8; // activate interal temperature sensor, + // using 1.1V ref. voltage + ADCSRA |= _BV(ADSC); // start the conversion + while (bit_is_set(ADCSRA, ADSC)); // ADSC is cleared when the conversion + // finishes + + // combine bytes & correct for temperature offset (approximate) + return ( (ADCL | (ADCH << 8)) - TEMP_CAL_OFFSET); +} + +/*! + @function + @abstract Braws a bargraph onto the display representing the value passed. + @discussion Draws a bargraph on the specified row using barLength characters. + @param value[in] Value to represent in the bargraph + @param row[in] Row of the LCD where to display the bargraph. Range (0, 1) + for this display. + @param barlength[in] Length of the bar, expressed in display characters. + @param start[in] Start bar character + @param end [in] End bar character + + @result None +*/ +static void drawBars ( int value, uint8_t row, uint8_t barLength, char start, + char end ) +{ + int numBars; + + // Set initial titles on the display + myLCD->setCursor (0, row); + myLCD->print (start); + + // Calculate the size of the bar + value = map ( value, -30, 50, 0, ( barLength ) * CHAR_WIDTH ); + numBars = value / CHAR_WIDTH; + + // Limit the size of the bargraph to barLength + if ( numBars > barLength ) + { + numBars = barLength; + } + myLCD->setCursor ( 1, row ); + + // Draw the bars + while ( numBars-- ) + { + myLCD->print ( char( 5 ) ); + } + + // Draw the fractions + numBars = value % CHAR_WIDTH; + myLCD->print ( char(numBars) ); + myLCD->setCursor (barLength + 1, row); + myLCD->print (end); + +} + +void setup () +{ + int i; + int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0])); + + Serial.begin ( 57600 ); + analogReference ( INTERNAL ); + +#ifdef _LCD_4BIT_ + pinMode(CONTRAST_PIN, OUTPUT); + lcd.backlight(); + digitalWrite(BACKLIGHT_PIN, HIGH); + analogWrite (CONTRAST_PIN, CONTRAST); +#else + pinMode ( BACKLIGHT_PIN, OUTPUT ); + digitalWrite(BACKLIGHT_PIN, HIGH); +#endif + + myLCD->begin ( 16, 2 ); + + // Load custom character set into CGRAM + for ( i = 0; i < charBitmapSize; i++ ) + { + myLCD->createChar ( i, (uint8_t *)charBitmap[i] ); + } + Serial.println ( freeMemory () ); + + myLCD->clear (); + myLCD->print ("Temp:"); + + tempFilter = readTemperature (); // Initialise the temperature Filter + +} + + +void loop () +{ + int temp; + + temp = readTemperature(); + tempFilter = ( FILTER_ALP * temp) + (( 1.0 - FILTER_ALP ) * tempFilter); + + myLCD->setCursor ( 8, 0 ); + myLCD->print (" "); + myLCD->setCursor ( 8, 0 ); + myLCD->print ( tempFilter, 1 ); + myLCD->setCursor ( 12, 0 ); + myLCD->print ( "\x07" ); + myLCD->print ("C"); + drawBars ( tempFilter, 1, 14, '-', '+' ); + + delay (200); +} diff --git a/libraries/LiquidCrystal/examples/i2cLCDextraIO_tempLeonardo/i2cLCDextraIO_tempLeonardo.ino b/libraries/LiquidCrystal/examples/i2cLCDextraIO_tempLeonardo/i2cLCDextraIO_tempLeonardo.ino new file mode 100644 index 0000000000000000000000000000000000000000..f98150737203b26c1d15d206514d0a92e17b1716 --- /dev/null +++ b/libraries/LiquidCrystal/examples/i2cLCDextraIO_tempLeonardo/i2cLCDextraIO_tempLeonardo.ino @@ -0,0 +1,332 @@ +// --------------------------------------------------------------------------- +// Created by Francisco Malpartida on 1/1/12. +// Copyright 2011 - Under creative commons license: +// Attribution-NonCommercial-ShareAlike CC BY-NC-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file i2CLCDextraIO_tempLeonardo.ino +// Temperature logging to demonstrate the I2CLCDextraIO library. +// +// @brief This application is a demostration file for the I2CLCDextraIO library +// that reads a temperature from the internal ATMEGA32U4 temperature sensor +// and displays it on the LCD. The application also demonstrates some of the +// methods of the library, such as loading custom characters to the LCD, +// moving around the LCD, and writing to it. +// +// @author F. Malpartida +// --------------------------------------------------------------------------- +#include <Arduino.h> +#include <Wire.h> +#include <LCD.h> + +#define _LCD_SR3W_ + +#ifdef _LCD_I2C_ +#include <LiquidCrystal_I2C.h> +#endif + +#ifdef _LCD_4BIT_ +#include <LiquidCrystal.h> +#endif + + +#ifdef _LCD_SR_ +#include <LiquidCrystal_SR.h> +#endif + +#ifdef _LCD_SR3W_ +#include <LiquidCrystal_SR3W.h> +#endif + + +/*! + @defined CHAR_WIDTH + @abstract Character witdth of the display, expressed in pixeles per character. +*/ +#define CHAR_WIDTH 5 + +/*! + @defined BACKLIGHT_PIN + @abstract LCD backlight pin definition. + @discussion AVR pin used for the backlight illumintation of the LCD. +*/ +#define BACKLIGHT_PIN 12 + +/*! + @defined STATUS_PIN + @abstract Status LED indicator. + @discussion Activity LED blinking indicating that the system is up. +*/ +#define STATUS_PIN 13 + +/*! + @defined LOOP_DELAY + @abstract Main loop delay. + @discussion Main loop delay executing temperature readings and LCD updates. +*/ +#define LOOP_DELAY 300 + +/*! + @defined TEMP_CAL_OFFSET + @abstract Temperature calibration offset. + @discussion This is the offset value that has to be modified to get a + correct temperature reading from the internal temperature sensor + of your AVR. +*/ +#define TEMP_CAL_OFFSET 282 + +/*! + @defined FILTER_ALP + @abstract Low pass filter alpha value + @discussion This value defines how much does the current reading, influences + the over all value. The smaller, the less influence the current + reading has over the overall result. +*/ +#define FILTER_ALP 0.1 + +/*! + @defined MIN_TEMP + @abstract Minimum temperature range for bargraph + +*/ +#define MIN_TEMP -10 + +/*! + @defined MAX_TEMP + @abstract Maximum temperature range for bargraph + +*/ +#define MAX_TEMP 50 + +extern unsigned int __bss_end; +extern unsigned int __heap_start; +extern void *__brkval; + + +// Initialise LCD module +// ----------------------------------------------------------------------------- +#ifdef _LCD_I2C_ +LiquidCrystal_I2C lcd(0x38); +#endif + +#ifdef _LCD_4BIT_ +LiquidCrystal lcd(12, 11, 5, 4, 3, 2, BACKLIGHT_PIN, POSITIVE); +const int CONTRAST_PIN = 9; +const int CONTRAST = 65; +#endif + +#ifdef _LCD_SR_ +LiquidCrystal_SR lcd(3,2,TWO_WIRE); +// | | +// | \-- Clock Pin +// \---- Data/Enable Pin +#endif + +#ifdef _LCD_SR3W_ +LiquidCrystal_SR3W lcd(3, 2, 4); +// | | +// | \-- Clock Pin +// \---- Data/Enable Pin +#endif + + +// LCD reference variable +LCD *myLCD = &lcd; + +// Temperature filter variable +static double tempFilter; + +/*! + @const charBitmap + @abstract Define Character bitmap for the bargraph. + @discussion Defines a character bitmap to represent a bargraph on a text + display. The bitmap goes from a blank character to full black. +*/ +const uint8_t charBitmap[][8] = { + { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0 }, + { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0 }, + { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0 }, + { 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x0 }, + { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0 }, + { 0xe, 0x11, 0x11, 0x11, 0xe, 0, 0, 0 }, + { 0x6, 0x9, 0x9, 0x6, 0x0, 0, 0, 0} +}; + +/*! + @function + @abstract Return available RAM memory + @discussion This routine returns the ammount of RAM memory available after + initialising the C runtime. + @param + @result Free RAM available. +*/ +static int freeMemory() +{ + int free_memory; + + if((int)__brkval == 0) + free_memory = ((int)&free_memory) - ((int)&__bss_end); + else + free_memory = ((int)&free_memory) - ((int)__brkval); + + return free_memory; +} + +/*! + @function + @abstract Returns AVR328p internal temperature + @discussion Configures the ADC MUX for the temperature ADC channel and + waits for conversion and returns the value of the ADC module + @result The internal temperature reading - in degrees C +*/ + +static int readTemperature() +{ + ADMUX = 0xC7; // activate interal temperature sensor, + // using 2.56V ref. voltage + ADCSRB |= _BV(MUX5); + + ADCSRA |= _BV(ADSC); // start the conversion + while (bit_is_set(ADCSRA, ADSC)); // ADSC is cleared when the conversion + // finishes + + // combine bytes & correct for temperature offset (approximate) + return ( (ADCL | (ADCH << 8)) - TEMP_CAL_OFFSET); +} + +/*! + @function + @abstract Braws a bargraph onto the display representing the value passed. + @discussion Draws a bargraph on the specified row using barLength characters. + @param value[in] Value to represent in the bargraph + @param row[in] Row of the LCD where to display the bargraph. Range (0, 1) + for this display. + @param barlength[in] Length of the bar, expressed in display characters. + @param start[in] Start bar character + @param end [in] End bar character + + @result None +*/ +static void drawBars ( int value, uint8_t row, uint8_t barLength, char start, + char end ) +{ + int numBars; + + // Set initial titles on the display + myLCD->setCursor (0, row); + myLCD->print (start); + + // Calculate the size of the bar + value = map ( value, MIN_TEMP, MAX_TEMP, 0, ( barLength ) * CHAR_WIDTH ); + numBars = value / CHAR_WIDTH; + + // Limit the size of the bargraph to barLength + if ( numBars > barLength ) + { + numBars = barLength; + } + myLCD->setCursor ( 1, row ); + + // Draw the bars + while ( numBars-- ) + { + myLCD->print ( char( 5 ) ); + } + + // Draw the fractions + numBars = value % CHAR_WIDTH; + myLCD->print ( char(numBars) ); + myLCD->setCursor (barLength + 1, row); + myLCD->print (end); + +} + +/*! + @function + @abstract Initialise the HW + @discussion Initialise the HW used within this application: UART, LCD & IOs + @param + @result +*/ + +static void initHW ( void ) +{ + int i; + int charBitmapSize = (sizeof(charBitmap ) / sizeof (charBitmap[0])); + + Serial.begin ( 57600 ); + + // Hardware initialise + // ------------------------------------ + + //ADCSRA |= (1 << ADEN); // Initialise ADC block (no need done by env) + + // Initialise LCD HW: backlight and LCD + // ------------------------------------- +#ifdef _LCD_4BIT_ + pinMode(CONTRAST_PIN, OUTPUT); + analogWrite (CONTRAST_PIN, CONTRAST); +#endif + +#ifdef _LCD_I2C_ + pinMode ( BACKLIGHT_PIN, OUTPUT ); + digitalWrite (BACKLIGHT_PIN, HIGH); +#endif + pinMode ( STATUS_PIN, OUTPUT ); + + myLCD->begin ( 20, 2 ); + // Load custom character set into CGRAM + // -------------------------------------------------------------------- + for ( i = 0; i < charBitmapSize; i++ ) + { + myLCD->createChar ( i, (uint8_t *)charBitmap[i] ); + } +} + +void setup () +{ + initHW(); + + Serial.println ( freeMemory () ); + myLCD->clear (); + myLCD->print ( F("Free Mem: ")); + myLCD->print ( freeMemory () ); + delay ( 2000 ); + myLCD->clear (); + myLCD->print (F("Temp:")); + myLCD->setCursor ( 8, 0 ); + + tempFilter = 0; + myLCD->print ( readTemperature() ); +} + + +void loop () +{ + int temp; + static byte status = 1; + + status ^= 1; + digitalWrite ( STATUS_PIN, status); + + temp = readTemperature(); + tempFilter = ( FILTER_ALP * temp) + (( 1.0 - FILTER_ALP ) * tempFilter); + + // Display the information to the LCD + myLCD->setCursor ( 8, 0 ); + myLCD->print (" "); + myLCD->setCursor ( 8, 0 ); + myLCD->print ( tempFilter, 1 ); + myLCD->setCursor ( 12, 0 ); + myLCD->print ( "\x07" ); + myLCD->print ("C"); + drawBars ( tempFilter, 1, 14, '-', '+' ); + + delay (LOOP_DELAY); +} \ No newline at end of file diff --git a/libraries/LiquidCrystal/examples/performanceLCD/performanceLCD.pde b/libraries/LiquidCrystal/examples/performanceLCD/performanceLCD.pde new file mode 100644 index 0000000000000000000000000000000000000000..1ddb5b75dbd7862c433fa180d4ea4d7e9353c23d --- /dev/null +++ b/libraries/LiquidCrystal/examples/performanceLCD/performanceLCD.pde @@ -0,0 +1,497 @@ +// Created by Francisco Malpartida on 20/08/11. +// Copyright 2011 - Under creative commons license 3.0: +// Attribution-ShareAlike CC BY-SA +// +// This software is furnished "as is", without technical support, and with no +// warranty, express or implied, as to its usefulness for any purpose. +// +// Thread Safe: No +// Extendable: Yes +// +// @file performanceLCD.h +// This sketch implements a simple benchmark for the New LiquidCrystal library. +// +// @brief +// This sketch provides a simple benchmark for the New LiquidCrystal library. It +// enables to test the varios classes provided by the library giving a performance +// reference. +// +// This library is only compatible with Arduino's SDK version 1.0 +// +// @version API 1.0.0 +// +// @author F. Malpartida - fmalpartida@gmail.com +// Contribution by flo - Florian@Fida.biz - for benchmarking SR +// --------------------------------------------------------------------------- +#include <Wire.h> + +//#define _LCD_I2C_ +#define _LCD_SI2C_ + +#ifdef _LCD_I2C_ +#include <LiquidCrystal_I2C.h> +#endif + +#ifdef _LCD_SI2C_ +#include <LiquidCrystal_SI2C.h> +#endif + +#ifdef _LCD_4BIT_ +#include <LiquidCrystal.h> +#endif + +#ifdef _LCD_SR_ +#include <LiquidCrystal_SR.h> +#endif + +#ifdef _LCD_SR3W_ +#include <LiquidCrystal_SR3W.h> +#endif + +#ifdef _LCD_SR1_ +#include <LiquidCrystal_SR1.h> +#endif + +// C runtime variables +// ------------------- +#ifdef __AVR__ +extern unsigned int __bss_end; +extern unsigned int __heap_start; +extern void *__brkval; +#endif + +// Constants and definitions +// ------------------------- +// Definitions for compatibility with Arduino SDK prior to version 1.0 +#ifndef F +#define F(str) str +#endif + +/*! + @defined NUM_BENCHMARKS + @abstract Number of benchmarks in the project. + */ +#define NUM_BENCHMARKS 4 + +/*! + @defined ITERATIONS + @abstract Number of benchmarks iterations to perform. + */ +#define ITERATIONS 10 + +/*! + @defined LCD_ROWS + @abstract LCD rows + @discussion Defines the number of rows that the LCD has, normal LCD ranges are (1, 2, 4). + */ +#define LCD_ROWS 2 + +/*! + @defined LCD_COLUMNS + @abstract LCD available columns + @discussion Defines the number of colums that the LCD has, normal LCD ranges are (8, 16, 20). + */ +#define LCD_COLUMNS 16 + +/*! + @const Pin constant definitions + @abstract Define several constants required to manage the LCD backlight and contrast + */ +#ifdef _LCD_I2C_ +const int BACKLIGHT_PIN = 12; +const int CONTRAST_PIN = 0; // none +const int CONTRAST = 0; // none +#endif + +#ifdef _LCD_SI2C_ +const int BACKLIGHT_PIN = 3; +const int CONTRAST_PIN = 0; // none +const int CONTRAST = 0; // none +#endif + +#ifdef _LCD_4BIT_ +const int CONTRAST_PIN = 9; +const int BACKLIGHT_PIN = 7; +const int CONTRAST = 120; +#endif + +#ifdef _LCD_SR_ +const int CONTRAST_PIN = 0; // not connected +const int BACKLIGHT_PIN = 0; // none +const int CONTRAST = 0; +#endif + +#ifdef _LCD_SR1_ +const int CONTRAST_PIN = 0; // not connected +const int BACKLIGHT_PIN = 0; // none +const int CONTRAST = 0; +#endif + +#ifdef _LCD_SR3W_ +const int CONTRAST_PIN = 0; // none +const int BACKLIGHT_PIN = 5; +const int CONTRAST = 0; +#endif + +/*! + @const charBitmap + @abstract Define Character bitmap for the bargraph. + @discussion Defines a character bitmap to represent a bargraph on a text + display. The bitmap goes from a blank character to full black. + */ +const uint8_t charBitmap[][8] = { + { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }, + { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0 }, + { 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0 }, + { 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0 }, + { 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x0 }, + { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0 } +}; + +/*! + @typedef t_benchmarkOp + @abstract Function pointer associated to each benchmark. + */ +typedef long (*t_benchmarkOp)( uint8_t ); + +/*! + @typedef t_timeBenchMarks + @abstract Structure to store results of the execution time of the benchmark. + @field benchmark: function pointer of the benchmark to be executed. + */ +typedef struct +{ + t_benchmarkOp benchmark; /**< Function pointer associated to the benchmark */ + long benchTime; /**< execution time for benchmark 1 in useconds */ + uint16_t numWrites; /**< Number of write cycles of the benchmark */ +} t_benchMarks; + + +// Main LCD objects +// ---------------- +#ifdef _LCD_I2C_ +LiquidCrystal_I2C lcd(0x38); // set the LCD address to 0x20 for a 16 chars and 2 line display +#endif + +#ifdef _LCD_SI2C_ +LiquidCrystal_SI2C lcd(0x4e,2,1,0,4,5,6,7); +#endif + +#ifdef _LCD_4BIT_ +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); +#endif + +#ifdef _LCD_SR_ +LiquidCrystal_SR lcd(8,7,TWO_WIRE); +#endif + +#ifdef _LCD_SR1_ +LiquidCrystal_SR1 lcd(2); +#endif + +#ifdef _LCD_SR3W_ +LiquidCrystal_SR3W lcd(3, 2, 4); +#endif + +// benchMarks definitions +// ---------------------- +extern long benchmark1 ( uint8_t ); +extern long benchmark2 ( uint8_t ); +extern long benchmark3 ( uint8_t ); +extern long benchmark4 ( uint8_t ); + +//! @brief benchmark structure that will be initialised and +static t_benchMarks myBenchMarks[NUM_BENCHMARKS] = +{ + { benchmark1, 0, (LCD_ROWS * LCD_COLUMNS) + 2 }, + { benchmark2, 0, LCD_ROWS * LCD_COLUMNS * 6 * 2 }, + { benchmark3, 0, 40 + 2 }, + { benchmark4, 0, 40 + 2 } +}; + +// Static methods +// -------------- +/*! + @function freeMemory + @abstract Return available RAM memory + @discussion This routine returns the ammount of RAM memory available after + initialising the C runtime. + @param + @return Free RAM available, -1 for non AVR microcontrollers + */ +static int freeMemory ( void ) +{ +#ifdef __AVR__ + int free_memory; + + if((int)__brkval == 0) + free_memory = ((int)&free_memory) - ((int)&__bss_end); + else + free_memory = ((int)&free_memory) - ((int)__brkval); + + return free_memory; +#else + return -1; +#endif + +} + +/*! + @function LCDSetup + @abstract Initialise LCD associated pins and initialise the LCD object + with its geometry. + @discussion Initialise the LCD object and make it ready for operation by + setting up the LCD geometry, i.e. LCD character size. Initialise + and configure all associated control pins such as backlight and + contras pin if necessary. + + @param[in] charBitmapSize: contrasts pin associated to the contrast (should be an + analog pin). 0 if contrast pin is not required. + @param[in] backlight: backlight pin associated to the LCD backlight. + @param[in] cols: number of LCD columns normal values (1, 2, 4) + @param[in] rows: number of LCD rows normal values (8, 16, 20) + */ +static void LCDSetup ( uint8_t contrasPin, uint8_t backlight, uint8_t cols, uint8_t rows ) +{ + // If our setup uses a PWM to control the backlight, configure it + // -------------------------------------------------------------- + if ( contrasPin != 0 ) + { + pinMode ( contrasPin, OUTPUT ); + analogWrite ( contrasPin, CONTRAST ); + } + // Setup backlight pin + /*if ( backlight != 0 ){ + pinMode(backlight, OUTPUT); + digitalWrite(backlight, HIGH); + }*/ + + lcd.begin ( cols, rows ); + lcd.setBacklightPin(3, POSITIVE); + lcd.setBacklight(HIGH); + lcd.clear ( ); +} + + +/*! + @function LCDLoadCharacters + @abstract Loads onto the LCD the character set for the benchmark. + @discussion Loads onto the LCD the character set that will be used throughout + the benchmark. + + @param[in] charBitmapSize: number of characters to load to the LCD. + */ +static void LCDLoadCharacters ( int numChars ) +{ + // Load custom character set into CGRAM + for ( int i = 0; i < numChars; i++ ) + { + lcd.createChar ( i, (uint8_t *)charBitmap[i] ); + } +} + + +// Benchmarks +// ---------- +/*! + @function benchmark1 + @abstract writes to the LCD a full set of characters loaded on the LCD + memory. + @discussion Writes to all the positions of the LCD a fixed pattern from + memory. For every line it writes, it positions the cursor. + The number of writen LCD accesses is: LCD_ROW * LCD_COLUMS + 2. + It returns the cumulative time used by all the iterations. + + @param[in] iterations: number of iterations the benchmark is executed before + returning the time taken by all iterations. + @return The time take to execute iterations number of benchmarks. + */ +long benchmark1 ( uint8_t iterations ) +{ + unsigned long time, totalTime = 0; + int i, j; + + while ( iterations > 0 ) + { + // Clear the LCD + lcd.clear ( ); + + time = micros (); + for ( i = 0; i < LCD_ROWS; i++ ) + { + lcd.setCursor ( 0, i ); + for ( j = 0; j < LCD_COLUMNS; j++ ) + { + lcd.print (char(5)); + } + } + totalTime += ( micros() - time ); + delay ( 200 ); // it doesn't keep up with the LCD refresh rate. + iterations--; + } + return ( totalTime ); +} + +/*! + @function benchmark2 + @abstract writes to the LCD a full set of characters loaded on the LCD + memory one line pixel at the time + @discussion Writes to all the positions of the LCD a fixed pattern from + memory each patern take 6 write operations to the LCD. For every + character it writes it sets the cursor possition. + The number of writen LCD accesses is: LCD_ROW * LCD_COLUMS * 6. + It returns the cumulative time used by all the iterations. + + @param[in] iterations: number of iterations the benchmark is executed before + returning the time taken by all iterations. + @return The time take to execute iterations number of benchmarks. + */ +long benchmark2 ( uint8_t iterations ) +{ + unsigned long time, totalTime = 0; + int i, j, k; + + while ( iterations > 0 ) + { + // Clear the LCD + lcd.clear ( ); + + time = micros (); + + for ( i = 0; i < LCD_ROWS; i++ ) + { + for ( j = 0; j < LCD_COLUMNS; j++ ) + { + for ( k = 0; k <= 5; k++ ) + { + lcd.setCursor ( j, i ); + lcd.print (char(k)); + } + } + } + totalTime += ( micros() - time ); + iterations--; + } + return ( totalTime ); +} + +/*! + @function benchmark3 + @abstract writes to the LCD a full set of characters from memory. + @discussion Writes to all the positions of the LCD a fixed pattern from + RAM. For every line it writes, it positions the cursor. + The number of writen LCD accesses is: LCD_ROW * LCD_COLUMS + 2. + It returns the cumulative time used by all the iterations. + + @param[in] iterations: number of iterations the benchmark is executed before + returning the time taken by all iterations. + @return The time take to execute iterations number of benchmarks. + */ +long benchmark3 ( uint8_t iterations ) +{ + unsigned long time, totalTime = 0; + int i; + + while ( iterations > 0 ) + { + // Clear the LCD + lcd.clear ( ); + + time = micros (); + for ( i = 0; i < LCD_ROWS; i++ ) + { + lcd.setCursor ( 0, i ); + lcd.print ( "####################" ); + } + totalTime += ( micros() - time ); + delay ( 200 ); // it doesn't keep up with the LCD refresh rate. + iterations--; + } + return ( totalTime ); +} + +/*! + @function benchmark4 + @abstract writes to the LCD a full set of characters from memory. + @discussion Writes to all the positions of the LCD a fixed pattern from + flash. For every line it writes, it positions the cursor. + The number of writen LCD accesses is: LCD_ROW * LCD_COLUMS + 2. + It returns the cumulative time used by all the iterations. + + @param[in] iterations: number of iterations the benchmark is executed before + returning the time taken by all iterations. + @return The time take to execute iterations number of benchmarks. + */ +long benchmark4 ( uint8_t iterations ) +{ + unsigned long time, totalTime = 0; + int i; + + while ( iterations > 0 ) + { + // Clear the LCD + lcd.clear ( ); + + time = micros (); + for ( i = 0; i < LCD_ROWS; i++ ) + { + lcd.setCursor ( 0, i ); + lcd.print ( F("####################") ); + } + totalTime += ( micros() - time ); + delay ( 200 ); // it doesn't keep up with the LCD refresh rate. + iterations--; + } + return ( totalTime ); +} + +// Main system setup +// ----------------- +void setup () +{ + Serial.begin ( 57600 ); +#ifdef __AVR__ + Serial.print ( F("Free mem: ") ); + Serial.println ( freeMemory () ); +#endif + + // Initialise the LCD + LCDSetup ( CONTRAST_PIN, BACKLIGHT_PIN, LCD_COLUMNS, LCD_ROWS ); + LCDLoadCharacters ( (sizeof(charBitmap ) / sizeof (charBitmap[0])) ); +} + + +// Main system loop +// ---------------- +void loop () +{ + int i; + + lcd.setCursor ( 0, 0 ); + lcd.clear ( ); + + // Run benchmark + for ( i = 0; i < NUM_BENCHMARKS; i++ ) + { + myBenchMarks[i].benchTime = + (myBenchMarks[i].benchmark (ITERATIONS))/ITERATIONS; + Serial.println (i); + } + + float fAllWrites=0.0; + + for ( i = 0; i < NUM_BENCHMARKS; i++ ) + { + Serial.print ( F("benchmark") ); + Serial.print ( i ); + Serial.print ( F(": ") ); + Serial.print ( myBenchMarks[i].benchTime ); + Serial.print ( F(" us - ") ); + Serial.print ( F(" write: ") ); + Serial.print ( myBenchMarks[i].benchTime / (float)myBenchMarks[i].numWrites ); + Serial.println ( F(" us") ); + fAllWrites += myBenchMarks[i].benchTime / (float)myBenchMarks[i].numWrites; + } + Serial.print( F("avg. write: ") ); + Serial.println( fAllWrites / (float)NUM_BENCHMARKS ); + } \ No newline at end of file diff --git a/libraries/LiquidCrystal/keywords.txt b/libraries/LiquidCrystal/keywords.txt new file mode 100644 index 0000000000000000000000000000000000000000..c13f5ae9a44d1864fe688692d77cdf9f8071880b --- /dev/null +++ b/libraries/LiquidCrystal/keywords.txt @@ -0,0 +1,52 @@ +########################################### +# Syntax Coloring Map For LiquidCrystal_I2C +########################################### + +########################################### +# Datatypes (KEYWORD1) +########################################### + +LiquidCrystal_SR KEYWORD1 +LiquidCrystal_I2C KEYWORD1 +LiquidCrystal_SR3W KEYWORD1 +LiquidCrystal KEYWORD1 +LCD KEYWORD1 + +########################################### +# Methods and Functions (KEYWORD2) +########################################### +begin KEYWORD2 +clear KEYWORD2 +home KEYWORD2 +noDisplay KEYWORD2 +display KEYWORD2 +noBlink KEYWORD2 +blink KEYWORD2 +noCursor KEYWORD2 +cursor KEYWORD2 +scrollDisplayLeft KEYWORD2 +scrollDisplayRight KEYWORD2 +leftToRight KEYWORD2 +rightToLeft KEYWORD2 +moveCursorLeft KEYWORD2 +moveCursorRight KEYWORD2 +autoscroll KEYWORD2 +noAutoscroll KEYWORD2 +createChar KEYWORD2 +setCursor KEYWORD2 +print KEYWORD2 +write KEYWORD2 +println KEYWORD2 +backlight KEYWORD2 +noBacklight KEYWORD2 +on KEYWORD2 +off KEYWORD2 +setBacklightPin KEYWORD2 +setBacklight KEYWORD2 +########################################### +# Constants (LITERAL1) +########################################### +POSITIVE LITERAL1 +NEGATIVE LITERAL1 +BACKLIGHT_ON LITERAL1 +BACKLIGHT_OFF LITERAL1 \ No newline at end of file diff --git a/libraries/LiquidCrystal/thirdparty libraries/.DS_Store b/libraries/LiquidCrystal/thirdparty libraries/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/libraries/LiquidCrystal/thirdparty libraries/.DS_Store differ diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/README.md b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c8d1758406d3ca42f6bc3feed185733ac488fd12 --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/README.md @@ -0,0 +1,16 @@ +SoftI2CMaster +============= + +Software I2C Arduino library + +This is a very fast and light-weight software I2C-master library +written in assembler, which is based on Peter Fleury's software +I2C library http://homepage.hispeed.ch/peterfleury/avr-software.html +. It can use any pins on any AVR chip to drive the SDA and SCL lines. + +It assumes a single master and does not support bus arbitration. It +allows for clock stretching by slave devices and also can detect lock +ups of the I2C bus, i.e., if the SCL line is held low indefinitely. + +Even on 1MHz systems, you can get a transfer speed of 40 kbit/sec, so +you can use it to interface with SMbus devices. \ No newline at end of file diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/SoftI2CMaster.h b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/SoftI2CMaster.h new file mode 100644 index 0000000000000000000000000000000000000000..3ca7cafa658cb018b7948343b66a4e0860106244 --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/SoftI2CMaster.h @@ -0,0 +1,509 @@ +/* Arduino SoftI2C library. + * + * This is a very fast and very light-weight software I2C-master library + * written in assembler. It is based on Peter Fleury's I2C software + * library: http://homepage.hispeed.ch/peterfleury/avr-software.html + * + * + * This Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with the Arduino I2cMaster Library. If not, see + * <http://www.gnu.org/licenses/>. + */ + +/* In order to use the library, you need to define SDA_PIN, SCL_PIN, + * SDA_PORT and SCL_PORT before including this file. Have a look at + * http://www.arduino.cc/en/Reference/PortManipulation for finding out + * which values to use. For example, if you use digital pin 3 for + * SDA and digital pin 13 for SCL you have to use the following + * definitions: + * #define SDA_PIN 3 + * #define SDA_PORT PORTB + * #define SCL_PIN 5 + * #define SCL_PORT PORTB + * + * You can also define the following constants (see also below): + * - I2C_CPUFREQ, when changing CPU clock frequency dynamically + * - I2C_FASTMODE = 1 meaning that the I2C bus allows speeds up to 400 kHz + * - I2C_SLOWMODE = 1 meaning that the I2C bus will allow only up to 25 kHz + * - I2C_NOINTERRUPT = 1 in order to prohibit interrupts while + * communicating (see below). This can be useful if you use the library + * for communicationg with SMbus devices, which have timeouts. + * Note, however, that interrupts are disabledfrom issuing a start condition + * until issuing a stop condition. So use this option with care! + * - I2C_TIMEOUT = 0..10000 mssec in order to return from the I2C functions + * in case of a I2C bus lockup (i.e., SCL constantly low). 0 means no timeout + */ + +/* Changelog: + * Version 1.1: + * - removed I2C_CLOCK_STRETCHING + * - added I2C_TIMEOUT time in msec (0..10000) until timeout or 0 if no timeout + * - changed i2c_init to return true iff both SDA and SCL are high + * - changed interrupt disabling so that the previous IRQ state is retored + * Version 1.0: basic functionality + */ +#include <avr/io.h> +#include <Arduino.h> + +#ifndef _SOFTI2C_H +#define _SOFTI2C_H 1 + +// Init function. Needs to be called once in the beginning. +// Returns false if SDA or SCL are low, which probably means +// a I2C bus lockup or that the lines are not pulled up. +boolean __attribute__ ((noinline)) i2c_init(void); + +// Start transfer function: <addr> is the 8-bit I2C address (including the R/W +// bit). +// Return: true if the slave replies with an "acknowledge", false otherwise +bool __attribute__ ((noinline)) i2c_start(uint8_t addr); + +// Similar to start function, but wait for an ACK! Be careful, this can +// result in an infinite loop! +void __attribute__ ((noinline)) i2c_start_wait(uint8_t addr); + +// Repeated start function: After having claimed the bus with a start condition, +// you can address another or the same chip again without an intervening +// stop condition. +// Return: true if the slave replies with an "acknowledge", false otherwise +bool __attribute__ ((noinline)) i2c_rep_start(uint8_t addr); + +// Issue a stop condition, freeing the bus. +void __attribute__ ((noinline)) i2c_stop(void) asm("ass_i2c_stop"); + +// Write one byte to the slave chip that had been addressed +// by the previous start call. <value> is the byte to be sent. +// Return: true if the slave replies with an "acknowledge", false otherwise +bool __attribute__ ((noinline)) i2c_write(uint8_t value) asm("ass_i2c_write"); + +// Read one byte. If <last> is true, we send a NAK after having received +// the byte in order to terminate the read sequence. +uint8_t __attribute__ ((noinline)) i2c_read(bool last); + +// You can set I2C_CPUFREQ independently of F_CPU if you +// change the CPU frequency on the fly. If do not define it, +// it will use the value of F_CPU +#ifndef I2C_CPUFREQ +#define I2C_CPUFREQ F_CPU +#endif + +// If I2C_FASTMODE is set to 1, then the highest possible frequency below 400kHz +// is selected. Be aware that not all slave chips may be able to deal with that! +#ifndef I2C_FASTMODE +#define I2C_FASTMODE 0 +#endif + +// If I2C_FASTMODE is not defined or defined to be 0, then you can set +// I2C_SLOWMODE to 1. In this case, the I2C frequency will not be higher +// than 25KHz. This could be useful for problematic buses. +#ifndef I2C_SLOWMODE +#define I2C_SLOWMODE 0 +#endif + +// if I2C_NOINTERRUPT is 1, then the I2C routines are not interruptable. +// This is most probably only necessary if you are using a 1MHz system clock, +// you are communicating with a SMBus device, and you want to avoid timeouts. +// Be aware that the interrupt bit is enabled after each call. So the +// I2C functions should not be called in interrupt routines or critical regions. +#ifndef I2C_NOINTERRUPT +#define I2C_NOINTERRUPT 0 +#endif + +// I2C_TIMEOUT can be set to a value between 1 and 10000. +// If it is defined and nonzero, it leads to a timeout if the +// SCL is low longer than I2C_TIMEOUT milliseconds, i.e., max timeout is 10 sec +#ifndef I2C_TIMEOUT +#define I2C_TIMEOUT 0 +#else +#if I2C_TIMEOUT > 10000 +#error I2C_TIMEOUT is too large +#endif +#endif + +#define I2C_TIMEOUT_DELAY_LOOPS (I2C_CPUFREQ/1000UL)*I2C_TIMEOUT/4000UL +#if I2C_TIMEOUT_DELAY_LOOPS < 1 +#define I2C_MAX_STRETCH 1 +#else +#if I2C_TIMEOUT_DELAY_LOOPS > 60000UL +#define I2C_MAX_STRETCH 60000UL +#else +#define I2C_MAX_STRETCH I2C_TIMEOUT_DELAY_LOOPS +#endif +#endif + +#if I2C_FASTMODE +#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/400000L)/2-19)/3) +#else +#if I2C_SLOWMODE +#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/25000L)/2-19)/3) +#else +#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/100000L)/2-19)/3) +#endif +#endif + +// Table of I2C bus speed in kbit/sec: +// CPU clock: 1MHz 2MHz 4MHz 8MHz 16MHz 20MHz +// Fast I2C mode 40 80 150 300 400 400 +// Standard I2C mode 40 80 100 100 100 100 +// Slow I2C mode 25 25 25 25 25 25 + +// constants for reading & writing +#define I2C_READ 1 +#define I2C_WRITE 0 + +// map the IO register back into the IO address space +#define SDA_DDR (_SFR_IO_ADDR(SDA_PORT) - 1) +#define SCL_DDR (_SFR_IO_ADDR(SCL_PORT) - 1) +#define SDA_OUT _SFR_IO_ADDR(SDA_PORT) +#define SCL_OUT _SFR_IO_ADDR(SCL_PORT) +#define SDA_IN (_SFR_IO_ADDR(SDA_PORT) - 2) +#define SCL_IN (_SFR_IO_ADDR(SCL_PORT) - 2) + +#ifndef __tmp_reg__ +#define __tmp_reg__ 0 +#endif + + +// Internal delay functions. +void __attribute__ ((noinline)) i2c_delay_half(void) asm("ass_i2c_delay_half"); +void __attribute__ ((noinline)) i2c_wait_scl_high(void) asm("ass_i2c_wait_scl_high"); + +void i2c_delay_half(void) +{ // function call 3 cycles => 3C +#if I2C_DELAY_COUNTER < 1 + __asm__ __volatile__ (" ret"); + // 7 cycles for call and return +#else + __asm__ __volatile__ + ( + " ldi r25, %[DELAY] ;load delay constant ;; 4C \n\t" + "_Lidelay: \n\t" + " dec r25 ;decrement counter ;; 4C+xC \n\t" + " brne _Lidelay ;;5C+(x-1)2C+xC\n\t" + " ret ;; 9C+(x-1)2C+xC = 7C+xC" + : : [DELAY] "M" I2C_DELAY_COUNTER : "r25"); + // 7 cycles + 3 times x cycles +#endif +} + +void i2c_wait_scl_high(void) +{ +#if I2C_TIMEOUT <= 0 + __asm__ __volatile__ + ("_Li2c_wait_stretch: \n\t" + " sbis %[SCLIN],%[SCLPIN] ;wait for SCL high \n\t" + " rjmp _Li2c_wait_stretch \n\t" + " cln ;signal: no timeout \n\t" + " ret " + : : [SCLIN] "I" (SCL_IN), [SCLPIN] "I" (SCL_PIN)); +#else + __asm__ __volatile__ + ( " ldi r27, %[HISTRETCH] ;load delay counter \n\t" + " ldi r26, %[LOSTRETCH] \n\t" + "_Lwait_stretch: \n\t" + " clr __tmp_reg__ ;do next loop 255 times \n\t" + "_Lwait_stretch_inner_loop: \n\t" + " rcall _Lcheck_scl_level ;call check function ;; 12C \n\t" + " brpl _Lstretch_done ;done if N=0 ;; +1 = 13C\n\t" + " dec __tmp_reg__ ;dec inner loop counter;; +1 = 14C\n\t" + " brne _Lwait_stretch_inner_loop ;; +2 = 16C\n\t" + " sbiw r26,1 ;dec outer loop counter \n\t" + " brne _Lwait_stretch ;continue with outer loop \n\t" + " sen ;timeout -> set N-bit=1 \n\t" + " rjmp _Lwait_return ;and return with N=1\n\t" + "_Lstretch_done: ;SCL=1 sensed \n\t" + " cln ;OK -> clear N-bit \n\t" + " rjmp _Lwait_return ; and return with N=0 \n\t" + + "_Lcheck_scl_level: ;; call = 3C\n\t" + " cln ;; +1C = 4C \n\t" + " sbic %[SCLIN],%[SCLPIN] ;skip if SCL still low ;; +2C = 6C \n\t" + " rjmp _Lscl_high ;; +0C = 6C \n\t" + " sen ;; +1 = 7C\n\t " + "_Lscl_high: " + " nop ;; +1C = 8C \n\t" + " ret ;return N-Bit=1 if low ;; +4 = 12C\n\t" + + "_Lwait_return:" + : : [SCLIN] "I" (SCL_IN), [SCLPIN] "I" (SCL_PIN), + [HISTRETCH] "M" (I2C_MAX_STRETCH>>8), + [LOSTRETCH] "M" (I2C_MAX_STRETCH&0xFF) + : "r26", "r27"); +#endif +} + + +boolean i2c_init(void) +{ + __asm__ __volatile__ + (" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t" + " cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t" + " cbi %[SDAOUT],%[SDAPIN] ;clear SDA output value \n\t" + " cbi %[SCLOUT],%[SCLPIN] ;clear SCL output value \n\t" + " clr r24 ;set return value to false \n\t" + " clr r25 ;set return value to false \n\t" + " sbis %[SDAIN],%[SDAPIN] ;check for SDA high\n\t" + " ret ;if low return with false \n\t" + " sbis %[SCLIN],%[SCLPIN] ;check for SCL high \n\t" + " ret ;if low return with false \n\t" + " ldi r24,1 ;set return value to true \n\t" + " ret " + : : + [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), + [SCLIN] "I" (SCL_IN), [SCLOUT] "I" (SCL_OUT), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), + [SDAIN] "I" (SDA_IN), [SDAOUT] "I" (SDA_OUT)); + return true; +} + +bool i2c_start(uint8_t addr) +{ + __asm__ __volatile__ + ( +#if I2C_NOINTERRUPT + " cli ;clear IRQ bit \n\t" +#endif + " sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t" + " rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t" + " rcall ass_i2c_delay_half ;wait T/2 \n\t" + " rcall ass_i2c_write ;now write address \n\t" + " ret" + : : [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), + [SCLIN] "I" (SCL_IN),[SCLPIN] "I" (SCL_PIN)); + return true; // we never return here! +} + +bool i2c_rep_start(uint8_t addr) +{ + __asm__ __volatile__ + + ( +#if I2C_NOINTERRUPT + " cli \n\t" +#endif + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t" + " rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " rcall ass_i2c_write \n\t" + " ret" + : : [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN),[SCLIN] "I" (SCL_IN), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN)); + return true; // just to fool the compiler +} + +void i2c_start_wait(uint8_t addr) +{ + __asm__ __volatile__ + ( + " push r24 ;save original parameter \n\t" + "_Li2c_start_wait1: \n\t" + " pop r24 ;restore original parameter\n\t" + " push r24 ;and save again \n\t" +#if I2C_NOINTERRUPT + " cli ;disable interrupts \n\t" +#endif + " sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t" + " rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t" + " rcall ass_i2c_delay_half ;delay T/2 \n\t" + " rcall ass_i2c_write ;write address \n\t" + " tst r24 ;if device not busy -> done \n\t" + " brne _Li2c_start_wait_done \n\t" + " rcall ass_i2c_stop ;terminate write & enable IRQ \n\t" + " rjmp _Li2c_start_wait1 ;device busy, poll ack again \n\t" + "_Li2c_start_wait_done: \n\t" + " pop __tmp_reg__ ;pop off orig argument \n\t" + " ret " + : : [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), + [SCLIN] "I" (SCL_IN),[SCLPIN] "I" (SCL_PIN)); +} + +void i2c_stop(void) +{ + __asm__ __volatile__ + ( + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low \n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t" + " rcall ass_i2c_delay_half ;T/2 delay \n\t" + " cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t" + " rcall ass_i2c_delay_half ;T/2 delay \n\t" + " sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t" + " rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t" + " rcall ass_i2c_delay_half \n\t" +#if I2C_NOINTERRUPT + " sei ;enable interrupts again!\n\t" +#endif + : : [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), [SCLIN] "I" (SCL_IN), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN)); +} + +bool i2c_write(uint8_t value) +{ + __asm__ __volatile__ + ( + " sec ;set carry flag \n\t" + " rol r24 ;shift in carry and shift out MSB \n\t" + " rjmp _Li2c_write_first \n\t" + "_Li2c_write_bit:\n\t" + " lsl r24 ;left shift into carry ;; 1C\n\t" + "_Li2c_write_first:\n\t" + " breq _Li2c_get_ack ;jump if TXreg is empty;; +1 = 2C \n\t" + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 4C \n\t" + " nop \n\t" + " nop \n\t" + " nop \n\t" + " brcc _Li2c_write_low ;;+1/+2=5/6C\n\t" + " nop ;; +1 = 7C \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA ;; +2 = 9C \n\t" + " rjmp _Li2c_write_high ;; +2 = 11C \n\t" + "_Li2c_write_low: \n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low ;; +2 = 9C \n\t" + " rjmp _Li2c_write_high ;;+2 = 11C \n\t" + "_Li2c_write_high: \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;;+X = 11C+X\n\t" +#endif + " cbi %[SCLDDR],%[SCLPIN] ;release SCL ;;+2 = 13C+X\n\t" + " cln ;clear N-bit ;;+1 = 14C+X\n\t" + " nop \n\t" + " nop \n\t" + " nop \n\t" + " sbis %[SCLIN],%[SCLPIN] ;check for SCL high ;;+2 = 16C+X\n\t" + " rcall ass_i2c_wait_scl_high \n\t" + " brpl _Ldelay_scl_high ;;+2 = 18C+X\n\t" + "_Li2c_write_return_false: \n\t" + " clr r24 ; return false because of timeout \n\t" + " rjmp _Li2c_write_return \n\t" + "_Ldelay_scl_high: \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;;+X= 18C+2X\n\t" +#endif + " rjmp _Li2c_write_bit \n\t" + " ;; +2 = 20C +2X for one bit-loop \n\t" + "_Li2c_get_ack: \n\t" + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 5C \n\t" + " nop \n\t" + " nop \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA ;;+2 = 7C \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; +X = 7C+X \n\t" +#endif + " clr r25 ;; 17C+2X \n\t" + " clr r24 ;return 0 ;; 14C + X \n\t" + " cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; +2 = 9C+X\n\t" + "_Li2c_ack_wait: \n\t" + " cln ; clear N-bit ;; 10C + X\n\t" + " nop \n\t" + " sbis %[SCLIN],%[SCLPIN] ;wait SCL high ;; 12C + X \n\t" + " rcall ass_i2c_wait_scl_high \n\t" + " brmi _Li2c_write_return_false ;; 13C + X \n\t " + " sbis %[SDAIN],%[SDAPIN] ;if SDA hi -> return 0 ;; 15C + X \n\t" + " ldi r24,1 ;return true ;; 16C + X \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 16C + 2X \n\t" +#endif + "_Li2c_write_return: \n\t" + " nop \n\t " + " nop \n\t " + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t" + " ret \n\t" + " ;; + 4 = 17C + 2X for acknowldge bit" + :: + [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), [SCLIN] "I" (SCL_IN), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), [SDAIN] "I" (SDA_IN)); + return true; // fooling the compiler +} + +uint8_t i2c_read(bool last) +{ + __asm__ __volatile__ + ( + " ldi r23,0x01 \n\t" + "_Li2c_read_bit: \n\t" + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; 2C \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA(prev. ACK);; 4C \n\t" + " nop \n\t" + " nop \n\t" + " nop \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 4C+X \n\t" +#endif + " cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; 6C + X \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 6C + 2X \n\t" +#endif + " cln ; clear N-bit ;; 7C + 2X \n\t" + " nop \n\t " + " nop \n\t " + " nop \n\t " + " sbis %[SCLIN], %[SCLPIN] ;check for SCL high ;; 9C +2X \n\t" + " rcall ass_i2c_wait_scl_high \n\t" + " brmi _Li2c_read_return ;return if timeout ;; 10C + 2X\n\t" + " clc ;clear carry flag ;; 11C + 2X\n\t" + " sbic %[SDAIN],%[SDAPIN] ;if SDA is high ;; 11C + 2X\n\t" + " sec ;set carry flag ;; 12C + 2X\n\t" + " rol r23 ;store bit ;; 13C + 2X\n\t" + " brcc _Li2c_read_bit ;while receiv reg not full \n\t" + " ;; 15C + 2X for one bit loop \n\t" + + "_Li2c_put_ack: \n\t" + " sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; 2C \n\t" + " cpi r24,0 ;; 3C \n\t" + " breq _Li2c_put_ack_low ;if (ack=0) ;; 5C \n\t" + " cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t" + " rjmp _Li2c_put_ack_high \n\t" + "_Li2c_put_ack_low: ;else \n\t" + " sbi %[SDADDR],%[SDAPIN] ;force SDA low ;; 7C \n\t" + "_Li2c_put_ack_high: \n\t" + " nop \n\t " + " nop \n\t " + " nop \n\t " +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 7C + X \n\t" +#endif + " cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; 9C +X \n\t" + " cln ;clear N ;; +1 = 10C\n\t" + " nop \n\t " + " nop \n\t " + " sbis %[SCLIN],%[SCLPIN] ;wait SCL high ;; 12C + X\n\t" + " rcall ass_i2c_wait_scl_high \n\t" +#if I2C_DELAY_COUNTER >= 1 + " rcall ass_i2c_delay_half ;delay T/2 ;; 11C + 2X\n\t" +#endif + "_Li2c_read_return: \n\t" + " nop \n\t " + " nop \n\t " + "sbi %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t" + " mov r24,r23 ;; 12C + 2X \n\t" + " clr r25 ;; 13 C + 2X\n\t" + " ret ;; 17C + X" + :: + [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), [SCLIN] "I" (SCL_IN), + [SDADDR] "I" (SDA_DDR), [SDAPIN] "I" (SDA_PIN), [SDAIN] "I" (SDA_IN) + ); + return ' '; // fool the compiler! +} + +#endif + + + diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/BMA020Soft/BMA020Soft.ino b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/BMA020Soft/BMA020Soft.ino new file mode 100644 index 0000000000000000000000000000000000000000..cb58cd19a9638b7a9537c7a43063f88e9dce1384 --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/BMA020Soft/BMA020Soft.ino @@ -0,0 +1,98 @@ +// Simple sketch to read out BMA020 using SoftI2C + +// Readout BMA020 chip + +// use low processor speed (you have to change the baud rate to 2400!) +// #define I2C_CPUFREQ (F_CPU/8) +#define NO_INTERRUPT 1 +#define I2C_TIMEOUT 1000 + +#define SDA_PORT PORTD +#define SDA_PIN 3 +#define SCL_PORT PORTD +#define SCL_PIN 5 +#include <SoftI2CMaster.h> +#include <avr/io.h> + + +#define BMAADDR 0x70 + +int xval, yval, zval; + +void CPUSlowDown(void) { + // slow down processor by a factor of 8 + CLKPR = _BV(CLKPCE); + CLKPR = _BV(CLKPS1) | _BV(CLKPS0); +} + + +boolean setControlBits(uint8_t cntr) +{ + Serial.println(F("Soft reset")); + if (!i2c_start(BMAADDR | I2C_WRITE)) { + return false; + } + if (!i2c_write(0x0A)) { + return false; + } + if (!i2c_write(cntr)) { + return false; + } + i2c_stop(); + return true; +} + +boolean initBma(void) +{ + if (!setControlBits(B00000010)) return false;; + delay(100); + return true; +} + +int readOneVal(boolean last) +{ + uint8_t msb, lsb; + lsb = i2c_read(false); + msb = i2c_read(last); + if (last) i2c_stop(); + return (int)((msb<<8)|lsb)/64; +} + +boolean readBma(void) +{ + xval = 0xFFFF; + yval = 0xFFFF; + zval = 0xFFFF; + if (!i2c_start(BMAADDR | I2C_WRITE)) return false; + if (!i2c_write(0x02)) return false; + if (!i2c_rep_start(BMAADDR | I2C_READ)) return false; + xval = readOneVal(false); + yval = readOneVal(false); + zval = readOneVal(true); + return true; +} + + + +//------------------------------------------------------------------------------ +void setup(void) { +#if I2C_CPUFREQ == (F_CPU/8) + CPUSlowDown(); +#endif + Serial.begin(19200); // in case of CPU slow down, change to baud rate / 8! + if (!initBma()) { + Serial.println(F("INIT ERROR")); + } + +} + +void loop(void){ + if (!readBma()) Serial.println(F("READ ERROR")); + Serial.print(F("X=")); + Serial.print(xval); + Serial.print(F(" Y=")); + Serial.print(yval); + Serial.print(F(" Z=")); + Serial.println(zval); + delay(300); +} diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/Eeprom24AA1024Soft/Eeprom24AA1024Soft.ino b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/Eeprom24AA1024Soft/Eeprom24AA1024Soft.ino new file mode 100644 index 0000000000000000000000000000000000000000..b2062a14138d85e39dae699ac6e829e71dc51e0f --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/Eeprom24AA1024Soft/Eeprom24AA1024Soft.ino @@ -0,0 +1,298 @@ +// Sketch to explore 24AA1024 using SoftI2C + +#define SDA_PORT PORTD +#define SDA_PIN 3 +#define SCL_PORT PORTD +#define SCL_PIN 5 +#define I2C_FASTMODE 0 +// #define I2C_TIMEOUT 10 // timeout after 10 msec +// #define I1C_NOINTERRUPT 1 // no interrupts +// #define I2C_CPUFREQ (F_CPU/8) // slow down CPU frequency +#include <SoftI2CMaster.h> + +#define EEPROMADDR 0xA6 // set by jumper +#define MAXADDR 0x1FFFF +#define MAXTESTADDR 0x03FFF + +void CPUSlowDown(void) { + // slow down processor by a factor of 8 + CLKPR = _BV(CLKPCE); + CLKPR = _BV(CLKPS1) | _BV(CLKPS0); +} + + +//------------------------------------------------------------------------------ +/* + * read one byte from address + */ +boolean readEEPROM(unsigned long address, uint8_t *byte) { + // issue a start condition, send device address and write direction bit + if (!i2c_start(EEPROMADDR | I2C_WRITE | (address&0x10000 ? 8 : 0) )) return false; + + // send the address + if (!i2c_write((address>>8)&0xFF)) return false; + if (!i2c_write(address&0xFF)) return false; + + // issue a repeated start condition, send device address and read direction bit + if (!i2c_rep_start(EEPROMADDR | I2C_READ | (address&0x10000 ? 8 : 0) ))return false; + + *byte = i2c_read(true); + + i2c_stop(); + return true; +} +//------------------------------------------------------------------------------ +/* + *burst read + */ +boolean readBurstEEPROM(unsigned long start, unsigned long stop) { + // does not handle the transition from 0x0FFFF to 0x10000 + // since we only use it for performance evaluation, we do not care! + unsigned long addr = start; + uint8_t byte; + // issue a start condition, send device address and write direction bit + if (!i2c_start(EEPROMADDR | I2C_WRITE | (addr&0x10000 ? 8 : 0) )) return false; + + // send the address + if (!i2c_write((addr>>8)&0xFF)) return false; + if (!i2c_write(addr&0xFF)) return false; + + // issue a repeated start condition, send device address and read direction bit + if (!i2c_rep_start(EEPROMADDR | I2C_READ | (addr&0x10000 ? 8 : 0) ))return false; + addr++; + while (addr++ < stop) byte = i2c_read(false); + byte = i2c_read(true); + i2c_stop(); + return true; +} + + +//------------------------------------------------------------------------------ + +/* + * write 1 byte to 'address' in eeprom + */ +boolean writeEEPROM(long unsigned address, uint8_t byte) { + // issue a start condition, send device address and write direction bit + if (!i2c_start(EEPROMADDR | I2C_WRITE | (address&0x10000 ? 8 : 0))) return false; + + // send the address + if (!i2c_write((address>>8)&0xFF)) return false; + if (!i2c_write(address&0xFF)) return false; + + + // send data to EEPROM + if (!i2c_write(byte)) return false; + + // issue a stop condition + i2c_stop(); + + delay(6); + + return true; +} + +//------------------------------------------------------------------------------ +/* + * delete eeprom + */ +boolean deleteEEPROM(long unsigned from, unsigned long to, uint8_t byte, + boolean poll) { + + unsigned long tempto, i; + boolean firstpage = true; + + while (from <= to) { + tempto = ((from/128)+1)*128-1; + if (tempto > to) tempto = to; + if (firstpage || !poll) { + if (!i2c_start(EEPROMADDR | I2C_WRITE | (from&0x10000 ? 8 : 0))) + return false; + } else i2c_start_wait(EEPROMADDR | I2C_WRITE | (from&0x10000 ? 8 : 0)); + // send the address + if (!i2c_write((from>>8)&0xFF)) return false; + if (!i2c_write(from&0xFF)) return false; + + + // send data to EEPROM + for (i=from; i<=tempto; i++) + if (!i2c_write(byte)) return false; + // issue a stop condition + i2c_stop(); + + // wait for ack again + if (!poll) delay(6); + + from = tempto+1; + firstpage = false; + } + return true; +} + +//------------------------------------------------------------------------------ +boolean performanceTest() { + unsigned long eeaddr; + unsigned long startmicros, endmicros; + int avgtime; + boolean OK = true; + uint8_t byte; + + Serial.println(F("\nPerformance test:")); + + Serial.println(F("Sequential reads ...")); + startmicros = micros(); + OK &= readBurstEEPROM(0,MAXTESTADDR); + endmicros = micros(); + Serial.print(F("Time: ")); + avgtime = (endmicros-startmicros)/(MAXTESTADDR+1); + Serial.print(avgtime); + Serial.println(F(" micro secs/byte")); + + Serial.println(F("Random reads ...")); + startmicros = micros(); + for (eeaddr = 0; eeaddr <= MAXTESTADDR; eeaddr++) + OK &= readEEPROM(eeaddr,&byte); + endmicros = micros(); + Serial.print(F("Time: ")); + avgtime = (endmicros-startmicros)/(MAXTESTADDR+1); + Serial.print(avgtime); + Serial.println(F(" micro secs/byte")); + + Serial.println(F("Page writes with wait ...")); + startmicros = micros(); + OK &= deleteEEPROM(0,MAXTESTADDR,0xFF,false); + endmicros = micros(); + Serial.print(F("Time: ")); + avgtime = (endmicros-startmicros)/(MAXTESTADDR+1); + Serial.print(avgtime); + Serial.println(F(" micro secs/byte")); + + Serial.println(F("Page writes with poll ...")); + startmicros = micros(); + OK &= deleteEEPROM(0,MAXTESTADDR,0xFF,true); + endmicros = micros(); + Serial.print(F("Time: ")); + avgtime = (endmicros-startmicros)/(MAXTESTADDR+1); + Serial.print(avgtime); + Serial.println(F(" micro secs/byte")); + + return OK; +} +//------------------------------------------------------------------------------ + +unsigned long parseHex() { + unsigned long result = 0L; + char byte = '\0'; + + // while (hexdigit(byte)) { + while (byte != '\r' && byte != '#') { + while (!Serial.available()); + byte = Serial.read(); + // if (!hexdigit(byte)) break; + if (byte == '\r' || byte == '#') break; + if (byte >= 'a' && byte <= 'f') + byte = byte -'a' + 'A'; + if ((byte >= '0' && byte <= '9') || + (byte >= 'A' && byte <= 'F')) { + Serial.print(byte); + if (byte >= '0' && byte <= '9') byte = byte - '0'; + else byte = byte - 'A' + 10; + result = result * 16; + result = result + byte; + } + } + Serial.println(); + return result; +} + +void help (void) { + Serial.println(); + Serial.println(F("r - read byte from address")); + Serial.println(F("w - write byte to address")); + Serial.println(F("d - delete from start address to end address")); + Serial.println(F("l - list memory range")); + Serial.println(F("p - test performance")); + Serial.println(F("h - help message")); + Serial.println(F("Finish all numeric inputs with '#'")); +} + +//------------------------------------------------------------------------------ + + + +void setup(void) { +#if I2C_CPUFREQ == (F_CPU/8) + CPUSlowDown(); +#endif + + Serial.begin(19200); + Serial.println(F("\n\nTest program for EEPROM 24AA1024")); + help(); +} + + +void loop(void) { + char cmd; + uint8_t byte; + boolean noterror; + unsigned long addr, toaddr; + + while (!Serial.available()); + cmd = Serial.read(); + switch (cmd) { + case 'r': Serial.print(F("Read from addr: ")); + addr = parseHex(); + Serial.println(F("Reading...")); + noterror = readEEPROM(addr,&byte); + Serial.print(addr,HEX); + Serial.print(F(": ")); + Serial.println(byte,HEX); + if (!noterror) Serial.println(F("Error while reading")); + break; + case 'w': + Serial.print(F("Write to addr: ")); + addr = parseHex(); + Serial.print(F("Value: ")); + byte = parseHex(); + Serial.println(F("Writing...")); + noterror = writeEEPROM(addr,byte); + if (!noterror) Serial.println(F("Error while reading")); + break; + case 'd': + Serial.print(F("Delete from addr: ")); + addr = parseHex(); + Serial.print(F("to addr: ")); + toaddr = parseHex(); + Serial.print(F("Value: ")); + byte = parseHex(); + Serial.print(F("Deleting ... ")); + noterror = deleteEEPROM(addr,toaddr,byte,false); + Serial.println(F("...done")); + if (!noterror) Serial.println(F("Error while deleting")); + break; + case 'l': + Serial.print(F("List from addr: ")); + addr = parseHex(); + Serial.print(F("to addr: ")); + toaddr = parseHex(); + while (addr <= toaddr) { + noterror = readEEPROM(addr,&byte); + Serial.print(addr,HEX); + Serial.print(F(": ")); + Serial.println(byte,HEX); + if (!noterror) Serial.println(F("Error while reading")); + addr++; + } + case 'p': + noterror = performanceTest(); + if (!noterror) Serial.println(F("Error while executing performance test")); + break; + case 'h': + help(); + break; + default: + Serial.println(F("Unknown command")); + Serial.println(); + help(); + } +} diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/I2CScanSoft/I2CScanSoft.ino b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/I2CScanSoft/I2CScanSoft.ino new file mode 100644 index 0000000000000000000000000000000000000000..4f411e088d52638fd091724dfe25857736186225 --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/I2CScanSoft/I2CScanSoft.ino @@ -0,0 +1,91 @@ +// Scan I2C bus for device responses + +#define SDA_PORT PORTD +#define SDA_PIN 3 +#define SCL_PORT PORTD +#define SCL_PIN 5 +#define I2C_TIMEOUT 100 +#define I2C_NOINTERRUPT 0 +#define I2C_SLOWMODE 1 +#define FAC 1 +#define I2C_CPUFREQ (F_CPU/FAC) + + +/* Corresponds to A4/A5 - the hardware I2C pins on Arduinos +#define SDA_PORT PORTC +#define SDA_PIN 4 +#define SCL_PORT PORTC +#define SCL_PIN 5 +#define I2C_FASTMODE 1 +*/ + +#include <SoftI2CMaster.h> +#include <avr/io.h> + +//------------------------------------------------------------------------------ +void CPUSlowDown(int fac) { + // slow down processor by a fac + CLKPR = _BV(CLKPCE); + CLKPR = _BV(CLKPS1) | _BV(CLKPS0); +} + + + +void setup(void) { +#if FAC != 1 + CPUSlowDown(FAC); +#endif + + Serial.begin(19200); // change baudrate to 2400 on terminal when low CPU freq! + Serial.println(F("Intializing ...")); + Serial.print("I2C delay counter: "); + Serial.println(I2C_DELAY_COUNTER); + if (!i2c_init()) + Serial.println(F("Initialization error. SDA or SCL are low")); + else + Serial.println(F("...done")); +} + +void loop(void) +{ + uint8_t add = 0; + int found = false; + Serial.println("Scanning ..."); + + Serial.println(" 8-bit 7-bit addr"); + // try read + do { + if (i2c_start(add | I2C_READ)) { + found = true; + i2c_read(true); + i2c_stop(); + Serial.print("Read: 0x"); + if (add < 0x0F) Serial.print(0, HEX); + Serial.print(add+I2C_READ, HEX); + Serial.print(" 0x"); + if (add>>1 < 0x0F) Serial.print(0, HEX); + Serial.println(add>>1, HEX); + } else i2c_stop(); + add += 2; + } while (add); + + // try write + add = 0; + do { + if (i2c_start(add | I2C_WRITE)) { + found = true; + i2c_stop(); + Serial.print("Write: 0x"); + if (add < 0x0F) Serial.print(0, HEX); + Serial.print(add+I2C_WRITE, HEX); + Serial.print(" 0x"); + if (add>>1 < 0x0F) Serial.print(0, HEX); + Serial.println(add>>1, HEX); + } else i2c_stop(); + i2c_stop(); + add += 2; + } while (add); + if (!found) Serial.println(F("No I2C device found.")); + Serial.println("Done\n\n"); + delay(1000/FAC); +} diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/MLX90614Soft/MLX90614Soft.ino b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/MLX90614Soft/MLX90614Soft.ino new file mode 100644 index 0000000000000000000000000000000000000000..879d28fbc3eb99c6852ad2b1e64d54301593c4e2 --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/MLX90614Soft/MLX90614Soft.ino @@ -0,0 +1,60 @@ +// reads out the MLX90614 infrared thermometer + +#include <Arduino.h> +#define SDA_PORT PORTD +#define SDA_PIN 3 +#define SCL_PORT PORTD +#define SCL_PIN 5 +#include <SoftI2CMaster.h> + + + +#define DEVICE (0x5A<<1) + + + +void setup(){ +#if (__AVR_ARCH__ == 5) // means ATMEGA + Serial.begin(19200); + Serial.println("Setup..."); +#endif + i2c_init(); +} + +void loop(){ + int dev = 0x5A<<1; + int data_low = 0; + int data_high = 0; + int pec = 0; + + i2c_start(dev+I2C_WRITE); + i2c_write(0x07); + // read + i2c_rep_start(dev+I2C_READ); + data_low = i2c_read(false); //Read 1 byte and then send ack + data_high = i2c_read(false); //Read 1 byte and then send ack + pec = i2c_read(true); + i2c_stop(); + + //This converts high and low bytes together and processes temperature, MSB is a error bit and is ignored for temps + double tempFactor = 0.02; // 0.02 degrees per LSB (measurement resolution of the MLX90614) + double tempData = 0x0000; // zero out the data + int frac; // data past the decimal point + + // This masks off the error bit of the high byte, then moves it left 8 bits and adds the low byte. + tempData = (double)(((data_high & 0x007F) << 8) + data_low); + tempData = (tempData * tempFactor)-0.01; + + float celcius = tempData - 273.15; + float fahrenheit = (celcius*1.8) + 32; + +#if (__AVR_ARCH__ == 5) // means ATMEGA + Serial.print("Celcius: "); + Serial.println(celcius); + + Serial.print("Fahrenheit: "); + Serial.println(fahrenheit); +#endif + + delay(1000); // wait a second before printing again +} diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/TSL2561Soft/TSL2561Soft.h b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/TSL2561Soft/TSL2561Soft.h new file mode 100644 index 0000000000000000000000000000000000000000..e9cd1759adf0897efdab0b9e3fec8d9b44eb80fc --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/TSL2561Soft/TSL2561Soft.h @@ -0,0 +1,53 @@ +#ifndef _TSL2561_H_ +#define _TSL2561_H_ + +#define TSL2561_VISIBLE 2 // channel 0 - channel 1 +#define TSL2561_INFRARED 1 // channel 1 +#define TSL2561_FULLSPECTRUM 0 // channel 0 + +#define TSL2561_LUX_LUXSCALE (14) // Scale by 2^14 +#define TSL2561_LUX_RATIOSCALE (9) // Scale ratio by 2^9 +#define TSL2561_LUX_CHSCALE (10) // Scale channel values by 2^10 +#define TSL2561_LUX_CHSCALE_TINT0 (0x7517) // 322/11 * 2^TSL2561_LUX_CHSCALE +#define TSL2561_LUX_CHSCALE_TINT1 (0x0FE7) // 322/81 * 2^TSL2561_LUX_CHSCALE + +// T, FN and CL package values +#define TSL2561_LUX_K1T (0x0040) // 0.125 * 2^RATIO_SCALE +#define TSL2561_LUX_B1T (0x01f2) // 0.0304 * 2^LUX_SCALE +#define TSL2561_LUX_M1T (0x01be) // 0.0272 * 2^LUX_SCALE +#define TSL2561_LUX_K2T (0x0080) // 0.250 * 2^RATIO_SCALE +#define TSL2561_LUX_B2T (0x0214) // 0.0325 * 2^LUX_SCALE +#define TSL2561_LUX_M2T (0x02d1) // 0.0440 * 2^LUX_SCALE +#define TSL2561_LUX_K3T (0x00c0) // 0.375 * 2^RATIO_SCALE +#define TSL2561_LUX_B3T (0x023f) // 0.0351 * 2^LUX_SCALE +#define TSL2561_LUX_M3T (0x037b) // 0.0544 * 2^LUX_SCALE +#define TSL2561_LUX_K4T (0x0100) // 0.50 * 2^RATIO_SCALE +#define TSL2561_LUX_B4T (0x0270) // 0.0381 * 2^LUX_SCALE +#define TSL2561_LUX_M4T (0x03fe) // 0.0624 * 2^LUX_SCALE +#define TSL2561_LUX_K5T (0x0138) // 0.61 * 2^RATIO_SCALE +#define TSL2561_LUX_B5T (0x016f) // 0.0224 * 2^LUX_SCALE +#define TSL2561_LUX_M5T (0x01fc) // 0.0310 * 2^LUX_SCALE +#define TSL2561_LUX_K6T (0x019a) // 0.80 * 2^RATIO_SCALE +#define TSL2561_LUX_B6T (0x00d2) // 0.0128 * 2^LUX_SCALE +#define TSL2561_LUX_M6T (0x00fb) // 0.0153 * 2^LUX_SCALE +#define TSL2561_LUX_K7T (0x029a) // 1.3 * 2^RATIO_SCALE +#define TSL2561_LUX_B7T (0x0018) // 0.00146 * 2^LUX_SCALE +#define TSL2561_LUX_M7T (0x0012) // 0.00112 * 2^LUX_SCALE +#define TSL2561_LUX_K8T (0x029a) // 1.3 * 2^RATIO_SCALE +#define TSL2561_LUX_B8T (0x0000) // 0.000 * 2^LUX_SCALE +#define TSL2561_LUX_M8T (0x0000) // 0.000 * 2^LUX_SCALE + +// Auto-gain thresholds +#define TSL2561_AGC_THI_13MS (4850) // Max value at Ti 13ms = 5047 +#define TSL2561_AGC_TLO_13MS (100) +#define TSL2561_AGC_THI_101MS (36000) // Max value at Ti 101ms = 37177 +#define TSL2561_AGC_TLO_101MS (200) +#define TSL2561_AGC_THI_402MS (63000) // Max value at Ti 402ms = 65535 +#define TSL2561_AGC_TLO_402MS (500) + +// Clipping thresholds +#define TSL2561_CLIPPING_13MS (4900) +#define TSL2561_CLIPPING_101MS (37000) +#define TSL2561_CLIPPING_402MS (65000) + +#endif diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/TSL2561Soft/TSL2561Soft.ino b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/TSL2561Soft/TSL2561Soft.ino new file mode 100644 index 0000000000000000000000000000000000000000..cacef37e0e522808bcf1b506965d7e1d26bb3a7c --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/TSL2561Soft/TSL2561Soft.ino @@ -0,0 +1,100 @@ +// Sketch to explore the luminosity sensor TSL2561 (breakout board by Adafruit) + +#define SDA_PORT PORTD +#define SDA_PIN 3 +#define SCL_PORT PORTD +#define SCL_PIN 5 + +#include <SoftI2CMaster.h> +#include "TSL2561Soft.h" + +#define ADDR 0x72 + +//------------------------------------------------------------------------------ +unsigned long computeLux(unsigned long channel0, unsigned long channel1){ + + /* Make sure the sensor isn't saturated! */ + uint16_t clipThreshold = TSL2561_CLIPPING_402MS;; + + /* Return 0 lux if the sensor is saturated */ + if ((channel0 > clipThreshold) || (channel1 > clipThreshold)) + { + Serial.println(F("Sensor is saturated")); + return 32000; + } + + /* Find the ratio of the channel values (Channel1/Channel0) */ + unsigned long ratio1 = 0; + if (channel0 != 0) ratio1 = (channel1 << (TSL2561_LUX_RATIOSCALE+1)) / channel0; + + /* round the ratio value */ + unsigned long ratio = (ratio1 + 1) >> 1; + + unsigned int b, m; + + if ((ratio >= 0) && (ratio <= TSL2561_LUX_K1T)) + {b=TSL2561_LUX_B1T; m=TSL2561_LUX_M1T;} + else if (ratio <= TSL2561_LUX_K2T) + {b=TSL2561_LUX_B2T; m=TSL2561_LUX_M2T;} + else if (ratio <= TSL2561_LUX_K3T) + {b=TSL2561_LUX_B3T; m=TSL2561_LUX_M3T;} + else if (ratio <= TSL2561_LUX_K4T) + {b=TSL2561_LUX_B4T; m=TSL2561_LUX_M4T;} + else if (ratio <= TSL2561_LUX_K5T) + {b=TSL2561_LUX_B5T; m=TSL2561_LUX_M5T;} + else if (ratio <= TSL2561_LUX_K6T) + {b=TSL2561_LUX_B6T; m=TSL2561_LUX_M6T;} + else if (ratio <= TSL2561_LUX_K7T) + {b=TSL2561_LUX_B7T; m=TSL2561_LUX_M7T;} + else if (ratio > TSL2561_LUX_K8T) + {b=TSL2561_LUX_B8T; m=TSL2561_LUX_M8T;} + + unsigned long temp; + temp = ((channel0 * b) - (channel1 * m)); + + /* Do not allow negative lux value */ + if (temp < 0) temp = 0; + + /* Round lsb (2^(LUX_SCALE-1)) */ + temp += (1 << (TSL2561_LUX_LUXSCALE-1)); + + /* Strip off fractional portion */ + uint32_t lux = temp >> TSL2561_LUX_LUXSCALE; + + return lux; +} + +void setup(void) { + + Serial.begin(19200); + Serial.println("Initializing ..."); + i2c_init(); + + if (!i2c_start(ADDR | I2C_WRITE)) Serial.println(F("Device does not respond")); + if (!i2c_write(0x80)) Serial.println(F("Cannot address reg 0")); + if (!i2c_write(0x03)) Serial.println(F("Cannot wake up")); + i2c_stop(); +} + +void loop (void) { + unsigned int low0, high0, low1, high1; + unsigned int chan0, chan1; + unsigned int lux; + + delay(1000); + i2c_start(ADDR | I2C_WRITE); + i2c_write(0x8C); + i2c_rep_start(ADDR | I2C_READ); + low0 = i2c_read(false); + high0 = i2c_read(false); + low1 = i2c_read(false); + high1 = i2c_read(true); + i2c_stop(); + Serial.print(F("Raw values: chan0=")); + Serial.print(chan0=(low0+(high0<<8))); + Serial.print(F(" / chan1=")); + Serial.println(chan1=(low1+(high1<<8))); + lux = computeLux(chan0,chan1); + Serial.print(F("Lux value=")); + Serial.println(lux); +} diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/stretchTest/stretchTest.ino b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/stretchTest/stretchTest.ino new file mode 100644 index 0000000000000000000000000000000000000000..b9c0c189b9002713b89c2134f214676c0f2f31ff --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/examples/stretchTest/stretchTest.ino @@ -0,0 +1,52 @@ +// This is a short sketch that stretches the low pulse on an I2C bus +// in order to test the timeout feature. +// Put any Arduino and I2C device, e.g. a memory chip, as usual on a breadboard, +// then use another Arduino and flash this program into it. Connect the +// pin 5 (of PORTD) with the SCL line and verify on the scope that the +// low period is indeed stretched. + +#include <avr/io.h> + +#define SCL_PORT PORTD +#define SCL_PIN 5 + +#define DELAY 8 // strech SCL low for that many milli seconds + +#define SCL_DDR (_SFR_IO_ADDR(SCL_PORT) - 1) +#define SCL_OUT _SFR_IO_ADDR(SCL_PORT) +#define SCL_IN (_SFR_IO_ADDR(SCL_PORT) - 2) + +void initScl(void) { + asm volatile + (" cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t" + " cbi %[SCLOUT],%[SCLPIN] ;clear SCL output value \n\t" + :: [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), [SCLOUT] "I" (SCL_OUT)); +} + +void grabScl(void) { + asm volatile + ("_L_wait: \n\t" + " sbic %[SCLIN],%[SCLPIN] \n\t" + " rjmp _L_wait \n\t" + " sbi %[SCLDDR],%[SCLPIN]" + ::[SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN), [SCLIN] "I" (SCL_IN)); +} + +void releaseScl(void) { + asm volatile + (" cbi %[SCLDDR],%[SCLPIN] \n\t" + :: [SCLDDR] "I" (SCL_DDR), [SCLPIN] "I" (SCL_PIN)); +} + +void setup(void) +{ + Serial.begin(19200); + Serial.println("Intializing ..."); + initScl(); +} + +void loop(void) { + grabScl(); + delay(DELAY); + releaseScl(); +} diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/license.txt b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/license.txt new file mode 100644 index 0000000000000000000000000000000000000000..4bbfa3948ec7706cdd79887d6d1b0421dce011b6 --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster/license.txt @@ -0,0 +1,25 @@ +Software License Agreement (BSD License) + +Copyright (c) 2012, Adafruit Industries. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. +3. Neither the name of the copyright holders nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster.cpp b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fecd8c0519090cd38fbd57f43a9b9c2b7f1d0432 --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster.cpp @@ -0,0 +1,328 @@ +/* + * SoftI2CMaster.cpp -- Multi-instance software I2C Master library + * + * + * 2010-12 Tod E. Kurt, http://todbot.com/blog/ + * + * This code takes some tricks from: + * http://codinglab.blogspot.com/2008/10/i2c-on-avr-using-bit-banging.html + * + * 2014, by Testato: update library and examples for follow Wire’s API of Arduino IDE 1.x + * + */ + +#if (ARDUINO >= 100) +#include <Arduino.h> +#else +#include <WProgram.h> +#endif + +#include "SoftI2CMaster.h" + +#include <util/delay.h> +#include <string.h> + +#define i2cbitdelay 50 + +#define I2C_ACK 1 +#define I2C_NAK 0 + + +#define i2c_scl_release() \ + *_sclDirReg &=~ _sclBitMask +#define i2c_sda_release() \ + *_sdaDirReg &=~ _sdaBitMask + +// sets SCL low and drives output +#define i2c_scl_lo() \ + *_sclPortReg &=~ _sclBitMask; \ + *_sclDirReg |= _sclBitMask; + +// sets SDA low and drives output +#define i2c_sda_lo() \ + *_sdaPortReg &=~ _sdaBitMask; \ + *_sdaDirReg |= _sdaBitMask; + +// set SCL high and to input (releases pin) (i.e. change to input,turnon pullup) +#define i2c_scl_hi() \ + *_sclDirReg &=~ _sclBitMask; \ + if(usePullups) { *_sclPortReg |= _sclBitMask; } + +// set SDA high and to input (releases pin) (i.e. change to input,turnon pullup) +#define i2c_sda_hi() \ + *_sdaDirReg &=~ _sdaBitMask; \ + if(usePullups) { *_sdaPortReg |= _sdaBitMask; } + + +// +// Constructor +// +SoftI2CMaster::SoftI2CMaster() +{ + // do nothing, use setPins() later +} +// +SoftI2CMaster::SoftI2CMaster(uint8_t sclPin, uint8_t sdaPin) +{ + setPins(sclPin, sdaPin, true); + i2c_init(); +} + +// +SoftI2CMaster::SoftI2CMaster(uint8_t sclPin, uint8_t sdaPin, uint8_t pullups) +{ + setPins(sclPin, sdaPin, pullups); + i2c_init(); +} + +// +// Turn Arduino pin numbers into PORTx, DDRx, and PINx +// +void SoftI2CMaster::setPins(uint8_t sclPin, uint8_t sdaPin, uint8_t pullups) +{ + uint8_t port; + + usePullups = pullups; + + _sclPin = sclPin; + _sdaPin = sdaPin; + + _sclBitMask = digitalPinToBitMask(sclPin); + _sdaBitMask = digitalPinToBitMask(sdaPin); + + port = digitalPinToPort(sclPin); + _sclPortReg = portOutputRegister(port); + _sclDirReg = portModeRegister(port); + + port = digitalPinToPort(sdaPin); + _sdaPortReg = portOutputRegister(port); + _sdaDirReg = portModeRegister(port); + +} + +// +// +// +uint8_t SoftI2CMaster::beginTransmission(uint8_t address) +{ + i2c_start(); + uint8_t rc = i2c_write((address<<1) | 0); // clr read bit + return rc; +} + +// +uint8_t SoftI2CMaster::requestFrom(uint8_t address) +{ + i2c_start(); + uint8_t rc = i2c_write((address<<1) | 1); // set read bit + return rc; +} +// +uint8_t SoftI2CMaster::requestFrom(int address) +{ + return requestFrom( (uint8_t) address); +} + +// +uint8_t SoftI2CMaster::beginTransmission(int address) +{ + return beginTransmission((uint8_t)address); +} + +// +// +// +uint8_t SoftI2CMaster::endTransmission(void) +{ + i2c_stop(); + //return ret; // FIXME + return 0; +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +uint8_t SoftI2CMaster::write(uint8_t data) +{ + return i2c_write(data); +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +void SoftI2CMaster::write(uint8_t* data, uint8_t quantity) +{ + for(uint8_t i = 0; i < quantity; ++i){ + write(data[i]); + } +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +void SoftI2CMaster::write(char* data) +{ + write((uint8_t*)data, strlen(data)); +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +void SoftI2CMaster::write(int data) +{ + write((uint8_t)data); +} + +//-------------------------------------------------------------------- + + +void SoftI2CMaster::i2c_writebit( uint8_t c ) +{ + if ( c > 0 ) { + i2c_sda_hi(); + } else { + i2c_sda_lo(); + } + + i2c_scl_hi(); + _delay_us(i2cbitdelay); + + i2c_scl_lo(); + _delay_us(i2cbitdelay); + + if ( c > 0 ) { + i2c_sda_lo(); + } + _delay_us(i2cbitdelay); +} + +// +uint8_t SoftI2CMaster::i2c_readbit(void) +{ + i2c_sda_hi(); + i2c_scl_hi(); + _delay_us(i2cbitdelay); + + uint8_t port = digitalPinToPort(_sdaPin); + volatile uint8_t* pinReg = portInputRegister(port); + uint8_t c = *pinReg; // I2C_PIN; + + i2c_scl_lo(); + _delay_us(i2cbitdelay); + + return ( c & _sdaBitMask) ? 1 : 0; +} + +// Inits bitbanging port, must be called before using the functions below +// +void SoftI2CMaster::i2c_init(void) +{ + //I2C_PORT &=~ (_BV( I2C_SDA ) | _BV( I2C_SCL )); + //*_sclPortReg &=~ (_sdaBitMask | _sclBitMask); + i2c_sda_hi(); + i2c_scl_hi(); + + _delay_us(i2cbitdelay); +} + +// Send a START Condition +// +void SoftI2CMaster::i2c_start(void) +{ + // set both to high at the same time + //I2C_DDR &=~ (_BV( I2C_SDA ) | _BV( I2C_SCL )); + //*_sclDirReg &=~ (_sdaBitMask | _sclBitMask); + i2c_sda_hi(); + i2c_scl_hi(); + + _delay_us(i2cbitdelay); + + i2c_sda_lo(); + _delay_us(i2cbitdelay); + + i2c_scl_lo(); + _delay_us(i2cbitdelay); +} + +void SoftI2CMaster::i2c_repstart(void) +{ + // set both to high at the same time (releases drive on both lines) + //I2C_DDR &=~ (_BV( I2C_SDA ) | _BV( I2C_SCL )); + //*_sclDirReg &=~ (_sdaBitMask | _sclBitMask); + i2c_sda_hi(); + i2c_scl_hi(); + + i2c_scl_lo(); // force SCL low + _delay_us(i2cbitdelay); + + i2c_sda_release(); // release SDA + _delay_us(i2cbitdelay); + + i2c_scl_release(); // release SCL + _delay_us(i2cbitdelay); + + i2c_sda_lo(); // force SDA low + _delay_us(i2cbitdelay); +} + +// Send a STOP Condition +// +void SoftI2CMaster::i2c_stop(void) +{ + i2c_scl_hi(); + _delay_us(i2cbitdelay); + + i2c_sda_hi(); + _delay_us(i2cbitdelay); +} + +// write a byte to the I2C slave device +// +uint8_t SoftI2CMaster::i2c_write( uint8_t c ) +{ + for ( uint8_t i=0;i<8;i++) { + i2c_writebit( c & 128 ); + c<<=1; + } + + return i2c_readbit(); +} + +// read a byte from the I2C slave device +// +uint8_t SoftI2CMaster::i2c_read( uint8_t ack ) +{ + uint8_t res = 0; + + for ( uint8_t i=0;i<8;i++) { + res <<= 1; + res |= i2c_readbit(); + } + + if ( ack ) + i2c_writebit( 0 ); + else + i2c_writebit( 1 ); + + _delay_us(i2cbitdelay); + + return res; +} + +// FIXME: this isn't right, surely +uint8_t SoftI2CMaster::read( uint8_t ack ) +{ + return i2c_read( ack ); +} + +// +uint8_t SoftI2CMaster::read() +{ + return i2c_read( I2C_ACK ); +} + +// +uint8_t SoftI2CMaster::readLast() +{ + return i2c_read( I2C_NAK ); +} diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster.h b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster.h new file mode 100644 index 0000000000000000000000000000000000000000..5ee929d0acc2a5d1318947045add83b2ba001e4e --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster.h @@ -0,0 +1,68 @@ +/* + * SoftI2CMaster.h -- Multi-instance software I2C Master library + * + * 2010-2012 Tod E. Kurt, http://todbot.com/blog/ + * 2014, by Testato: update library and examples for follow Wire’s API of Arduino IDE 1.x + * + */ + +#ifndef SoftI2CMaster_h +#define SoftI2CMaster_h + +#include <inttypes.h> + +#define _SOFTI2CMASTER_VERSION 13 // software version of this library + + +class SoftI2CMaster +{ + +private: + // per object data + uint8_t _sclPin; + uint8_t _sdaPin; + uint8_t _sclBitMask; + uint8_t _sdaBitMask; + volatile uint8_t *_sclPortReg; + volatile uint8_t *_sdaPortReg; + volatile uint8_t *_sclDirReg; + volatile uint8_t *_sdaDirReg; + + uint8_t usePullups; + + // private methods + + void i2c_writebit( uint8_t c ); + uint8_t i2c_readbit(void); + void i2c_init(void); + void i2c_start(void); + void i2c_repstart(void); + void i2c_stop(void); + uint8_t i2c_write( uint8_t c ); + uint8_t i2c_read( uint8_t ack ); + +public: + // public methods + SoftI2CMaster(); + SoftI2CMaster(uint8_t sclPin, uint8_t sdaPin); + SoftI2CMaster(uint8_t sclPin, uint8_t sdaPin, uint8_t usePullups); + + void setPins(uint8_t sclPin, uint8_t sdaPin, uint8_t usePullups); + + uint8_t beginTransmission(uint8_t address); + uint8_t beginTransmission(int address); + uint8_t endTransmission(void); + uint8_t write(uint8_t); + void write(uint8_t*, uint8_t); + void write(int); + void write(char*); + + uint8_t requestFrom(int address); + uint8_t requestFrom(uint8_t address); + uint8_t read( uint8_t ack ); + uint8_t read(); + uint8_t readLast(); + +}; + +#endif diff --git a/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster_LICENSE.txt b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster_LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..91a4dc6ebd3177f196b17396d0d1f9f309096e84 --- /dev/null +++ b/libraries/LiquidCrystal/thirdparty libraries/SoftI2CMaster_/SoftI2CMaster_LICENSE.txt @@ -0,0 +1,33 @@ + +Copyright (c) Tod E. Kurt, 2010-2015 + +--- + +LICENSE: +Creative Commons - Attribution - ShareAlike 3.0 +http://creativecommons.org/licenses/by-sa/3.0/ +See why we chose this license: http://www.inmojo.com/licenses/ + +This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. + + +This is a human-readable summary of the full license. + +You are free: +- to Share - to copy, distribute and transmit the work, and +- to Remix - to adapt the work + +Under the following conditions: +- Attribution - You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work.) +- Share Alike - If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. + +With the understanding that: +- Waiver - Any of the above conditions can be waived if you get permission from the copyright holder. +- Other Rights - In no way are any of the following rights affected by the license: +-- your fair dealing or fair use rights; +-- the author's moral rights; and +-- rights other persons may have either in the work itself or in how the work is used, such as publicity or privacy rights. + +Notice - For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do that is with a link to +http://creativecommons.org/licenses/by-sa/3.0/ + diff --git a/libraries/LiquidCrystal/utility/docs/Doxyfile b/libraries/LiquidCrystal/utility/docs/Doxyfile new file mode 100644 index 0000000000000000000000000000000000000000..51d1f5c77b7b7587e954ac832cf3054689c3db8a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/Doxyfile @@ -0,0 +1,2454 @@ +# Doxyfile 1.8.10 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "New LiquidCrystal library" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 1.3.1 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "Generic LCD control library" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if <section_label> ... \endif and \cond <section_label> +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = "/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal" + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, +# *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.as \ + *.js + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# <filter> <input-file> +# +# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# compiled with the --with-libclang option. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use <access key> + S +# (what the <access key> is depends on the OS and browser, but it is typically +# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down +# key> to jump into the search results window, the results can be navigated +# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel +# the search. The filter options can be selected when the cursor is inside the +# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys> +# to select a filter and <Enter> or <escape> to activate or cancel the filter +# option. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. There +# are two flavors of web server based searching depending on the EXTERNAL_SEARCH +# setting. When disabled, doxygen will generate a PHP script for searching and +# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing +# and searching needs to be provided by external tools. See the section +# "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain the +# search results. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). +# +# See the section "External Indexing and Searching" for details. +# The default value is: NO. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will return the search results when EXTERNAL_SEARCH is enabled. +# +# Doxygen ships with an example indexer (doxyindexer) and search engine +# (doxysearch.cgi) which are based on the open source search engine library +# Xapian (see: http://xapian.org/). See the section "External Indexing and +# Searching" for details. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. +# The default file is: searchdata.xml. +# This tag requires that the tag SEARCHENGINE is set to YES. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of +# to a relative location where the documentation can be found. The format is: +# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ... +# This tag requires that the tag SEARCHENGINE is set to YES. + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# The default value is: YES. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. +# +# Note that when enabling USE_PDFLATEX this option is only used for generating +# bitmaps for formulas in the HTML output, but not in the Makefile that is +# written to the output directory. +# The default file is: latex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate +# index for LaTeX. +# The default file is: makeindex. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used by the +# printer. +# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x +# 14 inches) and executive (7.25 x 10.5 inches). +# The default value is: a4. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names +# that should be included in the LaTeX output. The package can be specified just +# by its name or with the correct syntax as to be used with the LaTeX +# \usepackage command. To get the times font for instance you can specify : +# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times} +# To use the option intlimits with the amsmath package you can specify: +# EXTRA_PACKAGES=[intlimits]{amsmath} +# If left blank no extra packages will be included. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the +# generated LaTeX document. The header should contain everything until the first +# chapter. If it is left blank doxygen will generate a standard header. See +# section "Doxygen usage" for information on how to let doxygen write the +# default header to a separate file. +# +# Note: Only use a user-defined header if you know what you are doing! The +# following commands have a special meaning inside the header: $title, +# $datetime, $date, $doxygenversion, $projectname, $projectnumber, +# $projectbrief, $projectlogo. Doxygen will replace $title with the empty +# string, for the replacement values of the other commands the user is referred +# to HTML_HEADER. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the +# generated LaTeX document. The footer should contain everything after the last +# chapter. If it is left blank doxygen will generate a standard footer. See +# LATEX_HEADER for more information on how to generate a default footer and what +# special commands can be used inside the footer. +# +# Note: Only use a user-defined footer if you know what you are doing! +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_FOOTER = + +# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# LaTeX style sheets that are included after the standard style sheets created +# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_STYLESHEET = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the LATEX_OUTPUT output +# directory. Note that the files will be copied as-is; there are no commands or +# markers available. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is +# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will +# contain links (just like the HTML output) instead of page references. This +# makes the output suitable for online browsing using a PDF viewer. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate +# the PDF file directly from the LaTeX files. Set this option to YES, to get a +# higher quality PDF documentation. +# The default value is: YES. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode +# command to the generated LaTeX files. This will instruct LaTeX to keep running +# if errors occur, instead of asking the user for help. This option is also used +# when generating formulas in HTML. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BATCHMODE = NO + +# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# index chapters (such as File Index, Compound Index, etc.) in the output. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_HIDE_INDICES = NO + +# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source +# code with syntax highlighting in the LaTeX output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. See +# http://en.wikipedia.org/wiki/BibTeX and \cite for more info. +# The default value is: plain. +# This tag requires that the tag GENERATE_LATEX is set to YES. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# RTF output is optimized for Word 97 and may not look too pretty with other RTF +# readers/editors. +# The default value is: NO. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: rtf. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# documents. This may be useful for small projects and may help to save some +# trees in general. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will +# contain hyperlink fields. The RTF file will contain links (just like the HTML +# output) instead of page references. This makes the output suitable for online +# browsing using Word or some other Word compatible readers that support those +# fields. +# +# Note: WordPad (write) and others do not support links. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's config +# file, i.e. a series of assignments. You only have to provide replacements, +# missing definitions are set to their default value. +# +# See also section "Doxygen usage" for information on how to generate the +# default style sheet that doxygen normally uses. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an RTF document. Syntax is +# similar to doxygen's config file. A template extensions file can be generated +# using doxygen -e rtf extensionFile. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_EXTENSIONS_FILE = + +# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code +# with syntax highlighting in the RTF output. +# +# Note that which sources are shown also depends on other settings such as +# SOURCE_BROWSER. +# The default value is: NO. +# This tag requires that the tag GENERATE_RTF is set to YES. + +RTF_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# classes and files. +# The default value is: NO. + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. A directory man3 will be created inside the directory specified by +# MAN_OUTPUT. +# The default directory is: man. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to the generated +# man pages. In case the manual section does not start with a number, the number +# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is +# optional. +# The default value is: .3. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_EXTENSION = .3 + +# The MAN_SUBDIR tag determines the name of the directory created within +# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by +# MAN_EXTENSION with the initial . removed. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_SUBDIR = + +# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# will generate one additional man file for each entity documented in the real +# man page(s). These additional files only source the real man page, but without +# them the man command would be unable to find the correct page. +# The default value is: NO. +# This tag requires that the tag GENERATE_MAN is set to YES. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# captures the structure of the code including all documentation. +# The default value is: NO. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: xml. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_OUTPUT = xml + +# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# listings (including syntax highlighting and cross-referencing information) to +# the XML output. Note that enabling this will significantly increase the size +# of the XML output. +# The default value is: YES. +# This tag requires that the tag GENERATE_XML is set to YES. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# that can be used to generate PDF. +# The default value is: NO. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. +# The default directory is: docbook. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_OUTPUT = docbook + +# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the +# program listings (including syntax highlighting and cross-referencing +# information) to the DOCBOOK output. Note that enabling this will significantly +# increase the size of the DOCBOOK output. +# The default value is: NO. +# This tag requires that the tag GENERATE_DOCBOOK is set to YES. + +DOCBOOK_PROGRAMLISTING = NO + +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an +# AutoGen Definitions (see http://autogen.sf.net) file that captures the +# structure of the code including all documentation. Note that this feature is +# still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# file that captures the structure of the code including all documentation. +# +# Note that this feature is still experimental and incomplete at the moment. +# The default value is: NO. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI +# output from the Perl module output. +# The default value is: NO. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely +# formatted so it can be parsed by a human reader. This is useful if you want to +# understand what is going on. On the other hand, if this tag is set to NO, the +# size of the Perl module output will be much smaller and Perl will parse it +# just the same. +# The default value is: YES. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file are +# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful +# so different doxyrules.make files included by the same Makefile don't +# overwrite each other's variables. +# This tag requires that the tag GENERATE_PERLMOD is set to YES. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# C-preprocessor directives found in the sources and include files. +# The default value is: YES. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# in the source code. If set to NO, only conditional compilation will be +# performed. Macro expansion can be done in a controlled way by setting +# EXPAND_ONLY_PREDEF to YES. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then +# the macro expansion is limited to the macros specified with the PREDEFINED and +# EXPAND_AS_DEFINED tags. +# The default value is: NO. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES, the include files in the +# INCLUDE_PATH will be searched if a #include is found. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by the +# preprocessor. +# This tag requires that the tag SEARCH_INCLUDES is set to YES. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will be +# used. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that are +# defined before the preprocessor is started (similar to the -D option of e.g. +# gcc). The argument of the tag is a list of macros of the form: name or +# name=definition (no spaces). If the definition and the "=" are omitted, "=1" +# is assumed. To prevent a macro definition from being undefined via #undef or +# recursively expanded use the := operator instead of the = operator. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this +# tag can be used to specify a list of macro names that should be expanded. The +# macro definition that is found in the sources will be used. Use the PREDEFINED +# tag if you want to use a different macro definition that overrules the +# definition found in the source code. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# remove all references to function-like macros that are alone on a line, have +# an all uppercase name, and do not end with a semicolon. Such function macros +# are typically used for boiler-plate code, and will confuse the parser if not +# removed. +# The default value is: YES. +# This tag requires that the tag ENABLE_PREPROCESSING is set to YES. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tag files. For each tag +# file the location of the external documentation should be added. The format of +# a tag file without this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where loc1 and loc2 can be relative or absolute paths or URLs. See the +# section "Linking to external documentation" for more information about the use +# of tag files. +# Note: Each tag file must have a unique name (where the name does NOT include +# the path). If a tag file is not located in the directory in which doxygen is +# run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# tag file that is based on the input files it reads. See section "Linking to +# external documentation" for more information about the usage of tag files. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES, all external class will be listed in +# the class index. If set to NO, only the inherited external classes will be +# listed. +# The default value is: NO. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will be +# listed. +# The default value is: YES. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in +# the related pages index. If set to NO, only the current project's pages will +# be listed. +# The default value is: YES. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of 'which perl'). +# The default file (with absolute path) is: /usr/bin/perl. + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram +# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to +# NO turns the diagrams off. Note that this option also works with HAVE_DOT +# disabled, but it is recommended to install and use dot, since it yields more +# powerful graphs. +# The default value is: YES. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see: +# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. + +DIA_PATH = + +# If set to YES the inheritance and collaboration graphs will hide inheritance +# and usage relations if the target is undocumented or is not a class. +# The default value is: YES. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz (see: +# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# Bell Labs. The other options in this section have no effect if this option is +# set to NO +# The default value is: NO. + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed +# to run in parallel. When set to 0 doxygen will base this on the number of +# processors available in the system. You can set it explicitly to a value +# larger than 0 to get control over the balance between CPU load and processing +# speed. +# Minimum value: 0, maximum value: 32, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_NUM_THREADS = 0 + +# When you want a differently looking font in the dot files that doxygen +# generates you can specify the font name using DOT_FONTNAME. You need to make +# sure dot is able to find the font, which can be done by putting it in a +# standard location or by setting the DOTFONTPATH environment variable or by +# setting DOT_FONTPATH to the directory containing the font. +# The default value is: Helvetica. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of +# dot graphs. +# Minimum value: 4, maximum value: 24, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the default font as specified with +# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set +# the path where dot can find it using this tag. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_FONTPATH = + +# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for +# each documented class showing the direct and indirect inheritance relations. +# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# graph for each documented class showing the direct and indirect implementation +# dependencies (inheritance, containment, and class references variables) of the +# class with other documented classes. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for +# groups, showing the direct groups dependencies. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside the +# class node. If there are many fields or methods and many nodes the graph may +# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the +# number of items for each type to make the size more manageable. Set this to 0 +# for no limit. Note that the threshold may be exceeded by 50% before the limit +# is enforced. So when you set the threshold to 10, up to 15 fields may appear, +# but if the number exceeds 15, the total amount of fields shown is limited to +# 10. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag HAVE_DOT is set to YES. + +UML_LIMIT_NUM_FIELDS = 10 + +# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and +# collaboration graphs will show the relations between templates and their +# instances. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +TEMPLATE_RELATIONS = NO + +# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to +# YES then doxygen will generate a graph for each documented file showing the +# direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDE_GRAPH = YES + +# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are +# set to YES then doxygen will generate a graph for each documented file showing +# the direct and indirect include dependencies of the file with other documented +# files. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. Disabling a call graph can be +# accomplished by means of the command \hidecallgraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# dependency graph for every global function or class method. +# +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable caller graphs for selected +# functions only using the \callergraph command. Disabling a caller graph can be +# accomplished by means of the command \hidecallergraph. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# hierarchy of all classes instead of a textual one. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# dependencies a directory has on other directories in a graphical way. The +# dependency relations are determined by the #include relations between the +# files in the directories. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. For an explanation of the image formats see the section +# output formats in the documentation of the dot tool (Graphviz (see: +# http://www.graphviz.org/)). +# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order +# to make the SVG files visible in IE 9+ (other browsers do not have this +# requirement). +# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and +# png:gdiplus:gdiplus. +# The default value is: png. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# +# Note that this requires a modern browser other than Internet Explorer. Tested +# and working are Firefox, Chrome, Safari, and Opera. +# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make +# the SVG files visible. Older versions of IE do not have SVG support. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +INTERACTIVE_SVG = NO + +# The DOT_PATH tag can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the \dotfile +# command). +# This tag requires that the tag HAVE_DOT is set to YES. + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = + +# The DIAFILE_DIRS tag can be used to specify one or more directories that +# contain dia files that are included in the documentation (see the \diafile +# command). + +DIAFILE_DIRS = + +# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file. If left blank, it is assumed +# PlantUML is not used or called during a preprocessing step. Doxygen will +# generate a warning when it encounters a \startuml command in this case and +# will not generate output for the diagram. + +PLANTUML_JAR_PATH = + +# When using plantuml, the specified paths are searched for files specified by +# the !include statement in a plantuml block. + +PLANTUML_INCLUDE_PATH = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes +# that will be shown in the graph. If the number of nodes in a graph becomes +# larger than this value, doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that doxygen if the number of direct +# children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that +# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. +# Minimum value: 0, maximum value: 10000, default value: 50. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs +# generated by dot. A depth value of 3 means that only nodes reachable from the +# root by following a path via at most 3 edges will be shown. Nodes that lay +# further from the root node will be omitted. Note that setting this option to 1 +# or 2 may greatly reduce the computation time needed for large code bases. Also +# note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. +# Minimum value: 0, maximum value: 1000, default value: 0. +# This tag requires that the tag HAVE_DOT is set to YES. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not seem +# to support this out of the box. +# +# Warning: Depending on the platform used, enabling this option may lead to +# badly anti-aliased labels on the edges of a graph (i.e. they become hard to +# read). +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) support +# this, this feature is disabled by default. +# The default value is: NO. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# explaining the meaning of the various boxes and arrows in the dot generated +# graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot +# files that are used to generate the various graphs. +# The default value is: YES. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_CLEANUP = YES diff --git a/libraries/LiquidCrystal/utility/docs/def/doxygen.def b/libraries/LiquidCrystal/utility/docs/def/doxygen.def new file mode 100644 index 0000000000000000000000000000000000000000..5af747c386f35d5414f48d9bc377d63a8e347a09 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/def/doxygen.def @@ -0,0 +1,7432 @@ +AutoGen Definitions dummy; +class = { + cp-id = 'class_i2_c_i_o'; + cp-name = 'I2CIO'; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a6f814653d903dc2ff6e8420eeb7954ae'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'i2cAddr'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '62'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the device. + @discussion This method initializes the device allocating an I2C address. + This method is the first method that should be call prior to calling any + other method form this class. On initialization all pins are configured + as INPUT on the device. + + @param i2cAddr: I2C Address where the device is located. + @result 1 if the device was initialized correctly, 0 otherwise +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1ac26221011a8b49bcea9ef62712ea88a7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'digitalRead'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '108'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Read a pin from the device. + @discussion Reads a particular pin from the device. To read a particular + pin it has to be configured as INPUT. During initialization all pins are + configured as INPUTs by default. Please refer to pinMode or portMode. + + @param pin[in] Pin from the port to read its status. Range (0..7) + @result Returns the pin status (HIGH, LOW) if the pin is configured + as an output, reading its value will always return LOW regardless of its + real state. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a473206162522b847546777d16a7c6dcd'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'digitalWrite'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'level'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '136'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes a digital level to a particular pin. + @discussion Write a level to the indicated pin of the device. For this + method to have effect, the pin has to be configured as OUTPUT using the + pinMode or portMode methods. + + @param pin[in] device pin to change level. Range (0..7). + @para level[in] logic level to set the pin at (HIGH, LOW). + @result 1 on success, 0 otherwise. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a32eb7832075ad6011d67874405a0d0a6'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'I2CIO'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '49'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Constructor method + @discussion Class constructor constructor. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a53b94274eb6bb68564cf5243323db887'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pinMode'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'dir'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '73'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Sets the mode of a particular pin. + @discussion Sets the mode of a particular pin to INPUT, OUTPUT. digitalWrite + has no effect on pins which are not declared as output. + + @param pin[in] Pin from the I2C IO expander to be configured. Range 0..7 + @param dir[in] Pin direction (INPUT, OUTPUT). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a0341888753bc54c4384f5593a870fb34'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'portMode'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'dir'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '83'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Sets all the pins of the device in a particular direction. + @discussion This method sets all the pins of the device in a particular + direction. This method is useful to set all the pins of the device to be + either inputs or outputs. + @param dir[in] Direction of all the pins of the device (INPUT, OUTPUT). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a7a3db7bfc15ede0ae9e8c8bd44290ef7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'read'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '94'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Reads all the pins of the device that are configured as INPUT. + @discussion Reads from the device the status of the pins that are configured + as INPUT. During initialization all pins are configured as INPUTs by default. + Please refer to pinMode or portMode. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1ae2063569c927d0008e2593d14504fdcd'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '123'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Write a value to the device. + @discussion Writes to a set of pins in the device. The value is the binary + representation of all the pins in device. The value written is masked with + the configuration of the direction of the pins; to change the state of + a particular pin with this method, such pin has to be configured as OUTPUT + using the portMode or pinMode methods. If no pins have been configured as + OUTPUTs this method will have no effect. + + @param value[in] value to be written to the device. + @result 1 on success, 0 otherwise +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1a283a99ef1c6f58fa8a0489089cba9682'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_dirMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '142'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1ade58da873af4240a53053ef5f12a2728'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_i2cAddr'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '143'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1a8c566f3fd332eefe4db57cbe6b69337c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +bool +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_initialised'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '144'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1abcd6f7f5f176f965d8ae535afa9f6cec'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_shadow'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '141'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + cp-fileline = '42'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_l_c_d'; + cp-name = 'LCD'; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___i2_c'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___s_r'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___s_r2_w'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___s_r3_w'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1abb3ed88d530f6283e6159b4973e7da9e'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'autoscroll'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '354'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns on automatic scrolling of the LCD. + @discussion Turns on automatic scrolling of the LCD. This causes each + character output to the display to push previous characters over by one + space. If the current text direction is left-to-right (the default), + the display scrolls to the left; if the current direction is right-to-left, + the display scrolls to the right. + This has the effect of outputting each new character to the same location on + the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aba8867fe2210cbfa8db869208709be10'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'backlight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '402'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on the LCD backlight. + @discussion Switch-on the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a3f587d1cbb2d59765ef60a5216b56fea'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'cols'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rows'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charsize'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '196'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract LCD initialization. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class. + + This method is abstract, a base implementation is available common to all LCD + drivers. Should it not be compatible with some other LCD driver, a derived + implementation should be done on the driver specif class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] character size, default==LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a878b36878fa8287093964eba83aace77'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'blink'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '260'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Display the cursor of the LCD. + @discussion Display the blinking LCD cursor. If used in combination with + the cursor() function, the result will depend on the particular display. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1afa699e0beeeee03cce8cef87eba81c4a'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'clear'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '208'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Clears the LCD. + @discussion Clears the LCD screen and positions the cursor in the upper-left + corner. + + This operation is time consuming for the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a91cba8f93c692abcddf8bc3de58d2d3a'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'createChar'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'location'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charmap'; + sec-mem-param-array = '[]'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '382'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Creates a custom character for use on the LCD. + @discussion Create a custom character (glyph) for use on the LCD. + Most chipsets only support up to eight characters of 5x8 pixels. Therefore, + this methods has been limited to locations (numbered 0 to 7). + + The appearance of each custom character is specified by an array of eight + bytes, one for each row. The five least significant bits of each byte + determine the pixels in that row. To display a custom character on screen, + write()/print() its number, i.e. lcd.print (char(x)); // Where x is 0..7. + + @param location[in] LCD memory location of the character to create + (0 to 7) + @param charmap[in] the bitmap array representing each row of the character. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a194814f64dfa50a90e07e0fe0d361620'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'cursor'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '278'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Display the LCD cursor. + @discussion Display the LCD cursor: an underscore (line) at the location + where the next character will be written. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a5b07cf05e8e5e7c53654f5ca0cf58b89'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'display'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '242'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns on the LCD display. + @discussion Turns on the LCD display, after it's been turned off with + noDisplay(). This will restore the text (and cursor location) that was on + the display prior to calling noDisplay(). + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aee45ad37f09312f5d9982257e2d37e68'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'home'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '221'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the cursor to the upper-left corner. + @discussion Positions the cursor in the upper-left of the LCD. + That is, use that location in outputting subsequent text to the display. + To also clear the display, use the clear() function instead. + + This operation is time consuming for the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a00bb2db1390721abc7b24ac4b8c276c8'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LCD'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '179'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract LiquidCrystal abstract constructor. + @discussion LiquidCrystal class abstract constructor needed to create + the base abstract class. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a238e9f6476dc7df64af04eb6c87f6ac7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'leftToRight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '309'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Set the direction for text written to the LCD to left-to-right. + @discussion Set the direction for text written to the LCD to left-to-right. + All subsequent characters written to the display will go from left to right, + but does not affect previously-output text. + + This is the default configuration. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aad2abc99d1aca5403873579d9d72c2d4'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'moveCursorLeft'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '330'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Moves the cursor one space to the left. + @discussion + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a09eec0c712e54b066f5894635c1fe75c'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'moveCursorRight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '339'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Moves the cursor one space to the right. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a96035dde40efbf73390e00b5beb00231'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noAutoscroll'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '364'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off automatic scrolling of the LCD. + @discussion Turns off automatic scrolling of the LCD, this is the default + configuration of the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a2a331b4e142734411b2f1cfaffe7a488'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '411'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-off the LCD backlight. + @discussion Switch-off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a3b755c4b397b5985752be8c30ee1a9b5'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noBlink'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '250'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off the blinking of the LCD cursor. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aec8ffaa1e69c7a6e13ac0cfbc29151d9'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noCursor'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '268'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Hides the LCD cursor. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1af3974da6d988ba2d21c25135ada12108'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noDisplay'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '231'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off the LCD display. + @discussion Turns off the LCD display, without losing the text currently + being displayed on it. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a191639be183be1476c9bfe6d455d23b2'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'off'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '429'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch off the LCD module. + @discussion Switch off the LCD module, it will switch off the LCD controller + and the backlight. This method has the same effect of calling noDisplay and + noBacklight. @see display, @see backlight +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a718da3a638deb59bd1c7a5222a52d98a'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'on'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '420'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch on the LCD module. + @discussion Switch on the LCD module, it will switch on the LCD controller + and the backlight. This method has the same effect of calling display and + backlight. @see display, @see backlight +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1ac014830eadc26bfd86308ea8734f4428'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'rightToLeft'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '322'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Set the direction for text written to the LCD to right-to-left. + @discussion Set the direction for text written to the LCD to right-to-left. + All subsequent characters written to the display will go from right to left, + but does not affect previously-output text. + + left-to-right is the default configuration. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a6f3a503055b3b8dcf0f61b2633c584f7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'scrollDisplayLeft'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '287'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Scrolls the contents of the display (text and cursor) one space + to the left. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1abfc44b294772f09020bfa32af8a79571'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'scrollDisplayRight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '296'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Scrolls the contents of the display (text and cursor) one space + to the right. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a3305570d7b37eb93f2cf840263c15828'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '463'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. The behaviour + of this method is very dependent on the device. Some controllers support + dimming some don't. Please read the actual header file for each individual + device. The setBacklightPin method has to be called before setting the backlight + or the adequate backlight control constructor. + @see setBacklightPin. + + NOTE: The prefered methods to control the backlight are "backlight" and + "noBacklight". + + @param 0..255 - the value is very dependent on the LCD. However, + BACKLIGHT_OFF will be interpreted as off and BACKLIGHT_ON will drive the + backlight on. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a53f4ee9b39d9ab3d7ae4d9f8dedca3bc'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '444'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + This method is device dependent and can be programmed on each subclass. An + empty function call is provided that does nothing. + + @param value: pin associated to backlight control. + @param pol: backlight polarity control (POSITIVE, NEGATIVE) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a48220450fd152b25994eb7d0ba340e8d'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setCursor'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'col'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'row'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '393'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Position the LCD cursor. + @discussion Sets the position of the LCD cursor. Set the location at which + subsequent text written to the LCD will be displayed. + + @param col[in] LCD column + @param row[in] LCD row - line. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a2d89cc2e62f72afb5f15a7fd812900e3'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '477'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Writes to the LCD. + @discussion This method writes character to the LCD in the current cursor + position. + + This is the virtual write method, implemented in the Print class, therefore + all Print class methods will end up calling this method. + + @param value[in] Value to write to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'protected-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1a88b16ea0e5c7d1cabc5007d48bcbd2b0'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_cols'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '497'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1ae47a0e2eff74431a39774b788d5761f4'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displaycontrol'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '493'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1aef093ba3f8e1016267b40ac235a0fa0f'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displayfunction'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '491'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1a726b9a68d091dd8683a18e83f3a8fd3c'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displaymode'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '495'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1ac1374911fb145fea430c21092ada0c06'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_numlines'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '496'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1a990338759d2abe10b0fb1743b7789566'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_polarity'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '498'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a31a0cb42497d83cdc9cb8000828f7190'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'command'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '513'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a command to the LCD. + @discussion This method sends a command to the LCD by setting the Register + select line of the LCD. + + This command shouldn't be used to drive the LCD, only to implement any other + feature that is not available on this library. + + @param value[in] Command value to send to the LCD (COMMAND, DATA or + FOUR_BITS). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a8a5b6f6f448a6ca6eeb3466c370d47ab'; + sec-mem-virt = virtual; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '529'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD. This is a pure abstract + method, therefore, it is implementation dependent of each derived class how + to physically write to the LCD. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + cp-fileline = '170'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 5; + node-label = 'LiquidCrystal_SR'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 2; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 3; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 4; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 6; + node-label = 'LiquidCrystal_SR2W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r2_w'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 7; + node-label = 'LiquidCrystal_SR3W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r3_w'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal'; + cp-name = 'LiquidCrystal'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a49d2bd8d26031a1c83bcbd73978a1686'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '55'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract 8 bit LCD constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a30e3d865c4b4a003a36cb45903f93644'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '58'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1ae0c3c8f7661634b1400f00a1c9c02c26'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlightPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '68'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a52a4de3d866e347208a32dfc9d797729'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlightPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '86'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a0a0a8dfa7a2e775a031fd65f5c6366ec'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '76'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract 4 bit LCD constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a8b90122c67a6d14b967c8a11ba490670'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlightPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '83'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a23124e6dd5ac4a9b6147629b96e91953'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '78'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1aff2330186495fde93370d46c0ca2cbf0'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlightPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '64'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a56142f8b3753bedd133e4139e5eb5089'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '99'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1aa2b898366e1c656ac313b9007c98cebd'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '125'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. For dimming control of the + backlight, the configuration pin must be a PWM output pin. Dim control + is achieved by passing a value from 1 to 255 as a parameter. If the + pin configured when calling the setBacklightPin does not support PWM, + then: (0) backlight off, (1..255) backlight on. + + @param value: backlight value. 0: off, 1..255: dim control of the + backlight. For negative logic 255: off, 254..0: dim control. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a63740dc1198d8169a39d9c6daff0efc9'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '109'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + + @param pin: pin assigned to the backlight + @param pol: backlight pin control polarity (POSITIVE, NEGATIVE). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1ae45eec827b26174f73e9cf3ddda635af'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'fourbitmode'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '136'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD pin allocation and associated HW + @discussion Initializes the LCD pin allocation and configuration. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a44d84c010396c993f124d2feb9dc794d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pulseEnable'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '152'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a641301bc315a4e167c5aee7ea99993fd'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'writeNbits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'numBits'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '144'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes numBits bits from value value to the LCD. + @discussion Writes numBists bits (the least significant) to the LCD control + data lines. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1a23a1807a1fe4210ac7cfca9b779513ea'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightPin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '158'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1a0b2da39d056aed9940b0525e554668d7'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_pins'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '157'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1aef7d920abae32b5faa2625ffa3879c4b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_enable_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '156'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1affd20665bda00d8b0e37d5ee87543e81'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_rs_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '154'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1a29061eaa64c2e9f3b985ff52249b62a9'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_rw_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '155'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + cp-fileline = '45'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 10; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 9; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '10'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 12; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 11; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '12'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___i2_c'; + cp-name = 'LiquidCrystal_I2C'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aeee2ada537f0cfbfda8613324b57c4a6'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'cols'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rows'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charsize'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '110'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract LCD initialization and associated HW. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class or parent class. + + The begin method can be overloaded if necessary to initialize any HW that + is implemented by a library and can't be done during construction, here + we use the Wire class. + + @param cols[in] the number of columns that the display has + @param rows[in] the number of rows that the display has + @param charsize[in] size of the characters of the LCD: LCD_5x8DOTS or + LCD_5x10DOTS. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a9fc9bc519ebbf7503dadc11622e02ed6'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '53'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1add1f2da7de4ec9b9cd5c9b5fab712464'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '70'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a7d9b54d3a91fa0e0e50db27cda6b4654'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '89'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + @param d4[in] LCD data 0 pin map on IO extender module + @param d5[in] LCD data 1 pin map on IO extender module + @param d6[in] LCD data 2 pin map on IO extender module + @param d7[in] LCD data 3 pin map on IO extender module +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a517f8847ebf09f0eacfb9c7232975fce'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '67'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1ab15622287533de7a47f3e2012ebf18be'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '93'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aac537d195557e0b8afac1a71441a484c'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '51'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a8bf1fab7efe13e8b17b96c42d1f810b4'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '124'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1af11b8fa0082616e2b6e6e4238589d8a8'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '145'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param value: backlight mode (HIGH|LOW) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a2eaf86f62d1f169b3763b03fbf88f70b'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '134'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. This device + doesn't support dimming backlight capability. + + @param 0: backlight off, 1..255: backlight on. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1adb997350478bdc0ab8eb5cc5623a2ad9'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'config'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '172'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Initialises class private variables + @discussion This is the class single point for initialising private variables. + + @param lcd_Addr[in] I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. + @param En[in] LCD En (Enable) pin connected to the IO extender module + @param Rw[in] LCD Rw (Read/write) pin connected to the IO extender module + @param Rs[in] LCD Rs (Reset) pin connected to the IO extender module + @param d4[in] LCD data 0 pin map on IO extender module + @param d5[in] LCD data 1 pin map on IO extender module + @param d6[in] LCD data 2 pin map on IO extender module + @param d7[in] LCD data 3 pin map on IO extender module +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a459c4fa106fb7bac5940e3c6aea736af'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '154'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a1d715dbf40f06b4c15004cd356b5a321'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pulseEnable'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-defname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '190'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a60111950cc0a47e6223c22949faa15f3'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write4bits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '182'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. + @param value[in] Value to write to the LCD + @param more[in] Value to distinguish between command and data. + COMMAND == command, DATA == data. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a0bb3cc7ec414b373ef00e0cc6642ec88'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Addr'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '193'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a9d59c16cde5c3ffb30a881e9a61c9a32'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightPinMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '194'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a0eaa7c2ac1040a1786960618866c066e'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightStsMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '195'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a3436246b17062357066c636aa598b49d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_pins'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '200'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aa0a878e97b6111abf1bc8d767a548cf2'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_En'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '197'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1adcc89f14c444ff086f544f33fc18ca4c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +I2CIO +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_i2cio'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '196'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1ab70fc18e99a70e3293c4f6ba25c37efa'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Rs'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '199'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a882df32eb9ae0e7a1b74f9a8ee4bffe9'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Rw'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '198'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + cp-fileline = '39'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 14; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 13; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '14'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 16; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 15; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '16'; + relation = public-inheritance; + }; /* node-child */ + node-child = { + child-id = '17'; + relation = usage; + edgelabel = <<_EnD_oF_dEf_TeXt_ +_i2cio +_EnD_oF_dEf_TeXt_; + }; /* node-child */ + }; /* node */ + node = { + node-id = 17; + node-label = 'I2CIO'; + node-link = { + node-link-id = 'class_i2_c_i_o'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___s_r'; + cp-name = 'LiquidCrystal_SR'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1ac3fe0b48f8d4c1c941d82d1333495cfc'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srclock'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +TWO_WIRE +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '108'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract LCD SHIFT REGISTER constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. Assuming 1 line 8 pixel high + font. + + @param srdata[in] pin for shiftregister data line. + @param srclock[in] pin for shiftregister clock line. + @param enable[in] optional direct enable pin for the LCD +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1a03821351a32db07cb7e42c8c11ce8d47'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '122'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command using the shift register. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1ad9f3e3f36257984c23fb508973e14535'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '145'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param mode: backlight mode (HIGH|LOW) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1a5bfc0dcc1f042bcb59992493a3a7231d'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '134'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. + @warning Currently not supported + + @param mode: backlight mode (HIGH|LOW) + @param pol: backlight polarity +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1a0f15bf3f5041a91469da5fd75aba5d5e'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srclock'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lines'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'font'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '155'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r_1a2684630ad69618fab065f53eea543df8'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'shiftIt'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'val'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '161'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract takes care of shifting and the enable pulse +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1acee96e0ef397441bdde73ca921160476'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_enable_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '163'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a68bffb6befc28cb716fb0c48b50f65fc'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srClockBit'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '169'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a507726b30de4b552b4e32faf9a3aa9e3'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srClockRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '168'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a9984b207beddba9ff299f9356f891065'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srDataBit'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '167'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a1e5bf3e5c6ec5b6c41f6949b6e34fd34'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srDataRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '166'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1a12e3ee583d454d5f52223beca91f5bae'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srEnableBit'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '171'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1adab0eb2bb7392a77375034530bf230eb'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srEnableRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '170'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r_1ad20f9d3282b047fdbae8e97b07d4fc89'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_two_wire'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + sec-mem-desc-line = '164'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + cp-fileline = '95'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 18; + node-label = 'LiquidCrystal_SR'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r'; + }; + node-child = { + child-id = '19'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 19; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 20; + node-label = 'LiquidCrystal_SR'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r'; + }; + node-child = { + child-id = '21'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 21; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___s_r2_w'; + cp-name = 'LiquidCrystal_SR2W'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1af307fdf5c8feb757e965074dcdeb1dd3'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR2W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srclock'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'blpol'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +POSITIVE +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '151'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract LCD 2 wire SHIFT REGISTER constructor. + @discussion Defines the pin assignments that connect to the shift register. + The constructor does not initialize the LCD. Assuming 1 line 8 pixel high + font. + + @param srdata[in] Arduino pin for shift register data line. + @param srclock[in] Arduino pin for shift register clock line. + @param blpol[in] optional backlight polarity (default = POSITIVE) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a65dc6f261c319be8e56f3c1f6a5c877d'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '165'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command using the shift register. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA=8bit data, COMMAND=8bit cmd, FOUR_BITS=4bit cmd + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a2158db27287c1564a03e7a1472beb3b6'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '177'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param mode[in] backlight mode (0 off, non-zero on) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a12c14153e7056cb4a98310529bace6a8'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srdata'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'srclock'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'blpol'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lines'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'font'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '186'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1ae369efcd3fca47a018a034f5f4a1679b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'loadSR'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'val'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '192'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract takes care of shifting and the enable pulse +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a3b1dfb83ad02274c30fa940a10619737'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_blMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '200'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a906f803e1ae324b5383fa004093124f4'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_blPolarity'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '199'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a27727d63c1ce0f9aada630814b8f022b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srClockMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '197'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1aa36d38c009bf846e7726fc48c0067fc3'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srClockRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '196'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1ad188042fdcc7df0178248401c678eb8e'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srDataMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '195'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r2_w_1a2e43c3f1d6b0e5599a1b4d14ef428077'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_srDataRegister'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + sec-mem-desc-line = '194'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + cp-fileline = '138'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 23; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 22; + node-label = 'LiquidCrystal_SR2W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r2_w'; + }; + node-child = { + child-id = '23'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 25; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 24; + node-label = 'LiquidCrystal_SR2W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r2_w'; + }; + node-child = { + child-id = '25'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___s_r3_w'; + cp-name = 'LiquidCrystal_SR3W'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1ae1396bcd5e9c5b7ed13182c166de776b'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR3W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '90'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the IO driving the + shift register. The constructor does not initialize the LCD. + Default configuration: + Shift register LCD + QA - 0 DB4 + QB - 1 DB5 + QC - 2 DB6 + QD - 3 DB7 + QE - 4 E + QF - 5 + QG - 6 Rs + GND Rw + + @param strobe[in] digital IO connected to shiftregister strobe pin. + @param data[in] digital IO connected to the shiftregister data pin. + @param clk[in] digital IO connected to the shiftregister clock pin. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a7b2f382b76bc9d88adb8d681e824b4de'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR3W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '93'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a24f051747dfeda48f7b207c3358c8015'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR3W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'backlighPin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '119'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a4fab8ff2f21bba3efd133cd8c87fffc0'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_SR3W'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '114'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the control lines of + the LCD and the shiftregister. The constructor does not initialize the LCD. + + @param strobe[in] digital IO connected to shiftregister strobe pin. + @param data[in] digital IO connected to shiftregister data pin. + @param clk[in] digital IO connected to shiftregister clock pin. + @param En[in] LCD En (Enable) pin connected to SR output pin. + @param Rw[in] LCD Rw (Read/write) pin connected to SR output pin. + @param Rs[in] LCD Rs (Reg Select) pin connected to SR output pin. + @param d4[in] LCD data 4 pin map to the SR output pin. + @param d5[in] LCD data 5 pin map to the SR output pin. + @param d6[in] LCD data 6 pin map to the SR output pin. + @param d7[in] LCD data 7 pin map to the SR output pin. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1ade34af5b7fe795482f1848c2176d6e56'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '133'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value[in] Value to send to the LCD. + @param mode[in] DATA - write to the LCD CGRAM, COMMAND - write a + command to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a6d0fc7907ef9fd87c408a21b9bd49295'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklight'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '154'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on/off the LCD backlight. + @discussion Switch-on/off the LCD backlight. + The setBacklightPin has to be called before setting the backlight for + this method to work. @see setBacklightPin. + + @param value: backlight mode (HIGH|LOW) +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a894d0ea8ea61c1d15acd8a26d417e477'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setBacklightPin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +t_backlighPol +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pol'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '143'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the pin to control the backlight. + @discussion Sets the pin in the device to control the backlight. This device + doesn't support dimming backlight capability. + + @param 0: backlight off, 1..255: backlight on. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a45cde916021d9b52b0f769c17886b2ef'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'data'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'clk'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'strobe'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'Rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'En'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '165'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a80f6e4e8b10635d9daed718f2918c1bd'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'loadSR'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '183'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract load into the shift register a byte + @discussion loads into the shift register a byte + @param value[in]: value to be loaded into the shiftregister. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1ac0702caa5d07ffd8e832ad8a5d0afe7c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write4bits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '175'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. + @param value[in] Value to write to the LCD + @param more[in] Value to distinguish between command and data. + COMMAND == command, DATA == data. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a21ef2e5b78edd0d160d81b0c06d41440'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightPinMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '196'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1adf17379bfac4def5c780fc8ad023764c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightStsMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '197'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a2c14746e8f626a53f777c8df68f8a92b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_clk'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '190'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1af7d09207dffb9f2fc85fc60661ffa0d4'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_clk_reg'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '191'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1ab81049d446d2e7399ee6b20c9da4cdde'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '188'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a366adab314f5dc8b7e53298d6eccf85d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_pins'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '195'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a301acb36345c56ae336156fdeee4a783'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_reg'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '189'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a4306c59b6bf3870fecad23d6b0c0aa5d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_En'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '192'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a062da9fb985a7e88128d7d95fd8239d6'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Rs'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '194'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1aef47417b089e53af1ce032e5f1b23b43'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Rw'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '193'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a0d40b3c14c3f56fd341d41220f425925'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_strobe'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '186'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___s_r3_w_1a2a7d9703b04a91658b7a590b926ff9cd'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_strobe_reg'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + sec-mem-desc-line = '187'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + cp-fileline = '67'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 27; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 26; + node-label = 'LiquidCrystal_SR3W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r3_w'; + }; + node-child = { + child-id = '27'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 29; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 28; + node-label = 'LiquidCrystal_SR3W'; + node-link = { + node-link-id = 'class_liquid_crystal___s_r3_w'; + }; + node-child = { + child-id = '29'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +file = { + file-id = '_fast_i_o_8cpp'; + file-name = 'FastIO.cpp'; + func = { + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a83fc2fdc19ab3f9aade9e1a2f39e81a6'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_digitalRead'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinBit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '96'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract direct digital read + @discussion without any checks + @discussion falls back to normal digitalRead if fast io is disabled + @param pinRegister[in] Register - ignored if fast io is disabled + @param pinBit[in] Bit - Pin if fast io is disabled + @result Value read from pin +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1ae91bbe682b02a5842c291055c0e998b5'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_digitalWrite'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '77'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract direct digital write + @discussion without any checks + @discussion falls back to normal digitalWrite if fast io is disabled + @param pinRegister[in] Register - ignored if fast digital write is disabled + @param pinBit[in] Bit - Pin if fast digital write is disabled + @param value[in] desired output +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a07a19dfbdca1afaca5d666bdaa3be7d5'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToBit'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '66'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Find the bit which belongs to specified pin + @discussion if fast digitalWrite is disabled this function returns the pin + @param pin[in] Number of a digital pin + @result Bit +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1afb934fc0ded94cbb5ed8ed14e2a123ed'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToInputRegister'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '53'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Get the input register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a04210cc785c3b4a11c86f794949c327f'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToOutputRegister'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'initial_state'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '36'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Get the output register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a5d8d5977294d614d15bda19f75d6b787'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockBit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '161'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract faster shift out clear + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a56c72b9f00680662229895ab22aaa743'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'bitOrder'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '111'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract faster shift out + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled + @param bitOrder[in] bit order +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a7ac8b242e7e3cacf175e481889e047dd'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +boolean +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'noLatch'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '265'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract one wire shift out + @discussion protocol needs initialisation (fio_shiftOut1_init) + @param pin[in] digital pin + @param value[in] value to shift out, last byte is ignored and always shifted out LOW +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a5b4d1684030dc620938b7c2fbdf5ced8'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Register'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Bit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +boolean +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'noLatch'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '192'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract one wire shift out + @discussion protocol needs initialisation (fio_shiftOut1_init) + @param shift1Register[in] pins register + @param shift1Bit[in] pins bit + @param value[in] value to shift out, last byte is ignored and always shifted out LOW +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1a2d0e4495eb12504255bbd3f82405b17b'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1_init'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Register'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Bit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '182'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract initializes one wire shift out protocol + @discussion Puts pin to HIGH state and delays until Capacitors are charged. + @param shift1Register[in] pins register + @param shift1Bit[in] pins bit +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8cpp_1ae4b2e099f8ade9ee674d1565669e870a'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1_init'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + func-mem-desc-line = '177'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract initializes one wire shift out protocol + @discussion Puts pin to HIGH state and delays until Capacitors are charged. + @param pin[in] digital pin +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_fast_i_o_8h'; + file-name = 'FastIO.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a04971fe5fabe4129736708c494e08e6d'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'ATOMIC_BLOCK'; + define-mem-param = { + define-mem-def-name = 'dummy'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +if(true) +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '58'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a362c18b15a09703e42e1c246c47420ef'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'ATOMIC_RESTORESTATE'; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '59'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a89e1c62276052100c62b6c82a2e95622'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'fio_digitalWrite_HIGH'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'bit'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +digitalWrite(bit,HIGH) +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '143'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + This is where the magic happens that makes things fast. + Implemented as preprocessor directives to force inlining + SWITCH is fast for FIO but probably slow for FIO_FALLBACK so SWITCHTO is recommended if the value is known. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1ac8f00a1bccb98109531b88fbb6e91478'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'fio_digitalWrite_LOW'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'bit'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +digitalWrite(bit,LOW) +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '144'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a6d1dffed7f0c8f28f6c88146315f7832'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'fio_digitalWrite_SWITCH'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'bit'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +digitalWrite(bit, !digitalRead(bit)) +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '145'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1accae9687fdfc5f3492fb6344d62eb190'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'fio_digitalWrite_SWITCHTO'; + define-mem-param = { + define-mem-def-name = 'reg'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'bit'; + }; /* define-mem-def--param */ + define-mem-param = { + define-mem-def-name = 'val'; + }; /* define-mem-def--param */ + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +digitalWrite(bit,val); +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '146'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a32f90d0ad5c1295c97cc1e79936aadd6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'FIO_FALLBACK'; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '57'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_fast_i_o_8h_1a688a4adbb87520a2b68681bd6bfb199e'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SKIP'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x23 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + define-mem-desc-line = '42'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + typedef = { + typedef-member = { + typedef-mem-kind = 'typedef'; + typedef-mem-id = '_fast_i_o_8h_1a0a595a88b29bcfd1540b6fac75787937'; + typedef-mem-virt = normal; + typedef-mem-prot = public; + typedef-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + typedef-mem-name = 'fio_bit'; + typedef-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + typedef-mem-desc-line = '60'; + typedef-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + typedef-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* typedef-member */ + typedef-member = { + typedef-mem-kind = 'typedef'; + typedef-mem-id = '_fast_i_o_8h_1ae44ea3af54ef26db03f1ae2ea62f9c1f'; + typedef-mem-virt = normal; + typedef-mem-prot = public; + typedef-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + typedef-mem-name = 'fio_register'; + typedef-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + typedef-mem-desc-line = '61'; + typedef-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + typedef-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* typedef-member */ + }; + func = { + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a197336e47e1c3f929056ce3abbbc7e8d'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_digitalRead'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinBit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '158'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract direct digital read + @discussion without any checks + @discussion falls back to normal digitalRead if fast io is disabled + @param pinRegister[in] Register - ignored if fast io is disabled + @param pinBit[in] Bit - Pin if fast io is disabled + @result Value read from pin +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1ae91bbe682b02a5842c291055c0e998b5'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_digitalWrite'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pinBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '128'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract direct digital write + @discussion without any checks + @discussion falls back to normal digitalWrite if fast io is disabled + @param pinRegister[in] Register - ignored if fast digital write is disabled + @param pinBit[in] Bit - Pin if fast digital write is disabled + @param value[in] desired output +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a07a19dfbdca1afaca5d666bdaa3be7d5'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToBit'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '115'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Find the bit which belongs to specified pin + @discussion if fast digitalWrite is disabled this function returns the pin + @param pin[in] Number of a digital pin + @result Bit +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1afb934fc0ded94cbb5ed8ed14e2a123ed'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToInputRegister'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '106'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Get the input register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a385ae40d960c1a57e86818332476a802'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_pinToOutputRegister'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'initial_state'; + func-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LOW +_EnD_oF_dEf_TeXt_; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '97'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Get the output register for specified pin. + @discussion if fast digital IO is disabled this function returns NULL + @param pin[in] Number of a digital pin + @result Register +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a5d8d5977294d614d15bda19f75d6b787'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockBit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '184'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract faster shift out clear + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a56c72b9f00680662229895ab22aaa743'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'dataBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockRegister'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'clockBit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'bitOrder'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '172'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract faster shift out + @discussion using fast digital write + @discussion falls back to normal digitalWrite if fastio is disabled + @param dataRegister[in] Register of data pin - ignored if fast digital write is disabled + @param dataBit[in] Bit of data pin - Pin if fast digital write is disabled + @param clockRegister[in] Register of data pin - ignored if fast digital write is disabled + @param clockBit[in] Bit of data pin - Pin if fast digital write is disabled + @param bitOrder[in] bit order +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a33ce251dcd6b448185cda415a99001cf'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Register'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Bit'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +boolean +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'noLatch'; + func-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +false +_EnD_oF_dEf_TeXt_; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '194'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract one wire shift out + @discussion protocol needs initialisation (fio_shiftOut1_init) + @param shift1Register[in] pins register + @param shift1Bit[in] pins bit + @param value[in] value to shift out, last byte is ignored and always shifted out LOW +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1af2aac35d9a8ab7a2c87672f2c7cbbafb'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'value'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +boolean +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'noLatch'; + func-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +false +_EnD_oF_dEf_TeXt_; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '202'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract one wire shift out + @discussion protocol needs initialisation (fio_shiftOut1_init) + @param pin[in] digital pin + @param value[in] value to shift out, last byte is ignored and always shifted out LOW +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1a2d0e4495eb12504255bbd3f82405b17b'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1_init'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_register +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Register'; + }; /* func-mem-param--param */ + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +fio_bit +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'shift1Bit'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '210'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract initializes one wire shift out protocol + @discussion Puts pin to HIGH state and delays until Capacitors are charged. + @param shift1Register[in] pins register + @param shift1Bit[in] pins bit +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_fast_i_o_8h_1ae4b2e099f8ade9ee674d1565669e870a'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'fio_shiftOut1_init'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'pin'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + func-mem-desc-line = '217'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract initializes one wire shift out protocol + @discussion Puts pin to HIGH state and delays until Capacitors are charged. + @param pin[in] digital pin +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/FastIO.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_i2_c_i_o_8cpp'; + file-name = 'I2CIO.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_i2_c_i_o_8h'; + file-name = 'I2CIO.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_i2_c_i_o_8h_1a218dbde2f6fda8c5825e25da10864c71'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = '_I2CIO_VERSION'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +"1.0.0" +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + define-mem-desc-line = '32'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_l_c_d_8cpp'; + file-name = 'LCD.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_l_c_d_8h'; + file-name = 'LCD.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a0f50ae3b4bdb42dd5ad74b2c604a7515'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'BACKLIGHT_OFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '151'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Backlight off constant declaration + @discussion Used in combination with the setBacklight to swith off the + LCD backlight. @set setBacklight +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aa5bad1c51f5fac029f3deacfef48c54b'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'BACKLIGHT_ON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +255 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '159'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Backlight on constant declaration + @discussion Used in combination with the setBacklight to swith on the + LCD backlight. @set setBacklight +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab0d87e07831e7e4943caef187872123e'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'COMMAND'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '132'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aad9ae913bdfab20dd94ad04ee2d5b045'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'DATA'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +1 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '133'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aa1e30e32b6c2cf8d90a9281328472dbe'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'FOUR_BITS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +2 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '134'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ad25b138788d83e67f840588754e2df2f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'HOME_CLEAR_EXEC'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +2000 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '143'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Defines the duration of the home and clear commands + @discussion This constant defines the time it takes for the home and clear + commands in the LCD - Time in microseconds. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a8c85cf88d8af66a47c42249d81c94641'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_1LINE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '125'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a7987e93538df2819583ba43b81ddbb25'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_2LINE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '124'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab8c35d355d2372090c7a347e961c9224'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_4BITMODE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '123'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1abb3210156d88d3fe18c9352eb161fe42'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_5x10DOTS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '126'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a9ef57e724c1b846dae0f531aff6fb464'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_5x8DOTS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '127'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a59a57ca857dae5d89eb5f2a38c4ac6f0'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_8BITMODE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x10 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '122'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a4b28243034cec656b0ed490ba6979752'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BLINKOFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '111'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ac3b19d4e6553b9bbf18a23387e439206'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BLINKON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '110'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1acc3509bc0442b41e2b816555de473ed2'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CLEARDISPLAY'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '88'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract All these definitions shouldn't be used unless you are writing + a driver. + @discussion All these definitions are for driver implementation only and + shouldn't be used by applications. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ac21f0302ac4136775877d5f4759e4f74'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORMOVE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '116'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a32b194a3adaa0a0bb69acee2e6a754fa'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSOROFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '109'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab67f0adccde68de88eee0513fdfc4574'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '108'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a61f16a2b7550e4700f7898a7587c5594'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORSHIFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x10 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '92'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1adfb8b2b8b8a08d7313504d7a4f89d99f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYCONTROL'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '91'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab2f7b67abfac33f610acfd5d7a971f40'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYMOVE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '115'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a257ebe775cac7140cf82aa40d8ce545a'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYOFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '107'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a76236ae8317b34bbc98ea56bc0a2639c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '106'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ae7c6309fce6200bd7526d090a4a84dd0'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYLEFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '100'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a5597e1d5819ea2f0734ad4313abf6703'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYMODESET'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '90'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a43c26ba2e66880fac95ef640b56873ad'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYRIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '99'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a049ee97e98d04788c1da9a55590fbe42'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYSHIFTDECREMENT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '102'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aa2cf1d0f4a319e53c009cffe1184466c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYSHIFTINCREMENT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '101'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aaef882ae70d1f485cd132815d9716111'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_FUNCTIONSET'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x20 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '93'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aafb86adb0dfca1e65d65b2cd1946a009'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_MOVELEFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '118'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1acf5999180233790bb2c9902efde58f7f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_MOVERIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '117'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a154c86a887633d0f6d9988e4dbb1f419'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_RETURNHOME'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '89'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aae6ea856879c11dee58493184582a52f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_SETCGRAMADDR'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x40 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '94'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a15008b832807a208d9d88c74e6751ebf'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_SETDDRAMADDR'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '95'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + enum = { + enum-member = { + enum-mem-kind = 'enum'; + enum-mem-id = '_l_c_d_8h_1aeeef728bf4726268aa5e99391a1502bc'; + enum-mem-virt = normal; + enum-mem-prot = public; + enum-mem-name = 't_backlighPol'; + enum-mem-enum = { enum-name = POSITIVE; }; + enum-mem-enum = { enum-name = NEGATIVE; }; + enum-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + enum-mem-desc-line = '167'; + enum-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + enum-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* enum-member */ + }; + func = { + func-member = { + func-mem-kind = 'function'; + func-mem-id = '_l_c_d_8h_1a6eac41e4be58d7736ac0c19de225c0dc'; + func-mem-virt = normal; + func-mem-prot = public; + func-mem-type = <<_EnD_oF_dEf_TeXt_ +static void +_EnD_oF_dEf_TeXt_; + func-mem-name = 'waitUsec'; + func-mem-param = { + func-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint16_t +_EnD_oF_dEf_TeXt_; + func-mem-param-declname = 'uSec'; + }; /* func-mem-param--param */ + func-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + func-mem-desc-line = '72'; + func-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + func-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Enables disables fast waits for write operations for LCD + @discussion If defined, the library will avoid doing un-necessary waits. + this can be done, because the time taken by Arduino's slow digitalWrite + operations. If fast digitalIO operations, comment this line out or undefine + the mode. + + + @function + @abstract waits for a given time in microseconds (compilation dependent). + @discussion Waits for a given time defined in microseconds depending on + the FAST_MODE define. If the FAST_MODE is defined the call will return + inmediatelly. + @param uSec[in] time in microseconds. + @result None +_EnD_oF_dEf_TeXt_; + }; /* func-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal_8cpp'; + file-name = 'LiquidCrystal.cpp'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal_8cpp_1a31e1c14e8c2845dec3301f0ebd36b43c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_4BIT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +1 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + define-mem-desc-line = '45'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal_8cpp_1a57d84af8cf61ceee4eb91db77889f071'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_8BIT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + define-mem-desc-line = '46'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal_8cpp_1a65fa786d6e31fe8b1aa51784a9736581'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_NOBACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0xFF +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + define-mem-desc-line = '42'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal_8h'; + file-name = 'LiquidCrystal.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal_8h_1adebff0f00a59c9f9863bc196938d5726'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'EXEC_TIME'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +37 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + define-mem-desc-line = '42'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Command execution time on the LCD. + @discussion This defines how long a command takes to execute by the LCD. + The time is expressed in micro-seconds. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___i2_c_8cpp'; + file-name = 'LiquidCrystal_I2C.cpp'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a3d9bb178282c3cb69740c94ba1e48fed'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D4'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '88'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD dataline allocation this library only supports 4 bit LCD control + mode. + @discussion D4, D5, D6, D7 LCD data lines pin mapping of the extender module +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a2ddd4183d444d6d128cbdbd6269e4e0c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D5'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +1 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '89'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a79a18a7f5ccf7a7ca31f302bd62527a6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D6'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +2 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '90'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a2ba78f059a7ebebc95e7beef690e88d6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D7'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +3 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '91'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a22e6626f2c98ed902f8ded47f6438c05'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'EN'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +6 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '66'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Enable bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Enable +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1ac059d24dfe9c1e1f7c07cb7869a1833b'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0xFF +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '55'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD_BACKLIGHT + @discussion BACKLIGHT MASK used when backlight is on +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1a65fa786d6e31fe8b1aa51784a9736581'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_NOBACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '48'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD_NOBACKLIGHT + @discussion NO BACKLIGHT MASK +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1af8903d8eea3868940c60af887473b152'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'RS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +4 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '80'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Register bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Register select pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8cpp_1afc4ded33ac0ca43defcce639e965748a'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'RW'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +5 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + define-mem-desc-line = '73'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Read/Write bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Rw pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___i2_c_8h'; + file-name = 'LiquidCrystal_I2C.h'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r_8cpp'; + file-name = 'LiquidCrystal_SR.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r_8h'; + file-name = 'LiquidCrystal_SR.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r_8h_1a0075b041d82abb47f279dce482e7b087'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR_EN_BIT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + define-mem-desc-line = '92'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r_8h_1afdaa2bbb2cc185700864ac8d7a570ced'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR_RS_BIT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + define-mem-desc-line = '91'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r_8h_1a40fb1f76bc5f8ca9e6534b47bd6da27c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'TWO_WIRE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +204 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + define-mem-desc-line = '90'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r2_w_8cpp'; + file-name = 'LiquidCrystal_SR2W.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r2_w_8h'; + file-name = 'LiquidCrystal_SR2W.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r2_w_8h_1a53e3add69865ae57ca872cb41fcae9e3'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR2W_BL_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + define-mem-desc-line = '132'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r2_w_8h_1a7cf86f2a173473d01e02b2ac786a8690'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR2W_DATA_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x78 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + define-mem-desc-line = '134'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r2_w_8h_1a8d17b6abb5bcde6883dbdc86d34be9d8'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR2W_EN_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + define-mem-desc-line = '135'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r2_w_8h_1acce98b026d9fdcb2e126705c14af7500'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'SR2W_RS_MASK'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + define-mem-desc-line = '133'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR2W.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r3_w_8cpp'; + file-name = 'LiquidCrystal_SR3W.cpp'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a3d9bb178282c3cb69740c94ba1e48fed'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D4'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '126'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD dataline allocation this library only supports 4 bit LCD control + mode. + @discussion D4, D5, D6, D7 LCD data lines pin mapping of the extender module +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a2ddd4183d444d6d128cbdbd6269e4e0c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D5'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +1 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '127'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a79a18a7f5ccf7a7ca31f302bd62527a6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D6'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +2 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '128'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a2ba78f059a7ebebc95e7beef690e88d6'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'D7'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +3 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '129'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a22e6626f2c98ed902f8ded47f6438c05'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'EN'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +4 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '104'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Enable bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Enable +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1ac059d24dfe9c1e1f7c07cb7869a1833b'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0xFF +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '93'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD_BACKLIGHT + @discussion BACKLIGHT MASK used when backlight is on +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1a65fa786d6e31fe8b1aa51784a9736581'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_NOBACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '86'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract LCD_NOBACKLIGHT + @discussion No BACKLIGHT MASK +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1af8903d8eea3868940c60af887473b152'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'RS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +6 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '118'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Register bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Register select pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___s_r3_w_8cpp_1afc4ded33ac0ca43defcce639e965748a'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'RW'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +5 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + define-mem-desc-line = '111'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Read/Write bit of the LCD + @discussion Defines the IO of the expander connected to the LCD's Rw pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___s_r3_w_8h'; + file-name = 'LiquidCrystal_SR3W.h'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR3W.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ diff --git a/libraries/LiquidCrystal/utility/docs/def/doxygen.def.txt b/libraries/LiquidCrystal/utility/docs/def/doxygen.def.txt new file mode 100644 index 0000000000000000000000000000000000000000..8f4275fb47651d73d94a4354464b94ee3175bd46 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/def/doxygen.def.txt @@ -0,0 +1,2897 @@ +AutoGen Definitions dummy; +class = { + cp-id = 'class_i2_c_i_o'; + cp-name = 'I2CIO'; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a32eb7832075ad6011d67874405a0d0a6'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'I2CIO'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '51'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Constructor method + @discussion Class constructor constructor. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a6f814653d903dc2ff6e8420eeb7954ae'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'i2cAddr'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '63'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the device. + @discussion This method initializes the device allocating an I2C address. + This method is the first method that should be call prior to calling any + other method form this class. On initialization all pins are configured + as INPUT on the device. + @param i2cAddr: I2C Address where the device is located. + @result 1 if the device was initialized correctly, 0 otherwise +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a53b94274eb6bb68564cf5243323db887'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pinMode'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'dir'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '73'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Sets the mode of a particular pin. + @discussion Sets the mode of a particular pin to INPUT, OUTPUT. digitalWrite + has no effect on pins which are not declared as output. + @param pin: Pin from the I2C IO expander to be configured. Range 0..7 + @param dir: Pin direction (INPUT, OUTPUT). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a0341888753bc54c4384f5593a870fb34'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'portMode'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'dir'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '83'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Sets all the pins of the device in a particular direction. + @discussion This method sets all the pins of the device in a particular + direction. This method is useful to set all the pins of the device to be + either inputs or outputs. + @param dir: Direction of all the pins of the device (INPUT, OUTPUT). +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a7a3db7bfc15ede0ae9e8c8bd44290ef7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'read'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '93'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Reads all the pins of the device that are configured as INPUT. + @discussion Reads from the device the status of the pins that are configured + as INPUT. During initialization all pins are configured as INPUTs by default. + Please refer to pinMode or portMode. + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1ac26221011a8b49bcea9ef62712ea88a7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'digitalRead'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '106'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Read a pin from the device. + @discussion Reads a particular pin from the device. To read a particular + pin it has to be configured as INPUT. During initialization all pins are + configured as INPUTs by default. Please refer to pinMode or portMode. + @param pin: Pin from the port to read its status. Range (0..7) + @result Returns the pin status (HIGH, LOW) if the pin is configured + as an output, reading its value will always return LOW regardless of its + real state. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1ae2063569c927d0008e2593d14504fdcd'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '120'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Write a value to the device. + @discussion Writes to a set of pins in the device. The value is the binary + representation of all the pins in device. The value written is masked with + the configuration of the direction of the pins; to change the state of + a particular pin with this method, such pin has to be configured as OUTPUT + using the portMode or pinMode methods. If no pins have been configured as + OUTPUTs this method will have no effect. + @param value: value to be written to the device. + @result 1 on success, 0 otherwise +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_i2_c_i_o_1a473206162522b847546777d16a7c6dcd'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'digitalWrite'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'pin'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'level'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '132'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes a digital level to a particular pin. + @discussion Write a level to the indicated pin of the device. For this + method to have effect, the pin has to be configured as OUTPUT using the + pinMode or portMode methods. + @param pin: device pin to change level. Range (0..7). + @para level: logic level to set the pin at (HIGH, LOW). + @result 1 on success, 0 otherwise. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1abcd6f7f5f176f965d8ae535afa9f6cec'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_shadow'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '137'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1a283a99ef1c6f58fa8a0489089cba9682'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_dirMask'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '138'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1ade58da873af4240a53053ef5f12a2728'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_i2cAddr'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '139'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_i2_c_i_o_1a8c566f3fd332eefe4db57cbe6b69337c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +bool +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_initialised'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + sec-mem-desc-line = '140'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + cp-fileline = '44'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_l_c_d'; + cp-name = 'LCD'; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-ref = { + ref-type = derived; + ref-id = 'class_liquid_crystal___i2_c'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a00bb2db1390721abc7b24ac4b8c276c8'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LCD'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '104'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract LiquidCrystal abstract constructor. + @discussion LiquidCrystal class abstract constructor needed to create + the base abstract class. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a5b7aee49867828a0160a142b9109c07a'; + sec-mem-virt = pure-virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'cols'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rows'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charsize'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '120'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract LCD initialization. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class. + + This method is pure abstract, it is dependent on each derived class from + this base class to implement the internals of how the LCD is initialized + and configured. + + @param cols the number of columns that the display has + @param rows the number of rows that the display has +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1afa699e0beeeee03cce8cef87eba81c4a'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'clear'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '132'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Clears the LCD. + @discussion Clears the LCD screen and positions the cursor in the upper-left + corner. + + This operation is time consuming for the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aee45ad37f09312f5d9982257e2d37e68'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'home'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '145'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Sets the cursor to the upper-left corner. + @discussion Positions the cursor in the upper-left of the LCD. + That is, use that location in outputting subsequent text to the display. + To also clear the display, use the clear() function instead. + + This operation is time consuming for the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1af3974da6d988ba2d21c25135ada12108'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noDisplay'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '155'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off the LCD display. + @discussion Turns off the LCD display, without losing the text currently + being displayed on it. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a5b07cf05e8e5e7c53654f5ca0cf58b89'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'display'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '166'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns on the LCD display. + @discussion Turns on the LCD display, after it's been turned off with + noDisplay(). This will restore the text (and cursor location) that was on + the display prior to calling noDisplay(). + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a3b755c4b397b5985752be8c30ee1a9b5'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noBlink'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '174'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off the blinking of the LCD cursor. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a878b36878fa8287093964eba83aace77'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'blink'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '184'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Display the cursor of the LCD. + @discussion Display the blinking LCD cursor. If used in combination with + the cursor() function, the result will depend on the particular display. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1aec8ffaa1e69c7a6e13ac0cfbc29151d9'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noCursor'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '192'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Hides the LCD cursor. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a194814f64dfa50a90e07e0fe0d361620'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'cursor'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '202'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Display the LCD cursor. + @discussion Display the LCD cursor: an underscore (line) at the location + where the next character will be written. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a6f3a503055b3b8dcf0f61b2633c584f7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'scrollDisplayLeft'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '211'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Scrolls the contents of the display (text and cursor) one space + to the left. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1abfc44b294772f09020bfa32af8a79571'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'scrollDisplayRight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '220'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Scrolls the contents of the display (text and cursor) one space + to the right. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a238e9f6476dc7df64af04eb6c87f6ac7'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'leftToRight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '233'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Set the direction for text written to the LCD to left-to-right. + @discussion Set the direction for text written to the LCD to left-to-right. + All subsequent characters written to the display will go from left to right, + but does not affect previously-output text. + + This is the default configuration. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1ac014830eadc26bfd86308ea8734f4428'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'rightToLeft'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '246'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Set the direction for text written to the LCD to right-to-left. + @discussion Set the direction for text written to the LCD to right-to-left. + All subsequent characters written to the display will go from right to left, + but does not affect previously-output text. + + left-to-right is the default configuration. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1abb3ed88d530f6283e6159b4973e7da9e'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'autoscroll'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '261'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns on automatic scrolling of the LCD. + @discussion Turns on automatic scrolling of the LCD. This causes each + character output to the display to push previous characters over by one + space. If the current text direction is left-to-right (the default), + the display scrolls to the left; if the current direction is right-to-left, + the display scrolls to the right. + This has the effect of outputting each new character to the same location on + the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a96035dde40efbf73390e00b5beb00231'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noAutoscroll'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '271'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Turns off automatic scrolling of the LCD. + @discussion Turns off automatic scrolling of the LCD, this is the default + configuration of the LCD. + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a91cba8f93c692abcddf8bc3de58d2d3a'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'createChar'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'location'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charmap'; + sec-mem-param-array = '[]'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '289'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Creates a custom character for use on the LCD. + @discussion Create a custom character (glyph) for use on the LCD. + Most chipsets only support up to eight characters of 5x8 pixels. Therefore, + this methods has been limited to locations (numbered 0 to 7). + + The appearance of each custom character is specified by an array of eight + bytes, one for each row. The five least significant bits of each byte + determine the pixels in that row. To display a custom character on screen, + write()/print() its number, i.e. lcd.print (char(x)); // Where x is 0..7. + + @param location: LCD memory location of the character to create + (0 to 7) + @param charmap: the bitmap array representing each row of the character. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a48220450fd152b25994eb7d0ba340e8d'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'setCursor'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'col'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'row'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '300'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Position the LCD cursor. + @discussion Sets the position of the LCD cursor. Set the location at which + subsequent text written to the LCD will be displayed. + + @param col LCD column + @param row LCD row - line. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a31a0cb42497d83cdc9cb8000828f7190'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'command'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '314'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a command to the LCD. + @discussion This method sends a command to the LCD by setting the Register + select line of the LCD. + + This command shouldn't be used to drive the LCD, only to implement any other + feature that is not available on this library. + + @param value Command value to send to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1acf471f0d9fea7ea3f5c3279519c8b32c'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +size_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '327'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Writes to the LCD. + @discussion This method writes character to the LCD in the current cursor + position. + + This is the virtual write method, implemented in the Print class, therefore + all Print class methods will end up calling this method. + + @param value Value to write to the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_l_c_d_1a121fac7d916284d71af8b1fdd9ade2f6'; + sec-mem-virt = pure-virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '342'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD. This is a pure abstract + method, therefore, it is implementation dependent of each derived class how + to physically write to the LCD. + + Users should never call this method. + + @param value Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'protected-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1aef093ba3f8e1016267b40ac235a0fa0f'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displayfunction'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '349'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1ae47a0e2eff74431a39774b788d5761f4'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displaycontrol'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '351'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1a726b9a68d091dd8683a18e83f3a8fd3c'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_displaymode'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '353'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_l_c_d_1ac1374911fb145fea430c21092ada0c06'; + sec-mem-virt = normal; + sec-mem-prot = protected; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_numlines'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + sec-mem-desc-line = '354'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + cp-fileline = '95'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 2; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 3; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + node = { + node-id = 4; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '2'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal'; + cp-name = 'LiquidCrystal'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a49d2bd8d26031a1c83bcbd73978a1686'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '50'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract 8 bit LCD constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a30e3d865c4b4a003a36cb45903f93644'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '53'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a0a0a8dfa7a2e775a031fd65f5c6366ec'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '62'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract 4 bit LCD constructors. + @discussion Defines the pin assignment that the LCD will have. + The constructor does not initialize the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a23124e6dd5ac4a9b6147629b96e91953'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '64'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1adb5f37d69809ed7c0772c74a4adff19b'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'cols'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rows'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charsize'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '79'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract LCD initialization. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class. + + @param cols: the number of columns that the display has + @param rows: the number of rows that the display has + @param charsize: size of the characters of the LCD: LCD_5x8DOTS or + LCD_5x10DOTS. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a56142f8b3753bedd133e4139e5eb5089'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '93'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value Value to send to the LCD. + @result mode LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1ae45eec827b26174f73e9cf3ddda635af'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'fourbitmode'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rs'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rw'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'enable'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd0'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd1'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd2'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd3'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd4'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd5'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd6'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'd7'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '105'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD pin allocation + @discussion Initializes the LCD pin allocation and configuration. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1adebd21f2955b1e193a6d24367833fd63'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write8bits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '112'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes an 8 bit value to the LCD. + @discussion Writes 8 bits to the LCD control data lines. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a52837217db49272eea03c9056cab36a8'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write4bits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '119'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal_1a44d84c010396c993f124d2feb9dc794d'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pulseEnable'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '127'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1affd20665bda00d8b0e37d5ee87543e81'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_rs_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '129'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1a29061eaa64c2e9f3b985ff52249b62a9'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_rw_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '130'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1aef7d920abae32b5faa2625ffa3879c4b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_enable_pin'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '131'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal_1a0b2da39d056aed9940b0525e554668d7'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_data_pins'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + sec-mem-desc-line = '132'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + cp-fileline = '40'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 7; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 6; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '7'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 9; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 8; + node-label = 'LiquidCrystal'; + node-link = { + node-link-id = 'class_liquid_crystal'; + }; + node-child = { + child-id = '9'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +class = { + cp-id = 'class_liquid_crystal___i2_c'; + cp-name = 'LiquidCrystal_I2C'; + cp-ref = { + ref-type = base; + ref-id = 'class_l_c_d'; + ref-prot = public; + ref-virt = non-virtual; + }; + cp-section = { + sec-kind = 'public-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aac537d195557e0b8afac1a71441a484c'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'LiquidCrystal_I2C'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'lcd_Addr'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '84'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Class constructor. + @discussion Initializes class variables and defines the I2C address of the + LCD. The constructor does not initialize the LCD. + + @param lcd_Addr: I2C address of the IO expansion module. For I2CLCDextraIO, + the address can be configured using the on board jumpers. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aeee2ada537f0cfbfda8613324b57c4a6'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'begin'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'cols'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'rows'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'charsize'; + sec-mem-param-defval = <<_EnD_oF_dEf_TeXt_ +LCD_5x8DOTS +_EnD_oF_dEf_TeXt_; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '98'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract LCD initialization. + @discussion Initializes the LCD to a given size (col, row). This methods + initializes the LCD, therefore, it MUST be called prior to using any other + method from this class. + + @param cols: the number of columns that the display has + @param rows: the number of rows that the display has + @param charsize: size of the characters of the LCD: LCD_5x8DOTS or + LCD_5x10DOTS. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a8bf1fab7efe13e8b17b96c42d1f810b4'; + sec-mem-virt = virtual; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +virtual void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'send'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-declname = 'mode'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '112'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Send a particular value to the LCD. + @discussion Sends a particular value to the LCD for writing to the LCD or + as an LCD command. + + Users should never call this method. + + @param value: Value to send to the LCD. + @result mode: LOW - write to the LCD CGRAM, HIGH - write a command to + the LCD. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a576f1f5813f55f34333d6d7e9fe53ad3'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'noBacklight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '122'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-off the LCD backlight. + @discussion Switch-off the LCD backlight, this method is not supported by + the I2CLCDextraIO, it needs an extra IO pin to drive the LCD backlight + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a9f296e0d26f8b6a4509d8d4b9d738c03'; + sec-mem-virt = normal; + sec-mem-prot = public; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'backlight'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '132'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @function + @abstract Switch-on the LCD backlight. + @discussion Switch-on the LCD backlight, this method is not supported by + the I2CLCDextraIO, it needs an extra IO pin to drive the LCD backlight + + @param none +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-func'; + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a459c4fa106fb7bac5940e3c6aea736af'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +int +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'init'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '142'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Initializes the LCD class + @discussion Initializes the LCD class and IO expansion module. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1aebb0b9f000b94cc3ab026e0154d6ecef'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'write4bits'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-defname = 'value'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '149'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes an 4 bit value to the LCD. + @discussion Writes 4 bits (the least significant) to the LCD control data lines. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a1d715dbf40f06b4c15004cd356b5a321'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'pulseEnable'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-defname = '_data'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '157'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Pulse the LCD enable line (En). + @discussion Sends a pulse of 1 uS to the Enable pin to execute an command + or write operation. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'function'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a4c63780ceef67e90750d3e4bbdb83402'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +void +_EnD_oF_dEf_TeXt_; + sec-mem-name = 'expanderWrite'; + sec-mem-param = { + sec-mem-param-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-param-defname = '_data'; + }; /* sec-mem-param--param */ + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '165'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @method + @abstract Writes to the expansion module. + @discussion Writes a byte to the IO expansion module. This will be applied + to all its outputs. +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-section = { + sec-kind = 'private-attrib'; + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1a0bb3cc7ec414b373ef00e0cc6642ec88'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_Addr'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '167'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1af99934fdb39403e02d68981ad8366e6b'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_cols'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '168'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1adb3edf6c68b018a37293a926c4816127'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_rows'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '169'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1af63a2b732d345d55abfcb83bf962c8d3'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +uint8_t +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_backlightval'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '170'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + sec-member = { + sec-mem-kind = 'variable'; + sec-mem-id = 'class_liquid_crystal___i2_c_1adcc89f14c444ff086f544f33fc18ca4c'; + sec-mem-virt = normal; + sec-mem-prot = private; + sec-mem-type = <<_EnD_oF_dEf_TeXt_ +I2CIO +_EnD_oF_dEf_TeXt_; + sec-mem-name = '_i2cio'; + sec-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + sec-mem-desc-line = '171'; + sec-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + sec-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* sec-member */ + }; /* cp-section */ + cp-filename = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + cp-fileline = '72'; + cp-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 11; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 10; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '11'; + relation = public-inheritance; + }; /* node-child */ + }; /* node */ + +_EnD_oF_dEf_TeXt_; + cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_ + node = { + node-id = 13; + node-label = 'LCD'; + node-link = { + node-link-id = 'class_l_c_d'; + }; + }; /* node */ + node = { + node-id = 12; + node-label = 'LiquidCrystal_I2C'; + node-link = { + node-link-id = 'class_liquid_crystal___i2_c'; + }; + node-child = { + child-id = '13'; + relation = public-inheritance; + }; /* node-child */ + node-child = { + child-id = '14'; + relation = usage; + edgelabel = <<_EnD_oF_dEf_TeXt_ +_i2cio +_EnD_oF_dEf_TeXt_; + }; /* node-child */ + }; /* node */ + node = { + node-id = 14; + node-label = 'I2CIO'; + node-link = { + node-link-id = 'class_i2_c_i_o'; + }; + }; /* node */ + +_EnD_oF_dEf_TeXt_; +}; /* class */ +file = { + file-id = '_i2_c_i_o_8cpp'; + file-name = 'I2CIO.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_i2_c_i_o_8h'; + file-name = 'I2CIO.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_i2_c_i_o_8h_1a218dbde2f6fda8c5825e25da10864c71'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = '_I2CIO_VERSION'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +"1.0.0" +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + define-mem-desc-line = '34'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/I2CIO.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_l_c_d_8cpp'; + file-name = 'LCD.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_l_c_d_8h'; + file-name = 'LCD.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1acc3509bc0442b41e2b816555de473ed2'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CLEARDISPLAY'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '53'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract All these definitions shouldn't be used unless you are writing + a driver. + @discussion All these definitions are for driver implementation only and + shouldn't be used by applications. +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a154c86a887633d0f6d9988e4dbb1f419'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_RETURNHOME'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '54'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a5597e1d5819ea2f0734ad4313abf6703'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYMODESET'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '55'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1adfb8b2b8b8a08d7313504d7a4f89d99f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYCONTROL'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '56'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a61f16a2b7550e4700f7898a7587c5594'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORSHIFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x10 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '57'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aaef882ae70d1f485cd132815d9716111'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_FUNCTIONSET'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x20 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '58'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aae6ea856879c11dee58493184582a52f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_SETCGRAMADDR'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x40 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '59'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a15008b832807a208d9d88c74e6751ebf'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_SETDDRAMADDR'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '60'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a43c26ba2e66880fac95ef640b56873ad'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYRIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '64'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ae7c6309fce6200bd7526d090a4a84dd0'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYLEFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '65'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aa2cf1d0f4a319e53c009cffe1184466c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYSHIFTINCREMENT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '66'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a049ee97e98d04788c1da9a55590fbe42'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_ENTRYSHIFTDECREMENT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '67'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a76236ae8317b34bbc98ea56bc0a2639c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '71'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a257ebe775cac7140cf82aa40d8ce545a'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYOFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '72'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab67f0adccde68de88eee0513fdfc4574'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x02 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '73'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a32b194a3adaa0a0bb69acee2e6a754fa'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSOROFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '74'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ac3b19d4e6553b9bbf18a23387e439206'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BLINKON'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x01 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '75'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a4b28243034cec656b0ed490ba6979752'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BLINKOFF'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '76'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab2f7b67abfac33f610acfd5d7a971f40'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_DISPLAYMOVE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '80'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ac21f0302ac4136775877d5f4759e4f74'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_CURSORMOVE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '81'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1acf5999180233790bb2c9902efde58f7f'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_MOVERIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '82'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1aafb86adb0dfca1e65d65b2cd1946a009'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_MOVELEFT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '83'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a59a57ca857dae5d89eb5f2a38c4ac6f0'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_8BITMODE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x10 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '87'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1ab8c35d355d2372090c7a347e961c9224'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_4BITMODE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '88'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a7987e93538df2819583ba43b81ddbb25'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_2LINE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x08 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '89'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a8c85cf88d8af66a47c42249d81c94641'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_1LINE'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '90'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1abb3210156d88d3fe18c9352eb161fe42'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_5x10DOTS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x04 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '91'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_l_c_d_8h_1a9ef57e724c1b846dae0f531aff6fb464'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_5x8DOTS'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + define-mem-desc-line = '92'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LCD.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal_8cpp'; + file-name = 'LiquidCrystal.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal_8h'; + file-name = 'LiquidCrystal.h'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___i2_c_8cpp'; + file-name = 'LiquidCrystal_I2C.cpp'; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.cpp'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ +file = { + file-id = '_liquid_crystal___i2_c_8h'; + file-name = 'LiquidCrystal_I2C.h'; + define = { + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8h_1ac059d24dfe9c1e1f7c07cb7869a1833b'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_BACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x00 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + define-mem-desc-line = '41'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8h_1a65fa786d6e31fe8b1aa51784a9736581'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'LCD_NOBACKLIGHT'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +0x80 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + define-mem-desc-line = '42'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8h_1ab5ef25ebfe582f7bf0d93e2770548e2c'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'En'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +B01000000 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + define-mem-desc-line = '54'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @warning These definitions will have to be changed should the IOExpander be + connected differently to this default. + + + @defined + @abstract Enable bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Enable +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8h_1a98b6a2661a04ebbc1b3f38da70306814'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'Rw'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +B00100000 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + define-mem-desc-line = '61'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Read/Write bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Rw pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + define-member = { + define-mem-kind = 'define'; + define-mem-id = '_liquid_crystal___i2_c_8h_1a345d1a871beb9e772c3bf9ef75412bb5'; + define-mem-virt = normal; + define-mem-prot = public; + define-mem-name = 'Rs'; + define-mem-initializer = <<_EnD_oF_dEf_TeXt_ +B00010000 +_EnD_oF_dEf_TeXt_; + define-mem-desc-file = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + define-mem-desc-line = '68'; + define-mem-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + define-mem-documentation = <<_EnD_oF_dEf_TeXt_ + @defined + @abstract Register bit of the LCD + @discussion Defines the IO of the expander connected to the LCD Register select pin +_EnD_oF_dEf_TeXt_; + }; /* define-member */ + }; + file-full-name = '/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_I2C.h'; + file-first-line = '1'; + file-briefdesc = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; + file-documentation = <<_EnD_oF_dEf_TeXt_ + +_EnD_oF_dEf_TeXt_; +}; /* file */ diff --git a/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..94260bff328ce8f2f756c4ea6af524c945667d4b --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8cpp.html @@ -0,0 +1,576 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: FastIO.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_fast_i_o_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">FastIO.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +</div> +<p><a href="_fast_i_o_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#a83fc2fdc19ab3f9aade9e1a2f39e81a6">fio_digitalRead</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> pinRegister, uint8_t pinBit)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#ae91bbe682b02a5842c291055c0e998b5">fio_digitalWrite</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> pinRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> pinBit, uint8_t value)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a> (uint8_t pin)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#afb934fc0ded94cbb5ed8ed14e2a123ed">fio_pinToInputRegister</a> (uint8_t pin)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a> (uint8_t pin, uint8_t initial_state)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#a5d8d5977294d614d15bda19f75d6b787">fio_shiftOut</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> dataRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> dataBit, <a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> clockRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> clockBit)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> dataRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> dataBit, <a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> clockRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> clockBit, uint8_t value, uint8_t bitOrder)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#a7ac8b242e7e3cacf175e481889e047dd">fio_shiftOut1</a> (uint8_t pin, uint8_t value, boolean noLatch)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#a5b4d1684030dc620938b7c2fbdf5ced8">fio_shiftOut1</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> shift1Register, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> shift1Bit, uint8_t value, boolean noLatch)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#a2d0e4495eb12504255bbd3f82405b17b">fio_shiftOut1_init</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> shift1Register, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> shift1Bit)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8cpp.html#ae4b2e099f8ade9ee674d1565669e870a">fio_shiftOut1_init</a> (uint8_t pin)</td></tr> +</table> +<hr/><h2>Function Documentation</h2> +<a class="anchor" id="a83fc2fdc19ab3f9aade9e1a2f39e81a6"></a><!-- doxytag: member="FastIO.cpp::fio_digitalRead" ref="a83fc2fdc19ab3f9aade9e1a2f39e81a6" args="(fio_register pinRegister, uint8_t pinBit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int fio_digitalRead </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>pinRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>pinBit</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>direct digital read without any checks falls back to normal digitalRead if fast io is disabled </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pinRegister[in]</td><td>Register - ignored if fast io is disabled </td></tr> + <tr><td class="paramname">pinBit[in]</td><td>Bit - Pin if fast io is disabled </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>Value read from pin </dd></dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00095">95</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ae91bbe682b02a5842c291055c0e998b5"></a><!-- doxytag: member="FastIO.cpp::fio_digitalWrite" ref="ae91bbe682b02a5842c291055c0e998b5" args="(fio_register pinRegister, fio_bit pinBit, uint8_t value)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_digitalWrite </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>pinRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>pinBit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>direct digital write without any checks falls back to normal digitalWrite if fast io is disabled </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pinRegister[in]</td><td>Register - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">pinBit[in]</td><td>Bit - Pin if fast digital write is disabled </td></tr> + <tr><td class="paramname">value[in]</td><td>desired output </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00076">76</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a07a19dfbdca1afaca5d666bdaa3be7d5"></a><!-- doxytag: member="FastIO.cpp::fio_pinToBit" ref="a07a19dfbdca1afaca5d666bdaa3be7d5" args="(uint8_t pin)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> fio_pinToBit </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em></td><td>)</td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Find the bit which belongs to specified pin if fast digitalWrite is disabled this function returns the pin </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Number of a digital pin </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>Bit </dd></dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00065">65</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="afb934fc0ded94cbb5ed8ed14e2a123ed"></a><!-- doxytag: member="FastIO.cpp::fio_pinToInputRegister" ref="afb934fc0ded94cbb5ed8ed14e2a123ed" args="(uint8_t pin)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> fio_pinToInputRegister </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em></td><td>)</td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Get the input register for specified pin. if fast digital IO is disabled this function returns NULL </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Number of a digital pin </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>Register </dd></dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00052">52</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a04210cc785c3b4a11c86f794949c327f"></a><!-- doxytag: member="FastIO.cpp::fio_pinToOutputRegister" ref="a04210cc785c3b4a11c86f794949c327f" args="(uint8_t pin, uint8_t initial_state)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> fio_pinToOutputRegister </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>initial_state</em> = <code>LOW</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Get the output register for specified pin. if fast digital IO is disabled this function returns NULL </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Number of a digital pin </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>Register </dd></dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00035">35</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a5d8d5977294d614d15bda19f75d6b787"></a><!-- doxytag: member="FastIO.cpp::fio_shiftOut" ref="a5d8d5977294d614d15bda19f75d6b787" args="(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>dataRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>dataBit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>clockRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>clockBit</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>faster shift out clear using fast digital write falls back to normal digitalWrite if fastio is disabled </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">dataRegister[in]</td><td>Register of data pin - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">dataBit[in]</td><td>Bit of data pin - Pin if fast digital write is disabled </td></tr> + <tr><td class="paramname">clockRegister[in]</td><td>Register of data pin - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">clockBit[in]</td><td>Bit of data pin - Pin if fast digital write is disabled </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00159">159</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a56c72b9f00680662229895ab22aaa743"></a><!-- doxytag: member="FastIO.cpp::fio_shiftOut" ref="a56c72b9f00680662229895ab22aaa743" args="(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit, uint8_t value, uint8_t bitOrder)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>dataRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>dataBit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>clockRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>clockBit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>bitOrder</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>faster shift out using fast digital write falls back to normal digitalWrite if fastio is disabled </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">dataRegister[in]</td><td>Register of data pin - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">dataBit[in]</td><td>Bit of data pin - Pin if fast digital write is disabled </td></tr> + <tr><td class="paramname">clockRegister[in]</td><td>Register of data pin - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">clockBit[in]</td><td>Bit of data pin - Pin if fast digital write is disabled </td></tr> + <tr><td class="paramname">bitOrder[in]</td><td>bit order </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00108">108</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a7ac8b242e7e3cacf175e481889e047dd"></a><!-- doxytag: member="FastIO.cpp::fio_shiftOut1" ref="a7ac8b242e7e3cacf175e481889e047dd" args="(uint8_t pin, uint8_t value, boolean noLatch)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut1 </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">boolean </td> + <td class="paramname"><em>noLatch</em> = <code>false</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>one wire shift out protocol needs initialisation (fio_shiftOut1_init) </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>digital pin </td></tr> + <tr><td class="paramname">value[in]</td><td>value to shift out, last byte is ignored and always shifted out LOW </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00264">264</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a5b4d1684030dc620938b7c2fbdf5ced8"></a><!-- doxytag: member="FastIO.cpp::fio_shiftOut1" ref="a5b4d1684030dc620938b7c2fbdf5ced8" args="(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, boolean noLatch)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut1 </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>shift1Register</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>shift1Bit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">boolean </td> + <td class="paramname"><em>noLatch</em> = <code>false</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>one wire shift out protocol needs initialisation (fio_shiftOut1_init) </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">shift1Register[in]</td><td>pins register </td></tr> + <tr><td class="paramname">shift1Bit[in]</td><td>pins bit </td></tr> + <tr><td class="paramname">value[in]</td><td>value to shift out, last byte is ignored and always shifted out LOW </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00190">190</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a2d0e4495eb12504255bbd3f82405b17b"></a><!-- doxytag: member="FastIO.cpp::fio_shiftOut1_init" ref="a2d0e4495eb12504255bbd3f82405b17b" args="(fio_register shift1Register, fio_bit shift1Bit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut1_init </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>shift1Register</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>shift1Bit</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>initializes one wire shift out protocol Puts pin to HIGH state and delays until Capacitors are charged. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">shift1Register[in]</td><td>pins register </td></tr> + <tr><td class="paramname">shift1Bit[in]</td><td>pins bit </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00181">181</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ae4b2e099f8ade9ee674d1565669e870a"></a><!-- doxytag: member="FastIO.cpp::fio_shiftOut1_init" ref="ae4b2e099f8ade9ee674d1565669e870a" args="(uint8_t pin)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut1_init </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em></td><td>)</td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>initializes one wire shift out protocol Puts pin to HIGH state and delays until Capacitors are charged. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>digital pin </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00176">176</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_fast_i_o_8cpp.html">FastIO.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..dc0cf2c09c699d31718e03fb8397f361795450a6 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8cpp_source.html @@ -0,0 +1,378 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: FastIO.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_fast_i_o_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">FastIO.cpp</div> </div> +</div> +<div class="contents"> +<a href="_fast_i_o_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by Florian Fida on 20/01/12</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2012 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">// http://creativecommons.org/licenses/by-sa/3.0/</span> +<a name="l00006"></a>00006 <span class="comment">//</span> +<a name="l00007"></a>00007 <span class="comment">// This software is furnished "as is", without technical support, and with no</span> +<a name="l00008"></a>00008 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00009"></a>00009 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00010"></a>00010 <span class="comment">// fio_shiftOut1 functions are based on Shif1 protocol developed by Roman Black </span> +<a name="l00011"></a>00011 <span class="comment">// (http://www.romanblack.com/shift1.htm)</span> +<a name="l00012"></a>00012 <span class="comment">//</span> +<a name="l00013"></a>00013 <span class="comment">// Thread Safe: No</span> +<a name="l00014"></a>00014 <span class="comment">// Extendable: Yes</span> +<a name="l00015"></a>00015 <span class="comment">//</span> +<a name="l00016"></a>00016 <span class="comment">// @file FastIO.h</span> +<a name="l00017"></a>00017 <span class="comment">// This file implements basic fast IO routines.</span> +<a name="l00018"></a>00018 <span class="comment">// </span> +<a name="l00019"></a>00019 <span class="comment">// @brief </span> +<a name="l00020"></a>00020 <span class="comment">//</span> +<a name="l00021"></a>00021 <span class="comment">// @version API 1.0.0</span> +<a name="l00022"></a>00022 <span class="comment">//</span> +<a name="l00023"></a>00023 <span class="comment">// @author Florian Fida -</span> +<a name="l00024"></a>00024 <span class="comment">//</span> +<a name="l00025"></a>00025 <span class="comment">// 2012-03-16 bperrybap updated fio_shiftout() to be smaller & faster</span> +<a name="l00026"></a>00026 <span class="comment">//</span> +<a name="l00027"></a>00027 <span class="comment">// @todo:</span> +<a name="l00028"></a>00028 <span class="comment">// support chipkit:</span> +<a name="l00029"></a>00029 <span class="comment">// (https://github.com/chipKIT32/chipKIT32-MAX/blob/master/hardware/pic32/</span> +<a name="l00030"></a>00030 <span class="comment">// cores/pic32/wiring_digital.c)</span> +<a name="l00031"></a>00031 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="_fast_i_o_8h.html">FastIO.h</a>"</span> +<a name="l00033"></a>00033 +<a name="l00034"></a>00034 +<a name="l00035"></a><a class="code" href="_fast_i_o_8h.html#a385ae40d960c1a57e86818332476a802">00035</a> <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(uint8_t pin, uint8_t initial_state) +<a name="l00036"></a>00036 { +<a name="l00037"></a>00037 pinMode(pin, OUTPUT); +<a name="l00038"></a>00038 +<a name="l00039"></a>00039 <span class="keywordflow">if</span>(initial_state != <a class="code" href="_fast_i_o_8h.html#a688a4adbb87520a2b68681bd6bfb199e">SKIP</a>) +<a name="l00040"></a>00040 { +<a name="l00041"></a>00041 digitalWrite(pin, initial_state); <span class="comment">// also turns off pwm timer</span> +<a name="l00042"></a>00042 } +<a name="l00043"></a>00043 <span class="preprocessor">#ifdef FIO_FALLBACK</span> +<a name="l00044"></a>00044 <span class="preprocessor"></span> <span class="comment">// just wasting memory if not using fast io...</span> +<a name="l00045"></a>00045 <span class="keywordflow">return</span> 0; +<a name="l00046"></a>00046 <span class="preprocessor">#else</span> +<a name="l00047"></a>00047 <span class="preprocessor"></span> <span class="keywordflow">return</span> portOutputRegister(digitalPinToPort(pin)); +<a name="l00048"></a>00048 <span class="preprocessor">#endif</span> +<a name="l00049"></a>00049 <span class="preprocessor"></span>} +<a name="l00050"></a>00050 +<a name="l00051"></a>00051 +<a name="l00052"></a><a class="code" href="_fast_i_o_8h.html#afb934fc0ded94cbb5ed8ed14e2a123ed">00052</a> <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> <a class="code" href="_fast_i_o_8cpp.html#afb934fc0ded94cbb5ed8ed14e2a123ed">fio_pinToInputRegister</a>(uint8_t pin) +<a name="l00053"></a>00053 { +<a name="l00054"></a>00054 pinMode(pin, INPUT); +<a name="l00055"></a>00055 digitalWrite(pin, LOW); <span class="comment">// also turns off pwm timer and pullup</span> +<a name="l00056"></a>00056 <span class="preprocessor">#ifdef FIO_FALLBACK</span> +<a name="l00057"></a>00057 <span class="preprocessor"></span> <span class="comment">// just wasting memory if not using fast io...</span> +<a name="l00058"></a>00058 <span class="keywordflow">return</span> 0; +<a name="l00059"></a>00059 <span class="preprocessor">#else</span> +<a name="l00060"></a>00060 <span class="preprocessor"></span> <span class="keywordflow">return</span> portInputRegister(digitalPinToPort(pin)); +<a name="l00061"></a>00061 <span class="preprocessor">#endif</span> +<a name="l00062"></a>00062 <span class="preprocessor"></span>} +<a name="l00063"></a>00063 +<a name="l00064"></a>00064 +<a name="l00065"></a><a class="code" href="_fast_i_o_8h.html#a07a19dfbdca1afaca5d666bdaa3be7d5">00065</a> <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(uint8_t pin) +<a name="l00066"></a>00066 { +<a name="l00067"></a>00067 <span class="preprocessor">#ifdef FIO_FALLBACK</span> +<a name="l00068"></a>00068 <span class="preprocessor"></span> <span class="comment">// (ab)use the bit variable to store the pin</span> +<a name="l00069"></a>00069 <span class="keywordflow">return</span> pin; +<a name="l00070"></a>00070 <span class="preprocessor">#else</span> +<a name="l00071"></a>00071 <span class="preprocessor"></span> <span class="keywordflow">return</span> digitalPinToBitMask(pin); +<a name="l00072"></a>00072 <span class="preprocessor">#endif</span> +<a name="l00073"></a>00073 <span class="preprocessor"></span>} +<a name="l00074"></a>00074 +<a name="l00075"></a>00075 +<a name="l00076"></a><a class="code" href="_fast_i_o_8h.html#ae91bbe682b02a5842c291055c0e998b5">00076</a> <span class="keywordtype">void</span> <a class="code" href="_fast_i_o_8cpp.html#ae91bbe682b02a5842c291055c0e998b5">fio_digitalWrite</a>(<a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> pinRegister, <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> pinBit, uint8_t value) +<a name="l00077"></a>00077 { +<a name="l00078"></a>00078 <span class="preprocessor">#ifdef FIO_FALLBACK</span> +<a name="l00079"></a>00079 <span class="preprocessor"></span> digitalWrite(pinBit, value); +<a name="l00080"></a>00080 <span class="preprocessor">#else</span> +<a name="l00081"></a>00081 <span class="preprocessor"></span> <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00082"></a>00082 { +<a name="l00083"></a>00083 <span class="keywordflow">if</span>(value == LOW) +<a name="l00084"></a>00084 { +<a name="l00085"></a>00085 <a class="code" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">fio_digitalWrite_LOW</a>(pinRegister,pinBit); +<a name="l00086"></a>00086 } +<a name="l00087"></a>00087 <span class="keywordflow">else</span> +<a name="l00088"></a>00088 { +<a name="l00089"></a>00089 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(pinRegister,pinBit); +<a name="l00090"></a>00090 } +<a name="l00091"></a>00091 } +<a name="l00092"></a>00092 <span class="preprocessor">#endif</span> +<a name="l00093"></a>00093 <span class="preprocessor"></span>} +<a name="l00094"></a>00094 +<a name="l00095"></a><a class="code" href="_fast_i_o_8h.html#a197336e47e1c3f929056ce3abbbc7e8d">00095</a> <span class="keywordtype">int</span> <a class="code" href="_fast_i_o_8cpp.html#a83fc2fdc19ab3f9aade9e1a2f39e81a6">fio_digitalRead</a>(<a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> pinRegister, uint8_t pinBit) +<a name="l00096"></a>00096 { +<a name="l00097"></a>00097 <span class="preprocessor">#ifdef FIO_FALLBACK</span> +<a name="l00098"></a>00098 <span class="preprocessor"></span> <span class="keywordflow">return</span> digitalRead (pinBit); +<a name="l00099"></a>00099 <span class="preprocessor">#else</span> +<a name="l00100"></a>00100 <span class="preprocessor"></span> <span class="keywordflow">if</span> (*pinRegister & pinBit) +<a name="l00101"></a>00101 { +<a name="l00102"></a>00102 <span class="keywordflow">return</span> HIGH; +<a name="l00103"></a>00103 } +<a name="l00104"></a>00104 <span class="keywordflow">return</span> LOW; +<a name="l00105"></a>00105 <span class="preprocessor">#endif</span> +<a name="l00106"></a>00106 <span class="preprocessor"></span>} +<a name="l00107"></a>00107 +<a name="l00108"></a><a class="code" href="_fast_i_o_8h.html#a56c72b9f00680662229895ab22aaa743">00108</a> <span class="keywordtype">void</span> <a class="code" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a> (<a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> dataRegister, <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> dataBit, +<a name="l00109"></a>00109 <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> clockRegister, <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> clockBit, +<a name="l00110"></a>00110 uint8_t value, uint8_t bitOrder) +<a name="l00111"></a>00111 { +<a name="l00112"></a>00112 <span class="comment">// # disable interrupts</span> +<a name="l00113"></a>00113 int8_t i; +<a name="l00114"></a>00114 +<a name="l00115"></a>00115 <span class="keywordflow">if</span>(bitOrder == LSBFIRST) +<a name="l00116"></a>00116 { +<a name="l00117"></a>00117 <span class="keywordflow">for</span>(i = 0; i < 8; i++) +<a name="l00118"></a>00118 { +<a name="l00119"></a>00119 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00120"></a>00120 { +<a name="l00121"></a>00121 <span class="keywordflow">if</span>(value & 1) +<a name="l00122"></a>00122 { +<a name="l00123"></a>00123 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(dataRegister, dataBit); +<a name="l00124"></a>00124 } +<a name="l00125"></a>00125 <span class="keywordflow">else</span> +<a name="l00126"></a>00126 { +<a name="l00127"></a>00127 <a class="code" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">fio_digitalWrite_LOW</a>(dataRegister, dataBit); +<a name="l00128"></a>00128 } +<a name="l00129"></a>00129 value >>= 1; +<a name="l00130"></a>00130 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a> (clockRegister, clockBit); +<a name="l00131"></a>00131 <a class="code" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">fio_digitalWrite_LOW</a> (clockRegister,clockBit); +<a name="l00132"></a>00132 } +<a name="l00133"></a>00133 } +<a name="l00134"></a>00134 +<a name="l00135"></a>00135 } +<a name="l00136"></a>00136 <span class="keywordflow">else</span> +<a name="l00137"></a>00137 { +<a name="l00138"></a>00138 <span class="keywordflow">for</span>(i = 0; i < 8; i++) +<a name="l00139"></a>00139 { +<a name="l00140"></a>00140 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00141"></a>00141 { +<a name="l00142"></a>00142 <span class="keywordflow">if</span>(value & 0x80) +<a name="l00143"></a>00143 { +<a name="l00144"></a>00144 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(dataRegister, dataBit); +<a name="l00145"></a>00145 } +<a name="l00146"></a>00146 <span class="keywordflow">else</span> +<a name="l00147"></a>00147 { +<a name="l00148"></a>00148 <a class="code" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">fio_digitalWrite_LOW</a>(dataRegister, dataBit); +<a name="l00149"></a>00149 } +<a name="l00150"></a>00150 value <<= 1; +<a name="l00151"></a>00151 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a> (clockRegister, clockBit); +<a name="l00152"></a>00152 <a class="code" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">fio_digitalWrite_LOW</a> (clockRegister,clockBit); +<a name="l00153"></a>00153 } +<a name="l00154"></a>00154 } +<a name="l00155"></a>00155 } +<a name="l00156"></a>00156 } +<a name="l00157"></a>00157 +<a name="l00158"></a>00158 +<a name="l00159"></a><a class="code" href="_fast_i_o_8h.html#a5d8d5977294d614d15bda19f75d6b787">00159</a> <span class="keywordtype">void</span> <a class="code" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a>(<a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> dataRegister, <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> dataBit, +<a name="l00160"></a>00160 <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> clockRegister, <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> clockBit) +<a name="l00161"></a>00161 { +<a name="l00162"></a>00162 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00163"></a>00163 { +<a name="l00164"></a>00164 <span class="comment">// shift out 0x0 (B00000000) fast, byte order is irrelevant</span> +<a name="l00165"></a>00165 <a class="code" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">fio_digitalWrite_LOW</a> (dataRegister, dataBit); +<a name="l00166"></a>00166 +<a name="l00167"></a>00167 <span class="keywordflow">for</span>(uint8_t i = 0; i<8; ++i) +<a name="l00168"></a>00168 { +<a name="l00169"></a>00169 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a> (clockRegister, clockBit); +<a name="l00170"></a>00170 <a class="code" href="_fast_i_o_8h.html#a6d1dffed7f0c8f28f6c88146315f7832">fio_digitalWrite_SWITCH</a> (clockRegister, clockBit); +<a name="l00171"></a>00171 } +<a name="l00172"></a>00172 } +<a name="l00173"></a>00173 } +<a name="l00174"></a>00174 +<a name="l00175"></a>00175 +<a name="l00176"></a><a class="code" href="_fast_i_o_8h.html#ae4b2e099f8ade9ee674d1565669e870a">00176</a> <span class="keywordtype">void</span> <a class="code" href="_fast_i_o_8cpp.html#ae4b2e099f8ade9ee674d1565669e870a">fio_shiftOut1_init</a>(uint8_t pin) +<a name="l00177"></a>00177 { +<a name="l00178"></a>00178 <a class="code" href="_fast_i_o_8cpp.html#ae4b2e099f8ade9ee674d1565669e870a">fio_shiftOut1_init</a>(<a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(pin,HIGH),<a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(pin)); +<a name="l00179"></a>00179 } +<a name="l00180"></a>00180 +<a name="l00181"></a><a class="code" href="_fast_i_o_8h.html#a2d0e4495eb12504255bbd3f82405b17b">00181</a> <span class="keywordtype">void</span> <a class="code" href="_fast_i_o_8cpp.html#ae4b2e099f8ade9ee674d1565669e870a">fio_shiftOut1_init</a>(<a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> shift1Register, <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> shift1Bit) +<a name="l00182"></a>00182 { +<a name="l00183"></a>00183 <span class="comment">// Make sure that capacitors are charged</span> +<a name="l00184"></a>00184 <span class="comment">// 300us is an educated guess...</span> +<a name="l00185"></a>00185 <a class="code" href="_fast_i_o_8cpp.html#ae91bbe682b02a5842c291055c0e998b5">fio_digitalWrite</a>(shift1Register,shift1Bit,HIGH); +<a name="l00186"></a>00186 delayMicroseconds(300); +<a name="l00187"></a>00187 } +<a name="l00188"></a>00188 +<a name="l00189"></a>00189 +<a name="l00190"></a><a class="code" href="_fast_i_o_8h.html#a33ce251dcd6b448185cda415a99001cf">00190</a> <span class="keywordtype">void</span> <a class="code" href="_fast_i_o_8cpp.html#a5b4d1684030dc620938b7c2fbdf5ced8">fio_shiftOut1</a>(<a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> shift1Register, <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> shift1Bit, uint8_t value, +<a name="l00191"></a>00191 <span class="keywordtype">boolean</span> noLatch) +<a name="l00192"></a>00192 { +<a name="l00193"></a>00193 <span class="comment">/*</span> +<a name="l00194"></a>00194 <span class="comment"> * this function are based on Shif1 protocol developed by Roman Black </span> +<a name="l00195"></a>00195 <span class="comment"> * (http://www.romanblack.com/shift1.htm)</span> +<a name="l00196"></a>00196 <span class="comment"> *</span> +<a name="l00197"></a>00197 <span class="comment"> * test sketches:</span> +<a name="l00198"></a>00198 <span class="comment"> * http://pastebin.com/raw.php?i=2hnC9v2Z</span> +<a name="l00199"></a>00199 <span class="comment"> * http://pastebin.com/raw.php?i=bGg4DhXQ</span> +<a name="l00200"></a>00200 <span class="comment"> * http://pastebin.com/raw.php?i=tg1ZFiM5</span> +<a name="l00201"></a>00201 <span class="comment"> * http://pastebin.com/raw.php?i=93ExPDD3 - cascading</span> +<a name="l00202"></a>00202 <span class="comment"> * tested with:</span> +<a name="l00203"></a>00203 <span class="comment"> * TPIC6595N - seems to work fine (circuit: http://www.3guys1laser.com/</span> +<a name="l00204"></a>00204 <span class="comment"> * arduino-one-wire-shift-register-prototype)</span> +<a name="l00205"></a>00205 <span class="comment"> * 7HC595N</span> +<a name="l00206"></a>00206 <span class="comment"> */</span> +<a name="l00207"></a>00207 +<a name="l00208"></a>00208 <span class="comment">// iterate but ignore last bit (is it correct now?)</span> +<a name="l00209"></a>00209 <span class="keywordflow">for</span>(int8_t i = 7; i>=0; --i) +<a name="l00210"></a>00210 { +<a name="l00211"></a>00211 +<a name="l00212"></a>00212 <span class="comment">// assume that pin is HIGH (smokin' pot all day... :) - requires </span> +<a name="l00213"></a>00213 <span class="comment">// initialization</span> +<a name="l00214"></a>00214 <span class="keywordflow">if</span>(value & _BV(i)) +<a name="l00215"></a>00215 { +<a name="l00216"></a>00216 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00217"></a>00217 { +<a name="l00218"></a>00218 <span class="comment">// HIGH = 1 Bit</span> +<a name="l00219"></a>00219 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(shift1Register,shift1Bit,LOW); +<a name="l00220"></a>00220 <span class="comment">//hold pin LOW for 1us - done! :)</span> +<a name="l00221"></a>00221 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(shift1Register,shift1Bit,HIGH); +<a name="l00222"></a>00222 } <span class="comment">// end critical section</span> +<a name="l00223"></a>00223 <span class="comment">//hold pin HIGH for 15us</span> +<a name="l00224"></a>00224 delayMicroseconds(15); +<a name="l00225"></a>00225 } +<a name="l00226"></a>00226 <span class="keywordflow">else</span> +<a name="l00227"></a>00227 { +<a name="l00228"></a>00228 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00229"></a>00229 { +<a name="l00230"></a>00230 <span class="comment">// LOW = 0 Bit</span> +<a name="l00231"></a>00231 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(shift1Register,shift1Bit,LOW); +<a name="l00232"></a>00232 <span class="comment">// hold pin LOW for 15us</span> +<a name="l00233"></a>00233 delayMicroseconds(15); +<a name="l00234"></a>00234 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(shift1Register,shift1Bit,HIGH); +<a name="l00235"></a>00235 } <span class="comment">// end critical section</span> +<a name="l00236"></a>00236 +<a name="l00237"></a>00237 <span class="comment">// hold pin HIGH for 30us</span> +<a name="l00238"></a>00238 delayMicroseconds(30); +<a name="l00239"></a>00239 } +<a name="l00240"></a>00240 <span class="keywordflow">if</span>(!noLatch && i==1) +<a name="l00241"></a>00241 { +<a name="l00242"></a>00242 <span class="keywordflow">break</span>; +<a name="l00243"></a>00243 } +<a name="l00244"></a>00244 } +<a name="l00245"></a>00245 +<a name="l00246"></a>00246 <span class="keywordflow">if</span>(!noLatch) +<a name="l00247"></a>00247 { +<a name="l00248"></a>00248 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00249"></a>00249 { +<a name="l00250"></a>00250 <span class="comment">// send last bit (=LOW) and Latch command</span> +<a name="l00251"></a>00251 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(shift1Register,shift1Bit,LOW); +<a name="l00252"></a>00252 } <span class="comment">// end critical section</span> +<a name="l00253"></a>00253 delayMicroseconds(199); <span class="comment">// Hold pin low for 200us</span> +<a name="l00254"></a>00254 +<a name="l00255"></a>00255 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00256"></a>00256 { +<a name="l00257"></a>00257 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(shift1Register,shift1Bit); +<a name="l00258"></a>00258 } <span class="comment">// end critical section</span> +<a name="l00259"></a>00259 delayMicroseconds(299); <span class="comment">// Hold pin high for 300us and leave it that </span> +<a name="l00260"></a>00260 <span class="comment">// way - using explicit HIGH here, just in case.</span> +<a name="l00261"></a>00261 } +<a name="l00262"></a>00262 } +<a name="l00263"></a>00263 +<a name="l00264"></a><a class="code" href="_fast_i_o_8h.html#af2aac35d9a8ab7a2c87672f2c7cbbafb">00264</a> <span class="keywordtype">void</span> <a class="code" href="_fast_i_o_8cpp.html#a5b4d1684030dc620938b7c2fbdf5ced8">fio_shiftOut1</a>(uint8_t pin, uint8_t value, <span class="keywordtype">boolean</span> noLatch) +<a name="l00265"></a>00265 { +<a name="l00266"></a>00266 <a class="code" href="_fast_i_o_8cpp.html#a5b4d1684030dc620938b7c2fbdf5ced8">fio_shiftOut1</a>(<a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(pin, <a class="code" href="_fast_i_o_8h.html#a688a4adbb87520a2b68681bd6bfb199e">SKIP</a>),<a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(pin),value, noLatch); +<a name="l00267"></a>00267 } +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_fast_i_o_8cpp.html">FastIO.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8h.html b/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..8137412e5fc01dcf4deaba9519ec48831a110c47 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8h.html @@ -0,0 +1,813 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: FastIO.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_fast_i_o_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Defines</a> | +<a href="#typedef-members">Typedefs</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">FastIO.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <WProgram.h></code><br/> +<code>#include <pins_arduino.h></code><br/> +<code>#include <inttypes.h></code><br/> +</div> +<p><a href="_fast_i_o_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(dummy)   if(true)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(reg, bit)   digitalWrite(bit,HIGH)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">fio_digitalWrite_LOW</a>(reg, bit)   digitalWrite(bit,LOW)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a6d1dffed7f0c8f28f6c88146315f7832">fio_digitalWrite_SWITCH</a>(reg, bit)   digitalWrite(bit, !digitalRead(bit))</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(reg, bit, val)   digitalWrite(bit,val);</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a32f90d0ad5c1295c97cc1e79936aadd6">FIO_FALLBACK</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a688a4adbb87520a2b68681bd6bfb199e">SKIP</a>   0x23</td></tr> +<tr><td colspan="2"><h2><a name="typedef-members"></a> +Typedefs</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">typedef uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">typedef uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a></td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a197336e47e1c3f929056ce3abbbc7e8d">fio_digitalRead</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> pinRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> pinBit)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#ae91bbe682b02a5842c291055c0e998b5">fio_digitalWrite</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> pinRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> pinBit, uint8_t value)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a> (uint8_t pin)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#afb934fc0ded94cbb5ed8ed14e2a123ed">fio_pinToInputRegister</a> (uint8_t pin)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a385ae40d960c1a57e86818332476a802">fio_pinToOutputRegister</a> (uint8_t pin, uint8_t initial_state=LOW)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a5d8d5977294d614d15bda19f75d6b787">fio_shiftOut</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> dataRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> dataBit, <a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> clockRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> clockBit)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> dataRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> dataBit, <a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> clockRegister, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> clockBit, uint8_t value, uint8_t bitOrder)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a33ce251dcd6b448185cda415a99001cf">fio_shiftOut1</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> shift1Register, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> shift1Bit, uint8_t value, boolean noLatch=false)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#af2aac35d9a8ab7a2c87672f2c7cbbafb">fio_shiftOut1</a> (uint8_t pin, uint8_t value, boolean noLatch=false)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#a2d0e4495eb12504255bbd3f82405b17b">fio_shiftOut1_init</a> (<a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> shift1Register, <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> shift1Bit)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_fast_i_o_8h.html#ae4b2e099f8ade9ee674d1565669e870a">fio_shiftOut1_init</a> (uint8_t pin)</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a04971fe5fabe4129736708c494e08e6d"></a><!-- doxytag: member="FastIO.h::ATOMIC_BLOCK" ref="a04971fe5fabe4129736708c494e08e6d" args="(dummy)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define ATOMIC_BLOCK</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">dummy</td><td>)</td> + <td>   if(true)</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00058">58</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a362c18b15a09703e42e1c246c47420ef"></a><!-- doxytag: member="FastIO.h::ATOMIC_RESTORESTATE" ref="a362c18b15a09703e42e1c246c47420ef" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define ATOMIC_RESTORESTATE</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00059">59</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a89e1c62276052100c62b6c82a2e95622"></a><!-- doxytag: member="FastIO.h::fio_digitalWrite_HIGH" ref="a89e1c62276052100c62b6c82a2e95622" args="(reg, bit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define fio_digitalWrite_HIGH</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">reg, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">bit </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td>   digitalWrite(bit,HIGH)</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>This is where the magic happens that makes things fast. Implemented as preprocessor directives to force inlining SWITCH is fast for FIO but probably slow for FIO_FALLBACK so SWITCHTO is recommended if the value is known. </p> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00143">143</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ac8f00a1bccb98109531b88fbb6e91478"></a><!-- doxytag: member="FastIO.h::fio_digitalWrite_LOW" ref="ac8f00a1bccb98109531b88fbb6e91478" args="(reg, bit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define fio_digitalWrite_LOW</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">reg, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">bit </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td>   digitalWrite(bit,LOW)</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00144">144</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a6d1dffed7f0c8f28f6c88146315f7832"></a><!-- doxytag: member="FastIO.h::fio_digitalWrite_SWITCH" ref="a6d1dffed7f0c8f28f6c88146315f7832" args="(reg, bit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define fio_digitalWrite_SWITCH</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">reg, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">bit </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td>   digitalWrite(bit, !digitalRead(bit))</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00145">145</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<a class="anchor" id="accae9687fdfc5f3492fb6344d62eb190"></a><!-- doxytag: member="FastIO.h::fio_digitalWrite_SWITCHTO" ref="accae9687fdfc5f3492fb6344d62eb190" args="(reg, bit, val)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define fio_digitalWrite_SWITCHTO</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">reg, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">bit, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">val </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td>   digitalWrite(bit,val);</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00146">146</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a32f90d0ad5c1295c97cc1e79936aadd6"></a><!-- doxytag: member="FastIO.h::FIO_FALLBACK" ref="a32f90d0ad5c1295c97cc1e79936aadd6" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define FIO_FALLBACK</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00057">57</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a688a4adbb87520a2b68681bd6bfb199e"></a><!-- doxytag: member="FastIO.h::SKIP" ref="a688a4adbb87520a2b68681bd6bfb199e" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SKIP   0x23</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00042">42</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<hr/><h2>Typedef Documentation</h2> +<a class="anchor" id="a0a595a88b29bcfd1540b6fac75787937"></a><!-- doxytag: member="FastIO.h::fio_bit" ref="a0a595a88b29bcfd1540b6fac75787937" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef uint8_t <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a></td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00060">60</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ae44ea3af54ef26db03f1ae2ea62f9c1f"></a><!-- doxytag: member="FastIO.h::fio_register" ref="ae44ea3af54ef26db03f1ae2ea62f9c1f" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef uint8_t <a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a></td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_fast_i_o_8h_source.html#l00061">61</a> of file <a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>.</p> + +</div> +</div> +<hr/><h2>Function Documentation</h2> +<a class="anchor" id="a197336e47e1c3f929056ce3abbbc7e8d"></a><!-- doxytag: member="FastIO.h::fio_digitalRead" ref="a197336e47e1c3f929056ce3abbbc7e8d" args="(fio_register pinRegister, fio_bit pinBit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int fio_digitalRead </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>pinRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>pinBit</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>direct digital read without any checks falls back to normal digitalRead if fast io is disabled </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pinRegister[in]</td><td>Register - ignored if fast io is disabled </td></tr> + <tr><td class="paramname">pinBit[in]</td><td>Bit - Pin if fast io is disabled </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>Value read from pin </dd></dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00095">95</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ae91bbe682b02a5842c291055c0e998b5"></a><!-- doxytag: member="FastIO.h::fio_digitalWrite" ref="ae91bbe682b02a5842c291055c0e998b5" args="(fio_register pinRegister, fio_bit pinBit, uint8_t value)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_digitalWrite </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>pinRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>pinBit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>direct digital write without any checks falls back to normal digitalWrite if fast io is disabled </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pinRegister[in]</td><td>Register - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">pinBit[in]</td><td>Bit - Pin if fast digital write is disabled </td></tr> + <tr><td class="paramname">value[in]</td><td>desired output </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00076">76</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a07a19dfbdca1afaca5d666bdaa3be7d5"></a><!-- doxytag: member="FastIO.h::fio_pinToBit" ref="a07a19dfbdca1afaca5d666bdaa3be7d5" args="(uint8_t pin)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> fio_pinToBit </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em></td><td>)</td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Find the bit which belongs to specified pin if fast digitalWrite is disabled this function returns the pin </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Number of a digital pin </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>Bit </dd></dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00065">65</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="afb934fc0ded94cbb5ed8ed14e2a123ed"></a><!-- doxytag: member="FastIO.h::fio_pinToInputRegister" ref="afb934fc0ded94cbb5ed8ed14e2a123ed" args="(uint8_t pin)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> fio_pinToInputRegister </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em></td><td>)</td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Get the input register for specified pin. if fast digital IO is disabled this function returns NULL </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Number of a digital pin </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>Register </dd></dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00052">52</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a385ae40d960c1a57e86818332476a802"></a><!-- doxytag: member="FastIO.h::fio_pinToOutputRegister" ref="a385ae40d960c1a57e86818332476a802" args="(uint8_t pin, uint8_t initial_state=LOW)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> fio_pinToOutputRegister </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>initial_state</em> = <code>LOW</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Get the output register for specified pin. if fast digital IO is disabled this function returns NULL </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Number of a digital pin </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>Register </dd></dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00035">35</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a5d8d5977294d614d15bda19f75d6b787"></a><!-- doxytag: member="FastIO.h::fio_shiftOut" ref="a5d8d5977294d614d15bda19f75d6b787" args="(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>dataRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>dataBit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>clockRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>clockBit</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>faster shift out clear using fast digital write falls back to normal digitalWrite if fastio is disabled </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">dataRegister[in]</td><td>Register of data pin - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">dataBit[in]</td><td>Bit of data pin - Pin if fast digital write is disabled </td></tr> + <tr><td class="paramname">clockRegister[in]</td><td>Register of data pin - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">clockBit[in]</td><td>Bit of data pin - Pin if fast digital write is disabled </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00159">159</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a56c72b9f00680662229895ab22aaa743"></a><!-- doxytag: member="FastIO.h::fio_shiftOut" ref="a56c72b9f00680662229895ab22aaa743" args="(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit, uint8_t value, uint8_t bitOrder)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>dataRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>dataBit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>clockRegister</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>clockBit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>bitOrder</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>faster shift out using fast digital write falls back to normal digitalWrite if fastio is disabled </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">dataRegister[in]</td><td>Register of data pin - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">dataBit[in]</td><td>Bit of data pin - Pin if fast digital write is disabled </td></tr> + <tr><td class="paramname">clockRegister[in]</td><td>Register of data pin - ignored if fast digital write is disabled </td></tr> + <tr><td class="paramname">clockBit[in]</td><td>Bit of data pin - Pin if fast digital write is disabled </td></tr> + <tr><td class="paramname">bitOrder[in]</td><td>bit order </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00108">108</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a33ce251dcd6b448185cda415a99001cf"></a><!-- doxytag: member="FastIO.h::fio_shiftOut1" ref="a33ce251dcd6b448185cda415a99001cf" args="(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, boolean noLatch=false)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut1 </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>shift1Register</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>shift1Bit</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">boolean </td> + <td class="paramname"><em>noLatch</em> = <code>false</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>one wire shift out protocol needs initialisation (fio_shiftOut1_init) </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">shift1Register[in]</td><td>pins register </td></tr> + <tr><td class="paramname">shift1Bit[in]</td><td>pins bit </td></tr> + <tr><td class="paramname">value[in]</td><td>value to shift out, last byte is ignored and always shifted out LOW </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00190">190</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="af2aac35d9a8ab7a2c87672f2c7cbbafb"></a><!-- doxytag: member="FastIO.h::fio_shiftOut1" ref="af2aac35d9a8ab7a2c87672f2c7cbbafb" args="(uint8_t pin, uint8_t value, boolean noLatch=false)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut1 </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">boolean </td> + <td class="paramname"><em>noLatch</em> = <code>false</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>one wire shift out protocol needs initialisation (fio_shiftOut1_init) </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>digital pin </td></tr> + <tr><td class="paramname">value[in]</td><td>value to shift out, last byte is ignored and always shifted out LOW </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00264">264</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a2d0e4495eb12504255bbd3f82405b17b"></a><!-- doxytag: member="FastIO.h::fio_shiftOut1_init" ref="a2d0e4495eb12504255bbd3f82405b17b" args="(fio_register shift1Register, fio_bit shift1Bit)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut1_init </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> </td> + <td class="paramname"><em>shift1Register</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> </td> + <td class="paramname"><em>shift1Bit</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>initializes one wire shift out protocol Puts pin to HIGH state and delays until Capacitors are charged. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">shift1Register[in]</td><td>pins register </td></tr> + <tr><td class="paramname">shift1Bit[in]</td><td>pins bit </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00181">181</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ae4b2e099f8ade9ee674d1565669e870a"></a><!-- doxytag: member="FastIO.h::fio_shiftOut1_init" ref="ae4b2e099f8ade9ee674d1565669e870a" args="(uint8_t pin)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void fio_shiftOut1_init </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em></td><td>)</td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>initializes one wire shift out protocol Puts pin to HIGH state and delays until Capacitors are charged. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>digital pin </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_fast_i_o_8cpp_source.html#l00176">176</a> of file <a class="el" href="_fast_i_o_8cpp_source.html">FastIO.cpp</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_fast_i_o_8h.html">FastIO.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..46d793a8bcf4f9fa415751a1c0dab89df31e7190 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_fast_i_o_8h_source.html @@ -0,0 +1,222 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/FastIO.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/FastIO.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Florian Fida on 20/01/12</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2012 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// http://creativecommons.org/licenses/by-sa/3.0/</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// This software is furnished "as is", without technical support, and with no</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// fio_shiftOut1 functions are based on Shif1 protocol developed by Roman Black </span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (http://www.romanblack.com/shift1.htm)</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">//</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">//</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @file FastIO.h</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// This file implements basic fast IO routines.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// </span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// @version API 1.0.0</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// @author Florian Fida -</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// 2012-03-16 bperrybap mods for chipkit32 (pic32) Arduino</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// support chipkit:</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// (https://github.com/chipKIT32/chipKIT32-MAX/blob/master/hardware/pic32/</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// cores/pic32/wiring_digital.c)</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifndef _FAST_IO_H_</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define _FAST_IO_H_</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#if (ARDUINO < 100)</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include <WProgram.h></span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <Arduino.h></span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <pins_arduino.h></span> <span class="comment">// pleasing sanguino core</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define SKIP 0x23</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#if defined (__AVR__)</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <util/atomic.h></span> <span class="comment">// for critical section management</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">typedef</span> uint8_t fio_bit;</div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">typedef</span> <span class="keyword">volatile</span> uint8_t *fio_register;</div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#elif defined(__PIC32MX__)</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">typedef</span> uint32_t fio_bit;</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">typedef</span> <span class="keyword">volatile</span> uint32_t *fio_register;</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// fallback to Arduino standard digital i/o routines</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#define FIO_FALLBACK</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#define ATOMIC_BLOCK(dummy) if(true)</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#define ATOMIC_RESTORESTATE</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">typedef</span> uint8_t fio_bit;</div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword">typedef</span> uint8_t fio_register;</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#if !defined(FIO_FALLBACK) && !defined(ATOMIC_BLOCK)</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">/*</span></div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"> * Define an ATOMIC_BLOCK that implements ATOMIC_FORCEON type</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"> * Using the portable Arduino interrupts() and noInterrupts()</span></div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#define ATOMIC_RESTORESTATE ATOMIC_FORCEON // sorry, no support for save/restore yet.</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define ATOMIC_FORCEON uint8_t sreg_save \</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> __attribute__((__cleanup__(__iSeiParam))) = 0</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">static</span> __inline__ uint8_t __iCliRetVal(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> {</div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  noInterrupts();</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span>(1);</div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">static</span> __inline__ <span class="keywordtype">void</span> __iSeiParam(<span class="keyword">const</span> uint8_t *__s)</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> {</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  interrupts();</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> }</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define ATOMIC_BLOCK(type) for(type, __Todo = __iCliRetVal(); __Todo; __Todo = 0)</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#endif // end of block to create compatible ATOMIC_BLOCK()</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> fio_register fio_pinToOutputRegister(uint8_t pin, uint8_t initial_state = LOW);</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> fio_register fio_pinToInputRegister(uint8_t pin);</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> fio_bit fio_pinToBit(uint8_t pin);</div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// __attribute__ ((always_inline)) /* let the optimizer decide that for now */</span></div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="keywordtype">void</span> fio_digitalWrite ( fio_register pinRegister, fio_bit pinBit, uint8_t value );</div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#ifndef FIO_FALLBACK</span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#define fio_digitalWrite_LOW(reg,bit) *reg &= ~bit</span></div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#define fio_digitalWrite_HIGH(reg,bit) *reg |= bit</span></div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#define fio_digitalWrite_SWITCH(reg,bit) *reg ^= bit</span></div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#define fio_digitalWrite_SWITCHTO(reg,bit,val) fio_digitalWrite_SWITCH(reg,bit)</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// reg -> dummy NULL, bit -> pin</span></div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#define fio_digitalWrite_HIGH(reg,bit) digitalWrite(bit,HIGH)</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#define fio_digitalWrite_LOW(reg,bit) digitalWrite(bit,LOW)</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#define fio_digitalWrite_SWITCH(reg,bit) digitalWrite(bit, !digitalRead(bit))</span></div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#define fio_digitalWrite_SWITCHTO(reg,bit,val) digitalWrite(bit,val);</span></div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keywordtype">int</span> fio_digitalRead ( fio_register pinRegister, fio_bit pinBit );</div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">void</span> fio_shiftOut( fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, </div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  fio_bit clockBit, uint8_t value, uint8_t bitOrder );</div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keywordtype">void</span> fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit);</div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keywordtype">void</span> fio_shiftOut1(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, <span class="keywordtype">boolean</span> noLatch = <span class="keyword">false</span>);</div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keywordtype">void</span> fio_shiftOut1(uint8_t pin, uint8_t value, <span class="keywordtype">boolean</span> noLatch = <span class="keyword">false</span>);</div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keywordtype">void</span> fio_shiftOut1_init(fio_register shift1Register, fio_bit shift1Bit);</div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="keywordtype">void</span> fio_shiftOut1_init(uint8_t pin);</div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor">#endif // FAST_IO_H</span></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..0b5ae7c7419039912f4d597ca68658ab42244d16 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8cpp.html @@ -0,0 +1,119 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: I2CIO.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_i2_c_i_o_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">I2CIO.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <WProgram.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include <../Wire/Wire.h></code><br/> +<code>#include "<a class="el" href="_i2_c_i_o_8h_source.html">I2CIO.h</a>"</code><br/> +</div> +<p><a href="_i2_c_i_o_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_i2_c_i_o_8cpp.html">I2CIO.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..f1198cfc73904fbd3b11304fcbfe334c556c7511 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8cpp_source.html @@ -0,0 +1,309 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: I2CIO.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_i2_c_i_o_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">I2CIO.cpp</div> </div> +</div> +<div class="contents"> +<a href="_i2_c_i_o_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file I2CIO.h</span> +<a name="l00013"></a>00013 <span class="comment">// This file implements a basic IO library using the PCF8574 I2C IO Expander</span> +<a name="l00014"></a>00014 <span class="comment">// chip.</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// Implement a basic IO library to drive the PCF8574* I2C IO Expander ASIC.</span> +<a name="l00018"></a>00018 <span class="comment">// The library implements basic IO general methods to configure IO pin direction</span> +<a name="l00019"></a>00019 <span class="comment">// read and write uint8_t operations and basic pin level routines to set or read</span> +<a name="l00020"></a>00020 <span class="comment">// a particular IO port.</span> +<a name="l00021"></a>00021 <span class="comment">//</span> +<a name="l00022"></a>00022 <span class="comment">//</span> +<a name="l00023"></a>00023 <span class="comment">// @version API 1.0.0</span> +<a name="l00024"></a>00024 <span class="comment">//</span> +<a name="l00025"></a>00025 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span> +<a name="l00026"></a>00026 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00027"></a>00027 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#include <WProgram.h></span> +<a name="l00029"></a>00029 <span class="preprocessor">#else</span> +<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include <Arduino.h></span> +<a name="l00031"></a>00031 <span class="preprocessor">#endif</span> +<a name="l00032"></a>00032 <span class="preprocessor"></span> +<a name="l00033"></a>00033 <span class="preprocessor">#include <inttypes.h></span> +<a name="l00034"></a>00034 +<a name="l00035"></a>00035 <span class="preprocessor">#include <../Wire/Wire.h></span> +<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="_i2_c_i_o_8h.html">I2CIO.h</a>"</span> +<a name="l00037"></a>00037 +<a name="l00038"></a>00038 <span class="comment">// CLASS VARIABLES</span> +<a name="l00039"></a>00039 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00040"></a>00040 +<a name="l00041"></a>00041 +<a name="l00042"></a>00042 <span class="comment">// CONSTRUCTOR</span> +<a name="l00043"></a>00043 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00044"></a><a class="code" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">00044</a> <a class="code" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO::I2CIO</a> ( ) +<a name="l00045"></a>00045 { +<a name="l00046"></a>00046 _i2cAddr = 0x0; +<a name="l00047"></a>00047 _dirMask = 0xFF; <span class="comment">// mark all as INPUTs</span> +<a name="l00048"></a>00048 _shadow = 0x0; <span class="comment">// no values set</span> +<a name="l00049"></a>00049 _initialised = <span class="keyword">false</span>; +<a name="l00050"></a>00050 } +<a name="l00051"></a>00051 +<a name="l00052"></a>00052 <span class="comment">// PUBLIC METHODS</span> +<a name="l00053"></a>00053 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00054"></a>00054 +<a name="l00055"></a>00055 <span class="comment">//</span> +<a name="l00056"></a>00056 <span class="comment">// begin</span> +<a name="l00057"></a><a class="code" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">00057</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">I2CIO::begin</a> ( uint8_t i2cAddr ) +<a name="l00058"></a>00058 { +<a name="l00059"></a>00059 _i2cAddr = i2cAddr; +<a name="l00060"></a>00060 +<a name="l00061"></a>00061 Wire.begin ( ); +<a name="l00062"></a>00062 +<a name="l00063"></a>00063 _initialised = Wire.requestFrom ( _i2cAddr, (uint8_t)1 ); +<a name="l00064"></a>00064 +<a name="l00065"></a>00065 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00066"></a>00066 <span class="preprocessor"></span> _shadow = Wire.receive (); +<a name="l00067"></a>00067 <span class="preprocessor">#else</span> +<a name="l00068"></a>00068 <span class="preprocessor"></span> _shadow = Wire.read (); <span class="comment">// Remove the byte read don't need it.</span> +<a name="l00069"></a>00069 <span class="preprocessor">#endif</span> +<a name="l00070"></a>00070 <span class="preprocessor"></span> +<a name="l00071"></a>00071 <span class="keywordflow">return</span> ( _initialised ); +<a name="l00072"></a>00072 } +<a name="l00073"></a>00073 +<a name="l00074"></a>00074 <span class="comment">//</span> +<a name="l00075"></a>00075 <span class="comment">// pinMode</span> +<a name="l00076"></a><a class="code" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">00076</a> <span class="keywordtype">void</span> <a class="code" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">I2CIO::pinMode</a> ( uint8_t pin, uint8_t dir ) +<a name="l00077"></a>00077 { +<a name="l00078"></a>00078 <span class="keywordflow">if</span> ( _initialised ) +<a name="l00079"></a>00079 { +<a name="l00080"></a>00080 <span class="keywordflow">if</span> ( OUTPUT == dir ) +<a name="l00081"></a>00081 { +<a name="l00082"></a>00082 _dirMask &= ~( 1 << pin ); +<a name="l00083"></a>00083 } +<a name="l00084"></a>00084 <span class="keywordflow">else</span> +<a name="l00085"></a>00085 { +<a name="l00086"></a>00086 _dirMask |= ( 1 << pin ); +<a name="l00087"></a>00087 } +<a name="l00088"></a>00088 } +<a name="l00089"></a>00089 } +<a name="l00090"></a>00090 +<a name="l00091"></a>00091 <span class="comment">//</span> +<a name="l00092"></a>00092 <span class="comment">// portMode</span> +<a name="l00093"></a><a class="code" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">00093</a> <span class="keywordtype">void</span> <a class="code" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">I2CIO::portMode</a> ( uint8_t dir ) +<a name="l00094"></a>00094 { +<a name="l00095"></a>00095 +<a name="l00096"></a>00096 <span class="keywordflow">if</span> ( _initialised ) +<a name="l00097"></a>00097 { +<a name="l00098"></a>00098 <span class="keywordflow">if</span> ( dir == INPUT ) +<a name="l00099"></a>00099 { +<a name="l00100"></a>00100 _dirMask = 0xFF; +<a name="l00101"></a>00101 } +<a name="l00102"></a>00102 <span class="keywordflow">else</span> +<a name="l00103"></a>00103 { +<a name="l00104"></a>00104 _dirMask = 0x00; +<a name="l00105"></a>00105 } +<a name="l00106"></a>00106 } +<a name="l00107"></a>00107 } +<a name="l00108"></a>00108 +<a name="l00109"></a>00109 <span class="comment">//</span> +<a name="l00110"></a>00110 <span class="comment">// read</span> +<a name="l00111"></a><a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">00111</a> uint8_t <a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">I2CIO::read</a> ( <span class="keywordtype">void</span> ) +<a name="l00112"></a>00112 { +<a name="l00113"></a>00113 uint8_t retVal = 0; +<a name="l00114"></a>00114 +<a name="l00115"></a>00115 <span class="keywordflow">if</span> ( _initialised ) +<a name="l00116"></a>00116 { +<a name="l00117"></a>00117 Wire.requestFrom ( _i2cAddr, (uint8_t)1 ); +<a name="l00118"></a>00118 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00119"></a>00119 <span class="preprocessor"></span> retVal = ( _dirMask & Wire.receive ( ) ); +<a name="l00120"></a>00120 <span class="preprocessor">#else</span> +<a name="l00121"></a>00121 <span class="preprocessor"></span> retVal = ( _dirMask & Wire.read ( ) ); +<a name="l00122"></a>00122 <span class="preprocessor">#endif </span> +<a name="l00123"></a>00123 <span class="preprocessor"></span> +<a name="l00124"></a>00124 } +<a name="l00125"></a>00125 <span class="keywordflow">return</span> ( retVal ); +<a name="l00126"></a>00126 } +<a name="l00127"></a>00127 +<a name="l00128"></a>00128 <span class="comment">//</span> +<a name="l00129"></a>00129 <span class="comment">// write</span> +<a name="l00130"></a><a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">00130</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">I2CIO::write</a> ( uint8_t value ) +<a name="l00131"></a>00131 { +<a name="l00132"></a>00132 <span class="keywordtype">int</span> status = 0; +<a name="l00133"></a>00133 +<a name="l00134"></a>00134 <span class="keywordflow">if</span> ( _initialised ) +<a name="l00135"></a>00135 { +<a name="l00136"></a>00136 <span class="comment">// Only write HIGH the values of the ports that have been initialised as</span> +<a name="l00137"></a>00137 <span class="comment">// outputs updating the output shadow of the device</span> +<a name="l00138"></a>00138 _shadow = ( value & ~(_dirMask) ); +<a name="l00139"></a>00139 +<a name="l00140"></a>00140 Wire.beginTransmission ( _i2cAddr ); +<a name="l00141"></a>00141 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00142"></a>00142 <span class="preprocessor"></span> Wire.send ( _shadow ); +<a name="l00143"></a>00143 <span class="preprocessor">#else</span> +<a name="l00144"></a>00144 <span class="preprocessor"></span> Wire.write ( _shadow ); +<a name="l00145"></a>00145 <span class="preprocessor">#endif </span> +<a name="l00146"></a>00146 <span class="preprocessor"></span> status = Wire.endTransmission (); +<a name="l00147"></a>00147 } +<a name="l00148"></a>00148 <span class="keywordflow">return</span> ( (status == 0) ); +<a name="l00149"></a>00149 } +<a name="l00150"></a>00150 +<a name="l00151"></a>00151 <span class="comment">//</span> +<a name="l00152"></a>00152 <span class="comment">// digitalRead</span> +<a name="l00153"></a><a class="code" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">00153</a> uint8_t <a class="code" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">I2CIO::digitalRead</a> ( uint8_t pin ) +<a name="l00154"></a>00154 { +<a name="l00155"></a>00155 uint8_t pinVal = 0; +<a name="l00156"></a>00156 +<a name="l00157"></a>00157 <span class="comment">// Check if initialised and that the pin is within range of the device</span> +<a name="l00158"></a>00158 <span class="comment">// -------------------------------------------------------------------</span> +<a name="l00159"></a>00159 <span class="keywordflow">if</span> ( ( _initialised ) && ( pin <= 7 ) ) +<a name="l00160"></a>00160 { +<a name="l00161"></a>00161 <span class="comment">// Remove the values which are not inputs and get the value of the pin</span> +<a name="l00162"></a>00162 pinVal = this-><a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">read</a>() & _dirMask; +<a name="l00163"></a>00163 pinVal = ( pinVal >> pin ) & 0x01; <span class="comment">// Get the pin value</span> +<a name="l00164"></a>00164 } +<a name="l00165"></a>00165 <span class="keywordflow">return</span> (pinVal); +<a name="l00166"></a>00166 } +<a name="l00167"></a>00167 +<a name="l00168"></a>00168 <span class="comment">//</span> +<a name="l00169"></a>00169 <span class="comment">// digitalWrite</span> +<a name="l00170"></a><a class="code" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">00170</a> <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">I2CIO::digitalWrite</a> ( uint8_t pin, uint8_t level ) +<a name="l00171"></a>00171 { +<a name="l00172"></a>00172 uint8_t writeVal; +<a name="l00173"></a>00173 <span class="keywordtype">int</span> status = 0; +<a name="l00174"></a>00174 +<a name="l00175"></a>00175 <span class="comment">// Check if initialised and that the pin is within range of the device</span> +<a name="l00176"></a>00176 <span class="comment">// -------------------------------------------------------------------</span> +<a name="l00177"></a>00177 <span class="keywordflow">if</span> ( ( _initialised ) && ( pin <= 7 ) ) +<a name="l00178"></a>00178 { +<a name="l00179"></a>00179 <span class="comment">// Only write to HIGH the port if the port has been configured as</span> +<a name="l00180"></a>00180 <span class="comment">// an OUTPUT pin. Add the new state of the pin to the shadow</span> +<a name="l00181"></a>00181 writeVal = ( 1 << pin ) & ~_dirMask; +<a name="l00182"></a>00182 <span class="keywordflow">if</span> ( level == HIGH ) +<a name="l00183"></a>00183 { +<a name="l00184"></a>00184 _shadow |= writeVal; +<a name="l00185"></a>00185 +<a name="l00186"></a>00186 } +<a name="l00187"></a>00187 <span class="keywordflow">else</span> +<a name="l00188"></a>00188 { +<a name="l00189"></a>00189 _shadow &= ~writeVal; +<a name="l00190"></a>00190 } +<a name="l00191"></a>00191 status = this-><a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a> ( _shadow ); +<a name="l00192"></a>00192 } +<a name="l00193"></a>00193 <span class="keywordflow">return</span> ( status ); +<a name="l00194"></a>00194 } +<a name="l00195"></a>00195 +<a name="l00196"></a>00196 <span class="comment">//</span> +<a name="l00197"></a>00197 <span class="comment">// PRIVATE METHODS</span> +<a name="l00198"></a>00198 <span class="comment">// ---------------------------------------------------------------------------</span> +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_i2_c_i_o_8cpp.html">I2CIO.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8h.html b/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..b49a933cc1d35d21f5ef7562a8652c156ea1c1d5 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8h.html @@ -0,0 +1,141 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: I2CIO.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_i2_c_i_o_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#define-members">Defines</a> </div> + <div class="headertitle"> +<div class="title">I2CIO.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +</div> +<p><a href="_i2_c_i_o_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td></tr> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_i2_c_i_o_8h.html#a218dbde2f6fda8c5825e25da10864c71">_I2CIO_VERSION</a>   "1.0.0"</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a218dbde2f6fda8c5825e25da10864c71"></a><!-- doxytag: member="I2CIO.h::_I2CIO_VERSION" ref="a218dbde2f6fda8c5825e25da10864c71" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define _I2CIO_VERSION   "1.0.0"</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_i2_c_i_o_8h_source.html#l00032">32</a> of file <a class="el" href="_i2_c_i_o_8h_source.html">I2CIO.h</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_i2_c_i_o_8h.html">I2CIO.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..a5b169ef0e358c9ceef629130fcb102b499db6ed --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_i2_c_i_o_8h_source.html @@ -0,0 +1,171 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/I2CIO.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/I2CIO.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file I2CIO.h</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This file implements a basic IO library using the PCF8574 I2C IO Expander</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// chip.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Implement a basic IO library to drive the PCF8574* I2C IO Expander ASIC.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// The library implements basic IO general methods to configure IO pin direction</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// read and write uint8_t operations and basic pin level routines to set or read</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// a particular IO port.</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// @version API 1.0.0</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">//</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#ifndef _I2CIO_H_</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#define _I2CIO_H_</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#define _I2CIO_VERSION "1.0.0"</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div> +<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_i2_c_i_o.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_i2_c_i_o.html">I2CIO</a> </div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO</a> ( );</div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">begin</a> ( uint8_t i2cAddr );</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  </div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">void</span> <a class="code" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">pinMode</a> ( uint8_t pin, uint8_t dir );</div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> <a class="code" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">portMode</a> ( uint8_t dir );</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  uint8_t <a class="code" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">read</a> ( <span class="keywordtype">void</span> );</div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  uint8_t <a class="code" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">digitalRead</a> ( uint8_t pin );</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a> ( uint8_t value );</div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">int</span> <a class="code" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">digitalWrite</a> ( uint8_t pin, uint8_t level );</div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  uint8_t _shadow; <span class="comment">// Shadow output</span></div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  uint8_t _dirMask; <span class="comment">// Direction mask</span></div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  uint8_t _i2cAddr; <span class="comment">// I2C address</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">bool</span> _initialised; <span class="comment">// Initialised object</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordtype">bool</span> isAvailable (uint8_t i2cAddr);</div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  </div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> };</div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_i2_c_i_o_html"><div class="ttname"><a href="class_i2_c_i_o.html">I2CIO</a></div><div class="ttdef"><b>Definition:</b> I2CIO.h:41</div></div> +<div class="ttc" id="class_i2_c_i_o_html_a0341888753bc54c4384f5593a870fb34"><div class="ttname"><a href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">I2CIO::portMode</a></div><div class="ttdeci">void portMode(uint8_t dir)</div><div class="ttdef"><b>Definition:</b> I2CIO.cpp:103</div></div> +<div class="ttc" id="class_i2_c_i_o_html_ae2063569c927d0008e2593d14504fdcd"><div class="ttname"><a href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">I2CIO::write</a></div><div class="ttdeci">int write(uint8_t value)</div><div class="ttdef"><b>Definition:</b> I2CIO.cpp:140</div></div> +<div class="ttc" id="class_i2_c_i_o_html_a53b94274eb6bb68564cf5243323db887"><div class="ttname"><a href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">I2CIO::pinMode</a></div><div class="ttdeci">void pinMode(uint8_t pin, uint8_t dir)</div><div class="ttdef"><b>Definition:</b> I2CIO.cpp:86</div></div> +<div class="ttc" id="class_i2_c_i_o_html_a473206162522b847546777d16a7c6dcd"><div class="ttname"><a href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">I2CIO::digitalWrite</a></div><div class="ttdeci">int digitalWrite(uint8_t pin, uint8_t level)</div><div class="ttdef"><b>Definition:</b> I2CIO.cpp:180</div></div> +<div class="ttc" id="class_i2_c_i_o_html_ac26221011a8b49bcea9ef62712ea88a7"><div class="ttname"><a href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">I2CIO::digitalRead</a></div><div class="ttdeci">uint8_t digitalRead(uint8_t pin)</div><div class="ttdef"><b>Definition:</b> I2CIO.cpp:163</div></div> +<div class="ttc" id="class_i2_c_i_o_html_a32eb7832075ad6011d67874405a0d0a6"><div class="ttname"><a href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO::I2CIO</a></div><div class="ttdeci">I2CIO()</div><div class="ttdef"><b>Definition:</b> I2CIO.cpp:51</div></div> +<div class="ttc" id="class_i2_c_i_o_html_a6f814653d903dc2ff6e8420eeb7954ae"><div class="ttname"><a href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">I2CIO::begin</a></div><div class="ttdeci">int begin(uint8_t i2cAddr)</div><div class="ttdef"><b>Definition:</b> I2CIO.cpp:65</div></div> +<div class="ttc" id="class_i2_c_i_o_html_a7a3db7bfc15ede0ae9e8c8bd44290ef7"><div class="ttname"><a href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">I2CIO::read</a></div><div class="ttdeci">uint8_t read(void)</div><div class="ttdef"><b>Definition:</b> I2CIO.cpp:121</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..812e2d934d49cca7b7fa5fbbfce1eceae6988f6e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8cpp.html @@ -0,0 +1,120 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LCD.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_l_c_d_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LCD.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <stdio.h></code><br/> +<code>#include <string.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include <WProgram.h></code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +</div> +<p><a href="_l_c_d_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_l_c_d_8cpp.html">LCD.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..96240d9896282f9aee81353d9c00e6f193828493 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8cpp_source.html @@ -0,0 +1,481 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LCD.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_l_c_d_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LCD.cpp</div> </div> +</div> +<div class="contents"> +<a href="_l_c_d_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file LCD.cpp</span> +<a name="l00013"></a>00013 <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span> +<a name="l00014"></a>00014 <span class="comment">// in the Arduino SDK.</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// This is a basic implementation of the HD44780 library of the</span> +<a name="l00018"></a>00018 <span class="comment">// Arduino SDK. This library is a refactored version of the one supplied</span> +<a name="l00019"></a>00019 <span class="comment">// in the Arduino SDK in such a way that it simplifies its extension</span> +<a name="l00020"></a>00020 <span class="comment">// to support other mechanism to communicate to LCDs such as I2C, Serial, SR, ...</span> +<a name="l00021"></a>00021 <span class="comment">// The original library has been reworked in such a way that this will be</span> +<a name="l00022"></a>00022 <span class="comment">// the base class implementing all generic methods to command an LCD based</span> +<a name="l00023"></a>00023 <span class="comment">// on the Hitachi HD44780 and compatible chipsets.</span> +<a name="l00024"></a>00024 <span class="comment">//</span> +<a name="l00025"></a>00025 <span class="comment">// This base class is a pure abstract class and needs to be extended. As reference,</span> +<a name="l00026"></a>00026 <span class="comment">// it has been extended to drive 4 and 8 bit mode control, LCDs and I2C extension</span> +<a name="l00027"></a>00027 <span class="comment">// backpacks such as the I2CLCDextraIO using the PCF8574* I2C IO Expander ASIC.</span> +<a name="l00028"></a>00028 <span class="comment">//</span> +<a name="l00029"></a>00029 <span class="comment">//</span> +<a name="l00030"></a>00030 <span class="comment">// @version API 1.1.0</span> +<a name="l00031"></a>00031 <span class="comment">//</span> +<a name="l00032"></a>00032 <span class="comment">// 2012.03.29 bperrybap - changed comparision to use LCD_5x8DOTS rather than 0</span> +<a name="l00033"></a>00033 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span> +<a name="l00034"></a>00034 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00035"></a>00035 <span class="preprocessor">#include <stdio.h></span> +<a name="l00036"></a>00036 <span class="preprocessor">#include <string.h></span> +<a name="l00037"></a>00037 <span class="preprocessor">#include <inttypes.h></span> +<a name="l00038"></a>00038 +<a name="l00039"></a>00039 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#include <WProgram.h></span> +<a name="l00041"></a>00041 <span class="preprocessor">#else</span> +<a name="l00042"></a>00042 <span class="preprocessor"></span><span class="preprocessor">#include <Arduino.h></span> +<a name="l00043"></a>00043 <span class="preprocessor">#endif</span> +<a name="l00044"></a>00044 <span class="preprocessor"></span> +<a name="l00045"></a>00045 <span class="preprocessor">#include "<a class="code" href="_l_c_d_8h.html">LCD.h</a>"</span> +<a name="l00046"></a>00046 +<a name="l00047"></a>00047 <span class="comment">// CLASS CONSTRUCTORS</span> +<a name="l00048"></a>00048 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00049"></a>00049 <span class="comment">// Constructor</span> +<a name="l00050"></a><a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">00050</a> <a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD::LCD</a> () +<a name="l00051"></a>00051 { +<a name="l00052"></a>00052 +<a name="l00053"></a>00053 } +<a name="l00054"></a>00054 +<a name="l00055"></a>00055 <span class="comment">// PUBLIC METHODS</span> +<a name="l00056"></a>00056 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00057"></a>00057 <span class="comment">// When the display powers up, it is configured as follows:</span> +<a name="l00058"></a>00058 <span class="comment">// 0. LCD starts in 8 bit mode</span> +<a name="l00059"></a>00059 <span class="comment">// 1. Display clear</span> +<a name="l00060"></a>00060 <span class="comment">// 2. Function set: </span> +<a name="l00061"></a>00061 <span class="comment">// DL = 1; 8-bit interface data </span> +<a name="l00062"></a>00062 <span class="comment">// N = 0; 1-line display </span> +<a name="l00063"></a>00063 <span class="comment">// F = 0; 5x8 dot character font </span> +<a name="l00064"></a>00064 <span class="comment">// 3. Display on/off control: </span> +<a name="l00065"></a>00065 <span class="comment">// D = 0; Display off </span> +<a name="l00066"></a>00066 <span class="comment">// C = 0; Cursor off </span> +<a name="l00067"></a>00067 <span class="comment">// B = 0; Blinking off </span> +<a name="l00068"></a>00068 <span class="comment">// 4. Entry mode set: </span> +<a name="l00069"></a>00069 <span class="comment">// I/D = 1; Increment by 1 </span> +<a name="l00070"></a>00070 <span class="comment">// S = 0; No shift </span> +<a name="l00071"></a>00071 <span class="comment">//</span> +<a name="l00072"></a>00072 <span class="comment">// Note, however, that resetting the Arduino doesn't reset the LCD, so we</span> +<a name="l00073"></a>00073 <span class="comment">// can't assume that its in that state when a application starts (and the</span> +<a name="l00074"></a>00074 <span class="comment">// LiquidCrystal constructor is called).</span> +<a name="l00075"></a>00075 <span class="comment">// A call to begin() will reinitialize the LCD.</span> +<a name="l00076"></a>00076 <span class="comment">//</span> +<a name="l00077"></a><a class="code" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">00077</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">LCD::begin</a>(uint8_t cols, uint8_t lines, uint8_t dotsize) +<a name="l00078"></a>00078 { +<a name="l00079"></a>00079 <span class="keywordflow">if</span> (lines > 1) +<a name="l00080"></a>00080 { +<a name="l00081"></a>00081 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> |= <a class="code" href="_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25">LCD_2LINE</a>; +<a name="l00082"></a>00082 } +<a name="l00083"></a>00083 <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a> = lines; +<a name="l00084"></a>00084 <a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">_cols</a> = cols; +<a name="l00085"></a>00085 +<a name="l00086"></a>00086 <span class="comment">// for some 1 line displays you can select a 10 pixel high font</span> +<a name="l00087"></a>00087 <span class="comment">// ------------------------------------------------------------</span> +<a name="l00088"></a>00088 <span class="keywordflow">if</span> ((dotsize != <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>) && (lines == 1)) +<a name="l00089"></a>00089 { +<a name="l00090"></a>00090 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> |= <a class="code" href="_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42">LCD_5x10DOTS</a>; +<a name="l00091"></a>00091 } +<a name="l00092"></a>00092 +<a name="l00093"></a>00093 <span class="comment">// SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!</span> +<a name="l00094"></a>00094 <span class="comment">// according to datasheet, we need at least 40ms after power rises above 2.7V</span> +<a name="l00095"></a>00095 <span class="comment">// before sending commands. Arduino can turn on way before 4.5V so we'll wait </span> +<a name="l00096"></a>00096 <span class="comment">// 50</span> +<a name="l00097"></a>00097 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00098"></a>00098 delay (100); <span class="comment">// 100ms delay</span> +<a name="l00099"></a>00099 +<a name="l00100"></a>00100 <span class="comment">//put the LCD into 4 bit or 8 bit mode</span> +<a name="l00101"></a>00101 <span class="comment">// -------------------------------------</span> +<a name="l00102"></a>00102 <span class="keywordflow">if</span> (! (<a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> & <a class="code" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">LCD_8BITMODE</a>)) +<a name="l00103"></a>00103 { +<a name="l00104"></a>00104 <span class="comment">// this is according to the hitachi HD44780 datasheet</span> +<a name="l00105"></a>00105 <span class="comment">// figure 24, pg 46</span> +<a name="l00106"></a>00106 +<a name="l00107"></a>00107 <span class="comment">// we start in 8bit mode, try to set 4 bit mode</span> +<a name="l00108"></a>00108 <span class="comment">// Special case of "Function Set"</span> +<a name="l00109"></a>00109 send(0x03, <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a>); +<a name="l00110"></a>00110 delayMicroseconds(4500); <span class="comment">// wait min 4.1ms</span> +<a name="l00111"></a>00111 +<a name="l00112"></a>00112 <span class="comment">// second try</span> +<a name="l00113"></a>00113 send ( 0x03, <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ); +<a name="l00114"></a>00114 delayMicroseconds(150); <span class="comment">// wait min 100us</span> +<a name="l00115"></a>00115 +<a name="l00116"></a>00116 <span class="comment">// third go!</span> +<a name="l00117"></a>00117 send( 0x03, <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ); +<a name="l00118"></a>00118 delayMicroseconds(150); <span class="comment">// wait min of 100us</span> +<a name="l00119"></a>00119 +<a name="l00120"></a>00120 <span class="comment">// finally, set to 4-bit interface</span> +<a name="l00121"></a>00121 send ( 0x02, <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ); +<a name="l00122"></a>00122 delayMicroseconds(150); <span class="comment">// wait min of 100us</span> +<a name="l00123"></a>00123 +<a name="l00124"></a>00124 } +<a name="l00125"></a>00125 <span class="keywordflow">else</span> +<a name="l00126"></a>00126 { +<a name="l00127"></a>00127 <span class="comment">// this is according to the hitachi HD44780 datasheet</span> +<a name="l00128"></a>00128 <span class="comment">// page 45 figure 23</span> +<a name="l00129"></a>00129 +<a name="l00130"></a>00130 <span class="comment">// Send function set command sequence</span> +<a name="l00131"></a>00131 command(<a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a> | <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>); +<a name="l00132"></a>00132 delayMicroseconds(4500); <span class="comment">// wait more than 4.1ms</span> +<a name="l00133"></a>00133 +<a name="l00134"></a>00134 <span class="comment">// second try</span> +<a name="l00135"></a>00135 command(<a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a> | <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>); +<a name="l00136"></a>00136 delayMicroseconds(150); +<a name="l00137"></a>00137 +<a name="l00138"></a>00138 <span class="comment">// third go</span> +<a name="l00139"></a>00139 command(<a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a> | <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>); +<a name="l00140"></a>00140 delayMicroseconds(150); +<a name="l00141"></a>00141 +<a name="l00142"></a>00142 } +<a name="l00143"></a>00143 +<a name="l00144"></a>00144 <span class="comment">// finally, set # lines, font size, etc.</span> +<a name="l00145"></a>00145 command(<a class="code" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a> | <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a>); +<a name="l00146"></a>00146 delayMicroseconds ( 60 ); <span class="comment">// wait more</span> +<a name="l00147"></a>00147 +<a name="l00148"></a>00148 <span class="comment">// turn the display on with no cursor or blinking default</span> +<a name="l00149"></a>00149 <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> = <a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a> | <a class="code" href="_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa">LCD_CURSOROFF</a> | <a class="code" href="_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752">LCD_BLINKOFF</a>; +<a name="l00150"></a>00150 <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>(); +<a name="l00151"></a>00151 +<a name="l00152"></a>00152 <span class="comment">// clear the LCD</span> +<a name="l00153"></a>00153 <a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>(); +<a name="l00154"></a>00154 +<a name="l00155"></a>00155 <span class="comment">// Initialize to default text direction (for romance languages)</span> +<a name="l00156"></a>00156 <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> = <a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a> | <a class="code" href="_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42">LCD_ENTRYSHIFTDECREMENT</a>; +<a name="l00157"></a>00157 <span class="comment">// set the entry mode</span> +<a name="l00158"></a>00158 command(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>); +<a name="l00159"></a>00159 +<a name="l00160"></a>00160 <a class="code" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(); +<a name="l00161"></a>00161 +<a name="l00162"></a>00162 } +<a name="l00163"></a>00163 +<a name="l00164"></a>00164 <span class="comment">// Common LCD Commands</span> +<a name="l00165"></a>00165 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00166"></a><a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">00166</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">LCD::clear</a>() +<a name="l00167"></a>00167 { +<a name="l00168"></a>00168 command(<a class="code" href="_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2">LCD_CLEARDISPLAY</a>); <span class="comment">// clear display, set cursor position to zero</span> +<a name="l00169"></a>00169 delayMicroseconds(<a class="code" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">HOME_CLEAR_EXEC</a>); <span class="comment">// this command is time consuming</span> +<a name="l00170"></a>00170 } +<a name="l00171"></a>00171 +<a name="l00172"></a><a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">00172</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">LCD::home</a>() +<a name="l00173"></a>00173 { +<a name="l00174"></a>00174 command(<a class="code" href="_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419">LCD_RETURNHOME</a>); <span class="comment">// set cursor position to zero</span> +<a name="l00175"></a>00175 delayMicroseconds(<a class="code" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">HOME_CLEAR_EXEC</a>); <span class="comment">// This command is time consuming</span> +<a name="l00176"></a>00176 } +<a name="l00177"></a>00177 +<a name="l00178"></a><a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">00178</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">LCD::setCursor</a>(uint8_t col, uint8_t row) +<a name="l00179"></a>00179 { +<a name="l00180"></a>00180 <span class="keyword">const</span> byte row_offsetsDef[] = { 0x00, 0x40, 0x14, 0x54 }; <span class="comment">// For regular LCDs</span> +<a name="l00181"></a>00181 <span class="keyword">const</span> byte row_offsetsLarge[] = { 0x00, 0x40, 0x10, 0x50 }; <span class="comment">// For 16x4 LCDs</span> +<a name="l00182"></a>00182 +<a name="l00183"></a>00183 <span class="keywordflow">if</span> ( row >= <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a> ) +<a name="l00184"></a>00184 { +<a name="l00185"></a>00185 row = <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a>-1; <span class="comment">// rows start at 0</span> +<a name="l00186"></a>00186 } +<a name="l00187"></a>00187 +<a name="l00188"></a>00188 <span class="comment">// 16x4 LCDs have special memory map layout</span> +<a name="l00189"></a>00189 <span class="comment">// ----------------------------------------</span> +<a name="l00190"></a>00190 <span class="keywordflow">if</span> ( <a class="code" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">_cols</a> == 16 && <a class="code" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a> == 4 ) +<a name="l00191"></a>00191 { +<a name="l00192"></a>00192 command(<a class="code" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD_SETDDRAMADDR</a> | (col + row_offsetsLarge[row])); +<a name="l00193"></a>00193 } +<a name="l00194"></a>00194 <span class="keywordflow">else</span> +<a name="l00195"></a>00195 { +<a name="l00196"></a>00196 command(<a class="code" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD_SETDDRAMADDR</a> | (col + row_offsetsDef[row])); +<a name="l00197"></a>00197 } +<a name="l00198"></a>00198 +<a name="l00199"></a>00199 } +<a name="l00200"></a>00200 +<a name="l00201"></a>00201 <span class="comment">// Turn the display on/off</span> +<a name="l00202"></a><a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">00202</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">LCD::noDisplay</a>() +<a name="l00203"></a>00203 { +<a name="l00204"></a>00204 <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &= ~<a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a>; +<a name="l00205"></a>00205 command(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>); +<a name="l00206"></a>00206 } +<a name="l00207"></a>00207 +<a name="l00208"></a><a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">00208</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD::display</a>() +<a name="l00209"></a>00209 { +<a name="l00210"></a>00210 <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a>; +<a name="l00211"></a>00211 command(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>); +<a name="l00212"></a>00212 } +<a name="l00213"></a>00213 +<a name="l00214"></a>00214 <span class="comment">// Turns the underline cursor on/off</span> +<a name="l00215"></a><a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">00215</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">LCD::noCursor</a>() +<a name="l00216"></a>00216 { +<a name="l00217"></a>00217 <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &= ~<a class="code" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD_CURSORON</a>; +<a name="l00218"></a>00218 command(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>); +<a name="l00219"></a>00219 } +<a name="l00220"></a><a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">00220</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">LCD::cursor</a>() +<a name="l00221"></a>00221 { +<a name="l00222"></a>00222 <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD_CURSORON</a>; +<a name="l00223"></a>00223 command(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>); +<a name="l00224"></a>00224 } +<a name="l00225"></a>00225 +<a name="l00226"></a>00226 <span class="comment">// Turns on/off the blinking cursor</span> +<a name="l00227"></a><a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">00227</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">LCD::noBlink</a>() +<a name="l00228"></a>00228 { +<a name="l00229"></a>00229 <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> &= ~<a class="code" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD_BLINKON</a>; +<a name="l00230"></a>00230 command(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>); +<a name="l00231"></a>00231 } +<a name="l00232"></a>00232 +<a name="l00233"></a><a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">00233</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">LCD::blink</a>() +<a name="l00234"></a>00234 { +<a name="l00235"></a>00235 <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a> |= <a class="code" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD_BLINKON</a>; +<a name="l00236"></a>00236 command(<a class="code" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a> | <a class="code" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a>); +<a name="l00237"></a>00237 } +<a name="l00238"></a>00238 +<a name="l00239"></a>00239 <span class="comment">// These commands scroll the display without changing the RAM</span> +<a name="l00240"></a><a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">00240</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">LCD::scrollDisplayLeft</a>(<span class="keywordtype">void</span>) +<a name="l00241"></a>00241 { +<a name="l00242"></a>00242 command(<a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a> | <a class="code" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD_DISPLAYMOVE</a> | <a class="code" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">LCD_MOVELEFT</a>); +<a name="l00243"></a>00243 } +<a name="l00244"></a>00244 +<a name="l00245"></a><a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">00245</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">LCD::scrollDisplayRight</a>(<span class="keywordtype">void</span>) +<a name="l00246"></a>00246 { +<a name="l00247"></a>00247 command(<a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a> | <a class="code" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD_DISPLAYMOVE</a> | <a class="code" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">LCD_MOVERIGHT</a>); +<a name="l00248"></a>00248 } +<a name="l00249"></a>00249 +<a name="l00250"></a>00250 <span class="comment">// This is for text that flows Left to Right</span> +<a name="l00251"></a><a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">00251</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">LCD::leftToRight</a>(<span class="keywordtype">void</span>) +<a name="l00252"></a>00252 { +<a name="l00253"></a>00253 <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> |= <a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a>; +<a name="l00254"></a>00254 command(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>); +<a name="l00255"></a>00255 } +<a name="l00256"></a>00256 +<a name="l00257"></a>00257 <span class="comment">// This is for text that flows Right to Left</span> +<a name="l00258"></a><a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">00258</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">LCD::rightToLeft</a>(<span class="keywordtype">void</span>) +<a name="l00259"></a>00259 { +<a name="l00260"></a>00260 <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> &= ~<a class="code" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a>; +<a name="l00261"></a>00261 command(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>); +<a name="l00262"></a>00262 } +<a name="l00263"></a>00263 +<a name="l00264"></a>00264 <span class="comment">// This method moves the cursor one space to the right</span> +<a name="l00265"></a><a class="code" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">00265</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">LCD::moveCursorRight</a>(<span class="keywordtype">void</span>) +<a name="l00266"></a>00266 { +<a name="l00267"></a>00267 command(<a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a> | <a class="code" href="_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74">LCD_CURSORMOVE</a> | <a class="code" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">LCD_MOVERIGHT</a>); +<a name="l00268"></a>00268 } +<a name="l00269"></a>00269 +<a name="l00270"></a>00270 <span class="comment">// This method moves the cursor one space to the left</span> +<a name="l00271"></a><a class="code" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">00271</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">LCD::moveCursorLeft</a>(<span class="keywordtype">void</span>) +<a name="l00272"></a>00272 { +<a name="l00273"></a>00273 command(<a class="code" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a> | <a class="code" href="_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74">LCD_CURSORMOVE</a> | <a class="code" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">LCD_MOVELEFT</a>); +<a name="l00274"></a>00274 } +<a name="l00275"></a>00275 +<a name="l00276"></a>00276 +<a name="l00277"></a>00277 <span class="comment">// This will 'right justify' text from the cursor</span> +<a name="l00278"></a><a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">00278</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">LCD::autoscroll</a>(<span class="keywordtype">void</span>) +<a name="l00279"></a>00279 { +<a name="l00280"></a>00280 <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> |= <a class="code" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD_ENTRYSHIFTINCREMENT</a>; +<a name="l00281"></a>00281 command(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>); +<a name="l00282"></a>00282 } +<a name="l00283"></a>00283 +<a name="l00284"></a>00284 <span class="comment">// This will 'left justify' text from the cursor</span> +<a name="l00285"></a><a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">00285</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">LCD::noAutoscroll</a>(<span class="keywordtype">void</span>) +<a name="l00286"></a>00286 { +<a name="l00287"></a>00287 <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a> &= ~<a class="code" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD_ENTRYSHIFTINCREMENT</a>; +<a name="l00288"></a>00288 command(<a class="code" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a> | <a class="code" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a>); +<a name="l00289"></a>00289 } +<a name="l00290"></a>00290 +<a name="l00291"></a>00291 <span class="comment">// Write to CGRAM of new characters</span> +<a name="l00292"></a><a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">00292</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">LCD::createChar</a>(uint8_t location, uint8_t charmap[]) +<a name="l00293"></a>00293 { +<a name="l00294"></a>00294 location &= 0x7; <span class="comment">// we only have 8 locations 0-7</span> +<a name="l00295"></a>00295 +<a name="l00296"></a>00296 command(<a class="code" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">LCD_SETCGRAMADDR</a> | (location << 3)); +<a name="l00297"></a>00297 delayMicroseconds(30); +<a name="l00298"></a>00298 +<a name="l00299"></a>00299 <span class="keywordflow">for</span> (uint8_t i = 0; i < 8; i++) +<a name="l00300"></a>00300 { +<a name="l00301"></a>00301 <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(charmap[i]); <span class="comment">// call the virtual write method</span> +<a name="l00302"></a>00302 delayMicroseconds(40); +<a name="l00303"></a>00303 } +<a name="l00304"></a>00304 } +<a name="l00305"></a>00305 +<a name="l00306"></a>00306 <span class="preprocessor">#ifdef __AVR__</span> +<a name="l00307"></a>00307 <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">LCD::createChar</a>(uint8_t location, <span class="keyword">const</span> char *charmap) +<a name="l00308"></a>00308 { +<a name="l00309"></a>00309 location &= 0x7; <span class="comment">// we only have 8 memory locations 0-7</span> +<a name="l00310"></a>00310 +<a name="l00311"></a>00311 command(<a class="code" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">LCD_SETCGRAMADDR</a> | (location << 3)); +<a name="l00312"></a>00312 delayMicroseconds(30); +<a name="l00313"></a>00313 +<a name="l00314"></a>00314 <span class="keywordflow">for</span> (uint8_t i = 0; i < 8; i++) +<a name="l00315"></a>00315 { +<a name="l00316"></a>00316 <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(pgm_read_byte_near(charmap++)); +<a name="l00317"></a>00317 delayMicroseconds(40); +<a name="l00318"></a>00318 } +<a name="l00319"></a>00319 } +<a name="l00320"></a>00320 <span class="preprocessor">#endif // __AVR__</span> +<a name="l00321"></a>00321 <span class="preprocessor"></span> +<a name="l00322"></a>00322 <span class="comment">//</span> +<a name="l00323"></a>00323 <span class="comment">// Switch on the backlight</span> +<a name="l00324"></a><a class="code" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">00324</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">LCD::backlight</a> ( <span class="keywordtype">void</span> ) +<a name="l00325"></a>00325 { +<a name="l00326"></a>00326 <a class="code" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">setBacklight</a>(255); +<a name="l00327"></a>00327 } +<a name="l00328"></a>00328 +<a name="l00329"></a>00329 <span class="comment">//</span> +<a name="l00330"></a>00330 <span class="comment">// Switch off the backlight</span> +<a name="l00331"></a><a class="code" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">00331</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">LCD::noBacklight</a> ( <span class="keywordtype">void</span> ) +<a name="l00332"></a>00332 { +<a name="l00333"></a>00333 <a class="code" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">setBacklight</a>(0); +<a name="l00334"></a>00334 } +<a name="l00335"></a>00335 +<a name="l00336"></a>00336 <span class="comment">//</span> +<a name="l00337"></a>00337 <span class="comment">// Switch fully on the LCD (backlight and LCD)</span> +<a name="l00338"></a><a class="code" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">00338</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">LCD::on</a> ( <span class="keywordtype">void</span> ) +<a name="l00339"></a>00339 { +<a name="l00340"></a>00340 <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>(); +<a name="l00341"></a>00341 <a class="code" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(); +<a name="l00342"></a>00342 } +<a name="l00343"></a>00343 +<a name="l00344"></a>00344 <span class="comment">//</span> +<a name="l00345"></a>00345 <span class="comment">// Switch fully off the LCD (backlight and LCD) </span> +<a name="l00346"></a><a class="code" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">00346</a> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">LCD::off</a> ( <span class="keywordtype">void</span> ) +<a name="l00347"></a>00347 { +<a name="l00348"></a>00348 <a class="code" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(); +<a name="l00349"></a>00349 <a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>(); +<a name="l00350"></a>00350 } +<a name="l00351"></a>00351 +<a name="l00352"></a>00352 <span class="comment">// General LCD commands - generic methods used by the rest of the commands</span> +<a name="l00353"></a>00353 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00354"></a>00354 <span class="keywordtype">void</span> LCD::command(uint8_t value) +<a name="l00355"></a>00355 { +<a name="l00356"></a>00356 send(value, <a class="code" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">COMMAND</a>); +<a name="l00357"></a>00357 } +<a name="l00358"></a>00358 +<a name="l00359"></a>00359 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00360"></a><a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">00360</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD::write</a>(uint8_t value) +<a name="l00361"></a>00361 { +<a name="l00362"></a>00362 send(value, <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a>); +<a name="l00363"></a>00363 } +<a name="l00364"></a>00364 <span class="preprocessor">#else</span> +<a name="l00365"></a>00365 <span class="preprocessor"></span><span class="keywordtype">size_t</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD::write</a>(uint8_t value) +<a name="l00366"></a>00366 { +<a name="l00367"></a>00367 send(value, <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a>); +<a name="l00368"></a>00368 <span class="keywordflow">return</span> 1; <span class="comment">// assume OK</span> +<a name="l00369"></a>00369 } +<a name="l00370"></a>00370 <span class="preprocessor">#endif</span> +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_l_c_d_8cpp.html">LCD.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8h.html b/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..6f8767511b8fe926b0fcb07c4c3bfb0eb12d5d96 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8h.html @@ -0,0 +1,738 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LCD.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_l_c_d_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#define-members">Defines</a> | +<a href="#enum-members">Enumerations</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">LCD.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <WProgram.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include <Print.h></code><br/> +</div> +<p><a href="_l_c_d_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a0f50ae3b4bdb42dd5ad74b2c604a7515">BACKLIGHT_OFF</a>   0</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aa5bad1c51f5fac029f3deacfef48c54b">BACKLIGHT_ON</a>   255</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">COMMAND</a>   0</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a>   1</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a>   2</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">HOME_CLEAR_EXEC</a>   2000</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25">LCD_2LINE</a>   0x08</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD_4BITMODE</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42">LCD_5x10DOTS</a>   0x04</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">LCD_8BITMODE</a>   0x10</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752">LCD_BLINKOFF</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD_BLINKON</a>   0x01</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2">LCD_CLEARDISPLAY</a>   0x01</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74">LCD_CURSORMOVE</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa">LCD_CURSOROFF</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD_CURSORON</a>   0x02</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD_CURSORSHIFT</a>   0x10</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD_DISPLAYCONTROL</a>   0x08</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD_DISPLAYMOVE</a>   0x08</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a257ebe775cac7140cf82aa40d8ce545a">LCD_DISPLAYOFF</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD_DISPLAYON</a>   0x04</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD_ENTRYLEFT</a>   0x02</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD_ENTRYMODESET</a>   0x04</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a43c26ba2e66880fac95ef640b56873ad">LCD_ENTRYRIGHT</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42">LCD_ENTRYSHIFTDECREMENT</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD_ENTRYSHIFTINCREMENT</a>   0x01</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD_FUNCTIONSET</a>   0x20</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">LCD_MOVELEFT</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">LCD_MOVERIGHT</a>   0x04</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419">LCD_RETURNHOME</a>   0x02</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">LCD_SETCGRAMADDR</a>   0x40</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD_SETDDRAMADDR</a>   0x80</td></tr> +<tr><td colspan="2"><h2><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> { <a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>, +<a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">NEGATIVE</a> + }</td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a> (uint16_t uSec)</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a0f50ae3b4bdb42dd5ad74b2c604a7515"></a><!-- doxytag: member="LCD.h::BACKLIGHT_OFF" ref="a0f50ae3b4bdb42dd5ad74b2c604a7515" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define BACKLIGHT_OFF   0</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Backlight off constant declaration Used in combination with the setBacklight to swith off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. setBacklight </p> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00155">155</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aa5bad1c51f5fac029f3deacfef48c54b"></a><!-- doxytag: member="LCD.h::BACKLIGHT_ON" ref="aa5bad1c51f5fac029f3deacfef48c54b" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define BACKLIGHT_ON   255</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Backlight on constant declaration Used in combination with the setBacklight to swith on the <a class="el" href="class_l_c_d.html">LCD</a> backlight. setBacklight </p> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00163">163</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ab0d87e07831e7e4943caef187872123e"></a><!-- doxytag: member="LCD.h::COMMAND" ref="ab0d87e07831e7e4943caef187872123e" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define COMMAND   0</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00136">136</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aad9ae913bdfab20dd94ad04ee2d5b045"></a><!-- doxytag: member="LCD.h::DATA" ref="aad9ae913bdfab20dd94ad04ee2d5b045" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define DATA   1</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00137">137</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aa1e30e32b6c2cf8d90a9281328472dbe"></a><!-- doxytag: member="LCD.h::FOUR_BITS" ref="aa1e30e32b6c2cf8d90a9281328472dbe" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define FOUR_BITS   2</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00138">138</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ad25b138788d83e67f840588754e2df2f"></a><!-- doxytag: member="LCD.h::HOME_CLEAR_EXEC" ref="ad25b138788d83e67f840588754e2df2f" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define HOME_CLEAR_EXEC   2000</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Defines the duration of the home and clear commands This constant defines the time it takes for the home and clear commands in the <a class="el" href="class_l_c_d.html">LCD</a> - Time in microseconds. </p> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00147">147</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a8c85cf88d8af66a47c42249d81c94641"></a><!-- doxytag: member="LCD.h::LCD_1LINE" ref="a8c85cf88d8af66a47c42249d81c94641" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_1LINE   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00129">129</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7987e93538df2819583ba43b81ddbb25"></a><!-- doxytag: member="LCD.h::LCD_2LINE" ref="a7987e93538df2819583ba43b81ddbb25" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_2LINE   0x08</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00128">128</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ab8c35d355d2372090c7a347e961c9224"></a><!-- doxytag: member="LCD.h::LCD_4BITMODE" ref="ab8c35d355d2372090c7a347e961c9224" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_4BITMODE   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00127">127</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="abb3210156d88d3fe18c9352eb161fe42"></a><!-- doxytag: member="LCD.h::LCD_5x10DOTS" ref="abb3210156d88d3fe18c9352eb161fe42" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_5x10DOTS   0x04</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00130">130</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a9ef57e724c1b846dae0f531aff6fb464"></a><!-- doxytag: member="LCD.h::LCD_5x8DOTS" ref="a9ef57e724c1b846dae0f531aff6fb464" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_5x8DOTS   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00131">131</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a59a57ca857dae5d89eb5f2a38c4ac6f0"></a><!-- doxytag: member="LCD.h::LCD_8BITMODE" ref="a59a57ca857dae5d89eb5f2a38c4ac6f0" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_8BITMODE   0x10</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00126">126</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a4b28243034cec656b0ed490ba6979752"></a><!-- doxytag: member="LCD.h::LCD_BLINKOFF" ref="a4b28243034cec656b0ed490ba6979752" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_BLINKOFF   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00115">115</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ac3b19d4e6553b9bbf18a23387e439206"></a><!-- doxytag: member="LCD.h::LCD_BLINKON" ref="ac3b19d4e6553b9bbf18a23387e439206" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_BLINKON   0x01</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00114">114</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="acc3509bc0442b41e2b816555de473ed2"></a><!-- doxytag: member="LCD.h::LCD_CLEARDISPLAY" ref="acc3509bc0442b41e2b816555de473ed2" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_CLEARDISPLAY   0x01</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>All these definitions shouldn't be used unless you are writing a driver. All these definitions are for driver implementation only and shouldn't be used by applications. </p> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00092">92</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ac21f0302ac4136775877d5f4759e4f74"></a><!-- doxytag: member="LCD.h::LCD_CURSORMOVE" ref="ac21f0302ac4136775877d5f4759e4f74" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_CURSORMOVE   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00120">120</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a32b194a3adaa0a0bb69acee2e6a754fa"></a><!-- doxytag: member="LCD.h::LCD_CURSOROFF" ref="a32b194a3adaa0a0bb69acee2e6a754fa" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_CURSOROFF   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00113">113</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ab67f0adccde68de88eee0513fdfc4574"></a><!-- doxytag: member="LCD.h::LCD_CURSORON" ref="ab67f0adccde68de88eee0513fdfc4574" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_CURSORON   0x02</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00112">112</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a61f16a2b7550e4700f7898a7587c5594"></a><!-- doxytag: member="LCD.h::LCD_CURSORSHIFT" ref="a61f16a2b7550e4700f7898a7587c5594" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_CURSORSHIFT   0x10</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00096">96</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="adfb8b2b8b8a08d7313504d7a4f89d99f"></a><!-- doxytag: member="LCD.h::LCD_DISPLAYCONTROL" ref="adfb8b2b8b8a08d7313504d7a4f89d99f" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_DISPLAYCONTROL   0x08</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00095">95</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ab2f7b67abfac33f610acfd5d7a971f40"></a><!-- doxytag: member="LCD.h::LCD_DISPLAYMOVE" ref="ab2f7b67abfac33f610acfd5d7a971f40" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_DISPLAYMOVE   0x08</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00119">119</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a257ebe775cac7140cf82aa40d8ce545a"></a><!-- doxytag: member="LCD.h::LCD_DISPLAYOFF" ref="a257ebe775cac7140cf82aa40d8ce545a" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_DISPLAYOFF   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00111">111</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a76236ae8317b34bbc98ea56bc0a2639c"></a><!-- doxytag: member="LCD.h::LCD_DISPLAYON" ref="a76236ae8317b34bbc98ea56bc0a2639c" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_DISPLAYON   0x04</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00110">110</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ae7c6309fce6200bd7526d090a4a84dd0"></a><!-- doxytag: member="LCD.h::LCD_ENTRYLEFT" ref="ae7c6309fce6200bd7526d090a4a84dd0" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_ENTRYLEFT   0x02</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00104">104</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5597e1d5819ea2f0734ad4313abf6703"></a><!-- doxytag: member="LCD.h::LCD_ENTRYMODESET" ref="a5597e1d5819ea2f0734ad4313abf6703" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_ENTRYMODESET   0x04</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00094">94</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a43c26ba2e66880fac95ef640b56873ad"></a><!-- doxytag: member="LCD.h::LCD_ENTRYRIGHT" ref="a43c26ba2e66880fac95ef640b56873ad" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_ENTRYRIGHT   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00103">103</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a049ee97e98d04788c1da9a55590fbe42"></a><!-- doxytag: member="LCD.h::LCD_ENTRYSHIFTDECREMENT" ref="a049ee97e98d04788c1da9a55590fbe42" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_ENTRYSHIFTDECREMENT   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00106">106</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aa2cf1d0f4a319e53c009cffe1184466c"></a><!-- doxytag: member="LCD.h::LCD_ENTRYSHIFTINCREMENT" ref="aa2cf1d0f4a319e53c009cffe1184466c" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_ENTRYSHIFTINCREMENT   0x01</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00105">105</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aaef882ae70d1f485cd132815d9716111"></a><!-- doxytag: member="LCD.h::LCD_FUNCTIONSET" ref="aaef882ae70d1f485cd132815d9716111" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_FUNCTIONSET   0x20</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00097">97</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aafb86adb0dfca1e65d65b2cd1946a009"></a><!-- doxytag: member="LCD.h::LCD_MOVELEFT" ref="aafb86adb0dfca1e65d65b2cd1946a009" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_MOVELEFT   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00122">122</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="acf5999180233790bb2c9902efde58f7f"></a><!-- doxytag: member="LCD.h::LCD_MOVERIGHT" ref="acf5999180233790bb2c9902efde58f7f" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_MOVERIGHT   0x04</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00121">121</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a154c86a887633d0f6d9988e4dbb1f419"></a><!-- doxytag: member="LCD.h::LCD_RETURNHOME" ref="a154c86a887633d0f6d9988e4dbb1f419" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_RETURNHOME   0x02</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00093">93</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aae6ea856879c11dee58493184582a52f"></a><!-- doxytag: member="LCD.h::LCD_SETCGRAMADDR" ref="aae6ea856879c11dee58493184582a52f" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_SETCGRAMADDR   0x40</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00098">98</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a15008b832807a208d9d88c74e6751ebf"></a><!-- doxytag: member="LCD.h::LCD_SETDDRAMADDR" ref="a15008b832807a208d9d88c74e6751ebf" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_SETDDRAMADDR   0x80</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00099">99</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<hr/><h2>Enumeration Type Documentation</h2> +<a class="anchor" id="aeeef728bf4726268aa5e99391a1502bc"></a><!-- doxytag: member="LCD.h::t_backlighPol" ref="aeeef728bf4726268aa5e99391a1502bc" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5"></a><!-- doxytag: member="POSITIVE" ref="aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5" args="" -->POSITIVE</em> </td><td> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865"></a><!-- doxytag: member="NEGATIVE" ref="aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865" args="" -->NEGATIVE</em> </td><td> +</td></tr> +</table> +</dd> +</dl> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00171">171</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +<hr/><h2>Function Documentation</h2> +<a class="anchor" id="a6eac41e4be58d7736ac0c19de225c0dc"></a><!-- doxytag: member="LCD.h::waitUsec" ref="a6eac41e4be58d7736ac0c19de225c0dc" args="(uint16_t uSec)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static void waitUsec </td> + <td>(</td> + <td class="paramtype">uint16_t </td> + <td class="paramname"><em>uSec</em></td><td>)</td> + <td><code> [inline, static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Enables disables fast waits for write operations for <a class="el" href="class_l_c_d.html">LCD</a> If defined, the library will avoid doing un-necessary waits. this can be done, because the time taken by Arduino's slow digitalWrite operations. If fast digitalIO operations, comment this line out or undefine the mode.</p> +<p>waits for a given time in microseconds (compilation dependent). Waits for a given time defined in microseconds depending on the FAST_MODE define. If the FAST_MODE is defined the call will return inmediatelly. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">uSec[in]</td><td>time in microseconds. </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>None </dd></dl> + +<p>Definition at line <a class="el" href="_l_c_d_8h_source.html#l00075">75</a> of file <a class="el" href="_l_c_d_8h_source.html">LCD.h</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_l_c_d_8h.html">LCD.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..18130a5c2aef4e82501d95049057662bcca841bf --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_l_c_d_8h_source.html @@ -0,0 +1,355 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LCD.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LCD.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file LCD.h</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// in the Arduino SDK.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// Arduino SDK. This library is a refactored version of the one supplied</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// in the Arduino SDK in such a way that it simplifies its extension</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// to support other mechanism to communicate to LCDs such as I2C, Serial, SR, </span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// The original library has been reworked in such a way that this will be</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// the base class implementing all generic methods to command an LCD based</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// on the Hitachi HD44780 and compatible chipsets.</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// This base class is a pure abstract class and needs to be extended. As reference,</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// it has been extended to drive 4 and 8 bit mode control, LCDs and I2C extension</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// backpacks such as the I2CLCDextraIO using the PCF8574* I2C IO Expander ASIC.</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">//</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// The functionality provided by this class and its base class is identical</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// @version API 1.1.0</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">//</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#ifndef _LCD_H_</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define _LCD_H_</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#if (ARDUINO < 100)</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <WProgram.h></span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <Arduino.h></span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#ifdef __AVR__</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <avr/pgmspace.h></span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#include <Print.h></span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#ifndef _BV </span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#define _BV(bit) (1 << (bit))</span></div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#ifdef __AVR__</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#define FAST_MODE</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> waitUsec ( uint16_t uSec )</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#ifndef FAST_MODE</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  delayMicroseconds ( uSec );</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif // FAST_MODE</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// LCD Commands</span></div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#define LCD_CLEARDISPLAY 0x01</span></div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor">#define LCD_RETURNHOME 0x02</span></div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#define LCD_ENTRYMODESET 0x04</span></div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#define LCD_DISPLAYCONTROL 0x08</span></div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#define LCD_CURSORSHIFT 0x10</span></div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#define LCD_FUNCTIONSET 0x20</span></div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#define LCD_SETCGRAMADDR 0x40</span></div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#define LCD_SETDDRAMADDR 0x80</span></div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// flags for display entry mode</span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#define LCD_ENTRYRIGHT 0x00</span></div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#define LCD_ENTRYLEFT 0x02</span></div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor">#define LCD_ENTRYSHIFTINCREMENT 0x01</span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#define LCD_ENTRYSHIFTDECREMENT 0x00</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// flags for display on/off and cursor control</span></div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#define LCD_DISPLAYON 0x04</span></div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">#define LCD_DISPLAYOFF 0x00</span></div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#define LCD_CURSORON 0x02</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#define LCD_CURSOROFF 0x00</span></div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#define LCD_BLINKON 0x01</span></div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#define LCD_BLINKOFF 0x00</span></div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// flags for display/cursor shift</span></div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define LCD_DISPLAYMOVE 0x08</span></div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#define LCD_CURSORMOVE 0x00</span></div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#define LCD_MOVERIGHT 0x04</span></div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#define LCD_MOVELEFT 0x00</span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// flags for function set</span></div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#define LCD_8BITMODE 0x10</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#define LCD_4BITMODE 0x00</span></div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define LCD_2LINE 0x08</span></div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#define LCD_1LINE 0x00</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#define LCD_5x10DOTS 0x04</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor">#define LCD_5x8DOTS 0x00</span></div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// Define COMMAND and DATA LCD Rs (used by send method).</span></div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">#define COMMAND 0</span></div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#define DATA 1</span></div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#define FOUR_BITS 2</span></div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#define HOME_CLEAR_EXEC 2000</span></div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#define BACKLIGHT_OFF 0</span></div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor">#define BACKLIGHT_ON 255</span></div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keyword">typedef</span> <span class="keyword">enum</span> { POSITIVE, NEGATIVE } t_backlighPol;</div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div> +<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="class_l_c_d.html"> 187</a></span> <span class="keyword">class </span><a class="code" href="class_l_c_d.html">LCD</a> : <span class="keyword">public</span> Print </div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  </div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ( );</div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  </div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);</div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  </div> +<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>();</div> +<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div> +<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>();</div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  </div> +<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>();</div> +<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  </div> +<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>();</div> +<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  </div> +<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>();</div> +<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  </div> +<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>();</div> +<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  </div> +<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>();</div> +<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  </div> +<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>();</div> +<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  </div> +<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>();</div> +<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  </div> +<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>();</div> +<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  </div> +<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>();</div> +<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  </div> +<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>();</div> +<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  </div> +<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>();</div> +<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  </div> +<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  </div> +<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>();</div> +<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  </div> +<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>();</div> +<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  </div> +<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>();</div> +<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  </div> +<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[]);</div> +<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div> +<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="preprocessor">#ifdef __AVR__</span></div> +<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div> +<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, <span class="keyword">const</span> <span class="keywordtype">char</span> *charmap);</div> +<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor">#endif // __AVR__</span></div> +<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  </div> +<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row);</div> +<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  </div> +<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> ( <span class="keywordtype">void</span> );</div> +<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  </div> +<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> ( <span class="keywordtype">void</span> );</div> +<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  </div> +<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> ( <span class="keywordtype">void</span> );</div> +<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> </div> +<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> ( <span class="keywordtype">void</span> );</div> +<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  </div> +<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="comment">//</span></div> +<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// virtual class methods</span></div> +<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// --------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc"> 486</a></span> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a> ( uint8_t value, t_backlighPol pol ) { };</div> +<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  </div> +<div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828"> 505</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">setBacklight</a> ( uint8_t value ) { };</div> +<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  </div> +<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="preprocessor">#if (ARDUINO < 100)</span></div> +<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value);</div> +<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value);</div> +<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  </div> +<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor">#if (ARDUINO < 100)</span></div> +<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keyword">using</span> Print::write;</div> +<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keyword">using</span> Print::write;</div> +<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="preprocessor">#endif </span></div> +<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  </div> +<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="keyword">protected</span>:</div> +<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment">// Internal LCD variables to control the LCD shared between all derived</span></div> +<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="comment">// classes.</span></div> +<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  uint8_t _displayfunction; <span class="comment">// LCD_5x10DOTS or LCD_5x8DOTS, LCD_4BITMODE or </span></div> +<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="comment">// LCD_8BITMODE, LCD_1LINE or LCD_2LINE</span></div> +<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  uint8_t _displaycontrol; <span class="comment">// LCD base control command LCD on/off, blink, cursor</span></div> +<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="comment">// all commands are "ored" to its contents.</span></div> +<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  uint8_t _displaymode; <span class="comment">// Text entry mode to the LCD</span></div> +<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  uint8_t _numlines; <span class="comment">// Number of lines of the LCD, initialized with begin()</span></div> +<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  uint8_t _cols; <span class="comment">// Number of columns in the LCD</span></div> +<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  t_backlighPol _polarity; <span class="comment">// Backlight polarity</span></div> +<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  </div> +<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keywordtype">void</span> command(uint8_t value);</div> +<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div> +<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="preprocessor">#if (ARDUINO < 100)</span></div> +<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> send(uint8_t value, uint8_t mode) { };</div> +<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> send(uint8_t value, uint8_t mode) = 0;</div> +<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  </div> +<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> };</div> +<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div> +<div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_l_c_d_html_a91cba8f93c692abcddf8bc3de58d2d3a"><div class="ttname"><a href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">LCD::createChar</a></div><div class="ttdeci">void createChar(uint8_t location, uint8_t charmap[])</div><div class="ttdef"><b>Definition:</b> LCD.cpp:294</div></div> +<div class="ttc" id="class_l_c_d_html_abb3ed88d530f6283e6159b4973e7da9e"><div class="ttname"><a href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">LCD::autoscroll</a></div><div class="ttdeci">void autoscroll()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:280</div></div> +<div class="ttc" id="class_l_c_d_html_a238e9f6476dc7df64af04eb6c87f6ac7"><div class="ttname"><a href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">LCD::leftToRight</a></div><div class="ttdeci">void leftToRight()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:253</div></div> +<div class="ttc" id="class_l_c_d_html_aba8867fe2210cbfa8db869208709be10"><div class="ttname"><a href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">LCD::backlight</a></div><div class="ttdeci">void backlight(void)</div><div class="ttdef"><b>Definition:</b> LCD.cpp:326</div></div> +<div class="ttc" id="class_l_c_d_html_afa699e0beeeee03cce8cef87eba81c4a"><div class="ttname"><a href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">LCD::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:168</div></div> +<div class="ttc" id="class_l_c_d_html_a718da3a638deb59bd1c7a5222a52d98a"><div class="ttname"><a href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">LCD::on</a></div><div class="ttdeci">void on(void)</div><div class="ttdef"><b>Definition:</b> LCD.cpp:340</div></div> +<div class="ttc" id="class_l_c_d_html_a191639be183be1476c9bfe6d455d23b2"><div class="ttname"><a href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">LCD::off</a></div><div class="ttdeci">void off(void)</div><div class="ttdef"><b>Definition:</b> LCD.cpp:348</div></div> +<div class="ttc" id="class_l_c_d_html_a3b755c4b397b5985752be8c30ee1a9b5"><div class="ttname"><a href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">LCD::noBlink</a></div><div class="ttdeci">void noBlink()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:229</div></div> +<div class="ttc" id="class_l_c_d_html_abfc44b294772f09020bfa32af8a79571"><div class="ttname"><a href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">LCD::scrollDisplayRight</a></div><div class="ttdeci">void scrollDisplayRight()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:247</div></div> +<div class="ttc" id="class_l_c_d_html_a5b07cf05e8e5e7c53654f5ca0cf58b89"><div class="ttname"><a href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD::display</a></div><div class="ttdeci">void display()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:210</div></div> +<div class="ttc" id="class_l_c_d_html_a48220450fd152b25994eb7d0ba340e8d"><div class="ttname"><a href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">LCD::setCursor</a></div><div class="ttdeci">void setCursor(uint8_t col, uint8_t row)</div><div class="ttdef"><b>Definition:</b> LCD.cpp:180</div></div> +<div class="ttc" id="class_l_c_d_html_ac014830eadc26bfd86308ea8734f4428"><div class="ttname"><a href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">LCD::rightToLeft</a></div><div class="ttdeci">void rightToLeft()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:260</div></div> +<div class="ttc" id="class_l_c_d_html_a96035dde40efbf73390e00b5beb00231"><div class="ttname"><a href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">LCD::noAutoscroll</a></div><div class="ttdeci">void noAutoscroll()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:287</div></div> +<div class="ttc" id="class_l_c_d_html_aee45ad37f09312f5d9982257e2d37e68"><div class="ttname"><a href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">LCD::home</a></div><div class="ttdeci">void home()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:174</div></div> +<div class="ttc" id="class_l_c_d_html_a878b36878fa8287093964eba83aace77"><div class="ttname"><a href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">LCD::blink</a></div><div class="ttdeci">void blink()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:235</div></div> +<div class="ttc" id="class_l_c_d_html_a3305570d7b37eb93f2cf840263c15828"><div class="ttname"><a href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD::setBacklight</a></div><div class="ttdeci">virtual void setBacklight(uint8_t value)</div><div class="ttdef"><b>Definition:</b> LCD.h:505</div></div> +<div class="ttc" id="class_l_c_d_html_a09eec0c712e54b066f5894635c1fe75c"><div class="ttname"><a href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">LCD::moveCursorRight</a></div><div class="ttdeci">void moveCursorRight()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:267</div></div> +<div class="ttc" id="class_l_c_d_html_a00bb2db1390721abc7b24ac4b8c276c8"><div class="ttname"><a href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD::LCD</a></div><div class="ttdeci">LCD()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:52</div></div> +<div class="ttc" id="class_l_c_d_html_a6f3a503055b3b8dcf0f61b2633c584f7"><div class="ttname"><a href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">LCD::scrollDisplayLeft</a></div><div class="ttdeci">void scrollDisplayLeft()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:242</div></div> +<div class="ttc" id="class_l_c_d_html_a3f587d1cbb2d59765ef60a5216b56fea"><div class="ttname"><a href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">LCD::begin</a></div><div class="ttdeci">virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</div><div class="ttdef"><b>Definition:</b> LCD.cpp:79</div></div> +<div class="ttc" id="class_l_c_d_html_af3974da6d988ba2d21c25135ada12108"><div class="ttname"><a href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">LCD::noDisplay</a></div><div class="ttdeci">void noDisplay()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:204</div></div> +<div class="ttc" id="class_l_c_d_html_a2a331b4e142734411b2f1cfaffe7a488"><div class="ttname"><a href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">LCD::noBacklight</a></div><div class="ttdeci">void noBacklight(void)</div><div class="ttdef"><b>Definition:</b> LCD.cpp:333</div></div> +<div class="ttc" id="class_l_c_d_html_aec8ffaa1e69c7a6e13ac0cfbc29151d9"><div class="ttname"><a href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">LCD::noCursor</a></div><div class="ttdeci">void noCursor()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:217</div></div> +<div class="ttc" id="class_l_c_d_html_a53f4ee9b39d9ab3d7ae4d9f8dedca3bc"><div class="ttname"><a href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">LCD::setBacklightPin</a></div><div class="ttdeci">virtual void setBacklightPin(uint8_t value, t_backlighPol pol)</div><div class="ttdef"><b>Definition:</b> LCD.h:486</div></div> +<div class="ttc" id="class_l_c_d_html_aad2abc99d1aca5403873579d9d72c2d4"><div class="ttname"><a href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">LCD::moveCursorLeft</a></div><div class="ttdeci">void moveCursorLeft()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:273</div></div> +<div class="ttc" id="class_l_c_d_html_a2d89cc2e62f72afb5f15a7fd812900e3"><div class="ttname"><a href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD::write</a></div><div class="ttdeci">virtual void write(uint8_t value)</div><div class="ttdef"><b>Definition:</b> LCD.cpp:362</div></div> +<div class="ttc" id="class_l_c_d_html_a194814f64dfa50a90e07e0fe0d361620"><div class="ttname"><a href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">LCD::cursor</a></div><div class="ttdeci">void cursor()</div><div class="ttdef"><b>Definition:</b> LCD.cpp:222</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..a1244e6d4dcbb4633dbf22a206c04596c2c22a00 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8cpp.html @@ -0,0 +1,173 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Defines</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <stdio.h></code><br/> +<code>#include <string.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include <WProgram.h></code><br/> +<code>#include "<a class="el" href="_liquid_crystal_8h_source.html">LiquidCrystal.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c">LCD_4BIT</a>   1</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071">LCD_8BIT</a>   0</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>   0xFF</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a31e1c14e8c2845dec3301f0ebd36b43c"></a><!-- doxytag: member="LiquidCrystal.cpp::LCD_4BIT" ref="a31e1c14e8c2845dec3301f0ebd36b43c" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_4BIT   1</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal_8cpp_source.html#l00045">45</a> of file <a class="el" href="_liquid_crystal_8cpp_source.html">LiquidCrystal.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a57d84af8cf61ceee4eb91db77889f071"></a><!-- doxytag: member="LiquidCrystal.cpp::LCD_8BIT" ref="a57d84af8cf61ceee4eb91db77889f071" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_8BIT   0</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal_8cpp_source.html#l00046">46</a> of file <a class="el" href="_liquid_crystal_8cpp_source.html">LiquidCrystal.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a65fa786d6e31fe8b1aa51784a9736581"></a><!-- doxytag: member="LiquidCrystal.cpp::LCD_NOBACKLIGHT" ref="a65fa786d6e31fe8b1aa51784a9736581" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_NOBACKLIGHT   0xFF</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal_8cpp_source.html#l00042">42</a> of file <a class="el" href="_liquid_crystal_8cpp_source.html">LiquidCrystal.cpp</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal_8cpp.html">LiquidCrystal.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..2103f804f8c33f34cd3c98b2fc5e796a136a22b7 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8cpp_source.html @@ -0,0 +1,410 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal.cpp</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file LiquidCrystal.cpp</span> +<a name="l00013"></a>00013 <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span> +<a name="l00014"></a>00014 <span class="comment">// in the Arduino SDK.</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span> +<a name="l00018"></a>00018 <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span> +<a name="l00019"></a>00019 <span class="comment">// this class implements the all methods to command an LCD based</span> +<a name="l00020"></a>00020 <span class="comment">// on the Hitachi HD44780 and compatible chipsets using the parallel port of</span> +<a name="l00021"></a>00021 <span class="comment">// the LCD (4 bit and 8 bit).</span> +<a name="l00022"></a>00022 <span class="comment">//</span> +<a name="l00023"></a>00023 <span class="comment">// The functionality provided by this class and its base class is identical</span> +<a name="l00024"></a>00024 <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span> +<a name="l00025"></a>00025 <span class="comment">//</span> +<a name="l00026"></a>00026 <span class="comment">//</span> +<a name="l00027"></a>00027 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span> +<a name="l00028"></a>00028 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00029"></a>00029 <span class="preprocessor">#include <stdio.h></span> +<a name="l00030"></a>00030 <span class="preprocessor">#include <string.h></span> +<a name="l00031"></a>00031 <span class="preprocessor">#include <inttypes.h></span> +<a name="l00032"></a>00032 +<a name="l00033"></a>00033 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#include <WProgram.h></span> +<a name="l00035"></a>00035 <span class="preprocessor">#else</span> +<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#include <Arduino.h></span> +<a name="l00037"></a>00037 <span class="preprocessor">#endif</span> +<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="_liquid_crystal_8h.html">LiquidCrystal.h</a>"</span> +<a name="l00039"></a>00039 +<a name="l00040"></a>00040 <span class="comment">// CONSTANT definitions</span> +<a name="l00041"></a>00041 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00042"></a><a class="code" href="_liquid_crystal_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">00042</a> <span class="preprocessor">#define LCD_NOBACKLIGHT 0xFF</span> +<a name="l00043"></a>00043 <span class="preprocessor"></span> +<a name="l00044"></a>00044 <span class="comment">// LCD driver configuration (4bit or 8bit driver control)</span> +<a name="l00045"></a><a class="code" href="_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c">00045</a> <span class="preprocessor">#define LCD_4BIT 1</span> +<a name="l00046"></a><a class="code" href="_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071">00046</a> <span class="preprocessor"></span><span class="preprocessor">#define LCD_8BIT 0</span> +<a name="l00047"></a>00047 <span class="preprocessor"></span> +<a name="l00048"></a>00048 <span class="comment">// STATIC helper functions</span> +<a name="l00049"></a>00049 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00050"></a>00050 +<a name="l00051"></a>00051 +<a name="l00052"></a>00052 <span class="comment">// CONSTRUCTORS</span> +<a name="l00053"></a>00053 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00054"></a>00054 +<a name="l00055"></a><a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">00055</a> <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a>(uint8_t rs, uint8_t enable, +<a name="l00056"></a>00056 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, +<a name="l00057"></a>00057 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +<a name="l00058"></a>00058 { +<a name="l00059"></a>00059 init(<a class="code" href="_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071">LCD_8BIT</a>, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7); +<a name="l00060"></a>00060 } +<a name="l00061"></a>00061 +<a name="l00062"></a><a class="code" href="class_liquid_crystal.html#a30e3d865c4b4a003a36cb45903f93644">00062</a> <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable, +<a name="l00063"></a>00063 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, +<a name="l00064"></a>00064 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +<a name="l00065"></a>00065 { +<a name="l00066"></a>00066 init(<a class="code" href="_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071">LCD_8BIT</a>, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7); +<a name="l00067"></a>00067 } +<a name="l00068"></a>00068 +<a name="l00069"></a><a class="code" href="class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec">00069</a> <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable, +<a name="l00070"></a>00070 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +<a name="l00071"></a>00071 { +<a name="l00072"></a>00072 init(<a class="code" href="_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c">LCD_4BIT</a>, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0); +<a name="l00073"></a>00073 } +<a name="l00074"></a>00074 +<a name="l00075"></a><a class="code" href="class_liquid_crystal.html#a23124e6dd5ac4a9b6147629b96e91953">00075</a> <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a>(uint8_t rs, uint8_t enable, +<a name="l00076"></a>00076 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) +<a name="l00077"></a>00077 { +<a name="l00078"></a>00078 init(<a class="code" href="_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c">LCD_4BIT</a>, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0); +<a name="l00079"></a>00079 } +<a name="l00080"></a>00080 +<a name="l00081"></a>00081 <span class="comment">// Contructors with backlight control</span> +<a name="l00082"></a><a class="code" href="class_liquid_crystal.html#aff2330186495fde93370d46c0ca2cbf0">00082</a> <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a>(uint8_t rs, uint8_t enable, +<a name="l00083"></a>00083 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, +<a name="l00084"></a>00084 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, +<a name="l00085"></a>00085 uint8_t backlightPin, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol) +<a name="l00086"></a>00086 { +<a name="l00087"></a>00087 init(<a class="code" href="_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071">LCD_8BIT</a>, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7); +<a name="l00088"></a>00088 <a class="code" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a> ( backlightPin, pol ); +<a name="l00089"></a>00089 } +<a name="l00090"></a>00090 +<a name="l00091"></a><a class="code" href="class_liquid_crystal.html#ae0c3c8f7661634b1400f00a1c9c02c26">00091</a> <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable, +<a name="l00092"></a>00092 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, +<a name="l00093"></a>00093 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, +<a name="l00094"></a>00094 uint8_t backlightPin, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol) +<a name="l00095"></a>00095 { +<a name="l00096"></a>00096 init(<a class="code" href="_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071">LCD_8BIT</a>, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7); +<a name="l00097"></a>00097 <a class="code" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a> ( backlightPin, pol ); +<a name="l00098"></a>00098 } +<a name="l00099"></a>00099 +<a name="l00100"></a><a class="code" href="class_liquid_crystal.html#a8b90122c67a6d14b967c8a11ba490670">00100</a> <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable, +<a name="l00101"></a>00101 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, +<a name="l00102"></a>00102 uint8_t backlightPin, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol) +<a name="l00103"></a>00103 { +<a name="l00104"></a>00104 init(<a class="code" href="_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c">LCD_4BIT</a>, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0); +<a name="l00105"></a>00105 <a class="code" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a> ( backlightPin, pol ); +<a name="l00106"></a>00106 } +<a name="l00107"></a>00107 +<a name="l00108"></a><a class="code" href="class_liquid_crystal.html#a52a4de3d866e347208a32dfc9d797729">00108</a> <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a>(uint8_t rs, uint8_t enable, +<a name="l00109"></a>00109 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, +<a name="l00110"></a>00110 uint8_t backlightPin, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol) +<a name="l00111"></a>00111 { +<a name="l00112"></a>00112 init(<a class="code" href="_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c">LCD_4BIT</a>, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0); +<a name="l00113"></a>00113 <a class="code" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a> ( backlightPin, pol ); +<a name="l00114"></a>00114 } +<a name="l00115"></a>00115 +<a name="l00116"></a>00116 <span class="comment">// PUBLIC METHODS</span> +<a name="l00117"></a>00117 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00118"></a>00118 +<a name="l00119"></a>00119 <span class="comment">/************ low level data pushing commands **********/</span> +<a name="l00120"></a>00120 <span class="comment">//</span> +<a name="l00121"></a>00121 <span class="comment">// send</span> +<a name="l00122"></a><a class="code" href="class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089">00122</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089">LiquidCrystal::send</a>(uint8_t value, uint8_t mode) +<a name="l00123"></a>00123 { +<a name="l00124"></a>00124 <span class="comment">// Only interested in COMMAND or DATA</span> +<a name="l00125"></a>00125 digitalWrite( _rs_pin, ( mode == <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a> ) ); +<a name="l00126"></a>00126 +<a name="l00127"></a>00127 <span class="comment">// if there is a RW pin indicated, set it low to Write</span> +<a name="l00128"></a>00128 <span class="comment">// ---------------------------------------------------</span> +<a name="l00129"></a>00129 <span class="keywordflow">if</span> (_rw_pin != 255) +<a name="l00130"></a>00130 { +<a name="l00131"></a>00131 digitalWrite(_rw_pin, LOW); +<a name="l00132"></a>00132 } +<a name="l00133"></a>00133 +<a name="l00134"></a>00134 <span class="keywordflow">if</span> ( mode != <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ) +<a name="l00135"></a>00135 { +<a name="l00136"></a>00136 <span class="keywordflow">if</span> ( (<a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> & <a class="code" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">LCD_8BITMODE</a> ) ) +<a name="l00137"></a>00137 { +<a name="l00138"></a>00138 writeNbits(value, 8); +<a name="l00139"></a>00139 } +<a name="l00140"></a>00140 <span class="keywordflow">else</span> +<a name="l00141"></a>00141 { +<a name="l00142"></a>00142 writeNbits ( value >> 4, 4 ); +<a name="l00143"></a>00143 writeNbits ( value, 4 ); +<a name="l00144"></a>00144 } +<a name="l00145"></a>00145 } +<a name="l00146"></a>00146 <span class="keywordflow">else</span> +<a name="l00147"></a>00147 { +<a name="l00148"></a>00148 writeNbits ( value, 4 ); +<a name="l00149"></a>00149 } +<a name="l00150"></a>00150 <a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a> ( <a class="code" href="_liquid_crystal_8h.html#adebff0f00a59c9f9863bc196938d5726">EXEC_TIME</a> ); <span class="comment">// wait for the command to execute by the LCD</span> +<a name="l00151"></a>00151 } +<a name="l00152"></a>00152 +<a name="l00153"></a>00153 <span class="comment">//</span> +<a name="l00154"></a>00154 <span class="comment">// setBacklightPin</span> +<a name="l00155"></a><a class="code" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">00155</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">LiquidCrystal::setBacklightPin</a> ( uint8_t pin, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol ) +<a name="l00156"></a>00156 { +<a name="l00157"></a>00157 pinMode ( pin, OUTPUT ); <span class="comment">// Difine the backlight pin as output</span> +<a name="l00158"></a>00158 _backlightPin = pin; +<a name="l00159"></a>00159 <a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> = pol; +<a name="l00160"></a>00160 <a class="code" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">setBacklight</a>(<a class="code" href="_l_c_d_8h.html#a0f50ae3b4bdb42dd5ad74b2c604a7515">BACKLIGHT_OFF</a>); <span class="comment">// Set the backlight low by default</span> +<a name="l00161"></a>00161 } +<a name="l00162"></a>00162 +<a name="l00163"></a>00163 <span class="comment">//</span> +<a name="l00164"></a>00164 <span class="comment">// setBackligh</span> +<a name="l00165"></a><a class="code" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">00165</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">LiquidCrystal::setBacklight</a> ( uint8_t value ) +<a name="l00166"></a>00166 { +<a name="l00167"></a>00167 <span class="comment">// Check if there is a pin assigned to the backlight</span> +<a name="l00168"></a>00168 <span class="comment">// ---------------------------------------------------</span> +<a name="l00169"></a>00169 <span class="keywordflow">if</span> ( _backlightPin != <a class="code" href="_liquid_crystal_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a> ) +<a name="l00170"></a>00170 { +<a name="l00171"></a>00171 <span class="comment">// Check if the pin is associated to a timer, i.e. PWM</span> +<a name="l00172"></a>00172 <span class="comment">// ---------------------------------------------------</span> +<a name="l00173"></a>00173 <span class="keywordflow">if</span>(digitalPinToTimer(_backlightPin) != NOT_ON_TIMER) +<a name="l00174"></a>00174 { +<a name="l00175"></a>00175 <span class="comment">// Check for control polarity inversion</span> +<a name="l00176"></a>00176 <span class="comment">// ---------------------------------------------------</span> +<a name="l00177"></a>00177 <span class="keywordflow">if</span> ( <a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a> ) +<a name="l00178"></a>00178 { +<a name="l00179"></a>00179 analogWrite ( _backlightPin, value ); +<a name="l00180"></a>00180 } +<a name="l00181"></a>00181 <span class="keywordflow">else</span> +<a name="l00182"></a>00182 { +<a name="l00183"></a>00183 analogWrite ( _backlightPin, 255 - value ); +<a name="l00184"></a>00184 } +<a name="l00185"></a>00185 } +<a name="l00186"></a>00186 <span class="comment">// Not a PWM pin, set the backlight pin for POSI or NEG</span> +<a name="l00187"></a>00187 <span class="comment">// polarity</span> +<a name="l00188"></a>00188 <span class="comment">// --------------------------------------------------------</span> +<a name="l00189"></a>00189 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (((value > 0) && (<a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>)) || +<a name="l00190"></a>00190 ((value == 0) && (<a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">NEGATIVE</a>))) +<a name="l00191"></a>00191 { +<a name="l00192"></a>00192 digitalWrite( _backlightPin, HIGH); +<a name="l00193"></a>00193 } +<a name="l00194"></a>00194 <span class="keywordflow">else</span> +<a name="l00195"></a>00195 { +<a name="l00196"></a>00196 digitalWrite( _backlightPin, LOW); +<a name="l00197"></a>00197 } +<a name="l00198"></a>00198 } +<a name="l00199"></a>00199 } +<a name="l00200"></a>00200 +<a name="l00201"></a>00201 <span class="comment">// PRIVATE METHODS</span> +<a name="l00202"></a>00202 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00203"></a>00203 +<a name="l00204"></a>00204 +<a name="l00205"></a>00205 <span class="comment">// init</span> +<a name="l00206"></a>00206 <span class="keywordtype">void</span> LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable, +<a name="l00207"></a>00207 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, +<a name="l00208"></a>00208 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +<a name="l00209"></a>00209 { +<a name="l00210"></a>00210 uint8_t i; +<a name="l00211"></a>00211 +<a name="l00212"></a>00212 <span class="comment">// Initialize the IO pins</span> +<a name="l00213"></a>00213 <span class="comment">// -----------------------</span> +<a name="l00214"></a>00214 +<a name="l00215"></a>00215 _rs_pin = rs; +<a name="l00216"></a>00216 _rw_pin = rw; +<a name="l00217"></a>00217 _enable_pin = enable; +<a name="l00218"></a>00218 +<a name="l00219"></a>00219 _data_pins[0] = d0; +<a name="l00220"></a>00220 _data_pins[1] = d1; +<a name="l00221"></a>00221 _data_pins[2] = d2; +<a name="l00222"></a>00222 _data_pins[3] = d3; +<a name="l00223"></a>00223 _data_pins[4] = d4; +<a name="l00224"></a>00224 _data_pins[5] = d5; +<a name="l00225"></a>00225 _data_pins[6] = d6; +<a name="l00226"></a>00226 _data_pins[7] = d7; +<a name="l00227"></a>00227 +<a name="l00228"></a>00228 <span class="comment">// Initialize the IO port direction to OUTPUT</span> +<a name="l00229"></a>00229 <span class="comment">// ------------------------------------------</span> +<a name="l00230"></a>00230 +<a name="l00231"></a>00231 <span class="keywordflow">for</span> ( i = 0; i < 4; i++ ) +<a name="l00232"></a>00232 { +<a name="l00233"></a>00233 pinMode ( _data_pins[i], OUTPUT ); +<a name="l00234"></a>00234 } +<a name="l00235"></a>00235 +<a name="l00236"></a>00236 <span class="comment">// Initialize the rest of the ports if it is an 8bit controlled LCD</span> +<a name="l00237"></a>00237 <span class="comment">// ----------------------------------------------------------------</span> +<a name="l00238"></a>00238 +<a name="l00239"></a>00239 <span class="keywordflow">if</span> ( !fourbitmode ) +<a name="l00240"></a>00240 { +<a name="l00241"></a>00241 <span class="keywordflow">for</span> ( i = 4; i < 8; i++ ) +<a name="l00242"></a>00242 { +<a name="l00243"></a>00243 pinMode ( _data_pins[i], OUTPUT ); +<a name="l00244"></a>00244 } +<a name="l00245"></a>00245 } +<a name="l00246"></a>00246 pinMode(_rs_pin, OUTPUT); +<a name="l00247"></a>00247 +<a name="l00248"></a>00248 <span class="comment">// we can save 1 pin by not using RW. Indicate by passing 255 instead of pin#</span> +<a name="l00249"></a>00249 <span class="keywordflow">if</span> (_rw_pin != 255) +<a name="l00250"></a>00250 { +<a name="l00251"></a>00251 pinMode(_rw_pin, OUTPUT); +<a name="l00252"></a>00252 } +<a name="l00253"></a>00253 +<a name="l00254"></a>00254 pinMode(_enable_pin, OUTPUT); +<a name="l00255"></a>00255 +<a name="l00256"></a>00256 <span class="comment">// Initialise displaymode functions to defaults: LCD_1LINE and LCD_5x8DOTS</span> +<a name="l00257"></a>00257 <span class="comment">// -------------------------------------------------------------------------</span> +<a name="l00258"></a>00258 <span class="keywordflow">if</span> (fourbitmode) +<a name="l00259"></a>00259 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> = <a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD_4BITMODE</a> | <a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a> | <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>; +<a name="l00260"></a>00260 <span class="keywordflow">else</span> +<a name="l00261"></a>00261 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> = <a class="code" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">LCD_8BITMODE</a> | <a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a> | <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>; +<a name="l00262"></a>00262 +<a name="l00263"></a>00263 <span class="comment">// Now we pull both RS and R/W low to begin commands</span> +<a name="l00264"></a>00264 digitalWrite(_rs_pin, LOW); +<a name="l00265"></a>00265 digitalWrite(_enable_pin, LOW); +<a name="l00266"></a>00266 +<a name="l00267"></a>00267 <span class="keywordflow">if</span> (_rw_pin != 255) +<a name="l00268"></a>00268 { +<a name="l00269"></a>00269 digitalWrite(_rw_pin, LOW); +<a name="l00270"></a>00270 } +<a name="l00271"></a>00271 +<a name="l00272"></a>00272 <span class="comment">// Initialise the backlight pin no nothing</span> +<a name="l00273"></a>00273 _backlightPin = <a class="code" href="_liquid_crystal_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>; +<a name="l00274"></a>00274 <a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> = <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>; +<a name="l00275"></a>00275 } +<a name="l00276"></a>00276 +<a name="l00277"></a>00277 <span class="comment">//</span> +<a name="l00278"></a>00278 <span class="comment">// pulseEnable</span> +<a name="l00279"></a>00279 <span class="keywordtype">void</span> LiquidCrystal::pulseEnable(<span class="keywordtype">void</span>) +<a name="l00280"></a>00280 { +<a name="l00281"></a>00281 <span class="comment">// There is no need for the delays, since the digitalWrite operation</span> +<a name="l00282"></a>00282 <span class="comment">// takes longer.</span> +<a name="l00283"></a>00283 digitalWrite(_enable_pin, HIGH); +<a name="l00284"></a>00284 <a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a>(1); <span class="comment">// enable pulse must be > 450ns </span> +<a name="l00285"></a>00285 digitalWrite(_enable_pin, LOW); +<a name="l00286"></a>00286 } +<a name="l00287"></a>00287 +<a name="l00288"></a>00288 <span class="comment">//</span> +<a name="l00289"></a>00289 <span class="comment">// write4bits</span> +<a name="l00290"></a>00290 <span class="keywordtype">void</span> LiquidCrystal::writeNbits(uint8_t value, uint8_t numBits) +<a name="l00291"></a>00291 { +<a name="l00292"></a>00292 <span class="keywordflow">for</span> (uint8_t i = 0; i < numBits; i++) +<a name="l00293"></a>00293 { +<a name="l00294"></a>00294 digitalWrite(_data_pins[i], (value >> i) & 0x01); +<a name="l00295"></a>00295 } +<a name="l00296"></a>00296 pulseEnable(); +<a name="l00297"></a>00297 } +<a name="l00298"></a>00298 +<a name="l00299"></a>00299 +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal_8cpp.html">LiquidCrystal.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8h.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..b5a438975d4e7204f0a320c483afb6a9b417f112 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8h.html @@ -0,0 +1,144 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#define-members">Defines</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +<code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td></tr> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal_8h.html#adebff0f00a59c9f9863bc196938d5726">EXEC_TIME</a>   37</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="adebff0f00a59c9f9863bc196938d5726"></a><!-- doxytag: member="LiquidCrystal.h::EXEC_TIME" ref="adebff0f00a59c9f9863bc196938d5726" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define EXEC_TIME   37</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Command execution time on the <a class="el" href="class_l_c_d.html">LCD</a>. This defines how long a command takes to execute by the <a class="el" href="class_l_c_d.html">LCD</a>. The time is expressed in micro-seconds. </p> + +<p>Definition at line <a class="el" href="_liquid_crystal_8h_source.html#l00042">42</a> of file <a class="el" href="_liquid_crystal_8h_source.html">LiquidCrystal.h</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal_8h.html">LiquidCrystal.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..f7fe851639b0d9ec9dc9be5de2a770c5a8d8aa15 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal_8h_source.html @@ -0,0 +1,195 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file LiquidCrystal.h</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// in the Arduino SDK.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// this class implements the all methods to command an LCD based</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// on the Hitachi HD44780 and compatible chipsets using the parallel port of</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// the LCD (4 bit and 8 bit).</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">//</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#ifndef LiquidCrystal_4bit_h</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#define LiquidCrystal_4bit_h</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "LCD.h"</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "FastIO.h"</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define EXEC_TIME 37</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div> +<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="class_liquid_crystal.html"> 44</a></span> <span class="keyword">class </span><a class="code" href="class_liquid_crystal.html">LiquidCrystal</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t enable,</div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);</div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable,</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,</div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);</div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Constructors with backlight control</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t enable,</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  uint8_t backlightPin, t_backlighPol pol);</div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable,</div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,</div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  uint8_t backlightPin, t_backlighPol pol); </div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable,</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);</div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t enable,</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);</div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Constructors with backlight control</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable,</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  uint8_t backlightPin, t_backlighPol pol);</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t enable,</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  uint8_t backlightPin, t_backlighPol pol);</div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089">send</a>(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  </div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a> ( uint8_t pin, t_backlighPol pol );</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">setBacklight</a> ( uint8_t value );</div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  </div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">void</span> init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,</div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);</div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">void</span> writeNbits(uint8_t value, uint8_t numBits);</div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  </div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">void</span> pulseEnable();</div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  uint8_t _rs_pin; <span class="comment">// LOW: command. HIGH: character.</span></div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  uint8_t _rw_pin; <span class="comment">// LOW: write to LCD. HIGH: read from LCD.</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  uint8_t _enable_pin; <span class="comment">// activated by a HIGH pulse.</span></div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  uint8_t _data_pins[8]; <span class="comment">// Data pins.</span></div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  uint8_t _backlightPin; <span class="comment">// Pin associated to control the LCD backlight</span></div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> };</div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_liquid_crystal_html_a49d2bd8d26031a1c83bcbd73978a1686"><div class="ttname"><a href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal::LiquidCrystal</a></div><div class="ttdeci">LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal.cpp:55</div></div> +<div class="ttc" id="class_liquid_crystal_html"><div class="ttname"><a href="class_liquid_crystal.html">LiquidCrystal</a></div><div class="ttdef"><b>Definition:</b> LiquidCrystal.h:44</div></div> +<div class="ttc" id="class_liquid_crystal_html_aa2b898366e1c656ac313b9007c98cebd"><div class="ttname"><a href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">LiquidCrystal::setBacklight</a></div><div class="ttdeci">void setBacklight(uint8_t value)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal.cpp:165</div></div> +<div class="ttc" id="class_liquid_crystal_html_a63740dc1198d8169a39d9c6daff0efc9"><div class="ttname"><a href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">LiquidCrystal::setBacklightPin</a></div><div class="ttdeci">void setBacklightPin(uint8_t pin, t_backlighPol pol)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal.cpp:155</div></div> +<div class="ttc" id="class_liquid_crystal_html_a56142f8b3753bedd133e4139e5eb5089"><div class="ttname"><a href="class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089">LiquidCrystal::send</a></div><div class="ttdeci">virtual void send(uint8_t value, uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal.cpp:122</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..1e2f1b7e90e746631847011967f009db5c4fa7cd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8cpp.html @@ -0,0 +1,274 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_I2C.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___i2_c_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Defines</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <WProgram.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include "<a class="el" href="_i2_c_i_o_8h_source.html">I2CIO.h</a>"</code><br/> +<code>#include "<a class="el" href="_liquid_crystal___i2_c_8h_source.html">LiquidCrystal_I2C.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___i2_c_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">D4</a>   0</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">D5</a>   1</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">D6</a>   2</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">D7</a>   3</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">EN</a>   6</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">LCD_BACKLIGHT</a>   0xFF</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#af8903d8eea3868940c60af887473b152">RS</a>   4</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___i2_c_8cpp.html#afc4ded33ac0ca43defcce639e965748a">RW</a>   5</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a3d9bb178282c3cb69740c94ba1e48fed"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::D4" ref="a3d9bb178282c3cb69740c94ba1e48fed" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define D4   0</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> dataline allocation this library only supports 4 bit <a class="el" href="class_l_c_d.html">LCD</a> control mode. D4, D5, D6, D7 <a class="el" href="class_l_c_d.html">LCD</a> data lines pin mapping of the extender module </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00088">88</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a2ddd4183d444d6d128cbdbd6269e4e0c"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::D5" ref="a2ddd4183d444d6d128cbdbd6269e4e0c" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define D5   1</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00089">89</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a79a18a7f5ccf7a7ca31f302bd62527a6"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::D6" ref="a79a18a7f5ccf7a7ca31f302bd62527a6" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define D6   2</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00090">90</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a2ba78f059a7ebebc95e7beef690e88d6"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::D7" ref="a2ba78f059a7ebebc95e7beef690e88d6" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define D7   3</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00091">91</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a22e6626f2c98ed902f8ded47f6438c05"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::EN" ref="a22e6626f2c98ed902f8ded47f6438c05" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define EN   6</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Enable bit of the <a class="el" href="class_l_c_d.html">LCD</a> Defines the IO of the expander connected to the <a class="el" href="class_l_c_d.html">LCD</a> Enable </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00066">66</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ac059d24dfe9c1e1f7c07cb7869a1833b"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::LCD_BACKLIGHT" ref="ac059d24dfe9c1e1f7c07cb7869a1833b" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_BACKLIGHT   0xFF</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>LCD_BACKLIGHT BACKLIGHT MASK used when backlight is on </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00055">55</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a65fa786d6e31fe8b1aa51784a9736581"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::LCD_NOBACKLIGHT" ref="a65fa786d6e31fe8b1aa51784a9736581" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_NOBACKLIGHT   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>LCD_NOBACKLIGHT NO BACKLIGHT MASK </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00048">48</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="af8903d8eea3868940c60af887473b152"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::RS" ref="af8903d8eea3868940c60af887473b152" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define RS   4</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Register bit of the <a class="el" href="class_l_c_d.html">LCD</a> Defines the IO of the expander connected to the <a class="el" href="class_l_c_d.html">LCD</a> Register select pin </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00080">80</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="afc4ded33ac0ca43defcce639e965748a"></a><!-- doxytag: member="LiquidCrystal_I2C.cpp::RW" ref="afc4ded33ac0ca43defcce639e965748a" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define RW   5</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Read/Write bit of the <a class="el" href="class_l_c_d.html">LCD</a> Defines the IO of the expander connected to the <a class="el" href="class_l_c_d.html">LCD</a> Rw pin </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html#l00073">73</a> of file <a class="el" href="_liquid_crystal___i2_c_8cpp_source.html">LiquidCrystal_I2C.cpp</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___i2_c_8cpp.html">LiquidCrystal_I2C.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..a4274fc4e4eb5ef58372fef9d45ddb347def91a4 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8cpp_source.html @@ -0,0 +1,371 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_I2C.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___i2_c_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C.cpp</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal___i2_c_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file LiquidCrystal_I2C.c</span> +<a name="l00013"></a>00013 <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span> +<a name="l00014"></a>00014 <span class="comment">// in the Arduino SDK but using an I2C IO extension board.</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span> +<a name="l00018"></a>00018 <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span> +<a name="l00019"></a>00019 <span class="comment">// this class implements the all methods to command an LCD based</span> +<a name="l00020"></a>00020 <span class="comment">// on the Hitachi HD44780 and compatible chipsets using I2C extension</span> +<a name="l00021"></a>00021 <span class="comment">// backpacks such as the I2CLCDextraIO with the PCF8574* I2C IO Expander ASIC.</span> +<a name="l00022"></a>00022 <span class="comment">//</span> +<a name="l00023"></a>00023 <span class="comment">// The functionality provided by this class and its base class is identical</span> +<a name="l00024"></a>00024 <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span> +<a name="l00025"></a>00025 <span class="comment">//</span> +<a name="l00026"></a>00026 <span class="comment">//</span> +<a name="l00027"></a>00027 <span class="comment">//</span> +<a name="l00028"></a>00028 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span> +<a name="l00029"></a>00029 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00030"></a>00030 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include <WProgram.h></span> +<a name="l00032"></a>00032 <span class="preprocessor">#else</span> +<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include <Arduino.h></span> +<a name="l00034"></a>00034 <span class="preprocessor">#endif</span> +<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="preprocessor">#include <inttypes.h></span> +<a name="l00036"></a>00036 <span class="preprocessor">#include "<a class="code" href="_i2_c_i_o_8h.html">I2CIO.h</a>"</span> +<a name="l00037"></a>00037 <span class="preprocessor">#include "<a class="code" href="_liquid_crystal___i2_c_8h.html">LiquidCrystal_I2C.h</a>"</span> +<a name="l00038"></a>00038 +<a name="l00039"></a>00039 <span class="comment">// CONSTANT definitions</span> +<a name="l00040"></a>00040 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00041"></a>00041 +<a name="l00042"></a>00042 <span class="comment">// flags for backlight control</span> +<a name="l00048"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">00048</a> <span class="comment"></span><span class="preprocessor">#define LCD_NOBACKLIGHT 0x00</span> +<a name="l00049"></a>00049 <span class="preprocessor"></span> +<a name="l00055"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">00055</a> <span class="preprocessor">#define LCD_BACKLIGHT 0xFF</span> +<a name="l00056"></a>00056 <span class="preprocessor"></span> +<a name="l00057"></a>00057 +<a name="l00058"></a>00058 <span class="comment">// Default library configuration parameters used by class constructor with</span> +<a name="l00059"></a>00059 <span class="comment">// only the I2C address field.</span> +<a name="l00060"></a>00060 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00066"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">00066</a> <span class="comment"></span><span class="preprocessor">#define EN 6 // Enable bit</span> +<a name="l00067"></a>00067 <span class="preprocessor"></span> +<a name="l00073"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#afc4ded33ac0ca43defcce639e965748a">00073</a> <span class="preprocessor">#define RW 5 // Read/Write bit</span> +<a name="l00074"></a>00074 <span class="preprocessor"></span> +<a name="l00080"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#af8903d8eea3868940c60af887473b152">00080</a> <span class="preprocessor">#define RS 4 // Register select bit</span> +<a name="l00081"></a>00081 <span class="preprocessor"></span> +<a name="l00088"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">00088</a> <span class="preprocessor">#define D4 0</span> +<a name="l00089"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">00089</a> <span class="preprocessor"></span><span class="preprocessor">#define D5 1</span> +<a name="l00090"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">00090</a> <span class="preprocessor"></span><span class="preprocessor">#define D6 2</span> +<a name="l00091"></a><a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">00091</a> <span class="preprocessor"></span><span class="preprocessor">#define D7 3</span> +<a name="l00092"></a>00092 <span class="preprocessor"></span> +<a name="l00093"></a>00093 +<a name="l00094"></a>00094 <span class="comment">// CONSTRUCTORS</span> +<a name="l00095"></a>00095 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00096"></a><a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">00096</a> <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C::LiquidCrystal_I2C</a>( uint8_t lcd_Addr ) +<a name="l00097"></a>00097 { +<a name="l00098"></a>00098 config(lcd_Addr, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">EN</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#afc4ded33ac0ca43defcce639e965748a">RW</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#af8903d8eea3868940c60af887473b152">RS</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">D4</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">D5</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">D6</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">D7</a>); +<a name="l00099"></a>00099 } +<a name="l00100"></a>00100 +<a name="l00101"></a>00101 +<a name="l00102"></a><a class="code" href="class_liquid_crystal___i2_c.html#a9fc9bc519ebbf7503dadc11622e02ed6">00102</a> <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C::LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t backlighPin, +<a name="l00103"></a>00103 <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol = <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>) +<a name="l00104"></a>00104 { +<a name="l00105"></a>00105 config(lcd_Addr, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">EN</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#afc4ded33ac0ca43defcce639e965748a">RW</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#af8903d8eea3868940c60af887473b152">RS</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">D4</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">D5</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">D6</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">D7</a>); +<a name="l00106"></a>00106 <a class="code" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">setBacklightPin</a>(backlighPin, pol); +<a name="l00107"></a>00107 } +<a name="l00108"></a>00108 +<a name="l00109"></a><a class="code" href="class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce">00109</a> <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C::LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, +<a name="l00110"></a>00110 uint8_t Rs) +<a name="l00111"></a>00111 { +<a name="l00112"></a>00112 config(lcd_Addr, En, Rw, Rs, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">D4</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">D5</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">D6</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">D7</a>); +<a name="l00113"></a>00113 } +<a name="l00114"></a>00114 +<a name="l00115"></a><a class="code" href="class_liquid_crystal___i2_c.html#add1f2da7de4ec9b9cd5c9b5fab712464">00115</a> <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C::LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, +<a name="l00116"></a>00116 uint8_t Rs, uint8_t backlighPin, +<a name="l00117"></a>00117 <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol = <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>) +<a name="l00118"></a>00118 { +<a name="l00119"></a>00119 config(lcd_Addr, En, Rw, Rs, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">D4</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">D5</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">D6</a>, <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">D7</a>); +<a name="l00120"></a>00120 <a class="code" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">setBacklightPin</a>(backlighPin, pol); +<a name="l00121"></a>00121 } +<a name="l00122"></a>00122 +<a name="l00123"></a><a class="code" href="class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654">00123</a> <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C::LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, +<a name="l00124"></a>00124 uint8_t Rs, uint8_t d4, uint8_t d5, +<a name="l00125"></a>00125 uint8_t d6, uint8_t d7 ) +<a name="l00126"></a>00126 { +<a name="l00127"></a>00127 config(lcd_Addr, En, Rw, Rs, d4, d5, d6, d7); +<a name="l00128"></a>00128 } +<a name="l00129"></a>00129 +<a name="l00130"></a><a class="code" href="class_liquid_crystal___i2_c.html#ab15622287533de7a47f3e2012ebf18be">00130</a> <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C::LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, +<a name="l00131"></a>00131 uint8_t Rs, uint8_t d4, uint8_t d5, +<a name="l00132"></a>00132 uint8_t d6, uint8_t d7, uint8_t backlighPin, +<a name="l00133"></a>00133 <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol = <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a> ) +<a name="l00134"></a>00134 { +<a name="l00135"></a>00135 config(lcd_Addr, En, Rw, Rs, d4, d5, d6, d7); +<a name="l00136"></a>00136 <a class="code" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">setBacklightPin</a>(backlighPin, pol); +<a name="l00137"></a>00137 } +<a name="l00138"></a>00138 +<a name="l00139"></a>00139 <span class="comment">// PUBLIC METHODS</span> +<a name="l00140"></a>00140 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00141"></a>00141 +<a name="l00142"></a>00142 <span class="comment">//</span> +<a name="l00143"></a>00143 <span class="comment">// begin</span> +<a name="l00144"></a><a class="code" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">00144</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">LiquidCrystal_I2C::begin</a>(uint8_t cols, uint8_t lines, uint8_t dotsize) +<a name="l00145"></a>00145 { +<a name="l00146"></a>00146 +<a name="l00147"></a>00147 init(); <span class="comment">// Initialise the I2C expander interface</span> +<a name="l00148"></a>00148 <a class="code" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">LCD::begin</a> ( cols, lines, dotsize ); +<a name="l00149"></a>00149 } +<a name="l00150"></a>00150 +<a name="l00151"></a>00151 +<a name="l00152"></a>00152 <span class="comment">// User commands - users can expand this section</span> +<a name="l00153"></a>00153 <span class="comment">//----------------------------------------------------------------------------</span> +<a name="l00154"></a>00154 <span class="comment">// Turn the (optional) backlight off/on</span> +<a name="l00155"></a>00155 +<a name="l00156"></a>00156 <span class="comment">//</span> +<a name="l00157"></a>00157 <span class="comment">// setBacklightPin</span> +<a name="l00158"></a><a class="code" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">00158</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">LiquidCrystal_I2C::setBacklightPin</a> ( uint8_t value, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol = <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a> ) +<a name="l00159"></a>00159 { +<a name="l00160"></a>00160 _backlightPinMask = ( 1 << value ); +<a name="l00161"></a>00161 <a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> = pol; +<a name="l00162"></a>00162 <a class="code" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">setBacklight</a>(<a class="code" href="_l_c_d_8h.html#a0f50ae3b4bdb42dd5ad74b2c604a7515">BACKLIGHT_OFF</a>); +<a name="l00163"></a>00163 } +<a name="l00164"></a>00164 +<a name="l00165"></a>00165 <span class="comment">//</span> +<a name="l00166"></a>00166 <span class="comment">// setBacklight</span> +<a name="l00167"></a><a class="code" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">00167</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">LiquidCrystal_I2C::setBacklight</a>( uint8_t value ) +<a name="l00168"></a>00168 { +<a name="l00169"></a>00169 <span class="comment">// Check if backlight is available</span> +<a name="l00170"></a>00170 <span class="comment">// ----------------------------------------------------</span> +<a name="l00171"></a>00171 <span class="keywordflow">if</span> ( _backlightPinMask != 0x0 ) +<a name="l00172"></a>00172 { +<a name="l00173"></a>00173 <span class="comment">// Check for polarity to configure mask accordingly</span> +<a name="l00174"></a>00174 <span class="comment">// ----------------------------------------------------------</span> +<a name="l00175"></a>00175 <span class="keywordflow">if</span> (((<a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>) && (value > 0)) || +<a name="l00176"></a>00176 ((<a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">NEGATIVE</a> ) && ( value == 0 ))) +<a name="l00177"></a>00177 { +<a name="l00178"></a>00178 _backlightStsMask = _backlightPinMask & <a class="code" href="_liquid_crystal___i2_c_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">LCD_BACKLIGHT</a>; +<a name="l00179"></a>00179 } +<a name="l00180"></a>00180 <span class="keywordflow">else</span> +<a name="l00181"></a>00181 { +<a name="l00182"></a>00182 _backlightStsMask = _backlightPinMask & <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>; +<a name="l00183"></a>00183 } +<a name="l00184"></a>00184 _i2cio.<a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a>( _backlightStsMask ); +<a name="l00185"></a>00185 } +<a name="l00186"></a>00186 } +<a name="l00187"></a>00187 +<a name="l00188"></a>00188 +<a name="l00189"></a>00189 <span class="comment">// PRIVATE METHODS</span> +<a name="l00190"></a>00190 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00191"></a>00191 +<a name="l00192"></a>00192 <span class="comment">//</span> +<a name="l00193"></a>00193 <span class="comment">// init</span> +<a name="l00194"></a>00194 <span class="keywordtype">int</span> LiquidCrystal_I2C::init() +<a name="l00195"></a>00195 { +<a name="l00196"></a>00196 <span class="keywordtype">int</span> status = 0; +<a name="l00197"></a>00197 +<a name="l00198"></a>00198 <span class="comment">// initialize the backpack IO expander</span> +<a name="l00199"></a>00199 <span class="comment">// and display functions.</span> +<a name="l00200"></a>00200 <span class="comment">// ------------------------------------------------------------------------</span> +<a name="l00201"></a>00201 <span class="keywordflow">if</span> ( _i2cio.<a class="code" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">begin</a> ( _Addr ) == 1 ) +<a name="l00202"></a>00202 { +<a name="l00203"></a>00203 _i2cio.<a class="code" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">portMode</a> ( OUTPUT ); <span class="comment">// Set the entire IO extender to OUTPUT</span> +<a name="l00204"></a>00204 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> = <a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD_4BITMODE</a> | <a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a> | <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>; +<a name="l00205"></a>00205 status = 1; +<a name="l00206"></a>00206 _i2cio.<a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a>(0); <span class="comment">// Set the entire port to LOW</span> +<a name="l00207"></a>00207 } +<a name="l00208"></a>00208 <span class="keywordflow">return</span> ( status ); +<a name="l00209"></a>00209 } +<a name="l00210"></a>00210 +<a name="l00211"></a>00211 <span class="comment">//</span> +<a name="l00212"></a>00212 <span class="comment">// config</span> +<a name="l00213"></a>00213 <span class="keywordtype">void</span> LiquidCrystal_I2C::config (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, +<a name="l00214"></a>00214 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ) +<a name="l00215"></a>00215 { +<a name="l00216"></a>00216 _Addr = lcd_Addr; +<a name="l00217"></a>00217 +<a name="l00218"></a>00218 _backlightPinMask = 0; +<a name="l00219"></a>00219 _backlightStsMask = <a class="code" href="_liquid_crystal___i2_c_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>; +<a name="l00220"></a>00220 <a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> = <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>; +<a name="l00221"></a>00221 +<a name="l00222"></a>00222 _En = ( 1 << En ); +<a name="l00223"></a>00223 _Rw = ( 1 << Rw ); +<a name="l00224"></a>00224 _Rs = ( 1 << Rs ); +<a name="l00225"></a>00225 +<a name="l00226"></a>00226 <span class="comment">// Initialise pin mapping</span> +<a name="l00227"></a>00227 _data_pins[0] = ( 1 << d4 ); +<a name="l00228"></a>00228 _data_pins[1] = ( 1 << d5 ); +<a name="l00229"></a>00229 _data_pins[2] = ( 1 << d6 ); +<a name="l00230"></a>00230 _data_pins[3] = ( 1 << d7 ); +<a name="l00231"></a>00231 } +<a name="l00232"></a>00232 +<a name="l00233"></a>00233 +<a name="l00234"></a>00234 +<a name="l00235"></a>00235 <span class="comment">// low level data pushing commands</span> +<a name="l00236"></a>00236 <span class="comment">//----------------------------------------------------------------------------</span> +<a name="l00237"></a>00237 +<a name="l00238"></a>00238 <span class="comment">//</span> +<a name="l00239"></a>00239 <span class="comment">// send - write either command or data</span> +<a name="l00240"></a><a class="code" href="class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4">00240</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4">LiquidCrystal_I2C::send</a>(uint8_t value, uint8_t mode) +<a name="l00241"></a>00241 { +<a name="l00242"></a>00242 <span class="comment">// No need to use the delay routines since the time taken to write takes</span> +<a name="l00243"></a>00243 <span class="comment">// longer that what is needed both for toggling and enable pin an to execute</span> +<a name="l00244"></a>00244 <span class="comment">// the command.</span> +<a name="l00245"></a>00245 +<a name="l00246"></a>00246 <span class="keywordflow">if</span> ( mode == <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ) +<a name="l00247"></a>00247 { +<a name="l00248"></a>00248 write4bits( (value & 0x0F), <a class="code" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">COMMAND</a> ); +<a name="l00249"></a>00249 } +<a name="l00250"></a>00250 <span class="keywordflow">else</span> +<a name="l00251"></a>00251 { +<a name="l00252"></a>00252 write4bits( (value >> 4), mode ); +<a name="l00253"></a>00253 write4bits( (value & 0x0F), mode); +<a name="l00254"></a>00254 } +<a name="l00255"></a>00255 } +<a name="l00256"></a>00256 +<a name="l00257"></a>00257 <span class="comment">//</span> +<a name="l00258"></a>00258 <span class="comment">// write4bits</span> +<a name="l00259"></a>00259 <span class="keywordtype">void</span> LiquidCrystal_I2C::write4bits ( uint8_t value, uint8_t mode ) +<a name="l00260"></a>00260 { +<a name="l00261"></a>00261 uint8_t pinMapValue = 0; +<a name="l00262"></a>00262 +<a name="l00263"></a>00263 <span class="comment">// Map the value to LCD pin mapping</span> +<a name="l00264"></a>00264 <span class="comment">// --------------------------------</span> +<a name="l00265"></a>00265 <span class="keywordflow">for</span> ( uint8_t i = 0; i < 4; i++ ) +<a name="l00266"></a>00266 { +<a name="l00267"></a>00267 <span class="keywordflow">if</span> ( ( value & 0x1 ) == 1 ) +<a name="l00268"></a>00268 { +<a name="l00269"></a>00269 pinMapValue |= _data_pins[i]; +<a name="l00270"></a>00270 } +<a name="l00271"></a>00271 value = ( value >> 1 ); +<a name="l00272"></a>00272 } +<a name="l00273"></a>00273 +<a name="l00274"></a>00274 <span class="comment">// Is it a command or data</span> +<a name="l00275"></a>00275 <span class="comment">// -----------------------</span> +<a name="l00276"></a>00276 <span class="keywordflow">if</span> ( mode == <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a> ) +<a name="l00277"></a>00277 { +<a name="l00278"></a>00278 mode = _Rs; +<a name="l00279"></a>00279 } +<a name="l00280"></a>00280 +<a name="l00281"></a>00281 pinMapValue |= mode | _backlightStsMask; +<a name="l00282"></a>00282 pulseEnable ( pinMapValue ); +<a name="l00283"></a>00283 } +<a name="l00284"></a>00284 +<a name="l00285"></a>00285 <span class="comment">//</span> +<a name="l00286"></a>00286 <span class="comment">// pulseEnable</span> +<a name="l00287"></a>00287 <span class="keywordtype">void</span> LiquidCrystal_I2C::pulseEnable (uint8_t data) +<a name="l00288"></a>00288 { +<a name="l00289"></a>00289 _i2cio.<a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a> (data | _En); <span class="comment">// En HIGH</span> +<a name="l00290"></a>00290 _i2cio.<a class="code" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a> (data & ~_En); <span class="comment">// En LOW</span> +<a name="l00291"></a>00291 } +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___i2_c_8cpp.html">LiquidCrystal_I2C.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8h.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..177e3fdd18ea4e68c6df3d94c005a1b87eb16a19 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8h.html @@ -0,0 +1,124 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_I2C.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___i2_c_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +<code>#include <Print.h></code><br/> +<code>#include "<a class="el" href="_i2_c_i_o_8h_source.html">I2CIO.h</a>"</code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___i2_c_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td></tr> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___i2_c_8h.html">LiquidCrystal_I2C.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..077189461aba04aea95f4777f112ad57abb8ce74 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c_8h_source.html @@ -0,0 +1,193 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_I2C.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_I2C.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file LiquidCrystal_I2C.h</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// in the Arduino SDK but using an I2C IO extension board.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// this class implements the all methods to command an LCD based</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// on the Hitachi HD44780 and compatible chipsets using I2C extension</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// backpacks such as the I2CLCDextraIO with the PCF8574* I2C IO Expander ASIC.</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// The functionality provided by this class and its base class is identical</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">//</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifndef LiquidCrystal_I2C_h</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define LiquidCrystal_I2C_h</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include <Print.h></span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "I2CIO.h"</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "LCD.h"</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div> +<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_liquid_crystal___i2_c.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a> </div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a> (uint8_t lcd_Addr);</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Constructor with backlight control</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a> (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol);</div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a>( uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs);</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Constructor with backlight control</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs,</div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  uint8_t backlighPin, t_backlighPol pol); </div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, </div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 );</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Constructor with backlight control</span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, </div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  uint8_t backlighPin, t_backlighPol pol);</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); </div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4">send</a>(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">setBacklightPin</a> ( uint8_t value, t_backlighPol pol );</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">setBacklight</a> ( uint8_t value );</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordtype">int</span> init();</div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  </div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">void</span> config (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, </div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 );</div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordtype">void</span> write4bits(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">void</span> pulseEnable(uint8_t);</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  </div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  </div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  uint8_t _Addr; <span class="comment">// I2C Address of the IO expander</span></div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  uint8_t _backlightPinMask; <span class="comment">// Backlight IO pin mask</span></div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  uint8_t _backlightStsMask; <span class="comment">// Backlight status mask</span></div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="class_i2_c_i_o.html">I2CIO</a> _i2cio; <span class="comment">// I2CIO PCF8574* expansion module driver I2CLCDextraIO</span></div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  uint8_t _En; <span class="comment">// LCD expander word for enable pin</span></div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  uint8_t _Rw; <span class="comment">// LCD expander word for R/W pin</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  uint8_t _Rs; <span class="comment">// LCD expander word for Register Select pin</span></div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  uint8_t _data_pins[4]; <span class="comment">// LCD data lines</span></div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  </div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> };</div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_i2_c_i_o_html"><div class="ttname"><a href="class_i2_c_i_o.html">I2CIO</a></div><div class="ttdef"><b>Definition:</b> I2CIO.h:41</div></div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c_html_aac537d195557e0b8afac1a71441a484c"><div class="ttname"><a href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C::LiquidCrystal_I2C</a></div><div class="ttdeci">LiquidCrystal_I2C(uint8_t lcd_Addr)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C.cpp:96</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c_html_a2eaf86f62d1f169b3763b03fbf88f70b"><div class="ttname"><a href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">LiquidCrystal_I2C::setBacklightPin</a></div><div class="ttdeci">void setBacklightPin(uint8_t value, t_backlighPol pol)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C.cpp:158</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c_html_aeee2ada537f0cfbfda8613324b57c4a6"><div class="ttname"><a href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">LiquidCrystal_I2C::begin</a></div><div class="ttdeci">virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C.cpp:144</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c_html_a8bf1fab7efe13e8b17b96c42d1f810b4"><div class="ttname"><a href="class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4">LiquidCrystal_I2C::send</a></div><div class="ttdeci">virtual void send(uint8_t value, uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C.cpp:240</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c_html"><div class="ttname"><a href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C.h:38</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c_html_af11b8fa0082616e2b6e6e4238589d8a8"><div class="ttname"><a href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">LiquidCrystal_I2C::setBacklight</a></div><div class="ttdeci">void setBacklight(uint8_t value)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C.cpp:167</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..7dce84dae2f7f8e8098003dfd47331be51e6f4d0 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8cpp.html @@ -0,0 +1,118 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_I2C_ByVac.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___i2_c___by_vac_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C_ByVac.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <WProgram.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include "<a class="el" href="_liquid_crystal___i2_c___by_vac_8h_source.html">LiquidCrystal_I2C_ByVac.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___i2_c___by_vac_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___i2_c___by_vac_8cpp.html">LiquidCrystal_I2C_ByVac.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..e2ad15f086299b7f4a2eba505e9a33394950f6ad --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8cpp_source.html @@ -0,0 +1,216 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_I2C_ByVac.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___i2_c___by_vac_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C_ByVac.cpp</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal___i2_c___by_vac_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by GHPS on 5/06/2012.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2012 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file LiquidCrystal_I2C_ByVac.c</span> +<a name="l00013"></a>00013 <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span> +<a name="l00014"></a>00014 <span class="comment">// in the Arduino SDK but using the extension board BV4218/BV4208 from ByVac.</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span> +<a name="l00018"></a>00018 <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span> +<a name="l00019"></a>00019 <span class="comment">// this class implements the all methods to command an LCD based</span> +<a name="l00020"></a>00020 <span class="comment">// on the Hitachi HD44780 and compatible chipsets using I2C extension</span> +<a name="l00021"></a>00021 <span class="comment">// backpack BV4218 from ByVac.</span> +<a name="l00022"></a>00022 <span class="comment">//</span> +<a name="l00023"></a>00023 <span class="comment">// The functionality provided by this class and its base class is identical</span> +<a name="l00024"></a>00024 <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span> +<a name="l00025"></a>00025 <span class="comment">//</span> +<a name="l00026"></a>00026 <span class="comment">// @author GHPS - ghps@users.sourceforge.net</span> +<a name="l00027"></a>00027 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00028"></a>00028 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#include <WProgram.h></span> +<a name="l00030"></a>00030 <span class="preprocessor">#else</span> +<a name="l00031"></a>00031 <span class="preprocessor"></span><span class="preprocessor">#include <Arduino.h></span> +<a name="l00032"></a>00032 <span class="preprocessor">#endif</span> +<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#include <inttypes.h></span> +<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="_liquid_crystal___i2_c___by_vac_8h.html">LiquidCrystal_I2C_ByVac.h</a>"</span> +<a name="l00035"></a>00035 +<a name="l00036"></a>00036 <span class="comment">// CONSTRUCTORS</span> +<a name="l00037"></a>00037 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00038"></a><a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31">00038</a> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31">LiquidCrystal_I2C_ByVac::LiquidCrystal_I2C_ByVac</a>( uint8_t lcd_Addr ) +<a name="l00039"></a>00039 { +<a name="l00040"></a>00040 _Addr = lcd_Addr; +<a name="l00041"></a>00041 <a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">NEGATIVE</a>; +<a name="l00042"></a>00042 } +<a name="l00043"></a>00043 +<a name="l00044"></a>00044 <span class="comment">// PUBLIC METHODS</span> +<a name="l00045"></a>00045 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00046"></a>00046 +<a name="l00047"></a>00047 <span class="comment">//</span> +<a name="l00048"></a>00048 <span class="comment">// begin</span> +<a name="l00049"></a><a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">00049</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">LiquidCrystal_I2C_ByVac::begin</a>(uint8_t cols, uint8_t lines, uint8_t dotsize) +<a name="l00050"></a>00050 { +<a name="l00051"></a>00051 Wire.begin(); +<a name="l00052"></a>00052 <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">LCD::begin</a> ( cols, lines, dotsize ); +<a name="l00053"></a>00053 } +<a name="l00054"></a>00054 +<a name="l00055"></a>00055 <span class="comment">// User commands - users can expand this section</span> +<a name="l00056"></a>00056 <span class="comment">//----------------------------------------------------------------------------</span> +<a name="l00057"></a>00057 <span class="comment">// Turn the integrated backlight off/on</span> +<a name="l00058"></a>00058 +<a name="l00059"></a>00059 <span class="comment">// setBacklight</span> +<a name="l00060"></a><a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">00060</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">LiquidCrystal_I2C_ByVac::setBacklight</a>( uint8_t value ) +<a name="l00061"></a>00061 { +<a name="l00062"></a>00062 Wire.beginTransmission(_Addr); +<a name="l00063"></a>00063 Wire.write(0x03); <span class="comment">// ByVac command code 0x03 for backlight</span> +<a name="l00064"></a>00064 <span class="keywordflow">if</span> (value==0) Wire.write(1); <span class="keywordflow">else</span> Wire.write((byte)0); <span class="comment">// 1 for off since polarity is NEGATIVE</span> +<a name="l00065"></a>00065 Wire.endTransmission(); +<a name="l00066"></a>00066 } +<a name="l00067"></a>00067 +<a name="l00068"></a>00068 <span class="comment">// Turn the contrast off/on</span> +<a name="l00069"></a>00069 +<a name="l00070"></a>00070 <span class="comment">// setContrast</span> +<a name="l00071"></a><a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4">00071</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4">LiquidCrystal_I2C_ByVac::setContrast</a>( uint8_t value ) +<a name="l00072"></a>00072 { +<a name="l00073"></a>00073 Wire.beginTransmission(_Addr); +<a name="l00074"></a>00074 Wire.write(0x05); <span class="comment">// ByVac command code 0x05 for contrast</span> +<a name="l00075"></a>00075 <span class="keywordflow">if</span> (value==0) Wire.write((byte)0); <span class="keywordflow">else</span> Wire.write(1); +<a name="l00076"></a>00076 Wire.endTransmission(); +<a name="l00077"></a>00077 } +<a name="l00078"></a>00078 +<a name="l00079"></a>00079 <span class="comment">// PRIVATE METHODS</span> +<a name="l00080"></a>00080 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00081"></a>00081 +<a name="l00082"></a>00082 <span class="comment">//</span> +<a name="l00083"></a>00083 <span class="comment">// init</span> +<a name="l00084"></a>00084 <span class="keywordtype">int</span> LiquidCrystal_I2C_ByVac::init() +<a name="l00085"></a>00085 { +<a name="l00086"></a>00086 <span class="keywordtype">int</span> status = 0; +<a name="l00087"></a>00087 +<a name="l00088"></a>00088 <span class="comment">// ByVac backpack initialized by onboard firmware</span> +<a name="l00089"></a>00089 <span class="comment">// ------------------------------------------------------------------------</span> +<a name="l00090"></a>00090 status=1; +<a name="l00091"></a>00091 <span class="keywordflow">return</span> ( status ); +<a name="l00092"></a>00092 } +<a name="l00093"></a>00093 +<a name="l00094"></a>00094 <span class="comment">// low level data pushing commands</span> +<a name="l00095"></a>00095 <span class="comment">//----------------------------------------------------------------------------</span> +<a name="l00096"></a>00096 +<a name="l00097"></a>00097 <span class="comment">//</span> +<a name="l00098"></a>00098 <span class="comment">// send - write either command or data</span> +<a name="l00099"></a><a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1">00099</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1">LiquidCrystal_I2C_ByVac::send</a>(uint8_t value, uint8_t mode) +<a name="l00100"></a>00100 { +<a name="l00101"></a>00101 Wire.beginTransmission(_Addr); +<a name="l00102"></a>00102 Wire.write(mode+1); <span class="comment">// map COMMAND (0) -> ByVac command code 0x01/ DATA (1) -> ByVac command code 0x02</span> +<a name="l00103"></a>00103 Wire.write(value); +<a name="l00104"></a>00104 Wire.endTransmission(); +<a name="l00105"></a>00105 } +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___i2_c___by_vac_8cpp.html">LiquidCrystal_I2C_ByVac.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8h.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..8764194c9d4716ac320f1c7cd4cdcfc170246f6e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8h.html @@ -0,0 +1,124 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_I2C_ByVac.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___i2_c___by_vac_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C_ByVac.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +<code>#include <Print.h></code><br/> +<code>#include <../Wire/Wire.h></code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___i2_c___by_vac_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a></td></tr> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___i2_c___by_vac_8h.html">LiquidCrystal_I2C_ByVac.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..75303738190a521356ef90021c88804748805f93 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___i2_c___by_vac_8h_source.html @@ -0,0 +1,168 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_I2C_ByVac.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_I2C_ByVac.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by GHPS on 5/06/2012.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2012 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file LiquidCrystal_I2C_ByVac.c</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// in the Arduino SDK but using the extension board BV4218/BV4208 from ByVac.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// this class implements the all methods to command an LCD based</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// on the Hitachi HD44780 and compatible chipsets using I2C extension</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// backpack BV4218 from ByVac.</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// The functionality provided by this class and its base class is identical</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// @author GHPS - ghps-et-users-sourceforge-net</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#ifndef LiquidCrystal_I2C_ByVac_h</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define LiquidCrystal_I2C_ByVac_h</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <Print.h></span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#if (ARDUINO < 10000)</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor"> #include <../Wire/Wire.h></span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"> #include <Wire.h></span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "LCD.h"</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div> +<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_liquid_crystal___i2_c___by_vac.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a> </div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31">LiquidCrystal_I2C_ByVac</a> (uint8_t lcd_Addr);</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);</div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1">send</a>(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  </div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">setBacklight</a> ( uint8_t value );</div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  </div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4">setContrast</a> ( uint8_t value );</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">int</span> init();</div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  uint8_t _Addr; <span class="comment">// I2C Address of the IO expander</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  </div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> };</div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_liquid_crystal___i2_c___by_vac_html_a9e64cc68ec5df1a0fa421a242239b1b1"><div class="ttname"><a href="class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1">LiquidCrystal_I2C_ByVac::send</a></div><div class="ttdeci">virtual void send(uint8_t value, uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C_ByVac.cpp:99</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c___by_vac_html"><div class="ttname"><a href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a></div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C_ByVac.h:41</div></div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c___by_vac_html_a34ce9cf919b9f8de59f842a4e94c1abb"><div class="ttname"><a href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">LiquidCrystal_I2C_ByVac::begin</a></div><div class="ttdeci">virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C_ByVac.cpp:49</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c___by_vac_html_a9b16e6ce123e2ebe3a3e33b2306e66a7"><div class="ttname"><a href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">LiquidCrystal_I2C_ByVac::setBacklight</a></div><div class="ttdeci">void setBacklight(uint8_t value)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C_ByVac.cpp:60</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c___by_vac_html_a53c79a20e8d21d2c3bc9e6d0dfc79cb4"><div class="ttname"><a href="class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4">LiquidCrystal_I2C_ByVac::setContrast</a></div><div class="ttdeci">void setContrast(uint8_t value)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C_ByVac.cpp:71</div></div> +<div class="ttc" id="class_liquid_crystal___i2_c___by_vac_html_a29c027cc8bfa78bb8d9ff3124fe83a31"><div class="ttname"><a href="class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31">LiquidCrystal_I2C_ByVac::LiquidCrystal_I2C_ByVac</a></div><div class="ttdeci">LiquidCrystal_I2C_ByVac(uint8_t lcd_Addr)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_I2C_ByVac.cpp:38</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_i2_c_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_i2_c_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..03d2c655831b86dae4b63463c4a45e804cb2ed5a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_i2_c_8h_source.html @@ -0,0 +1,196 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SI2C.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SI2C.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file LiquidCrystal_I2C.h</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// in the Arduino SDK but using an I2C IO extension board and software I2C.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// It will use digital pins 6 and 7 for SCL and SDA, but it can be changed</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// in SI2CIO.cpp to use other pins if needed. </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// this class implements the all methods to command an LCD based</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// on the Hitachi HD44780 and compatible chipsets using I2C extension</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// backpacks such as the I2CLCDextraIO with the PCF8574* I2C IO Expander ASIC.</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// The functionality provided by this class and its base class is identical</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">//</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Adapted to SoftIC2 by Adrian Piccioli - adrianpiccioli@gmail.com</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#ifndef LiquidCrystal_SI2C_h</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define LiquidCrystal_SI2C_h</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include <Print.h></span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "SI2CIO.h"</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "LCD.h"</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div> +<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_liquid_crystal___s_i2_c.html"> 41</a></span> <span class="keyword">class </span><a class="code" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a> </div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> {</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a> (uint8_t lcd_Addr);</div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Constructor with backlight control</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a> (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol);</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a>( uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs);</div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Constructor with backlight control</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs,</div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  uint8_t backlighPin, t_backlighPol pol); </div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, </div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 );</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Constructor with backlight control</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, </div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,</div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  uint8_t backlighPin, t_backlighPol pol);</div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); </div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9">send</a>(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa">setBacklightPin</a> ( uint8_t value, t_backlighPol pol );</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d">setBacklight</a> ( uint8_t value );</div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordtype">int</span> init();</div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordtype">void</span> config (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, </div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 );</div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  </div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordtype">void</span> write4bits(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">void</span> pulseEnable(uint8_t);</div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  uint8_t _Addr; <span class="comment">// I2C Address of the IO expander</span></div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  uint8_t _backlightPinMask; <span class="comment">// Backlight IO pin mask</span></div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  uint8_t _backlightStsMask; <span class="comment">// Backlight status mask</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="class_s_i2_c_i_o.html">SI2CIO</a> _i2cio; <span class="comment">// I2CIO PCF8574* expansion module driver I2CLCDextraIO</span></div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  uint8_t _En; <span class="comment">// LCD expander word for enable pin</span></div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  uint8_t _Rw; <span class="comment">// LCD expander word for R/W pin</span></div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  uint8_t _Rs; <span class="comment">// LCD expander word for Register Select pin</span></div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  uint8_t _data_pins[4]; <span class="comment">// LCD data lines</span></div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  </div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> };</div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div> +<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_liquid_crystal___s_i2_c_html_a74fde8669f097755a6e8a376bb2877cb"><div class="ttname"><a href="class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb">LiquidCrystal_SI2C::begin</a></div><div class="ttdeci">virtual void begin(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SI2C.cpp:147</div></div> +<div class="ttc" id="class_liquid_crystal___s_i2_c_html"><div class="ttname"><a href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SI2C.h:41</div></div> +<div class="ttc" id="class_liquid_crystal___s_i2_c_html_ac77c2e6cca626aeae8838769fb70f7be"><div class="ttname"><a href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C::LiquidCrystal_SI2C</a></div><div class="ttdeci">LiquidCrystal_SI2C(uint8_t lcd_Addr)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SI2C.cpp:99</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html"><div class="ttname"><a href="class_s_i2_c_i_o.html">SI2CIO</a></div><div class="ttdef"><b>Definition:</b> SI2CIO.h:42</div></div> +<div class="ttc" id="class_liquid_crystal___s_i2_c_html_afa64775ef5faa3646385506b4adf7f2d"><div class="ttname"><a href="class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d">LiquidCrystal_SI2C::setBacklight</a></div><div class="ttdeci">void setBacklight(uint8_t value)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SI2C.cpp:170</div></div> +<div class="ttc" id="class_liquid_crystal___s_i2_c_html_a80adc9d27907d9145ad208eba4ae2ffa"><div class="ttname"><a href="class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa">LiquidCrystal_SI2C::setBacklightPin</a></div><div class="ttdeci">void setBacklightPin(uint8_t value, t_backlighPol pol)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SI2C.cpp:161</div></div> +<div class="ttc" id="class_liquid_crystal___s_i2_c_html_aa882cbbbb14985cab8432686723beaf9"><div class="ttname"><a href="class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9">LiquidCrystal_SI2C::send</a></div><div class="ttdeci">virtual void send(uint8_t value, uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SI2C.cpp:243</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..3d711b8fea733f469878f03793c30a9d9f00c81a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8cpp.html @@ -0,0 +1,116 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR1W.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r1_w_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR1W.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r1_w_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r1_w_8cpp.html">LiquidCrystal_SR1W.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..0a2d904c205a89c06503e086e45574ad21eca5db --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8cpp_source.html @@ -0,0 +1,363 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR1W.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r1_w_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR1W.cpp</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal___s_r1_w_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created/Adapted by Stephen Erisman 2013-07-06</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2013 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file LiquidCrystal_SR1W.cpp</span> +<a name="l00013"></a>00013 <span class="comment">// Connects a hd44780 LCD using 1 pin from the Arduino, via an 8-bit Latching</span> +<a name="l00014"></a>00014 <span class="comment">// ShiftRegister (SR1W from now on).</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// This is an optimized implementation of the 1-wire shift concept developed by</span> +<a name="l00018"></a>00018 <span class="comment">// Roman Black (http://www.romanblack.com/shift1.htm) that also makes use of</span> +<a name="l00019"></a>00019 <span class="comment">// (and merges) the diode-resistor AND "gate" concept (http://www.rentron.com/Myke1.htm)</span> +<a name="l00020"></a>00020 <span class="comment">// as well as introducing some new and original ideas (particularly how HW_CLEAR works).</span> +<a name="l00021"></a>00021 <span class="comment">// </span> +<a name="l00022"></a>00022 <span class="comment">//</span> +<a name="l00023"></a>00023 <span class="comment">// See the corresponding SR1W header file for full details.</span> +<a name="l00024"></a>00024 <span class="comment">//</span> +<a name="l00025"></a>00025 <span class="comment">// History</span> +<a name="l00026"></a>00026 <span class="comment">// 2013.07.31 serisman - fixed potential interrupt bug and made more performance optimizations</span> +<a name="l00027"></a>00027 <span class="comment">// 2013.07.10 serisman - more performance optimizations and modified the HW_CLEAR circuit a bit</span> +<a name="l00028"></a>00028 <span class="comment">// 2013.07.09 serisman - added an even faster version that performs the clear in hardware</span> +<a name="l00029"></a>00029 <span class="comment">// 2013.07.08 serisman - changed code to shift data MSB first to match SR2W</span> +<a name="l00030"></a>00030 <span class="comment">// 2013.07.07 serisman - major speed optimization</span> +<a name="l00031"></a>00031 <span class="comment">// 2013.07.06 serisman - created/modified from SR2W and FastIO sources to create SR1W</span> +<a name="l00032"></a>00032 <span class="comment">// @author S. Erisman - arduino@serisman.com</span> +<a name="l00033"></a>00033 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00034"></a>00034 +<a name="l00035"></a>00035 <span class="preprocessor">#include "<a class="code" href="_liquid_crystal___s_r1_w_8h.html">LiquidCrystal_SR1W.h</a>"</span> +<a name="l00036"></a>00036 +<a name="l00037"></a>00037 <span class="comment">// CONSTRUCTORS</span> +<a name="l00038"></a>00038 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00039"></a>00039 <span class="comment">// Assuming 1 line 8 pixel high font</span> +<a name="l00040"></a><a class="code" href="class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9">00040</a> <a class="code" href="class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9">LiquidCrystal_SR1W::LiquidCrystal_SR1W</a> (uint8_t srdata, <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99">t_sr1w_circuitType</a> circuitType, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> blpol) +<a name="l00041"></a>00041 { +<a name="l00042"></a>00042 init ( srdata, circuitType, blpol, 1, 0 ); +<a name="l00043"></a>00043 } +<a name="l00044"></a>00044 +<a name="l00045"></a>00045 <span class="comment">// PRIVATE METHODS</span> +<a name="l00046"></a>00046 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00047"></a>00047 +<a name="l00048"></a>00048 <span class="comment">//</span> +<a name="l00049"></a>00049 <span class="comment">// init</span> +<a name="l00050"></a>00050 <span class="keywordtype">void</span> LiquidCrystal_SR1W::init(uint8_t srdata, <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99">t_sr1w_circuitType</a> circuitType, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> blpol, uint8_t lines, uint8_t font) +<a name="l00051"></a>00051 { +<a name="l00052"></a>00052 _srRegister = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(srdata); +<a name="l00053"></a>00053 _srMask = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(srdata); +<a name="l00054"></a>00054 +<a name="l00055"></a>00055 _circuitType = circuitType; +<a name="l00056"></a>00056 +<a name="l00057"></a>00057 _blPolarity = blpol; +<a name="l00058"></a>00058 +<a name="l00059"></a>00059 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> = <a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD_4BITMODE</a> | <a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a> | <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>; +<a name="l00060"></a>00060 +<a name="l00061"></a>00061 clearSR(); +<a name="l00062"></a>00062 +<a name="l00063"></a>00063 <a class="code" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(); <span class="comment">// set default backlight state to on</span> +<a name="l00064"></a>00064 } +<a name="l00065"></a>00065 +<a name="l00066"></a>00066 <span class="comment">//</span> +<a name="l00067"></a>00067 <span class="comment">// clearSR</span> +<a name="l00068"></a>00068 uint8_t LiquidCrystal_SR1W::clearSR() +<a name="l00069"></a>00069 { +<a name="l00070"></a>00070 uint8_t numDelays = 0; +<a name="l00071"></a>00071 +<a name="l00072"></a>00072 <span class="comment">// Store these as local variables for extra performance (and smaller compiled sketch size)</span> +<a name="l00073"></a>00073 <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> srRegister = _srRegister; +<a name="l00074"></a>00074 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> srMask = _srMask; +<a name="l00075"></a>00075 +<a name="l00076"></a>00076 <span class="comment">// Set the Serial PIN to a LOW state</span> +<a name="l00077"></a>00077 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a895edbf1947d432e4616bc4592de8cfa">SR1W_ATOMIC_WRITE_LOW</a>(srRegister, srMask); +<a name="l00078"></a>00078 +<a name="l00079"></a>00079 <span class="comment">// We need to delay to make sure the Data and Latch/EN capacitors are fully discharged</span> +<a name="l00080"></a>00080 <span class="comment">// This also triggers the EN pin because of the falling edge.</span> +<a name="l00081"></a>00081 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">SR1W_DELAY</a>(); +<a name="l00082"></a>00082 +<a name="l00083"></a>00083 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00084"></a>00084 { +<a name="l00085"></a>00085 <span class="comment">// Pre-calculate these values for extra performance and to make sure the clock pulse is as quick as possible</span> +<a name="l00086"></a>00086 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> reg_val = *srRegister; +<a name="l00087"></a>00087 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> bit_low = reg_val & ~srMask; +<a name="l00088"></a>00088 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> bit_high = reg_val | srMask; +<a name="l00089"></a>00089 +<a name="l00090"></a>00090 <span class="comment">// Clear the shift register (without triggering the Latch/EN pins)</span> +<a name="l00091"></a>00091 <span class="comment">// We only need to shift 7 bits here because the subsequent HIGH transistion will also shift a '0' in.</span> +<a name="l00092"></a>00092 <span class="keywordflow">for</span> (int8_t i = 6; i>=0; i--) +<a name="l00093"></a>00093 { +<a name="l00094"></a>00094 <span class="comment">// Shift in a '0' (NOTE: This clock pulse needs to execute as quickly as possible)</span> +<a name="l00095"></a>00095 *srRegister = bit_high; +<a name="l00096"></a>00096 *srRegister = bit_low; +<a name="l00097"></a>00097 } +<a name="l00098"></a>00098 +<a name="l00099"></a>00099 <span class="comment">// Set the Serial PIN to a HIGH state so the next nibble/byte can be loaded</span> +<a name="l00100"></a>00100 <span class="comment">// This also shifts the 8th '0' bit in.</span> +<a name="l00101"></a>00101 *srRegister = bit_high; +<a name="l00102"></a>00102 } +<a name="l00103"></a>00103 +<a name="l00104"></a>00104 <span class="comment">// Give the Data capacitor a chance to fully charge</span> +<a name="l00105"></a>00105 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">SR1W_DELAY</a>(); +<a name="l00106"></a>00106 +<a name="l00107"></a>00107 <span class="keywordflow">return</span> numDelays; +<a name="l00108"></a>00108 } +<a name="l00109"></a>00109 +<a name="l00110"></a>00110 <span class="comment">//</span> +<a name="l00111"></a>00111 <span class="comment">// loadSR</span> +<a name="l00112"></a>00112 uint8_t LiquidCrystal_SR1W::loadSR(uint8_t val) +<a name="l00113"></a>00113 { +<a name="l00114"></a>00114 uint8_t numDelays = 0; +<a name="l00115"></a>00115 +<a name="l00116"></a>00116 <span class="comment">// Store these as local variables for extra performance (and smaller compiled sketch size)</span> +<a name="l00117"></a>00117 <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> srRegister = _srRegister; +<a name="l00118"></a>00118 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> srMask = _srMask; +<a name="l00119"></a>00119 +<a name="l00120"></a>00120 <span class="comment">// NOTE: This assumes the Serial PIN is already HIGH and the Data capacitor is fully charged</span> +<a name="l00121"></a>00121 uint8_t previousBit = 1; +<a name="l00122"></a>00122 +<a name="l00123"></a>00123 <span class="comment">// Send the data to the shift register (MSB first)</span> +<a name="l00124"></a>00124 <span class="keywordflow">for</span> (int8_t i = 7; i>=0; i--) +<a name="l00125"></a>00125 { +<a name="l00126"></a>00126 <span class="keywordflow">if</span> (val & 0x80) +<a name="l00127"></a>00127 { +<a name="l00128"></a>00128 <span class="keywordflow">if</span> (previousBit == 0) +<a name="l00129"></a>00129 { +<a name="l00130"></a>00130 <span class="comment">// We need to make sure the Data capacitor has fully recharged</span> +<a name="l00131"></a>00131 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">SR1W_DELAY</a>(); +<a name="l00132"></a>00132 } +<a name="l00133"></a>00133 +<a name="l00134"></a>00134 previousBit = 1; +<a name="l00135"></a>00135 +<a name="l00136"></a>00136 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00137"></a>00137 { +<a name="l00138"></a>00138 <span class="comment">// Pre-calculate these values to make sure the clock pulse is as quick as possible</span> +<a name="l00139"></a>00139 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> reg_val = *srRegister; +<a name="l00140"></a>00140 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> bit_low = reg_val & ~srMask; +<a name="l00141"></a>00141 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> bit_high = reg_val | srMask; +<a name="l00142"></a>00142 +<a name="l00143"></a>00143 <span class="comment">// Shift in a '1' (NOTE: This clock pulse needs to execute as quickly as possible)</span> +<a name="l00144"></a>00144 *srRegister = bit_low; +<a name="l00145"></a>00145 *srRegister = bit_high; +<a name="l00146"></a>00146 } +<a name="l00147"></a>00147 } +<a name="l00148"></a>00148 <span class="keywordflow">else</span> +<a name="l00149"></a>00149 { +<a name="l00150"></a>00150 <span class="comment">// Shift in a '0'</span> +<a name="l00151"></a>00151 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a895edbf1947d432e4616bc4592de8cfa">SR1W_ATOMIC_WRITE_LOW</a>(srRegister, srMask); +<a name="l00152"></a>00152 +<a name="l00153"></a>00153 <span class="comment">// We need to make sure the Data capacitor has fully discharged</span> +<a name="l00154"></a>00154 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">SR1W_DELAY</a>(); +<a name="l00155"></a>00155 +<a name="l00156"></a>00156 previousBit = 0; +<a name="l00157"></a>00157 +<a name="l00158"></a>00158 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a7582c2cf6ceaeddf740f675c8f731ecf">SR1W_ATOMIC_WRITE_HIGH</a>(srRegister, srMask); +<a name="l00159"></a>00159 } +<a name="l00160"></a>00160 val <<= 1; +<a name="l00161"></a>00161 } +<a name="l00162"></a>00162 +<a name="l00163"></a>00163 <span class="comment">// NOTE: Serial PIN is currently HIGH</span> +<a name="l00164"></a>00164 +<a name="l00165"></a>00165 <span class="comment">// For SW_CLEAR, we need to delay to make sure the Latch/EN capacitor is fully charged.</span> +<a name="l00166"></a>00166 <span class="comment">// This triggers the Latch pin because of the rising edge.</span> +<a name="l00167"></a>00167 <span class="comment">// For HW_CLEAR, we need to delay to give the hardware time to perform the clear.</span> +<a name="l00168"></a>00168 <span class="comment">// This also gives the Data capacitor a chance to fully charge</span> +<a name="l00169"></a>00169 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">SR1W_DELAY</a>(); +<a name="l00170"></a>00170 +<a name="l00171"></a>00171 <span class="keywordflow">if</span> (_circuitType == <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a6181fb356c56f0ac9a79810e1ba99ebc">SW_CLEAR</a>) +<a name="l00172"></a>00172 { +<a name="l00173"></a>00173 <span class="comment">// Clear the shift register to get ready for the next nibble/byte</span> +<a name="l00174"></a>00174 <span class="comment">// This also discharges the Latch/EN capacitor which finally triggers the EN pin because of the falling edge.</span> +<a name="l00175"></a>00175 numDelays += clearSR(); +<a name="l00176"></a>00176 } +<a name="l00177"></a>00177 <span class="keywordflow">else</span> +<a name="l00178"></a>00178 { +<a name="l00179"></a>00179 <span class="comment">// For some reason HW_CLEAR isn't totally stable unless we delay a little bit more.</span> +<a name="l00180"></a>00180 <span class="comment">// TODO... figure this out...</span> +<a name="l00181"></a>00181 <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">SR1W_DELAY</a>(); +<a name="l00182"></a>00182 } +<a name="l00183"></a>00183 +<a name="l00184"></a>00184 <span class="keywordflow">return</span> numDelays; +<a name="l00185"></a>00185 } +<a name="l00186"></a>00186 +<a name="l00187"></a>00187 <span class="comment">// PUBLIC METHODS</span> +<a name="l00188"></a>00188 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00189"></a>00189 +<a name="l00190"></a>00190 +<a name="l00191"></a>00191 <span class="comment">/************ low level data pushing commands **********/</span> +<a name="l00192"></a>00192 <span class="comment">//</span> +<a name="l00193"></a>00193 <span class="comment">// send</span> +<a name="l00194"></a><a class="code" href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">00194</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">LiquidCrystal_SR1W::send</a>(uint8_t value, uint8_t mode) +<a name="l00195"></a>00195 { +<a name="l00196"></a>00196 uint8_t numDelays = 0; +<a name="l00197"></a>00197 +<a name="l00198"></a>00198 uint8_t data; +<a name="l00199"></a>00199 +<a name="l00200"></a>00200 <span class="keywordflow">if</span> ( mode != <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ) +<a name="l00201"></a>00201 { +<a name="l00202"></a>00202 <span class="comment">// upper nibble</span> +<a name="l00203"></a>00203 data = ( mode == <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a> ) ? <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a874628609b122ed01ccd5e39411f86de">SR1W_RS_MASK</a> : 0; +<a name="l00204"></a>00204 data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a6875204445378ad8d8a8ded846cbcbaa">SR1W_EN_MASK</a> | <a class="code" href="_liquid_crystal___s_r1_w_8h.html#ae4324c30e18eea1716bd2b0f60027712">SR1W_UNUSED_MASK</a>; +<a name="l00205"></a>00205 data |= _blMask; +<a name="l00206"></a>00206 +<a name="l00207"></a>00207 <span class="keywordflow">if</span> (value & _BV(4)) data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a2ee8ae46c168f471666c4aaddbca1ec0">SR1W_D4_MASK</a>; +<a name="l00208"></a>00208 <span class="keywordflow">if</span> (value & _BV(5)) data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a159fe0dd329cef231ae7d8ad674adad3">SR1W_D5_MASK</a>; +<a name="l00209"></a>00209 <span class="keywordflow">if</span> (value & _BV(6)) data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a5cea156a4ee75a239b094b1c24116140">SR1W_D6_MASK</a>; +<a name="l00210"></a>00210 <span class="keywordflow">if</span> (value & _BV(7)) data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a7accf5938d87cf2edbda80b26e0e6f69">SR1W_D7_MASK</a>; +<a name="l00211"></a>00211 +<a name="l00212"></a>00212 numDelays += loadSR(data); +<a name="l00213"></a>00213 } +<a name="l00214"></a>00214 +<a name="l00215"></a>00215 <span class="comment">// lower nibble</span> +<a name="l00216"></a>00216 data = ( mode == <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a> ) ? <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a874628609b122ed01ccd5e39411f86de">SR1W_RS_MASK</a> : 0; +<a name="l00217"></a>00217 data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a6875204445378ad8d8a8ded846cbcbaa">SR1W_EN_MASK</a> | <a class="code" href="_liquid_crystal___s_r1_w_8h.html#ae4324c30e18eea1716bd2b0f60027712">SR1W_UNUSED_MASK</a>; +<a name="l00218"></a>00218 data |= _blMask; +<a name="l00219"></a>00219 +<a name="l00220"></a>00220 <span class="keywordflow">if</span> (value & _BV(0)) data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a2ee8ae46c168f471666c4aaddbca1ec0">SR1W_D4_MASK</a>; +<a name="l00221"></a>00221 <span class="keywordflow">if</span> (value & _BV(1)) data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a159fe0dd329cef231ae7d8ad674adad3">SR1W_D5_MASK</a>; +<a name="l00222"></a>00222 <span class="keywordflow">if</span> (value & _BV(2)) data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a5cea156a4ee75a239b094b1c24116140">SR1W_D6_MASK</a>; +<a name="l00223"></a>00223 <span class="keywordflow">if</span> (value & _BV(3)) data |= <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a7accf5938d87cf2edbda80b26e0e6f69">SR1W_D7_MASK</a>; +<a name="l00224"></a>00224 +<a name="l00225"></a>00225 numDelays += loadSR(data); +<a name="l00226"></a>00226 +<a name="l00227"></a>00227 <span class="comment">// Make sure we wait at least 40 uS between bytes.</span> +<a name="l00228"></a>00228 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> totalDelay = numDelays * <a class="code" href="_liquid_crystal___s_r1_w_8h.html#af142acb4543f9067f60a28d58a49f033">SR1W_DELAY_US</a>; +<a name="l00229"></a>00229 <span class="keywordflow">if</span> (totalDelay < 40) +<a name="l00230"></a>00230 delayMicroseconds(40 - totalDelay); +<a name="l00231"></a>00231 } +<a name="l00232"></a>00232 +<a name="l00233"></a>00233 <span class="comment">//</span> +<a name="l00234"></a>00234 <span class="comment">// setBacklight</span> +<a name="l00235"></a><a class="code" href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">00235</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">LiquidCrystal_SR1W::setBacklight</a> ( uint8_t value ) +<a name="l00236"></a>00236 { +<a name="l00237"></a>00237 <span class="comment">// Check for polarity to configure mask accordingly</span> +<a name="l00238"></a>00238 <span class="comment">// ----------------------------------------------------------</span> +<a name="l00239"></a>00239 <span class="keywordflow">if</span> ( ((_blPolarity == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>) && (value > 0)) || +<a name="l00240"></a>00240 ((_blPolarity == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">NEGATIVE</a> ) && ( value == 0 )) ) +<a name="l00241"></a>00241 { +<a name="l00242"></a>00242 _blMask = <a class="code" href="_liquid_crystal___s_r1_w_8h.html#a2bfc90f6a1e21e271196273a8db741af">SR1W_BL_MASK</a>; +<a name="l00243"></a>00243 } +<a name="l00244"></a>00244 <span class="keywordflow">else</span> +<a name="l00245"></a>00245 { +<a name="l00246"></a>00246 _blMask = 0; +<a name="l00247"></a>00247 } +<a name="l00248"></a>00248 +<a name="l00249"></a>00249 <span class="comment">// Send a dummy (non-existant) command to allow the backlight PIN to be latched.</span> +<a name="l00250"></a>00250 <span class="comment">// The seems to be safe because the LCD appears to treat this as a NOP.</span> +<a name="l00251"></a>00251 <a class="code" href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">send</a>(0, <a class="code" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">COMMAND</a>); +<a name="l00252"></a>00252 } +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r1_w_8cpp.html">LiquidCrystal_SR1W.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8h.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..630abdaf4be5411907be673c8f8387f8bffd0bda --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8h.html @@ -0,0 +1,380 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR1W.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r1_w_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#define-members">Defines</a> | +<a href="#enum-members">Enumerations</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR1W.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +<code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r1_w_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r1_w.html">LiquidCrystal_SR1W</a></td></tr> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a7582c2cf6ceaeddf740f675c8f731ecf">SR1W_ATOMIC_WRITE_HIGH</a>(reg, mask)   ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg |= mask; }</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a895edbf1947d432e4616bc4592de8cfa">SR1W_ATOMIC_WRITE_LOW</a>(reg, mask)   ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg &= ~mask; }</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a2bfc90f6a1e21e271196273a8db741af">SR1W_BL_MASK</a>   0x20</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a2ee8ae46c168f471666c4aaddbca1ec0">SR1W_D4_MASK</a>   0x10</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a159fe0dd329cef231ae7d8ad674adad3">SR1W_D5_MASK</a>   0x08</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a5cea156a4ee75a239b094b1c24116140">SR1W_D6_MASK</a>   0x04</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a7accf5938d87cf2edbda80b26e0e6f69">SR1W_D7_MASK</a>   0x02</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">SR1W_DELAY</a>()   { delayMicroseconds(SR1W_DELAY_US); numDelays++; }</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#af142acb4543f9067f60a28d58a49f033">SR1W_DELAY_US</a>   5</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a6875204445378ad8d8a8ded846cbcbaa">SR1W_EN_MASK</a>   0x80</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a874628609b122ed01ccd5e39411f86de">SR1W_RS_MASK</a>   0x40</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#ae4324c30e18eea1716bd2b0f60027712">SR1W_UNUSED_MASK</a>   0x01</td></tr> +<tr><td colspan="2"><h2><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99">t_sr1w_circuitType</a> { <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a6181fb356c56f0ac9a79810e1ba99ebc">SW_CLEAR</a>, +<a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a3069011d6c3fab813423e8101c6a7aa7">HW_CLEAR</a> + }</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a7582c2cf6ceaeddf740f675c8f731ecf"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_ATOMIC_WRITE_HIGH" ref="a7582c2cf6ceaeddf740f675c8f731ecf" args="(reg, mask)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_ATOMIC_WRITE_HIGH</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">reg, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">mask </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td>   ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg |= mask; }</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00294">294</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a895edbf1947d432e4616bc4592de8cfa"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_ATOMIC_WRITE_LOW" ref="a895edbf1947d432e4616bc4592de8cfa" args="(reg, mask)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_ATOMIC_WRITE_LOW</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">reg, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">mask </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td>   ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg &= ~mask; }</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00293">293</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a2bfc90f6a1e21e271196273a8db741af"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_BL_MASK" ref="a2bfc90f6a1e21e271196273a8db741af" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_BL_MASK   0x20</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00289">289</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a2ee8ae46c168f471666c4aaddbca1ec0"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_D4_MASK" ref="a2ee8ae46c168f471666c4aaddbca1ec0" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_D4_MASK   0x10</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00288">288</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a159fe0dd329cef231ae7d8ad674adad3"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_D5_MASK" ref="a159fe0dd329cef231ae7d8ad674adad3" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_D5_MASK   0x08</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00287">287</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5cea156a4ee75a239b094b1c24116140"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_D6_MASK" ref="a5cea156a4ee75a239b094b1c24116140" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_D6_MASK   0x04</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00286">286</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7accf5938d87cf2edbda80b26e0e6f69"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_D7_MASK" ref="a7accf5938d87cf2edbda80b26e0e6f69" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_D7_MASK   0x02</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00285">285</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a645c2cb325144756182083dad23498e7"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_DELAY" ref="a645c2cb325144756182083dad23498e7" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_DELAY</td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td>   { delayMicroseconds(SR1W_DELAY_US); numDelays++; }</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00279">279</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="af142acb4543f9067f60a28d58a49f033"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_DELAY_US" ref="af142acb4543f9067f60a28d58a49f033" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_DELAY_US   5</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00278">278</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a6875204445378ad8d8a8ded846cbcbaa"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_EN_MASK" ref="a6875204445378ad8d8a8ded846cbcbaa" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_EN_MASK   0x80</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00291">291</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a874628609b122ed01ccd5e39411f86de"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_RS_MASK" ref="a874628609b122ed01ccd5e39411f86de" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_RS_MASK   0x40</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00290">290</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ae4324c30e18eea1716bd2b0f60027712"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::SR1W_UNUSED_MASK" ref="ae4324c30e18eea1716bd2b0f60027712" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR1W_UNUSED_MASK   0x01</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00284">284</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +<hr/><h2>Enumeration Type Documentation</h2> +<a class="anchor" id="a31959259c88db00960459461ba423d99"></a><!-- doxytag: member="LiquidCrystal_SR1W.h::t_sr1w_circuitType" ref="a31959259c88db00960459461ba423d99" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99">t_sr1w_circuitType</a></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="a31959259c88db00960459461ba423d99a6181fb356c56f0ac9a79810e1ba99ebc"></a><!-- doxytag: member="SW_CLEAR" ref="a31959259c88db00960459461ba423d99a6181fb356c56f0ac9a79810e1ba99ebc" args="" -->SW_CLEAR</em> </td><td> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="a31959259c88db00960459461ba423d99a3069011d6c3fab813423e8101c6a7aa7"></a><!-- doxytag: member="HW_CLEAR" ref="a31959259c88db00960459461ba423d99a3069011d6c3fab813423e8101c6a7aa7" args="" -->HW_CLEAR</em> </td><td> +</td></tr> +</table> +</dd> +</dl> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html#l00297">297</a> of file <a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r1_w_8h.html">LiquidCrystal_SR1W.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..ec6f29e9eca03678d7f2b20aea5028cac512c699 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r1_w_8h_source.html @@ -0,0 +1,429 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR1W.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR1W.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Created/Adapted by Stephen Erisman 2013-07-06</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Copyright 2013 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// @file LiquidCrystal_SR1W.h</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Connects a hd44780 LCD using 1 pin from the Arduino, via an 8-bit Latching</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// ShiftRegister (SR1W from now on).</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// This is the 1 wire shift register interface class for the LCD library</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">//</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// The functionality provided by this class and its base class is a superset of</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// the original functionality of the Arduino LiquidCrystal library and can</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// be used as such.</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// See the LCD class for a full description of the API functions available.</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// It works with a 8-bit latched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out)</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// shift register, and an hd44780 LCD in 4-bit mode.</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// The 74HC595 shift register has been tested.</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">//</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// 1 Pin required from the Arduino:</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// - Serial PIN:</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// The Serial PIN is wired directly to the shift register's Clock PIN and its</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// unaltered signal directly triggers the Clock on every LOW to HIGH transition.</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Additionally, the Serial PIN is wired through a resistor capacitor (RC) filter to</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// the shift register's Data PIN. During a quick transition of the Serial PIN the</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// RC filter will maintain the Data PIN's previous value because the capacitor isn't</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// given enough time to charge (or discharge) to the alternate state. If the transition</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// is held for enough time, however, the RC capacitor will charge (or discharge) and the</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// value seen by the Data PIN will have changed state.</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// There are two circuit versions that behave differently for Latch, Enable, and Clear:</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">//</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// HW_CLEAR version:</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// In this version the shift register's Latch and LCD's Enable PINs are wired directly to</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// the shift register's Q'H output. The shift register's /Clear PIN is then wired up</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// through two logic "gates": first QH and Q'H are AND'd together with a diode-resistor</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// "gate" the output of which is NAND'd with VCC using a resistor-NPN-resistor "gate".</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// So, /CLR = ((QH AND Q'H) NAND VCC). We also put a capacitor on the NPN base to GND</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// to delay the signal a bit and allow the Latch and EN signals some extra time to trigger.</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// </span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// This all fits together as follows:</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// 1. We shift in a '1'.</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// 2. Ws shift in the other 7 bits.</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// 3. At this point the first '1' has been shifted into Q'H causing it to go HIGH.</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// 4. When Q'H is HIGH it causes Latch and EN to also go HIGH.</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// 5. When Latch transitions to HIGH it changes the shift register outputs to the bits</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// that were shifted in.</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// 6. This causes QH to go HIGH (if it wasn't already).</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// 7. Now that QH AND Q'H are both HIGH they causes the base capacitor to start charging.</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// 8. When the capacitor has charged enough the transistor brings /CLR LOW.</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// 8. This will cause /CLR to trigger and the shift register will be cleared</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// (NOTE: This doesn't change the latched outputs)</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// 9. The clearing of the shift register causes Q'H to go LOW.</span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// 9. When Q'H is LOW it causes Latch and EN to also go LOW.</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// 10. When EN transitions to LOW the LCD reads in the bits on the shift register pins</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// and does it's thing.</span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// 11. Now that Q'H is LOW the base capacitor starts discharging.</span></div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// 12. When the capacitor has discharged enough the transistor will stop sinking /CLR.</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// 13. This will cause /CLR to be pulled back up to HIGH by the VCC pullup resistor</span></div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// (it will stay that way until our next nibble/byte has been shifted in)</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// 14. We are now ready for our next nibble/byte.</span></div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">//</span></div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">//</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// SW_CLEAR version:</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// In this version the Serial PIN is wired to the shift register's Latch and LCD's Enable</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// PINs through another RC filter. These PINs are also wired through a diode (AND "gate")</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// tied to the shift register's Q'H output. This combination means that the Latch and</span></div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// Enable PINs will be held LOW as long as EITHER the Q'H or RC output is LOW.</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">//</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// This all fits together as follows:</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// 1. We shift in a '1'.</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// 2. We shift in the other 7 bits. (NOTE: We leave Serial PIN HIGH at the end of this)</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// 3. At this point the first '1' has been shifted into Q'H causing it to go HIGH.</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// (NOTE: Up until this time Q'H has been LOW so the attached diode has been keeping</span></div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// the Latch/EN pins LOW.)</span></div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// 4. Now that Q'H is HIGH it causes the attached diode to stop discharging the Latch/EN</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// capacitor. We delay here for a while to make sure it is fully charged.</span></div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// 5. When the capacitor has charged enough Latch/EN will be HIGH</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// 5. When Latch transitions to HIGH it changes the shift register outputs to what was</span></div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// shifted in.</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// 6. We now bring the Serial PIN LOW and wait for the Latch/EN capacitor to discharge.</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// 7. When the capacitor has discharged enough Latch/EN will be LOW</span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// 8. When EN transitions to LOW the LCD reads in the bits on the shift register pins</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// and does it's thing.</span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// 9. We now shift in '0' 8 times (as quickly as possible).</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// 10. If we keep the LOW to HIGH to LOW pulses short enough while shifting in the '0's</span></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// the Latch/EN capacitor won't have time to charge to a point where it will re-trigger</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// the Latch/EN pins.</span></div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// 11. Now Q'H will be LOW and the shift register has been cleared (NOTE: This doesn't</span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// change the latched outputs.)</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// 12. We now bring the Serial PIN HIGH again and wait for the Data capacitor to recharge.</span></div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// 13. When the Data capacitor has fully charged we are ready for our next nibble/byte.</span></div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">//</span></div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">//</span></div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// These designs incorporate (and merge) ideas originally found here (1-wire concept):</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// http://www.romanblack.com/shift1.htm</span></div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// and here (diode-resistor AND "gate" EN control):</span></div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// http://www.rentron.com/Myke1.htm</span></div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// as well as introducing some new and original ideas (particularly how HW_CLEAR works).</span></div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">//</span></div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// Because of its use of the diode AND "gate", the SW_CLEAR design allows for faster sending</span></div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// of data to the LCD compared to Roman's original design. With the proposed 5uS delay (see</span></div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// notes below), a byte can be sent to the LCD in as little as 30 uS (plus overhead) when</span></div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// sending all 1's. This increases to as much as 190 uS (plus overhead) when sending all 0's.</span></div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// This is in comparison to Roman's estimate of around 3-4 mS to send a byte. So this</span></div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// implementation is 15-133 times faster for the cost of a single (1N4148 or similar) diode.</span></div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">//</span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// The HW_CLEAR version is even faster as it can completely eliminate the clearSR() call as</span></div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// well as the delays that are needed to latch the data in the SW_CLEAR version.</span></div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">//</span></div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">//</span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// Default Shift Register Bits - Shifted MSB first:</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// Bit #0 (QA) - not used</span></div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// Bit #1 (QB) - connects to LCD data input D7</span></div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// Bit #2 (QC) - connects to LCD data input D6</span></div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// Bit #3 (QD) - connects to LCD data input D5</span></div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// Bit #4 (QE) - connects to LCD data input D4</span></div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// Bit #5 (QF) - optional backlight control</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// Bit #6 (QG) - connects to RS (Register Select) on the LCD</span></div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment">// Bit #7 (QH) - used for /CLR on the HW_CLEAR version (cannot be changed)</span></div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// (Q'H) - used for Latch/EN (via the diode AND "gate") (cannot be changed)</span></div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="comment">//</span></div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// NOTE: Any of these can be changed around as needed EXCEPT Bit #7 (QH and Q'H).</span></div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">//</span></div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="comment">//</span></div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// Circuit Types (for the 74HC595)</span></div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// -------------------------------</span></div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// The 74HC595 is a latching shift register. See the explanations above for how these circuits</span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// work.</span></div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">//</span></div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">//</span></div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// HW_CLEAR version: (Faster but higher part count)</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// ------------------------------------------------</span></div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment">//</span></div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment">// 74HC595 (VCC)</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="comment">// +----u----+ | 2.2nF</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// (LCD D7)------------1-|QB VCC|-16--+ +----||----(GND)</span></div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// (LCD D6)------------2-|QC QA|-15 |</span></div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// (LCD D5)------------3-|QD SER|-14-------+--[ Resistor ]--+</span></div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// (LCD D4)------------4-|QE /OE|-13--(GND) 1.5k |</span></div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// (BL Circuit)--------5-|QF RCK|-12-----+ |</span></div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// | | \ |</span></div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// (LCD RS)------------6-|QG SCK|-11-------)----------------+--(Serial PIN)</span></div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// | | |</span></div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment">// +-------7-|QH /CLR|-10-------)--+--[ Resistor ]--(VCC)</span></div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment">// | | | / | 1k</span></div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// | +--8-|GND Q'H|--9-----+ |</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// | | +---------+ | | (GND)--(LCD RW)</span></div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment">// | | 0.1uF | \</span></div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// | (GND)-----||----(VCC) +------)--------------(LCD EN)</span></div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// | | /</span></div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// |----|<|----+--[ Resistor ]--| |</span></div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">// diode | 1k C</span></div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// | |</span></div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="comment">// +-------------+---B-|> (NPN)</span></div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// | |</span></div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="comment">// (2.2nF) = E</span></div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="comment">// | |</span></div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment">// (GND) (GND)</span></div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="comment">//</span></div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment">//</span></div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="comment">// SW_CLEAR version: (Lower part count but slower)</span></div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="comment">// -----------------------------------------------</span></div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment">//</span></div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="comment">// 74HC595 (VCC)</span></div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="comment">// +----u----+ | 2.2nF</span></div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="comment">// (LCD D7)------------1-|QB VCC|-16--+ +----||----(GND)</span></div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="comment">// (LCD D6)------------2-|QC QA|-15 |</span></div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="comment">// (LCD D5)------------3-|QD SER|-14---------+--[ Resistor ]--+</span></div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// (LCD D4)------------4-|QE /OE|-13--(GND) 1.5k |</span></div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="comment">// (BL Circuit)--------5-|QF RCK|-12---------+ |</span></div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// | | \ |</span></div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// (LCD RS)------------6-|QG SCK|-11-----------)--------------+--(Serial PIN)</span></div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// 7-|QH /CLR|-10--(VCC) / |</span></div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="comment">// +--8-|GND Q'H|--9---|<|---+--[ Resistor ]--+</span></div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// | +---------+ diode | 1.5k</span></div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment">// | |</span></div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// | 0.1uF |</span></div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment">// (GND)-----||----(VCC) +----||----(GND)</span></div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// | 2.2nF</span></div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment">// (LCD EN)-------------------------------------+</span></div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// (LCD RW)--(GND)</span></div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="comment">//</span></div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="comment">//</span></div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment">// In either case the LCD RW pin is hardwired to GND meaning we will only be able to write</span></div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment">// to the LCD.</span></div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment">// Therefore, the Busy Flag (BF, data bit D7) is not able to be read and we have to make use</span></div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">// of the minimum delay time constraints. This isn't really a problem because it usually</span></div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment">// takes us longer to shift and latch the data than the minimum delay anyway. For now, we</span></div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="comment">// simply keep track of our delays and add more delay at the end to get to at least 37 uS.</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="comment">//</span></div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="comment">//</span></div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="comment">// Backlight Control Circuit</span></div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment">// -------------------------</span></div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="comment">// Since we are using the latching nature of the shift resiter we don't need the extra</span></div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="comment">// backlight circuitry that SR2W uses. Keeping it around, however, would still work because</span></div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="comment">// the circuit just slows down the transitions to the mosfet a bit.</span></div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="comment">//</span></div> +<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="comment">// Here are two more optimized versions that can be used.</span></div> +<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="comment">//</span></div> +<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="comment">//</span></div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment">// NPN Transistor version: (Cheaper but more power draw and higher part count)</span></div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment">//</span></div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// (value depends on LCD, 100ohm is usually safe)</span></div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// (LCD BL anode)---[ resistor ]---(VCC)</span></div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="comment">//</span></div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// (LCD BL cathode)---------------+</span></div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="comment">// C</span></div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment">// (BL input)--[ Resistor ]---B-|> (NPN)</span></div> +<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">// 1k |</span></div> +<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment">// E</span></div> +<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment">// (GND)</span></div> +<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment">//</span></div> +<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="comment">// NOTE: The Bate resistor is needed because the NPN is current fed. For lower</span></div> +<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment">// power draw, try a 10k resistor.</span></div> +<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment">//</span></div> +<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment">//</span></div> +<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// N-CH Mosfet version: (More costly but less power draw and lower part count)</span></div> +<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment">//</span></div> +<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="comment">// (value depends on LCD, 100ohm is usually safe)</span></div> +<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="comment">// (LCD BL anode)---[ resistor ]---(VCC)</span></div> +<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment">//</span></div> +<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment">// (LCD BL cathode)---------------+</span></div> +<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// D</span></div> +<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment">// (BL input)----------------G-|-< (2N7000 FET)</span></div> +<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// S</span></div> +<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="comment">// (GND)</span></div> +<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="comment">//</span></div> +<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="comment">// NOTE: Gate resistor not needed because the mosfet is voltage fed and only really</span></div> +<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="comment">// pulls current while switching.</span></div> +<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="comment">//</span></div> +<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="comment">// In either case, when the BL input is HIGH the LCD backlight will turn on.</span></div> +<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="comment">//</span></div> +<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="comment">//</span></div> +<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="comment">// History</span></div> +<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="comment">// 2013.07.31 serisman - fixed potential interrupt bug and made more performance optimizations</span></div> +<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="comment">// 2013.07.10 serisman - more performance optimizations and modified the HW_CLEAR circuit a bit</span></div> +<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="comment">// 2013.07.09 serisman - added an even faster version that performs the clear in hardware</span></div> +<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="comment">// 2013.07.08 serisman - changed code to shift data MSB first to match SR2W</span></div> +<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="comment">// 2013.07.07 serisman - major speed optimization</span></div> +<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="comment">// 2013.07.06 serisman - created/modified from SR2W source to create SR1W</span></div> +<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="comment">// @author S. Erisman - arduino@serisman.com</span></div> +<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="comment">// --------------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div> +<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="preprocessor">#ifndef _LIQUIDCRYSTAL_SR1W_</span></div> +<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor">#define _LIQUIDCRYSTAL_SR1W_</span></div> +<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div> +<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor">#include "LCD.h"</span></div> +<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#include "FastIO.h"</span></div> +<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div> +<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="comment">// 1-wire SR timing constants</span></div> +<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div> +<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="comment">// NOTE:</span></div> +<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="comment">// The 1.5k resistor (1.2k - 1.8k with a 20% tolerance)</span></div> +<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="comment">// takes between 2.376uS and 4.36uS to fully charge or discharge</span></div> +<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="comment">// the 2.2n capacitor (1.98n - 2.42n with a 10% tolerance).</span></div> +<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="comment">// We round this up to a 5uS delay to provide an additional safety margin.</span></div> +<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div> +<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor">#define SR1W_DELAY_US 5</span></div> +<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor">#define SR1W_DELAY() { delayMicroseconds(SR1W_DELAY_US); numDelays++; }</span></div> +<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div> +<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="comment">// 1-wire SR output bit constants</span></div> +<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div> +<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="preprocessor">#define SR1W_UNUSED_MASK 0x01 // Set unused bit(s) to '1' as they are slightly faster to clock in.</span></div> +<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor">#define SR1W_D7_MASK 0x02</span></div> +<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor">#define SR1W_D6_MASK 0x04</span></div> +<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor">#define SR1W_D5_MASK 0x08</span></div> +<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor">#define SR1W_D4_MASK 0x10</span></div> +<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="preprocessor">#define SR1W_BL_MASK 0x20</span></div> +<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#define SR1W_RS_MASK 0x40</span></div> +<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor">#define SR1W_EN_MASK 0x80 // This cannot be changed. It has to be the first thing shifted in.</span></div> +<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div> +<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="preprocessor">#define SR1W_ATOMIC_WRITE_LOW(reg, mask) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg &= ~mask; }</span></div> +<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor">#define SR1W_ATOMIC_WRITE_HIGH(reg, mask) ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { *reg |= mask; }</span></div> +<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div> +<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div> +<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="keyword">typedef</span> <span class="keyword">enum</span> { SW_CLEAR, HW_CLEAR } t_sr1w_circuitType;</div> +<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div> +<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="class_liquid_crystal___s_r1_w.html"> 299</a></span> <span class="keyword">class </span><a class="code" href="class_liquid_crystal___s_r1_w.html">LiquidCrystal_SR1W</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a></div> +<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> {</div> +<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9">LiquidCrystal_SR1W</a> (uint8_t srdata, t_sr1w_circuitType circuitType, </div> +<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  t_backlighPol blpol = POSITIVE);</div> +<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  </div> +<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">send</a>(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  </div> +<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  </div> +<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">setBacklight</a> ( uint8_t mode );</div> +<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  </div> +<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  </div> +<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordtype">void</span> init ( uint8_t srdata, t_sr1w_circuitType circuitType, t_backlighPol blpol, </div> +<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  uint8_t lines, uint8_t font );</div> +<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  </div> +<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  uint8_t clearSR ();</div> +<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  </div> +<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  uint8_t loadSR (uint8_t val);</div> +<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  </div> +<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  fio_register _srRegister; <span class="comment">// Serial PIN</span></div> +<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  fio_bit _srMask;</div> +<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  </div> +<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  t_sr1w_circuitType _circuitType;</div> +<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  </div> +<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  uint8_t _blPolarity;</div> +<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  uint8_t _blMask;</div> +<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> };</div> +<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_liquid_crystal___s_r1_w_html"><div class="ttname"><a href="class_liquid_crystal___s_r1_w.html">LiquidCrystal_SR1W</a></div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR1W.h:299</div></div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_liquid_crystal___s_r1_w_html_a7fc0b03977907b4d526a6b9e49a331b1"><div class="ttname"><a href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">LiquidCrystal_SR1W::send</a></div><div class="ttdeci">virtual void send(uint8_t value, uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR1W.cpp:194</div></div> +<div class="ttc" id="class_liquid_crystal___s_r1_w_html_a82d844569eb258559afb40ab354eb0a5"><div class="ttname"><a href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">LiquidCrystal_SR1W::setBacklight</a></div><div class="ttdeci">void setBacklight(uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR1W.cpp:235</div></div> +<div class="ttc" id="class_liquid_crystal___s_r1_w_html_a33bff2c123d3dc42a829b0f8034912c9"><div class="ttname"><a href="class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9">LiquidCrystal_SR1W::LiquidCrystal_SR1W</a></div><div class="ttdeci">LiquidCrystal_SR1W(uint8_t srdata, t_sr1w_circuitType circuitType, t_backlighPol blpol=POSITIVE)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR1W.cpp:40</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..16fdcc65667dfc9a632f4e8622bcdfef9518aa8e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8cpp.html @@ -0,0 +1,116 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR2W.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r2_w_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR2W.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_liquid_crystal___s_r2_w_8h_source.html">LiquidCrystal_SR2W.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r2_w_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r2_w_8cpp.html">LiquidCrystal_SR2W.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..7cfd191ec07a9837da861ba51674c2a41721d322 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8cpp_source.html @@ -0,0 +1,246 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR2W.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r2_w_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR2W.cpp</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal___s_r2_w_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created/Adapted by Bill Perry 2012-03-16</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2012 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file LiquidCrystal_SR2W.cpp</span> +<a name="l00013"></a>00013 <span class="comment">// Connects a hd44780 LCD using 2 pins from the Arduino, via an 8-bit </span> +<a name="l00014"></a>00014 <span class="comment">// ShiftRegister (SR2W from now on).</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// This is a port of the ShiftRegLCD library from raron and ported to the</span> +<a name="l00018"></a>00018 <span class="comment">// LCD library.</span> +<a name="l00019"></a>00019 <span class="comment">//</span> +<a name="l00020"></a>00020 <span class="comment">//</span> +<a name="l00021"></a>00021 <span class="comment">// See the corresponding SR2W header file for full details.</span> +<a name="l00022"></a>00022 <span class="comment">//</span> +<a name="l00023"></a>00023 <span class="comment">// History</span> +<a name="l00024"></a>00024 <span class="comment">// 2012.03.29 bperrybap - Fixed incorrect use of 5x10 for default font </span> +<a name="l00025"></a>00025 <span class="comment">// (now matches original LQ library)</span> +<a name="l00026"></a>00026 <span class="comment">// Fixed typo in SR2W mask define names</span> +<a name="l00027"></a>00027 <span class="comment">// changed default backlight state to on</span> +<a name="l00028"></a>00028 <span class="comment">// 2012.03.16 bperrybap - created/modified from SR sources to create SR2W</span> +<a name="l00029"></a>00029 <span class="comment">// @author B. Perry - bperrybap@opensource.billsworld.billandterrie.com</span> +<a name="l00030"></a>00030 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00031"></a>00031 +<a name="l00032"></a>00032 <span class="preprocessor">#include "<a class="code" href="_liquid_crystal___s_r2_w_8h.html">LiquidCrystal_SR2W.h</a>"</span> +<a name="l00033"></a>00033 +<a name="l00034"></a>00034 <span class="comment">// CONSTRUCTORS</span> +<a name="l00035"></a>00035 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00036"></a>00036 <span class="comment">// Assuming 1 line 8 pixel high font</span> +<a name="l00037"></a><a class="code" href="class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3">00037</a> <a class="code" href="class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3">LiquidCrystal_SR2W::LiquidCrystal_SR2W</a> (uint8_t srdata, uint8_t srclock, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> blpol) +<a name="l00038"></a>00038 { +<a name="l00039"></a>00039 init ( srdata, srclock, blpol, 1, 0 ); +<a name="l00040"></a>00040 } +<a name="l00041"></a>00041 +<a name="l00042"></a>00042 +<a name="l00043"></a>00043 <span class="comment">// PRIVATE METHODS</span> +<a name="l00044"></a>00044 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00045"></a>00045 +<a name="l00046"></a>00046 <span class="comment">//</span> +<a name="l00047"></a>00047 <span class="comment">// init</span> +<a name="l00048"></a>00048 <span class="keywordtype">void</span> LiquidCrystal_SR2W::init(uint8_t srdata, uint8_t srclock, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> blpol, uint8_t lines, uint8_t font) +<a name="l00049"></a>00049 { +<a name="l00050"></a>00050 _srDataRegister = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(srdata); +<a name="l00051"></a>00051 _srDataMask = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(srdata); +<a name="l00052"></a>00052 _srClockRegister = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(srclock); +<a name="l00053"></a>00053 _srClockMask = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(srclock); +<a name="l00054"></a>00054 +<a name="l00055"></a>00055 _blPolarity = blpol; +<a name="l00056"></a>00056 +<a name="l00057"></a>00057 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> = <a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD_4BITMODE</a> | <a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a> | <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>; +<a name="l00058"></a>00058 +<a name="l00059"></a>00059 <a class="code" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(); <span class="comment">// set default backlight state to on</span> +<a name="l00060"></a>00060 } +<a name="l00061"></a>00061 +<a name="l00062"></a>00062 <span class="comment">//</span> +<a name="l00063"></a>00063 <span class="comment">// loadSR</span> +<a name="l00064"></a>00064 <span class="keywordtype">void</span> LiquidCrystal_SR2W::loadSR(uint8_t val) +<a name="l00065"></a>00065 { +<a name="l00066"></a>00066 <span class="comment">// Clear to keep Enable LOW while clocking in new bits</span> +<a name="l00067"></a>00067 <a class="code" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a>(_srDataRegister, _srDataMask, _srClockRegister, _srClockMask); +<a name="l00068"></a>00068 +<a name="l00069"></a>00069 +<a name="l00070"></a>00070 <span class="comment">// clock out SR data byte</span> +<a name="l00071"></a>00071 <a class="code" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a>(_srDataRegister, _srDataMask, _srClockRegister, _srClockMask, val, MSBFIRST); +<a name="l00072"></a>00072 +<a name="l00073"></a>00073 +<a name="l00074"></a>00074 <span class="comment">// strobe LCD enable which can now be toggled by the data line</span> +<a name="l00075"></a>00075 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00076"></a>00076 { +<a name="l00077"></a>00077 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(_srDataRegister, _srDataMask); +<a name="l00078"></a>00078 <a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a> (1); <span class="comment">// enable pulse must be >450ns </span> +<a name="l00079"></a>00079 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(_srDataRegister, _srDataMask, LOW); +<a name="l00080"></a>00080 } <span class="comment">// end critical section</span> +<a name="l00081"></a>00081 } +<a name="l00082"></a>00082 +<a name="l00083"></a>00083 <span class="comment">// PUBLIC METHODS</span> +<a name="l00084"></a>00084 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00085"></a>00085 +<a name="l00086"></a>00086 +<a name="l00087"></a>00087 <span class="comment">/************ low level data pushing commands **********/</span> +<a name="l00088"></a>00088 <span class="comment">//</span> +<a name="l00089"></a>00089 <span class="comment">// send</span> +<a name="l00090"></a><a class="code" href="class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d">00090</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d">LiquidCrystal_SR2W::send</a>(uint8_t value, uint8_t mode) +<a name="l00091"></a>00091 { +<a name="l00092"></a>00092 uint8_t myMode = ( mode == <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a> ) ? <a class="code" href="_liquid_crystal___s_r2_w_8h.html#acce98b026d9fdcb2e126705c14af7500">SR2W_RS_MASK</a> : 0; +<a name="l00093"></a>00093 +<a name="l00094"></a>00094 myMode = myMode | <a class="code" href="_liquid_crystal___s_r2_w_8h.html#a8d17b6abb5bcde6883dbdc86d34be9d8">SR2W_EN_MASK</a> | _blMask; +<a name="l00095"></a>00095 +<a name="l00096"></a>00096 <span class="keywordflow">if</span> ( mode != <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ) +<a name="l00097"></a>00097 { +<a name="l00098"></a>00098 loadSR(myMode | ((value >> 1) & <a class="code" href="_liquid_crystal___s_r2_w_8h.html#a7cf86f2a173473d01e02b2ac786a8690">SR2W_DATA_MASK</a>)); <span class="comment">// upper nibble</span> +<a name="l00099"></a>00099 } +<a name="l00100"></a>00100 +<a name="l00101"></a>00101 loadSR(myMode | ((value << 3) & <a class="code" href="_liquid_crystal___s_r2_w_8h.html#a7cf86f2a173473d01e02b2ac786a8690">SR2W_DATA_MASK</a>)); <span class="comment">// lower nibble</span> +<a name="l00102"></a>00102 +<a name="l00103"></a>00103 <span class="comment">/*</span> +<a name="l00104"></a>00104 <span class="comment"> * Don't call waitUsec()</span> +<a name="l00105"></a>00105 <span class="comment"> * do our own delay optmization since this code is so fast it needs some added delay</span> +<a name="l00106"></a>00106 <span class="comment"> * even on slower AVRs.</span> +<a name="l00107"></a>00107 <span class="comment"> */</span> +<a name="l00108"></a>00108 <span class="preprocessor">#if (F_CPU <= 16000000)</span> +<a name="l00109"></a>00109 <span class="preprocessor"></span> delayMicroseconds ( 10 ); <span class="comment">// commands & data writes need > 37us to complete</span> +<a name="l00110"></a>00110 <span class="preprocessor">#else</span> +<a name="l00111"></a>00111 <span class="preprocessor"></span> delayMicroseconds ( 37 ); <span class="comment">// commands & data writes need > 37us to complete</span> +<a name="l00112"></a>00112 <span class="preprocessor">#endif</span> +<a name="l00113"></a>00113 <span class="preprocessor"></span>} +<a name="l00114"></a>00114 +<a name="l00115"></a>00115 <span class="comment">//</span> +<a name="l00116"></a>00116 <span class="comment">// setBacklight</span> +<a name="l00117"></a><a class="code" href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">00117</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">LiquidCrystal_SR2W::setBacklight</a> ( uint8_t value ) +<a name="l00118"></a>00118 { +<a name="l00119"></a>00119 <span class="comment">// Check for polarity to configure mask accordingly</span> +<a name="l00120"></a>00120 <span class="comment">// ----------------------------------------------------------</span> +<a name="l00121"></a>00121 <span class="keywordflow">if</span> ( ((_blPolarity == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>) && (value > 0)) || +<a name="l00122"></a>00122 ((_blPolarity == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">NEGATIVE</a> ) && ( value == 0 )) ) +<a name="l00123"></a>00123 { +<a name="l00124"></a>00124 _blMask = <a class="code" href="_liquid_crystal___s_r2_w_8h.html#a53e3add69865ae57ca872cb41fcae9e3">SR2W_BL_MASK</a>; +<a name="l00125"></a>00125 } +<a name="l00126"></a>00126 <span class="keywordflow">else</span> +<a name="l00127"></a>00127 { +<a name="l00128"></a>00128 _blMask = 0; +<a name="l00129"></a>00129 } +<a name="l00130"></a>00130 +<a name="l00131"></a>00131 <span class="comment">// send dummy data of blMask to set BL pin</span> +<a name="l00132"></a>00132 <span class="comment">// Note: loadSR() will strobe the data line trying to pulse EN</span> +<a name="l00133"></a>00133 <span class="comment">// but E will not strobe because the EN output bit is not set.</span> +<a name="l00134"></a>00134 loadSR(_blMask); +<a name="l00135"></a>00135 } +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r2_w_8cpp.html">LiquidCrystal_SR2W.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8h.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..0036b40f46db09c75df784f1148d17de29f87fb8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8h.html @@ -0,0 +1,191 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR2W.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r2_w_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#define-members">Defines</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR2W.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +<code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r2_w_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r2_w.html">LiquidCrystal_SR2W</a></td></tr> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r2_w_8h.html#a53e3add69865ae57ca872cb41fcae9e3">SR2W_BL_MASK</a>   0x02</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r2_w_8h.html#a7cf86f2a173473d01e02b2ac786a8690">SR2W_DATA_MASK</a>   0x78</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r2_w_8h.html#a8d17b6abb5bcde6883dbdc86d34be9d8">SR2W_EN_MASK</a>   0x80</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r2_w_8h.html#acce98b026d9fdcb2e126705c14af7500">SR2W_RS_MASK</a>   0x04</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a53e3add69865ae57ca872cb41fcae9e3"></a><!-- doxytag: member="LiquidCrystal_SR2W.h::SR2W_BL_MASK" ref="a53e3add69865ae57ca872cb41fcae9e3" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR2W_BL_MASK   0x02</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r2_w_8h_source.html#l00132">132</a> of file <a class="el" href="_liquid_crystal___s_r2_w_8h_source.html">LiquidCrystal_SR2W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7cf86f2a173473d01e02b2ac786a8690"></a><!-- doxytag: member="LiquidCrystal_SR2W.h::SR2W_DATA_MASK" ref="a7cf86f2a173473d01e02b2ac786a8690" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR2W_DATA_MASK   0x78</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r2_w_8h_source.html#l00134">134</a> of file <a class="el" href="_liquid_crystal___s_r2_w_8h_source.html">LiquidCrystal_SR2W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a8d17b6abb5bcde6883dbdc86d34be9d8"></a><!-- doxytag: member="LiquidCrystal_SR2W.h::SR2W_EN_MASK" ref="a8d17b6abb5bcde6883dbdc86d34be9d8" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR2W_EN_MASK   0x80</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r2_w_8h_source.html#l00135">135</a> of file <a class="el" href="_liquid_crystal___s_r2_w_8h_source.html">LiquidCrystal_SR2W.h</a>.</p> + +</div> +</div> +<a class="anchor" id="acce98b026d9fdcb2e126705c14af7500"></a><!-- doxytag: member="LiquidCrystal_SR2W.h::SR2W_RS_MASK" ref="acce98b026d9fdcb2e126705c14af7500" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR2W_RS_MASK   0x04</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r2_w_8h_source.html#l00133">133</a> of file <a class="el" href="_liquid_crystal___s_r2_w_8h_source.html">LiquidCrystal_SR2W.h</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r2_w_8h.html">LiquidCrystal_SR2W.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..69beb822df4c6d9351adc1aa2e8fc93a5746d303 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r2_w_8h_source.html @@ -0,0 +1,263 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR2W.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR2W.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created/Adapted by Bill Perry 2012-03-16</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2012 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// @file LiquidCrystal_SR2W.h</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Connects a hd44780 LCD using 2 pins from the Arduino, via an 8-bit </span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// ShiftRegister (SR2W from now on).</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// </span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// This is the 2 wire shift register interface class for the LCD library</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">//</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// The functionality provided by this class and its base class is a superset of</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// the original functionality of the Arduino LiquidCrystal library and can</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// be used as such.</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// See the LCD class for a full description of the API functions available.</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// It works with a 8-bit unlatched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out)</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// shift register (IE a very simple SR), and an hd44780 LCD in 4-bit mode.</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// Any such shift register should do (pref. 74LS family IC's for 2-wire).</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// 74LS164 and 74HC595 have been exstensively tested.</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">//</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// 2 Pins required from the Arduino:</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// - Data/Enable</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// - Clock</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// The Data pin is also used to control the enable signal</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// LCD RW-pin hardwired to LOW (only writing to LCD).</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Busy Flag (BF, data bit D7) is not read.</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// Original project homepage: http://code.google.com/p/arduinoshiftreglcd/</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">//</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Shift register bits</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// Bit #0 - (cannot be used on 74HC595)</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Bit #1 - optional backlight control</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// Bit #2 - connects to RS (Register Select) on the LCD</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// Bit #3 - connects to LCD data inputs D4</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// Bit #4 - connects to LCD data inputs D5</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// Bit #5 - connects to LCD data inputs D6</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// Bit #6 - connects to LCD data inputs D7</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// Bit #7 - enables the LCD enable-puls (via the diode-resistor AND "gate")</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// </span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Wiring for a 74LS164</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// ---------------------</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// 1k/4.7k</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// +--------[ Resistor ]--------+---(LCD Enable)</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// | |</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// | 74LS164 (VCC) |</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// | +----u----+ | _V_ diode</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// (data pin)---+---+--1-|A VCC|-14-+ |</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// | | | |</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// +--2-|B Q7|-13------+</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// 3-|Q0 Q6|-12--(LCD D7)</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// (BL Circuit)--------4-|Q1 Q5|-11--(LCD D6)</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// (LCD RS)------------5-|Q2 Q4|-10--(LCD D5)</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// (LCD D4)------------6-|Q3 /MR|--9--(VCC)</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// +-7-|GND CP|--8--(clock pin)</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// | +---------+ </span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// | 0.1uf</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// (gnd)-----||----(vcc)</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// </span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// Wiring for a 74HC595</span></div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// --------------------</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// NOTE: the 74HC595 is a latching shift register. In order to get it to operate</span></div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// in a "non latching" mode, RCLK and SCLK are tied together. The side effect of this</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// is that the latched output is one clock behind behind the internal shift register bits.</span></div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// To compensate for this the wiring is offset by one bit position lower.</span></div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// For example, while the backlight is hooked to Q0 it is still using bit 1 of</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// of the shift register because the outputs are 1 clock behind the real internal shift</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// register.</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// </span></div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// 74HC595 (VCC)</span></div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">// +----u----+ | +-----------------------(BL circuit)</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// (LCD RS)------------1-|Q1 VCC|-16-+ | +--------------------(data pin)</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// (LCD D4)------------2-|Q2 Q0|-15----+ | 1k/4.7k</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// (LCD D5)------------3-|Q3 SER|-14-------+---[ Resistor ]--+--(LCD Enable)</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// (LCD D6)------------4-|Q4 /OE|-13--(gnd) |</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// (LCD D7)------------5-|Q5 RCLK|-12-------+ |</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// | | | |</span></div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// +------6-|Q6 SCLK|-11-------+--(clock pin) |</span></div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">// | 7-|Q7 /MR|-10--(VCC) |</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// | +-8-|GND Q6'|--9 |</span></div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// | | +---------+ diode _V_</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// | | 0.1uf |</span></div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// | (gnd)-----||----(vcc) |</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// +-----------------------------------------------+</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// </span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">//</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Backlight Control circuit</span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// -------------------------</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// Because the shift resiter is not latching the outputs, the backlight circuitry</span></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// will "see" the output bits as they are shifted into the shift register which</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// can cause the backlight to flicker rather than remain constantly on/off.</span></div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// The circuit below slows down the transitions to the transistor to remove</span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// the visible flicker. When the BL input is HIGH the LCD backlight will turn on.</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">//</span></div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment">// (value depends on LCD, 100ohm is usually safe)</span></div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// (LCD BL anode)---[ resistor ]---(vcc)</span></div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">//</span></div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// (LCD BL cathode)-------------------------------+</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// D</span></div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// |</span></div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// (BL input)----[ 4.7k Resistor ]----+-------G-|-< (2N7000 FET)</span></div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// | |</span></div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// (0.1uf) = S</span></div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// | |</span></div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// (gnd) (gnd)</span></div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// </span></div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// </span></div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// </span></div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">//</span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// History</span></div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// 2012.03.16 bperrybap - creation/adaption from SR header to create SR2W header.</span></div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// Fixed typo in SR2W mask define names</span></div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// @author B. Perry - bperrybap@opensource.billsworld.billandterrie.com</span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// --------------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#ifndef _LIQUIDCRYSTAL_SR2W_</span></div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#define _LIQUIDCRYSTAL_SR2W_</span></div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">#include "LCD.h"</span></div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#include "FastIO.h"</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// two-wire SR output bit constants</span></div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#define SR2W_BL_MASK 0x02</span></div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#define SR2W_RS_MASK 0x04</span></div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor">#define SR2W_DATA_MASK 0x78 // data bits are hard coded to be SR bits 6,5,4,3</span></div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#define SR2W_EN_MASK 0x80 // cannot ever be changed</span></div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div> +<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="class_liquid_crystal___s_r2_w.html"> 137</a></span> <span class="keyword">class </span><a class="code" href="class_liquid_crystal___s_r2_w.html">LiquidCrystal_SR2W</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a></div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> {</div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3">LiquidCrystal_SR2W</a> (uint8_t srdata, uint8_t srclock, t_backlighPol blpol = POSITIVE);</div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  </div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d">send</a>(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  </div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  </div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">setBacklight</a> ( uint8_t mode );</div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  </div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  </div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">void</span> init ( uint8_t srdata, uint8_t srclock, t_backlighPol blpol, uint8_t lines, uint8_t font );</div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">void</span> loadSR (uint8_t val);</div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  </div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  fio_register _srDataRegister; <span class="comment">// Serial Data pin</span></div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  fio_bit _srDataMask;</div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  fio_register _srClockRegister; <span class="comment">// Clock Pin</span></div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  fio_bit _srClockMask;</div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  uint8_t _blPolarity;</div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  uint8_t _blMask;</div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> };</div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_liquid_crystal___s_r2_w_html_a2158db27287c1564a03e7a1472beb3b6"><div class="ttname"><a href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">LiquidCrystal_SR2W::setBacklight</a></div><div class="ttdeci">void setBacklight(uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR2W.cpp:117</div></div> +<div class="ttc" id="class_liquid_crystal___s_r2_w_html"><div class="ttname"><a href="class_liquid_crystal___s_r2_w.html">LiquidCrystal_SR2W</a></div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR2W.h:137</div></div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_liquid_crystal___s_r2_w_html_af307fdf5c8feb757e965074dcdeb1dd3"><div class="ttname"><a href="class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3">LiquidCrystal_SR2W::LiquidCrystal_SR2W</a></div><div class="ttdeci">LiquidCrystal_SR2W(uint8_t srdata, uint8_t srclock, t_backlighPol blpol=POSITIVE)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR2W.cpp:37</div></div> +<div class="ttc" id="class_liquid_crystal___s_r2_w_html_a65dc6f261c319be8e56f3c1f6a5c877d"><div class="ttname"><a href="class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d">LiquidCrystal_SR2W::send</a></div><div class="ttdeci">virtual void send(uint8_t value, uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR2W.cpp:90</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..215b179d1a1ccbc89137b49435db6ed9167f5d3a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8cpp.html @@ -0,0 +1,276 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR3W.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r3_w_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#define-members">Defines</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR3W.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <stdio.h></code><br/> +<code>#include <string.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include <WProgram.h></code><br/> +<code>#include "<a class="el" href="_liquid_crystal___s_r3_w_8h_source.html">LiquidCrystal_SR3W.h</a>"</code><br/> +<code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r3_w_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">D4</a>   0</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">D5</a>   1</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">D6</a>   2</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">D7</a>   3</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">EN</a>   4</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">LCD_BACKLIGHT</a>   0xFF</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>   0x00</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#af8903d8eea3868940c60af887473b152">RS</a>   6</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#afc4ded33ac0ca43defcce639e965748a">RW</a>   5</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a3d9bb178282c3cb69740c94ba1e48fed"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::D4" ref="a3d9bb178282c3cb69740c94ba1e48fed" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define D4   0</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> dataline allocation this library only supports 4 bit <a class="el" href="class_l_c_d.html">LCD</a> control mode. D4, D5, D6, D7 <a class="el" href="class_l_c_d.html">LCD</a> data lines pin mapping of the extender module </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00126">126</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a2ddd4183d444d6d128cbdbd6269e4e0c"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::D5" ref="a2ddd4183d444d6d128cbdbd6269e4e0c" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define D5   1</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00127">127</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a79a18a7f5ccf7a7ca31f302bd62527a6"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::D6" ref="a79a18a7f5ccf7a7ca31f302bd62527a6" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define D6   2</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00128">128</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a2ba78f059a7ebebc95e7beef690e88d6"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::D7" ref="a2ba78f059a7ebebc95e7beef690e88d6" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define D7   3</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00129">129</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a22e6626f2c98ed902f8ded47f6438c05"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::EN" ref="a22e6626f2c98ed902f8ded47f6438c05" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define EN   4</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Enable bit of the <a class="el" href="class_l_c_d.html">LCD</a> Defines the IO of the expander connected to the LCD's Enable </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00104">104</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ac059d24dfe9c1e1f7c07cb7869a1833b"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::LCD_BACKLIGHT" ref="ac059d24dfe9c1e1f7c07cb7869a1833b" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_BACKLIGHT   0xFF</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>LCD_BACKLIGHT BACKLIGHT MASK used when backlight is on </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00093">93</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a65fa786d6e31fe8b1aa51784a9736581"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::LCD_NOBACKLIGHT" ref="a65fa786d6e31fe8b1aa51784a9736581" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define LCD_NOBACKLIGHT   0x00</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>LCD_NOBACKLIGHT No BACKLIGHT MASK </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00086">86</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="af8903d8eea3868940c60af887473b152"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::RS" ref="af8903d8eea3868940c60af887473b152" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define RS   6</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Register bit of the <a class="el" href="class_l_c_d.html">LCD</a> Defines the IO of the expander connected to the LCD's Register select pin </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00118">118</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="afc4ded33ac0ca43defcce639e965748a"></a><!-- doxytag: member="LiquidCrystal_SR3W.cpp::RW" ref="afc4ded33ac0ca43defcce639e965748a" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define RW   5</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Read/Write bit of the <a class="el" href="class_l_c_d.html">LCD</a> Defines the IO of the expander connected to the LCD's Rw pin </p> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html#l00111">111</a> of file <a class="el" href="_liquid_crystal___s_r3_w_8cpp_source.html">LiquidCrystal_SR3W.cpp</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html">LiquidCrystal_SR3W.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..f85668ba0376208f2743205230dee782cc20a4b0 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8cpp_source.html @@ -0,0 +1,363 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR3W.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r3_w_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR3W.cpp</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal___s_r3_w_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by Francisco Malpartida on 7.3.2012.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file LiquidCrystal_SRG.h</span> +<a name="l00013"></a>00013 <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span> +<a name="l00014"></a>00014 <span class="comment">// in the Arduino SDK but using a generic SHIFT REGISTER extension board.</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span> +<a name="l00018"></a>00018 <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span> +<a name="l00019"></a>00019 <span class="comment">// this class implements the all methods to command an LCD based</span> +<a name="l00020"></a>00020 <span class="comment">// on the Hitachi HD44780 and compatible chipsets using a 3 wire latching</span> +<a name="l00021"></a>00021 <span class="comment">// shift register. While it has been tested with a 74HC595N shift register</span> +<a name="l00022"></a>00022 <span class="comment">// it should also work with other latching shift registers such as the MC14094</span> +<a name="l00023"></a>00023 <span class="comment">// and the HEF4094</span> +<a name="l00024"></a>00024 <span class="comment">//</span> +<a name="l00025"></a>00025 <span class="comment">// This particular driver has been created as generic as possible to enable</span> +<a name="l00026"></a>00026 <span class="comment">// users to configure and connect their LCDs using just 3 digital IOs from the</span> +<a name="l00027"></a>00027 <span class="comment">// AVR or Arduino, and connect the LCD to the outputs of the shiftregister</span> +<a name="l00028"></a>00028 <span class="comment">// in any configuration. The library is configured by passing the IO pins</span> +<a name="l00029"></a>00029 <span class="comment">// that control the strobe, data and clock of the shift register and a map</span> +<a name="l00030"></a>00030 <span class="comment">// of how the shiftregister is connected to the LCD.</span> +<a name="l00031"></a>00031 <span class="comment">// </span> +<a name="l00032"></a>00032 <span class="comment">//</span> +<a name="l00033"></a>00033 <span class="comment">// +--------------------------------------------+</span> +<a name="l00034"></a>00034 <span class="comment">// | MCU |</span> +<a name="l00035"></a>00035 <span class="comment">// | IO1 IO2 IO3 |</span> +<a name="l00036"></a>00036 <span class="comment">// +----+-------------+-------------+-----------+</span> +<a name="l00037"></a>00037 <span class="comment">// | | |</span> +<a name="l00038"></a>00038 <span class="comment">// | | |</span> +<a name="l00039"></a>00039 <span class="comment">// +----+-------------+-------------+-----------+</span> +<a name="l00040"></a>00040 <span class="comment">// | Strobe Data Clock |</span> +<a name="l00041"></a>00041 <span class="comment">// | 8-bit shift/latch register | 74HC595N</span> +<a name="l00042"></a>00042 <span class="comment">// | Qa0 Qb1 Qc2 Qd3 Qe4 Qf5 Qg6 Qh7 |</span> +<a name="l00043"></a>00043 <span class="comment">// +----+----+----+----+----+----+----+----+----+</span> +<a name="l00044"></a>00044 <span class="comment">// | | | | | | | </span> +<a name="l00045"></a>00045 <span class="comment">// |11 |12 |13 |14 |6 |5 |4 (LCD pins)</span> +<a name="l00046"></a>00046 <span class="comment">// +----+----+----+----+----+----+----+----+----+</span> +<a name="l00047"></a>00047 <span class="comment">// | DB4 DB5 DB6 DB7 E Rw RS |</span> +<a name="l00048"></a>00048 <span class="comment">// | LCD Module |</span> +<a name="l00049"></a>00049 <span class="comment">//</span> +<a name="l00050"></a>00050 <span class="comment">// NOTE: Rw is not used by the driver so it can be connected to GND.</span> +<a name="l00051"></a>00051 <span class="comment">//</span> +<a name="l00052"></a>00052 <span class="comment">// The functionality provided by this class and its base class is identical</span> +<a name="l00053"></a>00053 <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span> +<a name="l00054"></a>00054 <span class="comment">//</span> +<a name="l00055"></a>00055 <span class="comment">//</span> +<a name="l00056"></a>00056 <span class="comment">// History</span> +<a name="l00057"></a>00057 <span class="comment">// 2012.03.29 bperrybap - fixed constructors not properly using Rs</span> +<a name="l00058"></a>00058 <span class="comment">// Fixed incorrect use of 5x10 for default font </span> +<a name="l00059"></a>00059 <span class="comment">// - now matches original LQ library.</span> +<a name="l00060"></a>00060 <span class="comment">// moved delay to send() so it is per cmd/write vs shiftout()</span> +<a name="l00061"></a>00061 <span class="comment">// NOTE: delay is on hairy edge of working when FAST_MODE is on.</span> +<a name="l00062"></a>00062 <span class="comment">// because of waitUsec().</span> +<a name="l00063"></a>00063 <span class="comment">// There is margin at 16Mhz AVR but might fail on 20Mhz AVRs.</span> +<a name="l00064"></a>00064 <span class="comment">// </span> +<a name="l00065"></a>00065 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span> +<a name="l00066"></a>00066 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00067"></a>00067 <span class="comment">// flags for backlight control</span> +<a name="l00068"></a>00068 <span class="preprocessor">#include <stdio.h></span> +<a name="l00069"></a>00069 <span class="preprocessor">#include <string.h></span> +<a name="l00070"></a>00070 <span class="preprocessor">#include <inttypes.h></span> +<a name="l00071"></a>00071 +<a name="l00072"></a>00072 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00073"></a>00073 <span class="preprocessor"></span><span class="preprocessor">#include <WProgram.h></span> +<a name="l00074"></a>00074 <span class="preprocessor">#else</span> +<a name="l00075"></a>00075 <span class="preprocessor"></span><span class="preprocessor">#include <Arduino.h></span> +<a name="l00076"></a>00076 <span class="preprocessor">#endif</span> +<a name="l00077"></a>00077 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="_liquid_crystal___s_r3_w_8h.html">LiquidCrystal_SR3W.h</a>"</span> +<a name="l00078"></a>00078 +<a name="l00079"></a>00079 <span class="preprocessor">#include "<a class="code" href="_fast_i_o_8h.html">FastIO.h</a>"</span> +<a name="l00080"></a>00080 +<a name="l00086"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">00086</a> <span class="preprocessor">#define LCD_NOBACKLIGHT 0x00</span> +<a name="l00087"></a>00087 <span class="preprocessor"></span> +<a name="l00093"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">00093</a> <span class="preprocessor">#define LCD_BACKLIGHT 0xFF</span> +<a name="l00094"></a>00094 <span class="preprocessor"></span> +<a name="l00095"></a>00095 +<a name="l00096"></a>00096 <span class="comment">// Default library configuration parameters used by class constructor with</span> +<a name="l00097"></a>00097 <span class="comment">// only the I2C address field.</span> +<a name="l00098"></a>00098 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00104"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">00104</a> <span class="comment"></span><span class="preprocessor">#define EN 4 // Enable bit</span> +<a name="l00105"></a>00105 <span class="preprocessor"></span> +<a name="l00111"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#afc4ded33ac0ca43defcce639e965748a">00111</a> <span class="preprocessor">#define RW 5 // Read/Write bit</span> +<a name="l00112"></a>00112 <span class="preprocessor"></span> +<a name="l00118"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#af8903d8eea3868940c60af887473b152">00118</a> <span class="preprocessor">#define RS 6 // Register select bit</span> +<a name="l00119"></a>00119 <span class="preprocessor"></span> +<a name="l00126"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">00126</a> <span class="preprocessor">#define D4 0</span> +<a name="l00127"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">00127</a> <span class="preprocessor"></span><span class="preprocessor">#define D5 1</span> +<a name="l00128"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">00128</a> <span class="preprocessor"></span><span class="preprocessor">#define D6 2</span> +<a name="l00129"></a><a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">00129</a> <span class="preprocessor"></span><span class="preprocessor">#define D7 3</span> +<a name="l00130"></a>00130 <span class="preprocessor"></span> +<a name="l00131"></a>00131 +<a name="l00132"></a>00132 +<a name="l00133"></a><a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">00133</a> <a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W::LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe) +<a name="l00134"></a>00134 { +<a name="l00135"></a>00135 init( data, clk, strobe, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#af8903d8eea3868940c60af887473b152">RS</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#afc4ded33ac0ca43defcce639e965748a">RW</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">EN</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">D4</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">D5</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">D6</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">D7</a> ); +<a name="l00136"></a>00136 } +<a name="l00137"></a>00137 +<a name="l00138"></a><a class="code" href="class_liquid_crystal___s_r3_w.html#a7b2f382b76bc9d88adb8d681e824b4de">00138</a> <a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W::LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe, +<a name="l00139"></a>00139 uint8_t backlighPin, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol) +<a name="l00140"></a>00140 { +<a name="l00141"></a>00141 init( data, clk, strobe, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#af8903d8eea3868940c60af887473b152">RS</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#afc4ded33ac0ca43defcce639e965748a">RW</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">EN</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">D4</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">D5</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">D6</a>, <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">D7</a> ); +<a name="l00142"></a>00142 <a class="code" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">setBacklightPin</a>(backlighPin, pol); +<a name="l00143"></a>00143 } +<a name="l00144"></a>00144 +<a name="l00145"></a><a class="code" href="class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0">00145</a> <a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W::LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe, +<a name="l00146"></a>00146 uint8_t En, uint8_t Rw, uint8_t Rs, +<a name="l00147"></a>00147 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 ) +<a name="l00148"></a>00148 { +<a name="l00149"></a>00149 init( data, clk, strobe, Rs, Rw, En, d4, d5, d6, d7 ); +<a name="l00150"></a>00150 } +<a name="l00151"></a>00151 +<a name="l00152"></a><a class="code" href="class_liquid_crystal___s_r3_w.html#a24f051747dfeda48f7b207c3358c8015">00152</a> <a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W::LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe, +<a name="l00153"></a>00153 uint8_t En, uint8_t Rw, uint8_t Rs, +<a name="l00154"></a>00154 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, +<a name="l00155"></a>00155 uint8_t backlighPin, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol) +<a name="l00156"></a>00156 { +<a name="l00157"></a>00157 init( data, clk, strobe, Rs, Rw, En, d4, d5, d6, d7 ); +<a name="l00158"></a>00158 <a class="code" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">setBacklightPin</a>(backlighPin, pol); +<a name="l00159"></a>00159 } +<a name="l00160"></a>00160 +<a name="l00161"></a>00161 +<a name="l00162"></a><a class="code" href="class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56">00162</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56">LiquidCrystal_SR3W::send</a>(uint8_t value, uint8_t mode) +<a name="l00163"></a>00163 { +<a name="l00164"></a>00164 +<a name="l00165"></a>00165 <span class="keywordflow">if</span> ( mode != <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ) +<a name="l00166"></a>00166 { +<a name="l00167"></a>00167 write4bits( (value >> 4), mode ); <span class="comment">// upper nibble</span> +<a name="l00168"></a>00168 } +<a name="l00169"></a>00169 write4bits( (value & 0x0F), mode); <span class="comment">// lower nibble</span> +<a name="l00170"></a>00170 +<a name="l00171"></a>00171 +<a name="l00172"></a>00172 <span class="preprocessor">#if (F_CPU <= 16000000)</span> +<a name="l00173"></a>00173 <span class="preprocessor"></span> <span class="comment">// No need to use the delay routines on AVR since the time taken to write</span> +<a name="l00174"></a>00174 <span class="comment">// on AVR with SR pin mapping even with fio is longer than LCD command execution.</span> +<a name="l00175"></a>00175 <a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a>(37); <span class="comment">//goes away on AVRs</span> +<a name="l00176"></a>00176 <span class="preprocessor">#else</span> +<a name="l00177"></a>00177 <span class="preprocessor"></span> delayMicroseconds ( 37 ); <span class="comment">// commands & data writes need > 37us to complete</span> +<a name="l00178"></a>00178 <span class="preprocessor">#endif</span> +<a name="l00179"></a>00179 <span class="preprocessor"></span> +<a name="l00180"></a>00180 } +<a name="l00181"></a>00181 +<a name="l00182"></a>00182 +<a name="l00183"></a><a class="code" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">00183</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">LiquidCrystal_SR3W::setBacklightPin</a> ( uint8_t value, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol = <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a> ) +<a name="l00184"></a>00184 { +<a name="l00185"></a>00185 _backlightPinMask = ( 1 << value ); +<a name="l00186"></a>00186 _backlightStsMask = <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>; +<a name="l00187"></a>00187 <a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> = pol; +<a name="l00188"></a>00188 <a class="code" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">setBacklight</a> (<a class="code" href="_l_c_d_8h.html#a0f50ae3b4bdb42dd5ad74b2c604a7515">BACKLIGHT_OFF</a>); <span class="comment">// Set backlight to off as initial setup</span> +<a name="l00189"></a>00189 } +<a name="l00190"></a>00190 +<a name="l00191"></a><a class="code" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">00191</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">LiquidCrystal_SR3W::setBacklight</a> ( uint8_t value ) +<a name="l00192"></a>00192 { +<a name="l00193"></a>00193 <span class="comment">// Check if backlight is available</span> +<a name="l00194"></a>00194 <span class="comment">// ----------------------------------------------------</span> +<a name="l00195"></a>00195 <span class="keywordflow">if</span> ( _backlightPinMask != 0x0 ) +<a name="l00196"></a>00196 { +<a name="l00197"></a>00197 <span class="comment">// Check for polarity to configure mask accordingly</span> +<a name="l00198"></a>00198 <span class="comment">// ----------------------------------------------------------</span> +<a name="l00199"></a>00199 <span class="keywordflow">if</span> (((<a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>) && (value > 0)) || +<a name="l00200"></a>00200 ((<a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> == <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">NEGATIVE</a> ) && ( value == 0 ))) +<a name="l00201"></a>00201 { +<a name="l00202"></a>00202 _backlightStsMask = _backlightPinMask & <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">LCD_BACKLIGHT</a>; +<a name="l00203"></a>00203 } +<a name="l00204"></a>00204 <span class="keywordflow">else</span> +<a name="l00205"></a>00205 { +<a name="l00206"></a>00206 _backlightStsMask = _backlightPinMask & <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>; +<a name="l00207"></a>00207 } +<a name="l00208"></a>00208 loadSR( _backlightStsMask ); +<a name="l00209"></a>00209 } +<a name="l00210"></a>00210 } +<a name="l00211"></a>00211 +<a name="l00212"></a>00212 +<a name="l00213"></a>00213 <span class="comment">// PRIVATE METHODS</span> +<a name="l00214"></a>00214 <span class="comment">// -----------------------------------------------------------------------------</span> +<a name="l00215"></a>00215 +<a name="l00216"></a>00216 <span class="keywordtype">int</span> LiquidCrystal_SR3W::init(uint8_t data, uint8_t clk, uint8_t strobe, +<a name="l00217"></a>00217 uint8_t Rs, uint8_t Rw, uint8_t En, +<a name="l00218"></a>00218 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) +<a name="l00219"></a>00219 { +<a name="l00220"></a>00220 _data = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(data); +<a name="l00221"></a>00221 _clk = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(clk); +<a name="l00222"></a>00222 _strobe = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(strobe); +<a name="l00223"></a>00223 _data_reg = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(data); +<a name="l00224"></a>00224 _clk_reg = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(clk); +<a name="l00225"></a>00225 _strobe_reg = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(strobe); +<a name="l00226"></a>00226 +<a name="l00227"></a>00227 <span class="comment">// LCD pin mapping</span> +<a name="l00228"></a>00228 _backlightPinMask = 0; +<a name="l00229"></a>00229 _backlightStsMask = <a class="code" href="_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LCD_NOBACKLIGHT</a>; +<a name="l00230"></a>00230 <a class="code" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">_polarity</a> = <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">POSITIVE</a>; +<a name="l00231"></a>00231 +<a name="l00232"></a>00232 _En = ( 1 << En ); +<a name="l00233"></a>00233 _Rw = ( 1 << Rw ); +<a name="l00234"></a>00234 _Rs = ( 1 << Rs ); +<a name="l00235"></a>00235 +<a name="l00236"></a>00236 <span class="comment">// Initialise pin mapping</span> +<a name="l00237"></a>00237 _data_pins[0] = ( 1 << d4 ); +<a name="l00238"></a>00238 _data_pins[1] = ( 1 << d5 ); +<a name="l00239"></a>00239 _data_pins[2] = ( 1 << d6 ); +<a name="l00240"></a>00240 _data_pins[3] = ( 1 << d7 ); +<a name="l00241"></a>00241 +<a name="l00242"></a>00242 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> = <a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD_4BITMODE</a> | <a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a> | <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>; +<a name="l00243"></a>00243 +<a name="l00244"></a>00244 <span class="keywordflow">return</span> (1); +<a name="l00245"></a>00245 } +<a name="l00246"></a>00246 +<a name="l00247"></a>00247 <span class="keywordtype">void</span> LiquidCrystal_SR3W::write4bits(uint8_t value, uint8_t mode) +<a name="l00248"></a>00248 { +<a name="l00249"></a>00249 uint8_t pinMapValue = 0; +<a name="l00250"></a>00250 +<a name="l00251"></a>00251 <span class="comment">// Map the value to LCD pin mapping</span> +<a name="l00252"></a>00252 <span class="comment">// --------------------------------</span> +<a name="l00253"></a>00253 <span class="keywordflow">for</span> ( uint8_t i = 0; i < 4; i++ ) +<a name="l00254"></a>00254 { +<a name="l00255"></a>00255 <span class="keywordflow">if</span> ( ( value & 0x1 ) == 1 ) +<a name="l00256"></a>00256 { +<a name="l00257"></a>00257 pinMapValue |= _data_pins[i]; +<a name="l00258"></a>00258 } +<a name="l00259"></a>00259 value = ( value >> 1 ); +<a name="l00260"></a>00260 } +<a name="l00261"></a>00261 +<a name="l00262"></a>00262 <span class="comment">// Is it a command or data</span> +<a name="l00263"></a>00263 <span class="comment">// -----------------------</span> +<a name="l00264"></a>00264 mode = ( mode == <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a> ) ? _Rs : 0; +<a name="l00265"></a>00265 +<a name="l00266"></a>00266 pinMapValue |= mode | _backlightStsMask; +<a name="l00267"></a>00267 loadSR ( pinMapValue | _En ); <span class="comment">// Send with enable high</span> +<a name="l00268"></a>00268 loadSR ( pinMapValue); <span class="comment">// Send with enable low</span> +<a name="l00269"></a>00269 } +<a name="l00270"></a>00270 +<a name="l00271"></a>00271 +<a name="l00272"></a>00272 <span class="keywordtype">void</span> LiquidCrystal_SR3W::loadSR(uint8_t value) +<a name="l00273"></a>00273 { +<a name="l00274"></a>00274 <span class="comment">// Load the shift register with information</span> +<a name="l00275"></a>00275 <a class="code" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a>(_data_reg, _data, _clk_reg, _clk, value, MSBFIRST); +<a name="l00276"></a>00276 +<a name="l00277"></a>00277 <span class="comment">// Strobe the data into the latch</span> +<a name="l00278"></a>00278 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00279"></a>00279 { +<a name="l00280"></a>00280 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(_strobe_reg, _strobe); +<a name="l00281"></a>00281 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(_strobe_reg, _strobe, LOW); +<a name="l00282"></a>00282 } +<a name="l00283"></a>00283 } +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r3_w_8cpp.html">LiquidCrystal_SR3W.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8h.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..90e61fa20250481b6e630ff0dbe43ca94751d248 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8h.html @@ -0,0 +1,123 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR3W.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r3_w_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR3W.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +<code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r3_w_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></td></tr> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r3_w_8h.html">LiquidCrystal_SR3W.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..15efb44d3aba44c66648052f2b231e6568ce4a00 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r3_w_8h_source.html @@ -0,0 +1,220 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR3W.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR3W.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Francisco Malpartida on 7.3.2012.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file LiquidCrystal_SR3W.h</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This file implements a basic liquid crystal library that comes as standard</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// in the Arduino SDK but using a generic SHIFT REGISTER extension board.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// This is a basic implementation of the LiquidCrystal library of the</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// Arduino SDK. The original library has been reworked in such a way that </span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// this class implements the all methods to command an LCD based</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// on the Hitachi HD44780 and compatible chipsets using a 3 wire latching</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// shift register. While it has been tested with a 74HC595N shift register</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// it should also work with other latching shift registers such as the MC14094</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// and the HEF4094</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// This particular driver has been created as generic as possible to enable</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// users to configure and connect their LCDs using just 3 digital IOs from the</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// AVR or Arduino, and connect the LCD to the outputs of the shiftregister</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// in any configuration. The library is configured by passing the IO pins</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// that control the strobe, data and clock of the shift register and a map</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// of how the shiftregister is connected to the LCD.</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// </span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">//</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// +--------------------------------------------+</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// | MCU |</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// | IO1 IO2 IO3 |</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// +----+-------------+-------------+-----------+</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// | | |</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// | | |</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// +----+-------------+-------------+-----------+</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// | Strobe Data Clock |</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// | 8-bit shift/latch register | 74HC595N</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// | Qa0 Qb1 Qc2 Qd3 Qe4 Qf5 Qg6 Qh7 |</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// +----+----+----+----+----+----+----+----+----+</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// | | | | | | | </span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// |11 |12 |13 |14 |6 |5 |4 (LCD pins)</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// +----+----+----+----+----+----+----+----+----+</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// | DB4 DB5 DB6 DB7 E Rw RS |</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// | LCD Module |</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">//</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// NOTE: Rw is not used by the driver so it can be connected to GND.</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">//</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// The functionality provided by this class and its base class is identical</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// to the original functionality of the Arduino LiquidCrystal library.</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">//</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">//</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#ifndef _LIQUIDCRYSTAL_SR3W_H_</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#define _LIQUIDCRYSTAL_SR3W_H_</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "LCD.h"</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include "FastIO.h"</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div> +<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="class_liquid_crystal___s_r3_w.html"> 66</a></span> <span class="keyword">class </span><a class="code" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a> </div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe);</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Constructor with backlight control</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe, </div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  uint8_t backlighPin, t_backlighPol pol); </div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe, </div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  uint8_t En, uint8_t Rw, uint8_t Rs, </div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7 );</div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// Constructor with backlight control</span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W</a>( uint8_t data, uint8_t clk, uint8_t strobe,</div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  uint8_t En, uint8_t Rw, uint8_t Rs, </div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,</div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  uint8_t backlighPin, t_backlighPol pol);</div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  </div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56">send</a>(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">setBacklightPin</a> ( uint8_t value, t_backlighPol pol );</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">setBacklight</a> ( uint8_t value );</div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  </div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">int</span> init(uint8_t data, uint8_t clk, uint8_t strobe, </div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  uint8_t Rs, uint8_t Rw, uint8_t En,</div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);</div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  </div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordtype">void</span> write4bits(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  </div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordtype">void</span> loadSR(uint8_t value);</div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  </div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  fio_bit _strobe; <span class="comment">// shift register strobe pin</span></div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  fio_register _strobe_reg; <span class="comment">// SR strobe pin MCU register</span></div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  fio_bit _data; <span class="comment">// shift register data pin</span></div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  fio_register _data_reg; <span class="comment">// SR data pin MCU register</span></div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  fio_bit _clk; <span class="comment">// shift register clock pin</span></div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  fio_register _clk_reg; <span class="comment">// SR clock pin MCU register</span></div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  uint8_t _En; <span class="comment">// LCD expander word for enable pin</span></div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  uint8_t _Rw; <span class="comment">// LCD expander word for R/W pin</span></div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  uint8_t _Rs; <span class="comment">// LCD expander word for Register Select pin</span></div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  uint8_t _data_pins[4]; <span class="comment">// LCD data lines</span></div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  uint8_t _backlightPinMask; <span class="comment">// Backlight IO pin mask</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  uint8_t _backlightStsMask; <span class="comment">// Backlight status mask</span></div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  </div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> };</div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div> +<div class="ttc" id="class_liquid_crystal___s_r3_w_html_a894d0ea8ea61c1d15acd8a26d417e477"><div class="ttname"><a href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">LiquidCrystal_SR3W::setBacklightPin</a></div><div class="ttdeci">void setBacklightPin(uint8_t value, t_backlighPol pol)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR3W.cpp:183</div></div> +<div class="ttc" id="class_liquid_crystal___s_r3_w_html"><div class="ttname"><a href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR3W.h:66</div></div> +<div class="ttc" id="class_liquid_crystal___s_r3_w_html_ae1396bcd5e9c5b7ed13182c166de776b"><div class="ttname"><a href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W::LiquidCrystal_SR3W</a></div><div class="ttdeci">LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR3W.cpp:133</div></div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_liquid_crystal___s_r3_w_html_a6d0fc7907ef9fd87c408a21b9bd49295"><div class="ttname"><a href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">LiquidCrystal_SR3W::setBacklight</a></div><div class="ttdeci">void setBacklight(uint8_t value)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR3W.cpp:191</div></div> +<div class="ttc" id="class_liquid_crystal___s_r3_w_html_ade34af5b7fe795482f1848c2176d6e56"><div class="ttname"><a href="class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56">LiquidCrystal_SR3W::send</a></div><div class="ttdeci">virtual void send(uint8_t value, uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR3W.cpp:162</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..b7f90b1af772de4767d8e8337fc9d6854da7b8f3 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8cpp.html @@ -0,0 +1,121 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <stdio.h></code><br/> +<code>#include <string.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include <WProgram.h></code><br/> +<code>#include "<a class="el" href="_liquid_crystal___s_r_8h_source.html">LiquidCrystal_SR.h</a>"</code><br/> +<code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +</table> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r_8cpp.html">LiquidCrystal_SR.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..bc429f0ba726d348f4b84af2e8fb60fa7e49b0e7 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8cpp_source.html @@ -0,0 +1,320 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r_8cpp.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR.cpp</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal___s_r_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// Thread Safe: No</span> +<a name="l00010"></a>00010 <span class="comment">// Extendable: Yes</span> +<a name="l00011"></a>00011 <span class="comment">//</span> +<a name="l00012"></a>00012 <span class="comment">// @file LiquidCrystal_SR.h</span> +<a name="l00013"></a>00013 <span class="comment">// Connects an LCD using 2 or 3 pins from the Arduino, via an 8-bit </span> +<a name="l00014"></a>00014 <span class="comment">// ShiftRegister (SR from now on).</span> +<a name="l00015"></a>00015 <span class="comment">// </span> +<a name="l00016"></a>00016 <span class="comment">// @brief </span> +<a name="l00017"></a>00017 <span class="comment">// This is a port of the ShiftRegLCD library from raron and ported to the</span> +<a name="l00018"></a>00018 <span class="comment">// LCD library.</span> +<a name="l00019"></a>00019 <span class="comment">//</span> +<a name="l00020"></a>00020 <span class="comment">// The functionality provided by this class and its base class is identical</span> +<a name="l00021"></a>00021 <span class="comment">// to the original functionality of the Arduino LiquidCrystal library and can</span> +<a name="l00022"></a>00022 <span class="comment">// be used as such.</span> +<a name="l00023"></a>00023 <span class="comment">//</span> +<a name="l00024"></a>00024 <span class="comment">// Modified to work serially with the shiftOut() function, an 8-bit</span> +<a name="l00025"></a>00025 <span class="comment">// unlatched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out)</span> +<a name="l00026"></a>00026 <span class="comment">// shift register (IE a very simple SR), and an LCD in 4-bit mode.</span> +<a name="l00027"></a>00027 <span class="comment">// Any such shift register should do (pref. 74LS family IC's for 2-wire).</span> +<a name="l00028"></a>00028 <span class="comment">// I used 74LS164, for the reason that's what I had at hand.</span> +<a name="l00029"></a>00029 <span class="comment">//</span> +<a name="l00030"></a>00030 <span class="comment">// Connection description:</span> +<a name="l00031"></a>00031 <span class="comment">//</span> +<a name="l00032"></a>00032 <span class="comment">// SR output:</span> +<a name="l00033"></a>00033 <span class="comment">// Bit #0 - N/C - not connected, used to hold a zero</span> +<a name="l00034"></a>00034 <span class="comment">// Bit #1 - N/C</span> +<a name="l00035"></a>00035 <span class="comment">// Bit #2 - connects to RS (Register Select) on the LCD</span> +<a name="l00036"></a>00036 <span class="comment">// Bits #3-6 - connects to LCD data inputs D4 - D7.</span> +<a name="l00037"></a>00037 <span class="comment">// Bit #7 - enables the LCD enable-puls (via the diode-resistor AND "gate")</span> +<a name="l00038"></a>00038 <span class="comment">//</span> +<a name="l00039"></a>00039 <span class="comment">// 2 or 3 Pins required from the Arduino for Data, Clock and (optional) Enable</span> +<a name="l00040"></a>00040 <span class="comment">// If not using Enable, the Data pin is used for the enable signal by defining</span> +<a name="l00041"></a>00041 <span class="comment">// the same pin for Enable as for Data. Data and Clock outputs/pins goes to</span> +<a name="l00042"></a>00042 <span class="comment">// the shiftregister.</span> +<a name="l00043"></a>00043 <span class="comment">// LCD RW-pin hardwired to LOW (only writing to LCD).</span> +<a name="l00044"></a>00044 <span class="comment">// Busy Flag (BF, data bit D7) is not read.</span> +<a name="l00045"></a>00045 <span class="comment">//</span> +<a name="l00046"></a>00046 <span class="comment">// Original project homepage: http://code.google.com/p/arduinoshiftreglcd/</span> +<a name="l00047"></a>00047 <span class="comment">//</span> +<a name="l00048"></a>00048 <span class="comment">//</span> +<a name="l00049"></a>00049 <span class="comment">// History</span> +<a name="l00050"></a>00050 <span class="comment">// 2012.03.29 bperrybap - Added delays for faster fio shiftout (it got too fast)</span> +<a name="l00051"></a>00051 <span class="comment">// AVR needed delay. cmd/write delays are based on CPU speed so it works on pic32.</span> +<a name="l00052"></a>00052 <span class="comment">// Added code to support indicating two wire mode by using enable=data pin</span> +<a name="l00053"></a>00053 <span class="comment">// (documentation indicated this as working)</span> +<a name="l00054"></a>00054 <span class="comment">// Fixed incorrect use of 5x10 for default font - now matches original LQ library.</span> +<a name="l00055"></a>00055 <span class="comment">// can now eliminate enable pin in constructor for two wire mode.</span> +<a name="l00056"></a>00056 <span class="comment">// 2012.01.16 Florian Fida - faster digitalWrite/shiftOut</span> +<a name="l00057"></a>00057 <span class="comment">// 2011.10.29 fmalpartida - adaption of the library to the LCD class hierarchy.</span> +<a name="l00058"></a>00058 <span class="comment">// 2011.07.02 Fixed a minor flaw in setCursor function. No functional change, </span> +<a name="l00059"></a>00059 <span class="comment">// just a bit more memory efficient.</span> +<a name="l00060"></a>00060 <span class="comment">// Thanks to CapnBry (from google code and github) who noticed it.</span> +<a name="l00061"></a>00061 <span class="comment">// URL to his version of shiftregLCD:</span> +<a name="l00062"></a>00062 <span class="comment">// https://github.com/CapnBry/HeaterMeter/commit/c6beba1b46b092ab0b33bcbd0a30a201fd1f28c1</span> +<a name="l00063"></a>00063 <span class="comment">// 2009.07.30 raron - minor corrections to the comments.</span> +<a name="l00064"></a>00064 <span class="comment">// Fixed timing to datasheet safe. Fixed keyword highlights.</span> +<a name="l00065"></a>00065 <span class="comment">// 2009.07.28 Mircho / raron - a new modification to the schematics, and a</span> +<a name="l00066"></a>00066 <span class="comment">// more streamlined interface</span> +<a name="l00067"></a>00067 <span class="comment">// 2009.07.27 Thanks to an excellent suggestion from mircho at the Arduino</span> +<a name="l00068"></a>00068 <span class="comment">// playgrond forum, the number of wires now required is only two!</span> +<a name="l00069"></a>00069 <span class="comment">// 2009.07.25 raron - Fixed comments. I really messed up the comments before </span> +<a name="l00070"></a>00070 <span class="comment">// posting this, so I had to fix it.</span> +<a name="l00071"></a>00071 <span class="comment">// Renamed a function, but no improvements or functional changes.</span> +<a name="l00072"></a>00072 <span class="comment">// 2009.07.23 Incorporated some proper initialization routines</span> +<a name="l00073"></a>00073 <span class="comment">// inspired (lets say copy-paste-tweaked) from LiquidCrystal</span> +<a name="l00074"></a>00074 <span class="comment">// library improvements from LadyAda.</span> +<a name="l00075"></a>00075 <span class="comment">// 2009.05.23 raron - first version, but based mostly (as in almost verbatim)</span> +<a name="l00076"></a>00076 <span class="comment">// on the "official" LiquidCrystal library.</span> +<a name="l00077"></a>00077 <span class="comment">//</span> +<a name="l00078"></a>00078 <span class="comment">//</span> +<a name="l00079"></a>00079 <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span> +<a name="l00080"></a>00080 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00081"></a>00081 <span class="preprocessor">#include <stdio.h></span> +<a name="l00082"></a>00082 <span class="preprocessor">#include <string.h></span> +<a name="l00083"></a>00083 <span class="preprocessor">#include <inttypes.h></span> +<a name="l00084"></a>00084 +<a name="l00085"></a>00085 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00086"></a>00086 <span class="preprocessor"></span><span class="preprocessor">#include <WProgram.h></span> +<a name="l00087"></a>00087 <span class="preprocessor">#else</span> +<a name="l00088"></a>00088 <span class="preprocessor"></span><span class="preprocessor">#include <Arduino.h></span> +<a name="l00089"></a>00089 <span class="preprocessor">#endif</span> +<a name="l00090"></a>00090 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="_liquid_crystal___s_r_8h.html">LiquidCrystal_SR.h</a>"</span> +<a name="l00091"></a>00091 +<a name="l00092"></a>00092 <span class="preprocessor">#include "<a class="code" href="_fast_i_o_8h.html">FastIO.h</a>"</span> +<a name="l00093"></a>00093 +<a name="l00094"></a>00094 +<a name="l00095"></a>00095 <span class="comment">// CONSTRUCTORS</span> +<a name="l00096"></a>00096 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00097"></a>00097 <span class="comment">// Assuming 1 line 8 pixel high font</span> +<a name="l00098"></a><a class="code" href="class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc">00098</a> <a class="code" href="class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc">LiquidCrystal_SR::LiquidCrystal_SR</a> (uint8_t srdata, uint8_t srclock, +<a name="l00099"></a>00099 uint8_t enable ) +<a name="l00100"></a>00100 { +<a name="l00101"></a>00101 init ( srdata, srclock, enable, 1, 0 ); +<a name="l00102"></a>00102 } +<a name="l00103"></a>00103 +<a name="l00104"></a>00104 +<a name="l00105"></a>00105 <span class="comment">// PRIVATE METHODS</span> +<a name="l00106"></a>00106 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00107"></a>00107 +<a name="l00108"></a>00108 <span class="comment">//</span> +<a name="l00109"></a>00109 <span class="comment">// init</span> +<a name="l00110"></a>00110 <span class="keywordtype">void</span> LiquidCrystal_SR::init(uint8_t srdata, uint8_t srclock, uint8_t enable, +<a name="l00111"></a>00111 uint8_t lines, uint8_t font) +<a name="l00112"></a>00112 { +<a name="l00113"></a>00113 <span class="comment">// Initialise private variables</span> +<a name="l00114"></a>00114 _two_wire = 0; +<a name="l00115"></a>00115 +<a name="l00116"></a>00116 _srDataRegister = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(srdata); +<a name="l00117"></a>00117 _srDataBit = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(srdata); +<a name="l00118"></a>00118 _srClockRegister = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(srclock); +<a name="l00119"></a>00119 _srClockBit = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(srclock); +<a name="l00120"></a>00120 +<a name="l00121"></a>00121 <span class="keywordflow">if</span> ((enable == <a class="code" href="_liquid_crystal___s_r_8h.html#a40fb1f76bc5f8ca9e6534b47bd6da27c">TWO_WIRE</a>) || (enable == srdata)) +<a name="l00122"></a>00122 { +<a name="l00123"></a>00123 _two_wire = 1; +<a name="l00124"></a>00124 _srEnableRegister = _srDataRegister; +<a name="l00125"></a>00125 _srEnableBit = _srDataBit; +<a name="l00126"></a>00126 } +<a name="l00127"></a>00127 <span class="keywordflow">else</span> +<a name="l00128"></a>00128 { +<a name="l00129"></a>00129 _srEnableRegister = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(enable); +<a name="l00130"></a>00130 _srEnableBit = <a class="code" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">fio_pinToBit</a>(enable); +<a name="l00131"></a>00131 } +<a name="l00132"></a>00132 +<a name="l00133"></a>00133 <span class="comment">// Configure control pins as outputs</span> +<a name="l00134"></a>00134 <span class="comment">// ------------------------------------------------------------------------</span> +<a name="l00135"></a>00135 +<a name="l00136"></a>00136 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> = <a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD_4BITMODE</a> | <a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a> | <a class="code" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD_5x8DOTS</a>; +<a name="l00137"></a>00137 } +<a name="l00138"></a>00138 +<a name="l00139"></a>00139 <span class="comment">//</span> +<a name="l00140"></a>00140 <span class="comment">// shiftIt</span> +<a name="l00141"></a>00141 <span class="keywordtype">void</span> LiquidCrystal_SR::shiftIt(uint8_t val) +<a name="l00142"></a>00142 { +<a name="l00143"></a>00143 <span class="keywordflow">if</span> (_two_wire) +<a name="l00144"></a>00144 { +<a name="l00145"></a>00145 <span class="comment">// Clear to get Enable LOW</span> +<a name="l00146"></a>00146 <a class="code" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a>(_srDataRegister, _srDataBit, _srClockRegister, _srClockBit); +<a name="l00147"></a>00147 } +<a name="l00148"></a>00148 <a class="code" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a>(_srDataRegister, _srDataBit, _srClockRegister, _srClockBit, val, MSBFIRST); +<a name="l00149"></a>00149 +<a name="l00150"></a>00150 <span class="comment">// LCD ENABLE PULSE</span> +<a name="l00151"></a>00151 <span class="comment">//</span> +<a name="l00152"></a>00152 <span class="comment">// While this library is written with a shift register without an output</span> +<a name="l00153"></a>00153 <span class="comment">// latch in mind, it can work in 3-wire mode with a shiftregister with a</span> +<a name="l00154"></a>00154 <span class="comment">// latch. The shiftregister latch pin (STR, RCL or similar) is then</span> +<a name="l00155"></a>00155 <span class="comment">// connected to the LCD enable pin. The LCD is (very likely) slower</span> +<a name="l00156"></a>00156 <span class="comment">// to read the Enable pulse, and then reads the new contents of the SR.</span> +<a name="l00157"></a>00157 <a class="code" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00158"></a>00158 { +<a name="l00159"></a>00159 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(_srEnableRegister, _srEnableBit); +<a name="l00160"></a>00160 delayMicroseconds (1); <span class="comment">// enable pulse must be >450ns </span> +<a name="l00161"></a>00161 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(_srEnableRegister, _srEnableBit, LOW); +<a name="l00162"></a>00162 } <span class="comment">// end critical section</span> +<a name="l00163"></a>00163 } +<a name="l00164"></a>00164 +<a name="l00165"></a>00165 <span class="comment">// PUBLIC METHODS</span> +<a name="l00166"></a>00166 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00167"></a>00167 +<a name="l00168"></a>00168 +<a name="l00169"></a>00169 <span class="comment">/************ low level data pushing commands **********/</span> +<a name="l00170"></a>00170 <span class="comment">//</span> +<a name="l00171"></a>00171 <span class="comment">// send</span> +<a name="l00172"></a><a class="code" href="class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47">00172</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47">LiquidCrystal_SR::send</a>(uint8_t value, uint8_t mode) +<a name="l00173"></a>00173 { +<a name="l00174"></a>00174 <span class="comment">// Divide byte in two nibbles include the RS signal</span> +<a name="l00175"></a>00175 <span class="comment">// and format it for shiftregister output wiring to the LCD</span> +<a name="l00176"></a>00176 <span class="comment">// We are only interested in my COMMAND or DATA for myMode</span> +<a name="l00177"></a>00177 uint8_t myMode = ( mode == <a class="code" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">DATA</a> ) ? <a class="code" href="_liquid_crystal___s_r_8h.html#afdaa2bbb2cc185700864ac8d7a570ced">SR_RS_BIT</a> : 0; <span class="comment">// RS bit; LOW: command. HIGH: character.</span> +<a name="l00178"></a>00178 +<a name="l00179"></a>00179 <span class="keywordflow">if</span> ( mode != <a class="code" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">FOUR_BITS</a> ) +<a name="l00180"></a>00180 { +<a name="l00181"></a>00181 shiftIt(myMode | <a class="code" href="_liquid_crystal___s_r_8h.html#a0075b041d82abb47f279dce482e7b087">SR_EN_BIT</a> | ((value >> 1) & 0x78)); <span class="comment">// upper nibble</span> +<a name="l00182"></a>00182 } +<a name="l00183"></a>00183 +<a name="l00184"></a>00184 shiftIt(myMode | <a class="code" href="_liquid_crystal___s_r_8h.html#a0075b041d82abb47f279dce482e7b087">SR_EN_BIT</a> | ((value << 3) & 0x78)); <span class="comment">// lower nibble</span> +<a name="l00185"></a>00185 <span class="comment">/*</span> +<a name="l00186"></a>00186 <span class="comment"> * Add some delay since this code is so fast it needs some added delay</span> +<a name="l00187"></a>00187 <span class="comment"> * even on AVRs because the shiftout is shorter than the LCD command execution time.</span> +<a name="l00188"></a>00188 <span class="comment"> */</span> +<a name="l00189"></a>00189 <span class="preprocessor">#if (F_CPU <= 16000000)</span> +<a name="l00190"></a>00190 <span class="preprocessor"></span> <span class="keywordflow">if</span>(_two_wire) +<a name="l00191"></a>00191 delayMicroseconds ( 10 ); +<a name="l00192"></a>00192 <span class="keywordflow">else</span> +<a name="l00193"></a>00193 delayMicroseconds ( 17 ); <span class="comment">// 3 wire mode is faster so it must delay longer</span> +<a name="l00194"></a>00194 <span class="preprocessor">#else</span> +<a name="l00195"></a>00195 <span class="preprocessor"></span> delayMicroseconds ( 37 ); <span class="comment">// commands & data writes need > 37us to complete</span> +<a name="l00196"></a>00196 <span class="preprocessor">#endif</span> +<a name="l00197"></a>00197 <span class="preprocessor"></span> +<a name="l00198"></a>00198 } +<a name="l00199"></a>00199 +<a name="l00200"></a>00200 <span class="comment">//</span> +<a name="l00201"></a>00201 <span class="comment">// setBacklightPin</span> +<a name="l00202"></a><a class="code" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">00202</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">LiquidCrystal_SR::setBacklightPin</a> ( uint8_t pin, <a class="code" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">t_backlighPol</a> pol ) +<a name="l00203"></a>00203 { } +<a name="l00204"></a>00204 +<a name="l00205"></a>00205 <span class="comment">//</span> +<a name="l00206"></a>00206 <span class="comment">// setBacklight</span> +<a name="l00207"></a><a class="code" href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">00207</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">LiquidCrystal_SR::setBacklight</a> ( uint8_t mode ) +<a name="l00208"></a>00208 { } +<a name="l00209"></a>00209 +</pre></div></div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r_8cpp.html">LiquidCrystal_SR.cpp</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8h.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..39687a2274f02c5c9f8ddf14f2464e77d4357d23 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8h.html @@ -0,0 +1,175 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('_liquid_crystal___s_r_8h.html',''); +</script> +<div id="doc-content"> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#define-members">Defines</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +<code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a></td></tr> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r_8h.html#a0075b041d82abb47f279dce482e7b087">SR_EN_BIT</a>   0x80</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r_8h.html#afdaa2bbb2cc185700864ac8d7a570ced">SR_RS_BIT</a>   0x04</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r_8h.html#a40fb1f76bc5f8ca9e6534b47bd6da27c">TWO_WIRE</a>   204</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a0075b041d82abb47f279dce482e7b087"></a><!-- doxytag: member="LiquidCrystal_SR.h::SR_EN_BIT" ref="a0075b041d82abb47f279dce482e7b087" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR_EN_BIT   0x80</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r_8h_source.html#l00092">92</a> of file <a class="el" href="_liquid_crystal___s_r_8h_source.html">LiquidCrystal_SR.h</a>.</p> + +</div> +</div> +<a class="anchor" id="afdaa2bbb2cc185700864ac8d7a570ced"></a><!-- doxytag: member="LiquidCrystal_SR.h::SR_RS_BIT" ref="afdaa2bbb2cc185700864ac8d7a570ced" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR_RS_BIT   0x04</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r_8h_source.html#l00091">91</a> of file <a class="el" href="_liquid_crystal___s_r_8h_source.html">LiquidCrystal_SR.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a40fb1f76bc5f8ca9e6534b47bd6da27c"></a><!-- doxytag: member="LiquidCrystal_SR.h::TWO_WIRE" ref="a40fb1f76bc5f8ca9e6534b47bd6da27c" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define TWO_WIRE   204</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r_8h_source.html#l00090">90</a> of file <a class="el" href="_liquid_crystal___s_r_8h_source.html">LiquidCrystal_SR.h</a>.</p> + +</div> +</div> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="navelem"><a class="el" href="_liquid_crystal___s_r_8h.html">LiquidCrystal_SR.h</a> </li> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..4897ad2172609aa3c6df3ec9fad59c5ee80a8cd9 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r_8h_source.html @@ -0,0 +1,229 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file LiquidCrystal_SR.h</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// Connects an LCD using 2 or 3 pins from the Arduino, via an 8-bit </span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// ShiftRegister (SR from now on).</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// This is a port of the ShiftRegLCD library from raron and ported to the</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// LCD library.</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">//</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// The functionality provided by this class and its base class is identical</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// to the original functionality of the Arduino LiquidCrystal library and can</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// be used as such.</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">//</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Modified to work serially with the shiftOut() function, an 8-bit</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// unlatched, no-tristate, unidirectional SIPO (Serial-In-Parallel-Out)</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// shift register (IE a very simple SR), and an LCD in 4-bit mode.</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// Any such shift register should do (pref. 74LS family IC's for 2-wire).</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// I used 74LS164, for the reason that's what I had at hand.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">//</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Connection description:</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// SR output:</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// Bit #0 - N/C - not connected, used to hold a zero</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// Bit #1 - N/C</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Bit #2 - connects to RS (Register Select) on the LCD</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// Bits #3-6 - connects to LCD data inputs D4 - D7.</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// Bit #7 - enables the LCD enable-puls (via the diode-resistor AND "gate")</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// 2 or 3 Pins required from the Arduino for Data, Clock and (optional) Enable</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// If not using Enable, the Data pin will be used for the enable signal.</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// 2 wire mode can be indicated by:</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// - ommitting the enable pin in constructor</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// - defining the same pin for Enable as for Data in constructor</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// - by using the token TWO_WIRE for the enable pin.</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">//</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Data and Clock outputs/pins goes to the shiftregister.</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// LCD RW-pin hardwired to LOW (only writing to LCD).</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// Busy Flag (BF, data bit D7) is not read.</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">//</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Original project homepage: http://code.google.com/p/arduinoshiftreglcd/</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">//</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">//</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// History</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// 2012.03.29 bperrybap - can now eliminate enable pin in constructor for two wire mode.</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// 2011.10.29 fmalpartida - adaption of the library to the LCD class hierarchy.</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// 2011.07.02 Fixed a minor flaw in setCursor function. No functional change, </span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// just a bit more memory efficient.</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// Thanks to CapnBry (from google code and github) who noticed it.</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// URL to his version of shiftregLCD:</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// https://github.com/CapnBry/HeaterMeter/commit/c6beba1b46b092ab0b33bcbd0a30a201fd1f28c1</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// 2009.07.30 raron - minor corrections to the comments.</span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Fixed timing to datasheet safe. Fixed keyword highlights.</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// 2009.07.28 Mircho / raron - a new modification to the schematics, and a</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// more streamlined interface</span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// 2009.07.27 Thanks to an excellent suggestion from mircho at the Arduiono </span></div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// playgrond forum, the number of wires now required is only two!</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// 2009.07.25 raron - Fixed comments. I really messed up the comments before </span></div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// posting this, so I had to fix it.</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// Renamed a function, but no improvements or functional changes.</span></div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// 2009.07.23 Incorporated some proper initialization routines</span></div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// inspired (lets say copy-paste-tweaked) from LiquidCrystal</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// library improvements from LadyAda.</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// 2009.05.23 raron - first version, but based mostly (as in almost verbatim)</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// on the "official" LiquidCrystal library.</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">//</span></div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">//</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">//</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#ifndef _LIQUIDCRYSTAL_SR_</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#define _LIQUIDCRYSTAL_SR_</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#include "LCD.h"</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor">#include "FastIO.h"</span></div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// two-wire indicator constant</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#define TWO_WIRE 204</span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor">#define SR_RS_BIT 0x04</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor">#define SR_EN_BIT 0x80</span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div> +<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="class_liquid_crystal___s_r.html"> 94</a></span> <span class="keyword">class </span><a class="code" href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc">LiquidCrystal_SR</a> ( uint8_t srdata, uint8_t srclock, uint8_t enable=TWO_WIRE );</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47">send</a>(uint8_t value, uint8_t mode);</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">setBacklightPin</a> ( uint8_t pin, t_backlighPol pol );</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">setBacklight</a> ( uint8_t mode );</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordtype">void</span> init ( uint8_t srdata, uint8_t srclock, uint8_t enable, uint8_t lines, </div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  uint8_t font );</div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">void</span> shiftIt (uint8_t val);</div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  </div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  uint8_t _enable_pin; <span class="comment">// Enable Pin</span></div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  uint8_t _two_wire; <span class="comment">// two wire mode</span></div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  </div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  fio_register _srDataRegister; <span class="comment">// Serial Data pin</span></div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  fio_bit _srDataBit;</div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  fio_register _srClockRegister; <span class="comment">// Clock Pin</span></div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  fio_bit _srClockBit;</div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  fio_register _srEnableRegister; <span class="comment">// Enable Pin</span></div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  fio_bit _srEnableBit;</div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> };</div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div> +<div class="ttc" id="class_l_c_d_html"><div class="ttname"><a href="class_l_c_d.html">LCD</a></div><div class="ttdef"><b>Definition:</b> LCD.h:187</div></div> +<div class="ttc" id="class_liquid_crystal___s_r_html_ac3fe0b48f8d4c1c941d82d1333495cfc"><div class="ttname"><a href="class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc">LiquidCrystal_SR::LiquidCrystal_SR</a></div><div class="ttdeci">LiquidCrystal_SR(uint8_t srdata, uint8_t srclock, uint8_t enable=TWO_WIRE)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR.cpp:98</div></div> +<div class="ttc" id="class_liquid_crystal___s_r_html_ad9f3e3f36257984c23fb508973e14535"><div class="ttname"><a href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">LiquidCrystal_SR::setBacklight</a></div><div class="ttdeci">void setBacklight(uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR.cpp:207</div></div> +<div class="ttc" id="class_liquid_crystal___s_r_html_a03821351a32db07cb7e42c8c11ce8d47"><div class="ttname"><a href="class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47">LiquidCrystal_SR::send</a></div><div class="ttdeci">virtual void send(uint8_t value, uint8_t mode)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR.cpp:172</div></div> +<div class="ttc" id="class_liquid_crystal___s_r_html"><div class="ttname"><a href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a></div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR.h:94</div></div> +<div class="ttc" id="class_liquid_crystal___s_r_html_a5bfc0dcc1f042bcb59992493a3a7231d"><div class="ttname"><a href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">LiquidCrystal_SR::setBacklightPin</a></div><div class="ttdeci">void setBacklightPin(uint8_t pin, t_backlighPol pol)</div><div class="ttdef"><b>Definition:</b> LiquidCrystal_SR.cpp:202</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp.html new file mode 100644 index 0000000000000000000000000000000000000000..80498525c5390d732752866a72e90f078d3e9e30 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp.html @@ -0,0 +1,147 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: /Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR_LCD3.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.2.1</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#define-members">Defines</a> </div> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR_LCD3.cpp File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <stdio.h></code><br/> +<code>#include <string.h></code><br/> +<code>#include <inttypes.h></code><br/> +<code>#include <WProgram.h></code><br/> +<code>#include "<a class="el" href="_fast_i_o_8h_source.html">FastIO.h</a>"</code><br/> +<code>#include "<a class="el" href="_liquid_crystal___s_r___l_c_d3_8h_source.html">LiquidCrystal_SR_LCD3.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#a0075b041d82abb47f279dce482e7b087">SR_EN_BIT</a>   B00010000</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#afdaa2bbb2cc185700864ac8d7a570ced">SR_RS_BIT</a>   B01000000</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#ae0e1fe92420ef667b9830efeb059c853">SR_RW_BIT</a>   B00100000</td></tr> +</table> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="a0075b041d82abb47f279dce482e7b087"></a><!-- doxytag: member="LiquidCrystal_SR_LCD3.cpp::SR_EN_BIT" ref="a0075b041d82abb47f279dce482e7b087" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR_EN_BIT   B00010000</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html#l00167">167</a> of file <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html">LiquidCrystal_SR_LCD3.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="afdaa2bbb2cc185700864ac8d7a570ced"></a><!-- doxytag: member="LiquidCrystal_SR_LCD3.cpp::SR_RS_BIT" ref="afdaa2bbb2cc185700864ac8d7a570ced" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR_RS_BIT   B01000000</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html#l00169">169</a> of file <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html">LiquidCrystal_SR_LCD3.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ae0e1fe92420ef667b9830efeb059c853"></a><!-- doxytag: member="LiquidCrystal_SR_LCD3.cpp::SR_RW_BIT" ref="ae0e1fe92420ef667b9830efeb059c853" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SR_RW_BIT   B00100000</td> + </tr> + </table> +</div> +<div class="memdoc"> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html#l00168">168</a> of file <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html">LiquidCrystal_SR_LCD3.cpp</a>.</p> + +</div> +</div> +</div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<hr class="footer"/><address class="footer"><small>Generated on Sun Mar 4 2012 21:17:07 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp_source.html new file mode 100644 index 0000000000000000000000000000000000000000..310997e7859e6e0cc997a18b3b418fc93c081918 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8cpp_source.html @@ -0,0 +1,295 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: /Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR_LCD3.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.2.1</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR_LCD3.cpp</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal___s_r___l_c_d3_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Originally Created by Francisco Malpartida on 2011/08/20.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This software is furnished "as is", without technical support, and with no </span> +<a name="l00007"></a>00007 <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span> +<a name="l00008"></a>00008 <span class="comment">//</span> +<a name="l00009"></a>00009 <span class="comment">// 2012/01/21 - Marc MERLIN</span> +<a name="l00010"></a>00010 <span class="comment">// This library, LiquidCrystal_SR_LCD3, was forked off LiquidCrystal_SR which</span> +<a name="l00011"></a>00011 <span class="comment">// used a different wiring than the Pebble and Pebblev2 (just released by</span> +<a name="l00012"></a>00012 <span class="comment">// freetronics in the arduino miniconf as part of linux.conf.au 2012) and</span> +<a name="l00013"></a>00013 <span class="comment">// therefore this code organizes the output data differently.</span> +<a name="l00014"></a>00014 <span class="comment">//</span> +<a name="l00015"></a>00015 <span class="comment">// Upstream source for this module is</span> +<a name="l00016"></a>00016 <span class="comment">// https://github.com/marcmerlin/NewLiquidCrystal</span> +<a name="l00017"></a>00017 <span class="comment">//</span> +<a name="l00018"></a>00018 <span class="comment">// Thread Safe: No</span> +<a name="l00019"></a>00019 <span class="comment">// Extendable: Yes</span> +<a name="l00020"></a>00020 <span class="comment">//</span> +<a name="l00021"></a>00021 <span class="comment">// @file LiquidCrystal_SR_LCD3.h</span> +<a name="l00022"></a>00022 <span class="comment">//</span> +<a name="l00023"></a>00023 <span class="comment">// Connects an LCD using 3 pins from the Arduino, via an 8-bit </span> +<a name="l00024"></a>00024 <span class="comment">// ShiftRegister (SR from now on).</span> +<a name="l00025"></a>00025 <span class="comment">// The original port source for this module is https://github.com/marcmerlin/NewLiquidCrystal</span> +<a name="l00026"></a>00026 <span class="comment">// The 'FastIO' merge has madethis code 4 times faster.</span> +<a name="l00027"></a>00027 <span class="comment">// </span> +<a name="l00028"></a>00028 <span class="comment">// @brief </span> +<a name="l00029"></a>00029 <span class="comment">// This is a port of the ShiftRegLCD library from raron and ported to the</span> +<a name="l00030"></a>00030 <span class="comment">// LCD library.</span> +<a name="l00031"></a>00031 <span class="comment">//</span> +<a name="l00032"></a>00032 <span class="comment">// The functionality provided by this class and its base class is identical</span> +<a name="l00033"></a>00033 <span class="comment">// to the original functionality of the Arduino LiquidCrystal library and can</span> +<a name="l00034"></a>00034 <span class="comment">// be used as such.</span> +<a name="l00035"></a>00035 <span class="comment">//</span> +<a name="l00036"></a>00036 <span class="comment">// Pinout for this code is used by derivatives of the original LCD3Wire page:</span> +<a name="l00037"></a>00037 <span class="comment">// http://www.arduino.cc/playground/Code/LCD3wires</span> +<a name="l00038"></a>00038 <span class="comment">//</span> +<a name="l00039"></a>00039 <span class="comment">// This includes the LCA (linux.conf.au) Arduino Miniconf Pebble: </span> +<a name="l00040"></a>00040 <span class="comment">// http://shieldlist.org/luke-weston/pebble</span> +<a name="l00041"></a>00041 <span class="comment">// https://github.com/lukeweston/Pebble</span> +<a name="l00042"></a>00042 <span class="comment">//</span> +<a name="l00043"></a>00043 <span class="comment">// It also includes the Pebble v2:</span> +<a name="l00044"></a>00044 <span class="comment">// http://www.arduinominiconf.org/index.php/Pebble_V2.0_Instructions</span> +<a name="l00045"></a>00045 <span class="comment">// http://www.freetronics.com/pages/pebble-v2</span> +<a name="l00046"></a>00046 <span class="comment">// https://github.com/lukeweston/pebble20/blob/master/README.md</span> +<a name="l00047"></a>00047 <span class="comment">// https://github.com/lukeweston/pebble20/blob/master/pebble-sch.pdf</span> +<a name="l00048"></a>00048 <span class="comment">//</span> +<a name="l00049"></a>00049 <span class="comment">// Shiftregister connection description:</span> +<a name="l00050"></a>00050 <span class="comment">// MC14094 input: Arduino digital pin 2=Clock, pin 3=Data, pin 4=Strobe</span> +<a name="l00051"></a>00051 <span class="comment">// MC14094 output: Q8=DB4, Q7=DB5, Q6=DB6, Q5=DB7, Q4=E, Q3=RW, Q2=RS, Q1=None</span> +<a name="l00052"></a>00052 <span class="comment">//</span> +<a name="l00053"></a>00053 <span class="comment">// +--------------------------------------------+</span> +<a name="l00054"></a>00054 <span class="comment">// | Arduino (ATMega 168 or 328) |</span> +<a name="l00055"></a>00055 <span class="comment">// | D02 D03 D04 |</span> +<a name="l00056"></a>00056 <span class="comment">// +----+-------------+-------------+-----------+</span> +<a name="l00057"></a>00057 <span class="comment">// |4 |5 |6</span> +<a name="l00058"></a>00058 <span class="comment">// |1 |2 |3</span> +<a name="l00059"></a>00059 <span class="comment">// +----+-------------+-------------+-----------+</span> +<a name="l00060"></a>00060 <span class="comment">// | Strobe Data Clock |</span> +<a name="l00061"></a>00061 <span class="comment">// | MC14094 8-bit shift/latch register |</span> +<a name="l00062"></a>00062 <span class="comment">// | Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 |</span> +<a name="l00063"></a>00063 <span class="comment">// +----+----+----+----+----+----+----+----+----+</span> +<a name="l00064"></a>00064 <span class="comment">// |11 |12 |13 |14 |7 |6 |5 |4</span> +<a name="l00065"></a>00065 <span class="comment">// |11 |12 |13 |14 |6 |5 |4</span> +<a name="l00066"></a>00066 <span class="comment">// +----+----+----+----+----+----+----+---------+</span> +<a name="l00067"></a>00067 <span class="comment">// | DB4 DB5 DB6 DB7 E RW RS |</span> +<a name="l00068"></a>00068 <span class="comment">// | LCD KS0066 |</span> +<a name="l00069"></a>00069 <span class="comment">// +--------------------------------------------+</span> +<a name="l00070"></a>00070 <span class="comment">//</span> +<a name="l00071"></a>00071 <span class="comment">// 3 Pins required from the Arduino for Data, Clock, and Enable/Strobe.</span> +<a name="l00072"></a>00072 <span class="comment">//</span> +<a name="l00073"></a>00073 <span class="comment">// This code was inspired from LiquidCrystal_SR from</span> +<a name="l00074"></a>00074 <span class="comment">// http://code.google.com/p/arduinoshiftreglcd/</span> +<a name="l00075"></a>00075 <span class="comment">// but was written for implementing LiquidCrystal support for the Pebble</span> +<a name="l00076"></a>00076 <span class="comment">// and Pebblev2 (see below).</span> +<a name="l00077"></a>00077 <span class="comment">// The Pebbles's LCD and shift register wiring were inspired from this</span> +<a name="l00078"></a>00078 <span class="comment">// original page:</span> +<a name="l00079"></a>00079 <span class="comment">// http://www.arduino.cc/playground/Code/LCD3wires</span> +<a name="l00080"></a>00080 <span class="comment">// </span> +<a name="l00081"></a>00081 <span class="comment">// Pebbles and the LCD3Wires design are compatible hardware-wise, but</span> +<a name="l00082"></a>00082 <span class="comment">// the LCD3Wire code does not work with arduino 1.0 anymore and is generally</span> +<a name="l00083"></a>00083 <span class="comment">// quite limited in functionality compared to this framework that provides the</span> +<a name="l00084"></a>00084 <span class="comment">// entire LiquidDisplay functionality.</span> +<a name="l00085"></a>00085 <span class="comment">// Why not just use the LiquidCrystal_SR pinout?</span> +<a name="l00086"></a>00086 <span class="comment">// - LCD3Wire was first and therefore have hardware that was designed with </span> +<a name="l00087"></a>00087 <span class="comment">// incompatible (IMO better if you don't mind 3 wires) pinout.</span> +<a name="l00088"></a>00088 <span class="comment">// - The pinout used here is same saner (the 4 bits for the LCD are all in one </span> +<a name="l00089"></a>00089 <span class="comment">// nibble of the shift register, not spread across 2 like in the</span> +<a name="l00090"></a>00090 <span class="comment">// LiquidCrystal_SR pinout)</span> +<a name="l00091"></a>00091 <span class="comment">//</span> +<a name="l00092"></a>00092 <span class="comment">// Note however that LiquidCrystal_SR while a bit more complex wiring and code</span> +<a name="l00093"></a>00093 <span class="comment">// wise, supports non latching shift registers and it a few percent faster than</span> +<a name="l00094"></a>00094 <span class="comment">// this code since it can address the LCD enable pin without having to send </span> +<a name="l00095"></a>00095 <span class="comment">// a pulse through the shift register like the LCD3Wires setup requires.</span> +<a name="l00096"></a>00096 <span class="comment">// </span> +<a name="l00097"></a>00097 <span class="comment">// This code makes sure to properly follow the specifications when talking</span> +<a name="l00098"></a>00098 <span class="comment">// to the LCD while using minimal delays (it's faster than the LCD3wire and aiko</span> +<a name="l00099"></a>00099 <span class="comment">// pebble code).</span> +<a name="l00100"></a>00100 <span class="comment">//</span> +<a name="l00101"></a>00101 <span class="comment">// @author Marc MERLIN - marc_soft<at>merlins.org.</span> +<a name="l00102"></a>00102 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00103"></a>00103 <span class="preprocessor">#include <stdio.h></span> +<a name="l00104"></a>00104 <span class="preprocessor">#include <string.h></span> +<a name="l00105"></a>00105 <span class="preprocessor">#include <inttypes.h></span> +<a name="l00106"></a>00106 +<a name="l00107"></a>00107 <span class="preprocessor">#if (ARDUINO < 100)</span> +<a name="l00108"></a>00108 <span class="preprocessor"></span><span class="preprocessor">#include <WProgram.h></span> +<a name="l00109"></a>00109 <span class="preprocessor">#else</span> +<a name="l00110"></a>00110 <span class="preprocessor"></span><span class="preprocessor">#include <Arduino.h></span> +<a name="l00111"></a>00111 <span class="preprocessor">#endif</span> +<a name="l00112"></a>00112 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="_fast_i_o_8h.html">FastIO.h</a>"</span> +<a name="l00113"></a>00113 <span class="preprocessor">#include "<a class="code" href="_liquid_crystal___s_r___l_c_d3_8h.html">LiquidCrystal_SR_LCD3.h</a>"</span> +<a name="l00114"></a>00114 +<a name="l00115"></a>00115 +<a name="l00116"></a>00116 <span class="comment">// STATIC helper functions</span> +<a name="l00117"></a>00117 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00118"></a>00118 +<a name="l00119"></a>00119 +<a name="l00120"></a>00120 <span class="comment">// CONSTRUCTORS</span> +<a name="l00121"></a>00121 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00122"></a>00122 <span class="comment">// Assuming 1 line 8 pixel high font</span> +<a name="l00123"></a><a class="code" href="class_liquid_crystal___s_r___l_c_d3.html#a2cd0629853dd8a5569799fa998f3d29f">00123</a> <a class="code" href="class_liquid_crystal___s_r___l_c_d3.html#a2cd0629853dd8a5569799fa998f3d29f">LiquidCrystal_SR_LCD3::LiquidCrystal_SR_LCD3</a> ( uint8_t srdata, uint8_t srclock, +<a name="l00124"></a>00124 uint8_t strobe ) +<a name="l00125"></a>00125 { +<a name="l00126"></a>00126 init ( srdata, srclock, strobe, 1, 0 ); +<a name="l00127"></a>00127 } +<a name="l00128"></a>00128 +<a name="l00129"></a>00129 +<a name="l00130"></a>00130 <span class="comment">// PRIVATE METHODS</span> +<a name="l00131"></a>00131 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00132"></a>00132 +<a name="l00133"></a>00133 <span class="comment">//</span> +<a name="l00134"></a>00134 <span class="comment">// init</span> +<a name="l00135"></a>00135 <span class="keywordtype">void</span> LiquidCrystal_SR_LCD3::init( uint8_t srdata, uint8_t srclock, uint8_t strobe, +<a name="l00136"></a>00136 uint8_t lines, uint8_t font ) +<a name="l00137"></a>00137 { +<a name="l00138"></a>00138 <span class="comment">// Initialise private variables</span> +<a name="l00139"></a>00139 <span class="comment">// translate all pins to bits and registers</span> +<a name="l00140"></a>00140 <span class="comment">// pinMode to OUTPUT, Output LOW</span> +<a name="l00141"></a>00141 +<a name="l00142"></a>00142 _srdata_bit = <a class="code" href="_fast_i_o_8cpp.html#abe64155b836ffa8a137eb17d17995f84">fio_pinToBit</a>(srdata); +<a name="l00143"></a>00143 _srdata_register = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(srdata); +<a name="l00144"></a>00144 _srclock_bit = <a class="code" href="_fast_i_o_8cpp.html#abe64155b836ffa8a137eb17d17995f84">fio_pinToBit</a>(srclock); +<a name="l00145"></a>00145 _srclock_register = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(srclock); +<a name="l00146"></a>00146 _strobe_bit = <a class="code" href="_fast_i_o_8cpp.html#abe64155b836ffa8a137eb17d17995f84">fio_pinToBit</a>(strobe); +<a name="l00147"></a>00147 _strobe_register = <a class="code" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">fio_pinToOutputRegister</a>(strobe); +<a name="l00148"></a>00148 +<a name="l00149"></a>00149 <span class="comment">// Little trick to force a pulse of the LCD enable bit and make sure it is</span> +<a name="l00150"></a>00150 <span class="comment">// low before we start further writes since this is assumed.</span> +<a name="l00151"></a>00151 +<a name="l00152"></a>00152 write4bits(0); +<a name="l00153"></a>00153 +<a name="l00154"></a>00154 <a class="code" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a> = <a class="code" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD_4BITMODE</a> | <a class="code" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD_1LINE</a> | <a class="code" href="_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42">LCD_5x10DOTS</a>; +<a name="l00155"></a>00155 } +<a name="l00156"></a>00156 +<a name="l00157"></a>00157 <span class="comment">// PUBLIC METHODS</span> +<a name="l00158"></a>00158 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00159"></a>00159 +<a name="l00160"></a>00160 +<a name="l00161"></a>00161 <span class="comment">/************ low level data pushing commands **********/</span> +<a name="l00162"></a>00162 +<a name="l00163"></a>00163 <span class="comment">// Code below was borrowed from LCD3Wire from</span> +<a name="l00164"></a>00164 <span class="comment">// http://www.arduino.cc/playground/Code/LCD3wires</span> +<a name="l00165"></a>00165 +<a name="l00166"></a>00166 <span class="comment">// bitmasks for control bits on shift register</span> +<a name="l00167"></a><a class="code" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#a0075b041d82abb47f279dce482e7b087">00167</a> <span class="preprocessor">#define SR_EN_BIT B00010000 // LCD Data enable bit.</span> +<a name="l00168"></a><a class="code" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#ae0e1fe92420ef667b9830efeb059c853">00168</a> <span class="preprocessor"></span><span class="preprocessor">#define SR_RW_BIT B00100000 // RW can be pinned low since we only send</span> +<a name="l00169"></a><a class="code" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#afdaa2bbb2cc185700864ac8d7a570ced">00169</a> <span class="preprocessor"></span><span class="preprocessor">#define SR_RS_BIT B01000000 // LOW: command. HIGH: character.</span> +<a name="l00170"></a>00170 <span class="preprocessor"></span> +<a name="l00171"></a><a class="code" href="class_liquid_crystal___s_r___l_c_d3.html#a01e75d76d80e218a5bdc28f8ce22b0e4">00171</a> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r___l_c_d3.html#a01e75d76d80e218a5bdc28f8ce22b0e4">LiquidCrystal_SR_LCD3::send</a>(uint8_t value, uint8_t mode) +<a name="l00172"></a>00172 { +<a name="l00173"></a>00173 uint8_t nibble; +<a name="l00174"></a>00174 +<a name="l00175"></a>00175 mode = mode ? <a class="code" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#afdaa2bbb2cc185700864ac8d7a570ced">SR_RS_BIT</a> : 0; <span class="comment">// RS bit; LOW: command. HIGH: character.</span> +<a name="l00176"></a>00176 +<a name="l00177"></a>00177 nibble = value >> 4; <span class="comment">// Get high nibble.</span> +<a name="l00178"></a>00178 write4bits(nibble | mode); +<a name="l00179"></a>00179 +<a name="l00180"></a>00180 <span class="comment">//delay(1); // This was in the LCD3 code but does not seem needed -- merlin</span> +<a name="l00181"></a>00181 +<a name="l00182"></a>00182 nibble = value & 15; <span class="comment">// Get low nibble</span> +<a name="l00183"></a>00183 write4bits(nibble | mode); +<a name="l00184"></a>00184 } +<a name="l00185"></a>00185 +<a name="l00186"></a>00186 <span class="keywordtype">void</span> LiquidCrystal_SR_LCD3::write4bits(uint8_t nibble) +<a name="l00187"></a>00187 { +<a name="l00188"></a>00188 nibble &= ~<a class="code" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#ae0e1fe92420ef667b9830efeb059c853">SR_RW_BIT</a>; <span class="comment">// set RW LOW (we do this always since we only write).</span> +<a name="l00189"></a>00189 +<a name="l00190"></a>00190 <span class="comment">// Send a High transition to display the data that was pushed</span> +<a name="l00191"></a>00191 nibble |= <a class="code" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#a0075b041d82abb47f279dce482e7b087">SR_EN_BIT</a>; <span class="comment">// LCD Data Enable HIGH</span> +<a name="l00192"></a>00192 _pushOut(nibble); +<a name="l00193"></a>00193 nibble &= ~<a class="code" href="_liquid_crystal___s_r___l_c_d3_8cpp.html#a0075b041d82abb47f279dce482e7b087">SR_EN_BIT</a>; <span class="comment">// LCD Data Enable LOW</span> +<a name="l00194"></a>00194 _pushOut(nibble); +<a name="l00195"></a>00195 } +<a name="l00196"></a>00196 +<a name="l00197"></a>00197 <span class="comment">// push byte to shift register and on to LCD</span> +<a name="l00198"></a>00198 <span class="keywordtype">void</span> LiquidCrystal_SR_LCD3::_pushOut(uint8_t nibble) +<a name="l00199"></a>00199 { +<a name="l00200"></a>00200 <span class="comment">// Make data available for pushing to the LCD.</span> +<a name="l00201"></a>00201 <a class="code" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">fio_shiftOut</a>(_srdata_register, _srdata_bit, _srclock_register, _srclock_bit, nibble, LSBFIRST); +<a name="l00202"></a>00202 +<a name="l00203"></a>00203 <span class="comment">// Make new data active.</span> +<a name="l00204"></a>00204 <a class="code" href="_fast_i_o_8h.html#ad2374bbbb11bdb9abeeec0db769afd30">ATOMIC_BLOCK</a>(<a class="code" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">ATOMIC_RESTORESTATE</a>) +<a name="l00205"></a>00205 { +<a name="l00206"></a>00206 <a class="code" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">fio_digitalWrite_HIGH</a>(_strobe_register, _strobe_bit); +<a name="l00207"></a>00207 <a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a>( 1 ); <span class="comment">// strobe pulse must be >450ns (old code had 10ms)</span> +<a name="l00208"></a>00208 <a class="code" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">fio_digitalWrite_SWITCHTO</a>(_strobe_register, _strobe_bit,LOW); +<a name="l00209"></a>00209 } +<a name="l00210"></a>00210 <a class="code" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">waitUsec</a>( 40 ); <span class="comment">// commands need > 37us to settle</span> +<a name="l00211"></a>00211 } +</pre></div></div> +</div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<hr class="footer"/><address class="footer"><small>Generated on Sun Mar 4 2012 21:17:06 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8h.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8h.html new file mode 100644 index 0000000000000000000000000000000000000000..1b75e74c99ccd2dbaadef7a0b15e04248b2d8825 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8h.html @@ -0,0 +1,95 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: /Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR_LCD3.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.2.1</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR_LCD3.h File Reference</div> </div> +</div> +<div class="contents"> +<div class="textblock"><code>#include <inttypes.h></code><br/> +<code>#include "<a class="el" href="_l_c_d_8h_source.html">LCD.h</a>"</code><br/> +</div> +<p><a href="_liquid_crystal___s_r___l_c_d3_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r___l_c_d3.html">LiquidCrystal_SR_LCD3</a></td></tr> +</table> +</div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<hr class="footer"/><address class="footer"><small>Generated on Sun Mar 4 2012 21:17:07 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..988866620926d47418f01527f6a20a8f30b7c00d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_liquid_crystal___s_r___l_c_d3_8h_source.html @@ -0,0 +1,129 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: /Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR_LCD3.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.2.1</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/LiquidCrystal_SR_LCD3.h</div> </div> +</div> +<div class="contents"> +<a href="_liquid_crystal___s_r___l_c_d3_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00002"></a>00002 <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span> +<a name="l00003"></a>00003 <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span> +<a name="l00004"></a>00004 <span class="comment">// Attribution-ShareAlike CC BY-SA</span> +<a name="l00005"></a>00005 <span class="comment">//</span> +<a name="l00006"></a>00006 <span class="comment">// This module is a port by Marc MERLIN <marc_soft<at>merlins.org></span> +<a name="l00007"></a>00007 <span class="comment">// See .cpp file for hardware details.</span> +<a name="l00008"></a>00008 <span class="comment">// ---------------------------------------------------------------------------</span> +<a name="l00009"></a>00009 <span class="preprocessor">#ifndef _LIQUIDCRYSTAL_SR_LCD3_</span> +<a name="l00010"></a>00010 <span class="preprocessor"></span><span class="preprocessor">#define _LIQUIDCRYSTAL_SR_LCD3_</span> +<a name="l00011"></a>00011 <span class="preprocessor"></span> +<a name="l00012"></a>00012 <span class="preprocessor">#include <inttypes.h></span> +<a name="l00013"></a>00013 <span class="preprocessor">#include "<a class="code" href="_l_c_d_8h.html">LCD.h</a>"</span> +<a name="l00014"></a>00014 +<a name="l00015"></a>00015 +<a name="l00016"></a><a class="code" href="class_liquid_crystal___s_r___l_c_d3.html">00016</a> <span class="keyword">class </span><a class="code" href="class_liquid_crystal___s_r___l_c_d3.html">LiquidCrystal_SR_LCD3</a> : <span class="keyword">public</span> <a class="code" href="class_l_c_d.html">LCD</a> +<a name="l00017"></a>00017 { +<a name="l00018"></a>00018 <span class="keyword">public</span>: +<a name="l00030"></a>00030 <a class="code" href="class_liquid_crystal___s_r___l_c_d3.html#a2cd0629853dd8a5569799fa998f3d29f">LiquidCrystal_SR_LCD3</a> ( uint8_t srdata, uint8_t srclock, uint8_t enable ); +<a name="l00031"></a>00031 +<a name="l00044"></a>00044 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_liquid_crystal___s_r___l_c_d3.html#a01e75d76d80e218a5bdc28f8ce22b0e4">send</a>(uint8_t value, uint8_t mode); +<a name="l00045"></a>00045 +<a name="l00046"></a>00046 +<a name="l00047"></a>00047 <span class="keyword">private</span>: +<a name="l00048"></a>00048 +<a name="l00054"></a>00054 <span class="keywordtype">void</span> init ( uint8_t srdata, uint8_t srclock, uint8_t enable, uint8_t lines, +<a name="l00055"></a>00055 uint8_t font ); +<a name="l00061"></a>00061 <span class="keywordtype">void</span> write4bits ( uint8_t ); +<a name="l00062"></a>00062 <span class="keywordtype">void</span> _pushOut ( uint8_t ); +<a name="l00063"></a>00063 +<a name="l00064"></a>00064 <span class="comment">// Serial Data pin</span> +<a name="l00065"></a>00065 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> _srdata_bit; +<a name="l00066"></a>00066 <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> _srdata_register; +<a name="l00067"></a>00067 +<a name="l00068"></a>00068 <span class="comment">// Clock Pin</span> +<a name="l00069"></a>00069 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> _srclock_bit; +<a name="l00070"></a>00070 <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> _srclock_register; +<a name="l00071"></a>00071 +<a name="l00072"></a>00072 <span class="comment">// Enable Pin</span> +<a name="l00073"></a>00073 <a class="code" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">fio_bit</a> _strobe_bit; +<a name="l00074"></a>00074 <a class="code" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">fio_register</a> _strobe_register; +<a name="l00075"></a>00075 }; +<a name="l00076"></a>00076 +<a name="l00077"></a>00077 <span class="preprocessor">#endif</span> +<a name="l00078"></a>00078 <span class="preprocessor"></span> +</pre></div></div> +</div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<hr class="footer"/><address class="footer"><small>Generated on Sun Mar 4 2012 21:17:07 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_s_i2_c_i_o_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_s_i2_c_i_o_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..ce1212b1a86319e242d992f3d99377857d4f6895 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_s_i2_c_i_o_8h_source.html @@ -0,0 +1,170 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/SI2CIO.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/SI2CIO.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// Created by Francisco Malpartida on 20/08/11.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// Copyright 2011 - Under creative commons license 3.0:</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// Attribution-ShareAlike CC BY-SA</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// This software is furnished "as is", without technical support, and with no </span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// warranty, express or implied, as to its usefulness for any purpose.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Thread Safe: No</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Extendable: Yes</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// @file SI2CIO.h</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This file implements a basic IO library using the PCF8574 I2C IO Expander</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// chip, but using software I2C.</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// </span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// @brief </span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// Implement a basic IO library to drive the PCF8574* I2C IO Expander ASIC.</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// The library implements basic IO general methods to configure IO pin direction</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// read and write uint8_t operations and basic pin level routines to set or read</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// a particular IO port.</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// @version API 1.0.0</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">//</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// @author F. Malpartida - fmalpartida@gmail.com</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// Adapted to SoftIC2 by Adrian Piccioli - adrianpiccioli@gmail.com</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// ---------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#ifndef _SI2CIO_H_</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define _SI2CIO_H_</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <inttypes.h></span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#define _SI2CIO_VERSION "1.0.0"</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div> +<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_s_i2_c_i_o.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_s_i2_c_i_o.html">SI2CIO</a> </div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">public</span>:</div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf">SI2CIO</a> ( );</div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">int</span> <a class="code" href="class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47">begin</a> ( uint8_t i2cAddr );</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> <a class="code" href="class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3">pinMode</a> ( uint8_t pin, uint8_t dir );</div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  </div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">void</span> <a class="code" href="class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b">portMode</a> ( uint8_t dir );</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  uint8_t <a class="code" href="class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060">read</a> ( <span class="keywordtype">void</span> );</div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  uint8_t <a class="code" href="class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33">digitalRead</a> ( uint8_t pin );</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">int</span> <a class="code" href="class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9">write</a> ( uint8_t value );</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  </div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">int</span> <a class="code" href="class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de">digitalWrite</a> ( uint8_t pin, uint8_t level );</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  </div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword">private</span>:</div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  uint8_t _shadow; <span class="comment">// Shadow output</span></div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  uint8_t _dirMask; <span class="comment">// Direction mask</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  uint8_t _i2cAddr; <span class="comment">// I2C address</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">bool</span> _initialised; <span class="comment">// Initialised object</span></div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> };</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">#endif</span></div> +<div class="ttc" id="class_s_i2_c_i_o_html_ae1e3c6fd22872f248de6a90af27d92de"><div class="ttname"><a href="class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de">SI2CIO::digitalWrite</a></div><div class="ttdeci">int digitalWrite(uint8_t pin, uint8_t level)</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html_a47c3ac3198cddcf9e6da1ccacd9db5d9"><div class="ttname"><a href="class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9">SI2CIO::write</a></div><div class="ttdeci">int write(uint8_t value)</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html"><div class="ttname"><a href="class_s_i2_c_i_o.html">SI2CIO</a></div><div class="ttdef"><b>Definition:</b> SI2CIO.h:42</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html_a8e78ee0ee2d1bb12136b5c5a3487512b"><div class="ttname"><a href="class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b">SI2CIO::portMode</a></div><div class="ttdeci">void portMode(uint8_t dir)</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html_ae27c1861e885c6ade3f3923658957edf"><div class="ttname"><a href="class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf">SI2CIO::SI2CIO</a></div><div class="ttdeci">SI2CIO()</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html_a32cb72361397c1051ee650dbb2190060"><div class="ttname"><a href="class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060">SI2CIO::read</a></div><div class="ttdeci">uint8_t read(void)</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html_a4ef4fb77ddd3d248be5e0898e33430a3"><div class="ttname"><a href="class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3">SI2CIO::pinMode</a></div><div class="ttdeci">void pinMode(uint8_t pin, uint8_t dir)</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html_aef6df8409b67bda118c2e055af3d6f47"><div class="ttname"><a href="class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47">SI2CIO::begin</a></div><div class="ttdeci">int begin(uint8_t i2cAddr)</div></div> +<div class="ttc" id="class_s_i2_c_i_o_html_a15fe6d174fb001bca7866004e96f0b33"><div class="ttname"><a href="class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33">SI2CIO::digitalRead</a></div><div class="ttdeci">uint8_t digitalRead(uint8_t pin)</div></div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/_soft_i2_c_master_8h_source.html b/libraries/LiquidCrystal/utility/docs/html/_soft_i2_c_master_8h_source.html new file mode 100644 index 0000000000000000000000000000000000000000..4c583811fb7316b1957626158ddb5388a5a8fe8b --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/_soft_i2_c_master_8h_source.html @@ -0,0 +1,612 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: /Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/SoftI2CMaster.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/SoftI2CMaster.h</div> </div> +</div><!--header--> +<div class="contents"> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Arduino SoftI2C library. </span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * This is a very fast and very light-weight software I2C-master library </span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * written in assembler. It is based on Peter Fleury's I2C software</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * library: http://homepage.hispeed.ch/peterfleury/avr-software.html</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * This Library is free software: you can redistribute it and/or modify</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * (at your option) any later version.</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * This Library is distributed in the hope that it will be useful,</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * GNU General Public License for more details.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * along with the Arduino I2cMaster Library. If not, see</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * <http://www.gnu.org/licenses/>.</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/* In order to use the library, you need to define SDA_PIN, SCL_PIN,</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * SDA_PORT and SCL_PORT before including this file. Have a look at</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * http://www.arduino.cc/en/Reference/PortManipulation for finding out</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * which values to use. For example, if you use digital pin 3 for</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * SDA and digital pin 13 for SCL you have to use the following</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * definitions: </span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * #define SDA_PIN 3 </span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * #define SDA_PORT PORTB </span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * #define SCL_PIN 5</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * #define SCL_PORT PORTB</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * You can also define the following constants (see also below):</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * - I2C_CPUFREQ, when changing CPU clock frequency dynamically</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> * - I2C_FASTMODE = 1 meaning that the I2C bus allows speeds up to 400 kHz</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> * - I2C_SLOWMODE = 1 meaning that the I2C bus will allow only up to 25 kHz </span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> * - I2C_NOINTERRUPT = 1 in order to prohibit interrupts while </span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"> * communicating (see below). This can be useful if you use the library </span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> * for communicationg with SMbus devices, which have timeouts.</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> * Note, however, that interrupts are disabledfrom issuing a start condition</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> * until issuing a stop condition. So use this option with care!</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"> * - I2C_TIMEOUT = 0..10000 mssec in order to return from the I2C functions</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> * in case of a I2C bus lockup (i.e., SCL constantly low). 0 means no timeout</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">/* Changelog:</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> * Version 1.1: </span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment"> * - removed I2C_CLOCK_STRETCHING</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> * - added I2C_TIMEOUT time in msec (0..10000) until timeout or 0 if no timeout</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> * - changed i2c_init to return true iff both SDA and SCL are high</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment"> * - changed interrupt disabling so that the previous IRQ state is retored</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment"> * Version 1.0: basic functionality</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#include <avr/io.h></span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include <Arduino.h></span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#ifndef _SOFTI2C_H</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#define _SOFTI2C_H 1</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#if defined (__AVR__)</span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// Init function. Needs to be called once in the beginning.</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// Returns false if SDA or SCL are low, which probably means </span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// a I2C bus lockup or that the lines are not pulled up.</span></div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keywordtype">boolean</span> __attribute__ ((noinline)) i2c_init(<span class="keywordtype">void</span>);</div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment">// Start transfer function: <addr> is the 8-bit I2C address (including the R/W</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// bit). </span></div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Return: true if the slave replies with an "acknowledge", false otherwise</span></div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">bool</span> __attribute__ ((noinline)) i2c_start(uint8_t addr); </div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// Similar to start function, but wait for an ACK! Be careful, this can </span></div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// result in an infinite loop!</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="keywordtype">void</span> __attribute__ ((noinline)) i2c_start_wait(uint8_t addr);</div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// Repeated start function: After having claimed the bus with a start condition,</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// you can address another or the same chip again without an intervening </span></div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// stop condition.</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// Return: true if the slave replies with an "acknowledge", false otherwise</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">bool</span> __attribute__ ((noinline)) i2c_rep_start(uint8_t addr);</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// Issue a stop condition, freeing the bus.</span></div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">void</span> __attribute__ ((noinline)) i2c_stop(<span class="keywordtype">void</span>) asm("ass_i2c_stop");</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// Write one byte to the slave chip that had been addressed</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// by the previous start call. <value> is the byte to be sent.</span></div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// Return: true if the slave replies with an "acknowledge", false otherwise</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">bool</span> __attribute__ ((noinline)) i2c_write(uint8_t value) asm("ass_i2c_write");</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// Read one byte. If <last> is true, we send a NAK after having received </span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// the byte in order to terminate the read sequence. </span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> uint8_t __attribute__ ((noinline)) i2c_read(<span class="keywordtype">bool</span> last);</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// You can set I2C_CPUFREQ independently of F_CPU if you </span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// change the CPU frequency on the fly. If do not define it,</span></div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// it will use the value of F_CPU</span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#ifndef I2C_CPUFREQ</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor">#define I2C_CPUFREQ F_CPU</span></div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// If I2C_FASTMODE is set to 1, then the highest possible frequency below 400kHz</span></div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// is selected. Be aware that not all slave chips may be able to deal with that!</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#ifndef I2C_FASTMODE</span></div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#define I2C_FASTMODE 0</span></div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// If I2C_FASTMODE is not defined or defined to be 0, then you can set</span></div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// I2C_SLOWMODE to 1. In this case, the I2C frequency will not be higher </span></div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// than 25KHz. This could be useful for problematic buses.</span></div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#ifndef I2C_SLOWMODE</span></div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#define I2C_SLOWMODE 0</span></div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// if I2C_NOINTERRUPT is 1, then the I2C routines are not interruptable.</span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// This is most probably only necessary if you are using a 1MHz system clock,</span></div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// you are communicating with a SMBus device, and you want to avoid timeouts.</span></div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// Be aware that the interrupt bit is enabled after each call. So the</span></div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// I2C functions should not be called in interrupt routines or critical regions.</span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="preprocessor">#ifndef I2C_NOINTERRUPT</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#define I2C_NOINTERRUPT 0</span></div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment">// I2C_TIMEOUT can be set to a value between 1 and 10000.</span></div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// If it is defined and nonzero, it leads to a timeout if the</span></div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// SCL is low longer than I2C_TIMEOUT milliseconds, i.e., max timeout is 10 sec</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor">#ifndef I2C_TIMEOUT</span></div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#define I2C_TIMEOUT 0</span></div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#else </span></div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#if I2C_TIMEOUT > 10000</span></div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#error I2C_TIMEOUT is too large</span></div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#define I2C_TIMEOUT_DELAY_LOOPS (I2C_CPUFREQ/1000UL)*I2C_TIMEOUT/4000UL</span></div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#if I2C_TIMEOUT_DELAY_LOOPS < 1</span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor">#define I2C_MAX_STRETCH 1</span></div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#if I2C_TIMEOUT_DELAY_LOOPS > 60000UL</span></div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor">#define I2C_MAX_STRETCH 60000UL</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor">#define I2C_MAX_STRETCH I2C_TIMEOUT_DELAY_LOOPS</span></div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#if I2C_FASTMODE</span></div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/400000L)/2-19)/3)</span></div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">#if I2C_SLOWMODE</span></div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/25000L)/2-19)/3)</span></div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/100000L)/2-19)/3)</span></div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// Table of I2C bus speed in kbit/sec:</span></div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment">// CPU clock: 1MHz 2MHz 4MHz 8MHz 16MHz 20MHz</span></div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// Fast I2C mode 40 80 150 300 400 400</span></div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// Standard I2C mode 40 80 100 100 100 100</span></div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// Slow I2C mode 25 25 25 25 25 25 </span></div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// constants for reading & writing</span></div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#define I2C_READ 1</span></div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#define I2C_WRITE 0</span></div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="comment">// map the IO register back into the IO address space</span></div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#define SDA_DDR (_SFR_IO_ADDR(SDA_PORT) - 1)</span></div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#define SCL_DDR (_SFR_IO_ADDR(SCL_PORT) - 1)</span></div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#define SDA_OUT _SFR_IO_ADDR(SDA_PORT)</span></div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#define SCL_OUT _SFR_IO_ADDR(SCL_PORT)</span></div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#define SDA_IN (_SFR_IO_ADDR(SDA_PORT) - 2)</span></div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#define SCL_IN (_SFR_IO_ADDR(SCL_PORT) - 2)</span></div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#ifndef __tmp_reg__</span></div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#define __tmp_reg__ 0</span></div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  </div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="comment">// Internal delay functions.</span></div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keywordtype">void</span> __attribute__ ((noinline)) i2c_delay_half(<span class="keywordtype">void</span>) asm("ass_i2c_delay_half");</div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keywordtype">void</span> __attribute__ ((noinline)) i2c_wait_scl_high(<span class="keywordtype">void</span>) asm("ass_i2c_wait_scl_high");</div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keywordtype">void</span> i2c_delay_half(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> { <span class="comment">// function call 3 cycles => 3C</span></div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#if I2C_DELAY_COUNTER < 1</span></div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  __asm__ __volatile__ (<span class="stringliteral">" ret"</span>);</div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// 7 cycles for call and return</span></div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  (</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="stringliteral">" ldi r25, %[DELAY] ;load delay constant ;; 4C \n\t"</span></div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="stringliteral">"_Lidelay: \n\t"</span></div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="stringliteral">" dec r25 ;decrement counter ;; 4C+xC \n\t"</span></div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="stringliteral">" brne _Lidelay ;;5C+(x-1)2C+xC\n\t"</span></div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="stringliteral">" ret ;; 9C+(x-1)2C+xC = 7C+xC"</span> </div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  : : [DELAY] <span class="stringliteral">"M"</span> I2C_DELAY_COUNTER : <span class="stringliteral">"r25"</span>);</div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// 7 cycles + 3 times x cycles</span></div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> }</div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="keywordtype">void</span> i2c_wait_scl_high(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> {</div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#if I2C_TIMEOUT <= 0</span></div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  (<span class="stringliteral">"_Li2c_wait_stretch: \n\t"</span></div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;wait for SCL high \n\t"</span> </div> +<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="stringliteral">" rjmp _Li2c_wait_stretch \n\t"</span></div> +<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="stringliteral">" cln ;signal: no timeout \n\t"</span></div> +<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="stringliteral">" ret "</span></div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  : : [SCLIN] <span class="stringliteral">"I"</span> (SCL_IN), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN));</div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  ( <span class="stringliteral">" ldi r27, %[HISTRETCH] ;load delay counter \n\t"</span></div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="stringliteral">" ldi r26, %[LOSTRETCH] \n\t"</span></div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="stringliteral">"_Lwait_stretch: \n\t"</span></div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="stringliteral">" clr __tmp_reg__ ;do next loop 255 times \n\t"</span></div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="stringliteral">"_Lwait_stretch_inner_loop: \n\t"</span></div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="stringliteral">" rcall _Lcheck_scl_level ;call check function ;; 12C \n\t"</span></div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="stringliteral">" brpl _Lstretch_done ;done if N=0 ;; +1 = 13C\n\t"</span></div> +<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="stringliteral">" dec __tmp_reg__ ;dec inner loop counter;; +1 = 14C\n\t"</span></div> +<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="stringliteral">" brne _Lwait_stretch_inner_loop ;; +2 = 16C\n\t"</span></div> +<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="stringliteral">" sbiw r26,1 ;dec outer loop counter \n\t"</span></div> +<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="stringliteral">" brne _Lwait_stretch ;continue with outer loop \n\t"</span></div> +<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="stringliteral">" sen ;timeout -> set N-bit=1 \n\t"</span></div> +<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="stringliteral">" rjmp _Lwait_return ;and return with N=1\n\t"</span></div> +<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="stringliteral">"_Lstretch_done: ;SCL=1 sensed \n\t"</span> </div> +<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="stringliteral">" cln ;OK -> clear N-bit \n\t"</span></div> +<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="stringliteral">" rjmp _Lwait_return ; and return with N=0 \n\t"</span></div> +<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div> +<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="stringliteral">"_Lcheck_scl_level: ;; call = 3C\n\t"</span></div> +<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="stringliteral">" cln ;; +1C = 4C \n\t"</span></div> +<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="stringliteral">" sbic %[SCLIN],%[SCLPIN] ;skip if SCL still low ;; +2C = 6C \n\t"</span></div> +<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="stringliteral">" rjmp _Lscl_high ;; +0C = 6C \n\t"</span></div> +<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="stringliteral">" sen ;; +1 = 7C\n\t "</span></div> +<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="stringliteral">"_Lscl_high: "</span></div> +<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="stringliteral">" nop ;; +1C = 8C \n\t"</span></div> +<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="stringliteral">" ret ;return N-Bit=1 if low ;; +4 = 12C\n\t"</span></div> +<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div> +<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="stringliteral">"_Lwait_return:"</span></div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  : : [SCLIN] <span class="stringliteral">"I"</span> (SCL_IN), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), </div> +<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  [HISTRETCH] <span class="stringliteral">"M"</span> (I2C_MAX_STRETCH>>8), </div> +<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  [LOSTRETCH] <span class="stringliteral">"M"</span> (I2C_MAX_STRETCH&0xFF)</div> +<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  : <span class="stringliteral">"r26"</span>, <span class="stringliteral">"r27"</span>);</div> +<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div> +<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div> +<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div> +<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="keywordtype">boolean</span> i2c_init(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> {</div> +<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  (<span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t"</span> </div> +<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t"</span> </div> +<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="stringliteral">" cbi %[SDAOUT],%[SDAPIN] ;clear SDA output value \n\t"</span> </div> +<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="stringliteral">" cbi %[SCLOUT],%[SCLPIN] ;clear SCL output value \n\t"</span> </div> +<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="stringliteral">" clr r24 ;set return value to false \n\t"</span></div> +<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="stringliteral">" clr r25 ;set return value to false \n\t"</span></div> +<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="stringliteral">" sbis %[SDAIN],%[SDAPIN] ;check for SDA high\n\t"</span></div> +<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="stringliteral">" ret ;if low return with false \n\t"</span> </div> +<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for SCL high \n\t"</span></div> +<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="stringliteral">" ret ;if low return with false \n\t"</span> </div> +<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="stringliteral">" ldi r24,1 ;set return value to true \n\t"</span></div> +<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="stringliteral">" ret "</span></div> +<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  : :</div> +<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  [SCLDDR] <span class="stringliteral">"I"</span> (SCL_DDR), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), </div> +<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  [SCLIN] <span class="stringliteral">"I"</span> (SCL_IN), [SCLOUT] <span class="stringliteral">"I"</span> (SCL_OUT),</div> +<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  [SDADDR] <span class="stringliteral">"I"</span> (SDA_DDR), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN), </div> +<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  [SDAIN] <span class="stringliteral">"I"</span> (SDA_IN), [SDAOUT] <span class="stringliteral">"I"</span> (SDA_OUT)); </div> +<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> +<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> }</div> +<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div> +<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="keywordtype">bool</span> i2c_start(uint8_t addr)</div> +<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> {</div> +<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  (</div> +<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> #<span class="keywordflow">if</span> I2C_NOINTERRUPT</div> +<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="stringliteral">" cli ;clear IRQ bit \n\t"</span></div> +<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> #endif</div> +<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t"</span></div> +<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t"</span> </div> +<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t"</span> </div> +<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;wait T/2 \n\t"</span></div> +<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="stringliteral">" rcall ass_i2c_write ;now write address \n\t"</span></div> +<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="stringliteral">" ret"</span></div> +<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  : : [SDADDR] <span class="stringliteral">"I"</span> (SDA_DDR), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN),</div> +<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  [SCLIN] <span class="stringliteral">"I"</span> (SCL_IN),[SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN)); </div> +<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// we never return here!</span></div> +<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> }</div> +<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div> +<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="keywordtype">bool</span> i2c_rep_start(uint8_t addr)</div> +<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div> +<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div> +<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  (</div> +<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> #<span class="keywordflow">if</span> I2C_NOINTERRUPT</div> +<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="stringliteral">" cli \n\t"</span></div> +<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> #endif</div> +<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low \n\t"</span> </div> +<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t"</span> </div> +<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t"</span> </div> +<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t"</span></div> +<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t"</span> </div> +<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t"</span> </div> +<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="stringliteral">" rcall ass_i2c_write \n\t"</span></div> +<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="stringliteral">" ret"</span></div> +<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  : : [SCLDDR] <span class="stringliteral">"I"</span> (SCL_DDR), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN),[SCLIN] <span class="stringliteral">"I"</span> (SCL_IN),</div> +<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  [SDADDR] <span class="stringliteral">"I"</span> (SDA_DDR), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN)); </div> +<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// just to fool the compiler</span></div> +<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div> +<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div> +<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="keywordtype">void</span> i2c_start_wait(uint8_t addr)</div> +<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> {</div> +<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  (</div> +<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="stringliteral">" push r24 ;save original parameter \n\t"</span></div> +<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="stringliteral">"_Li2c_start_wait1: \n\t"</span></div> +<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="stringliteral">" pop r24 ;restore original parameter\n\t"</span></div> +<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="stringliteral">" push r24 ;and save again \n\t"</span></div> +<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> #<span class="keywordflow">if</span> I2C_NOINTERRUPT</div> +<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="stringliteral">" cli ;disable interrupts \n\t"</span></div> +<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> #endif</div> +<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t"</span></div> +<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t"</span> </div> +<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t"</span> </div> +<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="stringliteral">" rcall ass_i2c_write ;write address \n\t"</span> </div> +<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="stringliteral">" tst r24 ;if device not busy -> done \n\t"</span> </div> +<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="stringliteral">" brne _Li2c_start_wait_done \n\t"</span> </div> +<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="stringliteral">" rcall ass_i2c_stop ;terminate write & enable IRQ \n\t"</span> </div> +<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="stringliteral">" rjmp _Li2c_start_wait1 ;device busy, poll ack again \n\t"</span> </div> +<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="stringliteral">"_Li2c_start_wait_done: \n\t"</span></div> +<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="stringliteral">" pop __tmp_reg__ ;pop off orig argument \n\t"</span></div> +<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="stringliteral">" ret "</span></div> +<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  : : [SDADDR] <span class="stringliteral">"I"</span> (SDA_DDR), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN),</div> +<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  [SCLIN] <span class="stringliteral">"I"</span> (SCL_IN),[SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN)); </div> +<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> }</div> +<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div> +<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="keywordtype">void</span> i2c_stop(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> {</div> +<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  (</div> +<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low \n\t"</span> </div> +<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t"</span> </div> +<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;T/2 delay \n\t"</span></div> +<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t"</span> </div> +<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;T/2 delay \n\t"</span></div> +<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t"</span></div> +<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t"</span> </div> +<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t"</span> </div> +<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="stringliteral">" rcall ass_i2c_delay_half \n\t"</span></div> +<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> #<span class="keywordflow">if</span> I2C_NOINTERRUPT</div> +<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="stringliteral">" sei ;enable interrupts again!\n\t"</span></div> +<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> #endif</div> +<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  : : [SCLDDR] <span class="stringliteral">"I"</span> (SCL_DDR), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), [SCLIN] <span class="stringliteral">"I"</span> (SCL_IN),</div> +<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  [SDADDR] <span class="stringliteral">"I"</span> (SDA_DDR), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN)); </div> +<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> }</div> +<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div> +<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="keywordtype">bool</span> i2c_write(uint8_t value)</div> +<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div> +<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  (</div> +<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="stringliteral">" sec ;set carry flag \n\t"</span></div> +<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="stringliteral">" rol r24 ;shift in carry and shift out MSB \n\t"</span></div> +<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="stringliteral">" rjmp _Li2c_write_first \n\t"</span></div> +<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="stringliteral">"_Li2c_write_bit:\n\t"</span></div> +<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="stringliteral">" lsl r24 ;left shift into carry ;; 1C\n\t"</span></div> +<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="stringliteral">"_Li2c_write_first:\n\t"</span></div> +<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="stringliteral">" breq _Li2c_get_ack ;jump if TXreg is empty;; +1 = 2C \n\t"</span></div> +<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 4C \n\t"</span></div> +<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="stringliteral">" brcc _Li2c_write_low ;;+1/+2=5/6C\n\t"</span></div> +<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="stringliteral">" nop ;; +1 = 7C \n\t"</span></div> +<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA ;; +2 = 9C \n\t"</span></div> +<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="stringliteral">" rjmp _Li2c_write_high ;; +2 = 11C \n\t"</span></div> +<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="stringliteral">"_Li2c_write_low: \n\t"</span></div> +<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low ;; +2 = 9C \n\t"</span></div> +<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="stringliteral">" rjmp _Li2c_write_high ;;+2 = 11C \n\t"</span></div> +<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="stringliteral">"_Li2c_write_high: \n\t"</span></div> +<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> #<span class="keywordflow">if</span> I2C_DELAY_COUNTER >= 1</div> +<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;;+X = 11C+X\n\t"</span></div> +<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> #endif</div> +<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL ;;+2 = 13C+X\n\t"</span></div> +<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="stringliteral">" cln ;clear N-bit ;;+1 = 14C+X\n\t"</span></div> +<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for SCL high ;;+2 = 16C+X\n\t"</span></div> +<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high \n\t"</span></div> +<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="stringliteral">" brpl _Ldelay_scl_high ;;+2 = 18C+X\n\t"</span></div> +<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="stringliteral">"_Li2c_write_return_false: \n\t"</span></div> +<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="stringliteral">" clr r24 ; return false because of timeout \n\t"</span></div> +<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="stringliteral">" rjmp _Li2c_write_return \n\t"</span></div> +<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="stringliteral">"_Ldelay_scl_high: \n\t"</span></div> +<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> #<span class="keywordflow">if</span> I2C_DELAY_COUNTER >= 1</div> +<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;;+X= 18C+2X\n\t"</span></div> +<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> #endif</div> +<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="stringliteral">" rjmp _Li2c_write_bit \n\t"</span></div> +<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="stringliteral">" ;; +2 = 20C +2X for one bit-loop \n\t"</span></div> +<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="stringliteral">"_Li2c_get_ack: \n\t"</span></div> +<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 5C \n\t"</span></div> +<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA ;;+2 = 7C \n\t"</span></div> +<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> #<span class="keywordflow">if</span> I2C_DELAY_COUNTER >= 1</div> +<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; +X = 7C+X \n\t"</span></div> +<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> #endif</div> +<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="stringliteral">" clr r25 ;; 17C+2X \n\t"</span></div> +<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="stringliteral">" clr r24 ;return 0 ;; 14C + X \n\t"</span></div> +<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; +2 = 9C+X\n\t"</span></div> +<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="stringliteral">"_Li2c_ack_wait: \n\t"</span></div> +<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="stringliteral">" cln ; clear N-bit ;; 10C + X\n\t"</span> </div> +<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;wait SCL high ;; 12C + X \n\t"</span></div> +<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high \n\t"</span></div> +<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="stringliteral">" brmi _Li2c_write_return_false ;; 13C + X \n\t "</span></div> +<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="stringliteral">" sbis %[SDAIN],%[SDAPIN] ;if SDA hi -> return 0 ;; 15C + X \n\t"</span></div> +<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="stringliteral">" ldi r24,1 ;return true ;; 16C + X \n\t"</span></div> +<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> #<span class="keywordflow">if</span> I2C_DELAY_COUNTER >= 1</div> +<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 16C + 2X \n\t"</span></div> +<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> #endif</div> +<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="stringliteral">"_Li2c_write_return: \n\t"</span></div> +<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t"</span></div> +<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="stringliteral">" ret \n\t"</span></div> +<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="stringliteral">" ;; + 4 = 17C + 2X for acknowldge bit"</span></div> +<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  ::</div> +<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  [SCLDDR] <span class="stringliteral">"I"</span> (SCL_DDR), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), [SCLIN] <span class="stringliteral">"I"</span> (SCL_IN),</div> +<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  [SDADDR] <span class="stringliteral">"I"</span> (SDA_DDR), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN), [SDAIN] <span class="stringliteral">"I"</span> (SDA_IN)); </div> +<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// fooling the compiler</span></div> +<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> }</div> +<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div> +<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> uint8_t i2c_read(<span class="keywordtype">bool</span> last)</div> +<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> {</div> +<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  (</div> +<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="stringliteral">" ldi r23,0x01 \n\t"</span></div> +<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="stringliteral">"_Li2c_read_bit: \n\t"</span></div> +<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; 2C \n\t"</span> </div> +<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA(prev. ACK);; 4C \n\t"</span> </div> +<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> #<span class="keywordflow">if</span> I2C_DELAY_COUNTER >= 1</div> +<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 4C+X \n\t"</span> </div> +<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> #endif</div> +<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; 6C + X \n\t"</span> </div> +<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> #<span class="keywordflow">if</span> I2C_DELAY_COUNTER >= 1</div> +<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 6C + 2X \n\t"</span> </div> +<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> #endif</div> +<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="stringliteral">" cln ; clear N-bit ;; 7C + 2X \n\t"</span></div> +<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="stringliteral">" sbis %[SCLIN], %[SCLPIN] ;check for SCL high ;; 9C +2X \n\t"</span> </div> +<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high \n\t"</span></div> +<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="stringliteral">" brmi _Li2c_read_return ;return if timeout ;; 10C + 2X\n\t"</span></div> +<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="stringliteral">" clc ;clear carry flag ;; 11C + 2X\n\t"</span> </div> +<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="stringliteral">" sbic %[SDAIN],%[SDAPIN] ;if SDA is high ;; 11C + 2X\n\t"</span> </div> +<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="stringliteral">" sec ;set carry flag ;; 12C + 2X\n\t"</span> </div> +<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="stringliteral">" rol r23 ;store bit ;; 13C + 2X\n\t"</span> </div> +<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="stringliteral">" brcc _Li2c_read_bit ;while receiv reg not full \n\t"</span></div> +<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="stringliteral">" ;; 15C + 2X for one bit loop \n\t"</span> </div> +<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  </div> +<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="stringliteral">"_Li2c_put_ack: \n\t"</span> </div> +<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; 2C \n\t"</span> </div> +<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="stringliteral">" cpi r24,0 ;; 3C \n\t"</span> </div> +<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="stringliteral">" breq _Li2c_put_ack_low ;if (ack=0) ;; 5C \n\t"</span> </div> +<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t"</span> </div> +<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="stringliteral">" rjmp _Li2c_put_ack_high \n\t"</span> </div> +<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="stringliteral">"_Li2c_put_ack_low: ;else \n\t"</span> </div> +<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low ;; 7C \n\t"</span> </div> +<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="stringliteral">"_Li2c_put_ack_high: \n\t"</span> </div> +<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> #<span class="keywordflow">if</span> I2C_DELAY_COUNTER >= 1</div> +<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 7C + X \n\t"</span> </div> +<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> #endif</div> +<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; 9C +X \n\t"</span> </div> +<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="stringliteral">" cln ;clear N ;; +1 = 10C\n\t"</span></div> +<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;wait SCL high ;; 12C + X\n\t"</span> </div> +<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high \n\t"</span></div> +<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> #<span class="keywordflow">if</span> I2C_DELAY_COUNTER >= 1</div> +<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 11C + 2X\n\t"</span> </div> +<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> #endif</div> +<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="stringliteral">"_Li2c_read_return: \n\t"</span></div> +<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="stringliteral">"sbi %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t"</span></div> +<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="stringliteral">" mov r24,r23 ;; 12C + 2X \n\t"</span></div> +<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="stringliteral">" clr r25 ;; 13 C + 2X\n\t"</span></div> +<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="stringliteral">" ret ;; 17C + X"</span></div> +<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  ::</div> +<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  [SCLDDR] <span class="stringliteral">"I"</span> (SCL_DDR), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), [SCLIN] <span class="stringliteral">"I"</span> (SCL_IN),</div> +<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  [SDADDR] <span class="stringliteral">"I"</span> (SDA_DDR), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN), [SDAIN] <span class="stringliteral">"I"</span> (SDA_IN) </div> +<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  ); </div> +<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">return</span> <span class="charliteral">' '</span>; <span class="comment">// fool the compiler!</span></div> +<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> }</div> +<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> </div> +<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor">#error "ONLY SUPPORTED ON AVR PROCESSORS"</span></div> +<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="preprocessor">#endif // defined (__AVR__)</span></div> +<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> </div> +<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div> +<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div> +<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div> +</div><!-- fragment --></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/annotated.html b/libraries/LiquidCrystal/utility/docs/html/annotated.html new file mode 100644 index 0000000000000000000000000000000000000000..e4ed894e04fb2d163d6b6cfe2434980b4883f760 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/annotated.html @@ -0,0 +1,115 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Class List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Class List</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_i2_c_i_o.html" target="_self">I2CIO</a></td><td class="desc"></td></tr> +<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_l_c_d.html" target="_self">LCD</a></td><td class="desc"></td></tr> +<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal.html" target="_self">LiquidCrystal</a></td><td class="desc"></td></tr> +<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___i2_c.html" target="_self">LiquidCrystal_I2C</a></td><td class="desc"></td></tr> +<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___i2_c___by_vac.html" target="_self">LiquidCrystal_I2C_ByVac</a></td><td class="desc"></td></tr> +<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_i2_c.html" target="_self">LiquidCrystal_SI2C</a></td><td class="desc"></td></tr> +<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_r.html" target="_self">LiquidCrystal_SR</a></td><td class="desc"></td></tr> +<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_r1_w.html" target="_self">LiquidCrystal_SR1W</a></td><td class="desc"></td></tr> +<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_r2_w.html" target="_self">LiquidCrystal_SR2W</a></td><td class="desc"></td></tr> +<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_r3_w.html" target="_self">LiquidCrystal_SR3W</a></td><td class="desc"></td></tr> +<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_s_i2_c_i_o.html" target="_self">SI2CIO</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/annotated_dup.js b/libraries/LiquidCrystal/utility/docs/html/annotated_dup.js new file mode 100644 index 0000000000000000000000000000000000000000..b5723f30481d684dbc70bcdf39ef339d9f0b3654 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/annotated_dup.js @@ -0,0 +1,15 @@ +var annotated_dup = +[ + [ "I2CIO", "class_i2_c_i_o.html", "class_i2_c_i_o" ], + [ "LCD", "class_l_c_d.html", "class_l_c_d" ], + [ "LiquidCrystal", "class_liquid_crystal.html", "class_liquid_crystal" ], + [ "LiquidCrystal_I2C", "class_liquid_crystal___i2_c.html", "class_liquid_crystal___i2_c" ], + [ "LiquidCrystal_I2C_ByVac", "class_liquid_crystal___i2_c___by_vac.html", "class_liquid_crystal___i2_c___by_vac" ], + [ "LiquidCrystal_SI2C", "class_liquid_crystal___s_i2_c.html", "class_liquid_crystal___s_i2_c" ], + [ "LiquidCrystal_SR", "class_liquid_crystal___s_r.html", "class_liquid_crystal___s_r" ], + [ "LiquidCrystal_SR1W", "class_liquid_crystal___s_r1_w.html", "class_liquid_crystal___s_r1_w" ], + [ "LiquidCrystal_SR2W", "class_liquid_crystal___s_r2_w.html", "class_liquid_crystal___s_r2_w" ], + [ "LiquidCrystal_SR3W", "class_liquid_crystal___s_r3_w.html", "class_liquid_crystal___s_r3_w" ], + [ "SI2CIO", "class_s_i2_c_i_o.html", "class_s_i2_c_i_o" ], + [ "SoftI2CMaster", "class_soft_i2_c_master.html", "class_soft_i2_c_master" ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/arrowdown.png b/libraries/LiquidCrystal/utility/docs/html/arrowdown.png new file mode 100644 index 0000000000000000000000000000000000000000..0b63f6d38c4b9ec907b820192ebe9724ed6eca22 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/arrowdown.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/arrowright.png b/libraries/LiquidCrystal/utility/docs/html/arrowright.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ee22f937a07d1dbfc27c669d11f8ed13e2f152 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/arrowright.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/bc_s.png b/libraries/LiquidCrystal/utility/docs/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/bc_s.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/bdwn.png b/libraries/LiquidCrystal/utility/docs/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/bdwn.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o-members.html b/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o-members.html new file mode 100644 index 0000000000000000000000000000000000000000..d8fe66098ba9c151583f62c7ece9ee1b5a7002d0 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o-members.html @@ -0,0 +1,111 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">I2CIO Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_i2_c_i_o.html">I2CIO</a>, including all inherited members.</p> +<table class="directory"> + <tr class="even"><td class="entry"><a class="el" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">begin</a>(uint8_t i2cAddr)</td><td class="entry"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">digitalRead</a>(uint8_t pin)</td><td class="entry"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">digitalWrite</a>(uint8_t pin, uint8_t level)</td><td class="entry"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO</a>()</td><td class="entry"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">pinMode</a>(uint8_t pin, uint8_t dir)</td><td class="entry"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">portMode</a>(uint8_t dir)</td><td class="entry"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">read</a>(void)</td><td class="entry"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_i2_c_i_o.html">I2CIO</a></td><td class="entry"></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o.html b/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o.html new file mode 100644 index 0000000000000000000000000000000000000000..597182b96392a31fa36b69a7f4e882d81bb90e8a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o.html @@ -0,0 +1,330 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: I2CIO Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_i2_c_i_o-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">I2CIO Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a32eb7832075ad6011d67874405a0d0a6"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO</a> ()</td></tr> +<tr class="separator:a32eb7832075ad6011d67874405a0d0a6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f814653d903dc2ff6e8420eeb7954ae"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">begin</a> (uint8_t i2cAddr)</td></tr> +<tr class="separator:a6f814653d903dc2ff6e8420eeb7954ae"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a53b94274eb6bb68564cf5243323db887"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">pinMode</a> (uint8_t pin, uint8_t dir)</td></tr> +<tr class="separator:a53b94274eb6bb68564cf5243323db887"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0341888753bc54c4384f5593a870fb34"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">portMode</a> (uint8_t dir)</td></tr> +<tr class="separator:a0341888753bc54c4384f5593a870fb34"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7a3db7bfc15ede0ae9e8c8bd44290ef7"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">read</a> (void)</td></tr> +<tr class="separator:a7a3db7bfc15ede0ae9e8c8bd44290ef7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac26221011a8b49bcea9ef62712ea88a7"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">digitalRead</a> (uint8_t pin)</td></tr> +<tr class="separator:ac26221011a8b49bcea9ef62712ea88a7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae2063569c927d0008e2593d14504fdcd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">write</a> (uint8_t value)</td></tr> +<tr class="separator:ae2063569c927d0008e2593d14504fdcd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a473206162522b847546777d16a7c6dcd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">digitalWrite</a> (uint8_t pin, uint8_t level)</td></tr> +<tr class="separator:a473206162522b847546777d16a7c6dcd"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="a32eb7832075ad6011d67874405a0d0a6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">I2CIO::I2CIO </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Constructor method Class constructor constructor. </p> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a6f814653d903dc2ff6e8420eeb7954ae"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int I2CIO::begin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>i2cAddr</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Initializes the device. This method initializes the device allocating an I2C address. This method is the first method that should be call prior to calling any other method form this class. On initialization all pins are configured as INPUT on the device.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">i2cAddr</td><td>I2C Address where the device is located. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>1 if the device was initialized correctly, 0 otherwise </dd></dl> + +</div> +</div> +<a class="anchor" id="ac26221011a8b49bcea9ef62712ea88a7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t I2CIO::digitalRead </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Read a pin from the device. Reads a particular pin from the device. To read a particular pin it has to be configured as INPUT. During initialization all pins are configured as INPUTs by default. Please refer to pinMode or portMode.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Pin from the port to read its status. Range (0..7) </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>Returns the pin status (HIGH, LOW) if the pin is configured as an output, reading its value will always return LOW regardless of its real state. </dd></dl> + +</div> +</div> +<a class="anchor" id="a473206162522b847546777d16a7c6dcd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int I2CIO::digitalWrite </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>level</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Writes a digital level to a particular pin. Write a level to the indicated pin of the device. For this method to have effect, the pin has to be configured as OUTPUT using the pinMode or portMode methods.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>device pin to change level. Range (0..7). level[in] logic level to set the pin at (HIGH, LOW). </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>1 on success, 0 otherwise. </dd></dl> + +</div> +</div> +<a class="anchor" id="a53b94274eb6bb68564cf5243323db887"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void I2CIO::pinMode </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>dir</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Sets the mode of a particular pin. Sets the mode of a particular pin to INPUT, OUTPUT. digitalWrite has no effect on pins which are not declared as output.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Pin from the I2C IO expander to be configured. Range 0..7 </td></tr> + <tr><td class="paramname">dir[in]</td><td>Pin direction (INPUT, OUTPUT). </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a0341888753bc54c4384f5593a870fb34"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void I2CIO::portMode </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>dir</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Sets all the pins of the device in a particular direction. This method sets all the pins of the device in a particular direction. This method is useful to set all the pins of the device to be either inputs or outputs. </p><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">dir[in]</td><td>Direction of all the pins of the device (INPUT, OUTPUT). </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a7a3db7bfc15ede0ae9e8c8bd44290ef7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t I2CIO::read </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Reads all the pins of the device that are configured as INPUT. Reads from the device the status of the pins that are configured as INPUT. During initialization all pins are configured as INPUTs by default. Please refer to pinMode or portMode.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ae2063569c927d0008e2593d14504fdcd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int I2CIO::write </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Write a value to the device. Writes to a set of pins in the device. The value is the binary representation of all the pins in device. The value written is masked with the configuration of the direction of the pins; to change the state of a particular pin with this method, such pin has to be configured as OUTPUT using the portMode or pinMode methods. If no pins have been configured as OUTPUTs this method will have no effect.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>value to be written to the device. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>1 on success, 0 otherwise </dd></dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_i2_c_i_o_8h_source.html">I2CIO.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/I2CIO.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o.js b/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o.js new file mode 100644 index 0000000000000000000000000000000000000000..d39ab9c80824915bdc3e2797a996888ac3ac5227 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_i2_c_i_o.js @@ -0,0 +1,11 @@ +var class_i2_c_i_o = +[ + [ "I2CIO", "class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6", null ], + [ "begin", "class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae", null ], + [ "digitalRead", "class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7", null ], + [ "digitalWrite", "class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd", null ], + [ "pinMode", "class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887", null ], + [ "portMode", "class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34", null ], + [ "read", "class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7", null ], + [ "write", "class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_l_c_d-members.html b/libraries/LiquidCrystal/utility/docs/html/class_l_c_d-members.html new file mode 100644 index 0000000000000000000000000000000000000000..b1a953fd264be1d014a4437f25db9690843b384c --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_l_c_d-members.html @@ -0,0 +1,136 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LCD Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_l_c_d.html">LCD</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">setBacklight</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>(uint8_t value, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.html b/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.html new file mode 100644 index 0000000000000000000000000000000000000000..2e26a21ed015ed70bbde0921dfb7f45af96a1dc5 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.html @@ -0,0 +1,887 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LCD Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="#pro-attribs">Protected Attributes</a> | +<a href="class_l_c_d-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LCD Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LCD:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_l_c_d.png" usemap="#LCD_map" alt=""/> + <map id="LCD_map" name="LCD_map"> +<area href="class_liquid_crystal.html" alt="LiquidCrystal" shape="rect" coords="166,112,322,136"/> +<area href="class_liquid_crystal___i2_c.html" alt="LiquidCrystal_I2C" shape="rect" coords="166,168,322,192"/> +<area href="class_liquid_crystal___i2_c___by_vac.html" alt="LiquidCrystal_I2C_ByVac" shape="rect" coords="166,224,322,248"/> +<area href="class_liquid_crystal___s_i2_c.html" alt="LiquidCrystal_SI2C" shape="rect" coords="166,280,322,304"/> +<area href="class_liquid_crystal___s_r.html" alt="LiquidCrystal_SR" shape="rect" coords="166,336,322,360"/> +<area href="class_liquid_crystal___s_r1_w.html" alt="LiquidCrystal_SR1W" shape="rect" coords="166,392,322,416"/> +<area href="class_liquid_crystal___s_r2_w.html" alt="LiquidCrystal_SR2W" shape="rect" coords="166,448,322,472"/> +<area href="class_liquid_crystal___s_r3_w.html" alt="LiquidCrystal_SR3W" shape="rect" coords="166,504,322,528"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3f587d1cbb2d59765ef60a5216b56fea"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:a3f587d1cbb2d59765ef60a5216b56fea"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a53f4ee9b39d9ab3d7ae4d9f8dedca3bc"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a> (uint8_t value, t_backlighPol pol)</td></tr> +<tr class="separator:a53f4ee9b39d9ab3d7ae4d9f8dedca3bc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3305570d7b37eb93f2cf840263c15828"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">setBacklight</a> (uint8_t value)</td></tr> +<tr class="separator:a3305570d7b37eb93f2cf840263c15828"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a> +Protected Attributes</h2></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="a00bb2db1390721abc7b24ac4b8c276c8"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LCD::LCD </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a> abstract constructor. <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a> class abstract constructor needed to create the base abstract class. </p> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="abb3ed88d530f6283e6159b4973e7da9e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::autoscroll </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Turns on automatic scrolling of the <a class="el" href="class_l_c_d.html">LCD</a>. Turns on automatic scrolling of the <a class="el" href="class_l_c_d.html">LCD</a>. This causes each character output to the display to push previous characters over by one space. If the current text direction is left-to-right (the default), the display scrolls to the left; if the current direction is right-to-left, the display scrolls to the right. This has the effect of outputting each new character to the same location on the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aba8867fe2210cbfa8db869208709be10"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::backlight </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Switch-on the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>. </dd></dl> + +</div> +</div> +<a class="anchor" id="a3f587d1cbb2d59765ef60a5216b56fea"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LCD::begin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>cols</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>rows</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>charsize</em> = <code>LCD_5x8DOTS</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> initialization. Initializes the <a class="el" href="class_l_c_d.html">LCD</a> to a given size (col, row). This methods initializes the <a class="el" href="class_l_c_d.html">LCD</a>, therefore, it MUST be called prior to using any other method from this class.</p> +<p>This method is abstract, a base implementation is available common to all <a class="el" href="class_l_c_d.html">LCD</a> drivers. Should it not be compatible with some other <a class="el" href="class_l_c_d.html">LCD</a> driver, a derived implementation should be done on the driver specif class.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">cols[in]</td><td>the number of columns that the display has </td></tr> + <tr><td class="paramname">rows[in]</td><td>the number of rows that the display has </td></tr> + <tr><td class="paramname">charsize[in]</td><td>character size, default==LCD_5x8DOTS </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented in <a class="el" href="class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb">LiquidCrystal_SI2C</a>, <a class="el" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">LiquidCrystal_I2C</a>, and <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">LiquidCrystal_I2C_ByVac</a>.</p> + +</div> +</div> +<a class="anchor" id="a878b36878fa8287093964eba83aace77"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::blink </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Display the cursor of the <a class="el" href="class_l_c_d.html">LCD</a>. Display the blinking <a class="el" href="class_l_c_d.html">LCD</a> cursor. If used in combination with the <a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor()</a> function, the result will depend on the particular display.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="afa699e0beeeee03cce8cef87eba81c4a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::clear </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Clears the <a class="el" href="class_l_c_d.html">LCD</a>. Clears the <a class="el" href="class_l_c_d.html">LCD</a> screen and positions the cursor in the upper-left corner.</p> +<p>This operation is time consuming for the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a91cba8f93c692abcddf8bc3de58d2d3a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::createChar </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>location</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>charmap</em>[] </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Creates a custom character for use on the <a class="el" href="class_l_c_d.html">LCD</a>. Create a custom character (glyph) for use on the <a class="el" href="class_l_c_d.html">LCD</a>. Most chipsets only support up to eight characters of 5x8 pixels. Therefore, this methods has been limited to locations (numbered 0 to 7).</p> +<p>The appearance of each custom character is specified by an array of eight bytes, one for each row. The five least significant bits of each byte determine the pixels in that row. To display a custom character on screen, <a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write()</a>/print() its number, i.e. lcd.print (char(x)); // Where x is 0..7.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">location[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> memory location of the character to create (0 to 7) </td></tr> + <tr><td class="paramname">charmap[in]</td><td>the bitmap array representing each row of the character. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a194814f64dfa50a90e07e0fe0d361620"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::cursor </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Display the <a class="el" href="class_l_c_d.html">LCD</a> cursor. Display the <a class="el" href="class_l_c_d.html">LCD</a> cursor: an underscore (line) at the location where the next character will be written.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a5b07cf05e8e5e7c53654f5ca0cf58b89"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::display </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Turns on the <a class="el" href="class_l_c_d.html">LCD</a> display. Turns on the <a class="el" href="class_l_c_d.html">LCD</a> display, after it's been turned off with <a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay()</a>. This will restore the text (and cursor location) that was on the display prior to calling <a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay()</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aee45ad37f09312f5d9982257e2d37e68"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::home </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Sets the cursor to the upper-left corner. Positions the cursor in the upper-left of the <a class="el" href="class_l_c_d.html">LCD</a>. That is, use that location in outputting subsequent text to the display. To also clear the display, use the <a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear()</a> function instead.</p> +<p>This operation is time consuming for the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a238e9f6476dc7df64af04eb6c87f6ac7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::leftToRight </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the direction for text written to the <a class="el" href="class_l_c_d.html">LCD</a> to left-to-right. Set the direction for text written to the <a class="el" href="class_l_c_d.html">LCD</a> to left-to-right. All subsequent characters written to the display will go from left to right, but does not affect previously-output text.</p> +<p>This is the default configuration.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aad2abc99d1aca5403873579d9d72c2d4"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::moveCursorLeft </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Moves the cursor one space to the left. </p><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a09eec0c712e54b066f5894635c1fe75c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::moveCursorRight </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Moves the cursor one space to the right.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a96035dde40efbf73390e00b5beb00231"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::noAutoscroll </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Turns off automatic scrolling of the <a class="el" href="class_l_c_d.html">LCD</a>. Turns off automatic scrolling of the <a class="el" href="class_l_c_d.html">LCD</a>, this is the default configuration of the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a2a331b4e142734411b2f1cfaffe7a488"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::noBacklight </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Switch-off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>. </dd></dl> + +</div> +</div> +<a class="anchor" id="a3b755c4b397b5985752be8c30ee1a9b5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::noBlink </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Turns off the blinking of the <a class="el" href="class_l_c_d.html">LCD</a> cursor.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aec8ffaa1e69c7a6e13ac0cfbc29151d9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::noCursor </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Hides the <a class="el" href="class_l_c_d.html">LCD</a> cursor.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="af3974da6d988ba2d21c25135ada12108"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::noDisplay </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Turns off the <a class="el" href="class_l_c_d.html">LCD</a> display. Turns off the <a class="el" href="class_l_c_d.html">LCD</a> display, without losing the text currently being displayed on it.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a191639be183be1476c9bfe6d455d23b2"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::off </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Switch off the <a class="el" href="class_l_c_d.html">LCD</a> module. Switch off the <a class="el" href="class_l_c_d.html">LCD</a> module, it will switch off the <a class="el" href="class_l_c_d.html">LCD</a> controller and the backlight. This method has the same effect of calling noDisplay and noBacklight. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>, </dd> +<dd> +<a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> </dd></dl> + +</div> +</div> +<a class="anchor" id="a718da3a638deb59bd1c7a5222a52d98a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::on </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Switch on the <a class="el" href="class_l_c_d.html">LCD</a> module. Switch on the <a class="el" href="class_l_c_d.html">LCD</a> module, it will switch on the <a class="el" href="class_l_c_d.html">LCD</a> controller and the backlight. This method has the same effect of calling display and backlight. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>, </dd> +<dd> +<a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> </dd></dl> + +</div> +</div> +<a class="anchor" id="ac014830eadc26bfd86308ea8734f4428"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::rightToLeft </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Set the direction for text written to the <a class="el" href="class_l_c_d.html">LCD</a> to right-to-left. Set the direction for text written to the <a class="el" href="class_l_c_d.html">LCD</a> to right-to-left. All subsequent characters written to the display will go from right to left, but does not affect previously-output text.</p> +<p>left-to-right is the default configuration.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a6f3a503055b3b8dcf0f61b2633c584f7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::scrollDisplayLeft </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Scrolls the contents of the display (text and cursor) one space to the left.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="abfc44b294772f09020bfa32af8a79571"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::scrollDisplayRight </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Scrolls the contents of the display (text and cursor) one space to the right.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a3305570d7b37eb93f2cf840263c15828"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">virtual void LCD::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Sets the pin to control the backlight. Sets the pin in the device to control the backlight. The behaviour of this method is very dependent on the device. Some controllers support dimming some don't. Please read the actual header file for each individual device. The setBacklightPin method has to be called before setting the backlight or the adequate backlight control constructor. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>.</dd></dl> +<p>NOTE: The prefered methods to control the backlight are "backlight" and "noBacklight".</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">0..255</td><td>- the value is very dependent on the <a class="el" href="class_l_c_d.html">LCD</a>. However, BACKLIGHT_OFF will be interpreted as off and BACKLIGHT_ON will drive the backlight on. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented in <a class="el" href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">LiquidCrystal_SR1W</a>, <a class="el" href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">LiquidCrystal_SR2W</a>, <a class="el" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">LiquidCrystal_SR3W</a>, <a class="el" href="class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d">LiquidCrystal_SI2C</a>, <a class="el" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">LiquidCrystal_I2C</a>, <a class="el" href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">LiquidCrystal_SR</a>, <a class="el" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">LiquidCrystal</a>, and <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">LiquidCrystal_I2C_ByVac</a>.</p> + +</div> +</div> +<a class="anchor" id="a53f4ee9b39d9ab3d7ae4d9f8dedca3bc"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">virtual void LCD::setBacklightPin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_backlighPol </td> + <td class="paramname"><em>pol</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Sets the pin to control the backlight. Sets the pin in the device to control the backlight. This method is device dependent and can be programmed on each subclass. An empty function call is provided that does nothing.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>pin associated to backlight control. </td></tr> + <tr><td class="paramname">pol</td><td>backlight polarity control (POSITIVE, NEGATIVE) </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented in <a class="el" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">LiquidCrystal_SR3W</a>, <a class="el" href="class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa">LiquidCrystal_SI2C</a>, <a class="el" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">LiquidCrystal_I2C</a>, <a class="el" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">LiquidCrystal_SR</a>, and <a class="el" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">LiquidCrystal</a>.</p> + +</div> +</div> +<a class="anchor" id="a48220450fd152b25994eb7d0ba340e8d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LCD::setCursor </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>col</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>row</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Position the <a class="el" href="class_l_c_d.html">LCD</a> cursor. Sets the position of the <a class="el" href="class_l_c_d.html">LCD</a> cursor. Set the location at which subsequent text written to the <a class="el" href="class_l_c_d.html">LCD</a> will be displayed.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">col[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> column </td></tr> + <tr><td class="paramname">row[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> row - line. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a2d89cc2e62f72afb5f15a7fd812900e3"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LCD::write </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Writes to the <a class="el" href="class_l_c_d.html">LCD</a>. This method writes character to the <a class="el" href="class_l_c_d.html">LCD</a> in the current cursor position.</p> +<p>This is the virtual write method, implemented in the Print class, therefore all Print class methods will end up calling this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to write to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_l_c_d_8h_source.html">LCD.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LCD.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.js b/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.js new file mode 100644 index 0000000000000000000000000000000000000000..2f9a0cbbe219822c19cbcf14cf1e60062a785db1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.js @@ -0,0 +1,36 @@ +var class_l_c_d = +[ + [ "LCD", "class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8", null ], + [ "autoscroll", "class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e", null ], + [ "backlight", "class_l_c_d.html#aba8867fe2210cbfa8db869208709be10", null ], + [ "begin", "class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea", null ], + [ "blink", "class_l_c_d.html#a878b36878fa8287093964eba83aace77", null ], + [ "clear", "class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a", null ], + [ "createChar", "class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a", null ], + [ "cursor", "class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620", null ], + [ "display", "class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89", null ], + [ "home", "class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68", null ], + [ "leftToRight", "class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7", null ], + [ "moveCursorLeft", "class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4", null ], + [ "moveCursorRight", "class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c", null ], + [ "noAutoscroll", "class_l_c_d.html#a96035dde40efbf73390e00b5beb00231", null ], + [ "noBacklight", "class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488", null ], + [ "noBlink", "class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5", null ], + [ "noCursor", "class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9", null ], + [ "noDisplay", "class_l_c_d.html#af3974da6d988ba2d21c25135ada12108", null ], + [ "off", "class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2", null ], + [ "on", "class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a", null ], + [ "rightToLeft", "class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428", null ], + [ "scrollDisplayLeft", "class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7", null ], + [ "scrollDisplayRight", "class_l_c_d.html#abfc44b294772f09020bfa32af8a79571", null ], + [ "setBacklight", "class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828", null ], + [ "setBacklightPin", "class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc", null ], + [ "setCursor", "class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d", null ], + [ "write", "class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3", null ], + [ "_cols", "class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0", null ], + [ "_displaycontrol", "class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4", null ], + [ "_displayfunction", "class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f", null ], + [ "_displaymode", "class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c", null ], + [ "_numlines", "class_l_c_d.html#ac1374911fb145fea430c21092ada0c06", null ], + [ "_polarity", "class_l_c_d.html#a990338759d2abe10b0fb1743b7789566", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.png b/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.png new file mode 100644 index 0000000000000000000000000000000000000000..6244522096bc39ec7c94fbf9df7fd5dd9930ba31 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_l_c_d.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal-members.html new file mode 100644 index 0000000000000000000000000000000000000000..33f64b1e4d012678a620db568d7b9172189d3749 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal-members.html @@ -0,0 +1,145 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a>(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal</b>(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7) (defined in <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>LiquidCrystal</b>(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlightPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal</b>(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlightPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec">LiquidCrystal</a>(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal</b>(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) (defined in <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>LiquidCrystal</b>(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t backlightPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal</b>(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t backlightPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089">send</a>(uint8_t value, uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">setBacklight</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a>(uint8_t pin, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.html new file mode 100644 index 0000000000000000000000000000000000000000..20f1d4d2d78b57805e7d51edbc4f70399b73134d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.html @@ -0,0 +1,477 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LiquidCrystal Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_liquid_crystal-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal.png" usemap="#LiquidCrystal_map" alt=""/> + <map id="LiquidCrystal_map" name="LiquidCrystal_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,56,85,80"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a49d2bd8d26031a1c83bcbd73978a1686"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a> (uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td></tr> +<tr class="separator:a49d2bd8d26031a1c83bcbd73978a1686"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a30e3d865c4b4a003a36cb45903f93644"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a30e3d865c4b4a003a36cb45903f93644"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal</b> (uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td></tr> +<tr class="separator:a30e3d865c4b4a003a36cb45903f93644"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aff2330186495fde93370d46c0ca2cbf0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff2330186495fde93370d46c0ca2cbf0"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal</b> (uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlightPin, t_backlighPol pol)</td></tr> +<tr class="separator:aff2330186495fde93370d46c0ca2cbf0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae0c3c8f7661634b1400f00a1c9c02c26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0c3c8f7661634b1400f00a1c9c02c26"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal</b> (uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlightPin, t_backlighPol pol)</td></tr> +<tr class="separator:ae0c3c8f7661634b1400f00a1c9c02c26"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0a0a8dfa7a2e775a031fd65f5c6366ec"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec">LiquidCrystal</a> (uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</td></tr> +<tr class="separator:a0a0a8dfa7a2e775a031fd65f5c6366ec"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a23124e6dd5ac4a9b6147629b96e91953"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23124e6dd5ac4a9b6147629b96e91953"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal</b> (uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</td></tr> +<tr class="separator:a23124e6dd5ac4a9b6147629b96e91953"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a8b90122c67a6d14b967c8a11ba490670"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b90122c67a6d14b967c8a11ba490670"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal</b> (uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t backlightPin, t_backlighPol pol)</td></tr> +<tr class="separator:a8b90122c67a6d14b967c8a11ba490670"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a52a4de3d866e347208a32dfc9d797729"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52a4de3d866e347208a32dfc9d797729"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal</b> (uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t backlightPin, t_backlighPol pol)</td></tr> +<tr class="separator:a52a4de3d866e347208a32dfc9d797729"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a56142f8b3753bedd133e4139e5eb5089"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089">send</a> (uint8_t value, uint8_t mode)</td></tr> +<tr class="separator:a56142f8b3753bedd133e4139e5eb5089"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a63740dc1198d8169a39d9c6daff0efc9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a> (uint8_t pin, t_backlighPol pol)</td></tr> +<tr class="separator:a63740dc1198d8169a39d9c6daff0efc9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa2b898366e1c656ac313b9007c98cebd"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">setBacklight</a> (uint8_t value)</td></tr> +<tr class="separator:aa2b898366e1c656ac313b9007c98cebd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="inherit_header pub_methods_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_l_c_d')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> +Additional Inherited Members</h2></td></tr> +<tr class="inherit_header pro_attribs_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_l_c_d')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="a49d2bd8d26031a1c83bcbd73978a1686"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal::LiquidCrystal </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>rs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>enable</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d0</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d1</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d2</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d3</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d4</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d5</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d6</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d7</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>8 bit <a class="el" href="class_l_c_d.html">LCD</a> constructors. Defines the pin assignment that the <a class="el" href="class_l_c_d.html">LCD</a> will have. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>. </p> + +</div> +</div> +<a class="anchor" id="a0a0a8dfa7a2e775a031fd65f5c6366ec"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal::LiquidCrystal </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>rs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>rw</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>enable</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d0</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d1</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d2</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d3</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>4 bit <a class="el" href="class_l_c_d.html">LCD</a> constructors. Defines the pin assignment that the <a class="el" href="class_l_c_d.html">LCD</a> will have. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>. </p> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a56142f8b3753bedd133e4139e5eb5089"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command.</p> +<p>Users should never call this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>mode LOW - write to the <a class="el" href="class_l_c_d.html">LCD</a> CGRAM, HIGH - write a command to the <a class="el" href="class_l_c_d.html">LCD</a>. </dd></dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="aa2b898366e1c656ac313b9007c98cebd"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a>. For dimming control of the <a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>, the configuration pin must be a PWM output pin. Dim control is achieved by passing a value from 1 to 255 as a parameter. If the pin configured when calling the <a class="el" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">setBacklightPin</a> does not support PWM, then: (0) <a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> <a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>, (1..255) <a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> <a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>backlight value. 0: off, 1..255: dim control of the backlight. For negative logic 255: off, 254..0: dim control. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a63740dc1198d8169a39d9c6daff0efc9"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal::setBacklightPin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_backlighPol </td> + <td class="paramname"><em>pol</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Sets the pin to control the backlight. Sets the pin in the device to control the backlight.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">pin</td><td>pin assigned to the backlight </td></tr> + <tr><td class="paramname">pol</td><td>backlight pin control polarity (POSITIVE, NEGATIVE). </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">LCD</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_liquid_crystal_8h_source.html">LiquidCrystal.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.js b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.js new file mode 100644 index 0000000000000000000000000000000000000000..8cff7f4ebc96f33dd235b6f33a1bddace5af5c91 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.js @@ -0,0 +1,14 @@ +var class_liquid_crystal = +[ + [ "LiquidCrystal", "class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686", null ], + [ "LiquidCrystal", "class_liquid_crystal.html#a30e3d865c4b4a003a36cb45903f93644", null ], + [ "LiquidCrystal", "class_liquid_crystal.html#aff2330186495fde93370d46c0ca2cbf0", null ], + [ "LiquidCrystal", "class_liquid_crystal.html#ae0c3c8f7661634b1400f00a1c9c02c26", null ], + [ "LiquidCrystal", "class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec", null ], + [ "LiquidCrystal", "class_liquid_crystal.html#a23124e6dd5ac4a9b6147629b96e91953", null ], + [ "LiquidCrystal", "class_liquid_crystal.html#a8b90122c67a6d14b967c8a11ba490670", null ], + [ "LiquidCrystal", "class_liquid_crystal.html#a52a4de3d866e347208a32dfc9d797729", null ], + [ "send", "class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089", null ], + [ "setBacklight", "class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd", null ], + [ "setBacklightPin", "class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.png new file mode 100644 index 0000000000000000000000000000000000000000..85a5b0c1d37941abc3833d94d8398c047c76b49d Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c-members.html new file mode 100644 index 0000000000000000000000000000000000000000..ff15fbecb1af373cd97ca7d84556034bd3d628c8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c-members.html @@ -0,0 +1,143 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a>(uint8_t lcd_Addr)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal_I2C</b>(uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce">LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal_I2C</b>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t backlighPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654">LiquidCrystal_I2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal_I2C</b>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4">send</a>(uint8_t value, uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">setBacklight</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">setBacklightPin</a>(uint8_t value, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.html new file mode 100644 index 0000000000000000000000000000000000000000..adf00607ede1b5766b631327ee49be2961627c46 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.html @@ -0,0 +1,536 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LiquidCrystal_I2C Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_liquid_crystal___i2_c-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal_I2C:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal___i2_c.png" usemap="#LiquidCrystal_I2C_map" alt=""/> + <map id="LiquidCrystal_I2C_map" name="LiquidCrystal_I2C_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,56,111,80"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:aac537d195557e0b8afac1a71441a484c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a> (uint8_t lcd_Addr)</td></tr> +<tr class="separator:aac537d195557e0b8afac1a71441a484c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9fc9bc519ebbf7503dadc11622e02ed6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9fc9bc519ebbf7503dadc11622e02ed6"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal_I2C</b> (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol)</td></tr> +<tr class="separator:a9fc9bc519ebbf7503dadc11622e02ed6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a517f8847ebf09f0eacfb9c7232975fce"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce">LiquidCrystal_I2C</a> (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)</td></tr> +<tr class="separator:a517f8847ebf09f0eacfb9c7232975fce"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:add1f2da7de4ec9b9cd5c9b5fab712464"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add1f2da7de4ec9b9cd5c9b5fab712464"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal_I2C</b> (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t backlighPin, t_backlighPol pol)</td></tr> +<tr class="separator:add1f2da7de4ec9b9cd5c9b5fab712464"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7d9b54d3a91fa0e0e50db27cda6b4654"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654">LiquidCrystal_I2C</a> (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td></tr> +<tr class="separator:a7d9b54d3a91fa0e0e50db27cda6b4654"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab15622287533de7a47f3e2012ebf18be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab15622287533de7a47f3e2012ebf18be"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal_I2C</b> (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol)</td></tr> +<tr class="separator:ab15622287533de7a47f3e2012ebf18be"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aeee2ada537f0cfbfda8613324b57c4a6"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:aeee2ada537f0cfbfda8613324b57c4a6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a8bf1fab7efe13e8b17b96c42d1f810b4"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4">send</a> (uint8_t value, uint8_t mode)</td></tr> +<tr class="separator:a8bf1fab7efe13e8b17b96c42d1f810b4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2eaf86f62d1f169b3763b03fbf88f70b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">setBacklightPin</a> (uint8_t value, t_backlighPol pol)</td></tr> +<tr class="separator:a2eaf86f62d1f169b3763b03fbf88f70b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af11b8fa0082616e2b6e6e4238589d8a8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">setBacklight</a> (uint8_t value)</td></tr> +<tr class="separator:af11b8fa0082616e2b6e6e4238589d8a8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="inherit_header pub_methods_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_l_c_d')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> +Additional Inherited Members</h2></td></tr> +<tr class="inherit_header pro_attribs_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_l_c_d')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="aac537d195557e0b8afac1a71441a484c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_I2C::LiquidCrystal_I2C </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>lcd_Addr</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the I2C address of the <a class="el" href="class_l_c_d.html">LCD</a>. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">lcd_Addr[in]</td><td>I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a517f8847ebf09f0eacfb9c7232975fce"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_I2C::LiquidCrystal_I2C </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>lcd_Addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>En</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rw</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rs</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the I2C address of the <a class="el" href="class_l_c_d.html">LCD</a>. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">lcd_Addr[in]</td><td>I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. </td></tr> + <tr><td class="paramname">En[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> En (Enable) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">Rw[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rw (Read/write) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">Rs[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rs (Reset) pin connected to the IO extender module </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a7d9b54d3a91fa0e0e50db27cda6b4654"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_I2C::LiquidCrystal_I2C </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>lcd_Addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>En</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rw</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d4</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d5</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d6</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d7</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the I2C address of the <a class="el" href="class_l_c_d.html">LCD</a>. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">lcd_Addr[in]</td><td>I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. </td></tr> + <tr><td class="paramname">En[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> En (Enable) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">Rw[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rw (Read/write) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">Rs[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rs (Reset) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">d4[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 0 pin map on IO extender module </td></tr> + <tr><td class="paramname">d5[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 1 pin map on IO extender module </td></tr> + <tr><td class="paramname">d6[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 2 pin map on IO extender module </td></tr> + <tr><td class="paramname">d7[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 3 pin map on IO extender module </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="aeee2ada537f0cfbfda8613324b57c4a6"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_I2C::begin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>cols</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>rows</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>charsize</em> = <code>LCD_5x8DOTS</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> initialization and associated HW. Initializes the <a class="el" href="class_l_c_d.html">LCD</a> to a given size (col, row). This methods initializes the <a class="el" href="class_l_c_d.html">LCD</a>, therefore, it MUST be called prior to using any other method from this class or parent class.</p> +<p>The begin method can be overloaded if necessary to initialize any HW that is implemented by a library and can't be done during construction, here we use the Wire class.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">cols[in]</td><td>the number of columns that the display has </td></tr> + <tr><td class="paramname">rows[in]</td><td>the number of rows that the display has </td></tr> + <tr><td class="paramname">charsize[in]</td><td>size of the characters of the <a class="el" href="class_l_c_d.html">LCD</a>: LCD_5x8DOTS or LCD_5x10DOTS. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a8bf1fab7efe13e8b17b96c42d1f810b4"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_I2C::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command.</p> +<p>Users should never call this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + <tr><td class="paramname">mode[in]</td><td>DATA - write to the <a class="el" href="class_l_c_d.html">LCD</a> CGRAM, COMMAND - write a command to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="af11b8fa0082616e2b6e6e4238589d8a8"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_I2C::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">setBacklightPin</a>.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>backlight mode (HIGH|LOW) </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a2eaf86f62d1f169b3763b03fbf88f70b"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_I2C::setBacklightPin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_backlighPol </td> + <td class="paramname"><em>pol</em> = <code>POSITIVE</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Sets the pin to control the backlight. Sets the pin in the device to control the backlight. This device doesn't support dimming backlight capability.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">0</td><td>backlight off, 1..255: backlight on. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">LCD</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_liquid_crystal___i2_c_8h_source.html">LiquidCrystal_I2C.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_I2C.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.js b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.js new file mode 100644 index 0000000000000000000000000000000000000000..d5abd9185c875c0a3982f742a351a8a00e66da06 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.js @@ -0,0 +1,13 @@ +var class_liquid_crystal___i2_c = +[ + [ "LiquidCrystal_I2C", "class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c", null ], + [ "LiquidCrystal_I2C", "class_liquid_crystal___i2_c.html#a9fc9bc519ebbf7503dadc11622e02ed6", null ], + [ "LiquidCrystal_I2C", "class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce", null ], + [ "LiquidCrystal_I2C", "class_liquid_crystal___i2_c.html#add1f2da7de4ec9b9cd5c9b5fab712464", null ], + [ "LiquidCrystal_I2C", "class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654", null ], + [ "LiquidCrystal_I2C", "class_liquid_crystal___i2_c.html#ab15622287533de7a47f3e2012ebf18be", null ], + [ "begin", "class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6", null ], + [ "send", "class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4", null ], + [ "setBacklight", "class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8", null ], + [ "setBacklightPin", "class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.png new file mode 100644 index 0000000000000000000000000000000000000000..b5a4174bbb11b415e8709ad4851a0fb75913f0ca Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac-members.html new file mode 100644 index 0000000000000000000000000000000000000000..363829fb882fdecbfd03debae1568e84a228765e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac-members.html @@ -0,0 +1,139 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C_ByVac Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31">LiquidCrystal_I2C_ByVac</a>(uint8_t lcd_Addr)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1">send</a>(uint8_t value, uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">setBacklight</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>(uint8_t value, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4">setContrast</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.html new file mode 100644 index 0000000000000000000000000000000000000000..1eb50a5edd4314f07acfb4619237951ef2c9ca69 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.html @@ -0,0 +1,381 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LiquidCrystal_I2C_ByVac Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_liquid_crystal___i2_c___by_vac-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_I2C_ByVac Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal_I2C_ByVac:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal___i2_c___by_vac.png" usemap="#LiquidCrystal_I2C_ByVac_map" alt=""/> + <map id="LiquidCrystal_I2C_ByVac_map" name="LiquidCrystal_I2C_ByVac_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,56,156,80"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a29c027cc8bfa78bb8d9ff3124fe83a31"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31">LiquidCrystal_I2C_ByVac</a> (uint8_t lcd_Addr)</td></tr> +<tr class="separator:a29c027cc8bfa78bb8d9ff3124fe83a31"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a34ce9cf919b9f8de59f842a4e94c1abb"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:a34ce9cf919b9f8de59f842a4e94c1abb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9e64cc68ec5df1a0fa421a242239b1b1"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1">send</a> (uint8_t value, uint8_t mode)</td></tr> +<tr class="separator:a9e64cc68ec5df1a0fa421a242239b1b1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9b16e6ce123e2ebe3a3e33b2306e66a7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">setBacklight</a> (uint8_t value)</td></tr> +<tr class="separator:a9b16e6ce123e2ebe3a3e33b2306e66a7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a53c79a20e8d21d2c3bc9e6d0dfc79cb4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4">setContrast</a> (uint8_t value)</td></tr> +<tr class="separator:a53c79a20e8d21d2c3bc9e6d0dfc79cb4"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="inherit_header pub_methods_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_l_c_d')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a53f4ee9b39d9ab3d7ae4d9f8dedca3bc inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a> (uint8_t value, t_backlighPol pol)</td></tr> +<tr class="separator:a53f4ee9b39d9ab3d7ae4d9f8dedca3bc inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> +Additional Inherited Members</h2></td></tr> +<tr class="inherit_header pro_attribs_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_l_c_d')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="a29c027cc8bfa78bb8d9ff3124fe83a31"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_I2C_ByVac::LiquidCrystal_I2C_ByVac </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>lcd_Addr</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the I2C address of the <a class="el" href="class_l_c_d.html">LCD</a>. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">lcd_Addr[in]</td><td>I2C address of the IO expansion module. For BV4218, the address can be configured using the address commands (to be implemented). </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a34ce9cf919b9f8de59f842a4e94c1abb"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_I2C_ByVac::begin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>cols</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>rows</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>charsize</em> = <code>LCD_5x8DOTS</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> initialization and associated HW. Initializes the <a class="el" href="class_l_c_d.html">LCD</a> to a given size (col, row). This methods initializes the <a class="el" href="class_l_c_d.html">LCD</a>, therefore, it MUST be called prior to using any other method from this class or parent class.</p> +<p>The begin method can be overloaded if necessary to initialize any HW that is implemented by a library and can't be done during construction, here we use the Wire class.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">cols[in]</td><td>the number of columns that the display has </td></tr> + <tr><td class="paramname">rows[in]</td><td>the number of rows that the display has </td></tr> + <tr><td class="paramname">charsize[in]</td><td>size of the characters of the <a class="el" href="class_l_c_d.html">LCD</a>: LCD_5x8DOTS or LCD_5x10DOTS. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a9e64cc68ec5df1a0fa421a242239b1b1"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_I2C_ByVac::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command.</p> +<p>Users should never call this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + <tr><td class="paramname">mode[in]</td><td>DATA - write to the <a class="el" href="class_l_c_d.html">LCD</a> CGRAM, COMMAND - write a command to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a9b16e6ce123e2ebe3a3e33b2306e66a7"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_I2C_ByVac::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>backlight mode (HIGH|LOW) </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a53c79a20e8d21d2c3bc9e6d0dfc79cb4"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_I2C_ByVac::setContrast </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> contrast. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> contrast.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>contrast mode (HIGH|LOW) </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_liquid_crystal___i2_c___by_vac_8h_source.html">LiquidCrystal_I2C_ByVac.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_I2C_ByVac.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.js b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.js new file mode 100644 index 0000000000000000000000000000000000000000..7466790ed326ecab33bd409729ead37b86cc8a90 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.js @@ -0,0 +1,8 @@ +var class_liquid_crystal___i2_c___by_vac = +[ + [ "LiquidCrystal_I2C_ByVac", "class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31", null ], + [ "begin", "class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb", null ], + [ "send", "class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1", null ], + [ "setBacklight", "class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7", null ], + [ "setContrast", "class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.png new file mode 100644 index 0000000000000000000000000000000000000000..44537f6222c017b94feecd31484dd83caf658cbe Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___i2_c___by_vac.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c-members.html new file mode 100644 index 0000000000000000000000000000000000000000..41a52cbe5a277242681f81be2b7c3bf6b0abf787 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c-members.html @@ -0,0 +1,143 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SI2C Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a>(uint8_t lcd_Addr)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal_SI2C</b>(uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html#aa1a837dec506f9c459605c7bd4b7fe8c">LiquidCrystal_SI2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal_SI2C</b>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t backlighPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html#ac0e7a4841e03a4e4916c66ff48ea53e9">LiquidCrystal_SI2C</a>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal_SI2C</b>(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9">send</a>(uint8_t value, uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d">setBacklight</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa">setBacklightPin</a>(uint8_t value, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.html new file mode 100644 index 0000000000000000000000000000000000000000..7538fc1ac196140a3aa7218be472a45133785399 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.html @@ -0,0 +1,536 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LiquidCrystal_SI2C Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_liquid_crystal___s_i2_c-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SI2C Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal_SI2C:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal___s_i2_c.png" usemap="#LiquidCrystal_SI2C_map" alt=""/> + <map id="LiquidCrystal_SI2C_map" name="LiquidCrystal_SI2C_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,56,119,80"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:ac77c2e6cca626aeae8838769fb70f7be"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a> (uint8_t lcd_Addr)</td></tr> +<tr class="separator:ac77c2e6cca626aeae8838769fb70f7be"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a79edfbd0842a34f10265cb65576d4879"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79edfbd0842a34f10265cb65576d4879"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal_SI2C</b> (uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol)</td></tr> +<tr class="separator:a79edfbd0842a34f10265cb65576d4879"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa1a837dec506f9c459605c7bd4b7fe8c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_i2_c.html#aa1a837dec506f9c459605c7bd4b7fe8c">LiquidCrystal_SI2C</a> (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)</td></tr> +<tr class="separator:aa1a837dec506f9c459605c7bd4b7fe8c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a806579792d7a37fecdb21e115ec62cf7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a806579792d7a37fecdb21e115ec62cf7"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal_SI2C</b> (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t backlighPin, t_backlighPol pol)</td></tr> +<tr class="separator:a806579792d7a37fecdb21e115ec62cf7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac0e7a4841e03a4e4916c66ff48ea53e9"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_i2_c.html#ac0e7a4841e03a4e4916c66ff48ea53e9">LiquidCrystal_SI2C</a> (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td></tr> +<tr class="separator:ac0e7a4841e03a4e4916c66ff48ea53e9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a85bdea23d3121833d512af3760bd0592"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85bdea23d3121833d512af3760bd0592"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal_SI2C</b> (uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol)</td></tr> +<tr class="separator:a85bdea23d3121833d512af3760bd0592"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a74fde8669f097755a6e8a376bb2877cb"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:a74fde8669f097755a6e8a376bb2877cb"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa882cbbbb14985cab8432686723beaf9"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9">send</a> (uint8_t value, uint8_t mode)</td></tr> +<tr class="separator:aa882cbbbb14985cab8432686723beaf9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a80adc9d27907d9145ad208eba4ae2ffa"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa">setBacklightPin</a> (uint8_t value, t_backlighPol pol)</td></tr> +<tr class="separator:a80adc9d27907d9145ad208eba4ae2ffa"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa64775ef5faa3646385506b4adf7f2d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d">setBacklight</a> (uint8_t value)</td></tr> +<tr class="separator:afa64775ef5faa3646385506b4adf7f2d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="inherit_header pub_methods_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_l_c_d')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> +Additional Inherited Members</h2></td></tr> +<tr class="inherit_header pro_attribs_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_l_c_d')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="ac77c2e6cca626aeae8838769fb70f7be"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SI2C::LiquidCrystal_SI2C </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>lcd_Addr</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the I2C address of the <a class="el" href="class_l_c_d.html">LCD</a>. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">lcd_Addr[in]</td><td>I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="aa1a837dec506f9c459605c7bd4b7fe8c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SI2C::LiquidCrystal_SI2C </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>lcd_Addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>En</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rw</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rs</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the I2C address of the <a class="el" href="class_l_c_d.html">LCD</a>. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">lcd_Addr[in]</td><td>I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. </td></tr> + <tr><td class="paramname">En[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> En (Enable) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">Rw[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rw (Read/write) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">Rs[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rs (Reset) pin connected to the IO extender module </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ac0e7a4841e03a4e4916c66ff48ea53e9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SI2C::LiquidCrystal_SI2C </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>lcd_Addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>En</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rw</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d4</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d5</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d6</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d7</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the I2C address of the <a class="el" href="class_l_c_d.html">LCD</a>. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">lcd_Addr[in]</td><td>I2C address of the IO expansion module. For I2CLCDextraIO, the address can be configured using the on board jumpers. </td></tr> + <tr><td class="paramname">En[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> En (Enable) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">Rw[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rw (Read/write) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">Rs[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rs (Reset) pin connected to the IO extender module </td></tr> + <tr><td class="paramname">d4[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 0 pin map on IO extender module </td></tr> + <tr><td class="paramname">d5[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 1 pin map on IO extender module </td></tr> + <tr><td class="paramname">d6[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 2 pin map on IO extender module </td></tr> + <tr><td class="paramname">d7[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 3 pin map on IO extender module </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a74fde8669f097755a6e8a376bb2877cb"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SI2C::begin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>cols</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>rows</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>charsize</em> = <code>LCD_5x8DOTS</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> initialization and associated HW. Initializes the <a class="el" href="class_l_c_d.html">LCD</a> to a given size (col, row). This methods initializes the <a class="el" href="class_l_c_d.html">LCD</a>, therefore, it MUST be called prior to using any other method from this class or parent class.</p> +<p>The begin method can be overloaded if necessary to initialize any HW that is implemented by a library and can't be done during construction, here we use the Wire class.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">cols[in]</td><td>the number of columns that the display has </td></tr> + <tr><td class="paramname">rows[in]</td><td>the number of rows that the display has </td></tr> + <tr><td class="paramname">charsize[in]</td><td>size of the characters of the <a class="el" href="class_l_c_d.html">LCD</a>: LCD_5x8DOTS or LCD_5x10DOTS. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="aa882cbbbb14985cab8432686723beaf9"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SI2C::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command.</p> +<p>Users should never call this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + <tr><td class="paramname">mode[in]</td><td>DATA - write to the <a class="el" href="class_l_c_d.html">LCD</a> CGRAM, COMMAND - write a command to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="afa64775ef5faa3646385506b4adf7f2d"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SI2C::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa">setBacklightPin</a>.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>backlight mode (HIGH|LOW) </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a80adc9d27907d9145ad208eba4ae2ffa"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SI2C::setBacklightPin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_backlighPol </td> + <td class="paramname"><em>pol</em> = <code>POSITIVE</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Sets the pin to control the backlight. Sets the pin in the device to control the backlight. This device doesn't support dimming backlight capability.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">0</td><td>backlight off, 1..255: backlight on. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">LCD</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_liquid_crystal___s_i2_c_8h_source.html">LiquidCrystal_SI2C.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SI2C.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.js b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.js new file mode 100644 index 0000000000000000000000000000000000000000..84044799809e956529fa173669bf3eef8aa85266 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.js @@ -0,0 +1,13 @@ +var class_liquid_crystal___s_i2_c = +[ + [ "LiquidCrystal_SI2C", "class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be", null ], + [ "LiquidCrystal_SI2C", "class_liquid_crystal___s_i2_c.html#a79edfbd0842a34f10265cb65576d4879", null ], + [ "LiquidCrystal_SI2C", "class_liquid_crystal___s_i2_c.html#aa1a837dec506f9c459605c7bd4b7fe8c", null ], + [ "LiquidCrystal_SI2C", "class_liquid_crystal___s_i2_c.html#a806579792d7a37fecdb21e115ec62cf7", null ], + [ "LiquidCrystal_SI2C", "class_liquid_crystal___s_i2_c.html#ac0e7a4841e03a4e4916c66ff48ea53e9", null ], + [ "LiquidCrystal_SI2C", "class_liquid_crystal___s_i2_c.html#a85bdea23d3121833d512af3760bd0592", null ], + [ "begin", "class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb", null ], + [ "send", "class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9", null ], + [ "setBacklight", "class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d", null ], + [ "setBacklightPin", "class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.png new file mode 100644 index 0000000000000000000000000000000000000000..63f46f7cbafd4eefd75fd20d1aee628330983bf6 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_i2_c.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r-members.html new file mode 100644 index 0000000000000000000000000000000000000000..42b09b71cee76c339af20224eb3ac16f3062908e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r-members.html @@ -0,0 +1,138 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc">LiquidCrystal_SR</a>(uint8_t srdata, uint8_t srclock, uint8_t enable=TWO_WIRE)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47">send</a>(uint8_t value, uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">setBacklight</a>(uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">setBacklightPin</a>(uint8_t pin, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.html new file mode 100644 index 0000000000000000000000000000000000000000..f15776751c2631d08cacee9063730d6170fbbc3d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.html @@ -0,0 +1,366 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LiquidCrystal_SR Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_liquid_crystal___s_r-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal_SR:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal___s_r.png" usemap="#LiquidCrystal_SR_map" alt=""/> + <map id="LiquidCrystal_SR_map" name="LiquidCrystal_SR_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,56,108,80"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:ac3fe0b48f8d4c1c941d82d1333495cfc"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc">LiquidCrystal_SR</a> (uint8_t srdata, uint8_t srclock, uint8_t enable=TWO_WIRE)</td></tr> +<tr class="separator:ac3fe0b48f8d4c1c941d82d1333495cfc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a03821351a32db07cb7e42c8c11ce8d47"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47">send</a> (uint8_t value, uint8_t mode)</td></tr> +<tr class="separator:a03821351a32db07cb7e42c8c11ce8d47"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5bfc0dcc1f042bcb59992493a3a7231d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">setBacklightPin</a> (uint8_t pin, t_backlighPol pol)</td></tr> +<tr class="separator:a5bfc0dcc1f042bcb59992493a3a7231d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad9f3e3f36257984c23fb508973e14535"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">setBacklight</a> (uint8_t mode)</td></tr> +<tr class="separator:ad9f3e3f36257984c23fb508973e14535"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="inherit_header pub_methods_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_l_c_d')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> +Additional Inherited Members</h2></td></tr> +<tr class="inherit_header pro_attribs_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_l_c_d')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="ac3fe0b48f8d4c1c941d82d1333495cfc"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SR::LiquidCrystal_SR </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>srdata</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>srclock</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>enable</em> = <code>TWO_WIRE</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> SHIFT REGISTER constructors. Defines the pin assignment that the <a class="el" href="class_l_c_d.html">LCD</a> will have. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>. Assuming 1 line 8 pixel high font.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">srdata[in]</td><td>pin for shiftregister data line. </td></tr> + <tr><td class="paramname">srclock[in]</td><td>pin for shiftregister clock line. </td></tr> + <tr><td class="paramname">enable[in]</td><td>optional direct enable pin for the <a class="el" href="class_l_c_d.html">LCD</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a03821351a32db07cb7e42c8c11ce8d47"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command using the shift register.</p> +<p>Users should never call this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>mode LOW - write to the <a class="el" href="class_l_c_d.html">LCD</a> CGRAM, HIGH - write a command to the <a class="el" href="class_l_c_d.html">LCD</a>. </dd></dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="ad9f3e3f36257984c23fb508973e14535"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">setBacklightPin</a>.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">mode</td><td>backlight mode (HIGH|LOW) </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a5bfc0dcc1f042bcb59992493a3a7231d"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR::setBacklightPin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_backlighPol </td> + <td class="paramname"><em>pol</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Sets the pin to control the backlight. Sets the pin in the device to control the backlight. </p><dl class="section warning"><dt>Warning</dt><dd>Currently not supported</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">mode</td><td>backlight mode (HIGH|LOW) </td></tr> + <tr><td class="paramname">pol</td><td>backlight polarity </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">LCD</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_liquid_crystal___s_r_8h_source.html">LiquidCrystal_SR.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.js b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.js new file mode 100644 index 0000000000000000000000000000000000000000..5a3272ae72d1d21d2d06af07ef91e828da1ba6e9 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.js @@ -0,0 +1,7 @@ +var class_liquid_crystal___s_r = +[ + [ "LiquidCrystal_SR", "class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc", null ], + [ "send", "class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47", null ], + [ "setBacklight", "class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535", null ], + [ "setBacklightPin", "class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.png new file mode 100644 index 0000000000000000000000000000000000000000..f99d2102bf4a679e364b480eadf6561a2dc2d92d Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w-members.html new file mode 100644 index 0000000000000000000000000000000000000000..e7bf6b88c3bd1fcec3e02458979f318ea0bc789b --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w-members.html @@ -0,0 +1,138 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR1W Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_liquid_crystal___s_r1_w.html">LiquidCrystal_SR1W</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9">LiquidCrystal_SR1W</a>(uint8_t srdata, t_sr1w_circuitType circuitType, t_backlighPol blpol=POSITIVE)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r1_w.html">LiquidCrystal_SR1W</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">send</a>(uint8_t value, uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r1_w.html">LiquidCrystal_SR1W</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">setBacklight</a>(uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r1_w.html">LiquidCrystal_SR1W</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>(uint8_t value, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.html new file mode 100644 index 0000000000000000000000000000000000000000..b6d8b6bfd49806189dc569b99125cc27d4990de8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.html @@ -0,0 +1,322 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LiquidCrystal_SR1W Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_liquid_crystal___s_r1_w-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR1W Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal_SR1W:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal___s_r1_w.png" usemap="#LiquidCrystal_SR1W_map" alt=""/> + <map id="LiquidCrystal_SR1W_map" name="LiquidCrystal_SR1W_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,56,126,80"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:a33bff2c123d3dc42a829b0f8034912c9"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9">LiquidCrystal_SR1W</a> (uint8_t srdata, t_sr1w_circuitType circuitType, t_backlighPol blpol=POSITIVE)</td></tr> +<tr class="separator:a33bff2c123d3dc42a829b0f8034912c9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7fc0b03977907b4d526a6b9e49a331b1"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">send</a> (uint8_t value, uint8_t mode)</td></tr> +<tr class="separator:a7fc0b03977907b4d526a6b9e49a331b1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a82d844569eb258559afb40ab354eb0a5"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">setBacklight</a> (uint8_t mode)</td></tr> +<tr class="separator:a82d844569eb258559afb40ab354eb0a5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="inherit_header pub_methods_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_l_c_d')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a53f4ee9b39d9ab3d7ae4d9f8dedca3bc inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a> (uint8_t value, t_backlighPol pol)</td></tr> +<tr class="separator:a53f4ee9b39d9ab3d7ae4d9f8dedca3bc inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> +Additional Inherited Members</h2></td></tr> +<tr class="inherit_header pro_attribs_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_l_c_d')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="a33bff2c123d3dc42a829b0f8034912c9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SR1W::LiquidCrystal_SR1W </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>srdata</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_sr1w_circuitType </td> + <td class="paramname"><em>circuitType</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_backlighPol </td> + <td class="paramname"><em>blpol</em> = <code>POSITIVE</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> 1 wire SHIFT REGISTER constructor. Defines the pin assignments that connect to the shift register. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>. Assuming 1 line 8 pixel high font.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">srdata[in]</td><td>Arduino pin for shift register. </td></tr> + <tr><td class="paramname">circuitType[in]</td><td>optionally select an alternate circuit type </td></tr> + <tr><td class="paramname">blpol[in]</td><td>optional backlight polarity (default = POSITIVE) </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a7fc0b03977907b4d526a6b9e49a331b1"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR1W::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command using the shift register.</p> +<p>Users should never call this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + <tr><td class="paramname">mode[in]</td><td>DATA=8bit data, COMMAND=8bit cmd, FOUR_BITS=4bit cmd the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a82d844569eb258559afb40ab354eb0a5"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR1W::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">mode[in]</td><td>backlight mode (0 off, non-zero on) </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_liquid_crystal___s_r1_w_8h_source.html">LiquidCrystal_SR1W.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR1W.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.js b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.js new file mode 100644 index 0000000000000000000000000000000000000000..ecf896b8dea56fcc7e8e3115f31c3abc289f5422 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.js @@ -0,0 +1,6 @@ +var class_liquid_crystal___s_r1_w = +[ + [ "LiquidCrystal_SR1W", "class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9", null ], + [ "send", "class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1", null ], + [ "setBacklight", "class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.png new file mode 100644 index 0000000000000000000000000000000000000000..d5074f7cde611e34fd52626b01b7f036b79d7087 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r1_w.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w-members.html new file mode 100644 index 0000000000000000000000000000000000000000..d7d24a14f2c83d441a1ddcb26fa0a6624f317cc1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w-members.html @@ -0,0 +1,138 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR2W Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_liquid_crystal___s_r2_w.html">LiquidCrystal_SR2W</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3">LiquidCrystal_SR2W</a>(uint8_t srdata, uint8_t srclock, t_backlighPol blpol=POSITIVE)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r2_w.html">LiquidCrystal_SR2W</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d">send</a>(uint8_t value, uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r2_w.html">LiquidCrystal_SR2W</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">setBacklight</a>(uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r2_w.html">LiquidCrystal_SR2W</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>(uint8_t value, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.html new file mode 100644 index 0000000000000000000000000000000000000000..3cbf1aed9494b79a4b96ab6397388874554aa5c3 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.html @@ -0,0 +1,322 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LiquidCrystal_SR2W Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_liquid_crystal___s_r2_w-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR2W Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal_SR2W:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal___s_r2_w.png" usemap="#LiquidCrystal_SR2W_map" alt=""/> + <map id="LiquidCrystal_SR2W_map" name="LiquidCrystal_SR2W_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,56,126,80"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:af307fdf5c8feb757e965074dcdeb1dd3"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3">LiquidCrystal_SR2W</a> (uint8_t srdata, uint8_t srclock, t_backlighPol blpol=POSITIVE)</td></tr> +<tr class="separator:af307fdf5c8feb757e965074dcdeb1dd3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a65dc6f261c319be8e56f3c1f6a5c877d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d">send</a> (uint8_t value, uint8_t mode)</td></tr> +<tr class="separator:a65dc6f261c319be8e56f3c1f6a5c877d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2158db27287c1564a03e7a1472beb3b6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">setBacklight</a> (uint8_t mode)</td></tr> +<tr class="separator:a2158db27287c1564a03e7a1472beb3b6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="inherit_header pub_methods_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_l_c_d')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a53f4ee9b39d9ab3d7ae4d9f8dedca3bc inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a> (uint8_t value, t_backlighPol pol)</td></tr> +<tr class="separator:a53f4ee9b39d9ab3d7ae4d9f8dedca3bc inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> +Additional Inherited Members</h2></td></tr> +<tr class="inherit_header pro_attribs_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_l_c_d')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="af307fdf5c8feb757e965074dcdeb1dd3"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SR2W::LiquidCrystal_SR2W </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>srdata</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>srclock</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_backlighPol </td> + <td class="paramname"><em>blpol</em> = <code>POSITIVE</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> 2 wire SHIFT REGISTER constructor. Defines the pin assignments that connect to the shift register. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>. Assuming 1 line 8 pixel high font.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">srdata[in]</td><td>Arduino pin for shift register data line. </td></tr> + <tr><td class="paramname">srclock[in]</td><td>Arduino pin for shift register clock line. </td></tr> + <tr><td class="paramname">blpol[in]</td><td>optional backlight polarity (default = POSITIVE) </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="a65dc6f261c319be8e56f3c1f6a5c877d"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR2W::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command using the shift register.</p> +<p>Users should never call this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + <tr><td class="paramname">mode[in]</td><td>DATA=8bit data, COMMAND=8bit cmd, FOUR_BITS=4bit cmd the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a2158db27287c1564a03e7a1472beb3b6"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR2W::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">setBacklightPin</a>.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">mode[in]</td><td>backlight mode (0 off, non-zero on) </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_liquid_crystal___s_r2_w_8h_source.html">LiquidCrystal_SR2W.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR2W.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.js b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.js new file mode 100644 index 0000000000000000000000000000000000000000..bc31d56115d7595ac7c4ca5f68a1a92f9f40694c --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.js @@ -0,0 +1,6 @@ +var class_liquid_crystal___s_r2_w = +[ + [ "LiquidCrystal_SR2W", "class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3", null ], + [ "send", "class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d", null ], + [ "setBacklight", "class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.png new file mode 100644 index 0000000000000000000000000000000000000000..67a121eb206625c7c02ba049dc71b87fcd23bf33 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r2_w.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w-members.html new file mode 100644 index 0000000000000000000000000000000000000000..31049157725a0ebff74ed612fd0f17d15df87c5d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w-members.html @@ -0,0 +1,141 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR3W Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_cols</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaycontrol</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_displayfunction</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_displaymode</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>_numlines</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>_polarity</b> (defined in <a class="el" href="class_l_c_d.html">LCD</a>)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">protected</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal_SR3W</b>(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t backlighPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0">LiquidCrystal_SR3W</a>(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>LiquidCrystal_SR3W</b>(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol) (defined in <a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a>)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a>(void)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56">send</a>(uint8_t value, uint8_t mode)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">setBacklight</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">setBacklightPin</a>(uint8_t value, t_backlighPol pol)</td><td class="entry"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_l_c_d.html">LCD</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.html new file mode 100644 index 0000000000000000000000000000000000000000..615d6a536af4c490eaca9a2921ae8fc1848ae4ce --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.html @@ -0,0 +1,464 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: LiquidCrystal_SR3W Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_liquid_crystal___s_r3_w-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR3W Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal_SR3W:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal___s_r3_w.png" usemap="#LiquidCrystal_SR3W_map" alt=""/> + <map id="LiquidCrystal_SR3W_map" name="LiquidCrystal_SR3W_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,56,126,80"/> +</map> + </div></div> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:ae1396bcd5e9c5b7ed13182c166de776b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W</a> (uint8_t data, uint8_t clk, uint8_t strobe)</td></tr> +<tr class="separator:ae1396bcd5e9c5b7ed13182c166de776b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7b2f382b76bc9d88adb8d681e824b4de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b2f382b76bc9d88adb8d681e824b4de"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal_SR3W</b> (uint8_t data, uint8_t clk, uint8_t strobe, uint8_t backlighPin, t_backlighPol pol)</td></tr> +<tr class="separator:a7b2f382b76bc9d88adb8d681e824b4de"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4fab8ff2f21bba3efd133cd8c87fffc0"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0">LiquidCrystal_SR3W</a> (uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</td></tr> +<tr class="separator:a4fab8ff2f21bba3efd133cd8c87fffc0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a24f051747dfeda48f7b207c3358c8015"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24f051747dfeda48f7b207c3358c8015"></a> + </td><td class="memItemRight" valign="bottom"><b>LiquidCrystal_SR3W</b> (uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol)</td></tr> +<tr class="separator:a24f051747dfeda48f7b207c3358c8015"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ade34af5b7fe795482f1848c2176d6e56"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56">send</a> (uint8_t value, uint8_t mode)</td></tr> +<tr class="separator:ade34af5b7fe795482f1848c2176d6e56"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a894d0ea8ea61c1d15acd8a26d417e477"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">setBacklightPin</a> (uint8_t value, t_backlighPol pol)</td></tr> +<tr class="separator:a894d0ea8ea61c1d15acd8a26d417e477"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6d0fc7907ef9fd87c408a21b9bd49295"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">setBacklight</a> (uint8_t value)</td></tr> +<tr class="separator:a6d0fc7907ef9fd87c408a21b9bd49295"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="inherit_header pub_methods_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_l_c_d')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> ()</td></tr> +<tr class="separator:a00bb2db1390721abc7b24ac4b8c276c8 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a> (uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td></tr> +<tr class="separator:a3f587d1cbb2d59765ef60a5216b56fea inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a> ()</td></tr> +<tr class="separator:afa699e0beeeee03cce8cef87eba81c4a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a> ()</td></tr> +<tr class="separator:aee45ad37f09312f5d9982257e2d37e68 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a> ()</td></tr> +<tr class="separator:af3974da6d988ba2d21c25135ada12108 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a> ()</td></tr> +<tr class="separator:a5b07cf05e8e5e7c53654f5ca0cf58b89 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a> ()</td></tr> +<tr class="separator:a3b755c4b397b5985752be8c30ee1a9b5 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a> ()</td></tr> +<tr class="separator:a878b36878fa8287093964eba83aace77 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a> ()</td></tr> +<tr class="separator:aec8ffaa1e69c7a6e13ac0cfbc29151d9 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a> ()</td></tr> +<tr class="separator:a194814f64dfa50a90e07e0fe0d361620 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a> ()</td></tr> +<tr class="separator:a6f3a503055b3b8dcf0f61b2633c584f7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a> ()</td></tr> +<tr class="separator:abfc44b294772f09020bfa32af8a79571 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a> ()</td></tr> +<tr class="separator:a238e9f6476dc7df64af04eb6c87f6ac7 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a> ()</td></tr> +<tr class="separator:ac014830eadc26bfd86308ea8734f4428 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a> ()</td></tr> +<tr class="separator:aad2abc99d1aca5403873579d9d72c2d4 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a> ()</td></tr> +<tr class="separator:a09eec0c712e54b066f5894635c1fe75c inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a> ()</td></tr> +<tr class="separator:abb3ed88d530f6283e6159b4973e7da9e inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a> ()</td></tr> +<tr class="separator:a96035dde40efbf73390e00b5beb00231 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a> (uint8_t location, uint8_t charmap[])</td></tr> +<tr class="separator:a91cba8f93c692abcddf8bc3de58d2d3a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a> (uint8_t col, uint8_t row)</td></tr> +<tr class="separator:a48220450fd152b25994eb7d0ba340e8d inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a> (void)</td></tr> +<tr class="separator:aba8867fe2210cbfa8db869208709be10 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a> (void)</td></tr> +<tr class="separator:a2a331b4e142734411b2f1cfaffe7a488 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">on</a> (void)</td></tr> +<tr class="separator:a718da3a638deb59bd1c7a5222a52d98a inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">off</a> (void)</td></tr> +<tr class="separator:a191639be183be1476c9bfe6d455d23b2 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a> (uint8_t value)</td></tr> +<tr class="separator:a2d89cc2e62f72afb5f15a7fd812900e3 inherit pub_methods_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> +Additional Inherited Members</h2></td></tr> +<tr class="inherit_header pro_attribs_class_l_c_d"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_l_c_d')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="class_l_c_d.html">LCD</a></td></tr> +<tr class="memitem:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef093ba3f8e1016267b40ac235a0fa0f"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displayfunction</b></td></tr> +<tr class="separator:aef093ba3f8e1016267b40ac235a0fa0f inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae47a0e2eff74431a39774b788d5761f4"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaycontrol</b></td></tr> +<tr class="separator:ae47a0e2eff74431a39774b788d5761f4 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a726b9a68d091dd8683a18e83f3a8fd3c"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_displaymode</b></td></tr> +<tr class="separator:a726b9a68d091dd8683a18e83f3a8fd3c inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1374911fb145fea430c21092ada0c06"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_numlines</b></td></tr> +<tr class="separator:ac1374911fb145fea430c21092ada0c06 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88b16ea0e5c7d1cabc5007d48bcbd2b0"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>_cols</b></td></tr> +<tr class="separator:a88b16ea0e5c7d1cabc5007d48bcbd2b0 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a990338759d2abe10b0fb1743b7789566"></a> +t_backlighPol </td><td class="memItemRight" valign="bottom"><b>_polarity</b></td></tr> +<tr class="separator:a990338759d2abe10b0fb1743b7789566 inherit pro_attribs_class_l_c_d"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="ae1396bcd5e9c5b7ed13182c166de776b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SR3W::LiquidCrystal_SR3W </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>data</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>clk</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>strobe</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the IO driving the shift register. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>. Default configuration: Shift register <a class="el" href="class_l_c_d.html">LCD</a> QA - 0 DB4 QB - 1 DB5 QC - 2 DB6 QD - 3 DB7 QE - 4 E QF - 5 QG - 6 Rs GND Rw</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">strobe[in]</td><td>digital IO connected to shiftregister strobe pin. </td></tr> + <tr><td class="paramname">data[in]</td><td>digital IO connected to the shiftregister data pin. </td></tr> + <tr><td class="paramname">clk[in]</td><td>digital IO connected to the shiftregister clock pin. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a4fab8ff2f21bba3efd133cd8c87fffc0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SR3W::LiquidCrystal_SR3W </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>data</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>clk</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>strobe</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>En</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rw</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>Rs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d4</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d5</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d6</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>d7</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Class constructor. Initializes class variables and defines the control lines of the <a class="el" href="class_l_c_d.html">LCD</a> and the shiftregister. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">strobe[in]</td><td>digital IO connected to shiftregister strobe pin. </td></tr> + <tr><td class="paramname">data[in]</td><td>digital IO connected to shiftregister data pin. </td></tr> + <tr><td class="paramname">clk[in]</td><td>digital IO connected to shiftregister clock pin. </td></tr> + <tr><td class="paramname">En[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> En (Enable) pin connected to SR output pin. </td></tr> + <tr><td class="paramname">Rw[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rw (Read/write) pin connected to SR output pin. </td></tr> + <tr><td class="paramname">Rs[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> Rs (Reg Select) pin connected to SR output pin. </td></tr> + <tr><td class="paramname">d4[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 4 pin map to the SR output pin. </td></tr> + <tr><td class="paramname">d5[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 5 pin map to the SR output pin. </td></tr> + <tr><td class="paramname">d6[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 6 pin map to the SR output pin. </td></tr> + <tr><td class="paramname">d7[in]</td><td><a class="el" href="class_l_c_d.html">LCD</a> data 7 pin map to the SR output pin. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="ade34af5b7fe795482f1848c2176d6e56"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR3W::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command.</p> +<p>Users should never call this method.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + <tr><td class="paramname">mode[in]</td><td>DATA - write to the <a class="el" href="class_l_c_d.html">LCD</a> CGRAM, COMMAND - write a command to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a6d0fc7907ef9fd87c408a21b9bd49295"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR3W::setBacklight </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. Switch-on/off the <a class="el" href="class_l_c_d.html">LCD</a> backlight. The setBacklightPin has to be called before setting the backlight for this method to work. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">setBacklightPin</a>.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>backlight mode (HIGH|LOW) </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a>.</p> + +</div> +</div> +<a class="anchor" id="a894d0ea8ea61c1d15acd8a26d417e477"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR3W::setBacklightPin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">t_backlighPol </td> + <td class="paramname"><em>pol</em> = <code>POSITIVE</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> +<p>Sets the pin to control the backlight. Sets the pin in the device to control the backlight. This device doesn't support dimming backlight capability.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value</td><td>pin mapped on the 74HC595N (0, .., 7) for (Qa0, .., Qh7) respectively. </td></tr> + <tr><td class="paramname">pol</td><td>polarity POSITIVE|NEGATIVE. </td></tr> + </table> + </dd> +</dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">LCD</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_liquid_crystal___s_r3_w_8h_source.html">LiquidCrystal_SR3W.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/LiquidCrystal_SR3W.cpp</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.js b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.js new file mode 100644 index 0000000000000000000000000000000000000000..842f08b00e9485ef8946538e90f7e49ddb446cd4 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.js @@ -0,0 +1,10 @@ +var class_liquid_crystal___s_r3_w = +[ + [ "LiquidCrystal_SR3W", "class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b", null ], + [ "LiquidCrystal_SR3W", "class_liquid_crystal___s_r3_w.html#a7b2f382b76bc9d88adb8d681e824b4de", null ], + [ "LiquidCrystal_SR3W", "class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0", null ], + [ "LiquidCrystal_SR3W", "class_liquid_crystal___s_r3_w.html#a24f051747dfeda48f7b207c3358c8015", null ], + [ "send", "class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56", null ], + [ "setBacklight", "class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295", null ], + [ "setBacklightPin", "class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.png new file mode 100644 index 0000000000000000000000000000000000000000..33a43029daa176938d4de42b3e721e4bd781d764 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r3_w.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3-members.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3-members.html new file mode 100644 index 0000000000000000000000000000000000000000..8185ec57db69182ca779087d2bd6b984e2199b67 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3-members.html @@ -0,0 +1,120 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.2.1</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR_LCD3 Member List</div> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="class_liquid_crystal___s_r___l_c_d3.html">LiquidCrystal_SR_LCD3</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">_cols</a></td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">_displaycontrol</a></td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">_displayfunction</a></td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">_displaymode</a></td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">_numlines</a></td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [protected]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">autoscroll</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">backlight</a>(void)</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">begin</a>(uint8_t cols, uint8_t rows, uint8_t charsize=LCD_5x8DOTS)</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">blink</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">clear</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a31a0cb42497d83cdc9cb8000828f7190">command</a>(uint8_t value)</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">createChar</a>(uint8_t location, uint8_t charmap[])</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">cursor</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">display</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">home</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">leftToRight</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_liquid_crystal___s_r___l_c_d3.html#a2cd0629853dd8a5569799fa998f3d29f">LiquidCrystal_SR_LCD3</a>(uint8_t srdata, uint8_t srclock, uint8_t enable)</td><td><a class="el" href="class_liquid_crystal___s_r___l_c_d3.html">LiquidCrystal_SR_LCD3</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">moveCursorLeft</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">moveCursorRight</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">noAutoscroll</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">noBacklight</a>(void)</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">noBlink</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">noCursor</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">noDisplay</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">rightToLeft</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">scrollDisplayLeft</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">scrollDisplayRight</a>()</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_liquid_crystal___s_r___l_c_d3.html#a01e75d76d80e218a5bdc28f8ce22b0e4">send</a>(uint8_t value, uint8_t mode)</td><td><a class="el" href="class_liquid_crystal___s_r___l_c_d3.html">LiquidCrystal_SR_LCD3</a></td><td><code> [virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">setBacklight</a>(uint8_t value)</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [inline, virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a11654e9302627743730fc4e1ea157e86">setBacklightPin</a>(uint8_t value)</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [inline, virtual]</code></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">setCursor</a>(uint8_t col, uint8_t row)</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">write</a>(uint8_t value)</td><td><a class="el" href="class_l_c_d.html">LCD</a></td><td><code> [virtual]</code></td></tr> +</table></div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<hr class="footer"/><address class="footer"><small>Generated on Sun Mar 4 2012 21:17:07 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3.html b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3.html new file mode 100644 index 0000000000000000000000000000000000000000..73b9d1e584aaaf2bf97db1019adde29782e11fd7 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3.html @@ -0,0 +1,200 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: LiquidCrystal_SR_LCD3 Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.2.1</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<div class="title">LiquidCrystal_SR_LCD3 Class Reference</div> </div> +</div> +<div class="contents"> +<!-- doxytag: class="LiquidCrystal_SR_LCD3" --><!-- doxytag: inherits="LCD" --> +<p><code>#include <<a class="el" href="_liquid_crystal___s_r___l_c_d3_8h_source.html">LiquidCrystal_SR_LCD3.h</a>></code></p> +<div class="dynheader"> +Inheritance diagram for LiquidCrystal_SR_LCD3:</div> +<div class="dyncontent"> + <div class="center"> + <img src="class_liquid_crystal___s_r___l_c_d3.png" usemap="#LiquidCrystal_SR_LCD3_map" alt=""/> + <map id="LiquidCrystal_SR_LCD3_map" name="LiquidCrystal_SR_LCD3_map"> +<area href="class_l_c_d.html" alt="LCD" shape="rect" coords="0,0,147,24"/> +</map> + </div></div> + +<p><a href="class_liquid_crystal___s_r___l_c_d3-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r___l_c_d3.html#a2cd0629853dd8a5569799fa998f3d29f">LiquidCrystal_SR_LCD3</a> (uint8_t srdata, uint8_t srclock, uint8_t enable)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_liquid_crystal___s_r___l_c_d3.html#a01e75d76d80e218a5bdc28f8ce22b0e4">send</a> (uint8_t value, uint8_t mode)</td></tr> +</table> +<hr/><a name="details" id="details"></a><h2>Detailed Description</h2> +<div class="textblock"> +<p>Definition at line <a class="el" href="_liquid_crystal___s_r___l_c_d3_8h_source.html#l00016">16</a> of file <a class="el" href="_liquid_crystal___s_r___l_c_d3_8h_source.html">LiquidCrystal_SR_LCD3.h</a>.</p> +</div><hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a2cd0629853dd8a5569799fa998f3d29f"></a><!-- doxytag: member="LiquidCrystal_SR_LCD3::LiquidCrystal_SR_LCD3" ref="a2cd0629853dd8a5569799fa998f3d29f" args="(uint8_t srdata, uint8_t srclock, uint8_t enable)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">LiquidCrystal_SR_LCD3::LiquidCrystal_SR_LCD3 </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>srdata</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>srclock</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>enable</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="class_l_c_d.html">LCD</a> SHIFT REGISTER constructors. Defines the pin assignment that the <a class="el" href="class_l_c_d.html">LCD</a> will have. The constructor does not initialize the <a class="el" href="class_l_c_d.html">LCD</a>. Assuming 1 line 8 pixel high font.</p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">srdata[in]</td><td>pin for shiftregister data line. </td></tr> + <tr><td class="paramname">srclock[in]</td><td>pin for shiftregister clock line. </td></tr> + <tr><td class="paramname">enable[in]</td><td>enable pin for the shiftregister (also called strobe). </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html#l00123">123</a> of file <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html">LiquidCrystal_SR_LCD3.cpp</a>.</p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a01e75d76d80e218a5bdc28f8ce22b0e4"></a><!-- doxytag: member="LiquidCrystal_SR_LCD3::send" ref="a01e75d76d80e218a5bdc28f8ce22b0e4" args="(uint8_t value, uint8_t mode)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void LiquidCrystal_SR_LCD3::send </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>mode</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td><code> [virtual]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Send a particular value to the <a class="el" href="class_l_c_d.html">LCD</a>. Sends a particular value to the <a class="el" href="class_l_c_d.html">LCD</a> for writing to the <a class="el" href="class_l_c_d.html">LCD</a> or as an <a class="el" href="class_l_c_d.html">LCD</a> command using the shift register.</p> +<p>Users should never call this method.</p> +<dl><dt><b>Parameters:</b></dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>Value to send to the <a class="el" href="class_l_c_d.html">LCD</a>. </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>mode LOW - write to the <a class="el" href="class_l_c_d.html">LCD</a> CGRAM, HIGH - write a command to the <a class="el" href="class_l_c_d.html">LCD</a>. </dd></dl> + +<p>Reimplemented from <a class="el" href="class_l_c_d.html#a8a5b6f6f448a6ca6eeb3466c370d47ab">LCD</a>.</p> + +<p>Definition at line <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html#l00171">171</a> of file <a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html">LiquidCrystal_SR_LCD3.cpp</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/<a class="el" href="_liquid_crystal___s_r___l_c_d3_8h_source.html">LiquidCrystal_SR_LCD3.h</a></li> +<li>/Users/fmalpartida/development/ardWorkspace/LiquidCrystal_I2C/LiquiCrystal_I2C/<a class="el" href="_liquid_crystal___s_r___l_c_d3_8cpp_source.html">LiquidCrystal_SR_LCD3.cpp</a></li> +</ul> +</div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<hr class="footer"/><address class="footer"><small>Generated on Sun Mar 4 2012 21:17:07 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3.png b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3.png new file mode 100644 index 0000000000000000000000000000000000000000..966e05cf9e457c77110adb4bac0ccacd89e03711 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/class_liquid_crystal___s_r___l_c_d3.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o-members.html b/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o-members.html new file mode 100644 index 0000000000000000000000000000000000000000..4813f9564626c98addf5c4cf991adcd6c2e937d8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o-members.html @@ -0,0 +1,111 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">SI2CIO Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a>, including all inherited members.</p> +<table class="directory"> + <tr class="even"><td class="entry"><a class="el" href="class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47">begin</a>(uint8_t i2cAddr)</td><td class="entry"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33">digitalRead</a>(uint8_t pin)</td><td class="entry"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de">digitalWrite</a>(uint8_t pin, uint8_t level)</td><td class="entry"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3">pinMode</a>(uint8_t pin, uint8_t dir)</td><td class="entry"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b">portMode</a>(uint8_t dir)</td><td class="entry"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060">read</a>(void)</td><td class="entry"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a></td><td class="entry"></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf">SI2CIO</a>()</td><td class="entry"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a></td><td class="entry"></td></tr> + <tr><td class="entry"><a class="el" href="class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9">write</a>(uint8_t value)</td><td class="entry"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a></td><td class="entry"></td></tr> +</table></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o.html b/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o.html new file mode 100644 index 0000000000000000000000000000000000000000..0611790a34d003e43aac30ba5d3ccec502cef9e0 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o.html @@ -0,0 +1,329 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: SI2CIO Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_s_i2_c_i_o-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">SI2CIO Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:ae27c1861e885c6ade3f3923658957edf"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf">SI2CIO</a> ()</td></tr> +<tr class="separator:ae27c1861e885c6ade3f3923658957edf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aef6df8409b67bda118c2e055af3d6f47"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47">begin</a> (uint8_t i2cAddr)</td></tr> +<tr class="separator:aef6df8409b67bda118c2e055af3d6f47"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4ef4fb77ddd3d248be5e0898e33430a3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3">pinMode</a> (uint8_t pin, uint8_t dir)</td></tr> +<tr class="separator:a4ef4fb77ddd3d248be5e0898e33430a3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a8e78ee0ee2d1bb12136b5c5a3487512b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b">portMode</a> (uint8_t dir)</td></tr> +<tr class="separator:a8e78ee0ee2d1bb12136b5c5a3487512b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a32cb72361397c1051ee650dbb2190060"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060">read</a> (void)</td></tr> +<tr class="separator:a32cb72361397c1051ee650dbb2190060"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a15fe6d174fb001bca7866004e96f0b33"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33">digitalRead</a> (uint8_t pin)</td></tr> +<tr class="separator:a15fe6d174fb001bca7866004e96f0b33"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a47c3ac3198cddcf9e6da1ccacd9db5d9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9">write</a> (uint8_t value)</td></tr> +<tr class="separator:a47c3ac3198cddcf9e6da1ccacd9db5d9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae1e3c6fd22872f248de6a90af27d92de"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de">digitalWrite</a> (uint8_t pin, uint8_t level)</td></tr> +<tr class="separator:ae1e3c6fd22872f248de6a90af27d92de"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="ae27c1861e885c6ade3f3923658957edf"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">SI2CIO::SI2CIO </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Constructor method Class constructor constructor. </p> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="aef6df8409b67bda118c2e055af3d6f47"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int SI2CIO::begin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>i2cAddr</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Initializes the device. This method initializes the device allocating an I2C address. This method is the first method that should be call prior to calling any other method form this class. On initialization all pins are configured as INPUT on the device.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">i2cAddr</td><td>I2C Address where the device is located. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>1 if the device was initialized correctly, 0 otherwise </dd></dl> + +</div> +</div> +<a class="anchor" id="a15fe6d174fb001bca7866004e96f0b33"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t SI2CIO::digitalRead </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Read a pin from the device. Reads a particular pin from the device. To read a particular pin it has to be configured as INPUT. During initialization all pins are configured as INPUTs by default. Please refer to pinMode or portMode.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Pin from the port to read its status. Range (0..7) </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>Returns the pin status (HIGH, LOW) if the pin is configured as an output, reading its value will always return LOW regardless of its real state. </dd></dl> + +</div> +</div> +<a class="anchor" id="ae1e3c6fd22872f248de6a90af27d92de"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int SI2CIO::digitalWrite </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>level</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Writes a digital level to a particular pin. Write a level to the indicated pin of the device. For this method to have effect, the pin has to be configured as OUTPUT using the pinMode or portMode methods.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>device pin to change level. Range (0..7). level[in] logic level to set the pin at (HIGH, LOW). </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>1 on success, 0 otherwise. </dd></dl> + +</div> +</div> +<a class="anchor" id="a4ef4fb77ddd3d248be5e0898e33430a3"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void SI2CIO::pinMode </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>pin</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>dir</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Sets the mode of a particular pin. Sets the mode of a particular pin to INPUT, OUTPUT. digitalWrite has no effect on pins which are not declared as output.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">pin[in]</td><td>Pin from the I2C IO expander to be configured. Range 0..7 </td></tr> + <tr><td class="paramname">dir[in]</td><td>Pin direction (INPUT, OUTPUT). </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a8e78ee0ee2d1bb12136b5c5a3487512b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void SI2CIO::portMode </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>dir</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Sets all the pins of the device in a particular direction. This method sets all the pins of the device in a particular direction. This method is useful to set all the pins of the device to be either inputs or outputs. </p><dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">dir[in]</td><td>Direction of all the pins of the device (INPUT, OUTPUT). </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a32cb72361397c1051ee650dbb2190060"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t SI2CIO::read </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Reads all the pins of the device that are configured as INPUT. Reads from the device the status of the pins that are configured as INPUT. During initialization all pins are configured as INPUTs by default. Please refer to pinMode or portMode.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">none</td><td></td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a47c3ac3198cddcf9e6da1ccacd9db5d9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int SI2CIO::write </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> +<p>Write a value to the device. Writes to a set of pins in the device. The value is the binary representation of all the pins in device. The value written is masked with the configuration of the direction of the pins; to change the state of a particular pin with this method, such pin has to be configured as OUTPUT using the portMode or pinMode methods. If no pins have been configured as OUTPUTs this method will have no effect.</p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">value[in]</td><td>value to be written to the device. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>1 on success, 0 otherwise </dd></dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_s_i2_c_i_o_8h_source.html">SI2CIO.h</a></li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o.js b/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o.js new file mode 100644 index 0000000000000000000000000000000000000000..4d23e73c09206285233a1cc75f58c2b14a99629e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_s_i2_c_i_o.js @@ -0,0 +1,11 @@ +var class_s_i2_c_i_o = +[ + [ "SI2CIO", "class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf", null ], + [ "begin", "class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47", null ], + [ "digitalRead", "class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33", null ], + [ "digitalWrite", "class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de", null ], + [ "pinMode", "class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3", null ], + [ "portMode", "class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b", null ], + [ "read", "class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060", null ], + [ "write", "class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master-members.html b/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master-members.html new file mode 100644 index 0000000000000000000000000000000000000000..e1bbc3d4ca508b1c01bbe3d0a9ea994d3cf6d98f --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master-members.html @@ -0,0 +1,143 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.0</span> + </div> + <div id="projectbrief">Generic LCD driver library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('class_soft_i2_c_master.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">SoftI2CMaster Member List</div> </div> +</div><!--header--> +<div class="contents"> + +<p>This is the complete list of members for <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>, including all inherited members.</p> +<table class="directory"> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>beginTransmission</b>(uint8_t address) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>beginTransmission</b>(int address) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>endTransmission</b>(void) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>read</b>(uint8_t ack) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>read</b>() (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>readLast</b>() (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>requestFrom</b>(int address) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>requestFrom</b>(uint8_t address) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setPins</b>(uint8_t sclPin, uint8_t sdaPin, uint8_t usePullups) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>SoftI2CMaster</b>() (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SoftI2CMaster</b>(uint8_t sclPin, uint8_t sdaPin) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>SoftI2CMaster</b>(uint8_t sclPin, uint8_t sdaPin, uint8_t usePullups) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>write</b>(uint8_t) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>write</b>(uint8_t *, uint8_t) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>write</b>(int) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> + <tr bgcolor="#f0f0f0"><td class="entry"><b>write</b>(char *) (defined in <a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a>)</td><td class="entry"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></td><td class="entry"></td></tr> +</table></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> + </ul> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master.html b/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master.html new file mode 100644 index 0000000000000000000000000000000000000000..72f566df3481488cf10f1b574dd14853ace8567d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master.html @@ -0,0 +1,181 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: SoftI2CMaster Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); + $(window).load(resizeHeight); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.0</span> + </div> + <div id="projectbrief">Generic LCD driver library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('class_soft_i2_c_master.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="class_soft_i2_c_master-members.html">List of all members</a> </div> + <div class="headertitle"> +<div class="title">SoftI2CMaster Class Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:aece7e02a4a41da0fcc0d94c6b657df7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aece7e02a4a41da0fcc0d94c6b657df7b"></a> + </td><td class="memItemRight" valign="bottom"><b>SoftI2CMaster</b> (uint8_t sclPin, uint8_t sdaPin)</td></tr> +<tr class="separator:aece7e02a4a41da0fcc0d94c6b657df7b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad46d2b3a0ced1d5e958246453681dc12"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad46d2b3a0ced1d5e958246453681dc12"></a> + </td><td class="memItemRight" valign="bottom"><b>SoftI2CMaster</b> (uint8_t sclPin, uint8_t sdaPin, uint8_t usePullups)</td></tr> +<tr class="separator:ad46d2b3a0ced1d5e958246453681dc12"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad64723d1850661878af673ad5abb185"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad64723d1850661878af673ad5abb185"></a> +void </td><td class="memItemRight" valign="bottom"><b>setPins</b> (uint8_t sclPin, uint8_t sdaPin, uint8_t usePullups)</td></tr> +<tr class="separator:aad64723d1850661878af673ad5abb185"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac39c24535036972ca9e6fa79819d5d9e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac39c24535036972ca9e6fa79819d5d9e"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>beginTransmission</b> (uint8_t address)</td></tr> +<tr class="separator:ac39c24535036972ca9e6fa79819d5d9e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a791bec13d09f3e1e49fbd7c72b1fd12d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a791bec13d09f3e1e49fbd7c72b1fd12d"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>beginTransmission</b> (int address)</td></tr> +<tr class="separator:a791bec13d09f3e1e49fbd7c72b1fd12d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aefc6d650a9b55fc313f101c90fb2a4a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefc6d650a9b55fc313f101c90fb2a4a1"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>endTransmission</b> (void)</td></tr> +<tr class="separator:aefc6d650a9b55fc313f101c90fb2a4a1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac5e27fbfa79d49e2aa10542099fe0f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5e27fbfa79d49e2aa10542099fe0f16"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>write</b> (uint8_t)</td></tr> +<tr class="separator:ac5e27fbfa79d49e2aa10542099fe0f16"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2df16a5d624e2b21df7229b7eb4a4b31"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2df16a5d624e2b21df7229b7eb4a4b31"></a> +void </td><td class="memItemRight" valign="bottom"><b>write</b> (uint8_t *, uint8_t)</td></tr> +<tr class="separator:a2df16a5d624e2b21df7229b7eb4a4b31"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af97e93a09958e253d413e5fb7f191012"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af97e93a09958e253d413e5fb7f191012"></a> +void </td><td class="memItemRight" valign="bottom"><b>write</b> (int)</td></tr> +<tr class="separator:af97e93a09958e253d413e5fb7f191012"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad5a93a06a09a5f7afaf2c2fc0e10c3b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5a93a06a09a5f7afaf2c2fc0e10c3b0"></a> +void </td><td class="memItemRight" valign="bottom"><b>write</b> (char *)</td></tr> +<tr class="separator:ad5a93a06a09a5f7afaf2c2fc0e10c3b0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa59620fa4bd961b21a4ffef3e66e1060"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa59620fa4bd961b21a4ffef3e66e1060"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>requestFrom</b> (int address)</td></tr> +<tr class="separator:aa59620fa4bd961b21a4ffef3e66e1060"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7da6a512db82ea053e1b625199d26f95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7da6a512db82ea053e1b625199d26f95"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>requestFrom</b> (uint8_t address)</td></tr> +<tr class="separator:a7da6a512db82ea053e1b625199d26f95"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a04782f52620df5c8befcd18a849196aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a04782f52620df5c8befcd18a849196aa"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>read</b> (uint8_t ack)</td></tr> +<tr class="separator:a04782f52620df5c8befcd18a849196aa"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae321cd9d0b882ecf32366996aa2887dc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae321cd9d0b882ecf32366996aa2887dc"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>read</b> ()</td></tr> +<tr class="separator:ae321cd9d0b882ecf32366996aa2887dc"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a218e33e8f81b0f64370dc2fc036e5151"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a218e33e8f81b0f64370dc2fc036e5151"></a> +uint8_t </td><td class="memItemRight" valign="bottom"><b>readLast</b> ()</td></tr> +<tr class="separator:a218e33e8f81b0f64370dc2fc036e5151"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/<a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a></li> +<li>/Users/fmalpartida/Documents/development/mercurial repos/SW/NewliquidCrystal/SoftI2CMaster.cpp</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="class_soft_i2_c_master.html">SoftI2CMaster</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.10 </li> + </ul> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master.js b/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master.js new file mode 100644 index 0000000000000000000000000000000000000000..0d3b3106cf98385ae71ecd8b05c26f0be604a032 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/class_soft_i2_c_master.js @@ -0,0 +1,19 @@ +var class_soft_i2_c_master = +[ + [ "SoftI2CMaster", "class_soft_i2_c_master.html#ad5159d322afd4e1fcca6791c35576dc9", null ], + [ "SoftI2CMaster", "class_soft_i2_c_master.html#aece7e02a4a41da0fcc0d94c6b657df7b", null ], + [ "SoftI2CMaster", "class_soft_i2_c_master.html#ad46d2b3a0ced1d5e958246453681dc12", null ], + [ "beginTransmission", "class_soft_i2_c_master.html#ac39c24535036972ca9e6fa79819d5d9e", null ], + [ "beginTransmission", "class_soft_i2_c_master.html#a791bec13d09f3e1e49fbd7c72b1fd12d", null ], + [ "endTransmission", "class_soft_i2_c_master.html#aefc6d650a9b55fc313f101c90fb2a4a1", null ], + [ "read", "class_soft_i2_c_master.html#a04782f52620df5c8befcd18a849196aa", null ], + [ "read", "class_soft_i2_c_master.html#ae321cd9d0b882ecf32366996aa2887dc", null ], + [ "readLast", "class_soft_i2_c_master.html#a218e33e8f81b0f64370dc2fc036e5151", null ], + [ "requestFrom", "class_soft_i2_c_master.html#aa59620fa4bd961b21a4ffef3e66e1060", null ], + [ "requestFrom", "class_soft_i2_c_master.html#a7da6a512db82ea053e1b625199d26f95", null ], + [ "setPins", "class_soft_i2_c_master.html#aad64723d1850661878af673ad5abb185", null ], + [ "write", "class_soft_i2_c_master.html#ac5e27fbfa79d49e2aa10542099fe0f16", null ], + [ "write", "class_soft_i2_c_master.html#a2df16a5d624e2b21df7229b7eb4a4b31", null ], + [ "write", "class_soft_i2_c_master.html#af97e93a09958e253d413e5fb7f191012", null ], + [ "write", "class_soft_i2_c_master.html#ad5a93a06a09a5f7afaf2c2fc0e10c3b0", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/classes.html b/libraries/LiquidCrystal/utility/docs/html/classes.html new file mode 100644 index 0000000000000000000000000000000000000000..2cb8df05e3265f4b37e96608c0b194c60baad1d2 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/classes.html @@ -0,0 +1,114 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Class Index</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li class="current"><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Class Index</div> </div> +</div><!--header--> +<div class="contents"> +<div class="qindex"><a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_S">S</a></div> +<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0"> +<tr><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  I  </div></td></tr></table> +</td><td valign="top"><a class="el" href="class_liquid_crystal.html">LiquidCrystal</a>   </td><td valign="top"><a class="el" href="class_liquid_crystal___s_r.html">LiquidCrystal_SR</a>   </td><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  S  </div></td></tr></table> +</td></tr> +<tr><td valign="top"><a class="el" href="class_liquid_crystal___i2_c.html">LiquidCrystal_I2C</a>   </td><td valign="top"><a class="el" href="class_liquid_crystal___s_r1_w.html">LiquidCrystal_SR1W</a>   </td></tr> +<tr><td valign="top"><a class="el" href="class_i2_c_i_o.html">I2CIO</a>   </td><td valign="top"><a class="el" href="class_liquid_crystal___i2_c___by_vac.html">LiquidCrystal_I2C_ByVac</a>   </td><td valign="top"><a class="el" href="class_liquid_crystal___s_r2_w.html">LiquidCrystal_SR2W</a>   </td><td valign="top"><a class="el" href="class_s_i2_c_i_o.html">SI2CIO</a>   </td></tr> +<tr><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  L  </div></td></tr></table> +</td><td valign="top"><a class="el" href="class_liquid_crystal___s_i2_c.html">LiquidCrystal_SI2C</a>   </td><td valign="top"><a class="el" href="class_liquid_crystal___s_r3_w.html">LiquidCrystal_SR3W</a>   </td><td></td></tr> +<tr><td></td><td></td><td></td></tr> +<tr><td valign="top"><a class="el" href="class_l_c_d.html">LCD</a>   </td><td></td><td></td><td></td></tr> +<tr><td></td><td></td><td></td><td></td></tr> +</table> +<div class="qindex"><a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_S">S</a></div> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/closed.png b/libraries/LiquidCrystal/utility/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/closed.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/doc.png b/libraries/LiquidCrystal/utility/docs/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/doc.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/doxygen.css b/libraries/LiquidCrystal/utility/docs/html/doxygen.css new file mode 100644 index 0000000000000000000000000000000000000000..b2c94ac212bd24085366baaca1d63d5ed978724d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/doxygen.css @@ -0,0 +1,1454 @@ +/* The standard CSS for doxygen 1.8.10 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/libraries/LiquidCrystal/utility/docs/html/doxygen.png b/libraries/LiquidCrystal/utility/docs/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/doxygen.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/dynsections.js b/libraries/LiquidCrystal/utility/docs/html/dynsections.js new file mode 100644 index 0000000000000000000000000000000000000000..85e183690954af49931335b87a063b2c078d4546 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l<level+1) { + i.removeClass('iconfopen iconfclosed').addClass('iconfopen'); + a.html('▼'); + $(this).show(); + } else if (l==level+1) { + i.removeClass('iconfclosed iconfopen').addClass('iconfclosed'); + a.html('►'); + $(this).show(); + } else { + $(this).hide(); + } + }); + updateStripes(); +} + +function toggleFolder(id) +{ + // the clicked row + var currentRow = $('#row_'+id); + + // all rows after the clicked row + var rows = currentRow.nextAll("tr"); + + var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub + + // only match elements AFTER this one (can't hide elements before) + var childRows = rows.filter(function() { return this.id.match(re); }); + + // first row is visible we are HIDING + if (childRows.filter(':first').is(':visible')===true) { + // replace down arrow by right arrow for current row + var currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + currentRowSpans.filter(".arrow").html('►'); + rows.filter("[id^=row_"+id+"]").hide(); // hide all children + } else { // we are SHOWING + // replace right arrow by down arrow for current row + var currentRowSpans = currentRow.find("span"); + currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen"); + currentRowSpans.filter(".arrow").html('▼'); + // replace down arrows by right arrows for child rows + var childRowsSpans = childRows.find("span"); + childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed"); + childRowsSpans.filter(".arrow").html('►'); + childRows.show(); //show all children + } + updateStripes(); +} + + +function toggleInherit(id) +{ + var rows = $('tr.inherit.'+id); + var img = $('tr.inherit_header.'+id+' img'); + var src = $(img).attr('src'); + if (rows.filter(':first').is(':visible')===true) { + rows.css('display','none'); + $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + rows.css('display','table-row'); // using show() causes jump in firefox + $(img).attr('src',src.substring(0,src.length-10)+'open.png'); + } +} + diff --git a/libraries/LiquidCrystal/utility/docs/html/files.html b/libraries/LiquidCrystal/utility/docs/html/files.html new file mode 100644 index 0000000000000000000000000000000000000000..87829453cce01566c9e5af25c5c568fa7d89681e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/files.html @@ -0,0 +1,114 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: File List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="files.html"><span>File List</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">File List</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_fast_i_o_8h_source.html"><span class="icondoc"></span></a><b>FastIO.h</b></td><td class="desc"></td></tr> +<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_i2_c_i_o_8h_source.html"><span class="icondoc"></span></a><b>I2CIO.h</b></td><td class="desc"></td></tr> +<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_l_c_d_8h_source.html"><span class="icondoc"></span></a><b>LCD.h</b></td><td class="desc"></td></tr> +<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_liquid_crystal_8h_source.html"><span class="icondoc"></span></a><b>LiquidCrystal.h</b></td><td class="desc"></td></tr> +<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_liquid_crystal___i2_c_8h_source.html"><span class="icondoc"></span></a><b>LiquidCrystal_I2C.h</b></td><td class="desc"></td></tr> +<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_liquid_crystal___i2_c___by_vac_8h_source.html"><span class="icondoc"></span></a><b>LiquidCrystal_I2C_ByVac.h</b></td><td class="desc"></td></tr> +<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_liquid_crystal___s_i2_c_8h_source.html"><span class="icondoc"></span></a><b>LiquidCrystal_SI2C.h</b></td><td class="desc"></td></tr> +<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_liquid_crystal___s_r_8h_source.html"><span class="icondoc"></span></a><b>LiquidCrystal_SR.h</b></td><td class="desc"></td></tr> +<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_liquid_crystal___s_r1_w_8h_source.html"><span class="icondoc"></span></a><b>LiquidCrystal_SR1W.h</b></td><td class="desc"></td></tr> +<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_liquid_crystal___s_r2_w_8h_source.html"><span class="icondoc"></span></a><b>LiquidCrystal_SR2W.h</b></td><td class="desc"></td></tr> +<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_liquid_crystal___s_r3_w_8h_source.html"><span class="icondoc"></span></a><b>LiquidCrystal_SR3W.h</b></td><td class="desc"></td></tr> +<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_s_i2_c_i_o_8h_source.html"><span class="icondoc"></span></a><b>SI2CIO.h</b></td><td class="desc"></td></tr> +<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a href="_soft_i2_c_master_8h_source.html"><span class="icondoc"></span></a><b>SoftI2CMaster.h</b></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/files.js b/libraries/LiquidCrystal/utility/docs/html/files.js new file mode 100644 index 0000000000000000000000000000000000000000..3696737a4f52b079513f851f054144dbbdabb084 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/files.js @@ -0,0 +1,16 @@ +var files = +[ + [ "FastIO.h", "_fast_i_o_8h_source.html", null ], + [ "I2CIO.h", "_i2_c_i_o_8h_source.html", null ], + [ "LCD.h", "_l_c_d_8h_source.html", null ], + [ "LiquidCrystal.h", "_liquid_crystal_8h_source.html", null ], + [ "LiquidCrystal_I2C.h", "_liquid_crystal___i2_c_8h_source.html", null ], + [ "LiquidCrystal_I2C_ByVac.h", "_liquid_crystal___i2_c___by_vac_8h_source.html", null ], + [ "LiquidCrystal_SI2C.h", "_liquid_crystal___s_i2_c_8h_source.html", null ], + [ "LiquidCrystal_SR.h", "_liquid_crystal___s_r_8h_source.html", null ], + [ "LiquidCrystal_SR1W.h", "_liquid_crystal___s_r1_w_8h_source.html", null ], + [ "LiquidCrystal_SR2W.h", "_liquid_crystal___s_r2_w_8h_source.html", null ], + [ "LiquidCrystal_SR3W.h", "_liquid_crystal___s_r3_w_8h_source.html", null ], + [ "SI2CIO.h", "_s_i2_c_i_o_8h_source.html", null ], + [ "SoftI2CMaster.h", "_soft_i2_c_master_8h_source.html", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/folderclosed.png b/libraries/LiquidCrystal/utility/docs/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/folderclosed.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/folderopen.png b/libraries/LiquidCrystal/utility/docs/html/folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c7f676a3b3ef8c2c307d319dff3c6a604eb227 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/folderopen.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2blank.png b/libraries/LiquidCrystal/utility/docs/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7a29cb81d7895a716673f35590eaceb3793003 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2blank.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2doc.png b/libraries/LiquidCrystal/utility/docs/html/ftv2doc.png new file mode 100644 index 0000000000000000000000000000000000000000..310e4410c4d5a279b7565926d212c0abfd754505 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2doc.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2folderclosed.png b/libraries/LiquidCrystal/utility/docs/html/ftv2folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..79aeaf70ea92d062a16854ad40e52e89cca48045 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2folderclosed.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2folderopen.png b/libraries/LiquidCrystal/utility/docs/html/ftv2folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..1b703dd3867df1639b05ce987e5e3ebd49dd4cd1 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2folderopen.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2lastnode.png b/libraries/LiquidCrystal/utility/docs/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7a29cb81d7895a716673f35590eaceb3793003 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2lastnode.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2link.png b/libraries/LiquidCrystal/utility/docs/html/ftv2link.png new file mode 100644 index 0000000000000000000000000000000000000000..310e4410c4d5a279b7565926d212c0abfd754505 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2link.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2mlastnode.png b/libraries/LiquidCrystal/utility/docs/html/ftv2mlastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..ec51f17a1fdc860c16a34aa1aeb753624409385b Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2mlastnode.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2mnode.png b/libraries/LiquidCrystal/utility/docs/html/ftv2mnode.png new file mode 100644 index 0000000000000000000000000000000000000000..ec51f17a1fdc860c16a34aa1aeb753624409385b Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2mnode.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2node.png b/libraries/LiquidCrystal/utility/docs/html/ftv2node.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7a29cb81d7895a716673f35590eaceb3793003 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2node.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2plastnode.png b/libraries/LiquidCrystal/utility/docs/html/ftv2plastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..270a965c44c482405a7a25ac7526b9660884c184 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2plastnode.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2pnode.png b/libraries/LiquidCrystal/utility/docs/html/ftv2pnode.png new file mode 100644 index 0000000000000000000000000000000000000000..270a965c44c482405a7a25ac7526b9660884c184 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2pnode.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2splitbar.png b/libraries/LiquidCrystal/utility/docs/html/ftv2splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..f60a527cd0900461a38d7e7cb17650a5b9d279c8 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2splitbar.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/ftv2vertline.png b/libraries/LiquidCrystal/utility/docs/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7a29cb81d7895a716673f35590eaceb3793003 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/ftv2vertline.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/functions.html b/libraries/LiquidCrystal/utility/docs/html/functions.html new file mode 100644 index 0000000000000000000000000000000000000000..b728f54ba4f0a62024b0edcf1b99337349cb479a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/functions.html @@ -0,0 +1,340 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li class="current"><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + </ul> + </div> + <div id="navrow4" class="tabs3"> + <ul class="tablist"> + <li><a href="#index_a"><span>a</span></a></li> + <li><a href="#index_b"><span>b</span></a></li> + <li><a href="#index_c"><span>c</span></a></li> + <li><a href="#index_d"><span>d</span></a></li> + <li><a href="#index_h"><span>h</span></a></li> + <li><a href="#index_i"><span>i</span></a></li> + <li><a href="#index_l"><span>l</span></a></li> + <li><a href="#index_m"><span>m</span></a></li> + <li><a href="#index_n"><span>n</span></a></li> + <li><a href="#index_o"><span>o</span></a></li> + <li><a href="#index_p"><span>p</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_s"><span>s</span></a></li> + <li class="current"><a href="#index_w"><span>w</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> +<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div> + +<h3><a class="anchor" id="index_a"></a>- a -</h3><ul> +<li>autoscroll() +: <a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>backlight() +: <a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">LCD</a> +</li> +<li>begin() +: <a class="el" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">I2CIO</a> +, <a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">LCD</a> +, <a class="el" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">LiquidCrystal_I2C</a> +, <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">LiquidCrystal_I2C_ByVac</a> +, <a class="el" href="class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb">LiquidCrystal_SI2C</a> +, <a class="el" href="class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47">SI2CIO</a> +</li> +<li>blink() +: <a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> +<li>clear() +: <a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">LCD</a> +</li> +<li>createChar() +: <a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">LCD</a> +</li> +<li>cursor() +: <a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_d"></a>- d -</h3><ul> +<li>digitalRead() +: <a class="el" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33">SI2CIO</a> +</li> +<li>digitalWrite() +: <a class="el" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de">SI2CIO</a> +</li> +<li>display() +: <a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_h"></a>- h -</h3><ul> +<li>home() +: <a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_i"></a>- i -</h3><ul> +<li>I2CIO() +: <a class="el" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_l"></a>- l -</h3><ul> +<li>LCD() +: <a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> +</li> +<li>leftToRight() +: <a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">LCD</a> +</li> +<li>LiquidCrystal() +: <a class="el" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a> +</li> +<li>LiquidCrystal_I2C() +: <a class="el" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a> +</li> +<li>LiquidCrystal_I2C_ByVac() +: <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31">LiquidCrystal_I2C_ByVac</a> +</li> +<li>LiquidCrystal_SI2C() +: <a class="el" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a> +</li> +<li>LiquidCrystal_SR() +: <a class="el" href="class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc">LiquidCrystal_SR</a> +</li> +<li>LiquidCrystal_SR1W() +: <a class="el" href="class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9">LiquidCrystal_SR1W</a> +</li> +<li>LiquidCrystal_SR2W() +: <a class="el" href="class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3">LiquidCrystal_SR2W</a> +</li> +<li>LiquidCrystal_SR3W() +: <a class="el" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_m"></a>- m -</h3><ul> +<li>moveCursorLeft() +: <a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">LCD</a> +</li> +<li>moveCursorRight() +: <a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>noAutoscroll() +: <a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">LCD</a> +</li> +<li>noBacklight() +: <a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">LCD</a> +</li> +<li>noBlink() +: <a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">LCD</a> +</li> +<li>noCursor() +: <a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">LCD</a> +</li> +<li>noDisplay() +: <a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> +<li>off() +: <a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">LCD</a> +</li> +<li>on() +: <a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> +<li>pinMode() +: <a class="el" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3">SI2CIO</a> +</li> +<li>portMode() +: <a class="el" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b">SI2CIO</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>read() +: <a class="el" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060">SI2CIO</a> +</li> +<li>rightToLeft() +: <a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> +<li>scrollDisplayLeft() +: <a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">LCD</a> +</li> +<li>scrollDisplayRight() +: <a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">LCD</a> +</li> +<li>send() +: <a class="el" href="class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089">LiquidCrystal</a> +, <a class="el" href="class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4">LiquidCrystal_I2C</a> +, <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1">LiquidCrystal_I2C_ByVac</a> +, <a class="el" href="class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9">LiquidCrystal_SI2C</a> +, <a class="el" href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">LiquidCrystal_SR1W</a> +, <a class="el" href="class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d">LiquidCrystal_SR2W</a> +, <a class="el" href="class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56">LiquidCrystal_SR3W</a> +, <a class="el" href="class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47">LiquidCrystal_SR</a> +</li> +<li>setBacklight() +: <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a> +, <a class="el" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">LiquidCrystal</a> +, <a class="el" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">LiquidCrystal_I2C</a> +, <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">LiquidCrystal_I2C_ByVac</a> +, <a class="el" href="class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d">LiquidCrystal_SI2C</a> +, <a class="el" href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">LiquidCrystal_SR1W</a> +, <a class="el" href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">LiquidCrystal_SR2W</a> +, <a class="el" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">LiquidCrystal_SR3W</a> +, <a class="el" href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">LiquidCrystal_SR</a> +</li> +<li>setBacklightPin() +: <a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">LCD</a> +, <a class="el" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">LiquidCrystal</a> +, <a class="el" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">LiquidCrystal_I2C</a> +, <a class="el" href="class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa">LiquidCrystal_SI2C</a> +, <a class="el" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">LiquidCrystal_SR3W</a> +, <a class="el" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">LiquidCrystal_SR</a> +</li> +<li>setContrast() +: <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4">LiquidCrystal_I2C_ByVac</a> +</li> +<li>setCursor() +: <a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">LCD</a> +</li> +<li>SI2CIO() +: <a class="el" href="class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf">SI2CIO</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_w"></a>- w -</h3><ul> +<li>write() +: <a class="el" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">I2CIO</a> +, <a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD</a> +, <a class="el" href="class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9">SI2CIO</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/functions_func.html b/libraries/LiquidCrystal/utility/docs/html/functions_func.html new file mode 100644 index 0000000000000000000000000000000000000000..62e6534eda80947517b5229f37b95242e810c5e0 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/functions_func.html @@ -0,0 +1,340 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Class Members - Functions</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li class="current"><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="functions.html"><span>All</span></a></li> + <li class="current"><a href="functions_func.html"><span>Functions</span></a></li> + </ul> + </div> + <div id="navrow4" class="tabs3"> + <ul class="tablist"> + <li><a href="#index_a"><span>a</span></a></li> + <li><a href="#index_b"><span>b</span></a></li> + <li><a href="#index_c"><span>c</span></a></li> + <li><a href="#index_d"><span>d</span></a></li> + <li><a href="#index_h"><span>h</span></a></li> + <li><a href="#index_i"><span>i</span></a></li> + <li><a href="#index_l"><span>l</span></a></li> + <li><a href="#index_m"><span>m</span></a></li> + <li><a href="#index_n"><span>n</span></a></li> + <li><a href="#index_o"><span>o</span></a></li> + <li><a href="#index_p"><span>p</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_s"><span>s</span></a></li> + <li class="current"><a href="#index_w"><span>w</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> +  + +<h3><a class="anchor" id="index_a"></a>- a -</h3><ul> +<li>autoscroll() +: <a class="el" href="class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>backlight() +: <a class="el" href="class_l_c_d.html#aba8867fe2210cbfa8db869208709be10">LCD</a> +</li> +<li>begin() +: <a class="el" href="class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae">I2CIO</a> +, <a class="el" href="class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea">LCD</a> +, <a class="el" href="class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6">LiquidCrystal_I2C</a> +, <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb">LiquidCrystal_I2C_ByVac</a> +, <a class="el" href="class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb">LiquidCrystal_SI2C</a> +, <a class="el" href="class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47">SI2CIO</a> +</li> +<li>blink() +: <a class="el" href="class_l_c_d.html#a878b36878fa8287093964eba83aace77">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> +<li>clear() +: <a class="el" href="class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a">LCD</a> +</li> +<li>createChar() +: <a class="el" href="class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a">LCD</a> +</li> +<li>cursor() +: <a class="el" href="class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_d"></a>- d -</h3><ul> +<li>digitalRead() +: <a class="el" href="class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33">SI2CIO</a> +</li> +<li>digitalWrite() +: <a class="el" href="class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de">SI2CIO</a> +</li> +<li>display() +: <a class="el" href="class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_h"></a>- h -</h3><ul> +<li>home() +: <a class="el" href="class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_i"></a>- i -</h3><ul> +<li>I2CIO() +: <a class="el" href="class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6">I2CIO</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_l"></a>- l -</h3><ul> +<li>LCD() +: <a class="el" href="class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8">LCD</a> +</li> +<li>leftToRight() +: <a class="el" href="class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7">LCD</a> +</li> +<li>LiquidCrystal() +: <a class="el" href="class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686">LiquidCrystal</a> +</li> +<li>LiquidCrystal_I2C() +: <a class="el" href="class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c">LiquidCrystal_I2C</a> +</li> +<li>LiquidCrystal_I2C_ByVac() +: <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31">LiquidCrystal_I2C_ByVac</a> +</li> +<li>LiquidCrystal_SI2C() +: <a class="el" href="class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be">LiquidCrystal_SI2C</a> +</li> +<li>LiquidCrystal_SR() +: <a class="el" href="class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc">LiquidCrystal_SR</a> +</li> +<li>LiquidCrystal_SR1W() +: <a class="el" href="class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9">LiquidCrystal_SR1W</a> +</li> +<li>LiquidCrystal_SR2W() +: <a class="el" href="class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3">LiquidCrystal_SR2W</a> +</li> +<li>LiquidCrystal_SR3W() +: <a class="el" href="class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b">LiquidCrystal_SR3W</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_m"></a>- m -</h3><ul> +<li>moveCursorLeft() +: <a class="el" href="class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4">LCD</a> +</li> +<li>moveCursorRight() +: <a class="el" href="class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>noAutoscroll() +: <a class="el" href="class_l_c_d.html#a96035dde40efbf73390e00b5beb00231">LCD</a> +</li> +<li>noBacklight() +: <a class="el" href="class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488">LCD</a> +</li> +<li>noBlink() +: <a class="el" href="class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5">LCD</a> +</li> +<li>noCursor() +: <a class="el" href="class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9">LCD</a> +</li> +<li>noDisplay() +: <a class="el" href="class_l_c_d.html#af3974da6d988ba2d21c25135ada12108">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> +<li>off() +: <a class="el" href="class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2">LCD</a> +</li> +<li>on() +: <a class="el" href="class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> +<li>pinMode() +: <a class="el" href="class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3">SI2CIO</a> +</li> +<li>portMode() +: <a class="el" href="class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b">SI2CIO</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>read() +: <a class="el" href="class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7">I2CIO</a> +, <a class="el" href="class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060">SI2CIO</a> +</li> +<li>rightToLeft() +: <a class="el" href="class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428">LCD</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> +<li>scrollDisplayLeft() +: <a class="el" href="class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7">LCD</a> +</li> +<li>scrollDisplayRight() +: <a class="el" href="class_l_c_d.html#abfc44b294772f09020bfa32af8a79571">LCD</a> +</li> +<li>send() +: <a class="el" href="class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089">LiquidCrystal</a> +, <a class="el" href="class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4">LiquidCrystal_I2C</a> +, <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1">LiquidCrystal_I2C_ByVac</a> +, <a class="el" href="class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9">LiquidCrystal_SI2C</a> +, <a class="el" href="class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1">LiquidCrystal_SR1W</a> +, <a class="el" href="class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d">LiquidCrystal_SR2W</a> +, <a class="el" href="class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56">LiquidCrystal_SR3W</a> +, <a class="el" href="class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47">LiquidCrystal_SR</a> +</li> +<li>setBacklight() +: <a class="el" href="class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828">LCD</a> +, <a class="el" href="class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd">LiquidCrystal</a> +, <a class="el" href="class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8">LiquidCrystal_I2C</a> +, <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7">LiquidCrystal_I2C_ByVac</a> +, <a class="el" href="class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d">LiquidCrystal_SI2C</a> +, <a class="el" href="class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5">LiquidCrystal_SR1W</a> +, <a class="el" href="class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6">LiquidCrystal_SR2W</a> +, <a class="el" href="class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295">LiquidCrystal_SR3W</a> +, <a class="el" href="class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535">LiquidCrystal_SR</a> +</li> +<li>setBacklightPin() +: <a class="el" href="class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc">LCD</a> +, <a class="el" href="class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9">LiquidCrystal</a> +, <a class="el" href="class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b">LiquidCrystal_I2C</a> +, <a class="el" href="class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa">LiquidCrystal_SI2C</a> +, <a class="el" href="class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477">LiquidCrystal_SR3W</a> +, <a class="el" href="class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d">LiquidCrystal_SR</a> +</li> +<li>setContrast() +: <a class="el" href="class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4">LiquidCrystal_I2C_ByVac</a> +</li> +<li>setCursor() +: <a class="el" href="class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d">LCD</a> +</li> +<li>SI2CIO() +: <a class="el" href="class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf">SI2CIO</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_w"></a>- w -</h3><ul> +<li>write() +: <a class="el" href="class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd">I2CIO</a> +, <a class="el" href="class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3">LCD</a> +, <a class="el" href="class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9">SI2CIO</a> +</li> +</ul> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/functions_vars.html b/libraries/LiquidCrystal/utility/docs/html/functions_vars.html new file mode 100644 index 0000000000000000000000000000000000000000..086c7069d991fd31f707294584d9771c29d78ece --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/functions_vars.html @@ -0,0 +1,135 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: Class Members - Variables</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li class="current"><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('functions.html',''); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>_cols +: <a class="el" href="class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0">LCD</a> +</li> +<li>_displaycontrol +: <a class="el" href="class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4">LCD</a> +</li> +<li>_displayfunction +: <a class="el" href="class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f">LCD</a> +</li> +<li>_displaymode +: <a class="el" href="class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c">LCD</a> +</li> +<li>_numlines +: <a class="el" href="class_l_c_d.html#ac1374911fb145fea430c21092ada0c06">LCD</a> +</li> +<li>_polarity +: <a class="el" href="class_l_c_d.html#a990338759d2abe10b0fb1743b7789566">LCD</a> +</li> +</ul> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="footer">Generated on Sat Aug 3 2013 22:34:05 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/globals.html b/libraries/LiquidCrystal/utility/docs/html/globals.html new file mode 100644 index 0000000000000000000000000000000000000000..29e1f621d35d90caddfc07a5a919e3d02714e825 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/globals.html @@ -0,0 +1,490 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: File Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> + <div id="navrow4" class="tabs3"> + <ul class="tablist"> + <li><a href="#index__"><span>_</span></a></li> + <li><a href="#index_a"><span>a</span></a></li> + <li><a href="#index_b"><span>b</span></a></li> + <li><a href="#index_c"><span>c</span></a></li> + <li><a href="#index_d"><span>d</span></a></li> + <li><a href="#index_e"><span>e</span></a></li> + <li><a href="#index_f"><span>f</span></a></li> + <li><a href="#index_h"><span>h</span></a></li> + <li><a href="#index_l"><span>l</span></a></li> + <li><a href="#index_n"><span>n</span></a></li> + <li><a href="#index_p"><span>p</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_s"><span>s</span></a></li> + <li><a href="#index_t"><span>t</span></a></li> + <li><a href="#index_w"><span>w</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('globals.html',''); +</script> +<div id="doc-content"> +<div class="contents"> +<div class="textblock">Here is a list of all file members with links to the files they belong to:</div> + +<h3><a class="anchor" id="index__"></a>- _ -</h3><ul> +<li>_I2CIO_VERSION +: <a class="el" href="_i2_c_i_o_8h.html#a218dbde2f6fda8c5825e25da10864c71">I2CIO.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_a"></a>- a -</h3><ul> +<li>ATOMIC_BLOCK +: <a class="el" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">FastIO.h</a> +</li> +<li>ATOMIC_RESTORESTATE +: <a class="el" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">FastIO.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>BACKLIGHT_OFF +: <a class="el" href="_l_c_d_8h.html#a0f50ae3b4bdb42dd5ad74b2c604a7515">LCD.h</a> +</li> +<li>BACKLIGHT_ON +: <a class="el" href="_l_c_d_8h.html#aa5bad1c51f5fac029f3deacfef48c54b">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> +<li>COMMAND +: <a class="el" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_d"></a>- d -</h3><ul> +<li>D4 +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">LiquidCrystal_SR3W.cpp</a> +</li> +<li>D5 +: <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">LiquidCrystal_SR3W.cpp</a> +, <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">LiquidCrystal_I2C.cpp</a> +</li> +<li>D6 +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">LiquidCrystal_SR3W.cpp</a> +</li> +<li>D7 +: <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">LiquidCrystal_SR3W.cpp</a> +, <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">LiquidCrystal_I2C.cpp</a> +</li> +<li>DATA +: <a class="el" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> +<li>EN +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">LiquidCrystal_SR3W.cpp</a> +</li> +<li>EXEC_TIME +: <a class="el" href="_liquid_crystal_8h.html#adebff0f00a59c9f9863bc196938d5726">LiquidCrystal.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_f"></a>- f -</h3><ul> +<li>fio_bit +: <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">FastIO.h</a> +</li> +<li>fio_digitalRead() +: <a class="el" href="_fast_i_o_8cpp.html#a83fc2fdc19ab3f9aade9e1a2f39e81a6">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#a197336e47e1c3f929056ce3abbbc7e8d">FastIO.h</a> +</li> +<li>fio_digitalWrite() +: <a class="el" href="_fast_i_o_8cpp.html#ae91bbe682b02a5842c291055c0e998b5">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#ae91bbe682b02a5842c291055c0e998b5">FastIO.h</a> +</li> +<li>fio_digitalWrite_HIGH +: <a class="el" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">FastIO.h</a> +</li> +<li>fio_digitalWrite_LOW +: <a class="el" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">FastIO.h</a> +</li> +<li>fio_digitalWrite_SWITCH +: <a class="el" href="_fast_i_o_8h.html#a6d1dffed7f0c8f28f6c88146315f7832">FastIO.h</a> +</li> +<li>fio_digitalWrite_SWITCHTO +: <a class="el" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">FastIO.h</a> +</li> +<li>FIO_FALLBACK +: <a class="el" href="_fast_i_o_8h.html#a32f90d0ad5c1295c97cc1e79936aadd6">FastIO.h</a> +</li> +<li>fio_pinToBit() +: <a class="el" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#a07a19dfbdca1afaca5d666bdaa3be7d5">FastIO.h</a> +</li> +<li>fio_pinToInputRegister() +: <a class="el" href="_fast_i_o_8cpp.html#afb934fc0ded94cbb5ed8ed14e2a123ed">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#afb934fc0ded94cbb5ed8ed14e2a123ed">FastIO.h</a> +</li> +<li>fio_pinToOutputRegister() +: <a class="el" href="_fast_i_o_8h.html#a385ae40d960c1a57e86818332476a802">FastIO.h</a> +, <a class="el" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">FastIO.cpp</a> +</li> +<li>fio_register +: <a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">FastIO.h</a> +</li> +<li>fio_shiftOut() +: <a class="el" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#a56c72b9f00680662229895ab22aaa743">FastIO.h</a> +, <a class="el" href="_fast_i_o_8cpp.html#a5d8d5977294d614d15bda19f75d6b787">FastIO.cpp</a> +</li> +<li>fio_shiftOut1() +: <a class="el" href="_fast_i_o_8cpp.html#a5b4d1684030dc620938b7c2fbdf5ced8">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#af2aac35d9a8ab7a2c87672f2c7cbbafb">FastIO.h</a> +, <a class="el" href="_fast_i_o_8cpp.html#a7ac8b242e7e3cacf175e481889e047dd">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#a33ce251dcd6b448185cda415a99001cf">FastIO.h</a> +</li> +<li>fio_shiftOut1_init() +: <a class="el" href="_fast_i_o_8cpp.html#a2d0e4495eb12504255bbd3f82405b17b">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#ae4b2e099f8ade9ee674d1565669e870a">FastIO.h</a> +, <a class="el" href="_fast_i_o_8cpp.html#ae4b2e099f8ade9ee674d1565669e870a">FastIO.cpp</a> +</li> +<li>FOUR_BITS +: <a class="el" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_h"></a>- h -</h3><ul> +<li>HOME_CLEAR_EXEC +: <a class="el" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">LCD.h</a> +</li> +<li>HW_CLEAR +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a3069011d6c3fab813423e8101c6a7aa7">LiquidCrystal_SR1W.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_l"></a>- l -</h3><ul> +<li>LCD_1LINE +: <a class="el" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD.h</a> +</li> +<li>LCD_2LINE +: <a class="el" href="_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25">LCD.h</a> +</li> +<li>LCD_4BIT +: <a class="el" href="_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c">LiquidCrystal.cpp</a> +</li> +<li>LCD_4BITMODE +: <a class="el" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD.h</a> +</li> +<li>LCD_5x10DOTS +: <a class="el" href="_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42">LCD.h</a> +</li> +<li>LCD_5x8DOTS +: <a class="el" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD.h</a> +</li> +<li>LCD_8BIT +: <a class="el" href="_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071">LiquidCrystal.cpp</a> +</li> +<li>LCD_8BITMODE +: <a class="el" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">LCD.h</a> +</li> +<li>LCD_BACKLIGHT +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">LiquidCrystal_SR3W.cpp</a> +</li> +<li>LCD_BLINKOFF +: <a class="el" href="_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752">LCD.h</a> +</li> +<li>LCD_BLINKON +: <a class="el" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD.h</a> +</li> +<li>LCD_CLEARDISPLAY +: <a class="el" href="_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2">LCD.h</a> +</li> +<li>LCD_CURSORMOVE +: <a class="el" href="_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74">LCD.h</a> +</li> +<li>LCD_CURSOROFF +: <a class="el" href="_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa">LCD.h</a> +</li> +<li>LCD_CURSORON +: <a class="el" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD.h</a> +</li> +<li>LCD_CURSORSHIFT +: <a class="el" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD.h</a> +</li> +<li>LCD_DISPLAYCONTROL +: <a class="el" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD.h</a> +</li> +<li>LCD_DISPLAYMOVE +: <a class="el" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD.h</a> +</li> +<li>LCD_DISPLAYOFF +: <a class="el" href="_l_c_d_8h.html#a257ebe775cac7140cf82aa40d8ce545a">LCD.h</a> +</li> +<li>LCD_DISPLAYON +: <a class="el" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD.h</a> +</li> +<li>LCD_ENTRYLEFT +: <a class="el" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD.h</a> +</li> +<li>LCD_ENTRYMODESET +: <a class="el" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD.h</a> +</li> +<li>LCD_ENTRYRIGHT +: <a class="el" href="_l_c_d_8h.html#a43c26ba2e66880fac95ef640b56873ad">LCD.h</a> +</li> +<li>LCD_ENTRYSHIFTDECREMENT +: <a class="el" href="_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42">LCD.h</a> +</li> +<li>LCD_ENTRYSHIFTINCREMENT +: <a class="el" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD.h</a> +</li> +<li>LCD_FUNCTIONSET +: <a class="el" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD.h</a> +</li> +<li>LCD_MOVELEFT +: <a class="el" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">LCD.h</a> +</li> +<li>LCD_MOVERIGHT +: <a class="el" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">LCD.h</a> +</li> +<li>LCD_NOBACKLIGHT +: <a class="el" href="_liquid_crystal_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LiquidCrystal.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LiquidCrystal_SR3W.cpp</a> +, <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LiquidCrystal_I2C.cpp</a> +</li> +<li>LCD_RETURNHOME +: <a class="el" href="_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419">LCD.h</a> +</li> +<li>LCD_SETCGRAMADDR +: <a class="el" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">LCD.h</a> +</li> +<li>LCD_SETDDRAMADDR +: <a class="el" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>NEGATIVE +: <a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> +<li>POSITIVE +: <a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>RS +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#af8903d8eea3868940c60af887473b152">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#af8903d8eea3868940c60af887473b152">LiquidCrystal_SR3W.cpp</a> +</li> +<li>RW +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#afc4ded33ac0ca43defcce639e965748a">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#afc4ded33ac0ca43defcce639e965748a">LiquidCrystal_SR3W.cpp</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> +<li>SKIP +: <a class="el" href="_fast_i_o_8h.html#a688a4adbb87520a2b68681bd6bfb199e">FastIO.h</a> +</li> +<li>SR1W_ATOMIC_WRITE_HIGH +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a7582c2cf6ceaeddf740f675c8f731ecf">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_ATOMIC_WRITE_LOW +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a895edbf1947d432e4616bc4592de8cfa">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_BL_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a2bfc90f6a1e21e271196273a8db741af">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_D4_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a2ee8ae46c168f471666c4aaddbca1ec0">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_D5_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a159fe0dd329cef231ae7d8ad674adad3">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_D6_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a5cea156a4ee75a239b094b1c24116140">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_D7_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a7accf5938d87cf2edbda80b26e0e6f69">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_DELAY +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_DELAY_US +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#af142acb4543f9067f60a28d58a49f033">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_EN_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a6875204445378ad8d8a8ded846cbcbaa">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_RS_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a874628609b122ed01ccd5e39411f86de">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_UNUSED_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#ae4324c30e18eea1716bd2b0f60027712">LiquidCrystal_SR1W.h</a> +</li> +<li>SR2W_BL_MASK +: <a class="el" href="_liquid_crystal___s_r2_w_8h.html#a53e3add69865ae57ca872cb41fcae9e3">LiquidCrystal_SR2W.h</a> +</li> +<li>SR2W_DATA_MASK +: <a class="el" href="_liquid_crystal___s_r2_w_8h.html#a7cf86f2a173473d01e02b2ac786a8690">LiquidCrystal_SR2W.h</a> +</li> +<li>SR2W_EN_MASK +: <a class="el" href="_liquid_crystal___s_r2_w_8h.html#a8d17b6abb5bcde6883dbdc86d34be9d8">LiquidCrystal_SR2W.h</a> +</li> +<li>SR2W_RS_MASK +: <a class="el" href="_liquid_crystal___s_r2_w_8h.html#acce98b026d9fdcb2e126705c14af7500">LiquidCrystal_SR2W.h</a> +</li> +<li>SR_EN_BIT +: <a class="el" href="_liquid_crystal___s_r_8h.html#a0075b041d82abb47f279dce482e7b087">LiquidCrystal_SR.h</a> +</li> +<li>SR_RS_BIT +: <a class="el" href="_liquid_crystal___s_r_8h.html#afdaa2bbb2cc185700864ac8d7a570ced">LiquidCrystal_SR.h</a> +</li> +<li>SW_CLEAR +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a6181fb356c56f0ac9a79810e1ba99ebc">LiquidCrystal_SR1W.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_t"></a>- t -</h3><ul> +<li>t_backlighPol +: <a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">LCD.h</a> +</li> +<li>t_sr1w_circuitType +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99">LiquidCrystal_SR1W.h</a> +</li> +<li>TWO_WIRE +: <a class="el" href="_liquid_crystal___s_r_8h.html#a40fb1f76bc5f8ca9e6534b47bd6da27c">LiquidCrystal_SR.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_w"></a>- w -</h3><ul> +<li>waitUsec() +: <a class="el" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">LCD.h</a> +</li> +</ul> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="footer">Generated on Sat Aug 3 2013 22:34:06 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/globals_defs.html b/libraries/LiquidCrystal/utility/docs/html/globals_defs.html new file mode 100644 index 0000000000000000000000000000000000000000..6fc2e40d9a01de8af5611f8228f466ef65c5a3fd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/globals_defs.html @@ -0,0 +1,412 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: File Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> + <div id="navrow4" class="tabs3"> + <ul class="tablist"> + <li><a href="#index__"><span>_</span></a></li> + <li><a href="#index_a"><span>a</span></a></li> + <li><a href="#index_b"><span>b</span></a></li> + <li><a href="#index_c"><span>c</span></a></li> + <li><a href="#index_d"><span>d</span></a></li> + <li><a href="#index_e"><span>e</span></a></li> + <li><a href="#index_f"><span>f</span></a></li> + <li><a href="#index_h"><span>h</span></a></li> + <li><a href="#index_l"><span>l</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_s"><span>s</span></a></li> + <li><a href="#index_t"><span>t</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('globals.html',''); +</script> +<div id="doc-content"> +<div class="contents"> +  + +<h3><a class="anchor" id="index__"></a>- _ -</h3><ul> +<li>_I2CIO_VERSION +: <a class="el" href="_i2_c_i_o_8h.html#a218dbde2f6fda8c5825e25da10864c71">I2CIO.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_a"></a>- a -</h3><ul> +<li>ATOMIC_BLOCK +: <a class="el" href="_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d">FastIO.h</a> +</li> +<li>ATOMIC_RESTORESTATE +: <a class="el" href="_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef">FastIO.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>BACKLIGHT_OFF +: <a class="el" href="_l_c_d_8h.html#a0f50ae3b4bdb42dd5ad74b2c604a7515">LCD.h</a> +</li> +<li>BACKLIGHT_ON +: <a class="el" href="_l_c_d_8h.html#aa5bad1c51f5fac029f3deacfef48c54b">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> +<li>COMMAND +: <a class="el" href="_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_d"></a>- d -</h3><ul> +<li>D4 +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed">LiquidCrystal_SR3W.cpp</a> +</li> +<li>D5 +: <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">LiquidCrystal_SR3W.cpp</a> +, <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c">LiquidCrystal_I2C.cpp</a> +</li> +<li>D6 +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6">LiquidCrystal_SR3W.cpp</a> +</li> +<li>D7 +: <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">LiquidCrystal_SR3W.cpp</a> +, <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6">LiquidCrystal_I2C.cpp</a> +</li> +<li>DATA +: <a class="el" href="_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> +<li>EN +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05">LiquidCrystal_SR3W.cpp</a> +</li> +<li>EXEC_TIME +: <a class="el" href="_liquid_crystal_8h.html#adebff0f00a59c9f9863bc196938d5726">LiquidCrystal.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_f"></a>- f -</h3><ul> +<li>fio_digitalWrite_HIGH +: <a class="el" href="_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622">FastIO.h</a> +</li> +<li>fio_digitalWrite_LOW +: <a class="el" href="_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478">FastIO.h</a> +</li> +<li>fio_digitalWrite_SWITCH +: <a class="el" href="_fast_i_o_8h.html#a6d1dffed7f0c8f28f6c88146315f7832">FastIO.h</a> +</li> +<li>fio_digitalWrite_SWITCHTO +: <a class="el" href="_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190">FastIO.h</a> +</li> +<li>FIO_FALLBACK +: <a class="el" href="_fast_i_o_8h.html#a32f90d0ad5c1295c97cc1e79936aadd6">FastIO.h</a> +</li> +<li>FOUR_BITS +: <a class="el" href="_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_h"></a>- h -</h3><ul> +<li>HOME_CLEAR_EXEC +: <a class="el" href="_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_l"></a>- l -</h3><ul> +<li>LCD_1LINE +: <a class="el" href="_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641">LCD.h</a> +</li> +<li>LCD_2LINE +: <a class="el" href="_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25">LCD.h</a> +</li> +<li>LCD_4BIT +: <a class="el" href="_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c">LiquidCrystal.cpp</a> +</li> +<li>LCD_4BITMODE +: <a class="el" href="_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224">LCD.h</a> +</li> +<li>LCD_5x10DOTS +: <a class="el" href="_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42">LCD.h</a> +</li> +<li>LCD_5x8DOTS +: <a class="el" href="_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464">LCD.h</a> +</li> +<li>LCD_8BIT +: <a class="el" href="_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071">LiquidCrystal.cpp</a> +</li> +<li>LCD_8BITMODE +: <a class="el" href="_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0">LCD.h</a> +</li> +<li>LCD_BACKLIGHT +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b">LiquidCrystal_SR3W.cpp</a> +</li> +<li>LCD_BLINKOFF +: <a class="el" href="_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752">LCD.h</a> +</li> +<li>LCD_BLINKON +: <a class="el" href="_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206">LCD.h</a> +</li> +<li>LCD_CLEARDISPLAY +: <a class="el" href="_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2">LCD.h</a> +</li> +<li>LCD_CURSORMOVE +: <a class="el" href="_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74">LCD.h</a> +</li> +<li>LCD_CURSOROFF +: <a class="el" href="_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa">LCD.h</a> +</li> +<li>LCD_CURSORON +: <a class="el" href="_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574">LCD.h</a> +</li> +<li>LCD_CURSORSHIFT +: <a class="el" href="_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594">LCD.h</a> +</li> +<li>LCD_DISPLAYCONTROL +: <a class="el" href="_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f">LCD.h</a> +</li> +<li>LCD_DISPLAYMOVE +: <a class="el" href="_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40">LCD.h</a> +</li> +<li>LCD_DISPLAYOFF +: <a class="el" href="_l_c_d_8h.html#a257ebe775cac7140cf82aa40d8ce545a">LCD.h</a> +</li> +<li>LCD_DISPLAYON +: <a class="el" href="_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c">LCD.h</a> +</li> +<li>LCD_ENTRYLEFT +: <a class="el" href="_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0">LCD.h</a> +</li> +<li>LCD_ENTRYMODESET +: <a class="el" href="_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703">LCD.h</a> +</li> +<li>LCD_ENTRYRIGHT +: <a class="el" href="_l_c_d_8h.html#a43c26ba2e66880fac95ef640b56873ad">LCD.h</a> +</li> +<li>LCD_ENTRYSHIFTDECREMENT +: <a class="el" href="_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42">LCD.h</a> +</li> +<li>LCD_ENTRYSHIFTINCREMENT +: <a class="el" href="_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c">LCD.h</a> +</li> +<li>LCD_FUNCTIONSET +: <a class="el" href="_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111">LCD.h</a> +</li> +<li>LCD_MOVELEFT +: <a class="el" href="_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009">LCD.h</a> +</li> +<li>LCD_MOVERIGHT +: <a class="el" href="_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f">LCD.h</a> +</li> +<li>LCD_NOBACKLIGHT +: <a class="el" href="_liquid_crystal_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LiquidCrystal.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LiquidCrystal_SR3W.cpp</a> +, <a class="el" href="_liquid_crystal___i2_c_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581">LiquidCrystal_I2C.cpp</a> +</li> +<li>LCD_RETURNHOME +: <a class="el" href="_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419">LCD.h</a> +</li> +<li>LCD_SETCGRAMADDR +: <a class="el" href="_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f">LCD.h</a> +</li> +<li>LCD_SETDDRAMADDR +: <a class="el" href="_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf">LCD.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>RS +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#af8903d8eea3868940c60af887473b152">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#af8903d8eea3868940c60af887473b152">LiquidCrystal_SR3W.cpp</a> +</li> +<li>RW +: <a class="el" href="_liquid_crystal___i2_c_8cpp.html#afc4ded33ac0ca43defcce639e965748a">LiquidCrystal_I2C.cpp</a> +, <a class="el" href="_liquid_crystal___s_r3_w_8cpp.html#afc4ded33ac0ca43defcce639e965748a">LiquidCrystal_SR3W.cpp</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> +<li>SKIP +: <a class="el" href="_fast_i_o_8h.html#a688a4adbb87520a2b68681bd6bfb199e">FastIO.h</a> +</li> +<li>SR1W_ATOMIC_WRITE_HIGH +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a7582c2cf6ceaeddf740f675c8f731ecf">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_ATOMIC_WRITE_LOW +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a895edbf1947d432e4616bc4592de8cfa">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_BL_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a2bfc90f6a1e21e271196273a8db741af">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_D4_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a2ee8ae46c168f471666c4aaddbca1ec0">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_D5_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a159fe0dd329cef231ae7d8ad674adad3">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_D6_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a5cea156a4ee75a239b094b1c24116140">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_D7_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a7accf5938d87cf2edbda80b26e0e6f69">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_DELAY +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_DELAY_US +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#af142acb4543f9067f60a28d58a49f033">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_EN_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a6875204445378ad8d8a8ded846cbcbaa">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_RS_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a874628609b122ed01ccd5e39411f86de">LiquidCrystal_SR1W.h</a> +</li> +<li>SR1W_UNUSED_MASK +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#ae4324c30e18eea1716bd2b0f60027712">LiquidCrystal_SR1W.h</a> +</li> +<li>SR2W_BL_MASK +: <a class="el" href="_liquid_crystal___s_r2_w_8h.html#a53e3add69865ae57ca872cb41fcae9e3">LiquidCrystal_SR2W.h</a> +</li> +<li>SR2W_DATA_MASK +: <a class="el" href="_liquid_crystal___s_r2_w_8h.html#a7cf86f2a173473d01e02b2ac786a8690">LiquidCrystal_SR2W.h</a> +</li> +<li>SR2W_EN_MASK +: <a class="el" href="_liquid_crystal___s_r2_w_8h.html#a8d17b6abb5bcde6883dbdc86d34be9d8">LiquidCrystal_SR2W.h</a> +</li> +<li>SR2W_RS_MASK +: <a class="el" href="_liquid_crystal___s_r2_w_8h.html#acce98b026d9fdcb2e126705c14af7500">LiquidCrystal_SR2W.h</a> +</li> +<li>SR_EN_BIT +: <a class="el" href="_liquid_crystal___s_r_8h.html#a0075b041d82abb47f279dce482e7b087">LiquidCrystal_SR.h</a> +</li> +<li>SR_RS_BIT +: <a class="el" href="_liquid_crystal___s_r_8h.html#afdaa2bbb2cc185700864ac8d7a570ced">LiquidCrystal_SR.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_t"></a>- t -</h3><ul> +<li>TWO_WIRE +: <a class="el" href="_liquid_crystal___s_r_8h.html#a40fb1f76bc5f8ca9e6534b47bd6da27c">LiquidCrystal_SR.h</a> +</li> +</ul> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="footer">Generated on Sat Aug 3 2013 22:34:06 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/globals_enum.html b/libraries/LiquidCrystal/utility/docs/html/globals_enum.html new file mode 100644 index 0000000000000000000000000000000000000000..bb4e68abee5db6e53ec1d7c0f201a24bc734b4f2 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/globals_enum.html @@ -0,0 +1,124 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: File Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('globals.html',''); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>t_backlighPol +: <a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc">LCD.h</a> +</li> +<li>t_sr1w_circuitType +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99">LiquidCrystal_SR1W.h</a> +</li> +</ul> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="footer">Generated on Sat Aug 3 2013 22:34:06 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/globals_eval.html b/libraries/LiquidCrystal/utility/docs/html/globals_eval.html new file mode 100644 index 0000000000000000000000000000000000000000..115e47e6d092bf326c04d18773973df5c727d840 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/globals_eval.html @@ -0,0 +1,130 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: File Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('globals.html',''); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>HW_CLEAR +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a3069011d6c3fab813423e8101c6a7aa7">LiquidCrystal_SR1W.h</a> +</li> +<li>NEGATIVE +: <a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865">LCD.h</a> +</li> +<li>POSITIVE +: <a class="el" href="_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5">LCD.h</a> +</li> +<li>SW_CLEAR +: <a class="el" href="_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a6181fb356c56f0ac9a79810e1ba99ebc">LiquidCrystal_SR1W.h</a> +</li> +</ul> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="footer">Generated on Sat Aug 3 2013 22:34:06 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/globals_func.html b/libraries/LiquidCrystal/utility/docs/html/globals_func.html new file mode 100644 index 0000000000000000000000000000000000000000..38b6dbf5797f21d8881d07987cfc37221dec7b23 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/globals_func.html @@ -0,0 +1,154 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: File Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li class="current"><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('globals.html',''); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>fio_digitalRead() +: <a class="el" href="_fast_i_o_8cpp.html#a83fc2fdc19ab3f9aade9e1a2f39e81a6">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#a197336e47e1c3f929056ce3abbbc7e8d">FastIO.h</a> +</li> +<li>fio_digitalWrite() +: <a class="el" href="_fast_i_o_8h.html#ae91bbe682b02a5842c291055c0e998b5">FastIO.h</a> +, <a class="el" href="_fast_i_o_8cpp.html#ae91bbe682b02a5842c291055c0e998b5">FastIO.cpp</a> +</li> +<li>fio_pinToBit() +: <a class="el" href="_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#a07a19dfbdca1afaca5d666bdaa3be7d5">FastIO.h</a> +</li> +<li>fio_pinToInputRegister() +: <a class="el" href="_fast_i_o_8h.html#afb934fc0ded94cbb5ed8ed14e2a123ed">FastIO.h</a> +, <a class="el" href="_fast_i_o_8cpp.html#afb934fc0ded94cbb5ed8ed14e2a123ed">FastIO.cpp</a> +</li> +<li>fio_pinToOutputRegister() +: <a class="el" href="_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#a385ae40d960c1a57e86818332476a802">FastIO.h</a> +</li> +<li>fio_shiftOut() +: <a class="el" href="_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#a56c72b9f00680662229895ab22aaa743">FastIO.h</a> +</li> +<li>fio_shiftOut1() +: <a class="el" href="_fast_i_o_8h.html#af2aac35d9a8ab7a2c87672f2c7cbbafb">FastIO.h</a> +, <a class="el" href="_fast_i_o_8cpp.html#a7ac8b242e7e3cacf175e481889e047dd">FastIO.cpp</a> +</li> +<li>fio_shiftOut1_init() +: <a class="el" href="_fast_i_o_8cpp.html#ae4b2e099f8ade9ee674d1565669e870a">FastIO.cpp</a> +, <a class="el" href="_fast_i_o_8h.html#ae4b2e099f8ade9ee674d1565669e870a">FastIO.h</a> +, <a class="el" href="_fast_i_o_8cpp.html#a2d0e4495eb12504255bbd3f82405b17b">FastIO.cpp</a> +</li> +<li>waitUsec() +: <a class="el" href="_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc">LCD.h</a> +</li> +</ul> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="footer">Generated on Sat Aug 3 2013 22:34:06 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/globals_type.html b/libraries/LiquidCrystal/utility/docs/html/globals_type.html new file mode 100644 index 0000000000000000000000000000000000000000..47fb668c983cb48986e54456196a96d25e9c3196 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/globals_type.html @@ -0,0 +1,124 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>LCD Library: File Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript"> +$(document).ready(initResizable); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body onload='searchBox.OnSelectItem(0);'> +<!-- Generated by Doxygen 1.7.4 --> +<script type="text/javascript"><!-- +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +--></script> +<div id="top"> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoGoogle.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">LCD Library <span id="projectnumber">1.3.0</span></div> + <div id="projectbrief">LCD Library - LCD control class hierarchy library. Drop in replacement for the LiquidCrystal Library.</div> + </td> + </tr> + </tbody> +</table> +</div> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li id="searchli"> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div id="navrow3" class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_enum.html"><span>Enumerations</span></a></li> + <li><a href="globals_eval.html"><span>Enumerator</span></a></li> + <li><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> +</div> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> + initNavTree('globals.html',''); +</script> +<div id="doc-content"> +<div class="contents"> + <ul> +<li>fio_bit +: <a class="el" href="_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937">FastIO.h</a> +</li> +<li>fio_register +: <a class="el" href="_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f">FastIO.h</a> +</li> +</ul> +</div> +</div> + <div id="nav-path" class="navpath"> + <ul> + <li class="footer">Generated on Sat Aug 3 2013 22:34:06 for LCD Library by  +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + + +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/hierarchy.html b/libraries/LiquidCrystal/utility/docs/html/hierarchy.html new file mode 100644 index 0000000000000000000000000000000000000000..46d389ad0b68789d6fa416ba3dba27cfdcdaadfd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/hierarchy.html @@ -0,0 +1,116 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Class Hierarchy</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="classes.html"><span>Class Index</span></a></li> + <li class="current"><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Class Hierarchy</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory"> +<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_i2_c_i_o.html" target="_self">I2CIO</a></td><td class="desc"></td></tr> +<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">▼</span><span class="icona"><span class="icon">C</span></span><b>Print</b></td><td class="desc"></td></tr> +<tr id="row_1_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_1_0_" class="arrow" onclick="toggleFolder('1_0_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_l_c_d.html" target="_self">LCD</a></td><td class="desc"></td></tr> +<tr id="row_1_0_0_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal.html" target="_self">LiquidCrystal</a></td><td class="desc"></td></tr> +<tr id="row_1_0_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___i2_c.html" target="_self">LiquidCrystal_I2C</a></td><td class="desc"></td></tr> +<tr id="row_1_0_2_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___i2_c___by_vac.html" target="_self">LiquidCrystal_I2C_ByVac</a></td><td class="desc"></td></tr> +<tr id="row_1_0_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_i2_c.html" target="_self">LiquidCrystal_SI2C</a></td><td class="desc"></td></tr> +<tr id="row_1_0_4_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_r.html" target="_self">LiquidCrystal_SR</a></td><td class="desc"></td></tr> +<tr id="row_1_0_5_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_r1_w.html" target="_self">LiquidCrystal_SR1W</a></td><td class="desc"></td></tr> +<tr id="row_1_0_6_"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_r2_w.html" target="_self">LiquidCrystal_SR2W</a></td><td class="desc"></td></tr> +<tr id="row_1_0_7_" class="even"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_liquid_crystal___s_r3_w.html" target="_self">LiquidCrystal_SR3W</a></td><td class="desc"></td></tr> +<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_s_i2_c_i_o.html" target="_self">SI2CIO</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/hierarchy.js b/libraries/LiquidCrystal/utility/docs/html/hierarchy.js new file mode 100644 index 0000000000000000000000000000000000000000..26add4e5524724d969e2465c9cad2bcad1b11e8f --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/hierarchy.js @@ -0,0 +1,18 @@ +var hierarchy = +[ + [ "I2CIO", "class_i2_c_i_o.html", null ], + [ "Print", null, [ + [ "LCD", "class_l_c_d.html", [ + [ "LiquidCrystal", "class_liquid_crystal.html", null ], + [ "LiquidCrystal_I2C", "class_liquid_crystal___i2_c.html", null ], + [ "LiquidCrystal_I2C_ByVac", "class_liquid_crystal___i2_c___by_vac.html", null ], + [ "LiquidCrystal_SI2C", "class_liquid_crystal___s_i2_c.html", null ], + [ "LiquidCrystal_SR", "class_liquid_crystal___s_r.html", null ], + [ "LiquidCrystal_SR1W", "class_liquid_crystal___s_r1_w.html", null ], + [ "LiquidCrystal_SR2W", "class_liquid_crystal___s_r2_w.html", null ], + [ "LiquidCrystal_SR3W", "class_liquid_crystal___s_r3_w.html", null ] + ] ] + ] ], + [ "SI2CIO", "class_s_i2_c_i_o.html", null ], + [ "SoftI2CMaster", "class_soft_i2_c_master.html", null ] +]; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/index.html b/libraries/LiquidCrystal/utility/docs/html/index.html new file mode 100644 index 0000000000000000000000000000000000000000..c31419f85bcd589f90da1ba3630e8d98694d5650 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/index.html @@ -0,0 +1,92 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Main Page</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li class="current"><a href="index.html"><span>Main Page</span></a></li> + <li><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">New LiquidCrystal library Documentation</div> </div> +</div><!--header--> +<div class="contents"> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/installdox b/libraries/LiquidCrystal/utility/docs/html/installdox new file mode 100644 index 0000000000000000000000000000000000000000..edf5bbfe3e075e72bb87ea0d8361bf4ead9aef84 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/installdox @@ -0,0 +1,112 @@ +#!/usr/bin/perl + +%subst = ( ); +$quiet = 0; + +while ( @ARGV ) { + $_ = shift @ARGV; + if ( s/^-// ) { + if ( /^l(.*)/ ) { + $v = ($1 eq "") ? shift @ARGV : $1; + ($v =~ /\/$/) || ($v .= "/"); + $_ = $v; + if ( /(.+)\@(.+)/ ) { + if ( exists $subst{$1} ) { + $subst{$1} = $2; + } else { + print STDERR "Unknown tag file $1 given with option -l\n"; + &usage(); + } + } else { + print STDERR "Argument $_ is invalid for option -l\n"; + &usage(); + } + } + elsif ( /^q/ ) { + $quiet = 1; + } + elsif ( /^\?|^h/ ) { + &usage(); + } + else { + print STDERR "Illegal option -$_\n"; + &usage(); + } + } + else { + push (@files, $_ ); + } +} + +foreach $sub (keys %subst) +{ + if ( $subst{$sub} eq "" ) + { + print STDERR "No substitute given for tag file `$sub'\n"; + &usage(); + } + elsif ( ! $quiet && $sub ne "_doc" && $sub ne "_cgi" ) + { + print "Substituting $subst{$sub} for each occurrence of tag file $sub\n"; + } +} + +if ( ! @files ) { + if (opendir(D,".")) { + foreach $file ( readdir(D) ) { + $match = ".html"; + next if ( $file =~ /^\.\.?$/ ); + ($file =~ /$match/) && (push @files, $file); + ($file =~ /\.svg/) && (push @files, $file); + ($file =~ "navtree.js") && (push @files, $file); + } + closedir(D); + } +} + +if ( ! @files ) { + print STDERR "Warning: No input files given and none found!\n"; +} + +foreach $f (@files) +{ + if ( ! $quiet ) { + print "Editing: $f...\n"; + } + $oldf = $f; + $f .= ".bak"; + unless (rename $oldf,$f) { + print STDERR "Error: cannot rename file $oldf\n"; + exit 1; + } + if (open(F,"<$f")) { + unless (open(G,">$oldf")) { + print STDERR "Error: opening file $oldf for writing\n"; + exit 1; + } + if ($oldf ne "tree.js") { + while (<F>) { + s/doxygen\=\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\" (xlink:href|href|src)=\"\2/doxygen\=\"$1:$subst{$1}\" \3=\"$subst{$1}/g; + print G "$_"; + } + } + else { + while (<F>) { + s/\"([^ \"\:\t\>\<]*)\:([^ \"\t\>\<]*)\", \"\2/\"$1:$subst{$1}\" ,\"$subst{$1}/g; + print G "$_"; + } + } + } + else { + print STDERR "Warning file $f does not exist\n"; + } + unlink $f; +} + +sub usage { + print STDERR "Usage: installdox [options] [html-file [html-file ...]]\n"; + print STDERR "Options:\n"; + print STDERR " -l tagfile\@linkName tag file + URL or directory \n"; + print STDERR " -q Quiet mode\n\n"; + exit 1; +} diff --git a/libraries/LiquidCrystal/utility/docs/html/jquery.js b/libraries/LiquidCrystal/utility/docs/html/jquery.js new file mode 100644 index 0000000000000000000000000000000000000000..1f4d0b47cec6c273add6041c043b156f523f3734 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/jquery.js @@ -0,0 +1,68 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);/*! + PowerTip - v1.2.0 - 2013-04-03 + http://stevenbenner.github.com/jquery-powertip/ + Copyright (c) 2013 Steven Benner (http://stevenbenner.com/). + Released under MIT license. + https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt +*/ +(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}})); \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/logoGoogle.jpg b/libraries/LiquidCrystal/utility/docs/html/logoGoogle.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28f6ae16ac04311c6f63cb6bdd49a604a77d611b Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/logoGoogle.jpg differ diff --git a/libraries/LiquidCrystal/utility/docs/html/md___users_fmalpartida__documents_development_mercurial_repos__s_w__newliquid_crystal__r_e_a_d_m_e.html b/libraries/LiquidCrystal/utility/docs/html/md___users_fmalpartida__documents_development_mercurial_repos__s_w__newliquid_crystal__r_e_a_d_m_e.html new file mode 100644 index 0000000000000000000000000000000000000000..ebb340421b1a3515f1347b2e6177fa411e4137cd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/md___users_fmalpartida__documents_development_mercurial_repos__s_w__newliquid_crystal__r_e_a_d_m_e.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: README</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +</div><!-- top --> +<div class="header"> + <div class="headertitle"> +<div class="title">README </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><h2>Introduction</h2> +<div class="image"> +<img src="https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/I2CLCDextraIO_assemblyProject_small.jpg" alt="LCD library"/> +</div> +<p>Welcome to the <em><a class="el" href="class_l_c_d.html">LCD</a> Library</em> for <b>Arduino</b> and <b>Chipkit</b>. It is a derivate of the original <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a> Library as sourced in the Arduino SDK. It has been developed to be compatible with the current <a class="el" href="class_liquid_crystal.html">LiquidCrystal</a> library, its performance is almost 5 times faster and fully extendable if need be.</p> +<p>It supports most <code>Hitachi HD44780</code> based LCDs, or compatible, connected to any project using: 4, 8 wire parallel interface, I2C IO port expander (native I2C and bit bang) and Shift Regiter.</p> +<p>It currently supports 4 types of connections:</p> +<ul> +<li>4 bit parallel <a class="el" href="class_l_c_d.html">LCD</a> interface</li> +<li>8 bit parallel <a class="el" href="class_l_c_d.html">LCD</a> interface</li> +<li>I2C IO bus expansion board with the PCF8574* I2C IO expander ASIC such as <a href="http://www.electrofunltd.com/2011/10/i2c-lcd-extra-io.html" title="I2C LCD extra IO">I2C LCD extra IO</a>.</li> +<li>ShiftRegister adaptor board as described <a href="http://code.google.com/p/arduinoshiftreglcd/" title="Shift Register project home">Shift Register project home</a> or in the HW configuration described below, 2 and 3 wire configurations supported.</li> +<li>ShiftRegister 3 wire latch adaptor board as described <a href="http://www.arduino.cc/playground/Code/LCD3wires" title="ShiftRegister 3 Wire Home">ShiftRegister 3 Wire Home</a></li> +<li>Support for 1 wire shift register <a href="http://www.romanblack.com/shift1.htm" title="ShiftRegister 1 Wire">ShiftRegister 1 Wire</a></li> +<li>I2C bus expansion using general purpose IO lines.</li> +</ul> +<h3>How do I get set up?</h3> +<ul> +<li>Please refer to the project's <a href="https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home" title="wiki">wiki</a></li> +</ul> +<h3>Contributors</h3> +<p>The library has had the invaluable contribution of:</p> +<ul> +<li><a href="http://www.3guys1laser.com/blog-cheap-arduino-2-wire-lcd-display-0" title="picas">piccaso</a> - Florian Fida - Flo, thanks for testing and improving the SR library, initial version of the 1 wire interface and speed improvements.</li> +<li>B. Perry - *bperrybap.billsworld.billandterrie.com*, with his thoughtful contribution, speed improvements and development support for the SR2W library.</li> +<li>Adrian Piccioli, with his contribution to the i2c GPIO support.</li> +<li><a href="https://github.com/todbot" title="todbot">todbot</a> Tod E. Kurt for the <a href="https://github.com/todbot/SoftI2CMaster" title="softwarei2cmaster">softwarei2cmaster</a> library.</li> +<li><a href="https://github.com/felias-fogg">felias-fogg</a> - Bernhard for the <a href="https://github.com/felias-fogg/SoftI2CMaster" title="softwirei2cmaster">softwarei2cmaster fast</a></li> +</ul> +<h4>Contribution guidelines</h4> +<ul> +<li>Writing tests</li> +<li>Code review</li> +<li>Help out with bug fixing</li> +<li>Setup a project logo</li> +<li>Write new drivers to support more LCDs.</li> +</ul> +<h3>Who do I talk to?</h3> +<ul> +<li>Repo owner or admin</li> +<li>For SoftI2CMaster latest versions, updates and support, please refer to <a href="https://github.com/todbot/SoftI2CMaster" title="todbot">SoftI2CMaster</a> </li> +</ul> +</div></div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/nav_f.png b/libraries/LiquidCrystal/utility/docs/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/nav_f.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/nav_g.png b/libraries/LiquidCrystal/utility/docs/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/nav_g.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/nav_h.png b/libraries/LiquidCrystal/utility/docs/html/nav_h.png new file mode 100644 index 0000000000000000000000000000000000000000..33389b101d9cd9b4c98ad286b5d9c46a6671f650 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/nav_h.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/navtree.css b/libraries/LiquidCrystal/utility/docs/html/navtree.css new file mode 100644 index 0000000000000000000000000000000000000000..1a868b3fc18357810c1aec4c462f681f2f116b49 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/navtree.css @@ -0,0 +1,143 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/libraries/LiquidCrystal/utility/docs/html/navtree.js b/libraries/LiquidCrystal/utility/docs/html/navtree.js new file mode 100644 index 0000000000000000000000000000000000000000..9df45a7d82c35a28fe8a3ebdddba4d6ef362bfd5 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/navtree.js @@ -0,0 +1,523 @@ +var navTreeSubIndices = new Array(); + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("img"); + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.width = 16; + imgNode.height = 22; + imgNode.border = 0; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.src = node.relpath+"arrowright.png"; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + imgNode.src = node.relpath+"arrowright.png"; + } else { + var span = document.createElement("span"); + span.style.display = 'inline-block'; + span.style.width = 16*(level+1)+'px'; + span.style.height = '22px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + if (node.isLast) { + node.plus_img.src = node.relpath+"arrowdown.png"; + } else { + node.plus_img.src = node.relpath+"arrowdown.png"; + } + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.src = node.relpath+"arrowdown.png"; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+1<o.breadcrumbs.length) { + showNode(o,n,index+1,hash); + } else { + if (typeof(n.childrenData)==='string') { + var varName = n.childrenData; + getScript(n.relpath+varName,function(){ + n.childrenData = getData(varName); + node.expanded=false; + showNode(o,node,index,hash); // retry with child node expanded + },true); + } else { + var rootBase = stripPath(o.toroot.replace(/\..+$/, '')); + if (rootBase=="index" || rootBase=="pages" || rootBase=="search") { + expandNode(o, n, true, true); + } + selectAndHighlight(hash,n); + } + } + } + } else { + selectAndHighlight(hash); + } +} + +function removeToInsertLater(element) { + var parentNode = element.parentNode; + var nextSibling = element.nextSibling; + parentNode.removeChild(element); + return function() { + if (nextSibling) { + parentNode.insertBefore(element, nextSibling); + } else { + parentNode.appendChild(element); + } + }; +} + +function getNode(o, po) +{ + var insertFunction = removeToInsertLater(po.li); + po.childrenVisited = true; + var l = po.childrenData.length-1; + for (var i in po.childrenData) { + var nodeData = po.childrenData[i]; + po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], + i==l); + } + insertFunction(); +} + +function gotoNode(o,subIndex,root,hash,relpath) +{ + var nti = navTreeSubIndices[subIndex][root+hash]; + o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]); + if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index + navTo(o,NAVTREE[0][1],"",relpath); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + if (o.breadcrumbs) { + o.breadcrumbs.unshift(0); // add 0 for root node + showNode(o, o.node, 0, hash); + } +} + +function navTo(o,root,hash,relpath) +{ + var link = cachedLink(); + if (link) { + var parts = link.split('#'); + root = parts[0]; + if (parts.length>1) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>'); +} + +function showSyncOn(n,relpath) +{ + n.html('<img src="'+relpath+'sync_on.png" title="'+SYNCONMSG+'"/>'); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("img"); + o.node.plus_img.src = relpath+"arrowright.png"; + o.node.plus_img.width = 16; + o.node.plus_img.height = 22; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/</g,'\\3c ')+'"]'); + } + if (a==null || !$(a).parent().parent().hasClass('selected')){ + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + var link=stripPath2(pathName()); + navTo(o,link,hashUrl(),relpath); + } else if (!animationInProgress) { + $('#doc-content').scrollTop(0); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + navTo(o,toroot,hashUrl(),relpath); + } + }) +} + diff --git a/libraries/LiquidCrystal/utility/docs/html/navtreedata.js b/libraries/LiquidCrystal/utility/docs/html/navtreedata.js new file mode 100644 index 0000000000000000000000000000000000000000..9fab6387274158a7e20538b91bdf730d48926c97 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/navtreedata.js @@ -0,0 +1,25 @@ +var NAVTREE = +[ + [ "New LiquidCrystal library", "index.html", [ + [ "Classes", "annotated.html", [ + [ "Class List", "annotated.html", "annotated_dup" ], + [ "Class Index", "classes.html", null ], + [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], + [ "Class Members", "functions.html", [ + [ "All", "functions.html", null ], + [ "Functions", "functions_func.html", null ] + ] ] + ] ], + [ "Files", null, [ + [ "File List", "files.html", "files" ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"_fast_i_o_8h_source.html" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; \ No newline at end of file diff --git a/libraries/LiquidCrystal/utility/docs/html/navtreeindex0.js b/libraries/LiquidCrystal/utility/docs/html/navtreeindex0.js new file mode 100644 index 0000000000000000000000000000000000000000..67474bd43331c0e03b8d7a4360066c8de55d8439 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/navtreeindex0.js @@ -0,0 +1,154 @@ +var NAVTREEINDEX0 = +{ +"_fast_i_o_8h_source.html":[1,0,0], +"_i2_c_i_o_8h_source.html":[1,0,1], +"_l_c_d_8h_source.html":[1,0,2], +"_liquid_crystal_8h_source.html":[1,0,3], +"_liquid_crystal___i2_c_8h_source.html":[1,0,4], +"_liquid_crystal___i2_c___by_vac_8h_source.html":[1,0,5], +"_liquid_crystal___s_i2_c_8h_source.html":[1,0,6], +"_liquid_crystal___s_r1_w_8h_source.html":[1,0,8], +"_liquid_crystal___s_r2_w_8h_source.html":[1,0,9], +"_liquid_crystal___s_r3_w_8h_source.html":[1,0,10], +"_liquid_crystal___s_r_8h_source.html":[1,0,7], +"_s_i2_c_i_o_8h_source.html":[1,0,11], +"_soft_i2_c_master_8h_source.html":[1,0,12], +"annotated.html":[0,0], +"class_i2_c_i_o.html":[0,0,0], +"class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34":[0,0,0,5], +"class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6":[0,0,0,0], +"class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd":[0,0,0,3], +"class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887":[0,0,0,4], +"class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae":[0,0,0,1], +"class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7":[0,0,0,6], +"class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7":[0,0,0,2], +"class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd":[0,0,0,7], +"class_l_c_d.html":[0,0,1], +"class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8":[0,0,1,0], +"class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c":[0,0,1,12], +"class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2":[0,0,1,18], +"class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620":[0,0,1,7], +"class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7":[0,0,1,10], +"class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488":[0,0,1,14], +"class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3":[0,0,1,26], +"class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828":[0,0,1,23], +"class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5":[0,0,1,15], +"class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea":[0,0,1,3], +"class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d":[0,0,1,25], +"class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc":[0,0,1,24], +"class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89":[0,0,1,8], +"class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7":[0,0,1,21], +"class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a":[0,0,1,19], +"class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c":[0,0,1,30], +"class_l_c_d.html#a878b36878fa8287093964eba83aace77":[0,0,1,4], +"class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0":[0,0,1,27], +"class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a":[0,0,1,6], +"class_l_c_d.html#a96035dde40efbf73390e00b5beb00231":[0,0,1,13], +"class_l_c_d.html#a990338759d2abe10b0fb1743b7789566":[0,0,1,32], +"class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4":[0,0,1,11], +"class_l_c_d.html#aba8867fe2210cbfa8db869208709be10":[0,0,1,2], +"class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e":[0,0,1,1], +"class_l_c_d.html#abfc44b294772f09020bfa32af8a79571":[0,0,1,22], +"class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428":[0,0,1,20], +"class_l_c_d.html#ac1374911fb145fea430c21092ada0c06":[0,0,1,31], +"class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4":[0,0,1,28], +"class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9":[0,0,1,16], +"class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68":[0,0,1,9], +"class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f":[0,0,1,29], +"class_l_c_d.html#af3974da6d988ba2d21c25135ada12108":[0,0,1,17], +"class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a":[0,0,1,5], +"class_liquid_crystal.html":[0,0,2], +"class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec":[0,0,2,4], +"class_liquid_crystal.html#a23124e6dd5ac4a9b6147629b96e91953":[0,0,2,5], +"class_liquid_crystal.html#a30e3d865c4b4a003a36cb45903f93644":[0,0,2,1], +"class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686":[0,0,2,0], +"class_liquid_crystal.html#a52a4de3d866e347208a32dfc9d797729":[0,0,2,7], +"class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089":[0,0,2,8], +"class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9":[0,0,2,10], +"class_liquid_crystal.html#a8b90122c67a6d14b967c8a11ba490670":[0,0,2,6], +"class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd":[0,0,2,9], +"class_liquid_crystal.html#ae0c3c8f7661634b1400f00a1c9c02c26":[0,0,2,3], +"class_liquid_crystal.html#aff2330186495fde93370d46c0ca2cbf0":[0,0,2,2], +"class_liquid_crystal___i2_c.html":[0,0,3], +"class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b":[0,0,3,9], +"class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce":[0,0,3,2], +"class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654":[0,0,3,4], +"class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4":[0,0,3,7], +"class_liquid_crystal___i2_c.html#a9fc9bc519ebbf7503dadc11622e02ed6":[0,0,3,1], +"class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c":[0,0,3,0], +"class_liquid_crystal___i2_c.html#ab15622287533de7a47f3e2012ebf18be":[0,0,3,5], +"class_liquid_crystal___i2_c.html#add1f2da7de4ec9b9cd5c9b5fab712464":[0,0,3,3], +"class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6":[0,0,3,6], +"class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8":[0,0,3,8], +"class_liquid_crystal___i2_c___by_vac.html":[0,0,4], +"class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31":[0,0,4,0], +"class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb":[0,0,4,1], +"class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4":[0,0,4,4], +"class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7":[0,0,4,3], +"class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1":[0,0,4,2], +"class_liquid_crystal___s_i2_c.html":[0,0,5], +"class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb":[0,0,5,6], +"class_liquid_crystal___s_i2_c.html#a79edfbd0842a34f10265cb65576d4879":[0,0,5,1], +"class_liquid_crystal___s_i2_c.html#a806579792d7a37fecdb21e115ec62cf7":[0,0,5,3], +"class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa":[0,0,5,9], +"class_liquid_crystal___s_i2_c.html#a85bdea23d3121833d512af3760bd0592":[0,0,5,5], +"class_liquid_crystal___s_i2_c.html#aa1a837dec506f9c459605c7bd4b7fe8c":[0,0,5,2], +"class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9":[0,0,5,7], +"class_liquid_crystal___s_i2_c.html#ac0e7a4841e03a4e4916c66ff48ea53e9":[0,0,5,4], +"class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be":[0,0,5,0], +"class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d":[0,0,5,8], +"class_liquid_crystal___s_r.html":[0,0,6], +"class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47":[0,0,6,1], +"class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d":[0,0,6,3], +"class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc":[0,0,6,0], +"class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535":[0,0,6,2], +"class_liquid_crystal___s_r1_w.html":[0,0,7], +"class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9":[0,0,7,0], +"class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1":[0,0,7,1], +"class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5":[0,0,7,2], +"class_liquid_crystal___s_r2_w.html":[0,0,8], +"class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6":[0,0,8,2], +"class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d":[0,0,8,1], +"class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3":[0,0,8,0], +"class_liquid_crystal___s_r3_w.html":[0,0,9], +"class_liquid_crystal___s_r3_w.html#a24f051747dfeda48f7b207c3358c8015":[0,0,9,3], +"class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0":[0,0,9,2], +"class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295":[0,0,9,5], +"class_liquid_crystal___s_r3_w.html#a7b2f382b76bc9d88adb8d681e824b4de":[0,0,9,1], +"class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477":[0,0,9,6], +"class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56":[0,0,9,4], +"class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b":[0,0,9,0], +"class_s_i2_c_i_o.html":[0,0,10], +"class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33":[0,0,10,2], +"class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060":[0,0,10,6], +"class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9":[0,0,10,7], +"class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3":[0,0,10,4], +"class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b":[0,0,10,5], +"class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de":[0,0,10,3], +"class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf":[0,0,10,0], +"class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47":[0,0,10,1], +"class_soft_i2_c_master.html":[0,0,11], +"class_soft_i2_c_master.html#a04782f52620df5c8befcd18a849196aa":[0,0,11,6], +"class_soft_i2_c_master.html#a218e33e8f81b0f64370dc2fc036e5151":[0,0,11,8], +"class_soft_i2_c_master.html#a2df16a5d624e2b21df7229b7eb4a4b31":[0,0,11,13], +"class_soft_i2_c_master.html#a791bec13d09f3e1e49fbd7c72b1fd12d":[0,0,11,4], +"class_soft_i2_c_master.html#a7da6a512db82ea053e1b625199d26f95":[0,0,11,10], +"class_soft_i2_c_master.html#aa59620fa4bd961b21a4ffef3e66e1060":[0,0,11,9], +"class_soft_i2_c_master.html#aad64723d1850661878af673ad5abb185":[0,0,11,11], +"class_soft_i2_c_master.html#ac39c24535036972ca9e6fa79819d5d9e":[0,0,11,3], +"class_soft_i2_c_master.html#ac5e27fbfa79d49e2aa10542099fe0f16":[0,0,11,12], +"class_soft_i2_c_master.html#ad46d2b3a0ced1d5e958246453681dc12":[0,0,11,2], +"class_soft_i2_c_master.html#ad5159d322afd4e1fcca6791c35576dc9":[0,0,11,0], +"class_soft_i2_c_master.html#ad5a93a06a09a5f7afaf2c2fc0e10c3b0":[0,0,11,15], +"class_soft_i2_c_master.html#ae321cd9d0b882ecf32366996aa2887dc":[0,0,11,7], +"class_soft_i2_c_master.html#aece7e02a4a41da0fcc0d94c6b657df7b":[0,0,11,1], +"class_soft_i2_c_master.html#aefc6d650a9b55fc313f101c90fb2a4a1":[0,0,11,5], +"class_soft_i2_c_master.html#af97e93a09958e253d413e5fb7f191012":[0,0,11,14], +"classes.html":[0,1], +"files.html":[1,0], +"functions.html":[0,3,0], +"functions_func.html":[0,3,1], +"hierarchy.html":[0,2], +"index.html":[], +"pages.html":[] +}; diff --git a/libraries/LiquidCrystal/utility/docs/html/open.png b/libraries/LiquidCrystal/utility/docs/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/open.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/pages.html b/libraries/LiquidCrystal/utility/docs/html/pages.html new file mode 100644 index 0000000000000000000000000000000000000000..e8d3874cf824294443c0f7c6a748caa61ff5d5da --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/pages.html @@ -0,0 +1,97 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<title>New LiquidCrystal library: Related Pages</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { init_search(); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">New LiquidCrystal library +  <span id="projectnumber">1.3.2</span> + </div> + <div id="projectbrief">Generic LCD control library</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.10 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="pages.html"><span>Related Pages</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Related Pages</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="md___users_fmalpartida__documents_development_mercurial_repos__s_w__newliquid_crystal__r_e_a_d_m_e.html" target="_self">README</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +<!-- start footer part --> +<hr class="footer"/><address class="footer"><small> +Generated by  <a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/> +</a> 1.8.10 +</small></address> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/resize.js b/libraries/LiquidCrystal/utility/docs/html/resize.js new file mode 100644 index 0000000000000000000000000000000000000000..304fcb6badde4fd456b1a9996098ff1a49736e7c --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/resize.js @@ -0,0 +1,97 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + var device = navigator.userAgent.toLowerCase(); + var ios = device.match(/(iphone|ipod|ipad)/); + if (ios) { + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + } + }); +} + + diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_0.html b/libraries/LiquidCrystal/utility/docs/html/search/all_0.html new file mode 100644 index 0000000000000000000000000000000000000000..1d4695009a58108da0332089712bb291ce2e0139 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_0.js b/libraries/LiquidCrystal/utility/docs/html/search/all_0.js new file mode 100644 index 0000000000000000000000000000000000000000..ce610fc5f106b6fe9168aca17c320fbc0681af57 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['autoscroll',['autoscroll',['../class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_1.html b/libraries/LiquidCrystal/utility/docs/html/search/all_1.html new file mode 100644 index 0000000000000000000000000000000000000000..1fbc509c219b2bb5e9b0b64818d192d442a24b51 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_1.js b/libraries/LiquidCrystal/utility/docs/html/search/all_1.js new file mode 100644 index 0000000000000000000000000000000000000000..83cdee904fb7fe514d4d04f0a9566d0dde4ac8ba --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['backlight',['backlight',['../class_l_c_d.html#aba8867fe2210cbfa8db869208709be10',1,'LCD']]], + ['begin',['begin',['../class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae',1,'I2CIO::begin()'],['../class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea',1,'LCD::begin()'],['../class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6',1,'LiquidCrystal_I2C::begin()'],['../class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb',1,'LiquidCrystal_I2C_ByVac::begin()'],['../class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb',1,'LiquidCrystal_SI2C::begin()'],['../class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47',1,'SI2CIO::begin()']]], + ['blink',['blink',['../class_l_c_d.html#a878b36878fa8287093964eba83aace77',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_2.html b/libraries/LiquidCrystal/utility/docs/html/search/all_2.html new file mode 100644 index 0000000000000000000000000000000000000000..93962b7243d5866b7010446baf9f1739ae1f1698 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_2.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_2.js b/libraries/LiquidCrystal/utility/docs/html/search/all_2.js new file mode 100644 index 0000000000000000000000000000000000000000..ab2366a42e8f5b3a32cf09ecc93c4dc966d88a07 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['clear',['clear',['../class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a',1,'LCD']]], + ['createchar',['createChar',['../class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a',1,'LCD']]], + ['cursor',['cursor',['../class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_3.html b/libraries/LiquidCrystal/utility/docs/html/search/all_3.html new file mode 100644 index 0000000000000000000000000000000000000000..679f93ca9d5ccd291e39fa6dd4fea0b9e560b6eb --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_3.js b/libraries/LiquidCrystal/utility/docs/html/search/all_3.js new file mode 100644 index 0000000000000000000000000000000000000000..a4ce9dc48e0921fa4ab0db9e79eacf4aaa6775c1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['digitalread',['digitalRead',['../class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7',1,'I2CIO::digitalRead()'],['../class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33',1,'SI2CIO::digitalRead()']]], + ['digitalwrite',['digitalWrite',['../class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd',1,'I2CIO::digitalWrite()'],['../class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de',1,'SI2CIO::digitalWrite()']]], + ['display',['display',['../class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_4.html b/libraries/LiquidCrystal/utility/docs/html/search/all_4.html new file mode 100644 index 0000000000000000000000000000000000000000..adc99fbbf9e76affb0cad9f4f8171ef2f48b7fe4 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_4.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_4.js b/libraries/LiquidCrystal/utility/docs/html/search/all_4.js new file mode 100644 index 0000000000000000000000000000000000000000..1edeee261c972d89ab856fd57645188efd014b74 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['home',['home',['../class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_5.html b/libraries/LiquidCrystal/utility/docs/html/search/all_5.html new file mode 100644 index 0000000000000000000000000000000000000000..a9fcd170298d5c33f7fbe173b1b5904b66ea1b42 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_5.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_5.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_5.js b/libraries/LiquidCrystal/utility/docs/html/search/all_5.js new file mode 100644 index 0000000000000000000000000000000000000000..3f5c1ed7e848eb6ba797230a5dcac95a80aadb36 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['i2cio',['I2CIO',['../class_i2_c_i_o.html',1,'I2CIO'],['../class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6',1,'I2CIO::I2CIO()']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_5f.html b/libraries/LiquidCrystal/utility/docs/html/search/all_5f.html new file mode 100644 index 0000000000000000000000000000000000000000..f4de1dd4d6a24e9118744afb6dceb2dfc9c3f25e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_5f.html @@ -0,0 +1,62 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR__5fcols"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0" target="_parent">_cols</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fdisplaycontrol"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4" target="_parent">_displaycontrol</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fdisplayfunction"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f" target="_parent">_displayfunction</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fdisplaymode"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c" target="_parent">_displaymode</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fi2cio_5fversion"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../_i2_c_i_o_8h.html#a218dbde2f6fda8c5825e25da10864c71" target="_parent">_I2CIO_VERSION</a> + <span class="SRScope">I2CIO.h</span> + </div> +</div> +<div class="SRResult" id="SR__5fnumlines"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../class_l_c_d.html#ac1374911fb145fea430c21092ada0c06" target="_parent">_numlines</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fpolarity"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../class_l_c_d.html#a990338759d2abe10b0fb1743b7789566" target="_parent">_polarity</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_6.html b/libraries/LiquidCrystal/utility/docs/html/search/all_6.html new file mode 100644 index 0000000000000000000000000000000000000000..821c374d8cc5b1936157ee77c6cddb4a9d453b58 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_6.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_6.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_6.js b/libraries/LiquidCrystal/utility/docs/html/search/all_6.js new file mode 100644 index 0000000000000000000000000000000000000000..9ff393cf8346adaf12d8854ab9788b69f6f20084 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_6.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['lcd',['LCD',['../class_l_c_d.html',1,'LCD'],['../class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()']]], + ['lefttoright',['leftToRight',['../class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7',1,'LCD']]], + ['liquidcrystal',['LiquidCrystal',['../class_liquid_crystal.html',1,'LiquidCrystal'],['../class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686',1,'LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)'],['../class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec',1,'LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)']]], + ['liquidcrystal_5fi2c',['LiquidCrystal_I2C',['../class_liquid_crystal___i2_c.html',1,'LiquidCrystal_I2C'],['../class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c',1,'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr)'],['../class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce',1,'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)'],['../class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654',1,'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)']]], + ['liquidcrystal_5fi2c_5fbyvac',['LiquidCrystal_I2C_ByVac',['../class_liquid_crystal___i2_c___by_vac.html',1,'LiquidCrystal_I2C_ByVac'],['../class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31',1,'LiquidCrystal_I2C_ByVac::LiquidCrystal_I2C_ByVac()']]], + ['liquidcrystal_5fsi2c',['LiquidCrystal_SI2C',['../class_liquid_crystal___s_i2_c.html',1,'LiquidCrystal_SI2C'],['../class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be',1,'LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr)'],['../class_liquid_crystal___s_i2_c.html#aa1a837dec506f9c459605c7bd4b7fe8c',1,'LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)'],['../class_liquid_crystal___s_i2_c.html#ac0e7a4841e03a4e4916c66ff48ea53e9',1,'LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)']]], + ['liquidcrystal_5fsr',['LiquidCrystal_SR',['../class_liquid_crystal___s_r.html',1,'LiquidCrystal_SR'],['../class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc',1,'LiquidCrystal_SR::LiquidCrystal_SR()']]], + ['liquidcrystal_5fsr1w',['LiquidCrystal_SR1W',['../class_liquid_crystal___s_r1_w.html',1,'LiquidCrystal_SR1W'],['../class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9',1,'LiquidCrystal_SR1W::LiquidCrystal_SR1W()']]], + ['liquidcrystal_5fsr2w',['LiquidCrystal_SR2W',['../class_liquid_crystal___s_r2_w.html',1,'LiquidCrystal_SR2W'],['../class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3',1,'LiquidCrystal_SR2W::LiquidCrystal_SR2W()']]], + ['liquidcrystal_5fsr3w',['LiquidCrystal_SR3W',['../class_liquid_crystal___s_r3_w.html',1,'LiquidCrystal_SR3W'],['../class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b',1,'LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe)'],['../class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0',1,'LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_61.html b/libraries/LiquidCrystal/utility/docs/html/search/all_61.html new file mode 100644 index 0000000000000000000000000000000000000000..77a85bb9ee0d6fa4da5e63bfe9c920d12d9dcc43 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_61.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_atomic_5fblock"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d" target="_parent">ATOMIC_BLOCK</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_atomic_5frestorestate"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef" target="_parent">ATOMIC_RESTORESTATE</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_autoscroll"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e" target="_parent">autoscroll</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_62.html b/libraries/LiquidCrystal/utility/docs/html/search/all_62.html new file mode 100644 index 0000000000000000000000000000000000000000..d930b2a3cff75d46ed09a8ac9f8c748264e56294 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_62.html @@ -0,0 +1,55 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_backlight"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#aba8867fe2210cbfa8db869208709be10" target="_parent">backlight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_backlight_5foff"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_l_c_d_8h.html#a0f50ae3b4bdb42dd5ad74b2c604a7515" target="_parent">BACKLIGHT_OFF</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_backlight_5fon"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_l_c_d_8h.html#aa5bad1c51f5fac029f3deacfef48c54b" target="_parent">BACKLIGHT_ON</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_begin"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_begin')">begin</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae" target="_parent">I2CIO::begin()</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea" target="_parent">LCD::begin()</a> + <a id="Item3_c2" onkeydown="return searchResults.NavChild(event,3,2)" onkeypress="return searchResults.NavChild(event,3,2)" onkeyup="return searchResults.NavChild(event,3,2)" class="SRScope" href="../class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6" target="_parent">LiquidCrystal_I2C::begin()</a> + <a id="Item3_c3" onkeydown="return searchResults.NavChild(event,3,3)" onkeypress="return searchResults.NavChild(event,3,3)" onkeyup="return searchResults.NavChild(event,3,3)" class="SRScope" href="../class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb" target="_parent">LiquidCrystal_I2C_ByVac::begin()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_blink"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../class_l_c_d.html#a878b36878fa8287093964eba83aace77" target="_parent">blink</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_63.html b/libraries/LiquidCrystal/utility/docs/html/search/all_63.html new file mode 100644 index 0000000000000000000000000000000000000000..fd3737311947fc40e4c142596174b6d260ebcfb6 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_63.html @@ -0,0 +1,44 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_clear"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a" target="_parent">clear</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_command"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e" target="_parent">COMMAND</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_createchar"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a" target="_parent">createChar</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_cursor"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620" target="_parent">cursor</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_64.html b/libraries/LiquidCrystal/utility/docs/html/search/all_64.html new file mode 100644 index 0000000000000000000000000000000000000000..e66c5263af4fb109fbdc0a29d6db3e50e546816e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_64.html @@ -0,0 +1,80 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_d4"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_d4')">D4</a> + <div class="SRChildren"> + <a id="Item0_c0" onkeydown="return searchResults.NavChild(event,0,0)" onkeypress="return searchResults.NavChild(event,0,0)" onkeyup="return searchResults.NavChild(event,0,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed" target="_parent">D4(): LiquidCrystal_I2C.cpp</a> + <a id="Item0_c1" onkeydown="return searchResults.NavChild(event,0,1)" onkeypress="return searchResults.NavChild(event,0,1)" onkeyup="return searchResults.NavChild(event,0,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed" target="_parent">D4(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_d5"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_d5')">D5</a> + <div class="SRChildren"> + <a id="Item1_c0" onkeydown="return searchResults.NavChild(event,1,0)" onkeypress="return searchResults.NavChild(event,1,0)" onkeyup="return searchResults.NavChild(event,1,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c" target="_parent">D5(): LiquidCrystal_I2C.cpp</a> + <a id="Item1_c1" onkeydown="return searchResults.NavChild(event,1,1)" onkeypress="return searchResults.NavChild(event,1,1)" onkeyup="return searchResults.NavChild(event,1,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c" target="_parent">D5(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_d6"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_d6')">D6</a> + <div class="SRChildren"> + <a id="Item2_c0" onkeydown="return searchResults.NavChild(event,2,0)" onkeypress="return searchResults.NavChild(event,2,0)" onkeyup="return searchResults.NavChild(event,2,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6" target="_parent">D6(): LiquidCrystal_I2C.cpp</a> + <a id="Item2_c1" onkeydown="return searchResults.NavChild(event,2,1)" onkeypress="return searchResults.NavChild(event,2,1)" onkeyup="return searchResults.NavChild(event,2,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6" target="_parent">D6(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_d7"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_d7')">D7</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6" target="_parent">D7(): LiquidCrystal_I2C.cpp</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6" target="_parent">D7(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_data"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045" target="_parent">DATA</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_digitalread"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7" target="_parent">digitalRead</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_digitalwrite"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd" target="_parent">digitalWrite</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_display"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" target="_parent">display</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_65.html b/libraries/LiquidCrystal/utility/docs/html/search/all_65.html new file mode 100644 index 0000000000000000000000000000000000000000..7ac4e794dad70262c1f3c00507eeda0dbdadfc42 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_65.html @@ -0,0 +1,35 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_en"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_en')">EN</a> + <div class="SRChildren"> + <a id="Item0_c0" onkeydown="return searchResults.NavChild(event,0,0)" onkeypress="return searchResults.NavChild(event,0,0)" onkeyup="return searchResults.NavChild(event,0,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05" target="_parent">EN(): LiquidCrystal_I2C.cpp</a> + <a id="Item0_c1" onkeydown="return searchResults.NavChild(event,0,1)" onkeypress="return searchResults.NavChild(event,0,1)" onkeyup="return searchResults.NavChild(event,0,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05" target="_parent">EN(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_exec_5ftime"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_liquid_crystal_8h.html#adebff0f00a59c9f9863bc196938d5726" target="_parent">EXEC_TIME</a> + <span class="SRScope">LiquidCrystal.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_66.html b/libraries/LiquidCrystal/utility/docs/html/search/all_66.html new file mode 100644 index 0000000000000000000000000000000000000000..f615e958ef3730a9367a5694d2664eea91403875 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_66.html @@ -0,0 +1,156 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_fastio_2ecpp"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_fast_i_o_8cpp.html" target="_parent">FastIO.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_fastio_2eh"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_fast_i_o_8h.html" target="_parent">FastIO.h</a> + </div> +</div> +<div class="SRResult" id="SR_fio_5fbit"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937" target="_parent">fio_bit</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalread"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fdigitalread')">fio_digitalRead</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a83fc2fdc19ab3f9aade9e1a2f39e81a6" target="_parent">fio_digitalRead(fio_register pinRegister, uint8_t pinBit): FastIO.cpp</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../_fast_i_o_8h.html#a197336e47e1c3f929056ce3abbbc7e8d" target="_parent">fio_digitalRead(fio_register pinRegister, fio_bit pinBit): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fdigitalwrite')">fio_digitalWrite</a> + <div class="SRChildren"> + <a id="Item4_c0" onkeydown="return searchResults.NavChild(event,4,0)" onkeypress="return searchResults.NavChild(event,4,0)" onkeyup="return searchResults.NavChild(event,4,0)" class="SRScope" href="../_fast_i_o_8cpp.html#ae91bbe682b02a5842c291055c0e998b5" target="_parent">fio_digitalWrite(fio_register pinRegister, fio_bit pinBit, uint8_t value): FastIO.cpp</a> + <a id="Item4_c1" onkeydown="return searchResults.NavChild(event,4,1)" onkeypress="return searchResults.NavChild(event,4,1)" onkeyup="return searchResults.NavChild(event,4,1)" class="SRScope" href="../_fast_i_o_8h.html#ae91bbe682b02a5842c291055c0e998b5" target="_parent">fio_digitalWrite(fio_register pinRegister, fio_bit pinBit, uint8_t value): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite_5fhigh"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622" target="_parent">fio_digitalWrite_HIGH</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite_5flow"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478" target="_parent">fio_digitalWrite_LOW</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite_5fswitch"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../_fast_i_o_8h.html#a6d1dffed7f0c8f28f6c88146315f7832" target="_parent">fio_digitalWrite_SWITCH</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite_5fswitchto"> + <div class="SREntry"> + <a id="Item8" onkeydown="return searchResults.Nav(event,8)" onkeypress="return searchResults.Nav(event,8)" onkeyup="return searchResults.Nav(event,8)" class="SRSymbol" href="../_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190" target="_parent">fio_digitalWrite_SWITCHTO</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5ffallback"> + <div class="SREntry"> + <a id="Item9" onkeydown="return searchResults.Nav(event,9)" onkeypress="return searchResults.Nav(event,9)" onkeyup="return searchResults.Nav(event,9)" class="SRSymbol" href="../_fast_i_o_8h.html#a32f90d0ad5c1295c97cc1e79936aadd6" target="_parent">FIO_FALLBACK</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fpintobit"> + <div class="SREntry"> + <a id="Item10" onkeydown="return searchResults.Nav(event,10)" onkeypress="return searchResults.Nav(event,10)" onkeyup="return searchResults.Nav(event,10)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fpintobit')">fio_pinToBit</a> + <div class="SRChildren"> + <a id="Item10_c0" onkeydown="return searchResults.NavChild(event,10,0)" onkeypress="return searchResults.NavChild(event,10,0)" onkeyup="return searchResults.NavChild(event,10,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5" target="_parent">fio_pinToBit(uint8_t pin): FastIO.cpp</a> + <a id="Item10_c1" onkeydown="return searchResults.NavChild(event,10,1)" onkeypress="return searchResults.NavChild(event,10,1)" onkeyup="return searchResults.NavChild(event,10,1)" class="SRScope" href="../_fast_i_o_8h.html#a07a19dfbdca1afaca5d666bdaa3be7d5" target="_parent">fio_pinToBit(uint8_t pin): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fpintoinputregister"> + <div class="SREntry"> + <a id="Item11" onkeydown="return searchResults.Nav(event,11)" onkeypress="return searchResults.Nav(event,11)" onkeyup="return searchResults.Nav(event,11)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fpintoinputregister')">fio_pinToInputRegister</a> + <div class="SRChildren"> + <a id="Item11_c0" onkeydown="return searchResults.NavChild(event,11,0)" onkeypress="return searchResults.NavChild(event,11,0)" onkeyup="return searchResults.NavChild(event,11,0)" class="SRScope" href="../_fast_i_o_8cpp.html#afb934fc0ded94cbb5ed8ed14e2a123ed" target="_parent">fio_pinToInputRegister(uint8_t pin): FastIO.cpp</a> + <a id="Item11_c1" onkeydown="return searchResults.NavChild(event,11,1)" onkeypress="return searchResults.NavChild(event,11,1)" onkeyup="return searchResults.NavChild(event,11,1)" class="SRScope" href="../_fast_i_o_8h.html#afb934fc0ded94cbb5ed8ed14e2a123ed" target="_parent">fio_pinToInputRegister(uint8_t pin): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fpintooutputregister"> + <div class="SREntry"> + <a id="Item12" onkeydown="return searchResults.Nav(event,12)" onkeypress="return searchResults.Nav(event,12)" onkeyup="return searchResults.Nav(event,12)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fpintooutputregister')">fio_pinToOutputRegister</a> + <div class="SRChildren"> + <a id="Item12_c0" onkeydown="return searchResults.NavChild(event,12,0)" onkeypress="return searchResults.NavChild(event,12,0)" onkeyup="return searchResults.NavChild(event,12,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f" target="_parent">fio_pinToOutputRegister(uint8_t pin, uint8_t initial_state): FastIO.cpp</a> + <a id="Item12_c1" onkeydown="return searchResults.NavChild(event,12,1)" onkeypress="return searchResults.NavChild(event,12,1)" onkeyup="return searchResults.NavChild(event,12,1)" class="SRScope" href="../_fast_i_o_8h.html#a385ae40d960c1a57e86818332476a802" target="_parent">fio_pinToOutputRegister(uint8_t pin, uint8_t initial_state=LOW): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fregister"> + <div class="SREntry"> + <a id="Item13" onkeydown="return searchResults.Nav(event,13)" onkeypress="return searchResults.Nav(event,13)" onkeyup="return searchResults.Nav(event,13)" class="SRSymbol" href="../_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f" target="_parent">fio_register</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fshiftout"> + <div class="SREntry"> + <a id="Item14" onkeydown="return searchResults.Nav(event,14)" onkeypress="return searchResults.Nav(event,14)" onkeyup="return searchResults.Nav(event,14)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fshiftout')">fio_shiftOut</a> + <div class="SRChildren"> + <a id="Item14_c0" onkeydown="return searchResults.NavChild(event,14,0)" onkeypress="return searchResults.NavChild(event,14,0)" onkeyup="return searchResults.NavChild(event,14,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743" target="_parent">fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit, uint8_t value, uint8_t bitOrder): FastIO.cpp</a> + <a id="Item14_c1" onkeydown="return searchResults.NavChild(event,14,1)" onkeypress="return searchResults.NavChild(event,14,1)" onkeyup="return searchResults.NavChild(event,14,1)" class="SRScope" href="../_fast_i_o_8cpp.html#a5d8d5977294d614d15bda19f75d6b787" target="_parent">fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit): FastIO.cpp</a> + <a id="Item14_c2" onkeydown="return searchResults.NavChild(event,14,2)" onkeypress="return searchResults.NavChild(event,14,2)" onkeyup="return searchResults.NavChild(event,14,2)" class="SRScope" href="../_fast_i_o_8h.html#a56c72b9f00680662229895ab22aaa743" target="_parent">fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit, uint8_t value, uint8_t bitOrder): FastIO.cpp</a> + <a id="Item14_c3" onkeydown="return searchResults.NavChild(event,14,3)" onkeypress="return searchResults.NavChild(event,14,3)" onkeyup="return searchResults.NavChild(event,14,3)" class="SRScope" href="../_fast_i_o_8h.html#a5d8d5977294d614d15bda19f75d6b787" target="_parent">fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fshiftout1"> + <div class="SREntry"> + <a id="Item15" onkeydown="return searchResults.Nav(event,15)" onkeypress="return searchResults.Nav(event,15)" onkeyup="return searchResults.Nav(event,15)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fshiftout1')">fio_shiftOut1</a> + <div class="SRChildren"> + <a id="Item15_c0" onkeydown="return searchResults.NavChild(event,15,0)" onkeypress="return searchResults.NavChild(event,15,0)" onkeyup="return searchResults.NavChild(event,15,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a5b4d1684030dc620938b7c2fbdf5ced8" target="_parent">fio_shiftOut1(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, boolean noLatch): FastIO.cpp</a> + <a id="Item15_c1" onkeydown="return searchResults.NavChild(event,15,1)" onkeypress="return searchResults.NavChild(event,15,1)" onkeyup="return searchResults.NavChild(event,15,1)" class="SRScope" href="../_fast_i_o_8cpp.html#a7ac8b242e7e3cacf175e481889e047dd" target="_parent">fio_shiftOut1(uint8_t pin, uint8_t value, boolean noLatch): FastIO.cpp</a> + <a id="Item15_c2" onkeydown="return searchResults.NavChild(event,15,2)" onkeypress="return searchResults.NavChild(event,15,2)" onkeyup="return searchResults.NavChild(event,15,2)" class="SRScope" href="../_fast_i_o_8h.html#a33ce251dcd6b448185cda415a99001cf" target="_parent">fio_shiftOut1(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, boolean noLatch=false): FastIO.cpp</a> + <a id="Item15_c3" onkeydown="return searchResults.NavChild(event,15,3)" onkeypress="return searchResults.NavChild(event,15,3)" onkeyup="return searchResults.NavChild(event,15,3)" class="SRScope" href="../_fast_i_o_8h.html#af2aac35d9a8ab7a2c87672f2c7cbbafb" target="_parent">fio_shiftOut1(uint8_t pin, uint8_t value, boolean noLatch=false): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fshiftout1_5finit"> + <div class="SREntry"> + <a id="Item16" onkeydown="return searchResults.Nav(event,16)" onkeypress="return searchResults.Nav(event,16)" onkeyup="return searchResults.Nav(event,16)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fshiftout1_5finit')">fio_shiftOut1_init</a> + <div class="SRChildren"> + <a id="Item16_c0" onkeydown="return searchResults.NavChild(event,16,0)" onkeypress="return searchResults.NavChild(event,16,0)" onkeyup="return searchResults.NavChild(event,16,0)" class="SRScope" href="../_fast_i_o_8cpp.html#ae4b2e099f8ade9ee674d1565669e870a" target="_parent">fio_shiftOut1_init(uint8_t pin): FastIO.cpp</a> + <a id="Item16_c1" onkeydown="return searchResults.NavChild(event,16,1)" onkeypress="return searchResults.NavChild(event,16,1)" onkeyup="return searchResults.NavChild(event,16,1)" class="SRScope" href="../_fast_i_o_8cpp.html#a2d0e4495eb12504255bbd3f82405b17b" target="_parent">fio_shiftOut1_init(fio_register shift1Register, fio_bit shift1Bit): FastIO.cpp</a> + <a id="Item16_c2" onkeydown="return searchResults.NavChild(event,16,2)" onkeypress="return searchResults.NavChild(event,16,2)" onkeyup="return searchResults.NavChild(event,16,2)" class="SRScope" href="../_fast_i_o_8h.html#a2d0e4495eb12504255bbd3f82405b17b" target="_parent">fio_shiftOut1_init(fio_register shift1Register, fio_bit shift1Bit): FastIO.cpp</a> + <a id="Item16_c3" onkeydown="return searchResults.NavChild(event,16,3)" onkeypress="return searchResults.NavChild(event,16,3)" onkeyup="return searchResults.NavChild(event,16,3)" class="SRScope" href="../_fast_i_o_8h.html#ae4b2e099f8ade9ee674d1565669e870a" target="_parent">fio_shiftOut1_init(uint8_t pin): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_four_5fbits"> + <div class="SREntry"> + <a id="Item17" onkeydown="return searchResults.Nav(event,17)" onkeypress="return searchResults.Nav(event,17)" onkeyup="return searchResults.Nav(event,17)" class="SRSymbol" href="../_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe" target="_parent">FOUR_BITS</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_68.html b/libraries/LiquidCrystal/utility/docs/html/search/all_68.html new file mode 100644 index 0000000000000000000000000000000000000000..33a52d66721a5e00fe5966c11d6f0ddad946652f --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_68.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_home"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68" target="_parent">home</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_home_5fclear_5fexec"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f" target="_parent">HOME_CLEAR_EXEC</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_hw_5fclear"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a3069011d6c3fab813423e8101c6a7aa7" target="_parent">HW_CLEAR</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_69.html b/libraries/LiquidCrystal/utility/docs/html/search/all_69.html new file mode 100644 index 0000000000000000000000000000000000000000..2bbba17cb031ae50a77d1b3bf6bc0131e428921e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_69.html @@ -0,0 +1,39 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_i2cio"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_i2cio')">I2CIO</a> + <div class="SRChildren"> + <a id="Item0_c0" onkeydown="return searchResults.NavChild(event,0,0)" onkeypress="return searchResults.NavChild(event,0,0)" onkeyup="return searchResults.NavChild(event,0,0)" class="SRScope" href="../class_i2_c_i_o.html" target="_parent">I2CIO</a> + <a id="Item0_c1" onkeydown="return searchResults.NavChild(event,0,1)" onkeypress="return searchResults.NavChild(event,0,1)" onkeyup="return searchResults.NavChild(event,0,1)" class="SRScope" href="../class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6" target="_parent">I2CIO::I2CIO()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_i2cio_2ecpp"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_i2_c_i_o_8cpp.html" target="_parent">I2CIO.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_i2cio_2eh"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_i2_c_i_o_8h.html" target="_parent">I2CIO.h</a> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_6c.html b/libraries/LiquidCrystal/utility/docs/html/search/all_6c.html new file mode 100644 index 0000000000000000000000000000000000000000..dd5ad3ff2a6e749a8eae799c17e4ca08bdfafb16 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_6c.html @@ -0,0 +1,392 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_lcd"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_lcd')">LCD</a> + <div class="SRChildren"> + <a id="Item0_c0" onkeydown="return searchResults.NavChild(event,0,0)" onkeypress="return searchResults.NavChild(event,0,0)" onkeyup="return searchResults.NavChild(event,0,0)" class="SRScope" href="../class_l_c_d.html" target="_parent">LCD</a> + <a id="Item0_c1" onkeydown="return searchResults.NavChild(event,0,1)" onkeypress="return searchResults.NavChild(event,0,1)" onkeyup="return searchResults.NavChild(event,0,1)" class="SRScope" href="../class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8" target="_parent">LCD::LCD()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_lcd_2ecpp"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_l_c_d_8cpp.html" target="_parent">LCD.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_lcd_2eh"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_l_c_d_8h.html" target="_parent">LCD.h</a> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f1line"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641" target="_parent">LCD_1LINE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f2line"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25" target="_parent">LCD_2LINE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f4bit"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c" target="_parent">LCD_4BIT</a> + <span class="SRScope">LiquidCrystal.cpp</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f4bitmode"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224" target="_parent">LCD_4BITMODE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f5x10dots"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42" target="_parent">LCD_5x10DOTS</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f5x8dots"> + <div class="SREntry"> + <a id="Item8" onkeydown="return searchResults.Nav(event,8)" onkeypress="return searchResults.Nav(event,8)" onkeyup="return searchResults.Nav(event,8)" class="SRSymbol" href="../_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464" target="_parent">LCD_5x8DOTS</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f8bit"> + <div class="SREntry"> + <a id="Item9" onkeydown="return searchResults.Nav(event,9)" onkeypress="return searchResults.Nav(event,9)" onkeyup="return searchResults.Nav(event,9)" class="SRSymbol" href="../_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071" target="_parent">LCD_8BIT</a> + <span class="SRScope">LiquidCrystal.cpp</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f8bitmode"> + <div class="SREntry"> + <a id="Item10" onkeydown="return searchResults.Nav(event,10)" onkeypress="return searchResults.Nav(event,10)" onkeyup="return searchResults.Nav(event,10)" class="SRSymbol" href="../_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0" target="_parent">LCD_8BITMODE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fbacklight"> + <div class="SREntry"> + <a id="Item11" onkeydown="return searchResults.Nav(event,11)" onkeypress="return searchResults.Nav(event,11)" onkeyup="return searchResults.Nav(event,11)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_lcd_5fbacklight')">LCD_BACKLIGHT</a> + <div class="SRChildren"> + <a id="Item11_c0" onkeydown="return searchResults.NavChild(event,11,0)" onkeypress="return searchResults.NavChild(event,11,0)" onkeyup="return searchResults.NavChild(event,11,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b" target="_parent">LCD_BACKLIGHT(): LiquidCrystal_I2C.cpp</a> + <a id="Item11_c1" onkeydown="return searchResults.NavChild(event,11,1)" onkeypress="return searchResults.NavChild(event,11,1)" onkeyup="return searchResults.NavChild(event,11,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b" target="_parent">LCD_BACKLIGHT(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fblinkoff"> + <div class="SREntry"> + <a id="Item12" onkeydown="return searchResults.Nav(event,12)" onkeypress="return searchResults.Nav(event,12)" onkeyup="return searchResults.Nav(event,12)" class="SRSymbol" href="../_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752" target="_parent">LCD_BLINKOFF</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fblinkon"> + <div class="SREntry"> + <a id="Item13" onkeydown="return searchResults.Nav(event,13)" onkeypress="return searchResults.Nav(event,13)" onkeyup="return searchResults.Nav(event,13)" class="SRSymbol" href="../_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206" target="_parent">LCD_BLINKON</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcleardisplay"> + <div class="SREntry"> + <a id="Item14" onkeydown="return searchResults.Nav(event,14)" onkeypress="return searchResults.Nav(event,14)" onkeyup="return searchResults.Nav(event,14)" class="SRSymbol" href="../_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2" target="_parent">LCD_CLEARDISPLAY</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcursormove"> + <div class="SREntry"> + <a id="Item15" onkeydown="return searchResults.Nav(event,15)" onkeypress="return searchResults.Nav(event,15)" onkeyup="return searchResults.Nav(event,15)" class="SRSymbol" href="../_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74" target="_parent">LCD_CURSORMOVE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcursoroff"> + <div class="SREntry"> + <a id="Item16" onkeydown="return searchResults.Nav(event,16)" onkeypress="return searchResults.Nav(event,16)" onkeyup="return searchResults.Nav(event,16)" class="SRSymbol" href="../_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa" target="_parent">LCD_CURSOROFF</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcursoron"> + <div class="SREntry"> + <a id="Item17" onkeydown="return searchResults.Nav(event,17)" onkeypress="return searchResults.Nav(event,17)" onkeyup="return searchResults.Nav(event,17)" class="SRSymbol" href="../_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574" target="_parent">LCD_CURSORON</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcursorshift"> + <div class="SREntry"> + <a id="Item18" onkeydown="return searchResults.Nav(event,18)" onkeypress="return searchResults.Nav(event,18)" onkeyup="return searchResults.Nav(event,18)" class="SRSymbol" href="../_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594" target="_parent">LCD_CURSORSHIFT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fdisplaycontrol"> + <div class="SREntry"> + <a id="Item19" onkeydown="return searchResults.Nav(event,19)" onkeypress="return searchResults.Nav(event,19)" onkeyup="return searchResults.Nav(event,19)" class="SRSymbol" href="../_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f" target="_parent">LCD_DISPLAYCONTROL</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fdisplaymove"> + <div class="SREntry"> + <a id="Item20" onkeydown="return searchResults.Nav(event,20)" onkeypress="return searchResults.Nav(event,20)" onkeyup="return searchResults.Nav(event,20)" class="SRSymbol" href="../_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40" target="_parent">LCD_DISPLAYMOVE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fdisplayoff"> + <div class="SREntry"> + <a id="Item21" onkeydown="return searchResults.Nav(event,21)" onkeypress="return searchResults.Nav(event,21)" onkeyup="return searchResults.Nav(event,21)" class="SRSymbol" href="../_l_c_d_8h.html#a257ebe775cac7140cf82aa40d8ce545a" target="_parent">LCD_DISPLAYOFF</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fdisplayon"> + <div class="SREntry"> + <a id="Item22" onkeydown="return searchResults.Nav(event,22)" onkeypress="return searchResults.Nav(event,22)" onkeyup="return searchResults.Nav(event,22)" class="SRSymbol" href="../_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c" target="_parent">LCD_DISPLAYON</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentryleft"> + <div class="SREntry"> + <a id="Item23" onkeydown="return searchResults.Nav(event,23)" onkeypress="return searchResults.Nav(event,23)" onkeyup="return searchResults.Nav(event,23)" class="SRSymbol" href="../_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0" target="_parent">LCD_ENTRYLEFT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentrymodeset"> + <div class="SREntry"> + <a id="Item24" onkeydown="return searchResults.Nav(event,24)" onkeypress="return searchResults.Nav(event,24)" onkeyup="return searchResults.Nav(event,24)" class="SRSymbol" href="../_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703" target="_parent">LCD_ENTRYMODESET</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentryright"> + <div class="SREntry"> + <a id="Item25" onkeydown="return searchResults.Nav(event,25)" onkeypress="return searchResults.Nav(event,25)" onkeyup="return searchResults.Nav(event,25)" class="SRSymbol" href="../_l_c_d_8h.html#a43c26ba2e66880fac95ef640b56873ad" target="_parent">LCD_ENTRYRIGHT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentryshiftdecrement"> + <div class="SREntry"> + <a id="Item26" onkeydown="return searchResults.Nav(event,26)" onkeypress="return searchResults.Nav(event,26)" onkeyup="return searchResults.Nav(event,26)" class="SRSymbol" href="../_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42" target="_parent">LCD_ENTRYSHIFTDECREMENT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentryshiftincrement"> + <div class="SREntry"> + <a id="Item27" onkeydown="return searchResults.Nav(event,27)" onkeypress="return searchResults.Nav(event,27)" onkeyup="return searchResults.Nav(event,27)" class="SRSymbol" href="../_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c" target="_parent">LCD_ENTRYSHIFTINCREMENT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5ffunctionset"> + <div class="SREntry"> + <a id="Item28" onkeydown="return searchResults.Nav(event,28)" onkeypress="return searchResults.Nav(event,28)" onkeyup="return searchResults.Nav(event,28)" class="SRSymbol" href="../_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111" target="_parent">LCD_FUNCTIONSET</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fmoveleft"> + <div class="SREntry"> + <a id="Item29" onkeydown="return searchResults.Nav(event,29)" onkeypress="return searchResults.Nav(event,29)" onkeyup="return searchResults.Nav(event,29)" class="SRSymbol" href="../_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009" target="_parent">LCD_MOVELEFT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fmoveright"> + <div class="SREntry"> + <a id="Item30" onkeydown="return searchResults.Nav(event,30)" onkeypress="return searchResults.Nav(event,30)" onkeyup="return searchResults.Nav(event,30)" class="SRSymbol" href="../_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f" target="_parent">LCD_MOVERIGHT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fnobacklight"> + <div class="SREntry"> + <a id="Item31" onkeydown="return searchResults.Nav(event,31)" onkeypress="return searchResults.Nav(event,31)" onkeyup="return searchResults.Nav(event,31)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_lcd_5fnobacklight')">LCD_NOBACKLIGHT</a> + <div class="SRChildren"> + <a id="Item31_c0" onkeydown="return searchResults.NavChild(event,31,0)" onkeypress="return searchResults.NavChild(event,31,0)" onkeyup="return searchResults.NavChild(event,31,0)" class="SRScope" href="../_liquid_crystal_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581" target="_parent">LCD_NOBACKLIGHT(): LiquidCrystal.cpp</a> + <a id="Item31_c1" onkeydown="return searchResults.NavChild(event,31,1)" onkeypress="return searchResults.NavChild(event,31,1)" onkeyup="return searchResults.NavChild(event,31,1)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581" target="_parent">LCD_NOBACKLIGHT(): LiquidCrystal_I2C.cpp</a> + <a id="Item31_c2" onkeydown="return searchResults.NavChild(event,31,2)" onkeypress="return searchResults.NavChild(event,31,2)" onkeyup="return searchResults.NavChild(event,31,2)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581" target="_parent">LCD_NOBACKLIGHT(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_lcd_5freturnhome"> + <div class="SREntry"> + <a id="Item32" onkeydown="return searchResults.Nav(event,32)" onkeypress="return searchResults.Nav(event,32)" onkeyup="return searchResults.Nav(event,32)" class="SRSymbol" href="../_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419" target="_parent">LCD_RETURNHOME</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fsetcgramaddr"> + <div class="SREntry"> + <a id="Item33" onkeydown="return searchResults.Nav(event,33)" onkeypress="return searchResults.Nav(event,33)" onkeyup="return searchResults.Nav(event,33)" class="SRSymbol" href="../_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f" target="_parent">LCD_SETCGRAMADDR</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fsetddramaddr"> + <div class="SREntry"> + <a id="Item34" onkeydown="return searchResults.Nav(event,34)" onkeypress="return searchResults.Nav(event,34)" onkeyup="return searchResults.Nav(event,34)" class="SRSymbol" href="../_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf" target="_parent">LCD_SETDDRAMADDR</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lefttoright"> + <div class="SREntry"> + <a id="Item35" onkeydown="return searchResults.Nav(event,35)" onkeypress="return searchResults.Nav(event,35)" onkeyup="return searchResults.Nav(event,35)" class="SRSymbol" href="../class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7" target="_parent">leftToRight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal"> + <div class="SREntry"> + <a id="Item36" onkeydown="return searchResults.Nav(event,36)" onkeypress="return searchResults.Nav(event,36)" onkeyup="return searchResults.Nav(event,36)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal')">LiquidCrystal</a> + <div class="SRChildren"> + <a id="Item36_c0" onkeydown="return searchResults.NavChild(event,36,0)" onkeypress="return searchResults.NavChild(event,36,0)" onkeyup="return searchResults.NavChild(event,36,0)" class="SRScope" href="../class_liquid_crystal.html" target="_parent">LiquidCrystal</a> + <a id="Item36_c1" onkeydown="return searchResults.NavChild(event,36,1)" onkeypress="return searchResults.NavChild(event,36,1)" onkeyup="return searchResults.NavChild(event,36,1)" class="SRScope" href="../class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</a> + <a id="Item36_c2" onkeydown="return searchResults.NavChild(event,36,2)" onkeypress="return searchResults.NavChild(event,36,2)" onkeyup="return searchResults.NavChild(event,36,2)" class="SRScope" href="../class_liquid_crystal.html#a30e3d865c4b4a003a36cb45903f93644" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</a> + <a id="Item36_c3" onkeydown="return searchResults.NavChild(event,36,3)" onkeypress="return searchResults.NavChild(event,36,3)" onkeyup="return searchResults.NavChild(event,36,3)" class="SRScope" href="../class_liquid_crystal.html#aff2330186495fde93370d46c0ca2cbf0" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlightPin, t_backlighPol pol)</a> + <a id="Item36_c4" onkeydown="return searchResults.NavChild(event,36,4)" onkeypress="return searchResults.NavChild(event,36,4)" onkeyup="return searchResults.NavChild(event,36,4)" class="SRScope" href="../class_liquid_crystal.html#ae0c3c8f7661634b1400f00a1c9c02c26" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlightPin, t_backlighPol pol)</a> + <a id="Item36_c5" onkeydown="return searchResults.NavChild(event,36,5)" onkeypress="return searchResults.NavChild(event,36,5)" onkeyup="return searchResults.NavChild(event,36,5)" class="SRScope" href="../class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</a> + <a id="Item36_c6" onkeydown="return searchResults.NavChild(event,36,6)" onkeypress="return searchResults.NavChild(event,36,6)" onkeyup="return searchResults.NavChild(event,36,6)" class="SRScope" href="../class_liquid_crystal.html#a23124e6dd5ac4a9b6147629b96e91953" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</a> + <a id="Item36_c7" onkeydown="return searchResults.NavChild(event,36,7)" onkeypress="return searchResults.NavChild(event,36,7)" onkeyup="return searchResults.NavChild(event,36,7)" class="SRScope" href="../class_liquid_crystal.html#a8b90122c67a6d14b967c8a11ba490670" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t backlightPin, t_backlighPol pol)</a> + <a id="Item36_c8" onkeydown="return searchResults.NavChild(event,36,8)" onkeypress="return searchResults.NavChild(event,36,8)" onkeyup="return searchResults.NavChild(event,36,8)" class="SRScope" href="../class_liquid_crystal.html#a52a4de3d866e347208a32dfc9d797729" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t backlightPin, t_backlighPol pol)</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_2ecpp"> + <div class="SREntry"> + <a id="Item37" onkeydown="return searchResults.Nav(event,37)" onkeypress="return searchResults.Nav(event,37)" onkeyup="return searchResults.Nav(event,37)" class="SRSymbol" href="../_liquid_crystal_8cpp.html" target="_parent">LiquidCrystal.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_2eh"> + <div class="SREntry"> + <a id="Item38" onkeydown="return searchResults.Nav(event,38)" onkeypress="return searchResults.Nav(event,38)" onkeyup="return searchResults.Nav(event,38)" class="SRSymbol" href="../_liquid_crystal_8h.html" target="_parent">LiquidCrystal.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c"> + <div class="SREntry"> + <a id="Item39" onkeydown="return searchResults.Nav(event,39)" onkeypress="return searchResults.Nav(event,39)" onkeyup="return searchResults.Nav(event,39)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal_5fi2c')">LiquidCrystal_I2C</a> + <div class="SRChildren"> + <a id="Item39_c0" onkeydown="return searchResults.NavChild(event,39,0)" onkeypress="return searchResults.NavChild(event,39,0)" onkeyup="return searchResults.NavChild(event,39,0)" class="SRScope" href="../class_liquid_crystal___i2_c.html" target="_parent">LiquidCrystal_I2C</a> + <a id="Item39_c1" onkeydown="return searchResults.NavChild(event,39,1)" onkeypress="return searchResults.NavChild(event,39,1)" onkeyup="return searchResults.NavChild(event,39,1)" class="SRScope" href="../class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr)</a> + <a id="Item39_c2" onkeydown="return searchResults.NavChild(event,39,2)" onkeypress="return searchResults.NavChild(event,39,2)" onkeyup="return searchResults.NavChild(event,39,2)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a9fc9bc519ebbf7503dadc11622e02ed6" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol)</a> + <a id="Item39_c3" onkeydown="return searchResults.NavChild(event,39,3)" onkeypress="return searchResults.NavChild(event,39,3)" onkeyup="return searchResults.NavChild(event,39,3)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)</a> + <a id="Item39_c4" onkeydown="return searchResults.NavChild(event,39,4)" onkeypress="return searchResults.NavChild(event,39,4)" onkeyup="return searchResults.NavChild(event,39,4)" class="SRScope" href="../class_liquid_crystal___i2_c.html#add1f2da7de4ec9b9cd5c9b5fab712464" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t backlighPin, t_backlighPol pol)</a> + <a id="Item39_c5" onkeydown="return searchResults.NavChild(event,39,5)" onkeypress="return searchResults.NavChild(event,39,5)" onkeyup="return searchResults.NavChild(event,39,5)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</a> + <a id="Item39_c6" onkeydown="return searchResults.NavChild(event,39,6)" onkeypress="return searchResults.NavChild(event,39,6)" onkeyup="return searchResults.NavChild(event,39,6)" class="SRScope" href="../class_liquid_crystal___i2_c.html#ab15622287533de7a47f3e2012ebf18be" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol)</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_2ecpp"> + <div class="SREntry"> + <a id="Item40" onkeydown="return searchResults.Nav(event,40)" onkeypress="return searchResults.Nav(event,40)" onkeyup="return searchResults.Nav(event,40)" class="SRSymbol" href="../_liquid_crystal___i2_c_8cpp.html" target="_parent">LiquidCrystal_I2C.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_2eh"> + <div class="SREntry"> + <a id="Item41" onkeydown="return searchResults.Nav(event,41)" onkeypress="return searchResults.Nav(event,41)" onkeyup="return searchResults.Nav(event,41)" class="SRSymbol" href="../_liquid_crystal___i2_c_8h.html" target="_parent">LiquidCrystal_I2C.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_5fbyvac"> + <div class="SREntry"> + <a id="Item42" onkeydown="return searchResults.Nav(event,42)" onkeypress="return searchResults.Nav(event,42)" onkeyup="return searchResults.Nav(event,42)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal_5fi2c_5fbyvac')">LiquidCrystal_I2C_ByVac</a> + <div class="SRChildren"> + <a id="Item42_c0" onkeydown="return searchResults.NavChild(event,42,0)" onkeypress="return searchResults.NavChild(event,42,0)" onkeyup="return searchResults.NavChild(event,42,0)" class="SRScope" href="../class_liquid_crystal___i2_c___by_vac.html" target="_parent">LiquidCrystal_I2C_ByVac</a> + <a id="Item42_c1" onkeydown="return searchResults.NavChild(event,42,1)" onkeypress="return searchResults.NavChild(event,42,1)" onkeyup="return searchResults.NavChild(event,42,1)" class="SRScope" href="../class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31" target="_parent">LiquidCrystal_I2C_ByVac::LiquidCrystal_I2C_ByVac()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_5fbyvac_2ecpp"> + <div class="SREntry"> + <a id="Item43" onkeydown="return searchResults.Nav(event,43)" onkeypress="return searchResults.Nav(event,43)" onkeyup="return searchResults.Nav(event,43)" class="SRSymbol" href="../_liquid_crystal___i2_c___by_vac_8cpp.html" target="_parent">LiquidCrystal_I2C_ByVac.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_5fbyvac_2eh"> + <div class="SREntry"> + <a id="Item44" onkeydown="return searchResults.Nav(event,44)" onkeypress="return searchResults.Nav(event,44)" onkeyup="return searchResults.Nav(event,44)" class="SRSymbol" href="../_liquid_crystal___i2_c___by_vac_8h.html" target="_parent">LiquidCrystal_I2C_ByVac.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr"> + <div class="SREntry"> + <a id="Item45" onkeydown="return searchResults.Nav(event,45)" onkeypress="return searchResults.Nav(event,45)" onkeyup="return searchResults.Nav(event,45)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal_5fsr')">LiquidCrystal_SR</a> + <div class="SRChildren"> + <a id="Item45_c0" onkeydown="return searchResults.NavChild(event,45,0)" onkeypress="return searchResults.NavChild(event,45,0)" onkeyup="return searchResults.NavChild(event,45,0)" class="SRScope" href="../class_liquid_crystal___s_r.html" target="_parent">LiquidCrystal_SR</a> + <a id="Item45_c1" onkeydown="return searchResults.NavChild(event,45,1)" onkeypress="return searchResults.NavChild(event,45,1)" onkeyup="return searchResults.NavChild(event,45,1)" class="SRScope" href="../class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc" target="_parent">LiquidCrystal_SR::LiquidCrystal_SR()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr_2ecpp"> + <div class="SREntry"> + <a id="Item46" onkeydown="return searchResults.Nav(event,46)" onkeypress="return searchResults.Nav(event,46)" onkeyup="return searchResults.Nav(event,46)" class="SRSymbol" href="../_liquid_crystal___s_r_8cpp.html" target="_parent">LiquidCrystal_SR.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr_2eh"> + <div class="SREntry"> + <a id="Item47" onkeydown="return searchResults.Nav(event,47)" onkeypress="return searchResults.Nav(event,47)" onkeyup="return searchResults.Nav(event,47)" class="SRSymbol" href="../_liquid_crystal___s_r_8h.html" target="_parent">LiquidCrystal_SR.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr1w"> + <div class="SREntry"> + <a id="Item48" onkeydown="return searchResults.Nav(event,48)" onkeypress="return searchResults.Nav(event,48)" onkeyup="return searchResults.Nav(event,48)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal_5fsr1w')">LiquidCrystal_SR1W</a> + <div class="SRChildren"> + <a id="Item48_c0" onkeydown="return searchResults.NavChild(event,48,0)" onkeypress="return searchResults.NavChild(event,48,0)" onkeyup="return searchResults.NavChild(event,48,0)" class="SRScope" href="../class_liquid_crystal___s_r1_w.html" target="_parent">LiquidCrystal_SR1W</a> + <a id="Item48_c1" onkeydown="return searchResults.NavChild(event,48,1)" onkeypress="return searchResults.NavChild(event,48,1)" onkeyup="return searchResults.NavChild(event,48,1)" class="SRScope" href="../class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9" target="_parent">LiquidCrystal_SR1W::LiquidCrystal_SR1W()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr1w_2ecpp"> + <div class="SREntry"> + <a id="Item49" onkeydown="return searchResults.Nav(event,49)" onkeypress="return searchResults.Nav(event,49)" onkeyup="return searchResults.Nav(event,49)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8cpp.html" target="_parent">LiquidCrystal_SR1W.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr1w_2eh"> + <div class="SREntry"> + <a id="Item50" onkeydown="return searchResults.Nav(event,50)" onkeypress="return searchResults.Nav(event,50)" onkeyup="return searchResults.Nav(event,50)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html" target="_parent">LiquidCrystal_SR1W.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr2w"> + <div class="SREntry"> + <a id="Item51" onkeydown="return searchResults.Nav(event,51)" onkeypress="return searchResults.Nav(event,51)" onkeyup="return searchResults.Nav(event,51)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal_5fsr2w')">LiquidCrystal_SR2W</a> + <div class="SRChildren"> + <a id="Item51_c0" onkeydown="return searchResults.NavChild(event,51,0)" onkeypress="return searchResults.NavChild(event,51,0)" onkeyup="return searchResults.NavChild(event,51,0)" class="SRScope" href="../class_liquid_crystal___s_r2_w.html" target="_parent">LiquidCrystal_SR2W</a> + <a id="Item51_c1" onkeydown="return searchResults.NavChild(event,51,1)" onkeypress="return searchResults.NavChild(event,51,1)" onkeyup="return searchResults.NavChild(event,51,1)" class="SRScope" href="../class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3" target="_parent">LiquidCrystal_SR2W::LiquidCrystal_SR2W()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr2w_2ecpp"> + <div class="SREntry"> + <a id="Item52" onkeydown="return searchResults.Nav(event,52)" onkeypress="return searchResults.Nav(event,52)" onkeyup="return searchResults.Nav(event,52)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8cpp.html" target="_parent">LiquidCrystal_SR2W.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr2w_2eh"> + <div class="SREntry"> + <a id="Item53" onkeydown="return searchResults.Nav(event,53)" onkeypress="return searchResults.Nav(event,53)" onkeyup="return searchResults.Nav(event,53)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html" target="_parent">LiquidCrystal_SR2W.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr3w"> + <div class="SREntry"> + <a id="Item54" onkeydown="return searchResults.Nav(event,54)" onkeypress="return searchResults.Nav(event,54)" onkeyup="return searchResults.Nav(event,54)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal_5fsr3w')">LiquidCrystal_SR3W</a> + <div class="SRChildren"> + <a id="Item54_c0" onkeydown="return searchResults.NavChild(event,54,0)" onkeypress="return searchResults.NavChild(event,54,0)" onkeyup="return searchResults.NavChild(event,54,0)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html" target="_parent">LiquidCrystal_SR3W</a> + <a id="Item54_c1" onkeydown="return searchResults.NavChild(event,54,1)" onkeypress="return searchResults.NavChild(event,54,1)" onkeyup="return searchResults.NavChild(event,54,1)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b" target="_parent">LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe)</a> + <a id="Item54_c2" onkeydown="return searchResults.NavChild(event,54,2)" onkeypress="return searchResults.NavChild(event,54,2)" onkeyup="return searchResults.NavChild(event,54,2)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a7b2f382b76bc9d88adb8d681e824b4de" target="_parent">LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t backlighPin, t_backlighPol pol)</a> + <a id="Item54_c3" onkeydown="return searchResults.NavChild(event,54,3)" onkeypress="return searchResults.NavChild(event,54,3)" onkeyup="return searchResults.NavChild(event,54,3)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0" target="_parent">LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</a> + <a id="Item54_c4" onkeydown="return searchResults.NavChild(event,54,4)" onkeypress="return searchResults.NavChild(event,54,4)" onkeyup="return searchResults.NavChild(event,54,4)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a24f051747dfeda48f7b207c3358c8015" target="_parent">LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol)</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr3w_2ecpp"> + <div class="SREntry"> + <a id="Item55" onkeydown="return searchResults.Nav(event,55)" onkeypress="return searchResults.Nav(event,55)" onkeyup="return searchResults.Nav(event,55)" class="SRSymbol" href="../_liquid_crystal___s_r3_w_8cpp.html" target="_parent">LiquidCrystal_SR3W.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr3w_2eh"> + <div class="SREntry"> + <a id="Item56" onkeydown="return searchResults.Nav(event,56)" onkeypress="return searchResults.Nav(event,56)" onkeyup="return searchResults.Nav(event,56)" class="SRSymbol" href="../_liquid_crystal___s_r3_w_8h.html" target="_parent">LiquidCrystal_SR3W.h</a> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_6d.html b/libraries/LiquidCrystal/utility/docs/html/search/all_6d.html new file mode 100644 index 0000000000000000000000000000000000000000..6a0ea3f4d1c2637828e879052c2bd180221284d8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_6d.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_movecursorleft"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4" target="_parent">moveCursorLeft</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_movecursorright"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c" target="_parent">moveCursorRight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_6e.html b/libraries/LiquidCrystal/utility/docs/html/search/all_6e.html new file mode 100644 index 0000000000000000000000000000000000000000..f3e1f8b4add54b39253ded74785009f92c614d1a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_6e.html @@ -0,0 +1,56 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_negative"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865" target="_parent">NEGATIVE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_noautoscroll"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#a96035dde40efbf73390e00b5beb00231" target="_parent">noAutoscroll</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_nobacklight"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488" target="_parent">noBacklight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_noblink"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5" target="_parent">noBlink</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_nocursor"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9" target="_parent">noCursor</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_nodisplay"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../class_l_c_d.html#af3974da6d988ba2d21c25135ada12108" target="_parent">noDisplay</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_6f.html b/libraries/LiquidCrystal/utility/docs/html/search/all_6f.html new file mode 100644 index 0000000000000000000000000000000000000000..e5e659c14e8556d12b47a33eff0a0547bea1cb82 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_6f.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_off"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2" target="_parent">off</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_on"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a" target="_parent">on</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_7.html b/libraries/LiquidCrystal/utility/docs/html/search/all_7.html new file mode 100644 index 0000000000000000000000000000000000000000..38c6c000626fca0c17efb0e45f937ebdb2c40dc1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_7.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_7.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_7.js b/libraries/LiquidCrystal/utility/docs/html/search/all_7.js new file mode 100644 index 0000000000000000000000000000000000000000..0ac9232a291a318fa250a30d9a28379772584dce --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['movecursorleft',['moveCursorLeft',['../class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4',1,'LCD']]], + ['movecursorright',['moveCursorRight',['../class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_70.html b/libraries/LiquidCrystal/utility/docs/html/search/all_70.html new file mode 100644 index 0000000000000000000000000000000000000000..29b653f8363b736d42a4372e94da924922b68f79 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_70.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_pinmode"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887" target="_parent">pinMode</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_portmode"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34" target="_parent">portMode</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_positive"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5" target="_parent">POSITIVE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_72.html b/libraries/LiquidCrystal/utility/docs/html/search/all_72.html new file mode 100644 index 0000000000000000000000000000000000000000..d2d6cc68ca04db74920d2e1b4d358ee37793dd52 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_72.html @@ -0,0 +1,50 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_read"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7" target="_parent">read</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_righttoleft"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428" target="_parent">rightToLeft</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_rs"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_rs')">RS</a> + <div class="SRChildren"> + <a id="Item2_c0" onkeydown="return searchResults.NavChild(event,2,0)" onkeypress="return searchResults.NavChild(event,2,0)" onkeyup="return searchResults.NavChild(event,2,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#af8903d8eea3868940c60af887473b152" target="_parent">RS(): LiquidCrystal_I2C.cpp</a> + <a id="Item2_c1" onkeydown="return searchResults.NavChild(event,2,1)" onkeypress="return searchResults.NavChild(event,2,1)" onkeyup="return searchResults.NavChild(event,2,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#af8903d8eea3868940c60af887473b152" target="_parent">RS(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_rw"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_rw')">RW</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#afc4ded33ac0ca43defcce639e965748a" target="_parent">RW(): LiquidCrystal_I2C.cpp</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#afc4ded33ac0ca43defcce639e965748a" target="_parent">RW(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_73.html b/libraries/LiquidCrystal/utility/docs/html/search/all_73.html new file mode 100644 index 0000000000000000000000000000000000000000..2c155a99b5cc921e7118098f6b31c4af49dc6400 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_73.html @@ -0,0 +1,205 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_scrolldisplayleft"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7" target="_parent">scrollDisplayLeft</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_scrolldisplayright"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#abfc44b294772f09020bfa32af8a79571" target="_parent">scrollDisplayRight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_send"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_send')">send</a> + <div class="SRChildren"> + <a id="Item2_c0" onkeydown="return searchResults.NavChild(event,2,0)" onkeypress="return searchResults.NavChild(event,2,0)" onkeyup="return searchResults.NavChild(event,2,0)" class="SRScope" href="../class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089" target="_parent">LiquidCrystal::send()</a> + <a id="Item2_c1" onkeydown="return searchResults.NavChild(event,2,1)" onkeypress="return searchResults.NavChild(event,2,1)" onkeyup="return searchResults.NavChild(event,2,1)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4" target="_parent">LiquidCrystal_I2C::send()</a> + <a id="Item2_c2" onkeydown="return searchResults.NavChild(event,2,2)" onkeypress="return searchResults.NavChild(event,2,2)" onkeyup="return searchResults.NavChild(event,2,2)" class="SRScope" href="../class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1" target="_parent">LiquidCrystal_I2C_ByVac::send()</a> + <a id="Item2_c3" onkeydown="return searchResults.NavChild(event,2,3)" onkeypress="return searchResults.NavChild(event,2,3)" onkeyup="return searchResults.NavChild(event,2,3)" class="SRScope" href="../class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47" target="_parent">LiquidCrystal_SR::send()</a> + <a id="Item2_c4" onkeydown="return searchResults.NavChild(event,2,4)" onkeypress="return searchResults.NavChild(event,2,4)" onkeyup="return searchResults.NavChild(event,2,4)" class="SRScope" href="../class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1" target="_parent">LiquidCrystal_SR1W::send()</a> + <a id="Item2_c5" onkeydown="return searchResults.NavChild(event,2,5)" onkeypress="return searchResults.NavChild(event,2,5)" onkeyup="return searchResults.NavChild(event,2,5)" class="SRScope" href="../class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d" target="_parent">LiquidCrystal_SR2W::send()</a> + <a id="Item2_c6" onkeydown="return searchResults.NavChild(event,2,6)" onkeypress="return searchResults.NavChild(event,2,6)" onkeyup="return searchResults.NavChild(event,2,6)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56" target="_parent">LiquidCrystal_SR3W::send()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_setbacklight"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_setbacklight')">setBacklight</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828" target="_parent">LCD::setBacklight()</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd" target="_parent">LiquidCrystal::setBacklight()</a> + <a id="Item3_c2" onkeydown="return searchResults.NavChild(event,3,2)" onkeypress="return searchResults.NavChild(event,3,2)" onkeyup="return searchResults.NavChild(event,3,2)" class="SRScope" href="../class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8" target="_parent">LiquidCrystal_I2C::setBacklight()</a> + <a id="Item3_c3" onkeydown="return searchResults.NavChild(event,3,3)" onkeypress="return searchResults.NavChild(event,3,3)" onkeyup="return searchResults.NavChild(event,3,3)" class="SRScope" href="../class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7" target="_parent">LiquidCrystal_I2C_ByVac::setBacklight()</a> + <a id="Item3_c4" onkeydown="return searchResults.NavChild(event,3,4)" onkeypress="return searchResults.NavChild(event,3,4)" onkeyup="return searchResults.NavChild(event,3,4)" class="SRScope" href="../class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535" target="_parent">LiquidCrystal_SR::setBacklight()</a> + <a id="Item3_c5" onkeydown="return searchResults.NavChild(event,3,5)" onkeypress="return searchResults.NavChild(event,3,5)" onkeyup="return searchResults.NavChild(event,3,5)" class="SRScope" href="../class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5" target="_parent">LiquidCrystal_SR1W::setBacklight()</a> + <a id="Item3_c6" onkeydown="return searchResults.NavChild(event,3,6)" onkeypress="return searchResults.NavChild(event,3,6)" onkeyup="return searchResults.NavChild(event,3,6)" class="SRScope" href="../class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6" target="_parent">LiquidCrystal_SR2W::setBacklight()</a> + <a id="Item3_c7" onkeydown="return searchResults.NavChild(event,3,7)" onkeypress="return searchResults.NavChild(event,3,7)" onkeyup="return searchResults.NavChild(event,3,7)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295" target="_parent">LiquidCrystal_SR3W::setBacklight()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_setbacklightpin"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_setbacklightpin')">setBacklightPin</a> + <div class="SRChildren"> + <a id="Item4_c0" onkeydown="return searchResults.NavChild(event,4,0)" onkeypress="return searchResults.NavChild(event,4,0)" onkeyup="return searchResults.NavChild(event,4,0)" class="SRScope" href="../class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc" target="_parent">LCD::setBacklightPin()</a> + <a id="Item4_c1" onkeydown="return searchResults.NavChild(event,4,1)" onkeypress="return searchResults.NavChild(event,4,1)" onkeyup="return searchResults.NavChild(event,4,1)" class="SRScope" href="../class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9" target="_parent">LiquidCrystal::setBacklightPin()</a> + <a id="Item4_c2" onkeydown="return searchResults.NavChild(event,4,2)" onkeypress="return searchResults.NavChild(event,4,2)" onkeyup="return searchResults.NavChild(event,4,2)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b" target="_parent">LiquidCrystal_I2C::setBacklightPin()</a> + <a id="Item4_c3" onkeydown="return searchResults.NavChild(event,4,3)" onkeypress="return searchResults.NavChild(event,4,3)" onkeyup="return searchResults.NavChild(event,4,3)" class="SRScope" href="../class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d" target="_parent">LiquidCrystal_SR::setBacklightPin()</a> + <a id="Item4_c4" onkeydown="return searchResults.NavChild(event,4,4)" onkeypress="return searchResults.NavChild(event,4,4)" onkeyup="return searchResults.NavChild(event,4,4)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477" target="_parent">LiquidCrystal_SR3W::setBacklightPin()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_setcontrast"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4" target="_parent">setContrast</a> + <span class="SRScope">LiquidCrystal_I2C_ByVac</span> + </div> +</div> +<div class="SRResult" id="SR_setcursor"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d" target="_parent">setCursor</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_skip"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../_fast_i_o_8h.html#a688a4adbb87520a2b68681bd6bfb199e" target="_parent">SKIP</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fatomic_5fwrite_5fhigh"> + <div class="SREntry"> + <a id="Item8" onkeydown="return searchResults.Nav(event,8)" onkeypress="return searchResults.Nav(event,8)" onkeyup="return searchResults.Nav(event,8)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a7582c2cf6ceaeddf740f675c8f731ecf" target="_parent">SR1W_ATOMIC_WRITE_HIGH</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fatomic_5fwrite_5flow"> + <div class="SREntry"> + <a id="Item9" onkeydown="return searchResults.Nav(event,9)" onkeypress="return searchResults.Nav(event,9)" onkeyup="return searchResults.Nav(event,9)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a895edbf1947d432e4616bc4592de8cfa" target="_parent">SR1W_ATOMIC_WRITE_LOW</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fbl_5fmask"> + <div class="SREntry"> + <a id="Item10" onkeydown="return searchResults.Nav(event,10)" onkeypress="return searchResults.Nav(event,10)" onkeyup="return searchResults.Nav(event,10)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a2bfc90f6a1e21e271196273a8db741af" target="_parent">SR1W_BL_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fd4_5fmask"> + <div class="SREntry"> + <a id="Item11" onkeydown="return searchResults.Nav(event,11)" onkeypress="return searchResults.Nav(event,11)" onkeyup="return searchResults.Nav(event,11)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a2ee8ae46c168f471666c4aaddbca1ec0" target="_parent">SR1W_D4_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fd5_5fmask"> + <div class="SREntry"> + <a id="Item12" onkeydown="return searchResults.Nav(event,12)" onkeypress="return searchResults.Nav(event,12)" onkeyup="return searchResults.Nav(event,12)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a159fe0dd329cef231ae7d8ad674adad3" target="_parent">SR1W_D5_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fd6_5fmask"> + <div class="SREntry"> + <a id="Item13" onkeydown="return searchResults.Nav(event,13)" onkeypress="return searchResults.Nav(event,13)" onkeyup="return searchResults.Nav(event,13)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a5cea156a4ee75a239b094b1c24116140" target="_parent">SR1W_D6_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fd7_5fmask"> + <div class="SREntry"> + <a id="Item14" onkeydown="return searchResults.Nav(event,14)" onkeypress="return searchResults.Nav(event,14)" onkeyup="return searchResults.Nav(event,14)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a7accf5938d87cf2edbda80b26e0e6f69" target="_parent">SR1W_D7_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fdelay"> + <div class="SREntry"> + <a id="Item15" onkeydown="return searchResults.Nav(event,15)" onkeypress="return searchResults.Nav(event,15)" onkeyup="return searchResults.Nav(event,15)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7" target="_parent">SR1W_DELAY</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fdelay_5fus"> + <div class="SREntry"> + <a id="Item16" onkeydown="return searchResults.Nav(event,16)" onkeypress="return searchResults.Nav(event,16)" onkeyup="return searchResults.Nav(event,16)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#af142acb4543f9067f60a28d58a49f033" target="_parent">SR1W_DELAY_US</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fen_5fmask"> + <div class="SREntry"> + <a id="Item17" onkeydown="return searchResults.Nav(event,17)" onkeypress="return searchResults.Nav(event,17)" onkeyup="return searchResults.Nav(event,17)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a6875204445378ad8d8a8ded846cbcbaa" target="_parent">SR1W_EN_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5frs_5fmask"> + <div class="SREntry"> + <a id="Item18" onkeydown="return searchResults.Nav(event,18)" onkeypress="return searchResults.Nav(event,18)" onkeyup="return searchResults.Nav(event,18)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a874628609b122ed01ccd5e39411f86de" target="_parent">SR1W_RS_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5funused_5fmask"> + <div class="SREntry"> + <a id="Item19" onkeydown="return searchResults.Nav(event,19)" onkeypress="return searchResults.Nav(event,19)" onkeyup="return searchResults.Nav(event,19)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#ae4324c30e18eea1716bd2b0f60027712" target="_parent">SR1W_UNUSED_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr2w_5fbl_5fmask"> + <div class="SREntry"> + <a id="Item20" onkeydown="return searchResults.Nav(event,20)" onkeypress="return searchResults.Nav(event,20)" onkeyup="return searchResults.Nav(event,20)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html#a53e3add69865ae57ca872cb41fcae9e3" target="_parent">SR2W_BL_MASK</a> + <span class="SRScope">LiquidCrystal_SR2W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr2w_5fdata_5fmask"> + <div class="SREntry"> + <a id="Item21" onkeydown="return searchResults.Nav(event,21)" onkeypress="return searchResults.Nav(event,21)" onkeyup="return searchResults.Nav(event,21)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html#a7cf86f2a173473d01e02b2ac786a8690" target="_parent">SR2W_DATA_MASK</a> + <span class="SRScope">LiquidCrystal_SR2W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr2w_5fen_5fmask"> + <div class="SREntry"> + <a id="Item22" onkeydown="return searchResults.Nav(event,22)" onkeypress="return searchResults.Nav(event,22)" onkeyup="return searchResults.Nav(event,22)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html#a8d17b6abb5bcde6883dbdc86d34be9d8" target="_parent">SR2W_EN_MASK</a> + <span class="SRScope">LiquidCrystal_SR2W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr2w_5frs_5fmask"> + <div class="SREntry"> + <a id="Item23" onkeydown="return searchResults.Nav(event,23)" onkeypress="return searchResults.Nav(event,23)" onkeyup="return searchResults.Nav(event,23)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html#acce98b026d9fdcb2e126705c14af7500" target="_parent">SR2W_RS_MASK</a> + <span class="SRScope">LiquidCrystal_SR2W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr_5fen_5fbit"> + <div class="SREntry"> + <a id="Item24" onkeydown="return searchResults.Nav(event,24)" onkeypress="return searchResults.Nav(event,24)" onkeyup="return searchResults.Nav(event,24)" class="SRSymbol" href="../_liquid_crystal___s_r_8h.html#a0075b041d82abb47f279dce482e7b087" target="_parent">SR_EN_BIT</a> + <span class="SRScope">LiquidCrystal_SR.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr_5frs_5fbit"> + <div class="SREntry"> + <a id="Item25" onkeydown="return searchResults.Nav(event,25)" onkeypress="return searchResults.Nav(event,25)" onkeyup="return searchResults.Nav(event,25)" class="SRSymbol" href="../_liquid_crystal___s_r_8h.html#afdaa2bbb2cc185700864ac8d7a570ced" target="_parent">SR_RS_BIT</a> + <span class="SRScope">LiquidCrystal_SR.h</span> + </div> +</div> +<div class="SRResult" id="SR_sw_5fclear"> + <div class="SREntry"> + <a id="Item26" onkeydown="return searchResults.Nav(event,26)" onkeypress="return searchResults.Nav(event,26)" onkeyup="return searchResults.Nav(event,26)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a6181fb356c56f0ac9a79810e1ba99ebc" target="_parent">SW_CLEAR</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_74.html b/libraries/LiquidCrystal/utility/docs/html/search/all_74.html new file mode 100644 index 0000000000000000000000000000000000000000..99245c70c894b994c8b72fba66867d0ca01ed6a1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_74.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_t_5fbacklighpol"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc" target="_parent">t_backlighPol</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_t_5fsr1w_5fcircuittype"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99" target="_parent">t_sr1w_circuitType</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_two_5fwire"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_liquid_crystal___s_r_8h.html#a40fb1f76bc5f8ca9e6534b47bd6da27c" target="_parent">TWO_WIRE</a> + <span class="SRScope">LiquidCrystal_SR.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_77.html b/libraries/LiquidCrystal/utility/docs/html/search/all_77.html new file mode 100644 index 0000000000000000000000000000000000000000..d81a974648f5658ca2f6d5a57ef3a9e335d02c1a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_77.html @@ -0,0 +1,35 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_waitusec"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc" target="_parent">waitUsec</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_write"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_write')">write</a> + <div class="SRChildren"> + <a id="Item1_c0" onkeydown="return searchResults.NavChild(event,1,0)" onkeypress="return searchResults.NavChild(event,1,0)" onkeyup="return searchResults.NavChild(event,1,0)" class="SRScope" href="../class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd" target="_parent">I2CIO::write()</a> + <a id="Item1_c1" onkeydown="return searchResults.NavChild(event,1,1)" onkeypress="return searchResults.NavChild(event,1,1)" onkeyup="return searchResults.NavChild(event,1,1)" class="SRScope" href="../class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3" target="_parent">LCD::write()</a> + </div> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_8.html b/libraries/LiquidCrystal/utility/docs/html/search/all_8.html new file mode 100644 index 0000000000000000000000000000000000000000..2a22cd52c17e3d94f8d0517ab2613aa0e7e60866 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_8.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_8.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_8.js b/libraries/LiquidCrystal/utility/docs/html/search/all_8.js new file mode 100644 index 0000000000000000000000000000000000000000..646b05cf42f7724e92cdd833d6988d40d9f55398 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_8.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['noautoscroll',['noAutoscroll',['../class_l_c_d.html#a96035dde40efbf73390e00b5beb00231',1,'LCD']]], + ['nobacklight',['noBacklight',['../class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488',1,'LCD']]], + ['noblink',['noBlink',['../class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5',1,'LCD']]], + ['nocursor',['noCursor',['../class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9',1,'LCD']]], + ['nodisplay',['noDisplay',['../class_l_c_d.html#af3974da6d988ba2d21c25135ada12108',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_9.html b/libraries/LiquidCrystal/utility/docs/html/search/all_9.html new file mode 100644 index 0000000000000000000000000000000000000000..bd9b05c38e927324f54426561f7baa8b6904be10 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_9.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_9.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_9.js b/libraries/LiquidCrystal/utility/docs/html/search/all_9.js new file mode 100644 index 0000000000000000000000000000000000000000..c9977213f712f8216979172849de078f61144495 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['off',['off',['../class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2',1,'LCD']]], + ['on',['on',['../class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_a.html b/libraries/LiquidCrystal/utility/docs/html/search/all_a.html new file mode 100644 index 0000000000000000000000000000000000000000..4a25af1cad0482dc9220fcb7ed601b224dce5cc3 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_a.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_a.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_a.js b/libraries/LiquidCrystal/utility/docs/html/search/all_a.js new file mode 100644 index 0000000000000000000000000000000000000000..5ecfc119e5100c9832767565f82af14412318af6 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pinmode',['pinMode',['../class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887',1,'I2CIO::pinMode()'],['../class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3',1,'SI2CIO::pinMode()']]], + ['portmode',['portMode',['../class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34',1,'I2CIO::portMode()'],['../class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b',1,'SI2CIO::portMode()']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_b.html b/libraries/LiquidCrystal/utility/docs/html/search/all_b.html new file mode 100644 index 0000000000000000000000000000000000000000..a92de48513fc7cd88ae4d1c7930d34d009909c45 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_b.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_b.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_b.js b/libraries/LiquidCrystal/utility/docs/html/search/all_b.js new file mode 100644 index 0000000000000000000000000000000000000000..4f687023f448c28057c035869f140a8090627cf5 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['readme',['README',['../md___users_fmalpartida__documents_development_mercurial_repos__s_w__newliquid_crystal__r_e_a_d_m_e.html',1,'']]], + ['read',['read',['../class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7',1,'I2CIO::read()'],['../class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060',1,'SI2CIO::read()']]], + ['righttoleft',['rightToLeft',['../class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_c.html b/libraries/LiquidCrystal/utility/docs/html/search/all_c.html new file mode 100644 index 0000000000000000000000000000000000000000..20cdfbcf329c4f01a6f57b60da074c510a87a3f8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_c.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_c.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_c.js b/libraries/LiquidCrystal/utility/docs/html/search/all_c.js new file mode 100644 index 0000000000000000000000000000000000000000..aa14008ec9134ac5a6d1338def985e86c0667b79 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['scrolldisplayleft',['scrollDisplayLeft',['../class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7',1,'LCD']]], + ['scrolldisplayright',['scrollDisplayRight',['../class_l_c_d.html#abfc44b294772f09020bfa32af8a79571',1,'LCD']]], + ['send',['send',['../class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089',1,'LiquidCrystal::send()'],['../class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4',1,'LiquidCrystal_I2C::send()'],['../class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1',1,'LiquidCrystal_I2C_ByVac::send()'],['../class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9',1,'LiquidCrystal_SI2C::send()'],['../class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47',1,'LiquidCrystal_SR::send()'],['../class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1',1,'LiquidCrystal_SR1W::send()'],['../class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d',1,'LiquidCrystal_SR2W::send()'],['../class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56',1,'LiquidCrystal_SR3W::send()']]], + ['setbacklight',['setBacklight',['../class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828',1,'LCD::setBacklight()'],['../class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd',1,'LiquidCrystal::setBacklight()'],['../class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8',1,'LiquidCrystal_I2C::setBacklight()'],['../class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7',1,'LiquidCrystal_I2C_ByVac::setBacklight()'],['../class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d',1,'LiquidCrystal_SI2C::setBacklight()'],['../class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535',1,'LiquidCrystal_SR::setBacklight()'],['../class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5',1,'LiquidCrystal_SR1W::setBacklight()'],['../class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6',1,'LiquidCrystal_SR2W::setBacklight()'],['../class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295',1,'LiquidCrystal_SR3W::setBacklight()']]], + ['setbacklightpin',['setBacklightPin',['../class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc',1,'LCD::setBacklightPin()'],['../class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9',1,'LiquidCrystal::setBacklightPin()'],['../class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b',1,'LiquidCrystal_I2C::setBacklightPin()'],['../class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa',1,'LiquidCrystal_SI2C::setBacklightPin()'],['../class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d',1,'LiquidCrystal_SR::setBacklightPin()'],['../class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477',1,'LiquidCrystal_SR3W::setBacklightPin()']]], + ['setcontrast',['setContrast',['../class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4',1,'LiquidCrystal_I2C_ByVac']]], + ['setcursor',['setCursor',['../class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d',1,'LCD']]], + ['si2cio',['SI2CIO',['../class_s_i2_c_i_o.html',1,'SI2CIO'],['../class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf',1,'SI2CIO::SI2CIO()']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_d.html b/libraries/LiquidCrystal/utility/docs/html/search/all_d.html new file mode 100644 index 0000000000000000000000000000000000000000..00b28ed86ec68f0094b0a3b5e7f780d686cb0d05 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_d.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_d.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/all_d.js b/libraries/LiquidCrystal/utility/docs/html/search/all_d.js new file mode 100644 index 0000000000000000000000000000000000000000..c6563f1d880294e1133e6a39fd86780edcb0bbdf --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/all_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['write',['write',['../class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd',1,'I2CIO::write()'],['../class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3',1,'LCD::write()'],['../class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9',1,'SI2CIO::write()']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/classes_0.html b/libraries/LiquidCrystal/utility/docs/html/search/classes_0.html new file mode 100644 index 0000000000000000000000000000000000000000..523591f06e8e96e05fe2cf856f5d8653208ecf0a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/classes_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="classes_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/classes_0.js b/libraries/LiquidCrystal/utility/docs/html/search/classes_0.js new file mode 100644 index 0000000000000000000000000000000000000000..832b268f80f8635cd1d7250591e4d5638b9d6e72 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['i2cio',['I2CIO',['../class_i2_c_i_o.html',1,'']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/classes_1.html b/libraries/LiquidCrystal/utility/docs/html/search/classes_1.html new file mode 100644 index 0000000000000000000000000000000000000000..f5a65ad4f0520cf2792ca0347beb62802cb4ed87 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/classes_1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="classes_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/classes_1.js b/libraries/LiquidCrystal/utility/docs/html/search/classes_1.js new file mode 100644 index 0000000000000000000000000000000000000000..4ad1e1b26cb9784cb06810fa339c1a943506aa6a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/classes_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['lcd',['LCD',['../class_l_c_d.html',1,'']]], + ['liquidcrystal',['LiquidCrystal',['../class_liquid_crystal.html',1,'']]], + ['liquidcrystal_5fi2c',['LiquidCrystal_I2C',['../class_liquid_crystal___i2_c.html',1,'']]], + ['liquidcrystal_5fi2c_5fbyvac',['LiquidCrystal_I2C_ByVac',['../class_liquid_crystal___i2_c___by_vac.html',1,'']]], + ['liquidcrystal_5fsi2c',['LiquidCrystal_SI2C',['../class_liquid_crystal___s_i2_c.html',1,'']]], + ['liquidcrystal_5fsr',['LiquidCrystal_SR',['../class_liquid_crystal___s_r.html',1,'']]], + ['liquidcrystal_5fsr1w',['LiquidCrystal_SR1W',['../class_liquid_crystal___s_r1_w.html',1,'']]], + ['liquidcrystal_5fsr2w',['LiquidCrystal_SR2W',['../class_liquid_crystal___s_r2_w.html',1,'']]], + ['liquidcrystal_5fsr3w',['LiquidCrystal_SR3W',['../class_liquid_crystal___s_r3_w.html',1,'']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/classes_2.html b/libraries/LiquidCrystal/utility/docs/html/search/classes_2.html new file mode 100644 index 0000000000000000000000000000000000000000..5b89b277609fdfceb5192ef6d60b7a0646c300ed --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/classes_2.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="classes_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/classes_2.js b/libraries/LiquidCrystal/utility/docs/html/search/classes_2.js new file mode 100644 index 0000000000000000000000000000000000000000..0d2007c777e717bf90a23fe710aee52f19e0ec42 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['si2cio',['SI2CIO',['../class_s_i2_c_i_o.html',1,'']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/classes_69.html b/libraries/LiquidCrystal/utility/docs/html/search/classes_69.html new file mode 100644 index 0000000000000000000000000000000000000000..48921d341046823024c82726cd7bf53de3392c8d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/classes_69.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_i2cio"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_i2_c_i_o.html" target="_parent">I2CIO</a> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/classes_6c.html b/libraries/LiquidCrystal/utility/docs/html/search/classes_6c.html new file mode 100644 index 0000000000000000000000000000000000000000..1372c5917a328d5286718956f155618c42c832d5 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/classes_6c.html @@ -0,0 +1,60 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_lcd"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html" target="_parent">LCD</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_liquid_crystal.html" target="_parent">LiquidCrystal</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_liquid_crystal___i2_c.html" target="_parent">LiquidCrystal_I2C</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_5fbyvac"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../class_liquid_crystal___i2_c___by_vac.html" target="_parent">LiquidCrystal_I2C_ByVac</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../class_liquid_crystal___s_r.html" target="_parent">LiquidCrystal_SR</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr1w"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../class_liquid_crystal___s_r1_w.html" target="_parent">LiquidCrystal_SR1W</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr2w"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../class_liquid_crystal___s_r2_w.html" target="_parent">LiquidCrystal_SR2W</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr3w"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../class_liquid_crystal___s_r3_w.html" target="_parent">LiquidCrystal_SR3W</a> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/close.png b/libraries/LiquidCrystal/utility/docs/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/search/close.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_5f.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_5f.html new file mode 100644 index 0000000000000000000000000000000000000000..8a9b6d1c5e9ff26f5d9e450e17f06f8a78fe2f36 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_5f.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR__5fi2cio_5fversion"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_i2_c_i_o_8h.html#a218dbde2f6fda8c5825e25da10864c71" target="_parent">_I2CIO_VERSION</a> + <span class="SRScope">I2CIO.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_61.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_61.html new file mode 100644 index 0000000000000000000000000000000000000000..64e6e1190cd28eaf8b69e101db5c79a9ea428bcc --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_61.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_atomic_5fblock"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_fast_i_o_8h.html#a04971fe5fabe4129736708c494e08e6d" target="_parent">ATOMIC_BLOCK</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_atomic_5frestorestate"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_fast_i_o_8h.html#a362c18b15a09703e42e1c246c47420ef" target="_parent">ATOMIC_RESTORESTATE</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_62.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_62.html new file mode 100644 index 0000000000000000000000000000000000000000..e65a734d74af7703aa55217116cc4c0c90aaab1f --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_62.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_backlight_5foff"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#a0f50ae3b4bdb42dd5ad74b2c604a7515" target="_parent">BACKLIGHT_OFF</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_backlight_5fon"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_l_c_d_8h.html#aa5bad1c51f5fac029f3deacfef48c54b" target="_parent">BACKLIGHT_ON</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_63.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_63.html new file mode 100644 index 0000000000000000000000000000000000000000..d74c25d486c26845c07020c94ead216e319fa940 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_63.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_command"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#ab0d87e07831e7e4943caef187872123e" target="_parent">COMMAND</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_64.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_64.html new file mode 100644 index 0000000000000000000000000000000000000000..f47ef02fb0a85ec0dce7060b473a01db7808b87a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_64.html @@ -0,0 +1,62 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_d4"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_d4')">D4</a> + <div class="SRChildren"> + <a id="Item0_c0" onkeydown="return searchResults.NavChild(event,0,0)" onkeypress="return searchResults.NavChild(event,0,0)" onkeyup="return searchResults.NavChild(event,0,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed" target="_parent">D4(): LiquidCrystal_I2C.cpp</a> + <a id="Item0_c1" onkeydown="return searchResults.NavChild(event,0,1)" onkeypress="return searchResults.NavChild(event,0,1)" onkeyup="return searchResults.NavChild(event,0,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a3d9bb178282c3cb69740c94ba1e48fed" target="_parent">D4(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_d5"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_d5')">D5</a> + <div class="SRChildren"> + <a id="Item1_c0" onkeydown="return searchResults.NavChild(event,1,0)" onkeypress="return searchResults.NavChild(event,1,0)" onkeyup="return searchResults.NavChild(event,1,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c" target="_parent">D5(): LiquidCrystal_I2C.cpp</a> + <a id="Item1_c1" onkeydown="return searchResults.NavChild(event,1,1)" onkeypress="return searchResults.NavChild(event,1,1)" onkeyup="return searchResults.NavChild(event,1,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a2ddd4183d444d6d128cbdbd6269e4e0c" target="_parent">D5(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_d6"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_d6')">D6</a> + <div class="SRChildren"> + <a id="Item2_c0" onkeydown="return searchResults.NavChild(event,2,0)" onkeypress="return searchResults.NavChild(event,2,0)" onkeyup="return searchResults.NavChild(event,2,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6" target="_parent">D6(): LiquidCrystal_I2C.cpp</a> + <a id="Item2_c1" onkeydown="return searchResults.NavChild(event,2,1)" onkeypress="return searchResults.NavChild(event,2,1)" onkeyup="return searchResults.NavChild(event,2,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a79a18a7f5ccf7a7ca31f302bd62527a6" target="_parent">D6(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_d7"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_d7')">D7</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6" target="_parent">D7(): LiquidCrystal_I2C.cpp</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a2ba78f059a7ebebc95e7beef690e88d6" target="_parent">D7(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_data"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../_l_c_d_8h.html#aad9ae913bdfab20dd94ad04ee2d5b045" target="_parent">DATA</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_65.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_65.html new file mode 100644 index 0000000000000000000000000000000000000000..7ac4e794dad70262c1f3c00507eeda0dbdadfc42 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_65.html @@ -0,0 +1,35 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_en"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_en')">EN</a> + <div class="SRChildren"> + <a id="Item0_c0" onkeydown="return searchResults.NavChild(event,0,0)" onkeypress="return searchResults.NavChild(event,0,0)" onkeyup="return searchResults.NavChild(event,0,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05" target="_parent">EN(): LiquidCrystal_I2C.cpp</a> + <a id="Item0_c1" onkeydown="return searchResults.NavChild(event,0,1)" onkeypress="return searchResults.NavChild(event,0,1)" onkeyup="return searchResults.NavChild(event,0,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a22e6626f2c98ed902f8ded47f6438c05" target="_parent">EN(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_exec_5ftime"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_liquid_crystal_8h.html#adebff0f00a59c9f9863bc196938d5726" target="_parent">EXEC_TIME</a> + <span class="SRScope">LiquidCrystal.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_66.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_66.html new file mode 100644 index 0000000000000000000000000000000000000000..62258793553247c3ab4f983bf2338c1a471bd2c9 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_66.html @@ -0,0 +1,56 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite_5fhigh"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_fast_i_o_8h.html#a89e1c62276052100c62b6c82a2e95622" target="_parent">fio_digitalWrite_HIGH</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite_5flow"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_fast_i_o_8h.html#ac8f00a1bccb98109531b88fbb6e91478" target="_parent">fio_digitalWrite_LOW</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite_5fswitch"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_fast_i_o_8h.html#a6d1dffed7f0c8f28f6c88146315f7832" target="_parent">fio_digitalWrite_SWITCH</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite_5fswitchto"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../_fast_i_o_8h.html#accae9687fdfc5f3492fb6344d62eb190" target="_parent">fio_digitalWrite_SWITCHTO</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5ffallback"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../_fast_i_o_8h.html#a32f90d0ad5c1295c97cc1e79936aadd6" target="_parent">FIO_FALLBACK</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_four_5fbits"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../_l_c_d_8h.html#aa1e30e32b6c2cf8d90a9281328472dbe" target="_parent">FOUR_BITS</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_68.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_68.html new file mode 100644 index 0000000000000000000000000000000000000000..28e210e9bffe7e674772abe0d265f6943c3f7fee --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_68.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_home_5fclear_5fexec"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#ad25b138788d83e67f840588754e2df2f" target="_parent">HOME_CLEAR_EXEC</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_6c.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_6c.html new file mode 100644 index 0000000000000000000000000000000000000000..525e0b4646fcda08b8f1babcbd8b368008e700a1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_6c.html @@ -0,0 +1,219 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_lcd_5f1line"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#a8c85cf88d8af66a47c42249d81c94641" target="_parent">LCD_1LINE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f2line"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_l_c_d_8h.html#a7987e93538df2819583ba43b81ddbb25" target="_parent">LCD_2LINE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f4bit"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_liquid_crystal_8cpp.html#a31e1c14e8c2845dec3301f0ebd36b43c" target="_parent">LCD_4BIT</a> + <span class="SRScope">LiquidCrystal.cpp</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f4bitmode"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../_l_c_d_8h.html#ab8c35d355d2372090c7a347e961c9224" target="_parent">LCD_4BITMODE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f5x10dots"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../_l_c_d_8h.html#abb3210156d88d3fe18c9352eb161fe42" target="_parent">LCD_5x10DOTS</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f5x8dots"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../_l_c_d_8h.html#a9ef57e724c1b846dae0f531aff6fb464" target="_parent">LCD_5x8DOTS</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f8bit"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../_liquid_crystal_8cpp.html#a57d84af8cf61ceee4eb91db77889f071" target="_parent">LCD_8BIT</a> + <span class="SRScope">LiquidCrystal.cpp</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5f8bitmode"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../_l_c_d_8h.html#a59a57ca857dae5d89eb5f2a38c4ac6f0" target="_parent">LCD_8BITMODE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fbacklight"> + <div class="SREntry"> + <a id="Item8" onkeydown="return searchResults.Nav(event,8)" onkeypress="return searchResults.Nav(event,8)" onkeyup="return searchResults.Nav(event,8)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_lcd_5fbacklight')">LCD_BACKLIGHT</a> + <div class="SRChildren"> + <a id="Item8_c0" onkeydown="return searchResults.NavChild(event,8,0)" onkeypress="return searchResults.NavChild(event,8,0)" onkeyup="return searchResults.NavChild(event,8,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b" target="_parent">LCD_BACKLIGHT(): LiquidCrystal_I2C.cpp</a> + <a id="Item8_c1" onkeydown="return searchResults.NavChild(event,8,1)" onkeypress="return searchResults.NavChild(event,8,1)" onkeyup="return searchResults.NavChild(event,8,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#ac059d24dfe9c1e1f7c07cb7869a1833b" target="_parent">LCD_BACKLIGHT(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fblinkoff"> + <div class="SREntry"> + <a id="Item9" onkeydown="return searchResults.Nav(event,9)" onkeypress="return searchResults.Nav(event,9)" onkeyup="return searchResults.Nav(event,9)" class="SRSymbol" href="../_l_c_d_8h.html#a4b28243034cec656b0ed490ba6979752" target="_parent">LCD_BLINKOFF</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fblinkon"> + <div class="SREntry"> + <a id="Item10" onkeydown="return searchResults.Nav(event,10)" onkeypress="return searchResults.Nav(event,10)" onkeyup="return searchResults.Nav(event,10)" class="SRSymbol" href="../_l_c_d_8h.html#ac3b19d4e6553b9bbf18a23387e439206" target="_parent">LCD_BLINKON</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcleardisplay"> + <div class="SREntry"> + <a id="Item11" onkeydown="return searchResults.Nav(event,11)" onkeypress="return searchResults.Nav(event,11)" onkeyup="return searchResults.Nav(event,11)" class="SRSymbol" href="../_l_c_d_8h.html#acc3509bc0442b41e2b816555de473ed2" target="_parent">LCD_CLEARDISPLAY</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcursormove"> + <div class="SREntry"> + <a id="Item12" onkeydown="return searchResults.Nav(event,12)" onkeypress="return searchResults.Nav(event,12)" onkeyup="return searchResults.Nav(event,12)" class="SRSymbol" href="../_l_c_d_8h.html#ac21f0302ac4136775877d5f4759e4f74" target="_parent">LCD_CURSORMOVE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcursoroff"> + <div class="SREntry"> + <a id="Item13" onkeydown="return searchResults.Nav(event,13)" onkeypress="return searchResults.Nav(event,13)" onkeyup="return searchResults.Nav(event,13)" class="SRSymbol" href="../_l_c_d_8h.html#a32b194a3adaa0a0bb69acee2e6a754fa" target="_parent">LCD_CURSOROFF</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcursoron"> + <div class="SREntry"> + <a id="Item14" onkeydown="return searchResults.Nav(event,14)" onkeypress="return searchResults.Nav(event,14)" onkeyup="return searchResults.Nav(event,14)" class="SRSymbol" href="../_l_c_d_8h.html#ab67f0adccde68de88eee0513fdfc4574" target="_parent">LCD_CURSORON</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fcursorshift"> + <div class="SREntry"> + <a id="Item15" onkeydown="return searchResults.Nav(event,15)" onkeypress="return searchResults.Nav(event,15)" onkeyup="return searchResults.Nav(event,15)" class="SRSymbol" href="../_l_c_d_8h.html#a61f16a2b7550e4700f7898a7587c5594" target="_parent">LCD_CURSORSHIFT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fdisplaycontrol"> + <div class="SREntry"> + <a id="Item16" onkeydown="return searchResults.Nav(event,16)" onkeypress="return searchResults.Nav(event,16)" onkeyup="return searchResults.Nav(event,16)" class="SRSymbol" href="../_l_c_d_8h.html#adfb8b2b8b8a08d7313504d7a4f89d99f" target="_parent">LCD_DISPLAYCONTROL</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fdisplaymove"> + <div class="SREntry"> + <a id="Item17" onkeydown="return searchResults.Nav(event,17)" onkeypress="return searchResults.Nav(event,17)" onkeyup="return searchResults.Nav(event,17)" class="SRSymbol" href="../_l_c_d_8h.html#ab2f7b67abfac33f610acfd5d7a971f40" target="_parent">LCD_DISPLAYMOVE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fdisplayoff"> + <div class="SREntry"> + <a id="Item18" onkeydown="return searchResults.Nav(event,18)" onkeypress="return searchResults.Nav(event,18)" onkeyup="return searchResults.Nav(event,18)" class="SRSymbol" href="../_l_c_d_8h.html#a257ebe775cac7140cf82aa40d8ce545a" target="_parent">LCD_DISPLAYOFF</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fdisplayon"> + <div class="SREntry"> + <a id="Item19" onkeydown="return searchResults.Nav(event,19)" onkeypress="return searchResults.Nav(event,19)" onkeyup="return searchResults.Nav(event,19)" class="SRSymbol" href="../_l_c_d_8h.html#a76236ae8317b34bbc98ea56bc0a2639c" target="_parent">LCD_DISPLAYON</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentryleft"> + <div class="SREntry"> + <a id="Item20" onkeydown="return searchResults.Nav(event,20)" onkeypress="return searchResults.Nav(event,20)" onkeyup="return searchResults.Nav(event,20)" class="SRSymbol" href="../_l_c_d_8h.html#ae7c6309fce6200bd7526d090a4a84dd0" target="_parent">LCD_ENTRYLEFT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentrymodeset"> + <div class="SREntry"> + <a id="Item21" onkeydown="return searchResults.Nav(event,21)" onkeypress="return searchResults.Nav(event,21)" onkeyup="return searchResults.Nav(event,21)" class="SRSymbol" href="../_l_c_d_8h.html#a5597e1d5819ea2f0734ad4313abf6703" target="_parent">LCD_ENTRYMODESET</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentryright"> + <div class="SREntry"> + <a id="Item22" onkeydown="return searchResults.Nav(event,22)" onkeypress="return searchResults.Nav(event,22)" onkeyup="return searchResults.Nav(event,22)" class="SRSymbol" href="../_l_c_d_8h.html#a43c26ba2e66880fac95ef640b56873ad" target="_parent">LCD_ENTRYRIGHT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentryshiftdecrement"> + <div class="SREntry"> + <a id="Item23" onkeydown="return searchResults.Nav(event,23)" onkeypress="return searchResults.Nav(event,23)" onkeyup="return searchResults.Nav(event,23)" class="SRSymbol" href="../_l_c_d_8h.html#a049ee97e98d04788c1da9a55590fbe42" target="_parent">LCD_ENTRYSHIFTDECREMENT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fentryshiftincrement"> + <div class="SREntry"> + <a id="Item24" onkeydown="return searchResults.Nav(event,24)" onkeypress="return searchResults.Nav(event,24)" onkeyup="return searchResults.Nav(event,24)" class="SRSymbol" href="../_l_c_d_8h.html#aa2cf1d0f4a319e53c009cffe1184466c" target="_parent">LCD_ENTRYSHIFTINCREMENT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5ffunctionset"> + <div class="SREntry"> + <a id="Item25" onkeydown="return searchResults.Nav(event,25)" onkeypress="return searchResults.Nav(event,25)" onkeyup="return searchResults.Nav(event,25)" class="SRSymbol" href="../_l_c_d_8h.html#aaef882ae70d1f485cd132815d9716111" target="_parent">LCD_FUNCTIONSET</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fmoveleft"> + <div class="SREntry"> + <a id="Item26" onkeydown="return searchResults.Nav(event,26)" onkeypress="return searchResults.Nav(event,26)" onkeyup="return searchResults.Nav(event,26)" class="SRSymbol" href="../_l_c_d_8h.html#aafb86adb0dfca1e65d65b2cd1946a009" target="_parent">LCD_MOVELEFT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fmoveright"> + <div class="SREntry"> + <a id="Item27" onkeydown="return searchResults.Nav(event,27)" onkeypress="return searchResults.Nav(event,27)" onkeyup="return searchResults.Nav(event,27)" class="SRSymbol" href="../_l_c_d_8h.html#acf5999180233790bb2c9902efde58f7f" target="_parent">LCD_MOVERIGHT</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fnobacklight"> + <div class="SREntry"> + <a id="Item28" onkeydown="return searchResults.Nav(event,28)" onkeypress="return searchResults.Nav(event,28)" onkeyup="return searchResults.Nav(event,28)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_lcd_5fnobacklight')">LCD_NOBACKLIGHT</a> + <div class="SRChildren"> + <a id="Item28_c0" onkeydown="return searchResults.NavChild(event,28,0)" onkeypress="return searchResults.NavChild(event,28,0)" onkeyup="return searchResults.NavChild(event,28,0)" class="SRScope" href="../_liquid_crystal_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581" target="_parent">LCD_NOBACKLIGHT(): LiquidCrystal.cpp</a> + <a id="Item28_c1" onkeydown="return searchResults.NavChild(event,28,1)" onkeypress="return searchResults.NavChild(event,28,1)" onkeyup="return searchResults.NavChild(event,28,1)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581" target="_parent">LCD_NOBACKLIGHT(): LiquidCrystal_I2C.cpp</a> + <a id="Item28_c2" onkeydown="return searchResults.NavChild(event,28,2)" onkeypress="return searchResults.NavChild(event,28,2)" onkeyup="return searchResults.NavChild(event,28,2)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#a65fa786d6e31fe8b1aa51784a9736581" target="_parent">LCD_NOBACKLIGHT(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_lcd_5freturnhome"> + <div class="SREntry"> + <a id="Item29" onkeydown="return searchResults.Nav(event,29)" onkeypress="return searchResults.Nav(event,29)" onkeyup="return searchResults.Nav(event,29)" class="SRSymbol" href="../_l_c_d_8h.html#a154c86a887633d0f6d9988e4dbb1f419" target="_parent">LCD_RETURNHOME</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fsetcgramaddr"> + <div class="SREntry"> + <a id="Item30" onkeydown="return searchResults.Nav(event,30)" onkeypress="return searchResults.Nav(event,30)" onkeyup="return searchResults.Nav(event,30)" class="SRSymbol" href="../_l_c_d_8h.html#aae6ea856879c11dee58493184582a52f" target="_parent">LCD_SETCGRAMADDR</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_lcd_5fsetddramaddr"> + <div class="SREntry"> + <a id="Item31" onkeydown="return searchResults.Nav(event,31)" onkeypress="return searchResults.Nav(event,31)" onkeyup="return searchResults.Nav(event,31)" class="SRSymbol" href="../_l_c_d_8h.html#a15008b832807a208d9d88c74e6751ebf" target="_parent">LCD_SETDDRAMADDR</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_72.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_72.html new file mode 100644 index 0000000000000000000000000000000000000000..091148d73c1a5ed7a99747269d6930d60ecaf1f6 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_72.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_rs"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_rs')">RS</a> + <div class="SRChildren"> + <a id="Item0_c0" onkeydown="return searchResults.NavChild(event,0,0)" onkeypress="return searchResults.NavChild(event,0,0)" onkeyup="return searchResults.NavChild(event,0,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#af8903d8eea3868940c60af887473b152" target="_parent">RS(): LiquidCrystal_I2C.cpp</a> + <a id="Item0_c1" onkeydown="return searchResults.NavChild(event,0,1)" onkeypress="return searchResults.NavChild(event,0,1)" onkeyup="return searchResults.NavChild(event,0,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#af8903d8eea3868940c60af887473b152" target="_parent">RS(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_rw"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_rw')">RW</a> + <div class="SRChildren"> + <a id="Item1_c0" onkeydown="return searchResults.NavChild(event,1,0)" onkeypress="return searchResults.NavChild(event,1,0)" onkeyup="return searchResults.NavChild(event,1,0)" class="SRScope" href="../_liquid_crystal___i2_c_8cpp.html#afc4ded33ac0ca43defcce639e965748a" target="_parent">RW(): LiquidCrystal_I2C.cpp</a> + <a id="Item1_c1" onkeydown="return searchResults.NavChild(event,1,1)" onkeypress="return searchResults.NavChild(event,1,1)" onkeyup="return searchResults.NavChild(event,1,1)" class="SRScope" href="../_liquid_crystal___s_r3_w_8cpp.html#afc4ded33ac0ca43defcce639e965748a" target="_parent">RW(): LiquidCrystal_SR3W.cpp</a> + </div> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_73.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_73.html new file mode 100644 index 0000000000000000000000000000000000000000..e33c996af3d1493518f73d5ffada9af19d61bcfd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_73.html @@ -0,0 +1,134 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_skip"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_fast_i_o_8h.html#a688a4adbb87520a2b68681bd6bfb199e" target="_parent">SKIP</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fatomic_5fwrite_5fhigh"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a7582c2cf6ceaeddf740f675c8f731ecf" target="_parent">SR1W_ATOMIC_WRITE_HIGH</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fatomic_5fwrite_5flow"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a895edbf1947d432e4616bc4592de8cfa" target="_parent">SR1W_ATOMIC_WRITE_LOW</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fbl_5fmask"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a2bfc90f6a1e21e271196273a8db741af" target="_parent">SR1W_BL_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fd4_5fmask"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a2ee8ae46c168f471666c4aaddbca1ec0" target="_parent">SR1W_D4_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fd5_5fmask"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a159fe0dd329cef231ae7d8ad674adad3" target="_parent">SR1W_D5_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fd6_5fmask"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a5cea156a4ee75a239b094b1c24116140" target="_parent">SR1W_D6_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fd7_5fmask"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a7accf5938d87cf2edbda80b26e0e6f69" target="_parent">SR1W_D7_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fdelay"> + <div class="SREntry"> + <a id="Item8" onkeydown="return searchResults.Nav(event,8)" onkeypress="return searchResults.Nav(event,8)" onkeyup="return searchResults.Nav(event,8)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a645c2cb325144756182083dad23498e7" target="_parent">SR1W_DELAY</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fdelay_5fus"> + <div class="SREntry"> + <a id="Item9" onkeydown="return searchResults.Nav(event,9)" onkeypress="return searchResults.Nav(event,9)" onkeyup="return searchResults.Nav(event,9)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#af142acb4543f9067f60a28d58a49f033" target="_parent">SR1W_DELAY_US</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5fen_5fmask"> + <div class="SREntry"> + <a id="Item10" onkeydown="return searchResults.Nav(event,10)" onkeypress="return searchResults.Nav(event,10)" onkeyup="return searchResults.Nav(event,10)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a6875204445378ad8d8a8ded846cbcbaa" target="_parent">SR1W_EN_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5frs_5fmask"> + <div class="SREntry"> + <a id="Item11" onkeydown="return searchResults.Nav(event,11)" onkeypress="return searchResults.Nav(event,11)" onkeyup="return searchResults.Nav(event,11)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a874628609b122ed01ccd5e39411f86de" target="_parent">SR1W_RS_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr1w_5funused_5fmask"> + <div class="SREntry"> + <a id="Item12" onkeydown="return searchResults.Nav(event,12)" onkeypress="return searchResults.Nav(event,12)" onkeyup="return searchResults.Nav(event,12)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#ae4324c30e18eea1716bd2b0f60027712" target="_parent">SR1W_UNUSED_MASK</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr2w_5fbl_5fmask"> + <div class="SREntry"> + <a id="Item13" onkeydown="return searchResults.Nav(event,13)" onkeypress="return searchResults.Nav(event,13)" onkeyup="return searchResults.Nav(event,13)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html#a53e3add69865ae57ca872cb41fcae9e3" target="_parent">SR2W_BL_MASK</a> + <span class="SRScope">LiquidCrystal_SR2W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr2w_5fdata_5fmask"> + <div class="SREntry"> + <a id="Item14" onkeydown="return searchResults.Nav(event,14)" onkeypress="return searchResults.Nav(event,14)" onkeyup="return searchResults.Nav(event,14)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html#a7cf86f2a173473d01e02b2ac786a8690" target="_parent">SR2W_DATA_MASK</a> + <span class="SRScope">LiquidCrystal_SR2W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr2w_5fen_5fmask"> + <div class="SREntry"> + <a id="Item15" onkeydown="return searchResults.Nav(event,15)" onkeypress="return searchResults.Nav(event,15)" onkeyup="return searchResults.Nav(event,15)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html#a8d17b6abb5bcde6883dbdc86d34be9d8" target="_parent">SR2W_EN_MASK</a> + <span class="SRScope">LiquidCrystal_SR2W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr2w_5frs_5fmask"> + <div class="SREntry"> + <a id="Item16" onkeydown="return searchResults.Nav(event,16)" onkeypress="return searchResults.Nav(event,16)" onkeyup="return searchResults.Nav(event,16)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html#acce98b026d9fdcb2e126705c14af7500" target="_parent">SR2W_RS_MASK</a> + <span class="SRScope">LiquidCrystal_SR2W.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr_5fen_5fbit"> + <div class="SREntry"> + <a id="Item17" onkeydown="return searchResults.Nav(event,17)" onkeypress="return searchResults.Nav(event,17)" onkeyup="return searchResults.Nav(event,17)" class="SRSymbol" href="../_liquid_crystal___s_r_8h.html#a0075b041d82abb47f279dce482e7b087" target="_parent">SR_EN_BIT</a> + <span class="SRScope">LiquidCrystal_SR.h</span> + </div> +</div> +<div class="SRResult" id="SR_sr_5frs_5fbit"> + <div class="SREntry"> + <a id="Item18" onkeydown="return searchResults.Nav(event,18)" onkeypress="return searchResults.Nav(event,18)" onkeyup="return searchResults.Nav(event,18)" class="SRSymbol" href="../_liquid_crystal___s_r_8h.html#afdaa2bbb2cc185700864ac8d7a570ced" target="_parent">SR_RS_BIT</a> + <span class="SRScope">LiquidCrystal_SR.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/defines_74.html b/libraries/LiquidCrystal/utility/docs/html/search/defines_74.html new file mode 100644 index 0000000000000000000000000000000000000000..ba27d7f60f576c624b9eaec2c0ee0557fc528301 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/defines_74.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_two_5fwire"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_liquid_crystal___s_r_8h.html#a40fb1f76bc5f8ca9e6534b47bd6da27c" target="_parent">TWO_WIRE</a> + <span class="SRScope">LiquidCrystal_SR.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/enums_74.html b/libraries/LiquidCrystal/utility/docs/html/search/enums_74.html new file mode 100644 index 0000000000000000000000000000000000000000..0de07b9bd4aa599adecc087e8e49932c13516406 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/enums_74.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_t_5fbacklighpol"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bc" target="_parent">t_backlighPol</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_t_5fsr1w_5fcircuittype"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99" target="_parent">t_sr1w_circuitType</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_68.html b/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_68.html new file mode 100644 index 0000000000000000000000000000000000000000..ea6214cb93607c04546187cffeda4b3f1b2d72b1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_68.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_hw_5fclear"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a3069011d6c3fab813423e8101c6a7aa7" target="_parent">HW_CLEAR</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_6e.html b/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_6e.html new file mode 100644 index 0000000000000000000000000000000000000000..13de3f448b7122d6d75207d8ab437a3f4e2ef673 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_6e.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_negative"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca62d66a51fa7574c652597716f7709865" target="_parent">NEGATIVE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_70.html b/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_70.html new file mode 100644 index 0000000000000000000000000000000000000000..ccfeb29d474e8e8656d46f6d0e3214ceaf7742db --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_70.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_positive"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#aeeef728bf4726268aa5e99391a1502bca03d440bbbfb042afc85347f994b44fb5" target="_parent">POSITIVE</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_73.html b/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_73.html new file mode 100644 index 0000000000000000000000000000000000000000..224f31194200d6bd44ff8d34a29bae4b4f5562fd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/enumvalues_73.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_sw_5fclear"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html#a31959259c88db00960459461ba423d99a6181fb356c56f0ac9a79810e1ba99ebc" target="_parent">SW_CLEAR</a> + <span class="SRScope">LiquidCrystal_SR1W.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/files_66.html b/libraries/LiquidCrystal/utility/docs/html/search/files_66.html new file mode 100644 index 0000000000000000000000000000000000000000..2eeecabb44d1ba2eb4e15ed4917e9733f7a1e87f --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/files_66.html @@ -0,0 +1,30 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_fastio_2ecpp"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_fast_i_o_8cpp.html" target="_parent">FastIO.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_fastio_2eh"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_fast_i_o_8h.html" target="_parent">FastIO.h</a> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/files_69.html b/libraries/LiquidCrystal/utility/docs/html/search/files_69.html new file mode 100644 index 0000000000000000000000000000000000000000..6d0e429b540b0de2c3a3aafc028b3836b4cd6ddd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/files_69.html @@ -0,0 +1,30 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_i2cio_2ecpp"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_i2_c_i_o_8cpp.html" target="_parent">I2CIO.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_i2cio_2eh"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_i2_c_i_o_8h.html" target="_parent">I2CIO.h</a> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/files_6c.html b/libraries/LiquidCrystal/utility/docs/html/search/files_6c.html new file mode 100644 index 0000000000000000000000000000000000000000..35127c6d9dfe23103a07b2d9e1bf2403551e9c60 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/files_6c.html @@ -0,0 +1,100 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_lcd_2ecpp"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8cpp.html" target="_parent">LCD.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_lcd_2eh"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_l_c_d_8h.html" target="_parent">LCD.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_2ecpp"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../_liquid_crystal_8cpp.html" target="_parent">LiquidCrystal.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_2eh"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../_liquid_crystal_8h.html" target="_parent">LiquidCrystal.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_2ecpp"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../_liquid_crystal___i2_c_8cpp.html" target="_parent">LiquidCrystal_I2C.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_2eh"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../_liquid_crystal___i2_c_8h.html" target="_parent">LiquidCrystal_I2C.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_5fbyvac_2ecpp"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../_liquid_crystal___i2_c___by_vac_8cpp.html" target="_parent">LiquidCrystal_I2C_ByVac.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_5fbyvac_2eh"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../_liquid_crystal___i2_c___by_vac_8h.html" target="_parent">LiquidCrystal_I2C_ByVac.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr_2ecpp"> + <div class="SREntry"> + <a id="Item8" onkeydown="return searchResults.Nav(event,8)" onkeypress="return searchResults.Nav(event,8)" onkeyup="return searchResults.Nav(event,8)" class="SRSymbol" href="../_liquid_crystal___s_r_8cpp.html" target="_parent">LiquidCrystal_SR.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr_2eh"> + <div class="SREntry"> + <a id="Item9" onkeydown="return searchResults.Nav(event,9)" onkeypress="return searchResults.Nav(event,9)" onkeyup="return searchResults.Nav(event,9)" class="SRSymbol" href="../_liquid_crystal___s_r_8h.html" target="_parent">LiquidCrystal_SR.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr1w_2ecpp"> + <div class="SREntry"> + <a id="Item10" onkeydown="return searchResults.Nav(event,10)" onkeypress="return searchResults.Nav(event,10)" onkeyup="return searchResults.Nav(event,10)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8cpp.html" target="_parent">LiquidCrystal_SR1W.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr1w_2eh"> + <div class="SREntry"> + <a id="Item11" onkeydown="return searchResults.Nav(event,11)" onkeypress="return searchResults.Nav(event,11)" onkeyup="return searchResults.Nav(event,11)" class="SRSymbol" href="../_liquid_crystal___s_r1_w_8h.html" target="_parent">LiquidCrystal_SR1W.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr2w_2ecpp"> + <div class="SREntry"> + <a id="Item12" onkeydown="return searchResults.Nav(event,12)" onkeypress="return searchResults.Nav(event,12)" onkeyup="return searchResults.Nav(event,12)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8cpp.html" target="_parent">LiquidCrystal_SR2W.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr2w_2eh"> + <div class="SREntry"> + <a id="Item13" onkeydown="return searchResults.Nav(event,13)" onkeypress="return searchResults.Nav(event,13)" onkeyup="return searchResults.Nav(event,13)" class="SRSymbol" href="../_liquid_crystal___s_r2_w_8h.html" target="_parent">LiquidCrystal_SR2W.h</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr3w_2ecpp"> + <div class="SREntry"> + <a id="Item14" onkeydown="return searchResults.Nav(event,14)" onkeypress="return searchResults.Nav(event,14)" onkeyup="return searchResults.Nav(event,14)" class="SRSymbol" href="../_liquid_crystal___s_r3_w_8cpp.html" target="_parent">LiquidCrystal_SR3W.cpp</a> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr3w_2eh"> + <div class="SREntry"> + <a id="Item15" onkeydown="return searchResults.Nav(event,15)" onkeypress="return searchResults.Nav(event,15)" onkeyup="return searchResults.Nav(event,15)" class="SRSymbol" href="../_liquid_crystal___s_r3_w_8h.html" target="_parent">LiquidCrystal_SR3W.h</a> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_0.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_0.html new file mode 100644 index 0000000000000000000000000000000000000000..246d1672102e13a400961bb4fdd92f4bd0330420 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_0.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_0.js new file mode 100644 index 0000000000000000000000000000000000000000..ce610fc5f106b6fe9168aca17c320fbc0681af57 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['autoscroll',['autoscroll',['../class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_1.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_1.html new file mode 100644 index 0000000000000000000000000000000000000000..5f14d674ee18784d2c71d5b298d51aebaf7686ae --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_1.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_1.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_1.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_1.js new file mode 100644 index 0000000000000000000000000000000000000000..83cdee904fb7fe514d4d04f0a9566d0dde4ac8ba --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['backlight',['backlight',['../class_l_c_d.html#aba8867fe2210cbfa8db869208709be10',1,'LCD']]], + ['begin',['begin',['../class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae',1,'I2CIO::begin()'],['../class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea',1,'LCD::begin()'],['../class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6',1,'LiquidCrystal_I2C::begin()'],['../class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb',1,'LiquidCrystal_I2C_ByVac::begin()'],['../class_liquid_crystal___s_i2_c.html#a74fde8669f097755a6e8a376bb2877cb',1,'LiquidCrystal_SI2C::begin()'],['../class_s_i2_c_i_o.html#aef6df8409b67bda118c2e055af3d6f47',1,'SI2CIO::begin()']]], + ['blink',['blink',['../class_l_c_d.html#a878b36878fa8287093964eba83aace77',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_2.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_2.html new file mode 100644 index 0000000000000000000000000000000000000000..3995cf8c5f88cd9569f53287ee973a3c8501fadf --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_2.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_2.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_2.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_2.js new file mode 100644 index 0000000000000000000000000000000000000000..ab2366a42e8f5b3a32cf09ecc93c4dc966d88a07 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['clear',['clear',['../class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a',1,'LCD']]], + ['createchar',['createChar',['../class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a',1,'LCD']]], + ['cursor',['cursor',['../class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_3.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_3.html new file mode 100644 index 0000000000000000000000000000000000000000..4e302d69b957a0e574b407339df16c9771af9b06 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_3.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_3.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_3.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_3.js new file mode 100644 index 0000000000000000000000000000000000000000..a4ce9dc48e0921fa4ab0db9e79eacf4aaa6775c1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['digitalread',['digitalRead',['../class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7',1,'I2CIO::digitalRead()'],['../class_s_i2_c_i_o.html#a15fe6d174fb001bca7866004e96f0b33',1,'SI2CIO::digitalRead()']]], + ['digitalwrite',['digitalWrite',['../class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd',1,'I2CIO::digitalWrite()'],['../class_s_i2_c_i_o.html#ae1e3c6fd22872f248de6a90af27d92de',1,'SI2CIO::digitalWrite()']]], + ['display',['display',['../class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_4.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_4.html new file mode 100644 index 0000000000000000000000000000000000000000..58ca83a6165861cd2284b51846d4e0764fb4504d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_4.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_4.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_4.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_4.js new file mode 100644 index 0000000000000000000000000000000000000000..1edeee261c972d89ab856fd57645188efd014b74 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['home',['home',['../class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_5.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_5.html new file mode 100644 index 0000000000000000000000000000000000000000..5f9f05aeb235eabd92b016e6e5c7e515c80f335d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_5.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_5.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_5.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_5.js new file mode 100644 index 0000000000000000000000000000000000000000..e7e32f4551f16630b1c552b47f20ec6293648706 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['i2cio',['I2CIO',['../class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6',1,'I2CIO']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_6.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_6.html new file mode 100644 index 0000000000000000000000000000000000000000..c980da25be55ef4c817293d76c718ef7e81136b6 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_6.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_6.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_6.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_6.js new file mode 100644 index 0000000000000000000000000000000000000000..72c3497080e08af5b234f5c9b6fa312ca02019d6 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_6.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['lcd',['LCD',['../class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD']]], + ['lefttoright',['leftToRight',['../class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7',1,'LCD']]], + ['liquidcrystal',['LiquidCrystal',['../class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686',1,'LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)'],['../class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec',1,'LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)']]], + ['liquidcrystal_5fi2c',['LiquidCrystal_I2C',['../class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c',1,'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr)'],['../class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce',1,'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)'],['../class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654',1,'LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)']]], + ['liquidcrystal_5fi2c_5fbyvac',['LiquidCrystal_I2C_ByVac',['../class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31',1,'LiquidCrystal_I2C_ByVac']]], + ['liquidcrystal_5fsi2c',['LiquidCrystal_SI2C',['../class_liquid_crystal___s_i2_c.html#ac77c2e6cca626aeae8838769fb70f7be',1,'LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr)'],['../class_liquid_crystal___s_i2_c.html#aa1a837dec506f9c459605c7bd4b7fe8c',1,'LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)'],['../class_liquid_crystal___s_i2_c.html#ac0e7a4841e03a4e4916c66ff48ea53e9',1,'LiquidCrystal_SI2C::LiquidCrystal_SI2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)']]], + ['liquidcrystal_5fsr',['LiquidCrystal_SR',['../class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc',1,'LiquidCrystal_SR']]], + ['liquidcrystal_5fsr1w',['LiquidCrystal_SR1W',['../class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9',1,'LiquidCrystal_SR1W']]], + ['liquidcrystal_5fsr2w',['LiquidCrystal_SR2W',['../class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3',1,'LiquidCrystal_SR2W']]], + ['liquidcrystal_5fsr3w',['LiquidCrystal_SR3W',['../class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b',1,'LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe)'],['../class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0',1,'LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_61.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_61.html new file mode 100644 index 0000000000000000000000000000000000000000..7fb674c5e4d4cc39b86c81a5ca92da1a7fc29ba9 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_61.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_autoscroll"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#abb3ed88d530f6283e6159b4973e7da9e" target="_parent">autoscroll</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_62.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_62.html new file mode 100644 index 0000000000000000000000000000000000000000..0e2cb1712429aded8467c895771b2c0af7e89f8e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_62.html @@ -0,0 +1,43 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_backlight"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#aba8867fe2210cbfa8db869208709be10" target="_parent">backlight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_begin"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_begin')">begin</a> + <div class="SRChildren"> + <a id="Item1_c0" onkeydown="return searchResults.NavChild(event,1,0)" onkeypress="return searchResults.NavChild(event,1,0)" onkeyup="return searchResults.NavChild(event,1,0)" class="SRScope" href="../class_i2_c_i_o.html#a6f814653d903dc2ff6e8420eeb7954ae" target="_parent">I2CIO::begin()</a> + <a id="Item1_c1" onkeydown="return searchResults.NavChild(event,1,1)" onkeypress="return searchResults.NavChild(event,1,1)" onkeyup="return searchResults.NavChild(event,1,1)" class="SRScope" href="../class_l_c_d.html#a3f587d1cbb2d59765ef60a5216b56fea" target="_parent">LCD::begin()</a> + <a id="Item1_c2" onkeydown="return searchResults.NavChild(event,1,2)" onkeypress="return searchResults.NavChild(event,1,2)" onkeyup="return searchResults.NavChild(event,1,2)" class="SRScope" href="../class_liquid_crystal___i2_c.html#aeee2ada537f0cfbfda8613324b57c4a6" target="_parent">LiquidCrystal_I2C::begin()</a> + <a id="Item1_c3" onkeydown="return searchResults.NavChild(event,1,3)" onkeypress="return searchResults.NavChild(event,1,3)" onkeyup="return searchResults.NavChild(event,1,3)" class="SRScope" href="../class_liquid_crystal___i2_c___by_vac.html#a34ce9cf919b9f8de59f842a4e94c1abb" target="_parent">LiquidCrystal_I2C_ByVac::begin()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_blink"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#a878b36878fa8287093964eba83aace77" target="_parent">blink</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_63.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_63.html new file mode 100644 index 0000000000000000000000000000000000000000..118cc32ce697e92cba74e0435986533aea595620 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_63.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_clear"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#afa699e0beeeee03cce8cef87eba81c4a" target="_parent">clear</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_createchar"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#a91cba8f93c692abcddf8bc3de58d2d3a" target="_parent">createChar</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_cursor"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#a194814f64dfa50a90e07e0fe0d361620" target="_parent">cursor</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_64.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_64.html new file mode 100644 index 0000000000000000000000000000000000000000..ba77ba3847c72fa180e2b628ed114f97ee7ff9cb --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_64.html @@ -0,0 +1,38 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_digitalread"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_i2_c_i_o.html#ac26221011a8b49bcea9ef62712ea88a7" target="_parent">digitalRead</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_digitalwrite"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_i2_c_i_o.html#a473206162522b847546777d16a7c6dcd" target="_parent">digitalWrite</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_display"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#a5b07cf05e8e5e7c53654f5ca0cf58b89" target="_parent">display</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_65.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_65.html new file mode 100644 index 0000000000000000000000000000000000000000..86ec5ea69b58ab9ca2cac7b9a45e90eb4a1017bd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_65.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_expanderwrite"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_liquid_crystal___i2_c.html#a4c63780ceef67e90750d3e4bbdb83402" target="_parent">expanderWrite</a> + <span class="SRScope">LiquidCrystal_I2C</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_66.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_66.html new file mode 100644 index 0000000000000000000000000000000000000000..8cdaa7787135461ab028587e9ffd062f75a2a897 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_66.html @@ -0,0 +1,98 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_fio_5fdigitalread"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fdigitalread')">fio_digitalRead</a> + <div class="SRChildren"> + <a id="Item0_c0" onkeydown="return searchResults.NavChild(event,0,0)" onkeypress="return searchResults.NavChild(event,0,0)" onkeyup="return searchResults.NavChild(event,0,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a83fc2fdc19ab3f9aade9e1a2f39e81a6" target="_parent">fio_digitalRead(fio_register pinRegister, uint8_t pinBit): FastIO.cpp</a> + <a id="Item0_c1" onkeydown="return searchResults.NavChild(event,0,1)" onkeypress="return searchResults.NavChild(event,0,1)" onkeyup="return searchResults.NavChild(event,0,1)" class="SRScope" href="../_fast_i_o_8h.html#a197336e47e1c3f929056ce3abbbc7e8d" target="_parent">fio_digitalRead(fio_register pinRegister, fio_bit pinBit): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fdigitalwrite"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fdigitalwrite')">fio_digitalWrite</a> + <div class="SRChildren"> + <a id="Item1_c0" onkeydown="return searchResults.NavChild(event,1,0)" onkeypress="return searchResults.NavChild(event,1,0)" onkeyup="return searchResults.NavChild(event,1,0)" class="SRScope" href="../_fast_i_o_8cpp.html#ae91bbe682b02a5842c291055c0e998b5" target="_parent">fio_digitalWrite(fio_register pinRegister, fio_bit pinBit, uint8_t value): FastIO.cpp</a> + <a id="Item1_c1" onkeydown="return searchResults.NavChild(event,1,1)" onkeypress="return searchResults.NavChild(event,1,1)" onkeyup="return searchResults.NavChild(event,1,1)" class="SRScope" href="../_fast_i_o_8h.html#ae91bbe682b02a5842c291055c0e998b5" target="_parent">fio_digitalWrite(fio_register pinRegister, fio_bit pinBit, uint8_t value): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fpintobit"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fpintobit')">fio_pinToBit</a> + <div class="SRChildren"> + <a id="Item2_c0" onkeydown="return searchResults.NavChild(event,2,0)" onkeypress="return searchResults.NavChild(event,2,0)" onkeyup="return searchResults.NavChild(event,2,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a07a19dfbdca1afaca5d666bdaa3be7d5" target="_parent">fio_pinToBit(uint8_t pin): FastIO.cpp</a> + <a id="Item2_c1" onkeydown="return searchResults.NavChild(event,2,1)" onkeypress="return searchResults.NavChild(event,2,1)" onkeyup="return searchResults.NavChild(event,2,1)" class="SRScope" href="../_fast_i_o_8h.html#a07a19dfbdca1afaca5d666bdaa3be7d5" target="_parent">fio_pinToBit(uint8_t pin): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fpintoinputregister"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fpintoinputregister')">fio_pinToInputRegister</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../_fast_i_o_8cpp.html#afb934fc0ded94cbb5ed8ed14e2a123ed" target="_parent">fio_pinToInputRegister(uint8_t pin): FastIO.cpp</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../_fast_i_o_8h.html#afb934fc0ded94cbb5ed8ed14e2a123ed" target="_parent">fio_pinToInputRegister(uint8_t pin): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fpintooutputregister"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fpintooutputregister')">fio_pinToOutputRegister</a> + <div class="SRChildren"> + <a id="Item4_c0" onkeydown="return searchResults.NavChild(event,4,0)" onkeypress="return searchResults.NavChild(event,4,0)" onkeyup="return searchResults.NavChild(event,4,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a04210cc785c3b4a11c86f794949c327f" target="_parent">fio_pinToOutputRegister(uint8_t pin, uint8_t initial_state): FastIO.cpp</a> + <a id="Item4_c1" onkeydown="return searchResults.NavChild(event,4,1)" onkeypress="return searchResults.NavChild(event,4,1)" onkeyup="return searchResults.NavChild(event,4,1)" class="SRScope" href="../_fast_i_o_8h.html#a385ae40d960c1a57e86818332476a802" target="_parent">fio_pinToOutputRegister(uint8_t pin, uint8_t initial_state=LOW): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fshiftout"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fshiftout')">fio_shiftOut</a> + <div class="SRChildren"> + <a id="Item5_c0" onkeydown="return searchResults.NavChild(event,5,0)" onkeypress="return searchResults.NavChild(event,5,0)" onkeyup="return searchResults.NavChild(event,5,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a56c72b9f00680662229895ab22aaa743" target="_parent">fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit, uint8_t value, uint8_t bitOrder): FastIO.cpp</a> + <a id="Item5_c1" onkeydown="return searchResults.NavChild(event,5,1)" onkeypress="return searchResults.NavChild(event,5,1)" onkeyup="return searchResults.NavChild(event,5,1)" class="SRScope" href="../_fast_i_o_8cpp.html#a5d8d5977294d614d15bda19f75d6b787" target="_parent">fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit): FastIO.cpp</a> + <a id="Item5_c2" onkeydown="return searchResults.NavChild(event,5,2)" onkeypress="return searchResults.NavChild(event,5,2)" onkeyup="return searchResults.NavChild(event,5,2)" class="SRScope" href="../_fast_i_o_8h.html#a56c72b9f00680662229895ab22aaa743" target="_parent">fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit, uint8_t value, uint8_t bitOrder): FastIO.cpp</a> + <a id="Item5_c3" onkeydown="return searchResults.NavChild(event,5,3)" onkeypress="return searchResults.NavChild(event,5,3)" onkeyup="return searchResults.NavChild(event,5,3)" class="SRScope" href="../_fast_i_o_8h.html#a5d8d5977294d614d15bda19f75d6b787" target="_parent">fio_shiftOut(fio_register dataRegister, fio_bit dataBit, fio_register clockRegister, fio_bit clockBit): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fshiftout1"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fshiftout1')">fio_shiftOut1</a> + <div class="SRChildren"> + <a id="Item6_c0" onkeydown="return searchResults.NavChild(event,6,0)" onkeypress="return searchResults.NavChild(event,6,0)" onkeyup="return searchResults.NavChild(event,6,0)" class="SRScope" href="../_fast_i_o_8cpp.html#a5b4d1684030dc620938b7c2fbdf5ced8" target="_parent">fio_shiftOut1(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, boolean noLatch): FastIO.cpp</a> + <a id="Item6_c1" onkeydown="return searchResults.NavChild(event,6,1)" onkeypress="return searchResults.NavChild(event,6,1)" onkeyup="return searchResults.NavChild(event,6,1)" class="SRScope" href="../_fast_i_o_8cpp.html#a7ac8b242e7e3cacf175e481889e047dd" target="_parent">fio_shiftOut1(uint8_t pin, uint8_t value, boolean noLatch): FastIO.cpp</a> + <a id="Item6_c2" onkeydown="return searchResults.NavChild(event,6,2)" onkeypress="return searchResults.NavChild(event,6,2)" onkeyup="return searchResults.NavChild(event,6,2)" class="SRScope" href="../_fast_i_o_8h.html#a33ce251dcd6b448185cda415a99001cf" target="_parent">fio_shiftOut1(fio_register shift1Register, fio_bit shift1Bit, uint8_t value, boolean noLatch=false): FastIO.cpp</a> + <a id="Item6_c3" onkeydown="return searchResults.NavChild(event,6,3)" onkeypress="return searchResults.NavChild(event,6,3)" onkeyup="return searchResults.NavChild(event,6,3)" class="SRScope" href="../_fast_i_o_8h.html#af2aac35d9a8ab7a2c87672f2c7cbbafb" target="_parent">fio_shiftOut1(uint8_t pin, uint8_t value, boolean noLatch=false): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_fio_5fshiftout1_5finit"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_fio_5fshiftout1_5finit')">fio_shiftOut1_init</a> + <div class="SRChildren"> + <a id="Item7_c0" onkeydown="return searchResults.NavChild(event,7,0)" onkeypress="return searchResults.NavChild(event,7,0)" onkeyup="return searchResults.NavChild(event,7,0)" class="SRScope" href="../_fast_i_o_8cpp.html#ae4b2e099f8ade9ee674d1565669e870a" target="_parent">fio_shiftOut1_init(uint8_t pin): FastIO.cpp</a> + <a id="Item7_c1" onkeydown="return searchResults.NavChild(event,7,1)" onkeypress="return searchResults.NavChild(event,7,1)" onkeyup="return searchResults.NavChild(event,7,1)" class="SRScope" href="../_fast_i_o_8cpp.html#a2d0e4495eb12504255bbd3f82405b17b" target="_parent">fio_shiftOut1_init(fio_register shift1Register, fio_bit shift1Bit): FastIO.cpp</a> + <a id="Item7_c2" onkeydown="return searchResults.NavChild(event,7,2)" onkeypress="return searchResults.NavChild(event,7,2)" onkeyup="return searchResults.NavChild(event,7,2)" class="SRScope" href="../_fast_i_o_8h.html#a2d0e4495eb12504255bbd3f82405b17b" target="_parent">fio_shiftOut1_init(fio_register shift1Register, fio_bit shift1Bit): FastIO.cpp</a> + <a id="Item7_c3" onkeydown="return searchResults.NavChild(event,7,3)" onkeypress="return searchResults.NavChild(event,7,3)" onkeyup="return searchResults.NavChild(event,7,3)" class="SRScope" href="../_fast_i_o_8h.html#ae4b2e099f8ade9ee674d1565669e870a" target="_parent">fio_shiftOut1_init(uint8_t pin): FastIO.cpp</a> + </div> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_68.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_68.html new file mode 100644 index 0000000000000000000000000000000000000000..15aec73d7d36427c5829dac2ece55d083ebbdba0 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_68.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_home"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#aee45ad37f09312f5d9982257e2d37e68" target="_parent">home</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_69.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_69.html new file mode 100644 index 0000000000000000000000000000000000000000..dc3dc287e336a76a64b34239ea505bb75abd46b6 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_69.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_i2cio"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_i2_c_i_o.html#a32eb7832075ad6011d67874405a0d0a6" target="_parent">I2CIO</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_6c.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_6c.html new file mode 100644 index 0000000000000000000000000000000000000000..86b91bcf6d03cabdd8448676c76325c333eea672 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_6c.html @@ -0,0 +1,95 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_lcd"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#a00bb2db1390721abc7b24ac4b8c276c8" target="_parent">LCD</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_lefttoright"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#a238e9f6476dc7df64af04eb6c87f6ac7" target="_parent">leftToRight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal')">LiquidCrystal</a> + <div class="SRChildren"> + <a id="Item2_c0" onkeydown="return searchResults.NavChild(event,2,0)" onkeypress="return searchResults.NavChild(event,2,0)" onkeyup="return searchResults.NavChild(event,2,0)" class="SRScope" href="../class_liquid_crystal.html#a49d2bd8d26031a1c83bcbd73978a1686" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</a> + <a id="Item2_c1" onkeydown="return searchResults.NavChild(event,2,1)" onkeypress="return searchResults.NavChild(event,2,1)" onkeyup="return searchResults.NavChild(event,2,1)" class="SRScope" href="../class_liquid_crystal.html#a30e3d865c4b4a003a36cb45903f93644" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</a> + <a id="Item2_c2" onkeydown="return searchResults.NavChild(event,2,2)" onkeypress="return searchResults.NavChild(event,2,2)" onkeyup="return searchResults.NavChild(event,2,2)" class="SRScope" href="../class_liquid_crystal.html#aff2330186495fde93370d46c0ca2cbf0" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlightPin, t_backlighPol pol)</a> + <a id="Item2_c3" onkeydown="return searchResults.NavChild(event,2,3)" onkeypress="return searchResults.NavChild(event,2,3)" onkeyup="return searchResults.NavChild(event,2,3)" class="SRScope" href="../class_liquid_crystal.html#ae0c3c8f7661634b1400f00a1c9c02c26" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlightPin, t_backlighPol pol)</a> + <a id="Item2_c4" onkeydown="return searchResults.NavChild(event,2,4)" onkeypress="return searchResults.NavChild(event,2,4)" onkeyup="return searchResults.NavChild(event,2,4)" class="SRScope" href="../class_liquid_crystal.html#a0a0a8dfa7a2e775a031fd65f5c6366ec" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</a> + <a id="Item2_c5" onkeydown="return searchResults.NavChild(event,2,5)" onkeypress="return searchResults.NavChild(event,2,5)" onkeyup="return searchResults.NavChild(event,2,5)" class="SRScope" href="../class_liquid_crystal.html#a23124e6dd5ac4a9b6147629b96e91953" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)</a> + <a id="Item2_c6" onkeydown="return searchResults.NavChild(event,2,6)" onkeypress="return searchResults.NavChild(event,2,6)" onkeyup="return searchResults.NavChild(event,2,6)" class="SRScope" href="../class_liquid_crystal.html#a8b90122c67a6d14b967c8a11ba490670" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t backlightPin, t_backlighPol pol)</a> + <a id="Item2_c7" onkeydown="return searchResults.NavChild(event,2,7)" onkeypress="return searchResults.NavChild(event,2,7)" onkeyup="return searchResults.NavChild(event,2,7)" class="SRScope" href="../class_liquid_crystal.html#a52a4de3d866e347208a32dfc9d797729" target="_parent">LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t backlightPin, t_backlighPol pol)</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal_5fi2c')">LiquidCrystal_I2C</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../class_liquid_crystal___i2_c.html#aac537d195557e0b8afac1a71441a484c" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr)</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a9fc9bc519ebbf7503dadc11622e02ed6" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t backlighPin, t_backlighPol pol)</a> + <a id="Item3_c2" onkeydown="return searchResults.NavChild(event,3,2)" onkeypress="return searchResults.NavChild(event,3,2)" onkeyup="return searchResults.NavChild(event,3,2)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a517f8847ebf09f0eacfb9c7232975fce" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs)</a> + <a id="Item3_c3" onkeydown="return searchResults.NavChild(event,3,3)" onkeypress="return searchResults.NavChild(event,3,3)" onkeyup="return searchResults.NavChild(event,3,3)" class="SRScope" href="../class_liquid_crystal___i2_c.html#add1f2da7de4ec9b9cd5c9b5fab712464" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t backlighPin, t_backlighPol pol)</a> + <a id="Item3_c4" onkeydown="return searchResults.NavChild(event,3,4)" onkeypress="return searchResults.NavChild(event,3,4)" onkeyup="return searchResults.NavChild(event,3,4)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a7d9b54d3a91fa0e0e50db27cda6b4654" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</a> + <a id="Item3_c5" onkeydown="return searchResults.NavChild(event,3,5)" onkeypress="return searchResults.NavChild(event,3,5)" onkeyup="return searchResults.NavChild(event,3,5)" class="SRScope" href="../class_liquid_crystal___i2_c.html#ab15622287533de7a47f3e2012ebf18be" target="_parent">LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol)</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fi2c_5fbyvac"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../class_liquid_crystal___i2_c___by_vac.html#a29c027cc8bfa78bb8d9ff3124fe83a31" target="_parent">LiquidCrystal_I2C_ByVac</a> + <span class="SRScope">LiquidCrystal_I2C_ByVac</span> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../class_liquid_crystal___s_r.html#ac3fe0b48f8d4c1c941d82d1333495cfc" target="_parent">LiquidCrystal_SR</a> + <span class="SRScope">LiquidCrystal_SR</span> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr1w"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../class_liquid_crystal___s_r1_w.html#a33bff2c123d3dc42a829b0f8034912c9" target="_parent">LiquidCrystal_SR1W</a> + <span class="SRScope">LiquidCrystal_SR1W</span> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr2w"> + <div class="SREntry"> + <a id="Item7" onkeydown="return searchResults.Nav(event,7)" onkeypress="return searchResults.Nav(event,7)" onkeyup="return searchResults.Nav(event,7)" class="SRSymbol" href="../class_liquid_crystal___s_r2_w.html#af307fdf5c8feb757e965074dcdeb1dd3" target="_parent">LiquidCrystal_SR2W</a> + <span class="SRScope">LiquidCrystal_SR2W</span> + </div> +</div> +<div class="SRResult" id="SR_liquidcrystal_5fsr3w"> + <div class="SREntry"> + <a id="Item8" onkeydown="return searchResults.Nav(event,8)" onkeypress="return searchResults.Nav(event,8)" onkeyup="return searchResults.Nav(event,8)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_liquidcrystal_5fsr3w')">LiquidCrystal_SR3W</a> + <div class="SRChildren"> + <a id="Item8_c0" onkeydown="return searchResults.NavChild(event,8,0)" onkeypress="return searchResults.NavChild(event,8,0)" onkeyup="return searchResults.NavChild(event,8,0)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#ae1396bcd5e9c5b7ed13182c166de776b" target="_parent">LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe)</a> + <a id="Item8_c1" onkeydown="return searchResults.NavChild(event,8,1)" onkeypress="return searchResults.NavChild(event,8,1)" onkeyup="return searchResults.NavChild(event,8,1)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a7b2f382b76bc9d88adb8d681e824b4de" target="_parent">LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t backlighPin, t_backlighPol pol)</a> + <a id="Item8_c2" onkeydown="return searchResults.NavChild(event,8,2)" onkeypress="return searchResults.NavChild(event,8,2)" onkeyup="return searchResults.NavChild(event,8,2)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a4fab8ff2f21bba3efd133cd8c87fffc0" target="_parent">LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)</a> + <a id="Item8_c3" onkeydown="return searchResults.NavChild(event,8,3)" onkeypress="return searchResults.NavChild(event,8,3)" onkeyup="return searchResults.NavChild(event,8,3)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a24f051747dfeda48f7b207c3358c8015" target="_parent">LiquidCrystal_SR3W::LiquidCrystal_SR3W(uint8_t data, uint8_t clk, uint8_t strobe, uint8_t En, uint8_t Rw, uint8_t Rs, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t backlighPin, t_backlighPol pol)</a> + </div> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_6d.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_6d.html new file mode 100644 index 0000000000000000000000000000000000000000..6a0ea3f4d1c2637828e879052c2bd180221284d8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_6d.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_movecursorleft"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4" target="_parent">moveCursorLeft</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_movecursorright"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c" target="_parent">moveCursorRight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_6e.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_6e.html new file mode 100644 index 0000000000000000000000000000000000000000..02acfb2fd72453aa4e0298c6491b8aac1a1c626d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_6e.html @@ -0,0 +1,50 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_noautoscroll"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#a96035dde40efbf73390e00b5beb00231" target="_parent">noAutoscroll</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_nobacklight"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488" target="_parent">noBacklight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_noblink"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5" target="_parent">noBlink</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_nocursor"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9" target="_parent">noCursor</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_nodisplay"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../class_l_c_d.html#af3974da6d988ba2d21c25135ada12108" target="_parent">noDisplay</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_6f.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_6f.html new file mode 100644 index 0000000000000000000000000000000000000000..e5e659c14e8556d12b47a33eff0a0547bea1cb82 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_6f.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_off"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2" target="_parent">off</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_on"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a" target="_parent">on</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_7.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_7.html new file mode 100644 index 0000000000000000000000000000000000000000..385732931d2f2d147790af98defc48415e72c1b9 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_7.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_7.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_7.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_7.js new file mode 100644 index 0000000000000000000000000000000000000000..0ac9232a291a318fa250a30d9a28379772584dce --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['movecursorleft',['moveCursorLeft',['../class_l_c_d.html#aad2abc99d1aca5403873579d9d72c2d4',1,'LCD']]], + ['movecursorright',['moveCursorRight',['../class_l_c_d.html#a09eec0c712e54b066f5894635c1fe75c',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_70.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_70.html new file mode 100644 index 0000000000000000000000000000000000000000..16e8ed026332784808840bed1b644d911dd6a558 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_70.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_pinmode"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887" target="_parent">pinMode</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_portmode"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34" target="_parent">portMode</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_72.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_72.html new file mode 100644 index 0000000000000000000000000000000000000000..31d4b8ee37e19d9c870e22022162adbb5ea1ecc8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_72.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_read"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7" target="_parent">read</a> + <span class="SRScope">I2CIO</span> + </div> +</div> +<div class="SRResult" id="SR_righttoleft"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428" target="_parent">rightToLeft</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_73.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_73.html new file mode 100644 index 0000000000000000000000000000000000000000..332aca57d83fc6773eed99488c1ddecafd4bb10a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_73.html @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_scrolldisplayleft"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7" target="_parent">scrollDisplayLeft</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_scrolldisplayright"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#abfc44b294772f09020bfa32af8a79571" target="_parent">scrollDisplayRight</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR_send"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_send')">send</a> + <div class="SRChildren"> + <a id="Item2_c0" onkeydown="return searchResults.NavChild(event,2,0)" onkeypress="return searchResults.NavChild(event,2,0)" onkeyup="return searchResults.NavChild(event,2,0)" class="SRScope" href="../class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089" target="_parent">LiquidCrystal::send()</a> + <a id="Item2_c1" onkeydown="return searchResults.NavChild(event,2,1)" onkeypress="return searchResults.NavChild(event,2,1)" onkeyup="return searchResults.NavChild(event,2,1)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4" target="_parent">LiquidCrystal_I2C::send()</a> + <a id="Item2_c2" onkeydown="return searchResults.NavChild(event,2,2)" onkeypress="return searchResults.NavChild(event,2,2)" onkeyup="return searchResults.NavChild(event,2,2)" class="SRScope" href="../class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1" target="_parent">LiquidCrystal_I2C_ByVac::send()</a> + <a id="Item2_c3" onkeydown="return searchResults.NavChild(event,2,3)" onkeypress="return searchResults.NavChild(event,2,3)" onkeyup="return searchResults.NavChild(event,2,3)" class="SRScope" href="../class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47" target="_parent">LiquidCrystal_SR::send()</a> + <a id="Item2_c4" onkeydown="return searchResults.NavChild(event,2,4)" onkeypress="return searchResults.NavChild(event,2,4)" onkeyup="return searchResults.NavChild(event,2,4)" class="SRScope" href="../class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1" target="_parent">LiquidCrystal_SR1W::send()</a> + <a id="Item2_c5" onkeydown="return searchResults.NavChild(event,2,5)" onkeypress="return searchResults.NavChild(event,2,5)" onkeyup="return searchResults.NavChild(event,2,5)" class="SRScope" href="../class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d" target="_parent">LiquidCrystal_SR2W::send()</a> + <a id="Item2_c6" onkeydown="return searchResults.NavChild(event,2,6)" onkeypress="return searchResults.NavChild(event,2,6)" onkeyup="return searchResults.NavChild(event,2,6)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56" target="_parent">LiquidCrystal_SR3W::send()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_setbacklight"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_setbacklight')">setBacklight</a> + <div class="SRChildren"> + <a id="Item3_c0" onkeydown="return searchResults.NavChild(event,3,0)" onkeypress="return searchResults.NavChild(event,3,0)" onkeyup="return searchResults.NavChild(event,3,0)" class="SRScope" href="../class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828" target="_parent">LCD::setBacklight()</a> + <a id="Item3_c1" onkeydown="return searchResults.NavChild(event,3,1)" onkeypress="return searchResults.NavChild(event,3,1)" onkeyup="return searchResults.NavChild(event,3,1)" class="SRScope" href="../class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd" target="_parent">LiquidCrystal::setBacklight()</a> + <a id="Item3_c2" onkeydown="return searchResults.NavChild(event,3,2)" onkeypress="return searchResults.NavChild(event,3,2)" onkeyup="return searchResults.NavChild(event,3,2)" class="SRScope" href="../class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8" target="_parent">LiquidCrystal_I2C::setBacklight()</a> + <a id="Item3_c3" onkeydown="return searchResults.NavChild(event,3,3)" onkeypress="return searchResults.NavChild(event,3,3)" onkeyup="return searchResults.NavChild(event,3,3)" class="SRScope" href="../class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7" target="_parent">LiquidCrystal_I2C_ByVac::setBacklight()</a> + <a id="Item3_c4" onkeydown="return searchResults.NavChild(event,3,4)" onkeypress="return searchResults.NavChild(event,3,4)" onkeyup="return searchResults.NavChild(event,3,4)" class="SRScope" href="../class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535" target="_parent">LiquidCrystal_SR::setBacklight()</a> + <a id="Item3_c5" onkeydown="return searchResults.NavChild(event,3,5)" onkeypress="return searchResults.NavChild(event,3,5)" onkeyup="return searchResults.NavChild(event,3,5)" class="SRScope" href="../class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5" target="_parent">LiquidCrystal_SR1W::setBacklight()</a> + <a id="Item3_c6" onkeydown="return searchResults.NavChild(event,3,6)" onkeypress="return searchResults.NavChild(event,3,6)" onkeyup="return searchResults.NavChild(event,3,6)" class="SRScope" href="../class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6" target="_parent">LiquidCrystal_SR2W::setBacklight()</a> + <a id="Item3_c7" onkeydown="return searchResults.NavChild(event,3,7)" onkeypress="return searchResults.NavChild(event,3,7)" onkeyup="return searchResults.NavChild(event,3,7)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295" target="_parent">LiquidCrystal_SR3W::setBacklight()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_setbacklightpin"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_setbacklightpin')">setBacklightPin</a> + <div class="SRChildren"> + <a id="Item4_c0" onkeydown="return searchResults.NavChild(event,4,0)" onkeypress="return searchResults.NavChild(event,4,0)" onkeyup="return searchResults.NavChild(event,4,0)" class="SRScope" href="../class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc" target="_parent">LCD::setBacklightPin()</a> + <a id="Item4_c1" onkeydown="return searchResults.NavChild(event,4,1)" onkeypress="return searchResults.NavChild(event,4,1)" onkeyup="return searchResults.NavChild(event,4,1)" class="SRScope" href="../class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9" target="_parent">LiquidCrystal::setBacklightPin()</a> + <a id="Item4_c2" onkeydown="return searchResults.NavChild(event,4,2)" onkeypress="return searchResults.NavChild(event,4,2)" onkeyup="return searchResults.NavChild(event,4,2)" class="SRScope" href="../class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b" target="_parent">LiquidCrystal_I2C::setBacklightPin()</a> + <a id="Item4_c3" onkeydown="return searchResults.NavChild(event,4,3)" onkeypress="return searchResults.NavChild(event,4,3)" onkeyup="return searchResults.NavChild(event,4,3)" class="SRScope" href="../class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d" target="_parent">LiquidCrystal_SR::setBacklightPin()</a> + <a id="Item4_c4" onkeydown="return searchResults.NavChild(event,4,4)" onkeypress="return searchResults.NavChild(event,4,4)" onkeyup="return searchResults.NavChild(event,4,4)" class="SRScope" href="../class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477" target="_parent">LiquidCrystal_SR3W::setBacklightPin()</a> + </div> + </div> +</div> +<div class="SRResult" id="SR_setcontrast"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4" target="_parent">setContrast</a> + <span class="SRScope">LiquidCrystal_I2C_ByVac</span> + </div> +</div> +<div class="SRResult" id="SR_setcursor"> + <div class="SREntry"> + <a id="Item6" onkeydown="return searchResults.Nav(event,6)" onkeypress="return searchResults.Nav(event,6)" onkeyup="return searchResults.Nav(event,6)" class="SRSymbol" href="../class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d" target="_parent">setCursor</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_77.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_77.html new file mode 100644 index 0000000000000000000000000000000000000000..d81a974648f5658ca2f6d5a57ef3a9e335d02c1a --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_77.html @@ -0,0 +1,35 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_waitusec"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_l_c_d_8h.html#a6eac41e4be58d7736ac0c19de225c0dc" target="_parent">waitUsec</a> + <span class="SRScope">LCD.h</span> + </div> +</div> +<div class="SRResult" id="SR_write"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="javascript:searchResults.Toggle('SR_write')">write</a> + <div class="SRChildren"> + <a id="Item1_c0" onkeydown="return searchResults.NavChild(event,1,0)" onkeypress="return searchResults.NavChild(event,1,0)" onkeyup="return searchResults.NavChild(event,1,0)" class="SRScope" href="../class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd" target="_parent">I2CIO::write()</a> + <a id="Item1_c1" onkeydown="return searchResults.NavChild(event,1,1)" onkeypress="return searchResults.NavChild(event,1,1)" onkeyup="return searchResults.NavChild(event,1,1)" class="SRScope" href="../class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3" target="_parent">LCD::write()</a> + </div> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_8.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_8.html new file mode 100644 index 0000000000000000000000000000000000000000..088e437fbdf852818b2b798cc36f75e7133ca8bd --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_8.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_8.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_8.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_8.js new file mode 100644 index 0000000000000000000000000000000000000000..646b05cf42f7724e92cdd833d6988d40d9f55398 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_8.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['noautoscroll',['noAutoscroll',['../class_l_c_d.html#a96035dde40efbf73390e00b5beb00231',1,'LCD']]], + ['nobacklight',['noBacklight',['../class_l_c_d.html#a2a331b4e142734411b2f1cfaffe7a488',1,'LCD']]], + ['noblink',['noBlink',['../class_l_c_d.html#a3b755c4b397b5985752be8c30ee1a9b5',1,'LCD']]], + ['nocursor',['noCursor',['../class_l_c_d.html#aec8ffaa1e69c7a6e13ac0cfbc29151d9',1,'LCD']]], + ['nodisplay',['noDisplay',['../class_l_c_d.html#af3974da6d988ba2d21c25135ada12108',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_9.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_9.html new file mode 100644 index 0000000000000000000000000000000000000000..61de44ad4eaec346a01a98569c923c919d012f6e --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_9.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_9.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_9.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_9.js new file mode 100644 index 0000000000000000000000000000000000000000..c9977213f712f8216979172849de078f61144495 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['off',['off',['../class_l_c_d.html#a191639be183be1476c9bfe6d455d23b2',1,'LCD']]], + ['on',['on',['../class_l_c_d.html#a718da3a638deb59bd1c7a5222a52d98a',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_a.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_a.html new file mode 100644 index 0000000000000000000000000000000000000000..a46b662ed73eab7da2ca8705bef622a836a80f54 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_a.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_a.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_a.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_a.js new file mode 100644 index 0000000000000000000000000000000000000000..5ecfc119e5100c9832767565f82af14412318af6 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pinmode',['pinMode',['../class_i2_c_i_o.html#a53b94274eb6bb68564cf5243323db887',1,'I2CIO::pinMode()'],['../class_s_i2_c_i_o.html#a4ef4fb77ddd3d248be5e0898e33430a3',1,'SI2CIO::pinMode()']]], + ['portmode',['portMode',['../class_i2_c_i_o.html#a0341888753bc54c4384f5593a870fb34',1,'I2CIO::portMode()'],['../class_s_i2_c_i_o.html#a8e78ee0ee2d1bb12136b5c5a3487512b',1,'SI2CIO::portMode()']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_b.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_b.html new file mode 100644 index 0000000000000000000000000000000000000000..3b49416d5163eca2e5088a9694670f01e1ca90be --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_b.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_b.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_b.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_b.js new file mode 100644 index 0000000000000000000000000000000000000000..d953d6db5ecb934edf716a15730cd12434d870bc --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['read',['read',['../class_i2_c_i_o.html#a7a3db7bfc15ede0ae9e8c8bd44290ef7',1,'I2CIO::read()'],['../class_s_i2_c_i_o.html#a32cb72361397c1051ee650dbb2190060',1,'SI2CIO::read()']]], + ['righttoleft',['rightToLeft',['../class_l_c_d.html#ac014830eadc26bfd86308ea8734f4428',1,'LCD']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_c.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_c.html new file mode 100644 index 0000000000000000000000000000000000000000..57c64555ce51e0e993adb75a3666ede7c4bffb51 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_c.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_c.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_c.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_c.js new file mode 100644 index 0000000000000000000000000000000000000000..9cf2affd19b5cf6aa92b3ee5d39f1e66f1196117 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['scrolldisplayleft',['scrollDisplayLeft',['../class_l_c_d.html#a6f3a503055b3b8dcf0f61b2633c584f7',1,'LCD']]], + ['scrolldisplayright',['scrollDisplayRight',['../class_l_c_d.html#abfc44b294772f09020bfa32af8a79571',1,'LCD']]], + ['send',['send',['../class_liquid_crystal.html#a56142f8b3753bedd133e4139e5eb5089',1,'LiquidCrystal::send()'],['../class_liquid_crystal___i2_c.html#a8bf1fab7efe13e8b17b96c42d1f810b4',1,'LiquidCrystal_I2C::send()'],['../class_liquid_crystal___i2_c___by_vac.html#a9e64cc68ec5df1a0fa421a242239b1b1',1,'LiquidCrystal_I2C_ByVac::send()'],['../class_liquid_crystal___s_i2_c.html#aa882cbbbb14985cab8432686723beaf9',1,'LiquidCrystal_SI2C::send()'],['../class_liquid_crystal___s_r.html#a03821351a32db07cb7e42c8c11ce8d47',1,'LiquidCrystal_SR::send()'],['../class_liquid_crystal___s_r1_w.html#a7fc0b03977907b4d526a6b9e49a331b1',1,'LiquidCrystal_SR1W::send()'],['../class_liquid_crystal___s_r2_w.html#a65dc6f261c319be8e56f3c1f6a5c877d',1,'LiquidCrystal_SR2W::send()'],['../class_liquid_crystal___s_r3_w.html#ade34af5b7fe795482f1848c2176d6e56',1,'LiquidCrystal_SR3W::send()']]], + ['setbacklight',['setBacklight',['../class_l_c_d.html#a3305570d7b37eb93f2cf840263c15828',1,'LCD::setBacklight()'],['../class_liquid_crystal.html#aa2b898366e1c656ac313b9007c98cebd',1,'LiquidCrystal::setBacklight()'],['../class_liquid_crystal___i2_c.html#af11b8fa0082616e2b6e6e4238589d8a8',1,'LiquidCrystal_I2C::setBacklight()'],['../class_liquid_crystal___i2_c___by_vac.html#a9b16e6ce123e2ebe3a3e33b2306e66a7',1,'LiquidCrystal_I2C_ByVac::setBacklight()'],['../class_liquid_crystal___s_i2_c.html#afa64775ef5faa3646385506b4adf7f2d',1,'LiquidCrystal_SI2C::setBacklight()'],['../class_liquid_crystal___s_r.html#ad9f3e3f36257984c23fb508973e14535',1,'LiquidCrystal_SR::setBacklight()'],['../class_liquid_crystal___s_r1_w.html#a82d844569eb258559afb40ab354eb0a5',1,'LiquidCrystal_SR1W::setBacklight()'],['../class_liquid_crystal___s_r2_w.html#a2158db27287c1564a03e7a1472beb3b6',1,'LiquidCrystal_SR2W::setBacklight()'],['../class_liquid_crystal___s_r3_w.html#a6d0fc7907ef9fd87c408a21b9bd49295',1,'LiquidCrystal_SR3W::setBacklight()']]], + ['setbacklightpin',['setBacklightPin',['../class_l_c_d.html#a53f4ee9b39d9ab3d7ae4d9f8dedca3bc',1,'LCD::setBacklightPin()'],['../class_liquid_crystal.html#a63740dc1198d8169a39d9c6daff0efc9',1,'LiquidCrystal::setBacklightPin()'],['../class_liquid_crystal___i2_c.html#a2eaf86f62d1f169b3763b03fbf88f70b',1,'LiquidCrystal_I2C::setBacklightPin()'],['../class_liquid_crystal___s_i2_c.html#a80adc9d27907d9145ad208eba4ae2ffa',1,'LiquidCrystal_SI2C::setBacklightPin()'],['../class_liquid_crystal___s_r.html#a5bfc0dcc1f042bcb59992493a3a7231d',1,'LiquidCrystal_SR::setBacklightPin()'],['../class_liquid_crystal___s_r3_w.html#a894d0ea8ea61c1d15acd8a26d417e477',1,'LiquidCrystal_SR3W::setBacklightPin()']]], + ['setcontrast',['setContrast',['../class_liquid_crystal___i2_c___by_vac.html#a53c79a20e8d21d2c3bc9e6d0dfc79cb4',1,'LiquidCrystal_I2C_ByVac']]], + ['setcursor',['setCursor',['../class_l_c_d.html#a48220450fd152b25994eb7d0ba340e8d',1,'LCD']]], + ['si2cio',['SI2CIO',['../class_s_i2_c_i_o.html#ae27c1861e885c6ade3f3923658957edf',1,'SI2CIO']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_d.html b/libraries/LiquidCrystal/utility/docs/html/search/functions_d.html new file mode 100644 index 0000000000000000000000000000000000000000..58b3d31f0b1a77ea99986c285c7577e1ccf1054d --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_d.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_d.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/functions_d.js b/libraries/LiquidCrystal/utility/docs/html/search/functions_d.js new file mode 100644 index 0000000000000000000000000000000000000000..c6563f1d880294e1133e6a39fd86780edcb0bbdf --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/functions_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['write',['write',['../class_i2_c_i_o.html#ae2063569c927d0008e2593d14504fdcd',1,'I2CIO::write()'],['../class_l_c_d.html#a2d89cc2e62f72afb5f15a7fd812900e3',1,'LCD::write()'],['../class_s_i2_c_i_o.html#a47c3ac3198cddcf9e6da1ccacd9db5d9',1,'SI2CIO::write()']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/mag_sel.png b/libraries/LiquidCrystal/utility/docs/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/search/mag_sel.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/search/nomatches.html b/libraries/LiquidCrystal/utility/docs/html/search/nomatches.html new file mode 100644 index 0000000000000000000000000000000000000000..b1ded27e9ad6af3a2ac11e6b21ce159dcaf87e0c --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/nomatches.html @@ -0,0 +1,12 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="NoMatches">No Matches</div> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/pages_0.html b/libraries/LiquidCrystal/utility/docs/html/search/pages_0.html new file mode 100644 index 0000000000000000000000000000000000000000..75d203dc81077698a4b06074982d2889043933f9 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/pages_0.html @@ -0,0 +1,26 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta name="generator" content="Doxygen 1.8.10"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_0.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/pages_0.js b/libraries/LiquidCrystal/utility/docs/html/search/pages_0.js new file mode 100644 index 0000000000000000000000000000000000000000..fcdd9b5db9a8b723177ad3779356f04ca972dbb2 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md___users_fmalpartida__documents_development_mercurial_repos__s_w__newliquid_crystal__r_e_a_d_m_e.html',1,'']]] +]; diff --git a/libraries/LiquidCrystal/utility/docs/html/search/search.css b/libraries/LiquidCrystal/utility/docs/html/search/search.css new file mode 100644 index 0000000000000000000000000000000000000000..4d7612ff63e3b5449072d07c3ffc648c6ad0bb11 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/libraries/LiquidCrystal/utility/docs/html/search/search.js b/libraries/LiquidCrystal/utility/docs/html/search/search.js new file mode 100644 index 0000000000000000000000000000000000000000..dedce3bf093890b8693ec9b110414855542fb79b --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/search.js @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i<search.length;i++) + { + var c = search.charAt(i); + var cn = c.charCodeAt(0); + if (c.match(/[a-z0-9\u0080-\uFFFF]/)) + { + result+=c; + } + else if (cn<16) + { + result+="_0"+cn.toString(16); + } + else + { + result+="_"+cn.toString(16); + } + } + return result; +} + +function getXPos(item) +{ + var x = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; +} + +function getYPos(item) +{ + var y = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; +} + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, inFrame, label) +{ + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.insideFrame = inFrame; + this.searchLabel = label; + + // ----------- DOM Elements + + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); } + + this.DOMSearchSelect = function() + { return document.getElementById("MSearchSelect"); } + + this.DOMSearchSelectWindow = function() + { return document.getElementById("MSearchSelectWindow"); } + + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); } + + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); } + + this.DOMSearchClose = function() + { return document.getElementById("MSearchClose"); } + + this.DOMSearchBox = function() + { return document.getElementById("MSearchBox"); } + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() + { + var searchSelectWindow = this.DOMSearchSelectWindow(); + var searchField = this.DOMSearchSelect(); + + if (this.insideFrame) + { + var left = getXPos(searchField); + var top = getYPos(searchField); + left += searchField.offsetWidth + 6; + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + left -= searchSelectWindow.offsetWidth; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + else + { + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + + // stop selection hide timer + if (this.hideTimeout) + { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() + { + this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) + { + if (this.keyTimeout) // kill running timer + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) + { + if (e.shiftKey==1) + { + this.OnSearchSelectShow(); + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + child.focus(); + return; + } + } + return; + } + else if (window.frames.MSearchResults.searchResults) + { + var elem = window.frames.MSearchResults.searchResults.NavNext(0); + if (elem) elem.focus(); + } + } + else if (e.keyCode==27) // Escape out of the search field + { + this.DOMSearchField().blur(); + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + this.Activate(false); + return; + } + + // strip whitespaces + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) // search value has changed + { + if (searchValue != "") // non-empty search + { + // set timer for search update + this.keyTimeout = setTimeout(this.name + '.Search()', + this.keyTimeoutLength); + } + else // empty search field + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + } + } + } + + this.SelectItemCount = function(id) + { + var count=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + count++; + } + } + return count; + } + + this.SelectItemSet = function(id) + { + var i,j=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + var node = child.firstChild; + if (j==id) + { + node.innerHTML='•'; + } + else + { + node.innerHTML=' '; + } + j++; + } + } + } + + // Called when an search filter selection is made. + // set item with index id as the active item + this.OnSelectItem = function(id) + { + this.searchIndex = id; + this.SelectItemSet(id); + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) // something was found -> do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down + { + this.searchIndex++; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==38 && this.searchIndex>0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of <Search()>. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e<searchData.length; e++) + { + var id = searchData[e][0]; + var srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + var srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + var srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+e); + setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = searchData[e][1][0]; + srEntry.appendChild(srLink); + if (searchData[e][1].length==2) // single result + { + srLink.setAttribute('href',searchData[e][1][1][0]); + if (searchData[e][1][1][1]) + { + srLink.setAttribute('target','_parent'); + } + var srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = searchData[e][1][1][2]; + srEntry.appendChild(srScope); + } + else // multiple results + { + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + var srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (var c=0; c<searchData[e][1].length-1; c++) + { + var srChild = document.createElement('a'); + srChild.setAttribute('id','Item'+e+'_c'+c); + setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); + setClassAttr(srChild,'SRScope'); + srChild.setAttribute('href',searchData[e][1][c+1][0]); + if (searchData[e][1][c+1][1]) + { + srChild.setAttribute('target','_parent'); + } + srChild.innerHTML = searchData[e][1][c+1][2]; + srChildren.appendChild(srChild); + } + srEntry.appendChild(srChildren); + } + srResult.appendChild(srEntry); + results.appendChild(srResult); + } +} + +function init_search() +{ + var results = document.getElementById("MSearchSelectWindow"); + for (var key in indexSectionLabels) + { + var link = document.createElement('a'); + link.setAttribute('class','SelectItem'); + link.setAttribute('onclick','searchBox.OnSelectItem('+key+')'); + link.href='javascript:void(0)'; + link.innerHTML='<span class="SelectionMark"> </span>'+indexSectionLabels[key]; + results.appendChild(link); + } + searchBox.OnSelectItem(0); +} + diff --git a/libraries/LiquidCrystal/utility/docs/html/search/search_l.png b/libraries/LiquidCrystal/utility/docs/html/search/search_l.png new file mode 100644 index 0000000000000000000000000000000000000000..c872f4da4a01d0754f923e6c94fd8159c0621bd1 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/search/search_l.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/search/search_m.png b/libraries/LiquidCrystal/utility/docs/html/search/search_m.png new file mode 100644 index 0000000000000000000000000000000000000000..b429a16ba641960da1e52e5da85dc80fd82635c8 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/search/search_m.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/search/search_r.png b/libraries/LiquidCrystal/utility/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/search/search_r.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/search/searchdata.js b/libraries/LiquidCrystal/utility/docs/html/search/searchdata.js new file mode 100644 index 0000000000000000000000000000000000000000..3b6bd5e7b17e3e57f1fdc7d669df98af78c813e8 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/searchdata.js @@ -0,0 +1,24 @@ +var indexSectionsWithContent = +{ + 0: "abcdhilmnoprsw", + 1: "ils", + 2: "abcdhilmnoprsw", + 3: "r" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "functions", + 3: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Functions", + 3: "Pages" +}; + diff --git a/libraries/LiquidCrystal/utility/docs/html/search/typedefs_66.html b/libraries/LiquidCrystal/utility/docs/html/search/typedefs_66.html new file mode 100644 index 0000000000000000000000000000000000000000..7ad240b37f27173b1aba61dbd5650bf373ce32a1 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/typedefs_66.html @@ -0,0 +1,32 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR_fio_5fbit"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../_fast_i_o_8h.html#a0a595a88b29bcfd1540b6fac75787937" target="_parent">fio_bit</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRResult" id="SR_fio_5fregister"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../_fast_i_o_8h.html#ae44ea3af54ef26db03f1ae2ea62f9c1f" target="_parent">fio_register</a> + <span class="SRScope">FastIO.h</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/search/variables_5f.html b/libraries/LiquidCrystal/utility/docs/html/search/variables_5f.html new file mode 100644 index 0000000000000000000000000000000000000000..0bac2f1fdb45225fd9fe22476577dbaab8880a12 --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/search/variables_5f.html @@ -0,0 +1,56 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div class="SRResult" id="SR__5fcols"> + <div class="SREntry"> + <a id="Item0" onkeydown="return searchResults.Nav(event,0)" onkeypress="return searchResults.Nav(event,0)" onkeyup="return searchResults.Nav(event,0)" class="SRSymbol" href="../class_l_c_d.html#a88b16ea0e5c7d1cabc5007d48bcbd2b0" target="_parent">_cols</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fdisplaycontrol"> + <div class="SREntry"> + <a id="Item1" onkeydown="return searchResults.Nav(event,1)" onkeypress="return searchResults.Nav(event,1)" onkeyup="return searchResults.Nav(event,1)" class="SRSymbol" href="../class_l_c_d.html#ae47a0e2eff74431a39774b788d5761f4" target="_parent">_displaycontrol</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fdisplayfunction"> + <div class="SREntry"> + <a id="Item2" onkeydown="return searchResults.Nav(event,2)" onkeypress="return searchResults.Nav(event,2)" onkeyup="return searchResults.Nav(event,2)" class="SRSymbol" href="../class_l_c_d.html#aef093ba3f8e1016267b40ac235a0fa0f" target="_parent">_displayfunction</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fdisplaymode"> + <div class="SREntry"> + <a id="Item3" onkeydown="return searchResults.Nav(event,3)" onkeypress="return searchResults.Nav(event,3)" onkeyup="return searchResults.Nav(event,3)" class="SRSymbol" href="../class_l_c_d.html#a726b9a68d091dd8683a18e83f3a8fd3c" target="_parent">_displaymode</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fnumlines"> + <div class="SREntry"> + <a id="Item4" onkeydown="return searchResults.Nav(event,4)" onkeypress="return searchResults.Nav(event,4)" onkeyup="return searchResults.Nav(event,4)" class="SRSymbol" href="../class_l_c_d.html#ac1374911fb145fea430c21092ada0c06" target="_parent">_numlines</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRResult" id="SR__5fpolarity"> + <div class="SREntry"> + <a id="Item5" onkeydown="return searchResults.Nav(event,5)" onkeypress="return searchResults.Nav(event,5)" onkeyup="return searchResults.Nav(event,5)" class="SRSymbol" href="../class_l_c_d.html#a990338759d2abe10b0fb1743b7789566" target="_parent">_polarity</a> + <span class="SRScope">LCD</span> + </div> +</div> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/libraries/LiquidCrystal/utility/docs/html/splitbar.png b/libraries/LiquidCrystal/utility/docs/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/splitbar.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/sync_off.png b/libraries/LiquidCrystal/utility/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/sync_off.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/sync_on.png b/libraries/LiquidCrystal/utility/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/sync_on.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/tab_a.png b/libraries/LiquidCrystal/utility/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/tab_a.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/tab_b.png b/libraries/LiquidCrystal/utility/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/tab_b.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/tab_h.png b/libraries/LiquidCrystal/utility/docs/html/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5cb705488e60fcf30f56fcc951dee74f3b095b Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/tab_h.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/tab_s.png b/libraries/LiquidCrystal/utility/docs/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 Binary files /dev/null and b/libraries/LiquidCrystal/utility/docs/html/tab_s.png differ diff --git a/libraries/LiquidCrystal/utility/docs/html/tabs.css b/libraries/LiquidCrystal/utility/docs/html/tabs.css new file mode 100644 index 0000000000000000000000000000000000000000..9cf578f23a154ff026365d61ea59013ad431466b --- /dev/null +++ b/libraries/LiquidCrystal/utility/docs/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/libraries/MPU6050/MPU6050.cpp b/libraries/MPU6050/MPU6050.cpp new file mode 100644 index 0000000000000000000000000000000000000000..72d8d866ff403f865950e65b3e75800f15c2c2d0 --- /dev/null +++ b/libraries/MPU6050/MPU6050.cpp @@ -0,0 +1,3213 @@ +// I2Cdev library collection - MPU6050 I2C device class +// Based on InvenSense MPU-6050 register map document rev. 2.0, 5/19/2011 (RM-MPU-6000A-00) +// 8/24/2011 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// ... - ongoing debug release + +// NOTE: THIS IS ONLY A PARIAL RELEASE. THIS DEVICE CLASS IS CURRENTLY UNDERGOING ACTIVE +// DEVELOPMENT AND IS STILL MISSING SOME IMPORTANT FEATURES. PLEASE KEEP THIS IN MIND IF +// YOU DECIDE TO USE THIS PARTICULAR CODE FOR ANYTHING. + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +#include "MPU6050.h" + +/** Default constructor, uses default I2C address. + * @see MPU6050_DEFAULT_ADDRESS + */ +MPU6050::MPU6050() { + devAddr = MPU6050_DEFAULT_ADDRESS; +} + +/** Specific address constructor. + * @param address I2C address + * @see MPU6050_DEFAULT_ADDRESS + * @see MPU6050_ADDRESS_AD0_LOW + * @see MPU6050_ADDRESS_AD0_HIGH + */ +MPU6050::MPU6050(uint8_t address) { + devAddr = address; +} + +/** Power on and prepare for general usage. + * This will activate the device and take it out of sleep mode (which must be done + * after start-up). This function also sets both the accelerometer and the gyroscope + * to their most sensitive settings, namely +/- 2g and +/- 250 degrees/sec, and sets + * the clock source to use the X Gyro for reference, which is slightly better than + * the default internal clock source. + */ +void MPU6050::initialize() { + setClockSource(MPU6050_CLOCK_PLL_XGYRO); + setFullScaleGyroRange(MPU6050_GYRO_FS_250); + setFullScaleAccelRange(MPU6050_ACCEL_FS_2); + setSleepEnabled(false); // thanks to Jack Elston for pointing this one out! +} + +/** Verify the I2C connection. + * Make sure the device is connected and responds as expected. + * @return True if connection is valid, false otherwise + */ +bool MPU6050::testConnection() { + return getDeviceID() == 0x34; +} + +// AUX_VDDIO register (InvenSense demo code calls this RA_*G_OFFS_TC) + +/** Get the auxiliary I2C supply voltage level. + * When set to 1, the auxiliary I2C bus high logic level is VDD. When cleared to + * 0, the auxiliary I2C bus high logic level is VLOGIC. This does not apply to + * the MPU-6000, which does not have a VLOGIC pin. + * @return I2C supply voltage level (0=VLOGIC, 1=VDD) + */ +uint8_t MPU6050::getAuxVDDIOLevel() { + I2Cdev::readBit(devAddr, MPU6050_RA_YG_OFFS_TC, MPU6050_TC_PWR_MODE_BIT, buffer); + return buffer[0]; +} +/** Set the auxiliary I2C supply voltage level. + * When set to 1, the auxiliary I2C bus high logic level is VDD. When cleared to + * 0, the auxiliary I2C bus high logic level is VLOGIC. This does not apply to + * the MPU-6000, which does not have a VLOGIC pin. + * @param level I2C supply voltage level (0=VLOGIC, 1=VDD) + */ +void MPU6050::setAuxVDDIOLevel(uint8_t level) { + I2Cdev::writeBit(devAddr, MPU6050_RA_YG_OFFS_TC, MPU6050_TC_PWR_MODE_BIT, level); +} + +// SMPLRT_DIV register + +/** Get gyroscope output rate divider. + * The sensor register output, FIFO output, DMP sampling, Motion detection, Zero + * Motion detection, and Free Fall detection are all based on the Sample Rate. + * The Sample Rate is generated by dividing the gyroscope output rate by + * SMPLRT_DIV: + * + * Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV) + * + * where Gyroscope Output Rate = 8kHz when the DLPF is disabled (DLPF_CFG = 0 or + * 7), and 1kHz when the DLPF is enabled (see Register 26). + * + * Note: The accelerometer output rate is 1kHz. This means that for a Sample + * Rate greater than 1kHz, the same accelerometer sample may be output to the + * FIFO, DMP, and sensor registers more than once. + * + * For a diagram of the gyroscope and accelerometer signal paths, see Section 8 + * of the MPU-6000/MPU-6050 Product Specification document. + * + * @return Current sample rate + * @see MPU6050_RA_SMPLRT_DIV + */ +uint8_t MPU6050::getRate() { + I2Cdev::readByte(devAddr, MPU6050_RA_SMPLRT_DIV, buffer); + return buffer[0]; +} +/** Set gyroscope sample rate divider. + * @param rate New sample rate divider + * @see getRate() + * @see MPU6050_RA_SMPLRT_DIV + */ +void MPU6050::setRate(uint8_t rate) { + I2Cdev::writeByte(devAddr, MPU6050_RA_SMPLRT_DIV, rate); +} + +// CONFIG register + +/** Get external FSYNC configuration. + * Configures the external Frame Synchronization (FSYNC) pin sampling. An + * external signal connected to the FSYNC pin can be sampled by configuring + * EXT_SYNC_SET. Signal changes to the FSYNC pin are latched so that short + * strobes may be captured. The latched FSYNC signal will be sampled at the + * Sampling Rate, as defined in register 25. After sampling, the latch will + * reset to the current FSYNC signal state. + * + * The sampled value will be reported in place of the least significant bit in + * a sensor data register determined by the value of EXT_SYNC_SET according to + * the following table. + * + * <pre> + * EXT_SYNC_SET | FSYNC Bit Location + * -------------+------------------- + * 0 | Input disabled + * 1 | TEMP_OUT_L[0] + * 2 | GYRO_XOUT_L[0] + * 3 | GYRO_YOUT_L[0] + * 4 | GYRO_ZOUT_L[0] + * 5 | ACCEL_XOUT_L[0] + * 6 | ACCEL_YOUT_L[0] + * 7 | ACCEL_ZOUT_L[0] + * </pre> + * + * @return FSYNC configuration value + */ +uint8_t MPU6050::getExternalFrameSync() { + I2Cdev::readBits(devAddr, MPU6050_RA_CONFIG, MPU6050_CFG_EXT_SYNC_SET_BIT, MPU6050_CFG_EXT_SYNC_SET_LENGTH, buffer); + return buffer[0]; +} +/** Set external FSYNC configuration. + * @see getExternalFrameSync() + * @see MPU6050_RA_CONFIG + * @param sync New FSYNC configuration value + */ +void MPU6050::setExternalFrameSync(uint8_t sync) { + I2Cdev::writeBits(devAddr, MPU6050_RA_CONFIG, MPU6050_CFG_EXT_SYNC_SET_BIT, MPU6050_CFG_EXT_SYNC_SET_LENGTH, sync); +} +/** Get digital low-pass filter configuration. + * The DLPF_CFG parameter sets the digital low pass filter configuration. It + * also determines the internal sampling rate used by the device as shown in + * the table below. + * + * Note: The accelerometer output rate is 1kHz. This means that for a Sample + * Rate greater than 1kHz, the same accelerometer sample may be output to the + * FIFO, DMP, and sensor registers more than once. + * + * <pre> + * | ACCELEROMETER | GYROSCOPE + * DLPF_CFG | Bandwidth | Delay | Bandwidth | Delay | Sample Rate + * ---------+-----------+--------+-----------+--------+------------- + * 0 | 260Hz | 0ms | 256Hz | 0.98ms | 8kHz + * 1 | 184Hz | 2.0ms | 188Hz | 1.9ms | 1kHz + * 2 | 94Hz | 3.0ms | 98Hz | 2.8ms | 1kHz + * 3 | 44Hz | 4.9ms | 42Hz | 4.8ms | 1kHz + * 4 | 21Hz | 8.5ms | 20Hz | 8.3ms | 1kHz + * 5 | 10Hz | 13.8ms | 10Hz | 13.4ms | 1kHz + * 6 | 5Hz | 19.0ms | 5Hz | 18.6ms | 1kHz + * 7 | -- Reserved -- | -- Reserved -- | Reserved + * </pre> + * + * @return DLFP configuration + * @see MPU6050_RA_CONFIG + * @see MPU6050_CFG_DLPF_CFG_BIT + * @see MPU6050_CFG_DLPF_CFG_LENGTH + */ +uint8_t MPU6050::getDLPFMode() { + I2Cdev::readBits(devAddr, MPU6050_RA_CONFIG, MPU6050_CFG_DLPF_CFG_BIT, MPU6050_CFG_DLPF_CFG_LENGTH, buffer); + return buffer[0]; +} +/** Set digital low-pass filter configuration. + * @param mode New DLFP configuration setting + * @see getDLPFBandwidth() + * @see MPU6050_DLPF_BW_256 + * @see MPU6050_RA_CONFIG + * @see MPU6050_CFG_DLPF_CFG_BIT + * @see MPU6050_CFG_DLPF_CFG_LENGTH + */ +void MPU6050::setDLPFMode(uint8_t mode) { + I2Cdev::writeBits(devAddr, MPU6050_RA_CONFIG, MPU6050_CFG_DLPF_CFG_BIT, MPU6050_CFG_DLPF_CFG_LENGTH, mode); +} + +// GYRO_CONFIG register + +/** Get full-scale gyroscope range. + * The FS_SEL parameter allows setting the full-scale range of the gyro sensors, + * as described in the table below. + * + * <pre> + * 0 = +/- 250 degrees/sec + * 1 = +/- 500 degrees/sec + * 2 = +/- 1000 degrees/sec + * 3 = +/- 2000 degrees/sec + * </pre> + * + * @return Current full-scale gyroscope range setting + * @see MPU6050_GYRO_FS_250 + * @see MPU6050_RA_GYRO_CONFIG + * @see MPU6050_GCONFIG_FS_SEL_BIT + * @see MPU6050_GCONFIG_FS_SEL_LENGTH + */ +uint8_t MPU6050::getFullScaleGyroRange() { + I2Cdev::readBits(devAddr, MPU6050_RA_GYRO_CONFIG, MPU6050_GCONFIG_FS_SEL_BIT, MPU6050_GCONFIG_FS_SEL_LENGTH, buffer); + return buffer[0]; +} +/** Set full-scale gyroscope range. + * @param range New full-scale gyroscope range value + * @see getFullScaleRange() + * @see MPU6050_GYRO_FS_250 + * @see MPU6050_RA_GYRO_CONFIG + * @see MPU6050_GCONFIG_FS_SEL_BIT + * @see MPU6050_GCONFIG_FS_SEL_LENGTH + */ +void MPU6050::setFullScaleGyroRange(uint8_t range) { + I2Cdev::writeBits(devAddr, MPU6050_RA_GYRO_CONFIG, MPU6050_GCONFIG_FS_SEL_BIT, MPU6050_GCONFIG_FS_SEL_LENGTH, range); +} + +// SELF TEST FACTORY TRIM VALUES + +/** Get self-test factory trim value for accelerometer X axis. + * @return factory trim value + * @see MPU6050_RA_SELF_TEST_X + */ +uint8_t MPU6050::getAccelXSelfTestFactoryTrim() { + I2Cdev::readByte(devAddr, MPU6050_RA_SELF_TEST_X, &buffer[0]); + I2Cdev::readByte(devAddr, MPU6050_RA_SELF_TEST_A, &buffer[1]); + return (buffer[0]>>3) | ((buffer[1]>>4) & 0x03); +} + +/** Get self-test factory trim value for accelerometer Y axis. + * @return factory trim value + * @see MPU6050_RA_SELF_TEST_Y + */ +uint8_t MPU6050::getAccelYSelfTestFactoryTrim() { + I2Cdev::readByte(devAddr, MPU6050_RA_SELF_TEST_Y, &buffer[0]); + I2Cdev::readByte(devAddr, MPU6050_RA_SELF_TEST_A, &buffer[1]); + return (buffer[0]>>3) | ((buffer[1]>>2) & 0x03); +} + +/** Get self-test factory trim value for accelerometer Z axis. + * @return factory trim value + * @see MPU6050_RA_SELF_TEST_Z + */ +uint8_t MPU6050::getAccelZSelfTestFactoryTrim() { + I2Cdev::readBytes(devAddr, MPU6050_RA_SELF_TEST_Z, 2, buffer); + return (buffer[0]>>3) | (buffer[1] & 0x03); +} + +/** Get self-test factory trim value for gyro X axis. + * @return factory trim value + * @see MPU6050_RA_SELF_TEST_X + */ +uint8_t MPU6050::getGyroXSelfTestFactoryTrim() { + I2Cdev::readByte(devAddr, MPU6050_RA_SELF_TEST_X, buffer); + return (buffer[0] & 0x1F); +} + +/** Get self-test factory trim value for gyro Y axis. + * @return factory trim value + * @see MPU6050_RA_SELF_TEST_Y + */ +uint8_t MPU6050::getGyroYSelfTestFactoryTrim() { + I2Cdev::readByte(devAddr, MPU6050_RA_SELF_TEST_Y, buffer); + return (buffer[0] & 0x1F); +} + +/** Get self-test factory trim value for gyro Z axis. + * @return factory trim value + * @see MPU6050_RA_SELF_TEST_Z + */ +uint8_t MPU6050::getGyroZSelfTestFactoryTrim() { + I2Cdev::readByte(devAddr, MPU6050_RA_SELF_TEST_Z, buffer); + return (buffer[0] & 0x1F); +} + +// ACCEL_CONFIG register + +/** Get self-test enabled setting for accelerometer X axis. + * @return Self-test enabled value + * @see MPU6050_RA_ACCEL_CONFIG + */ +bool MPU6050::getAccelXSelfTest() { + I2Cdev::readBit(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_XA_ST_BIT, buffer); + return buffer[0]; +} +/** Get self-test enabled setting for accelerometer X axis. + * @param enabled Self-test enabled value + * @see MPU6050_RA_ACCEL_CONFIG + */ +void MPU6050::setAccelXSelfTest(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_XA_ST_BIT, enabled); +} +/** Get self-test enabled value for accelerometer Y axis. + * @return Self-test enabled value + * @see MPU6050_RA_ACCEL_CONFIG + */ +bool MPU6050::getAccelYSelfTest() { + I2Cdev::readBit(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_YA_ST_BIT, buffer); + return buffer[0]; +} +/** Get self-test enabled value for accelerometer Y axis. + * @param enabled Self-test enabled value + * @see MPU6050_RA_ACCEL_CONFIG + */ +void MPU6050::setAccelYSelfTest(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_YA_ST_BIT, enabled); +} +/** Get self-test enabled value for accelerometer Z axis. + * @return Self-test enabled value + * @see MPU6050_RA_ACCEL_CONFIG + */ +bool MPU6050::getAccelZSelfTest() { + I2Cdev::readBit(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_ZA_ST_BIT, buffer); + return buffer[0]; +} +/** Set self-test enabled value for accelerometer Z axis. + * @param enabled Self-test enabled value + * @see MPU6050_RA_ACCEL_CONFIG + */ +void MPU6050::setAccelZSelfTest(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_ZA_ST_BIT, enabled); +} +/** Get full-scale accelerometer range. + * The FS_SEL parameter allows setting the full-scale range of the accelerometer + * sensors, as described in the table below. + * + * <pre> + * 0 = +/- 2g + * 1 = +/- 4g + * 2 = +/- 8g + * 3 = +/- 16g + * </pre> + * + * @return Current full-scale accelerometer range setting + * @see MPU6050_ACCEL_FS_2 + * @see MPU6050_RA_ACCEL_CONFIG + * @see MPU6050_ACONFIG_AFS_SEL_BIT + * @see MPU6050_ACONFIG_AFS_SEL_LENGTH + */ +uint8_t MPU6050::getFullScaleAccelRange() { + I2Cdev::readBits(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_AFS_SEL_BIT, MPU6050_ACONFIG_AFS_SEL_LENGTH, buffer); + return buffer[0]; +} +/** Set full-scale accelerometer range. + * @param range New full-scale accelerometer range setting + * @see getFullScaleAccelRange() + */ +void MPU6050::setFullScaleAccelRange(uint8_t range) { + I2Cdev::writeBits(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_AFS_SEL_BIT, MPU6050_ACONFIG_AFS_SEL_LENGTH, range); +} +/** Get the high-pass filter configuration. + * The DHPF is a filter module in the path leading to motion detectors (Free + * Fall, Motion threshold, and Zero Motion). The high pass filter output is not + * available to the data registers (see Figure in Section 8 of the MPU-6000/ + * MPU-6050 Product Specification document). + * + * The high pass filter has three modes: + * + * <pre> + * Reset: The filter output settles to zero within one sample. This + * effectively disables the high pass filter. This mode may be toggled + * to quickly settle the filter. + * + * On: The high pass filter will pass signals above the cut off frequency. + * + * Hold: When triggered, the filter holds the present sample. The filter + * output will be the difference between the input sample and the held + * sample. + * </pre> + * + * <pre> + * ACCEL_HPF | Filter Mode | Cut-off Frequency + * ----------+-------------+------------------ + * 0 | Reset | None + * 1 | On | 5Hz + * 2 | On | 2.5Hz + * 3 | On | 1.25Hz + * 4 | On | 0.63Hz + * 7 | Hold | None + * </pre> + * + * @return Current high-pass filter configuration + * @see MPU6050_DHPF_RESET + * @see MPU6050_RA_ACCEL_CONFIG + */ +uint8_t MPU6050::getDHPFMode() { + I2Cdev::readBits(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_ACCEL_HPF_BIT, MPU6050_ACONFIG_ACCEL_HPF_LENGTH, buffer); + return buffer[0]; +} +/** Set the high-pass filter configuration. + * @param bandwidth New high-pass filter configuration + * @see setDHPFMode() + * @see MPU6050_DHPF_RESET + * @see MPU6050_RA_ACCEL_CONFIG + */ +void MPU6050::setDHPFMode(uint8_t bandwidth) { + I2Cdev::writeBits(devAddr, MPU6050_RA_ACCEL_CONFIG, MPU6050_ACONFIG_ACCEL_HPF_BIT, MPU6050_ACONFIG_ACCEL_HPF_LENGTH, bandwidth); +} + +// FF_THR register + +/** Get free-fall event acceleration threshold. + * This register configures the detection threshold for Free Fall event + * detection. The unit of FF_THR is 1LSB = 2mg. Free Fall is detected when the + * absolute value of the accelerometer measurements for the three axes are each + * less than the detection threshold. This condition increments the Free Fall + * duration counter (Register 30). The Free Fall interrupt is triggered when the + * Free Fall duration counter reaches the time specified in FF_DUR. + * + * For more details on the Free Fall detection interrupt, see Section 8.2 of the + * MPU-6000/MPU-6050 Product Specification document as well as Registers 56 and + * 58 of this document. + * + * @return Current free-fall acceleration threshold value (LSB = 2mg) + * @see MPU6050_RA_FF_THR + */ +uint8_t MPU6050::getFreefallDetectionThreshold() { + I2Cdev::readByte(devAddr, MPU6050_RA_FF_THR, buffer); + return buffer[0]; +} +/** Get free-fall event acceleration threshold. + * @param threshold New free-fall acceleration threshold value (LSB = 2mg) + * @see getFreefallDetectionThreshold() + * @see MPU6050_RA_FF_THR + */ +void MPU6050::setFreefallDetectionThreshold(uint8_t threshold) { + I2Cdev::writeByte(devAddr, MPU6050_RA_FF_THR, threshold); +} + +// FF_DUR register + +/** Get free-fall event duration threshold. + * This register configures the duration counter threshold for Free Fall event + * detection. The duration counter ticks at 1kHz, therefore FF_DUR has a unit + * of 1 LSB = 1 ms. + * + * The Free Fall duration counter increments while the absolute value of the + * accelerometer measurements are each less than the detection threshold + * (Register 29). The Free Fall interrupt is triggered when the Free Fall + * duration counter reaches the time specified in this register. + * + * For more details on the Free Fall detection interrupt, see Section 8.2 of + * the MPU-6000/MPU-6050 Product Specification document as well as Registers 56 + * and 58 of this document. + * + * @return Current free-fall duration threshold value (LSB = 1ms) + * @see MPU6050_RA_FF_DUR + */ +uint8_t MPU6050::getFreefallDetectionDuration() { + I2Cdev::readByte(devAddr, MPU6050_RA_FF_DUR, buffer); + return buffer[0]; +} +/** Get free-fall event duration threshold. + * @param duration New free-fall duration threshold value (LSB = 1ms) + * @see getFreefallDetectionDuration() + * @see MPU6050_RA_FF_DUR + */ +void MPU6050::setFreefallDetectionDuration(uint8_t duration) { + I2Cdev::writeByte(devAddr, MPU6050_RA_FF_DUR, duration); +} + +// MOT_THR register + +/** Get motion detection event acceleration threshold. + * This register configures the detection threshold for Motion interrupt + * generation. The unit of MOT_THR is 1LSB = 2mg. Motion is detected when the + * absolute value of any of the accelerometer measurements exceeds this Motion + * detection threshold. This condition increments the Motion detection duration + * counter (Register 32). The Motion detection interrupt is triggered when the + * Motion Detection counter reaches the time count specified in MOT_DUR + * (Register 32). + * + * The Motion interrupt will indicate the axis and polarity of detected motion + * in MOT_DETECT_STATUS (Register 97). + * + * For more details on the Motion detection interrupt, see Section 8.3 of the + * MPU-6000/MPU-6050 Product Specification document as well as Registers 56 and + * 58 of this document. + * + * @return Current motion detection acceleration threshold value (LSB = 2mg) + * @see MPU6050_RA_MOT_THR + */ +uint8_t MPU6050::getMotionDetectionThreshold() { + I2Cdev::readByte(devAddr, MPU6050_RA_MOT_THR, buffer); + return buffer[0]; +} +/** Set motion detection event acceleration threshold. + * @param threshold New motion detection acceleration threshold value (LSB = 2mg) + * @see getMotionDetectionThreshold() + * @see MPU6050_RA_MOT_THR + */ +void MPU6050::setMotionDetectionThreshold(uint8_t threshold) { + I2Cdev::writeByte(devAddr, MPU6050_RA_MOT_THR, threshold); +} + +// MOT_DUR register + +/** Get motion detection event duration threshold. + * This register configures the duration counter threshold for Motion interrupt + * generation. The duration counter ticks at 1 kHz, therefore MOT_DUR has a unit + * of 1LSB = 1ms. The Motion detection duration counter increments when the + * absolute value of any of the accelerometer measurements exceeds the Motion + * detection threshold (Register 31). The Motion detection interrupt is + * triggered when the Motion detection counter reaches the time count specified + * in this register. + * + * For more details on the Motion detection interrupt, see Section 8.3 of the + * MPU-6000/MPU-6050 Product Specification document. + * + * @return Current motion detection duration threshold value (LSB = 1ms) + * @see MPU6050_RA_MOT_DUR + */ +uint8_t MPU6050::getMotionDetectionDuration() { + I2Cdev::readByte(devAddr, MPU6050_RA_MOT_DUR, buffer); + return buffer[0]; +} +/** Set motion detection event duration threshold. + * @param duration New motion detection duration threshold value (LSB = 1ms) + * @see getMotionDetectionDuration() + * @see MPU6050_RA_MOT_DUR + */ +void MPU6050::setMotionDetectionDuration(uint8_t duration) { + I2Cdev::writeByte(devAddr, MPU6050_RA_MOT_DUR, duration); +} + +// ZRMOT_THR register + +/** Get zero motion detection event acceleration threshold. + * This register configures the detection threshold for Zero Motion interrupt + * generation. The unit of ZRMOT_THR is 1LSB = 2mg. Zero Motion is detected when + * the absolute value of the accelerometer measurements for the 3 axes are each + * less than the detection threshold. This condition increments the Zero Motion + * duration counter (Register 34). The Zero Motion interrupt is triggered when + * the Zero Motion duration counter reaches the time count specified in + * ZRMOT_DUR (Register 34). + * + * Unlike Free Fall or Motion detection, Zero Motion detection triggers an + * interrupt both when Zero Motion is first detected and when Zero Motion is no + * longer detected. + * + * When a zero motion event is detected, a Zero Motion Status will be indicated + * in the MOT_DETECT_STATUS register (Register 97). When a motion-to-zero-motion + * condition is detected, the status bit is set to 1. When a zero-motion-to- + * motion condition is detected, the status bit is set to 0. + * + * For more details on the Zero Motion detection interrupt, see Section 8.4 of + * the MPU-6000/MPU-6050 Product Specification document as well as Registers 56 + * and 58 of this document. + * + * @return Current zero motion detection acceleration threshold value (LSB = 2mg) + * @see MPU6050_RA_ZRMOT_THR + */ +uint8_t MPU6050::getZeroMotionDetectionThreshold() { + I2Cdev::readByte(devAddr, MPU6050_RA_ZRMOT_THR, buffer); + return buffer[0]; +} +/** Set zero motion detection event acceleration threshold. + * @param threshold New zero motion detection acceleration threshold value (LSB = 2mg) + * @see getZeroMotionDetectionThreshold() + * @see MPU6050_RA_ZRMOT_THR + */ +void MPU6050::setZeroMotionDetectionThreshold(uint8_t threshold) { + I2Cdev::writeByte(devAddr, MPU6050_RA_ZRMOT_THR, threshold); +} + +// ZRMOT_DUR register + +/** Get zero motion detection event duration threshold. + * This register configures the duration counter threshold for Zero Motion + * interrupt generation. The duration counter ticks at 16 Hz, therefore + * ZRMOT_DUR has a unit of 1 LSB = 64 ms. The Zero Motion duration counter + * increments while the absolute value of the accelerometer measurements are + * each less than the detection threshold (Register 33). The Zero Motion + * interrupt is triggered when the Zero Motion duration counter reaches the time + * count specified in this register. + * + * For more details on the Zero Motion detection interrupt, see Section 8.4 of + * the MPU-6000/MPU-6050 Product Specification document, as well as Registers 56 + * and 58 of this document. + * + * @return Current zero motion detection duration threshold value (LSB = 64ms) + * @see MPU6050_RA_ZRMOT_DUR + */ +uint8_t MPU6050::getZeroMotionDetectionDuration() { + I2Cdev::readByte(devAddr, MPU6050_RA_ZRMOT_DUR, buffer); + return buffer[0]; +} +/** Set zero motion detection event duration threshold. + * @param duration New zero motion detection duration threshold value (LSB = 1ms) + * @see getZeroMotionDetectionDuration() + * @see MPU6050_RA_ZRMOT_DUR + */ +void MPU6050::setZeroMotionDetectionDuration(uint8_t duration) { + I2Cdev::writeByte(devAddr, MPU6050_RA_ZRMOT_DUR, duration); +} + +// FIFO_EN register + +/** Get temperature FIFO enabled value. + * When set to 1, this bit enables TEMP_OUT_H and TEMP_OUT_L (Registers 65 and + * 66) to be written into the FIFO buffer. + * @return Current temperature FIFO enabled value + * @see MPU6050_RA_FIFO_EN + */ +bool MPU6050::getTempFIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_TEMP_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set temperature FIFO enabled value. + * @param enabled New temperature FIFO enabled value + * @see getTempFIFOEnabled() + * @see MPU6050_RA_FIFO_EN + */ +void MPU6050::setTempFIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_TEMP_FIFO_EN_BIT, enabled); +} +/** Get gyroscope X-axis FIFO enabled value. + * When set to 1, this bit enables GYRO_XOUT_H and GYRO_XOUT_L (Registers 67 and + * 68) to be written into the FIFO buffer. + * @return Current gyroscope X-axis FIFO enabled value + * @see MPU6050_RA_FIFO_EN + */ +bool MPU6050::getXGyroFIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_XG_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set gyroscope X-axis FIFO enabled value. + * @param enabled New gyroscope X-axis FIFO enabled value + * @see getXGyroFIFOEnabled() + * @see MPU6050_RA_FIFO_EN + */ +void MPU6050::setXGyroFIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_XG_FIFO_EN_BIT, enabled); +} +/** Get gyroscope Y-axis FIFO enabled value. + * When set to 1, this bit enables GYRO_YOUT_H and GYRO_YOUT_L (Registers 69 and + * 70) to be written into the FIFO buffer. + * @return Current gyroscope Y-axis FIFO enabled value + * @see MPU6050_RA_FIFO_EN + */ +bool MPU6050::getYGyroFIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_YG_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set gyroscope Y-axis FIFO enabled value. + * @param enabled New gyroscope Y-axis FIFO enabled value + * @see getYGyroFIFOEnabled() + * @see MPU6050_RA_FIFO_EN + */ +void MPU6050::setYGyroFIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_YG_FIFO_EN_BIT, enabled); +} +/** Get gyroscope Z-axis FIFO enabled value. + * When set to 1, this bit enables GYRO_ZOUT_H and GYRO_ZOUT_L (Registers 71 and + * 72) to be written into the FIFO buffer. + * @return Current gyroscope Z-axis FIFO enabled value + * @see MPU6050_RA_FIFO_EN + */ +bool MPU6050::getZGyroFIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_ZG_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set gyroscope Z-axis FIFO enabled value. + * @param enabled New gyroscope Z-axis FIFO enabled value + * @see getZGyroFIFOEnabled() + * @see MPU6050_RA_FIFO_EN + */ +void MPU6050::setZGyroFIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_ZG_FIFO_EN_BIT, enabled); +} +/** Get accelerometer FIFO enabled value. + * When set to 1, this bit enables ACCEL_XOUT_H, ACCEL_XOUT_L, ACCEL_YOUT_H, + * ACCEL_YOUT_L, ACCEL_ZOUT_H, and ACCEL_ZOUT_L (Registers 59 to 64) to be + * written into the FIFO buffer. + * @return Current accelerometer FIFO enabled value + * @see MPU6050_RA_FIFO_EN + */ +bool MPU6050::getAccelFIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_ACCEL_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set accelerometer FIFO enabled value. + * @param enabled New accelerometer FIFO enabled value + * @see getAccelFIFOEnabled() + * @see MPU6050_RA_FIFO_EN + */ +void MPU6050::setAccelFIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_ACCEL_FIFO_EN_BIT, enabled); +} +/** Get Slave 2 FIFO enabled value. + * When set to 1, this bit enables EXT_SENS_DATA registers (Registers 73 to 96) + * associated with Slave 2 to be written into the FIFO buffer. + * @return Current Slave 2 FIFO enabled value + * @see MPU6050_RA_FIFO_EN + */ +bool MPU6050::getSlave2FIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_SLV2_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set Slave 2 FIFO enabled value. + * @param enabled New Slave 2 FIFO enabled value + * @see getSlave2FIFOEnabled() + * @see MPU6050_RA_FIFO_EN + */ +void MPU6050::setSlave2FIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_SLV2_FIFO_EN_BIT, enabled); +} +/** Get Slave 1 FIFO enabled value. + * When set to 1, this bit enables EXT_SENS_DATA registers (Registers 73 to 96) + * associated with Slave 1 to be written into the FIFO buffer. + * @return Current Slave 1 FIFO enabled value + * @see MPU6050_RA_FIFO_EN + */ +bool MPU6050::getSlave1FIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_SLV1_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set Slave 1 FIFO enabled value. + * @param enabled New Slave 1 FIFO enabled value + * @see getSlave1FIFOEnabled() + * @see MPU6050_RA_FIFO_EN + */ +void MPU6050::setSlave1FIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_SLV1_FIFO_EN_BIT, enabled); +} +/** Get Slave 0 FIFO enabled value. + * When set to 1, this bit enables EXT_SENS_DATA registers (Registers 73 to 96) + * associated with Slave 0 to be written into the FIFO buffer. + * @return Current Slave 0 FIFO enabled value + * @see MPU6050_RA_FIFO_EN + */ +bool MPU6050::getSlave0FIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_SLV0_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set Slave 0 FIFO enabled value. + * @param enabled New Slave 0 FIFO enabled value + * @see getSlave0FIFOEnabled() + * @see MPU6050_RA_FIFO_EN + */ +void MPU6050::setSlave0FIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_FIFO_EN, MPU6050_SLV0_FIFO_EN_BIT, enabled); +} + +// I2C_MST_CTRL register + +/** Get multi-master enabled value. + * Multi-master capability allows multiple I2C masters to operate on the same + * bus. In circuits where multi-master capability is required, set MULT_MST_EN + * to 1. This will increase current drawn by approximately 30uA. + * + * In circuits where multi-master capability is required, the state of the I2C + * bus must always be monitored by each separate I2C Master. Before an I2C + * Master can assume arbitration of the bus, it must first confirm that no other + * I2C Master has arbitration of the bus. When MULT_MST_EN is set to 1, the + * MPU-60X0's bus arbitration detection logic is turned on, enabling it to + * detect when the bus is available. + * + * @return Current multi-master enabled value + * @see MPU6050_RA_I2C_MST_CTRL + */ +bool MPU6050::getMultiMasterEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_MULT_MST_EN_BIT, buffer); + return buffer[0]; +} +/** Set multi-master enabled value. + * @param enabled New multi-master enabled value + * @see getMultiMasterEnabled() + * @see MPU6050_RA_I2C_MST_CTRL + */ +void MPU6050::setMultiMasterEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_MULT_MST_EN_BIT, enabled); +} +/** Get wait-for-external-sensor-data enabled value. + * When the WAIT_FOR_ES bit is set to 1, the Data Ready interrupt will be + * delayed until External Sensor data from the Slave Devices are loaded into the + * EXT_SENS_DATA registers. This is used to ensure that both the internal sensor + * data (i.e. from gyro and accel) and external sensor data have been loaded to + * their respective data registers (i.e. the data is synced) when the Data Ready + * interrupt is triggered. + * + * @return Current wait-for-external-sensor-data enabled value + * @see MPU6050_RA_I2C_MST_CTRL + */ +bool MPU6050::getWaitForExternalSensorEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_WAIT_FOR_ES_BIT, buffer); + return buffer[0]; +} +/** Set wait-for-external-sensor-data enabled value. + * @param enabled New wait-for-external-sensor-data enabled value + * @see getWaitForExternalSensorEnabled() + * @see MPU6050_RA_I2C_MST_CTRL + */ +void MPU6050::setWaitForExternalSensorEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_WAIT_FOR_ES_BIT, enabled); +} +/** Get Slave 3 FIFO enabled value. + * When set to 1, this bit enables EXT_SENS_DATA registers (Registers 73 to 96) + * associated with Slave 3 to be written into the FIFO buffer. + * @return Current Slave 3 FIFO enabled value + * @see MPU6050_RA_MST_CTRL + */ +bool MPU6050::getSlave3FIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_SLV_3_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set Slave 3 FIFO enabled value. + * @param enabled New Slave 3 FIFO enabled value + * @see getSlave3FIFOEnabled() + * @see MPU6050_RA_MST_CTRL + */ +void MPU6050::setSlave3FIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_SLV_3_FIFO_EN_BIT, enabled); +} +/** Get slave read/write transition enabled value. + * The I2C_MST_P_NSR bit configures the I2C Master's transition from one slave + * read to the next slave read. If the bit equals 0, there will be a restart + * between reads. If the bit equals 1, there will be a stop followed by a start + * of the following read. When a write transaction follows a read transaction, + * the stop followed by a start of the successive write will be always used. + * + * @return Current slave read/write transition enabled value + * @see MPU6050_RA_I2C_MST_CTRL + */ +bool MPU6050::getSlaveReadWriteTransitionEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_I2C_MST_P_NSR_BIT, buffer); + return buffer[0]; +} +/** Set slave read/write transition enabled value. + * @param enabled New slave read/write transition enabled value + * @see getSlaveReadWriteTransitionEnabled() + * @see MPU6050_RA_I2C_MST_CTRL + */ +void MPU6050::setSlaveReadWriteTransitionEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_I2C_MST_P_NSR_BIT, enabled); +} +/** Get I2C master clock speed. + * I2C_MST_CLK is a 4 bit unsigned value which configures a divider on the + * MPU-60X0 internal 8MHz clock. It sets the I2C master clock speed according to + * the following table: + * + * <pre> + * I2C_MST_CLK | I2C Master Clock Speed | 8MHz Clock Divider + * ------------+------------------------+------------------- + * 0 | 348kHz | 23 + * 1 | 333kHz | 24 + * 2 | 320kHz | 25 + * 3 | 308kHz | 26 + * 4 | 296kHz | 27 + * 5 | 286kHz | 28 + * 6 | 276kHz | 29 + * 7 | 267kHz | 30 + * 8 | 258kHz | 31 + * 9 | 500kHz | 16 + * 10 | 471kHz | 17 + * 11 | 444kHz | 18 + * 12 | 421kHz | 19 + * 13 | 400kHz | 20 + * 14 | 381kHz | 21 + * 15 | 364kHz | 22 + * </pre> + * + * @return Current I2C master clock speed + * @see MPU6050_RA_I2C_MST_CTRL + */ +uint8_t MPU6050::getMasterClockSpeed() { + I2Cdev::readBits(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_I2C_MST_CLK_BIT, MPU6050_I2C_MST_CLK_LENGTH, buffer); + return buffer[0]; +} +/** Set I2C master clock speed. + * @reparam speed Current I2C master clock speed + * @see MPU6050_RA_I2C_MST_CTRL + */ +void MPU6050::setMasterClockSpeed(uint8_t speed) { + I2Cdev::writeBits(devAddr, MPU6050_RA_I2C_MST_CTRL, MPU6050_I2C_MST_CLK_BIT, MPU6050_I2C_MST_CLK_LENGTH, speed); +} + +// I2C_SLV* registers (Slave 0-3) + +/** Get the I2C address of the specified slave (0-3). + * Note that Bit 7 (MSB) controls read/write mode. If Bit 7 is set, it's a read + * operation, and if it is cleared, then it's a write operation. The remaining + * bits (6-0) are the 7-bit device address of the slave device. + * + * In read mode, the result of the read is placed in the lowest available + * EXT_SENS_DATA register. For further information regarding the allocation of + * read results, please refer to the EXT_SENS_DATA register description + * (Registers 73 - 96). + * + * The MPU-6050 supports a total of five slaves, but Slave 4 has unique + * characteristics, and so it has its own functions (getSlave4* and setSlave4*). + * + * I2C data transactions are performed at the Sample Rate, as defined in + * Register 25. The user is responsible for ensuring that I2C data transactions + * to and from each enabled Slave can be completed within a single period of the + * Sample Rate. + * + * The I2C slave access rate can be reduced relative to the Sample Rate. This + * reduced access rate is determined by I2C_MST_DLY (Register 52). Whether a + * slave's access rate is reduced relative to the Sample Rate is determined by + * I2C_MST_DELAY_CTRL (Register 103). + * + * The processing order for the slaves is fixed. The sequence followed for + * processing the slaves is Slave 0, Slave 1, Slave 2, Slave 3 and Slave 4. If a + * particular Slave is disabled it will be skipped. + * + * Each slave can either be accessed at the sample rate or at a reduced sample + * rate. In a case where some slaves are accessed at the Sample Rate and some + * slaves are accessed at the reduced rate, the sequence of accessing the slaves + * (Slave 0 to Slave 4) is still followed. However, the reduced rate slaves will + * be skipped if their access rate dictates that they should not be accessed + * during that particular cycle. For further information regarding the reduced + * access rate, please refer to Register 52. Whether a slave is accessed at the + * Sample Rate or at the reduced rate is determined by the Delay Enable bits in + * Register 103. + * + * @param num Slave number (0-3) + * @return Current address for specified slave + * @see MPU6050_RA_I2C_SLV0_ADDR + */ +uint8_t MPU6050::getSlaveAddress(uint8_t num) { + if (num > 3) return 0; + I2Cdev::readByte(devAddr, MPU6050_RA_I2C_SLV0_ADDR + num*3, buffer); + return buffer[0]; +} +/** Set the I2C address of the specified slave (0-3). + * @param num Slave number (0-3) + * @param address New address for specified slave + * @see getSlaveAddress() + * @see MPU6050_RA_I2C_SLV0_ADDR + */ +void MPU6050::setSlaveAddress(uint8_t num, uint8_t address) { + if (num > 3) return; + I2Cdev::writeByte(devAddr, MPU6050_RA_I2C_SLV0_ADDR + num*3, address); +} +/** Get the active internal register for the specified slave (0-3). + * Read/write operations for this slave will be done to whatever internal + * register address is stored in this MPU register. + * + * The MPU-6050 supports a total of five slaves, but Slave 4 has unique + * characteristics, and so it has its own functions. + * + * @param num Slave number (0-3) + * @return Current active register for specified slave + * @see MPU6050_RA_I2C_SLV0_REG + */ +uint8_t MPU6050::getSlaveRegister(uint8_t num) { + if (num > 3) return 0; + I2Cdev::readByte(devAddr, MPU6050_RA_I2C_SLV0_REG + num*3, buffer); + return buffer[0]; +} +/** Set the active internal register for the specified slave (0-3). + * @param num Slave number (0-3) + * @param reg New active register for specified slave + * @see getSlaveRegister() + * @see MPU6050_RA_I2C_SLV0_REG + */ +void MPU6050::setSlaveRegister(uint8_t num, uint8_t reg) { + if (num > 3) return; + I2Cdev::writeByte(devAddr, MPU6050_RA_I2C_SLV0_REG + num*3, reg); +} +/** Get the enabled value for the specified slave (0-3). + * When set to 1, this bit enables Slave 0 for data transfer operations. When + * cleared to 0, this bit disables Slave 0 from data transfer operations. + * @param num Slave number (0-3) + * @return Current enabled value for specified slave + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +bool MPU6050::getSlaveEnabled(uint8_t num) { + if (num > 3) return 0; + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_EN_BIT, buffer); + return buffer[0]; +} +/** Set the enabled value for the specified slave (0-3). + * @param num Slave number (0-3) + * @param enabled New enabled value for specified slave + * @see getSlaveEnabled() + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +void MPU6050::setSlaveEnabled(uint8_t num, bool enabled) { + if (num > 3) return; + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_EN_BIT, enabled); +} +/** Get word pair byte-swapping enabled for the specified slave (0-3). + * When set to 1, this bit enables byte swapping. When byte swapping is enabled, + * the high and low bytes of a word pair are swapped. Please refer to + * I2C_SLV0_GRP for the pairing convention of the word pairs. When cleared to 0, + * bytes transferred to and from Slave 0 will be written to EXT_SENS_DATA + * registers in the order they were transferred. + * + * @param num Slave number (0-3) + * @return Current word pair byte-swapping enabled value for specified slave + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +bool MPU6050::getSlaveWordByteSwap(uint8_t num) { + if (num > 3) return 0; + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_BYTE_SW_BIT, buffer); + return buffer[0]; +} +/** Set word pair byte-swapping enabled for the specified slave (0-3). + * @param num Slave number (0-3) + * @param enabled New word pair byte-swapping enabled value for specified slave + * @see getSlaveWordByteSwap() + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +void MPU6050::setSlaveWordByteSwap(uint8_t num, bool enabled) { + if (num > 3) return; + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_BYTE_SW_BIT, enabled); +} +/** Get write mode for the specified slave (0-3). + * When set to 1, the transaction will read or write data only. When cleared to + * 0, the transaction will write a register address prior to reading or writing + * data. This should equal 0 when specifying the register address within the + * Slave device to/from which the ensuing data transaction will take place. + * + * @param num Slave number (0-3) + * @return Current write mode for specified slave (0 = register address + data, 1 = data only) + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +bool MPU6050::getSlaveWriteMode(uint8_t num) { + if (num > 3) return 0; + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_REG_DIS_BIT, buffer); + return buffer[0]; +} +/** Set write mode for the specified slave (0-3). + * @param num Slave number (0-3) + * @param mode New write mode for specified slave (0 = register address + data, 1 = data only) + * @see getSlaveWriteMode() + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +void MPU6050::setSlaveWriteMode(uint8_t num, bool mode) { + if (num > 3) return; + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_REG_DIS_BIT, mode); +} +/** Get word pair grouping order offset for the specified slave (0-3). + * This sets specifies the grouping order of word pairs received from registers. + * When cleared to 0, bytes from register addresses 0 and 1, 2 and 3, etc (even, + * then odd register addresses) are paired to form a word. When set to 1, bytes + * from register addresses are paired 1 and 2, 3 and 4, etc. (odd, then even + * register addresses) are paired to form a word. + * + * @param num Slave number (0-3) + * @return Current word pair grouping order offset for specified slave + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +bool MPU6050::getSlaveWordGroupOffset(uint8_t num) { + if (num > 3) return 0; + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_GRP_BIT, buffer); + return buffer[0]; +} +/** Set word pair grouping order offset for the specified slave (0-3). + * @param num Slave number (0-3) + * @param enabled New word pair grouping order offset for specified slave + * @see getSlaveWordGroupOffset() + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +void MPU6050::setSlaveWordGroupOffset(uint8_t num, bool enabled) { + if (num > 3) return; + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_GRP_BIT, enabled); +} +/** Get number of bytes to read for the specified slave (0-3). + * Specifies the number of bytes transferred to and from Slave 0. Clearing this + * bit to 0 is equivalent to disabling the register by writing 0 to I2C_SLV0_EN. + * @param num Slave number (0-3) + * @return Number of bytes to read for specified slave + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +uint8_t MPU6050::getSlaveDataLength(uint8_t num) { + if (num > 3) return 0; + I2Cdev::readBits(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_LEN_BIT, MPU6050_I2C_SLV_LEN_LENGTH, buffer); + return buffer[0]; +} +/** Set number of bytes to read for the specified slave (0-3). + * @param num Slave number (0-3) + * @param length Number of bytes to read for specified slave + * @see getSlaveDataLength() + * @see MPU6050_RA_I2C_SLV0_CTRL + */ +void MPU6050::setSlaveDataLength(uint8_t num, uint8_t length) { + if (num > 3) return; + I2Cdev::writeBits(devAddr, MPU6050_RA_I2C_SLV0_CTRL + num*3, MPU6050_I2C_SLV_LEN_BIT, MPU6050_I2C_SLV_LEN_LENGTH, length); +} + +// I2C_SLV* registers (Slave 4) + +/** Get the I2C address of Slave 4. + * Note that Bit 7 (MSB) controls read/write mode. If Bit 7 is set, it's a read + * operation, and if it is cleared, then it's a write operation. The remaining + * bits (6-0) are the 7-bit device address of the slave device. + * + * @return Current address for Slave 4 + * @see getSlaveAddress() + * @see MPU6050_RA_I2C_SLV4_ADDR + */ +uint8_t MPU6050::getSlave4Address() { + I2Cdev::readByte(devAddr, MPU6050_RA_I2C_SLV4_ADDR, buffer); + return buffer[0]; +} +/** Set the I2C address of Slave 4. + * @param address New address for Slave 4 + * @see getSlave4Address() + * @see MPU6050_RA_I2C_SLV4_ADDR + */ +void MPU6050::setSlave4Address(uint8_t address) { + I2Cdev::writeByte(devAddr, MPU6050_RA_I2C_SLV4_ADDR, address); +} +/** Get the active internal register for the Slave 4. + * Read/write operations for this slave will be done to whatever internal + * register address is stored in this MPU register. + * + * @return Current active register for Slave 4 + * @see MPU6050_RA_I2C_SLV4_REG + */ +uint8_t MPU6050::getSlave4Register() { + I2Cdev::readByte(devAddr, MPU6050_RA_I2C_SLV4_REG, buffer); + return buffer[0]; +} +/** Set the active internal register for Slave 4. + * @param reg New active register for Slave 4 + * @see getSlave4Register() + * @see MPU6050_RA_I2C_SLV4_REG + */ +void MPU6050::setSlave4Register(uint8_t reg) { + I2Cdev::writeByte(devAddr, MPU6050_RA_I2C_SLV4_REG, reg); +} +/** Set new byte to write to Slave 4. + * This register stores the data to be written into the Slave 4. If I2C_SLV4_RW + * is set 1 (set to read), this register has no effect. + * @param data New byte to write to Slave 4 + * @see MPU6050_RA_I2C_SLV4_DO + */ +void MPU6050::setSlave4OutputByte(uint8_t data) { + I2Cdev::writeByte(devAddr, MPU6050_RA_I2C_SLV4_DO, data); +} +/** Get the enabled value for the Slave 4. + * When set to 1, this bit enables Slave 4 for data transfer operations. When + * cleared to 0, this bit disables Slave 4 from data transfer operations. + * @return Current enabled value for Slave 4 + * @see MPU6050_RA_I2C_SLV4_CTRL + */ +bool MPU6050::getSlave4Enabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_SLV4_CTRL, MPU6050_I2C_SLV4_EN_BIT, buffer); + return buffer[0]; +} +/** Set the enabled value for Slave 4. + * @param enabled New enabled value for Slave 4 + * @see getSlave4Enabled() + * @see MPU6050_RA_I2C_SLV4_CTRL + */ +void MPU6050::setSlave4Enabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_SLV4_CTRL, MPU6050_I2C_SLV4_EN_BIT, enabled); +} +/** Get the enabled value for Slave 4 transaction interrupts. + * When set to 1, this bit enables the generation of an interrupt signal upon + * completion of a Slave 4 transaction. When cleared to 0, this bit disables the + * generation of an interrupt signal upon completion of a Slave 4 transaction. + * The interrupt status can be observed in Register 54. + * + * @return Current enabled value for Slave 4 transaction interrupts. + * @see MPU6050_RA_I2C_SLV4_CTRL + */ +bool MPU6050::getSlave4InterruptEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_SLV4_CTRL, MPU6050_I2C_SLV4_INT_EN_BIT, buffer); + return buffer[0]; +} +/** Set the enabled value for Slave 4 transaction interrupts. + * @param enabled New enabled value for Slave 4 transaction interrupts. + * @see getSlave4InterruptEnabled() + * @see MPU6050_RA_I2C_SLV4_CTRL + */ +void MPU6050::setSlave4InterruptEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_SLV4_CTRL, MPU6050_I2C_SLV4_INT_EN_BIT, enabled); +} +/** Get write mode for Slave 4. + * When set to 1, the transaction will read or write data only. When cleared to + * 0, the transaction will write a register address prior to reading or writing + * data. This should equal 0 when specifying the register address within the + * Slave device to/from which the ensuing data transaction will take place. + * + * @return Current write mode for Slave 4 (0 = register address + data, 1 = data only) + * @see MPU6050_RA_I2C_SLV4_CTRL + */ +bool MPU6050::getSlave4WriteMode() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_SLV4_CTRL, MPU6050_I2C_SLV4_REG_DIS_BIT, buffer); + return buffer[0]; +} +/** Set write mode for the Slave 4. + * @param mode New write mode for Slave 4 (0 = register address + data, 1 = data only) + * @see getSlave4WriteMode() + * @see MPU6050_RA_I2C_SLV4_CTRL + */ +void MPU6050::setSlave4WriteMode(bool mode) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_SLV4_CTRL, MPU6050_I2C_SLV4_REG_DIS_BIT, mode); +} +/** Get Slave 4 master delay value. + * This configures the reduced access rate of I2C slaves relative to the Sample + * Rate. When a slave's access rate is decreased relative to the Sample Rate, + * the slave is accessed every: + * + * 1 / (1 + I2C_MST_DLY) samples + * + * This base Sample Rate in turn is determined by SMPLRT_DIV (register 25) and + * DLPF_CFG (register 26). Whether a slave's access rate is reduced relative to + * the Sample Rate is determined by I2C_MST_DELAY_CTRL (register 103). For + * further information regarding the Sample Rate, please refer to register 25. + * + * @return Current Slave 4 master delay value + * @see MPU6050_RA_I2C_SLV4_CTRL + */ +uint8_t MPU6050::getSlave4MasterDelay() { + I2Cdev::readBits(devAddr, MPU6050_RA_I2C_SLV4_CTRL, MPU6050_I2C_SLV4_MST_DLY_BIT, MPU6050_I2C_SLV4_MST_DLY_LENGTH, buffer); + return buffer[0]; +} +/** Set Slave 4 master delay value. + * @param delay New Slave 4 master delay value + * @see getSlave4MasterDelay() + * @see MPU6050_RA_I2C_SLV4_CTRL + */ +void MPU6050::setSlave4MasterDelay(uint8_t delay) { + I2Cdev::writeBits(devAddr, MPU6050_RA_I2C_SLV4_CTRL, MPU6050_I2C_SLV4_MST_DLY_BIT, MPU6050_I2C_SLV4_MST_DLY_LENGTH, delay); +} +/** Get last available byte read from Slave 4. + * This register stores the data read from Slave 4. This field is populated + * after a read transaction. + * @return Last available byte read from to Slave 4 + * @see MPU6050_RA_I2C_SLV4_DI + */ +uint8_t MPU6050::getSlate4InputByte() { + I2Cdev::readByte(devAddr, MPU6050_RA_I2C_SLV4_DI, buffer); + return buffer[0]; +} + +// I2C_MST_STATUS register + +/** Get FSYNC interrupt status. + * This bit reflects the status of the FSYNC interrupt from an external device + * into the MPU-60X0. This is used as a way to pass an external interrupt + * through the MPU-60X0 to the host application processor. When set to 1, this + * bit will cause an interrupt if FSYNC_INT_EN is asserted in INT_PIN_CFG + * (Register 55). + * @return FSYNC interrupt status + * @see MPU6050_RA_I2C_MST_STATUS + */ +bool MPU6050::getPassthroughStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_STATUS, MPU6050_MST_PASS_THROUGH_BIT, buffer); + return buffer[0]; +} +/** Get Slave 4 transaction done status. + * Automatically sets to 1 when a Slave 4 transaction has completed. This + * triggers an interrupt if the I2C_MST_INT_EN bit in the INT_ENABLE register + * (Register 56) is asserted and if the SLV_4_DONE_INT bit is asserted in the + * I2C_SLV4_CTRL register (Register 52). + * @return Slave 4 transaction done status + * @see MPU6050_RA_I2C_MST_STATUS + */ +bool MPU6050::getSlave4IsDone() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_STATUS, MPU6050_MST_I2C_SLV4_DONE_BIT, buffer); + return buffer[0]; +} +/** Get master arbitration lost status. + * This bit automatically sets to 1 when the I2C Master has lost arbitration of + * the auxiliary I2C bus (an error condition). This triggers an interrupt if the + * I2C_MST_INT_EN bit in the INT_ENABLE register (Register 56) is asserted. + * @return Master arbitration lost status + * @see MPU6050_RA_I2C_MST_STATUS + */ +bool MPU6050::getLostArbitration() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_STATUS, MPU6050_MST_I2C_LOST_ARB_BIT, buffer); + return buffer[0]; +} +/** Get Slave 4 NACK status. + * This bit automatically sets to 1 when the I2C Master receives a NACK in a + * transaction with Slave 4. This triggers an interrupt if the I2C_MST_INT_EN + * bit in the INT_ENABLE register (Register 56) is asserted. + * @return Slave 4 NACK interrupt status + * @see MPU6050_RA_I2C_MST_STATUS + */ +bool MPU6050::getSlave4Nack() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_STATUS, MPU6050_MST_I2C_SLV4_NACK_BIT, buffer); + return buffer[0]; +} +/** Get Slave 3 NACK status. + * This bit automatically sets to 1 when the I2C Master receives a NACK in a + * transaction with Slave 3. This triggers an interrupt if the I2C_MST_INT_EN + * bit in the INT_ENABLE register (Register 56) is asserted. + * @return Slave 3 NACK interrupt status + * @see MPU6050_RA_I2C_MST_STATUS + */ +bool MPU6050::getSlave3Nack() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_STATUS, MPU6050_MST_I2C_SLV3_NACK_BIT, buffer); + return buffer[0]; +} +/** Get Slave 2 NACK status. + * This bit automatically sets to 1 when the I2C Master receives a NACK in a + * transaction with Slave 2. This triggers an interrupt if the I2C_MST_INT_EN + * bit in the INT_ENABLE register (Register 56) is asserted. + * @return Slave 2 NACK interrupt status + * @see MPU6050_RA_I2C_MST_STATUS + */ +bool MPU6050::getSlave2Nack() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_STATUS, MPU6050_MST_I2C_SLV2_NACK_BIT, buffer); + return buffer[0]; +} +/** Get Slave 1 NACK status. + * This bit automatically sets to 1 when the I2C Master receives a NACK in a + * transaction with Slave 1. This triggers an interrupt if the I2C_MST_INT_EN + * bit in the INT_ENABLE register (Register 56) is asserted. + * @return Slave 1 NACK interrupt status + * @see MPU6050_RA_I2C_MST_STATUS + */ +bool MPU6050::getSlave1Nack() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_STATUS, MPU6050_MST_I2C_SLV1_NACK_BIT, buffer); + return buffer[0]; +} +/** Get Slave 0 NACK status. + * This bit automatically sets to 1 when the I2C Master receives a NACK in a + * transaction with Slave 0. This triggers an interrupt if the I2C_MST_INT_EN + * bit in the INT_ENABLE register (Register 56) is asserted. + * @return Slave 0 NACK interrupt status + * @see MPU6050_RA_I2C_MST_STATUS + */ +bool MPU6050::getSlave0Nack() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_STATUS, MPU6050_MST_I2C_SLV0_NACK_BIT, buffer); + return buffer[0]; +} + +// INT_PIN_CFG register + +/** Get interrupt logic level mode. + * Will be set 0 for active-high, 1 for active-low. + * @return Current interrupt mode (0=active-high, 1=active-low) + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_INT_LEVEL_BIT + */ +bool MPU6050::getInterruptMode() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_INT_LEVEL_BIT, buffer); + return buffer[0]; +} +/** Set interrupt logic level mode. + * @param mode New interrupt mode (0=active-high, 1=active-low) + * @see getInterruptMode() + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_INT_LEVEL_BIT + */ +void MPU6050::setInterruptMode(bool mode) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_INT_LEVEL_BIT, mode); +} +/** Get interrupt drive mode. + * Will be set 0 for push-pull, 1 for open-drain. + * @return Current interrupt drive mode (0=push-pull, 1=open-drain) + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_INT_OPEN_BIT + */ +bool MPU6050::getInterruptDrive() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_INT_OPEN_BIT, buffer); + return buffer[0]; +} +/** Set interrupt drive mode. + * @param drive New interrupt drive mode (0=push-pull, 1=open-drain) + * @see getInterruptDrive() + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_INT_OPEN_BIT + */ +void MPU6050::setInterruptDrive(bool drive) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_INT_OPEN_BIT, drive); +} +/** Get interrupt latch mode. + * Will be set 0 for 50us-pulse, 1 for latch-until-int-cleared. + * @return Current latch mode (0=50us-pulse, 1=latch-until-int-cleared) + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_LATCH_INT_EN_BIT + */ +bool MPU6050::getInterruptLatch() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_LATCH_INT_EN_BIT, buffer); + return buffer[0]; +} +/** Set interrupt latch mode. + * @param latch New latch mode (0=50us-pulse, 1=latch-until-int-cleared) + * @see getInterruptLatch() + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_LATCH_INT_EN_BIT + */ +void MPU6050::setInterruptLatch(bool latch) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_LATCH_INT_EN_BIT, latch); +} +/** Get interrupt latch clear mode. + * Will be set 0 for status-read-only, 1 for any-register-read. + * @return Current latch clear mode (0=status-read-only, 1=any-register-read) + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_INT_RD_CLEAR_BIT + */ +bool MPU6050::getInterruptLatchClear() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_INT_RD_CLEAR_BIT, buffer); + return buffer[0]; +} +/** Set interrupt latch clear mode. + * @param clear New latch clear mode (0=status-read-only, 1=any-register-read) + * @see getInterruptLatchClear() + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_INT_RD_CLEAR_BIT + */ +void MPU6050::setInterruptLatchClear(bool clear) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_INT_RD_CLEAR_BIT, clear); +} +/** Get FSYNC interrupt logic level mode. + * @return Current FSYNC interrupt mode (0=active-high, 1=active-low) + * @see getFSyncInterruptMode() + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_FSYNC_INT_LEVEL_BIT + */ +bool MPU6050::getFSyncInterruptLevel() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_FSYNC_INT_LEVEL_BIT, buffer); + return buffer[0]; +} +/** Set FSYNC interrupt logic level mode. + * @param mode New FSYNC interrupt mode (0=active-high, 1=active-low) + * @see getFSyncInterruptMode() + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_FSYNC_INT_LEVEL_BIT + */ +void MPU6050::setFSyncInterruptLevel(bool level) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_FSYNC_INT_LEVEL_BIT, level); +} +/** Get FSYNC pin interrupt enabled setting. + * Will be set 0 for disabled, 1 for enabled. + * @return Current interrupt enabled setting + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_FSYNC_INT_EN_BIT + */ +bool MPU6050::getFSyncInterruptEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_FSYNC_INT_EN_BIT, buffer); + return buffer[0]; +} +/** Set FSYNC pin interrupt enabled setting. + * @param enabled New FSYNC pin interrupt enabled setting + * @see getFSyncInterruptEnabled() + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_FSYNC_INT_EN_BIT + */ +void MPU6050::setFSyncInterruptEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_FSYNC_INT_EN_BIT, enabled); +} +/** Get I2C bypass enabled status. + * When this bit is equal to 1 and I2C_MST_EN (Register 106 bit[5]) is equal to + * 0, the host application processor will be able to directly access the + * auxiliary I2C bus of the MPU-60X0. When this bit is equal to 0, the host + * application processor will not be able to directly access the auxiliary I2C + * bus of the MPU-60X0 regardless of the state of I2C_MST_EN (Register 106 + * bit[5]). + * @return Current I2C bypass enabled status + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_I2C_BYPASS_EN_BIT + */ +bool MPU6050::getI2CBypassEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_I2C_BYPASS_EN_BIT, buffer); + return buffer[0]; +} +/** Set I2C bypass enabled status. + * When this bit is equal to 1 and I2C_MST_EN (Register 106 bit[5]) is equal to + * 0, the host application processor will be able to directly access the + * auxiliary I2C bus of the MPU-60X0. When this bit is equal to 0, the host + * application processor will not be able to directly access the auxiliary I2C + * bus of the MPU-60X0 regardless of the state of I2C_MST_EN (Register 106 + * bit[5]). + * @param enabled New I2C bypass enabled status + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_I2C_BYPASS_EN_BIT + */ +void MPU6050::setI2CBypassEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_I2C_BYPASS_EN_BIT, enabled); +} +/** Get reference clock output enabled status. + * When this bit is equal to 1, a reference clock output is provided at the + * CLKOUT pin. When this bit is equal to 0, the clock output is disabled. For + * further information regarding CLKOUT, please refer to the MPU-60X0 Product + * Specification document. + * @return Current reference clock output enabled status + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_CLKOUT_EN_BIT + */ +bool MPU6050::getClockOutputEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_CLKOUT_EN_BIT, buffer); + return buffer[0]; +} +/** Set reference clock output enabled status. + * When this bit is equal to 1, a reference clock output is provided at the + * CLKOUT pin. When this bit is equal to 0, the clock output is disabled. For + * further information regarding CLKOUT, please refer to the MPU-60X0 Product + * Specification document. + * @param enabled New reference clock output enabled status + * @see MPU6050_RA_INT_PIN_CFG + * @see MPU6050_INTCFG_CLKOUT_EN_BIT + */ +void MPU6050::setClockOutputEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_PIN_CFG, MPU6050_INTCFG_CLKOUT_EN_BIT, enabled); +} + +// INT_ENABLE register + +/** Get full interrupt enabled status. + * Full register byte for all interrupts, for quick reading. Each bit will be + * set 0 for disabled, 1 for enabled. + * @return Current interrupt enabled status + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_FF_BIT + **/ +uint8_t MPU6050::getIntEnabled() { + I2Cdev::readByte(devAddr, MPU6050_RA_INT_ENABLE, buffer); + return buffer[0]; +} +/** Set full interrupt enabled status. + * Full register byte for all interrupts, for quick reading. Each bit should be + * set 0 for disabled, 1 for enabled. + * @param enabled New interrupt enabled status + * @see getIntFreefallEnabled() + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_FF_BIT + **/ +void MPU6050::setIntEnabled(uint8_t enabled) { + I2Cdev::writeByte(devAddr, MPU6050_RA_INT_ENABLE, enabled); +} +/** Get Free Fall interrupt enabled status. + * Will be set 0 for disabled, 1 for enabled. + * @return Current interrupt enabled status + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_FF_BIT + **/ +bool MPU6050::getIntFreefallEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_FF_BIT, buffer); + return buffer[0]; +} +/** Set Free Fall interrupt enabled status. + * @param enabled New interrupt enabled status + * @see getIntFreefallEnabled() + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_FF_BIT + **/ +void MPU6050::setIntFreefallEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_FF_BIT, enabled); +} +/** Get Motion Detection interrupt enabled status. + * Will be set 0 for disabled, 1 for enabled. + * @return Current interrupt enabled status + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_MOT_BIT + **/ +bool MPU6050::getIntMotionEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_MOT_BIT, buffer); + return buffer[0]; +} +/** Set Motion Detection interrupt enabled status. + * @param enabled New interrupt enabled status + * @see getIntMotionEnabled() + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_MOT_BIT + **/ +void MPU6050::setIntMotionEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_MOT_BIT, enabled); +} +/** Get Zero Motion Detection interrupt enabled status. + * Will be set 0 for disabled, 1 for enabled. + * @return Current interrupt enabled status + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_ZMOT_BIT + **/ +bool MPU6050::getIntZeroMotionEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_ZMOT_BIT, buffer); + return buffer[0]; +} +/** Set Zero Motion Detection interrupt enabled status. + * @param enabled New interrupt enabled status + * @see getIntZeroMotionEnabled() + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_ZMOT_BIT + **/ +void MPU6050::setIntZeroMotionEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_ZMOT_BIT, enabled); +} +/** Get FIFO Buffer Overflow interrupt enabled status. + * Will be set 0 for disabled, 1 for enabled. + * @return Current interrupt enabled status + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_FIFO_OFLOW_BIT + **/ +bool MPU6050::getIntFIFOBufferOverflowEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_FIFO_OFLOW_BIT, buffer); + return buffer[0]; +} +/** Set FIFO Buffer Overflow interrupt enabled status. + * @param enabled New interrupt enabled status + * @see getIntFIFOBufferOverflowEnabled() + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_FIFO_OFLOW_BIT + **/ +void MPU6050::setIntFIFOBufferOverflowEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_FIFO_OFLOW_BIT, enabled); +} +/** Get I2C Master interrupt enabled status. + * This enables any of the I2C Master interrupt sources to generate an + * interrupt. Will be set 0 for disabled, 1 for enabled. + * @return Current interrupt enabled status + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_I2C_MST_INT_BIT + **/ +bool MPU6050::getIntI2CMasterEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_I2C_MST_INT_BIT, buffer); + return buffer[0]; +} +/** Set I2C Master interrupt enabled status. + * @param enabled New interrupt enabled status + * @see getIntI2CMasterEnabled() + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_I2C_MST_INT_BIT + **/ +void MPU6050::setIntI2CMasterEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_I2C_MST_INT_BIT, enabled); +} +/** Get Data Ready interrupt enabled setting. + * This event occurs each time a write operation to all of the sensor registers + * has been completed. Will be set 0 for disabled, 1 for enabled. + * @return Current interrupt enabled status + * @see MPU6050_RA_INT_ENABLE + * @see MPU6050_INTERRUPT_DATA_RDY_BIT + */ +bool MPU6050::getIntDataReadyEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_DATA_RDY_BIT, buffer); + return buffer[0]; +} +/** Set Data Ready interrupt enabled status. + * @param enabled New interrupt enabled status + * @see getIntDataReadyEnabled() + * @see MPU6050_RA_INT_CFG + * @see MPU6050_INTERRUPT_DATA_RDY_BIT + */ +void MPU6050::setIntDataReadyEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_DATA_RDY_BIT, enabled); +} + +// INT_STATUS register + +/** Get full set of interrupt status bits. + * These bits clear to 0 after the register has been read. Very useful + * for getting multiple INT statuses, since each single bit read clears + * all of them because it has to read the whole byte. + * @return Current interrupt status + * @see MPU6050_RA_INT_STATUS + */ +uint8_t MPU6050::getIntStatus() { + I2Cdev::readByte(devAddr, MPU6050_RA_INT_STATUS, buffer); + return buffer[0]; +} +/** Get Free Fall interrupt status. + * This bit automatically sets to 1 when a Free Fall interrupt has been + * generated. The bit clears to 0 after the register has been read. + * @return Current interrupt status + * @see MPU6050_RA_INT_STATUS + * @see MPU6050_INTERRUPT_FF_BIT + */ +bool MPU6050::getIntFreefallStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_STATUS, MPU6050_INTERRUPT_FF_BIT, buffer); + return buffer[0]; +} +/** Get Motion Detection interrupt status. + * This bit automatically sets to 1 when a Motion Detection interrupt has been + * generated. The bit clears to 0 after the register has been read. + * @return Current interrupt status + * @see MPU6050_RA_INT_STATUS + * @see MPU6050_INTERRUPT_MOT_BIT + */ +bool MPU6050::getIntMotionStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_STATUS, MPU6050_INTERRUPT_MOT_BIT, buffer); + return buffer[0]; +} +/** Get Zero Motion Detection interrupt status. + * This bit automatically sets to 1 when a Zero Motion Detection interrupt has + * been generated. The bit clears to 0 after the register has been read. + * @return Current interrupt status + * @see MPU6050_RA_INT_STATUS + * @see MPU6050_INTERRUPT_ZMOT_BIT + */ +bool MPU6050::getIntZeroMotionStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_STATUS, MPU6050_INTERRUPT_ZMOT_BIT, buffer); + return buffer[0]; +} +/** Get FIFO Buffer Overflow interrupt status. + * This bit automatically sets to 1 when a Free Fall interrupt has been + * generated. The bit clears to 0 after the register has been read. + * @return Current interrupt status + * @see MPU6050_RA_INT_STATUS + * @see MPU6050_INTERRUPT_FIFO_OFLOW_BIT + */ +bool MPU6050::getIntFIFOBufferOverflowStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_STATUS, MPU6050_INTERRUPT_FIFO_OFLOW_BIT, buffer); + return buffer[0]; +} +/** Get I2C Master interrupt status. + * This bit automatically sets to 1 when an I2C Master interrupt has been + * generated. For a list of I2C Master interrupts, please refer to Register 54. + * The bit clears to 0 after the register has been read. + * @return Current interrupt status + * @see MPU6050_RA_INT_STATUS + * @see MPU6050_INTERRUPT_I2C_MST_INT_BIT + */ +bool MPU6050::getIntI2CMasterStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_STATUS, MPU6050_INTERRUPT_I2C_MST_INT_BIT, buffer); + return buffer[0]; +} +/** Get Data Ready interrupt status. + * This bit automatically sets to 1 when a Data Ready interrupt has been + * generated. The bit clears to 0 after the register has been read. + * @return Current interrupt status + * @see MPU6050_RA_INT_STATUS + * @see MPU6050_INTERRUPT_DATA_RDY_BIT + */ +bool MPU6050::getIntDataReadyStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_STATUS, MPU6050_INTERRUPT_DATA_RDY_BIT, buffer); + return buffer[0]; +} + +// ACCEL_*OUT_* registers + +/** Get raw 9-axis motion sensor readings (accel/gyro/compass). + * FUNCTION NOT FULLY IMPLEMENTED YET. + * @param ax 16-bit signed integer container for accelerometer X-axis value + * @param ay 16-bit signed integer container for accelerometer Y-axis value + * @param az 16-bit signed integer container for accelerometer Z-axis value + * @param gx 16-bit signed integer container for gyroscope X-axis value + * @param gy 16-bit signed integer container for gyroscope Y-axis value + * @param gz 16-bit signed integer container for gyroscope Z-axis value + * @param mx 16-bit signed integer container for magnetometer X-axis value + * @param my 16-bit signed integer container for magnetometer Y-axis value + * @param mz 16-bit signed integer container for magnetometer Z-axis value + * @see getMotion6() + * @see getAcceleration() + * @see getRotation() + * @see MPU6050_RA_ACCEL_XOUT_H + */ +void MPU6050::getMotion9(int16_t* ax, int16_t* ay, int16_t* az, int16_t* gx, int16_t* gy, int16_t* gz, int16_t* mx, int16_t* my, int16_t* mz) { + getMotion6(ax, ay, az, gx, gy, gz); + // TODO: magnetometer integration +} +/** Get raw 6-axis motion sensor readings (accel/gyro). + * Retrieves all currently available motion sensor values. + * @param ax 16-bit signed integer container for accelerometer X-axis value + * @param ay 16-bit signed integer container for accelerometer Y-axis value + * @param az 16-bit signed integer container for accelerometer Z-axis value + * @param gx 16-bit signed integer container for gyroscope X-axis value + * @param gy 16-bit signed integer container for gyroscope Y-axis value + * @param gz 16-bit signed integer container for gyroscope Z-axis value + * @see getAcceleration() + * @see getRotation() + * @see MPU6050_RA_ACCEL_XOUT_H + */ +void MPU6050::getMotion6(int16_t* ax, int16_t* ay, int16_t* az, int16_t* gx, int16_t* gy, int16_t* gz) { + I2Cdev::readBytes(devAddr, MPU6050_RA_ACCEL_XOUT_H, 14, buffer); + *ax = (((int16_t)buffer[0]) << 8) | buffer[1]; + *ay = (((int16_t)buffer[2]) << 8) | buffer[3]; + *az = (((int16_t)buffer[4]) << 8) | buffer[5]; + *gx = (((int16_t)buffer[8]) << 8) | buffer[9]; + *gy = (((int16_t)buffer[10]) << 8) | buffer[11]; + *gz = (((int16_t)buffer[12]) << 8) | buffer[13]; +} +/** Get 3-axis accelerometer readings. + * These registers store the most recent accelerometer measurements. + * Accelerometer measurements are written to these registers at the Sample Rate + * as defined in Register 25. + * + * The accelerometer measurement registers, along with the temperature + * measurement registers, gyroscope measurement registers, and external sensor + * data registers, are composed of two sets of registers: an internal register + * set and a user-facing read register set. + * + * The data within the accelerometer sensors' internal register set is always + * updated at the Sample Rate. Meanwhile, the user-facing read register set + * duplicates the internal register set's data values whenever the serial + * interface is idle. This guarantees that a burst read of sensor registers will + * read measurements from the same sampling instant. Note that if burst reads + * are not used, the user is responsible for ensuring a set of single byte reads + * correspond to a single sampling instant by checking the Data Ready interrupt. + * + * Each 16-bit accelerometer measurement has a full scale defined in ACCEL_FS + * (Register 28). For each full scale setting, the accelerometers' sensitivity + * per LSB in ACCEL_xOUT is shown in the table below: + * + * <pre> + * AFS_SEL | Full Scale Range | LSB Sensitivity + * --------+------------------+---------------- + * 0 | +/- 2g | 8192 LSB/mg + * 1 | +/- 4g | 4096 LSB/mg + * 2 | +/- 8g | 2048 LSB/mg + * 3 | +/- 16g | 1024 LSB/mg + * </pre> + * + * @param x 16-bit signed integer container for X-axis acceleration + * @param y 16-bit signed integer container for Y-axis acceleration + * @param z 16-bit signed integer container for Z-axis acceleration + * @see MPU6050_RA_GYRO_XOUT_H + */ +void MPU6050::getAcceleration(int16_t* x, int16_t* y, int16_t* z) { + I2Cdev::readBytes(devAddr, MPU6050_RA_ACCEL_XOUT_H, 6, buffer); + *x = (((int16_t)buffer[0]) << 8) | buffer[1]; + *y = (((int16_t)buffer[2]) << 8) | buffer[3]; + *z = (((int16_t)buffer[4]) << 8) | buffer[5]; +} +/** Get X-axis accelerometer reading. + * @return X-axis acceleration measurement in 16-bit 2's complement format + * @see getMotion6() + * @see MPU6050_RA_ACCEL_XOUT_H + */ +int16_t MPU6050::getAccelerationX() { + I2Cdev::readBytes(devAddr, MPU6050_RA_ACCEL_XOUT_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +/** Get Y-axis accelerometer reading. + * @return Y-axis acceleration measurement in 16-bit 2's complement format + * @see getMotion6() + * @see MPU6050_RA_ACCEL_YOUT_H + */ +int16_t MPU6050::getAccelerationY() { + I2Cdev::readBytes(devAddr, MPU6050_RA_ACCEL_YOUT_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +/** Get Z-axis accelerometer reading. + * @return Z-axis acceleration measurement in 16-bit 2's complement format + * @see getMotion6() + * @see MPU6050_RA_ACCEL_ZOUT_H + */ +int16_t MPU6050::getAccelerationZ() { + I2Cdev::readBytes(devAddr, MPU6050_RA_ACCEL_ZOUT_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} + +// TEMP_OUT_* registers + +/** Get current internal temperature. + * @return Temperature reading in 16-bit 2's complement format + * @see MPU6050_RA_TEMP_OUT_H + */ +int16_t MPU6050::getTemperature() { + I2Cdev::readBytes(devAddr, MPU6050_RA_TEMP_OUT_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} + +// GYRO_*OUT_* registers + +/** Get 3-axis gyroscope readings. + * These gyroscope measurement registers, along with the accelerometer + * measurement registers, temperature measurement registers, and external sensor + * data registers, are composed of two sets of registers: an internal register + * set and a user-facing read register set. + * The data within the gyroscope sensors' internal register set is always + * updated at the Sample Rate. Meanwhile, the user-facing read register set + * duplicates the internal register set's data values whenever the serial + * interface is idle. This guarantees that a burst read of sensor registers will + * read measurements from the same sampling instant. Note that if burst reads + * are not used, the user is responsible for ensuring a set of single byte reads + * correspond to a single sampling instant by checking the Data Ready interrupt. + * + * Each 16-bit gyroscope measurement has a full scale defined in FS_SEL + * (Register 27). For each full scale setting, the gyroscopes' sensitivity per + * LSB in GYRO_xOUT is shown in the table below: + * + * <pre> + * FS_SEL | Full Scale Range | LSB Sensitivity + * -------+--------------------+---------------- + * 0 | +/- 250 degrees/s | 131 LSB/deg/s + * 1 | +/- 500 degrees/s | 65.5 LSB/deg/s + * 2 | +/- 1000 degrees/s | 32.8 LSB/deg/s + * 3 | +/- 2000 degrees/s | 16.4 LSB/deg/s + * </pre> + * + * @param x 16-bit signed integer container for X-axis rotation + * @param y 16-bit signed integer container for Y-axis rotation + * @param z 16-bit signed integer container for Z-axis rotation + * @see getMotion6() + * @see MPU6050_RA_GYRO_XOUT_H + */ +void MPU6050::getRotation(int16_t* x, int16_t* y, int16_t* z) { + I2Cdev::readBytes(devAddr, MPU6050_RA_GYRO_XOUT_H, 6, buffer); + *x = (((int16_t)buffer[0]) << 8) | buffer[1]; + *y = (((int16_t)buffer[2]) << 8) | buffer[3]; + *z = (((int16_t)buffer[4]) << 8) | buffer[5]; +} +/** Get X-axis gyroscope reading. + * @return X-axis rotation measurement in 16-bit 2's complement format + * @see getMotion6() + * @see MPU6050_RA_GYRO_XOUT_H + */ +int16_t MPU6050::getRotationX() { + I2Cdev::readBytes(devAddr, MPU6050_RA_GYRO_XOUT_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +/** Get Y-axis gyroscope reading. + * @return Y-axis rotation measurement in 16-bit 2's complement format + * @see getMotion6() + * @see MPU6050_RA_GYRO_YOUT_H + */ +int16_t MPU6050::getRotationY() { + I2Cdev::readBytes(devAddr, MPU6050_RA_GYRO_YOUT_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +/** Get Z-axis gyroscope reading. + * @return Z-axis rotation measurement in 16-bit 2's complement format + * @see getMotion6() + * @see MPU6050_RA_GYRO_ZOUT_H + */ +int16_t MPU6050::getRotationZ() { + I2Cdev::readBytes(devAddr, MPU6050_RA_GYRO_ZOUT_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} + +// EXT_SENS_DATA_* registers + +/** Read single byte from external sensor data register. + * These registers store data read from external sensors by the Slave 0, 1, 2, + * and 3 on the auxiliary I2C interface. Data read by Slave 4 is stored in + * I2C_SLV4_DI (Register 53). + * + * External sensor data is written to these registers at the Sample Rate as + * defined in Register 25. This access rate can be reduced by using the Slave + * Delay Enable registers (Register 103). + * + * External sensor data registers, along with the gyroscope measurement + * registers, accelerometer measurement registers, and temperature measurement + * registers, are composed of two sets of registers: an internal register set + * and a user-facing read register set. + * + * The data within the external sensors' internal register set is always updated + * at the Sample Rate (or the reduced access rate) whenever the serial interface + * is idle. This guarantees that a burst read of sensor registers will read + * measurements from the same sampling instant. Note that if burst reads are not + * used, the user is responsible for ensuring a set of single byte reads + * correspond to a single sampling instant by checking the Data Ready interrupt. + * + * Data is placed in these external sensor data registers according to + * I2C_SLV0_CTRL, I2C_SLV1_CTRL, I2C_SLV2_CTRL, and I2C_SLV3_CTRL (Registers 39, + * 42, 45, and 48). When more than zero bytes are read (I2C_SLVx_LEN > 0) from + * an enabled slave (I2C_SLVx_EN = 1), the slave is read at the Sample Rate (as + * defined in Register 25) or delayed rate (if specified in Register 52 and + * 103). During each Sample cycle, slave reads are performed in order of Slave + * number. If all slaves are enabled with more than zero bytes to be read, the + * order will be Slave 0, followed by Slave 1, Slave 2, and Slave 3. + * + * Each enabled slave will have EXT_SENS_DATA registers associated with it by + * number of bytes read (I2C_SLVx_LEN) in order of slave number, starting from + * EXT_SENS_DATA_00. Note that this means enabling or disabling a slave may + * change the higher numbered slaves' associated registers. Furthermore, if + * fewer total bytes are being read from the external sensors as a result of + * such a change, then the data remaining in the registers which no longer have + * an associated slave device (i.e. high numbered registers) will remain in + * these previously allocated registers unless reset. + * + * If the sum of the read lengths of all SLVx transactions exceed the number of + * available EXT_SENS_DATA registers, the excess bytes will be dropped. There + * are 24 EXT_SENS_DATA registers and hence the total read lengths between all + * the slaves cannot be greater than 24 or some bytes will be lost. + * + * Note: Slave 4's behavior is distinct from that of Slaves 0-3. For further + * information regarding the characteristics of Slave 4, please refer to + * Registers 49 to 53. + * + * EXAMPLE: + * Suppose that Slave 0 is enabled with 4 bytes to be read (I2C_SLV0_EN = 1 and + * I2C_SLV0_LEN = 4) while Slave 1 is enabled with 2 bytes to be read so that + * I2C_SLV1_EN = 1 and I2C_SLV1_LEN = 2. In such a situation, EXT_SENS_DATA _00 + * through _03 will be associated with Slave 0, while EXT_SENS_DATA _04 and 05 + * will be associated with Slave 1. If Slave 2 is enabled as well, registers + * starting from EXT_SENS_DATA_06 will be allocated to Slave 2. + * + * If Slave 2 is disabled while Slave 3 is enabled in this same situation, then + * registers starting from EXT_SENS_DATA_06 will be allocated to Slave 3 + * instead. + * + * REGISTER ALLOCATION FOR DYNAMIC DISABLE VS. NORMAL DISABLE: + * If a slave is disabled at any time, the space initially allocated to the + * slave in the EXT_SENS_DATA register, will remain associated with that slave. + * This is to avoid dynamic adjustment of the register allocation. + * + * The allocation of the EXT_SENS_DATA registers is recomputed only when (1) all + * slaves are disabled, or (2) the I2C_MST_RST bit is set (Register 106). + * + * This above is also true if one of the slaves gets NACKed and stops + * functioning. + * + * @param position Starting position (0-23) + * @return Byte read from register + */ +uint8_t MPU6050::getExternalSensorByte(int position) { + I2Cdev::readByte(devAddr, MPU6050_RA_EXT_SENS_DATA_00 + position, buffer); + return buffer[0]; +} +/** Read word (2 bytes) from external sensor data registers. + * @param position Starting position (0-21) + * @return Word read from register + * @see getExternalSensorByte() + */ +uint16_t MPU6050::getExternalSensorWord(int position) { + I2Cdev::readBytes(devAddr, MPU6050_RA_EXT_SENS_DATA_00 + position, 2, buffer); + return (((uint16_t)buffer[0]) << 8) | buffer[1]; +} +/** Read double word (4 bytes) from external sensor data registers. + * @param position Starting position (0-20) + * @return Double word read from registers + * @see getExternalSensorByte() + */ +uint32_t MPU6050::getExternalSensorDWord(int position) { + I2Cdev::readBytes(devAddr, MPU6050_RA_EXT_SENS_DATA_00 + position, 4, buffer); + return (((uint32_t)buffer[0]) << 24) | (((uint32_t)buffer[1]) << 16) | (((uint16_t)buffer[2]) << 8) | buffer[3]; +} + +// MOT_DETECT_STATUS register + +/** Get full motion detection status register content (all bits). + * @return Motion detection status byte + * @see MPU6050_RA_MOT_DETECT_STATUS + */ +uint8_t MPU6050::getMotionStatus() { + I2Cdev::readByte(devAddr, MPU6050_RA_MOT_DETECT_STATUS, buffer); + return buffer[0]; +} +/** Get X-axis negative motion detection interrupt status. + * @return Motion detection status + * @see MPU6050_RA_MOT_DETECT_STATUS + * @see MPU6050_MOTION_MOT_XNEG_BIT + */ +bool MPU6050::getXNegMotionDetected() { + I2Cdev::readBit(devAddr, MPU6050_RA_MOT_DETECT_STATUS, MPU6050_MOTION_MOT_XNEG_BIT, buffer); + return buffer[0]; +} +/** Get X-axis positive motion detection interrupt status. + * @return Motion detection status + * @see MPU6050_RA_MOT_DETECT_STATUS + * @see MPU6050_MOTION_MOT_XPOS_BIT + */ +bool MPU6050::getXPosMotionDetected() { + I2Cdev::readBit(devAddr, MPU6050_RA_MOT_DETECT_STATUS, MPU6050_MOTION_MOT_XPOS_BIT, buffer); + return buffer[0]; +} +/** Get Y-axis negative motion detection interrupt status. + * @return Motion detection status + * @see MPU6050_RA_MOT_DETECT_STATUS + * @see MPU6050_MOTION_MOT_YNEG_BIT + */ +bool MPU6050::getYNegMotionDetected() { + I2Cdev::readBit(devAddr, MPU6050_RA_MOT_DETECT_STATUS, MPU6050_MOTION_MOT_YNEG_BIT, buffer); + return buffer[0]; +} +/** Get Y-axis positive motion detection interrupt status. + * @return Motion detection status + * @see MPU6050_RA_MOT_DETECT_STATUS + * @see MPU6050_MOTION_MOT_YPOS_BIT + */ +bool MPU6050::getYPosMotionDetected() { + I2Cdev::readBit(devAddr, MPU6050_RA_MOT_DETECT_STATUS, MPU6050_MOTION_MOT_YPOS_BIT, buffer); + return buffer[0]; +} +/** Get Z-axis negative motion detection interrupt status. + * @return Motion detection status + * @see MPU6050_RA_MOT_DETECT_STATUS + * @see MPU6050_MOTION_MOT_ZNEG_BIT + */ +bool MPU6050::getZNegMotionDetected() { + I2Cdev::readBit(devAddr, MPU6050_RA_MOT_DETECT_STATUS, MPU6050_MOTION_MOT_ZNEG_BIT, buffer); + return buffer[0]; +} +/** Get Z-axis positive motion detection interrupt status. + * @return Motion detection status + * @see MPU6050_RA_MOT_DETECT_STATUS + * @see MPU6050_MOTION_MOT_ZPOS_BIT + */ +bool MPU6050::getZPosMotionDetected() { + I2Cdev::readBit(devAddr, MPU6050_RA_MOT_DETECT_STATUS, MPU6050_MOTION_MOT_ZPOS_BIT, buffer); + return buffer[0]; +} +/** Get zero motion detection interrupt status. + * @return Motion detection status + * @see MPU6050_RA_MOT_DETECT_STATUS + * @see MPU6050_MOTION_MOT_ZRMOT_BIT + */ +bool MPU6050::getZeroMotionDetected() { + I2Cdev::readBit(devAddr, MPU6050_RA_MOT_DETECT_STATUS, MPU6050_MOTION_MOT_ZRMOT_BIT, buffer); + return buffer[0]; +} + +// I2C_SLV*_DO register + +/** Write byte to Data Output container for specified slave. + * This register holds the output data written into Slave when Slave is set to + * write mode. For further information regarding Slave control, please + * refer to Registers 37 to 39 and immediately following. + * @param num Slave number (0-3) + * @param data Byte to write + * @see MPU6050_RA_I2C_SLV0_DO + */ +void MPU6050::setSlaveOutputByte(uint8_t num, uint8_t data) { + if (num > 3) return; + I2Cdev::writeByte(devAddr, MPU6050_RA_I2C_SLV0_DO + num, data); +} + +// I2C_MST_DELAY_CTRL register + +/** Get external data shadow delay enabled status. + * This register is used to specify the timing of external sensor data + * shadowing. When DELAY_ES_SHADOW is set to 1, shadowing of external + * sensor data is delayed until all data has been received. + * @return Current external data shadow delay enabled status. + * @see MPU6050_RA_I2C_MST_DELAY_CTRL + * @see MPU6050_DELAYCTRL_DELAY_ES_SHADOW_BIT + */ +bool MPU6050::getExternalShadowDelayEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_DELAY_CTRL, MPU6050_DELAYCTRL_DELAY_ES_SHADOW_BIT, buffer); + return buffer[0]; +} +/** Set external data shadow delay enabled status. + * @param enabled New external data shadow delay enabled status. + * @see getExternalShadowDelayEnabled() + * @see MPU6050_RA_I2C_MST_DELAY_CTRL + * @see MPU6050_DELAYCTRL_DELAY_ES_SHADOW_BIT + */ +void MPU6050::setExternalShadowDelayEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_MST_DELAY_CTRL, MPU6050_DELAYCTRL_DELAY_ES_SHADOW_BIT, enabled); +} +/** Get slave delay enabled status. + * When a particular slave delay is enabled, the rate of access for the that + * slave device is reduced. When a slave's access rate is decreased relative to + * the Sample Rate, the slave is accessed every: + * + * 1 / (1 + I2C_MST_DLY) Samples + * + * This base Sample Rate in turn is determined by SMPLRT_DIV (register * 25) + * and DLPF_CFG (register 26). + * + * For further information regarding I2C_MST_DLY, please refer to register 52. + * For further information regarding the Sample Rate, please refer to register 25. + * + * @param num Slave number (0-4) + * @return Current slave delay enabled status. + * @see MPU6050_RA_I2C_MST_DELAY_CTRL + * @see MPU6050_DELAYCTRL_I2C_SLV0_DLY_EN_BIT + */ +bool MPU6050::getSlaveDelayEnabled(uint8_t num) { + // MPU6050_DELAYCTRL_I2C_SLV4_DLY_EN_BIT is 4, SLV3 is 3, etc. + if (num > 4) return 0; + I2Cdev::readBit(devAddr, MPU6050_RA_I2C_MST_DELAY_CTRL, num, buffer); + return buffer[0]; +} +/** Set slave delay enabled status. + * @param num Slave number (0-4) + * @param enabled New slave delay enabled status. + * @see MPU6050_RA_I2C_MST_DELAY_CTRL + * @see MPU6050_DELAYCTRL_I2C_SLV0_DLY_EN_BIT + */ +void MPU6050::setSlaveDelayEnabled(uint8_t num, bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_I2C_MST_DELAY_CTRL, num, enabled); +} + +// SIGNAL_PATH_RESET register + +/** Reset gyroscope signal path. + * The reset will revert the signal path analog to digital converters and + * filters to their power up configurations. + * @see MPU6050_RA_SIGNAL_PATH_RESET + * @see MPU6050_PATHRESET_GYRO_RESET_BIT + */ +void MPU6050::resetGyroscopePath() { + I2Cdev::writeBit(devAddr, MPU6050_RA_SIGNAL_PATH_RESET, MPU6050_PATHRESET_GYRO_RESET_BIT, true); +} +/** Reset accelerometer signal path. + * The reset will revert the signal path analog to digital converters and + * filters to their power up configurations. + * @see MPU6050_RA_SIGNAL_PATH_RESET + * @see MPU6050_PATHRESET_ACCEL_RESET_BIT + */ +void MPU6050::resetAccelerometerPath() { + I2Cdev::writeBit(devAddr, MPU6050_RA_SIGNAL_PATH_RESET, MPU6050_PATHRESET_ACCEL_RESET_BIT, true); +} +/** Reset temperature sensor signal path. + * The reset will revert the signal path analog to digital converters and + * filters to their power up configurations. + * @see MPU6050_RA_SIGNAL_PATH_RESET + * @see MPU6050_PATHRESET_TEMP_RESET_BIT + */ +void MPU6050::resetTemperaturePath() { + I2Cdev::writeBit(devAddr, MPU6050_RA_SIGNAL_PATH_RESET, MPU6050_PATHRESET_TEMP_RESET_BIT, true); +} + +// MOT_DETECT_CTRL register + +/** Get accelerometer power-on delay. + * The accelerometer data path provides samples to the sensor registers, Motion + * detection, Zero Motion detection, and Free Fall detection modules. The + * signal path contains filters which must be flushed on wake-up with new + * samples before the detection modules begin operations. The default wake-up + * delay, of 4ms can be lengthened by up to 3ms. This additional delay is + * specified in ACCEL_ON_DELAY in units of 1 LSB = 1 ms. The user may select + * any value above zero unless instructed otherwise by InvenSense. Please refer + * to Section 8 of the MPU-6000/MPU-6050 Product Specification document for + * further information regarding the detection modules. + * @return Current accelerometer power-on delay + * @see MPU6050_RA_MOT_DETECT_CTRL + * @see MPU6050_DETECT_ACCEL_ON_DELAY_BIT + */ +uint8_t MPU6050::getAccelerometerPowerOnDelay() { + I2Cdev::readBits(devAddr, MPU6050_RA_MOT_DETECT_CTRL, MPU6050_DETECT_ACCEL_ON_DELAY_BIT, MPU6050_DETECT_ACCEL_ON_DELAY_LENGTH, buffer); + return buffer[0]; +} +/** Set accelerometer power-on delay. + * @param delay New accelerometer power-on delay (0-3) + * @see getAccelerometerPowerOnDelay() + * @see MPU6050_RA_MOT_DETECT_CTRL + * @see MPU6050_DETECT_ACCEL_ON_DELAY_BIT + */ +void MPU6050::setAccelerometerPowerOnDelay(uint8_t delay) { + I2Cdev::writeBits(devAddr, MPU6050_RA_MOT_DETECT_CTRL, MPU6050_DETECT_ACCEL_ON_DELAY_BIT, MPU6050_DETECT_ACCEL_ON_DELAY_LENGTH, delay); +} +/** Get Free Fall detection counter decrement configuration. + * Detection is registered by the Free Fall detection module after accelerometer + * measurements meet their respective threshold conditions over a specified + * number of samples. When the threshold conditions are met, the corresponding + * detection counter increments by 1. The user may control the rate at which the + * detection counter decrements when the threshold condition is not met by + * configuring FF_COUNT. The decrement rate can be set according to the + * following table: + * + * <pre> + * FF_COUNT | Counter Decrement + * ---------+------------------ + * 0 | Reset + * 1 | 1 + * 2 | 2 + * 3 | 4 + * </pre> + * + * When FF_COUNT is configured to 0 (reset), any non-qualifying sample will + * reset the counter to 0. For further information on Free Fall detection, + * please refer to Registers 29 to 32. + * + * @return Current decrement configuration + * @see MPU6050_RA_MOT_DETECT_CTRL + * @see MPU6050_DETECT_FF_COUNT_BIT + */ +uint8_t MPU6050::getFreefallDetectionCounterDecrement() { + I2Cdev::readBits(devAddr, MPU6050_RA_MOT_DETECT_CTRL, MPU6050_DETECT_FF_COUNT_BIT, MPU6050_DETECT_FF_COUNT_LENGTH, buffer); + return buffer[0]; +} +/** Set Free Fall detection counter decrement configuration. + * @param decrement New decrement configuration value + * @see getFreefallDetectionCounterDecrement() + * @see MPU6050_RA_MOT_DETECT_CTRL + * @see MPU6050_DETECT_FF_COUNT_BIT + */ +void MPU6050::setFreefallDetectionCounterDecrement(uint8_t decrement) { + I2Cdev::writeBits(devAddr, MPU6050_RA_MOT_DETECT_CTRL, MPU6050_DETECT_FF_COUNT_BIT, MPU6050_DETECT_FF_COUNT_LENGTH, decrement); +} +/** Get Motion detection counter decrement configuration. + * Detection is registered by the Motion detection module after accelerometer + * measurements meet their respective threshold conditions over a specified + * number of samples. When the threshold conditions are met, the corresponding + * detection counter increments by 1. The user may control the rate at which the + * detection counter decrements when the threshold condition is not met by + * configuring MOT_COUNT. The decrement rate can be set according to the + * following table: + * + * <pre> + * MOT_COUNT | Counter Decrement + * ----------+------------------ + * 0 | Reset + * 1 | 1 + * 2 | 2 + * 3 | 4 + * </pre> + * + * When MOT_COUNT is configured to 0 (reset), any non-qualifying sample will + * reset the counter to 0. For further information on Motion detection, + * please refer to Registers 29 to 32. + * + */ +uint8_t MPU6050::getMotionDetectionCounterDecrement() { + I2Cdev::readBits(devAddr, MPU6050_RA_MOT_DETECT_CTRL, MPU6050_DETECT_MOT_COUNT_BIT, MPU6050_DETECT_MOT_COUNT_LENGTH, buffer); + return buffer[0]; +} +/** Set Motion detection counter decrement configuration. + * @param decrement New decrement configuration value + * @see getMotionDetectionCounterDecrement() + * @see MPU6050_RA_MOT_DETECT_CTRL + * @see MPU6050_DETECT_MOT_COUNT_BIT + */ +void MPU6050::setMotionDetectionCounterDecrement(uint8_t decrement) { + I2Cdev::writeBits(devAddr, MPU6050_RA_MOT_DETECT_CTRL, MPU6050_DETECT_MOT_COUNT_BIT, MPU6050_DETECT_MOT_COUNT_LENGTH, decrement); +} + +// USER_CTRL register + +/** Get FIFO enabled status. + * When this bit is set to 0, the FIFO buffer is disabled. The FIFO buffer + * cannot be written to or read from while disabled. The FIFO buffer's state + * does not change unless the MPU-60X0 is power cycled. + * @return Current FIFO enabled status + * @see MPU6050_RA_USER_CTRL + * @see MPU6050_USERCTRL_FIFO_EN_BIT + */ +bool MPU6050::getFIFOEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_FIFO_EN_BIT, buffer); + return buffer[0]; +} +/** Set FIFO enabled status. + * @param enabled New FIFO enabled status + * @see getFIFOEnabled() + * @see MPU6050_RA_USER_CTRL + * @see MPU6050_USERCTRL_FIFO_EN_BIT + */ +void MPU6050::setFIFOEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_FIFO_EN_BIT, enabled); +} +/** Get I2C Master Mode enabled status. + * When this mode is enabled, the MPU-60X0 acts as the I2C Master to the + * external sensor slave devices on the auxiliary I2C bus. When this bit is + * cleared to 0, the auxiliary I2C bus lines (AUX_DA and AUX_CL) are logically + * driven by the primary I2C bus (SDA and SCL). This is a precondition to + * enabling Bypass Mode. For further information regarding Bypass Mode, please + * refer to Register 55. + * @return Current I2C Master Mode enabled status + * @see MPU6050_RA_USER_CTRL + * @see MPU6050_USERCTRL_I2C_MST_EN_BIT + */ +bool MPU6050::getI2CMasterModeEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_I2C_MST_EN_BIT, buffer); + return buffer[0]; +} +/** Set I2C Master Mode enabled status. + * @param enabled New I2C Master Mode enabled status + * @see getI2CMasterModeEnabled() + * @see MPU6050_RA_USER_CTRL + * @see MPU6050_USERCTRL_I2C_MST_EN_BIT + */ +void MPU6050::setI2CMasterModeEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_I2C_MST_EN_BIT, enabled); +} +/** Switch from I2C to SPI mode (MPU-6000 only) + * If this is set, the primary SPI interface will be enabled in place of the + * disabled primary I2C interface. + */ +void MPU6050::switchSPIEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_I2C_IF_DIS_BIT, enabled); +} +/** Reset the FIFO. + * This bit resets the FIFO buffer when set to 1 while FIFO_EN equals 0. This + * bit automatically clears to 0 after the reset has been triggered. + * @see MPU6050_RA_USER_CTRL + * @see MPU6050_USERCTRL_FIFO_RESET_BIT + */ +void MPU6050::resetFIFO() { + I2Cdev::writeBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_FIFO_RESET_BIT, true); +} +/** Reset the I2C Master. + * This bit resets the I2C Master when set to 1 while I2C_MST_EN equals 0. + * This bit automatically clears to 0 after the reset has been triggered. + * @see MPU6050_RA_USER_CTRL + * @see MPU6050_USERCTRL_I2C_MST_RESET_BIT + */ +void MPU6050::resetI2CMaster() { + I2Cdev::writeBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_I2C_MST_RESET_BIT, true); +} +/** Reset all sensor registers and signal paths. + * When set to 1, this bit resets the signal paths for all sensors (gyroscopes, + * accelerometers, and temperature sensor). This operation will also clear the + * sensor registers. This bit automatically clears to 0 after the reset has been + * triggered. + * + * When resetting only the signal path (and not the sensor registers), please + * use Register 104, SIGNAL_PATH_RESET. + * + * @see MPU6050_RA_USER_CTRL + * @see MPU6050_USERCTRL_SIG_COND_RESET_BIT + */ +void MPU6050::resetSensors() { + I2Cdev::writeBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_SIG_COND_RESET_BIT, true); +} + +// PWR_MGMT_1 register + +/** Trigger a full device reset. + * A small delay of ~50ms may be desirable after triggering a reset. + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_DEVICE_RESET_BIT + */ +void MPU6050::reset() { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_DEVICE_RESET_BIT, true); +} +/** Get sleep mode status. + * Setting the SLEEP bit in the register puts the device into very low power + * sleep mode. In this mode, only the serial interface and internal registers + * remain active, allowing for a very low standby current. Clearing this bit + * puts the device back into normal mode. To save power, the individual standby + * selections for each of the gyros should be used if any gyro axis is not used + * by the application. + * @return Current sleep mode enabled status + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_SLEEP_BIT + */ +bool MPU6050::getSleepEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_SLEEP_BIT, buffer); + return buffer[0]; +} +/** Set sleep mode status. + * @param enabled New sleep mode enabled status + * @see getSleepEnabled() + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_SLEEP_BIT + */ +void MPU6050::setSleepEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_SLEEP_BIT, enabled); +} +/** Get wake cycle enabled status. + * When this bit is set to 1 and SLEEP is disabled, the MPU-60X0 will cycle + * between sleep mode and waking up to take a single sample of data from active + * sensors at a rate determined by LP_WAKE_CTRL (register 108). + * @return Current sleep mode enabled status + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_CYCLE_BIT + */ +bool MPU6050::getWakeCycleEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_CYCLE_BIT, buffer); + return buffer[0]; +} +/** Set wake cycle enabled status. + * @param enabled New sleep mode enabled status + * @see getWakeCycleEnabled() + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_CYCLE_BIT + */ +void MPU6050::setWakeCycleEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_CYCLE_BIT, enabled); +} +/** Get temperature sensor enabled status. + * Control the usage of the internal temperature sensor. + * + * Note: this register stores the *disabled* value, but for consistency with the + * rest of the code, the function is named and used with standard true/false + * values to indicate whether the sensor is enabled or disabled, respectively. + * + * @return Current temperature sensor enabled status + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_TEMP_DIS_BIT + */ +bool MPU6050::getTempSensorEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_TEMP_DIS_BIT, buffer); + return buffer[0] == 0; // 1 is actually disabled here +} +/** Set temperature sensor enabled status. + * Note: this register stores the *disabled* value, but for consistency with the + * rest of the code, the function is named and used with standard true/false + * values to indicate whether the sensor is enabled or disabled, respectively. + * + * @param enabled New temperature sensor enabled status + * @see getTempSensorEnabled() + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_TEMP_DIS_BIT + */ +void MPU6050::setTempSensorEnabled(bool enabled) { + // 1 is actually disabled here + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_TEMP_DIS_BIT, !enabled); +} +/** Get clock source setting. + * @return Current clock source setting + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_CLKSEL_BIT + * @see MPU6050_PWR1_CLKSEL_LENGTH + */ +uint8_t MPU6050::getClockSource() { + I2Cdev::readBits(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_CLKSEL_BIT, MPU6050_PWR1_CLKSEL_LENGTH, buffer); + return buffer[0]; +} +/** Set clock source setting. + * An internal 8MHz oscillator, gyroscope based clock, or external sources can + * be selected as the MPU-60X0 clock source. When the internal 8 MHz oscillator + * or an external source is chosen as the clock source, the MPU-60X0 can operate + * in low power modes with the gyroscopes disabled. + * + * Upon power up, the MPU-60X0 clock source defaults to the internal oscillator. + * However, it is highly recommended that the device be configured to use one of + * the gyroscopes (or an external clock source) as the clock reference for + * improved stability. The clock source can be selected according to the following table: + * + * <pre> + * CLK_SEL | Clock Source + * --------+-------------------------------------- + * 0 | Internal oscillator + * 1 | PLL with X Gyro reference + * 2 | PLL with Y Gyro reference + * 3 | PLL with Z Gyro reference + * 4 | PLL with external 32.768kHz reference + * 5 | PLL with external 19.2MHz reference + * 6 | Reserved + * 7 | Stops the clock and keeps the timing generator in reset + * </pre> + * + * @param source New clock source setting + * @see getClockSource() + * @see MPU6050_RA_PWR_MGMT_1 + * @see MPU6050_PWR1_CLKSEL_BIT + * @see MPU6050_PWR1_CLKSEL_LENGTH + */ +void MPU6050::setClockSource(uint8_t source) { + I2Cdev::writeBits(devAddr, MPU6050_RA_PWR_MGMT_1, MPU6050_PWR1_CLKSEL_BIT, MPU6050_PWR1_CLKSEL_LENGTH, source); +} + +// PWR_MGMT_2 register + +/** Get wake frequency in Accel-Only Low Power Mode. + * The MPU-60X0 can be put into Accerlerometer Only Low Power Mode by setting + * PWRSEL to 1 in the Power Management 1 register (Register 107). In this mode, + * the device will power off all devices except for the primary I2C interface, + * waking only the accelerometer at fixed intervals to take a single + * measurement. The frequency of wake-ups can be configured with LP_WAKE_CTRL + * as shown below: + * + * <pre> + * LP_WAKE_CTRL | Wake-up Frequency + * -------------+------------------ + * 0 | 1.25 Hz + * 1 | 2.5 Hz + * 2 | 5 Hz + * 3 | 10 Hz + * </pre> + * + * For further information regarding the MPU-60X0's power modes, please refer to + * Register 107. + * + * @return Current wake frequency + * @see MPU6050_RA_PWR_MGMT_2 + */ +uint8_t MPU6050::getWakeFrequency() { + I2Cdev::readBits(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_LP_WAKE_CTRL_BIT, MPU6050_PWR2_LP_WAKE_CTRL_LENGTH, buffer); + return buffer[0]; +} +/** Set wake frequency in Accel-Only Low Power Mode. + * @param frequency New wake frequency + * @see MPU6050_RA_PWR_MGMT_2 + */ +void MPU6050::setWakeFrequency(uint8_t frequency) { + I2Cdev::writeBits(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_LP_WAKE_CTRL_BIT, MPU6050_PWR2_LP_WAKE_CTRL_LENGTH, frequency); +} + +/** Get X-axis accelerometer standby enabled status. + * If enabled, the X-axis will not gather or report data (or use power). + * @return Current X-axis standby enabled status + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_XA_BIT + */ +bool MPU6050::getStandbyXAccelEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_XA_BIT, buffer); + return buffer[0]; +} +/** Set X-axis accelerometer standby enabled status. + * @param New X-axis standby enabled status + * @see getStandbyXAccelEnabled() + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_XA_BIT + */ +void MPU6050::setStandbyXAccelEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_XA_BIT, enabled); +} +/** Get Y-axis accelerometer standby enabled status. + * If enabled, the Y-axis will not gather or report data (or use power). + * @return Current Y-axis standby enabled status + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_YA_BIT + */ +bool MPU6050::getStandbyYAccelEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_YA_BIT, buffer); + return buffer[0]; +} +/** Set Y-axis accelerometer standby enabled status. + * @param New Y-axis standby enabled status + * @see getStandbyYAccelEnabled() + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_YA_BIT + */ +void MPU6050::setStandbyYAccelEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_YA_BIT, enabled); +} +/** Get Z-axis accelerometer standby enabled status. + * If enabled, the Z-axis will not gather or report data (or use power). + * @return Current Z-axis standby enabled status + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_ZA_BIT + */ +bool MPU6050::getStandbyZAccelEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_ZA_BIT, buffer); + return buffer[0]; +} +/** Set Z-axis accelerometer standby enabled status. + * @param New Z-axis standby enabled status + * @see getStandbyZAccelEnabled() + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_ZA_BIT + */ +void MPU6050::setStandbyZAccelEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_ZA_BIT, enabled); +} +/** Get X-axis gyroscope standby enabled status. + * If enabled, the X-axis will not gather or report data (or use power). + * @return Current X-axis standby enabled status + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_XG_BIT + */ +bool MPU6050::getStandbyXGyroEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_XG_BIT, buffer); + return buffer[0]; +} +/** Set X-axis gyroscope standby enabled status. + * @param New X-axis standby enabled status + * @see getStandbyXGyroEnabled() + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_XG_BIT + */ +void MPU6050::setStandbyXGyroEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_XG_BIT, enabled); +} +/** Get Y-axis gyroscope standby enabled status. + * If enabled, the Y-axis will not gather or report data (or use power). + * @return Current Y-axis standby enabled status + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_YG_BIT + */ +bool MPU6050::getStandbyYGyroEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_YG_BIT, buffer); + return buffer[0]; +} +/** Set Y-axis gyroscope standby enabled status. + * @param New Y-axis standby enabled status + * @see getStandbyYGyroEnabled() + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_YG_BIT + */ +void MPU6050::setStandbyYGyroEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_YG_BIT, enabled); +} +/** Get Z-axis gyroscope standby enabled status. + * If enabled, the Z-axis will not gather or report data (or use power). + * @return Current Z-axis standby enabled status + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_ZG_BIT + */ +bool MPU6050::getStandbyZGyroEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_ZG_BIT, buffer); + return buffer[0]; +} +/** Set Z-axis gyroscope standby enabled status. + * @param New Z-axis standby enabled status + * @see getStandbyZGyroEnabled() + * @see MPU6050_RA_PWR_MGMT_2 + * @see MPU6050_PWR2_STBY_ZG_BIT + */ +void MPU6050::setStandbyZGyroEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_PWR_MGMT_2, MPU6050_PWR2_STBY_ZG_BIT, enabled); +} + +// FIFO_COUNT* registers + +/** Get current FIFO buffer size. + * This value indicates the number of bytes stored in the FIFO buffer. This + * number is in turn the number of bytes that can be read from the FIFO buffer + * and it is directly proportional to the number of samples available given the + * set of sensor data bound to be stored in the FIFO (register 35 and 36). + * @return Current FIFO buffer size + */ +uint16_t MPU6050::getFIFOCount() { + I2Cdev::readBytes(devAddr, MPU6050_RA_FIFO_COUNTH, 2, buffer); + return (((uint16_t)buffer[0]) << 8) | buffer[1]; +} + +// FIFO_R_W register + +/** Get byte from FIFO buffer. + * This register is used to read and write data from the FIFO buffer. Data is + * written to the FIFO in order of register number (from lowest to highest). If + * all the FIFO enable flags (see below) are enabled and all External Sensor + * Data registers (Registers 73 to 96) are associated with a Slave device, the + * contents of registers 59 through 96 will be written in order at the Sample + * Rate. + * + * The contents of the sensor data registers (Registers 59 to 96) are written + * into the FIFO buffer when their corresponding FIFO enable flags are set to 1 + * in FIFO_EN (Register 35). An additional flag for the sensor data registers + * associated with I2C Slave 3 can be found in I2C_MST_CTRL (Register 36). + * + * If the FIFO buffer has overflowed, the status bit FIFO_OFLOW_INT is + * automatically set to 1. This bit is located in INT_STATUS (Register 58). + * When the FIFO buffer has overflowed, the oldest data will be lost and new + * data will be written to the FIFO. + * + * If the FIFO buffer is empty, reading this register will return the last byte + * that was previously read from the FIFO until new data is available. The user + * should check FIFO_COUNT to ensure that the FIFO buffer is not read when + * empty. + * + * @return Byte from FIFO buffer + */ +uint8_t MPU6050::getFIFOByte() { + I2Cdev::readByte(devAddr, MPU6050_RA_FIFO_R_W, buffer); + return buffer[0]; +} +void MPU6050::getFIFOBytes(uint8_t *data, uint8_t length) { + if(length > 0){ + I2Cdev::readBytes(devAddr, MPU6050_RA_FIFO_R_W, length, data); + } else { + *data = 0; + } +} +/** Write byte to FIFO buffer. + * @see getFIFOByte() + * @see MPU6050_RA_FIFO_R_W + */ +void MPU6050::setFIFOByte(uint8_t data) { + I2Cdev::writeByte(devAddr, MPU6050_RA_FIFO_R_W, data); +} + +// WHO_AM_I register + +/** Get Device ID. + * This register is used to verify the identity of the device (0b110100, 0x34). + * @return Device ID (6 bits only! should be 0x34) + * @see MPU6050_RA_WHO_AM_I + * @see MPU6050_WHO_AM_I_BIT + * @see MPU6050_WHO_AM_I_LENGTH + */ +uint8_t MPU6050::getDeviceID() { + I2Cdev::readBits(devAddr, MPU6050_RA_WHO_AM_I, MPU6050_WHO_AM_I_BIT, MPU6050_WHO_AM_I_LENGTH, buffer); + return buffer[0]; +} +/** Set Device ID. + * Write a new ID into the WHO_AM_I register (no idea why this should ever be + * necessary though). + * @param id New device ID to set. + * @see getDeviceID() + * @see MPU6050_RA_WHO_AM_I + * @see MPU6050_WHO_AM_I_BIT + * @see MPU6050_WHO_AM_I_LENGTH + */ +void MPU6050::setDeviceID(uint8_t id) { + I2Cdev::writeBits(devAddr, MPU6050_RA_WHO_AM_I, MPU6050_WHO_AM_I_BIT, MPU6050_WHO_AM_I_LENGTH, id); +} + +// ======== UNDOCUMENTED/DMP REGISTERS/METHODS ======== + +// XG_OFFS_TC register + +uint8_t MPU6050::getOTPBankValid() { + I2Cdev::readBit(devAddr, MPU6050_RA_XG_OFFS_TC, MPU6050_TC_OTP_BNK_VLD_BIT, buffer); + return buffer[0]; +} +void MPU6050::setOTPBankValid(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_XG_OFFS_TC, MPU6050_TC_OTP_BNK_VLD_BIT, enabled); +} +int8_t MPU6050::getXGyroOffsetTC() { + I2Cdev::readBits(devAddr, MPU6050_RA_XG_OFFS_TC, MPU6050_TC_OFFSET_BIT, MPU6050_TC_OFFSET_LENGTH, buffer); + return buffer[0]; +} +void MPU6050::setXGyroOffsetTC(int8_t offset) { + I2Cdev::writeBits(devAddr, MPU6050_RA_XG_OFFS_TC, MPU6050_TC_OFFSET_BIT, MPU6050_TC_OFFSET_LENGTH, offset); +} + +// YG_OFFS_TC register + +int8_t MPU6050::getYGyroOffsetTC() { + I2Cdev::readBits(devAddr, MPU6050_RA_YG_OFFS_TC, MPU6050_TC_OFFSET_BIT, MPU6050_TC_OFFSET_LENGTH, buffer); + return buffer[0]; +} +void MPU6050::setYGyroOffsetTC(int8_t offset) { + I2Cdev::writeBits(devAddr, MPU6050_RA_YG_OFFS_TC, MPU6050_TC_OFFSET_BIT, MPU6050_TC_OFFSET_LENGTH, offset); +} + +// ZG_OFFS_TC register + +int8_t MPU6050::getZGyroOffsetTC() { + I2Cdev::readBits(devAddr, MPU6050_RA_ZG_OFFS_TC, MPU6050_TC_OFFSET_BIT, MPU6050_TC_OFFSET_LENGTH, buffer); + return buffer[0]; +} +void MPU6050::setZGyroOffsetTC(int8_t offset) { + I2Cdev::writeBits(devAddr, MPU6050_RA_ZG_OFFS_TC, MPU6050_TC_OFFSET_BIT, MPU6050_TC_OFFSET_LENGTH, offset); +} + +// X_FINE_GAIN register + +int8_t MPU6050::getXFineGain() { + I2Cdev::readByte(devAddr, MPU6050_RA_X_FINE_GAIN, buffer); + return buffer[0]; +} +void MPU6050::setXFineGain(int8_t gain) { + I2Cdev::writeByte(devAddr, MPU6050_RA_X_FINE_GAIN, gain); +} + +// Y_FINE_GAIN register + +int8_t MPU6050::getYFineGain() { + I2Cdev::readByte(devAddr, MPU6050_RA_Y_FINE_GAIN, buffer); + return buffer[0]; +} +void MPU6050::setYFineGain(int8_t gain) { + I2Cdev::writeByte(devAddr, MPU6050_RA_Y_FINE_GAIN, gain); +} + +// Z_FINE_GAIN register + +int8_t MPU6050::getZFineGain() { + I2Cdev::readByte(devAddr, MPU6050_RA_Z_FINE_GAIN, buffer); + return buffer[0]; +} +void MPU6050::setZFineGain(int8_t gain) { + I2Cdev::writeByte(devAddr, MPU6050_RA_Z_FINE_GAIN, gain); +} + +// XA_OFFS_* registers + +int16_t MPU6050::getXAccelOffset() { + I2Cdev::readBytes(devAddr, MPU6050_RA_XA_OFFS_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +void MPU6050::setXAccelOffset(int16_t offset) { + I2Cdev::writeWord(devAddr, MPU6050_RA_XA_OFFS_H, offset); +} + +// YA_OFFS_* register + +int16_t MPU6050::getYAccelOffset() { + I2Cdev::readBytes(devAddr, MPU6050_RA_YA_OFFS_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +void MPU6050::setYAccelOffset(int16_t offset) { + I2Cdev::writeWord(devAddr, MPU6050_RA_YA_OFFS_H, offset); +} + +// ZA_OFFS_* register + +int16_t MPU6050::getZAccelOffset() { + I2Cdev::readBytes(devAddr, MPU6050_RA_ZA_OFFS_H, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +void MPU6050::setZAccelOffset(int16_t offset) { + I2Cdev::writeWord(devAddr, MPU6050_RA_ZA_OFFS_H, offset); +} + +// XG_OFFS_USR* registers + +int16_t MPU6050::getXGyroOffset() { + I2Cdev::readBytes(devAddr, MPU6050_RA_XG_OFFS_USRH, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +void MPU6050::setXGyroOffset(int16_t offset) { + I2Cdev::writeWord(devAddr, MPU6050_RA_XG_OFFS_USRH, offset); +} + +// YG_OFFS_USR* register + +int16_t MPU6050::getYGyroOffset() { + I2Cdev::readBytes(devAddr, MPU6050_RA_YG_OFFS_USRH, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +void MPU6050::setYGyroOffset(int16_t offset) { + I2Cdev::writeWord(devAddr, MPU6050_RA_YG_OFFS_USRH, offset); +} + +// ZG_OFFS_USR* register + +int16_t MPU6050::getZGyroOffset() { + I2Cdev::readBytes(devAddr, MPU6050_RA_ZG_OFFS_USRH, 2, buffer); + return (((int16_t)buffer[0]) << 8) | buffer[1]; +} +void MPU6050::setZGyroOffset(int16_t offset) { + I2Cdev::writeWord(devAddr, MPU6050_RA_ZG_OFFS_USRH, offset); +} + +// INT_ENABLE register (DMP functions) + +bool MPU6050::getIntPLLReadyEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_PLL_RDY_INT_BIT, buffer); + return buffer[0]; +} +void MPU6050::setIntPLLReadyEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_PLL_RDY_INT_BIT, enabled); +} +bool MPU6050::getIntDMPEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_DMP_INT_BIT, buffer); + return buffer[0]; +} +void MPU6050::setIntDMPEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_INT_ENABLE, MPU6050_INTERRUPT_DMP_INT_BIT, enabled); +} + +// DMP_INT_STATUS + +bool MPU6050::getDMPInt5Status() { + I2Cdev::readBit(devAddr, MPU6050_RA_DMP_INT_STATUS, MPU6050_DMPINT_5_BIT, buffer); + return buffer[0]; +} +bool MPU6050::getDMPInt4Status() { + I2Cdev::readBit(devAddr, MPU6050_RA_DMP_INT_STATUS, MPU6050_DMPINT_4_BIT, buffer); + return buffer[0]; +} +bool MPU6050::getDMPInt3Status() { + I2Cdev::readBit(devAddr, MPU6050_RA_DMP_INT_STATUS, MPU6050_DMPINT_3_BIT, buffer); + return buffer[0]; +} +bool MPU6050::getDMPInt2Status() { + I2Cdev::readBit(devAddr, MPU6050_RA_DMP_INT_STATUS, MPU6050_DMPINT_2_BIT, buffer); + return buffer[0]; +} +bool MPU6050::getDMPInt1Status() { + I2Cdev::readBit(devAddr, MPU6050_RA_DMP_INT_STATUS, MPU6050_DMPINT_1_BIT, buffer); + return buffer[0]; +} +bool MPU6050::getDMPInt0Status() { + I2Cdev::readBit(devAddr, MPU6050_RA_DMP_INT_STATUS, MPU6050_DMPINT_0_BIT, buffer); + return buffer[0]; +} + +// INT_STATUS register (DMP functions) + +bool MPU6050::getIntPLLReadyStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_STATUS, MPU6050_INTERRUPT_PLL_RDY_INT_BIT, buffer); + return buffer[0]; +} +bool MPU6050::getIntDMPStatus() { + I2Cdev::readBit(devAddr, MPU6050_RA_INT_STATUS, MPU6050_INTERRUPT_DMP_INT_BIT, buffer); + return buffer[0]; +} + +// USER_CTRL register (DMP functions) + +bool MPU6050::getDMPEnabled() { + I2Cdev::readBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_DMP_EN_BIT, buffer); + return buffer[0]; +} +void MPU6050::setDMPEnabled(bool enabled) { + I2Cdev::writeBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_DMP_EN_BIT, enabled); +} +void MPU6050::resetDMP() { + I2Cdev::writeBit(devAddr, MPU6050_RA_USER_CTRL, MPU6050_USERCTRL_DMP_RESET_BIT, true); +} + +// BANK_SEL register + +void MPU6050::setMemoryBank(uint8_t bank, bool prefetchEnabled, bool userBank) { + bank &= 0x1F; + if (userBank) bank |= 0x20; + if (prefetchEnabled) bank |= 0x40; + I2Cdev::writeByte(devAddr, MPU6050_RA_BANK_SEL, bank); +} + +// MEM_START_ADDR register + +void MPU6050::setMemoryStartAddress(uint8_t address) { + I2Cdev::writeByte(devAddr, MPU6050_RA_MEM_START_ADDR, address); +} + +// MEM_R_W register + +uint8_t MPU6050::readMemoryByte() { + I2Cdev::readByte(devAddr, MPU6050_RA_MEM_R_W, buffer); + return buffer[0]; +} +void MPU6050::writeMemoryByte(uint8_t data) { + I2Cdev::writeByte(devAddr, MPU6050_RA_MEM_R_W, data); +} +void MPU6050::readMemoryBlock(uint8_t *data, uint16_t dataSize, uint8_t bank, uint8_t address) { + setMemoryBank(bank); + setMemoryStartAddress(address); + uint8_t chunkSize; + for (uint16_t i = 0; i < dataSize;) { + // determine correct chunk size according to bank position and data size + chunkSize = MPU6050_DMP_MEMORY_CHUNK_SIZE; + + // make sure we don't go past the data size + if (i + chunkSize > dataSize) chunkSize = dataSize - i; + + // make sure this chunk doesn't go past the bank boundary (256 bytes) + if (chunkSize > 256 - address) chunkSize = 256 - address; + + // read the chunk of data as specified + I2Cdev::readBytes(devAddr, MPU6050_RA_MEM_R_W, chunkSize, data + i); + + // increase byte index by [chunkSize] + i += chunkSize; + + // uint8_t automatically wraps to 0 at 256 + address += chunkSize; + + // if we aren't done, update bank (if necessary) and address + if (i < dataSize) { + if (address == 0) bank++; + setMemoryBank(bank); + setMemoryStartAddress(address); + } + } +} +bool MPU6050::writeMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank, uint8_t address, bool verify, bool useProgMem) { + setMemoryBank(bank); + setMemoryStartAddress(address); + uint8_t chunkSize; + uint8_t *verifyBuffer=0; + uint8_t *progBuffer=0; + uint16_t i; + uint8_t j; + if (verify) verifyBuffer = (uint8_t *)malloc(MPU6050_DMP_MEMORY_CHUNK_SIZE); + if (useProgMem) progBuffer = (uint8_t *)malloc(MPU6050_DMP_MEMORY_CHUNK_SIZE); + for (i = 0; i < dataSize;) { + // determine correct chunk size according to bank position and data size + chunkSize = MPU6050_DMP_MEMORY_CHUNK_SIZE; + + // make sure we don't go past the data size + if (i + chunkSize > dataSize) chunkSize = dataSize - i; + + // make sure this chunk doesn't go past the bank boundary (256 bytes) + if (chunkSize > 256 - address) chunkSize = 256 - address; + + if (useProgMem) { + // write the chunk of data as specified + for (j = 0; j < chunkSize; j++) progBuffer[j] = pgm_read_byte(data + i + j); + } else { + // write the chunk of data as specified + progBuffer = (uint8_t *)data + i; + } + + I2Cdev::writeBytes(devAddr, MPU6050_RA_MEM_R_W, chunkSize, progBuffer); + + // verify data if needed + if (verify && verifyBuffer) { + setMemoryBank(bank); + setMemoryStartAddress(address); + I2Cdev::readBytes(devAddr, MPU6050_RA_MEM_R_W, chunkSize, verifyBuffer); + if (memcmp(progBuffer, verifyBuffer, chunkSize) != 0) { + /*Serial.print("Block write verification error, bank "); + Serial.print(bank, DEC); + Serial.print(", address "); + Serial.print(address, DEC); + Serial.print("!\nExpected:"); + for (j = 0; j < chunkSize; j++) { + Serial.print(" 0x"); + if (progBuffer[j] < 16) Serial.print("0"); + Serial.print(progBuffer[j], HEX); + } + Serial.print("\nReceived:"); + for (uint8_t j = 0; j < chunkSize; j++) { + Serial.print(" 0x"); + if (verifyBuffer[i + j] < 16) Serial.print("0"); + Serial.print(verifyBuffer[i + j], HEX); + } + Serial.print("\n");*/ + free(verifyBuffer); + if (useProgMem) free(progBuffer); + return false; // uh oh. + } + } + + // increase byte index by [chunkSize] + i += chunkSize; + + // uint8_t automatically wraps to 0 at 256 + address += chunkSize; + + // if we aren't done, update bank (if necessary) and address + if (i < dataSize) { + if (address == 0) bank++; + setMemoryBank(bank); + setMemoryStartAddress(address); + } + } + if (verify) free(verifyBuffer); + if (useProgMem) free(progBuffer); + return true; +} +bool MPU6050::writeProgMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank, uint8_t address, bool verify) { + return writeMemoryBlock(data, dataSize, bank, address, verify, true); +} +bool MPU6050::writeDMPConfigurationSet(const uint8_t *data, uint16_t dataSize, bool useProgMem) { + uint8_t *progBuffer = 0; + uint8_t success, special; + uint16_t i, j; + if (useProgMem) { + progBuffer = (uint8_t *)malloc(8); // assume 8-byte blocks, realloc later if necessary + } + + // config set data is a long string of blocks with the following structure: + // [bank] [offset] [length] [byte[0], byte[1], ..., byte[length]] + uint8_t bank, offset, length; + for (i = 0; i < dataSize;) { + if (useProgMem) { + bank = pgm_read_byte(data + i++); + offset = pgm_read_byte(data + i++); + length = pgm_read_byte(data + i++); + } else { + bank = data[i++]; + offset = data[i++]; + length = data[i++]; + } + + // write data or perform special action + if (length > 0) { + // regular block of data to write + /*Serial.print("Writing config block to bank "); + Serial.print(bank); + Serial.print(", offset "); + Serial.print(offset); + Serial.print(", length="); + Serial.println(length);*/ + if (useProgMem) { + if (sizeof(progBuffer) < length) progBuffer = (uint8_t *)realloc(progBuffer, length); + for (j = 0; j < length; j++) progBuffer[j] = pgm_read_byte(data + i + j); + } else { + progBuffer = (uint8_t *)data + i; + } + success = writeMemoryBlock(progBuffer, length, bank, offset, true); + i += length; + } else { + // special instruction + // NOTE: this kind of behavior (what and when to do certain things) + // is totally undocumented. This code is in here based on observed + // behavior only, and exactly why (or even whether) it has to be here + // is anybody's guess for now. + if (useProgMem) { + special = pgm_read_byte(data + i++); + } else { + special = data[i++]; + } + /*Serial.print("Special command code "); + Serial.print(special, HEX); + Serial.println(" found...");*/ + if (special == 0x01) { + // enable DMP-related interrupts + + //setIntZeroMotionEnabled(true); + //setIntFIFOBufferOverflowEnabled(true); + //setIntDMPEnabled(true); + I2Cdev::writeByte(devAddr, MPU6050_RA_INT_ENABLE, 0x32); // single operation + + success = true; + } else { + // unknown special command + success = false; + } + } + + if (!success) { + if (useProgMem) free(progBuffer); + return false; // uh oh + } + } + if (useProgMem) free(progBuffer); + return true; +} +bool MPU6050::writeProgDMPConfigurationSet(const uint8_t *data, uint16_t dataSize) { + return writeDMPConfigurationSet(data, dataSize, true); +} + +// DMP_CFG_1 register + +uint8_t MPU6050::getDMPConfig1() { + I2Cdev::readByte(devAddr, MPU6050_RA_DMP_CFG_1, buffer); + return buffer[0]; +} +void MPU6050::setDMPConfig1(uint8_t config) { + I2Cdev::writeByte(devAddr, MPU6050_RA_DMP_CFG_1, config); +} + +// DMP_CFG_2 register + +uint8_t MPU6050::getDMPConfig2() { + I2Cdev::readByte(devAddr, MPU6050_RA_DMP_CFG_2, buffer); + return buffer[0]; +} +void MPU6050::setDMPConfig2(uint8_t config) { + I2Cdev::writeByte(devAddr, MPU6050_RA_DMP_CFG_2, config); +} diff --git a/libraries/MPU6050/MPU6050.h b/libraries/MPU6050/MPU6050.h new file mode 100644 index 0000000000000000000000000000000000000000..6e3b9a76970691dea0fcfdfe0a6f815494e8ed2c --- /dev/null +++ b/libraries/MPU6050/MPU6050.h @@ -0,0 +1,1032 @@ +// I2Cdev library collection - MPU6050 I2C device class +// Based on InvenSense MPU-6050 register map document rev. 2.0, 5/19/2011 (RM-MPU-6000A-00) +// 10/3/2011 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// ... - ongoing debug release + +// NOTE: THIS IS ONLY A PARIAL RELEASE. THIS DEVICE CLASS IS CURRENTLY UNDERGOING ACTIVE +// DEVELOPMENT AND IS STILL MISSING SOME IMPORTANT FEATURES. PLEASE KEEP THIS IN MIND IF +// YOU DECIDE TO USE THIS PARTICULAR CODE FOR ANYTHING. + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +#ifndef _MPU6050_H_ +#define _MPU6050_H_ + +#include "I2Cdev.h" + +// supporting link: http://forum.arduino.cc/index.php?&topic=143444.msg1079517#msg1079517 +// also: http://forum.arduino.cc/index.php?&topic=141571.msg1062899#msg1062899s + +#ifdef __AVR__ +#include <avr/pgmspace.h> +#else +//#define PROGMEM /* empty */ +//#define pgm_read_byte(x) (*(x)) +//#define pgm_read_word(x) (*(x)) +//#define pgm_read_float(x) (*(x)) +//#define PSTR(STR) STR +#endif + + +#define MPU6050_ADDRESS_AD0_LOW 0x68 // address pin low (GND), default for InvenSense evaluation board +#define MPU6050_ADDRESS_AD0_HIGH 0x69 // address pin high (VCC) +#define MPU6050_DEFAULT_ADDRESS MPU6050_ADDRESS_AD0_LOW + +#define MPU6050_RA_XG_OFFS_TC 0x00 //[7] PWR_MODE, [6:1] XG_OFFS_TC, [0] OTP_BNK_VLD +#define MPU6050_RA_YG_OFFS_TC 0x01 //[7] PWR_MODE, [6:1] YG_OFFS_TC, [0] OTP_BNK_VLD +#define MPU6050_RA_ZG_OFFS_TC 0x02 //[7] PWR_MODE, [6:1] ZG_OFFS_TC, [0] OTP_BNK_VLD +#define MPU6050_RA_X_FINE_GAIN 0x03 //[7:0] X_FINE_GAIN +#define MPU6050_RA_Y_FINE_GAIN 0x04 //[7:0] Y_FINE_GAIN +#define MPU6050_RA_Z_FINE_GAIN 0x05 //[7:0] Z_FINE_GAIN +#define MPU6050_RA_XA_OFFS_H 0x06 //[15:0] XA_OFFS +#define MPU6050_RA_XA_OFFS_L_TC 0x07 +#define MPU6050_RA_YA_OFFS_H 0x08 //[15:0] YA_OFFS +#define MPU6050_RA_YA_OFFS_L_TC 0x09 +#define MPU6050_RA_ZA_OFFS_H 0x0A //[15:0] ZA_OFFS +#define MPU6050_RA_ZA_OFFS_L_TC 0x0B +#define MPU6050_RA_SELF_TEST_X 0x0D //[7:5] XA_TEST[4-2], [4:0] XG_TEST[4-0] +#define MPU6050_RA_SELF_TEST_Y 0x0E //[7:5] YA_TEST[4-2], [4:0] YG_TEST[4-0] +#define MPU6050_RA_SELF_TEST_Z 0x0F //[7:5] ZA_TEST[4-2], [4:0] ZG_TEST[4-0] +#define MPU6050_RA_SELF_TEST_A 0x10 //[5:4] XA_TEST[1-0], [3:2] YA_TEST[1-0], [1:0] ZA_TEST[1-0] +#define MPU6050_RA_XG_OFFS_USRH 0x13 //[15:0] XG_OFFS_USR +#define MPU6050_RA_XG_OFFS_USRL 0x14 +#define MPU6050_RA_YG_OFFS_USRH 0x15 //[15:0] YG_OFFS_USR +#define MPU6050_RA_YG_OFFS_USRL 0x16 +#define MPU6050_RA_ZG_OFFS_USRH 0x17 //[15:0] ZG_OFFS_USR +#define MPU6050_RA_ZG_OFFS_USRL 0x18 +#define MPU6050_RA_SMPLRT_DIV 0x19 +#define MPU6050_RA_CONFIG 0x1A +#define MPU6050_RA_GYRO_CONFIG 0x1B +#define MPU6050_RA_ACCEL_CONFIG 0x1C +#define MPU6050_RA_FF_THR 0x1D +#define MPU6050_RA_FF_DUR 0x1E +#define MPU6050_RA_MOT_THR 0x1F +#define MPU6050_RA_MOT_DUR 0x20 +#define MPU6050_RA_ZRMOT_THR 0x21 +#define MPU6050_RA_ZRMOT_DUR 0x22 +#define MPU6050_RA_FIFO_EN 0x23 +#define MPU6050_RA_I2C_MST_CTRL 0x24 +#define MPU6050_RA_I2C_SLV0_ADDR 0x25 +#define MPU6050_RA_I2C_SLV0_REG 0x26 +#define MPU6050_RA_I2C_SLV0_CTRL 0x27 +#define MPU6050_RA_I2C_SLV1_ADDR 0x28 +#define MPU6050_RA_I2C_SLV1_REG 0x29 +#define MPU6050_RA_I2C_SLV1_CTRL 0x2A +#define MPU6050_RA_I2C_SLV2_ADDR 0x2B +#define MPU6050_RA_I2C_SLV2_REG 0x2C +#define MPU6050_RA_I2C_SLV2_CTRL 0x2D +#define MPU6050_RA_I2C_SLV3_ADDR 0x2E +#define MPU6050_RA_I2C_SLV3_REG 0x2F +#define MPU6050_RA_I2C_SLV3_CTRL 0x30 +#define MPU6050_RA_I2C_SLV4_ADDR 0x31 +#define MPU6050_RA_I2C_SLV4_REG 0x32 +#define MPU6050_RA_I2C_SLV4_DO 0x33 +#define MPU6050_RA_I2C_SLV4_CTRL 0x34 +#define MPU6050_RA_I2C_SLV4_DI 0x35 +#define MPU6050_RA_I2C_MST_STATUS 0x36 +#define MPU6050_RA_INT_PIN_CFG 0x37 +#define MPU6050_RA_INT_ENABLE 0x38 +#define MPU6050_RA_DMP_INT_STATUS 0x39 +#define MPU6050_RA_INT_STATUS 0x3A +#define MPU6050_RA_ACCEL_XOUT_H 0x3B +#define MPU6050_RA_ACCEL_XOUT_L 0x3C +#define MPU6050_RA_ACCEL_YOUT_H 0x3D +#define MPU6050_RA_ACCEL_YOUT_L 0x3E +#define MPU6050_RA_ACCEL_ZOUT_H 0x3F +#define MPU6050_RA_ACCEL_ZOUT_L 0x40 +#define MPU6050_RA_TEMP_OUT_H 0x41 +#define MPU6050_RA_TEMP_OUT_L 0x42 +#define MPU6050_RA_GYRO_XOUT_H 0x43 +#define MPU6050_RA_GYRO_XOUT_L 0x44 +#define MPU6050_RA_GYRO_YOUT_H 0x45 +#define MPU6050_RA_GYRO_YOUT_L 0x46 +#define MPU6050_RA_GYRO_ZOUT_H 0x47 +#define MPU6050_RA_GYRO_ZOUT_L 0x48 +#define MPU6050_RA_EXT_SENS_DATA_00 0x49 +#define MPU6050_RA_EXT_SENS_DATA_01 0x4A +#define MPU6050_RA_EXT_SENS_DATA_02 0x4B +#define MPU6050_RA_EXT_SENS_DATA_03 0x4C +#define MPU6050_RA_EXT_SENS_DATA_04 0x4D +#define MPU6050_RA_EXT_SENS_DATA_05 0x4E +#define MPU6050_RA_EXT_SENS_DATA_06 0x4F +#define MPU6050_RA_EXT_SENS_DATA_07 0x50 +#define MPU6050_RA_EXT_SENS_DATA_08 0x51 +#define MPU6050_RA_EXT_SENS_DATA_09 0x52 +#define MPU6050_RA_EXT_SENS_DATA_10 0x53 +#define MPU6050_RA_EXT_SENS_DATA_11 0x54 +#define MPU6050_RA_EXT_SENS_DATA_12 0x55 +#define MPU6050_RA_EXT_SENS_DATA_13 0x56 +#define MPU6050_RA_EXT_SENS_DATA_14 0x57 +#define MPU6050_RA_EXT_SENS_DATA_15 0x58 +#define MPU6050_RA_EXT_SENS_DATA_16 0x59 +#define MPU6050_RA_EXT_SENS_DATA_17 0x5A +#define MPU6050_RA_EXT_SENS_DATA_18 0x5B +#define MPU6050_RA_EXT_SENS_DATA_19 0x5C +#define MPU6050_RA_EXT_SENS_DATA_20 0x5D +#define MPU6050_RA_EXT_SENS_DATA_21 0x5E +#define MPU6050_RA_EXT_SENS_DATA_22 0x5F +#define MPU6050_RA_EXT_SENS_DATA_23 0x60 +#define MPU6050_RA_MOT_DETECT_STATUS 0x61 +#define MPU6050_RA_I2C_SLV0_DO 0x63 +#define MPU6050_RA_I2C_SLV1_DO 0x64 +#define MPU6050_RA_I2C_SLV2_DO 0x65 +#define MPU6050_RA_I2C_SLV3_DO 0x66 +#define MPU6050_RA_I2C_MST_DELAY_CTRL 0x67 +#define MPU6050_RA_SIGNAL_PATH_RESET 0x68 +#define MPU6050_RA_MOT_DETECT_CTRL 0x69 +#define MPU6050_RA_USER_CTRL 0x6A +#define MPU6050_RA_PWR_MGMT_1 0x6B +#define MPU6050_RA_PWR_MGMT_2 0x6C +#define MPU6050_RA_BANK_SEL 0x6D +#define MPU6050_RA_MEM_START_ADDR 0x6E +#define MPU6050_RA_MEM_R_W 0x6F +#define MPU6050_RA_DMP_CFG_1 0x70 +#define MPU6050_RA_DMP_CFG_2 0x71 +#define MPU6050_RA_FIFO_COUNTH 0x72 +#define MPU6050_RA_FIFO_COUNTL 0x73 +#define MPU6050_RA_FIFO_R_W 0x74 +#define MPU6050_RA_WHO_AM_I 0x75 + +#define MPU6050_SELF_TEST_XA_1_BIT 0x07 +#define MPU6050_SELF_TEST_XA_1_LENGTH 0x03 +#define MPU6050_SELF_TEST_XA_2_BIT 0x05 +#define MPU6050_SELF_TEST_XA_2_LENGTH 0x02 +#define MPU6050_SELF_TEST_YA_1_BIT 0x07 +#define MPU6050_SELF_TEST_YA_1_LENGTH 0x03 +#define MPU6050_SELF_TEST_YA_2_BIT 0x03 +#define MPU6050_SELF_TEST_YA_2_LENGTH 0x02 +#define MPU6050_SELF_TEST_ZA_1_BIT 0x07 +#define MPU6050_SELF_TEST_ZA_1_LENGTH 0x03 +#define MPU6050_SELF_TEST_ZA_2_BIT 0x01 +#define MPU6050_SELF_TEST_ZA_2_LENGTH 0x02 + +#define MPU6050_SELF_TEST_XG_1_BIT 0x04 +#define MPU6050_SELF_TEST_XG_1_LENGTH 0x05 +#define MPU6050_SELF_TEST_YG_1_BIT 0x04 +#define MPU6050_SELF_TEST_YG_1_LENGTH 0x05 +#define MPU6050_SELF_TEST_ZG_1_BIT 0x04 +#define MPU6050_SELF_TEST_ZG_1_LENGTH 0x05 + +#define MPU6050_TC_PWR_MODE_BIT 7 +#define MPU6050_TC_OFFSET_BIT 6 +#define MPU6050_TC_OFFSET_LENGTH 6 +#define MPU6050_TC_OTP_BNK_VLD_BIT 0 + +#define MPU6050_VDDIO_LEVEL_VLOGIC 0 +#define MPU6050_VDDIO_LEVEL_VDD 1 + +#define MPU6050_CFG_EXT_SYNC_SET_BIT 5 +#define MPU6050_CFG_EXT_SYNC_SET_LENGTH 3 +#define MPU6050_CFG_DLPF_CFG_BIT 2 +#define MPU6050_CFG_DLPF_CFG_LENGTH 3 + +#define MPU6050_EXT_SYNC_DISABLED 0x0 +#define MPU6050_EXT_SYNC_TEMP_OUT_L 0x1 +#define MPU6050_EXT_SYNC_GYRO_XOUT_L 0x2 +#define MPU6050_EXT_SYNC_GYRO_YOUT_L 0x3 +#define MPU6050_EXT_SYNC_GYRO_ZOUT_L 0x4 +#define MPU6050_EXT_SYNC_ACCEL_XOUT_L 0x5 +#define MPU6050_EXT_SYNC_ACCEL_YOUT_L 0x6 +#define MPU6050_EXT_SYNC_ACCEL_ZOUT_L 0x7 + +#define MPU6050_DLPF_BW_256 0x00 +#define MPU6050_DLPF_BW_188 0x01 +#define MPU6050_DLPF_BW_98 0x02 +#define MPU6050_DLPF_BW_42 0x03 +#define MPU6050_DLPF_BW_20 0x04 +#define MPU6050_DLPF_BW_10 0x05 +#define MPU6050_DLPF_BW_5 0x06 + +#define MPU6050_GCONFIG_FS_SEL_BIT 4 +#define MPU6050_GCONFIG_FS_SEL_LENGTH 2 + +#define MPU6050_GYRO_FS_250 0x00 +#define MPU6050_GYRO_FS_500 0x01 +#define MPU6050_GYRO_FS_1000 0x02 +#define MPU6050_GYRO_FS_2000 0x03 + +#define MPU6050_ACONFIG_XA_ST_BIT 7 +#define MPU6050_ACONFIG_YA_ST_BIT 6 +#define MPU6050_ACONFIG_ZA_ST_BIT 5 +#define MPU6050_ACONFIG_AFS_SEL_BIT 4 +#define MPU6050_ACONFIG_AFS_SEL_LENGTH 2 +#define MPU6050_ACONFIG_ACCEL_HPF_BIT 2 +#define MPU6050_ACONFIG_ACCEL_HPF_LENGTH 3 + +#define MPU6050_ACCEL_FS_2 0x00 +#define MPU6050_ACCEL_FS_4 0x01 +#define MPU6050_ACCEL_FS_8 0x02 +#define MPU6050_ACCEL_FS_16 0x03 + +#define MPU6050_DHPF_RESET 0x00 +#define MPU6050_DHPF_5 0x01 +#define MPU6050_DHPF_2P5 0x02 +#define MPU6050_DHPF_1P25 0x03 +#define MPU6050_DHPF_0P63 0x04 +#define MPU6050_DHPF_HOLD 0x07 + +#define MPU6050_TEMP_FIFO_EN_BIT 7 +#define MPU6050_XG_FIFO_EN_BIT 6 +#define MPU6050_YG_FIFO_EN_BIT 5 +#define MPU6050_ZG_FIFO_EN_BIT 4 +#define MPU6050_ACCEL_FIFO_EN_BIT 3 +#define MPU6050_SLV2_FIFO_EN_BIT 2 +#define MPU6050_SLV1_FIFO_EN_BIT 1 +#define MPU6050_SLV0_FIFO_EN_BIT 0 + +#define MPU6050_MULT_MST_EN_BIT 7 +#define MPU6050_WAIT_FOR_ES_BIT 6 +#define MPU6050_SLV_3_FIFO_EN_BIT 5 +#define MPU6050_I2C_MST_P_NSR_BIT 4 +#define MPU6050_I2C_MST_CLK_BIT 3 +#define MPU6050_I2C_MST_CLK_LENGTH 4 + +#define MPU6050_CLOCK_DIV_348 0x0 +#define MPU6050_CLOCK_DIV_333 0x1 +#define MPU6050_CLOCK_DIV_320 0x2 +#define MPU6050_CLOCK_DIV_308 0x3 +#define MPU6050_CLOCK_DIV_296 0x4 +#define MPU6050_CLOCK_DIV_286 0x5 +#define MPU6050_CLOCK_DIV_276 0x6 +#define MPU6050_CLOCK_DIV_267 0x7 +#define MPU6050_CLOCK_DIV_258 0x8 +#define MPU6050_CLOCK_DIV_500 0x9 +#define MPU6050_CLOCK_DIV_471 0xA +#define MPU6050_CLOCK_DIV_444 0xB +#define MPU6050_CLOCK_DIV_421 0xC +#define MPU6050_CLOCK_DIV_400 0xD +#define MPU6050_CLOCK_DIV_381 0xE +#define MPU6050_CLOCK_DIV_364 0xF + +#define MPU6050_I2C_SLV_RW_BIT 7 +#define MPU6050_I2C_SLV_ADDR_BIT 6 +#define MPU6050_I2C_SLV_ADDR_LENGTH 7 +#define MPU6050_I2C_SLV_EN_BIT 7 +#define MPU6050_I2C_SLV_BYTE_SW_BIT 6 +#define MPU6050_I2C_SLV_REG_DIS_BIT 5 +#define MPU6050_I2C_SLV_GRP_BIT 4 +#define MPU6050_I2C_SLV_LEN_BIT 3 +#define MPU6050_I2C_SLV_LEN_LENGTH 4 + +#define MPU6050_I2C_SLV4_RW_BIT 7 +#define MPU6050_I2C_SLV4_ADDR_BIT 6 +#define MPU6050_I2C_SLV4_ADDR_LENGTH 7 +#define MPU6050_I2C_SLV4_EN_BIT 7 +#define MPU6050_I2C_SLV4_INT_EN_BIT 6 +#define MPU6050_I2C_SLV4_REG_DIS_BIT 5 +#define MPU6050_I2C_SLV4_MST_DLY_BIT 4 +#define MPU6050_I2C_SLV4_MST_DLY_LENGTH 5 + +#define MPU6050_MST_PASS_THROUGH_BIT 7 +#define MPU6050_MST_I2C_SLV4_DONE_BIT 6 +#define MPU6050_MST_I2C_LOST_ARB_BIT 5 +#define MPU6050_MST_I2C_SLV4_NACK_BIT 4 +#define MPU6050_MST_I2C_SLV3_NACK_BIT 3 +#define MPU6050_MST_I2C_SLV2_NACK_BIT 2 +#define MPU6050_MST_I2C_SLV1_NACK_BIT 1 +#define MPU6050_MST_I2C_SLV0_NACK_BIT 0 + +#define MPU6050_INTCFG_INT_LEVEL_BIT 7 +#define MPU6050_INTCFG_INT_OPEN_BIT 6 +#define MPU6050_INTCFG_LATCH_INT_EN_BIT 5 +#define MPU6050_INTCFG_INT_RD_CLEAR_BIT 4 +#define MPU6050_INTCFG_FSYNC_INT_LEVEL_BIT 3 +#define MPU6050_INTCFG_FSYNC_INT_EN_BIT 2 +#define MPU6050_INTCFG_I2C_BYPASS_EN_BIT 1 +#define MPU6050_INTCFG_CLKOUT_EN_BIT 0 + +#define MPU6050_INTMODE_ACTIVEHIGH 0x00 +#define MPU6050_INTMODE_ACTIVELOW 0x01 + +#define MPU6050_INTDRV_PUSHPULL 0x00 +#define MPU6050_INTDRV_OPENDRAIN 0x01 + +#define MPU6050_INTLATCH_50USPULSE 0x00 +#define MPU6050_INTLATCH_WAITCLEAR 0x01 + +#define MPU6050_INTCLEAR_STATUSREAD 0x00 +#define MPU6050_INTCLEAR_ANYREAD 0x01 + +#define MPU6050_INTERRUPT_FF_BIT 7 +#define MPU6050_INTERRUPT_MOT_BIT 6 +#define MPU6050_INTERRUPT_ZMOT_BIT 5 +#define MPU6050_INTERRUPT_FIFO_OFLOW_BIT 4 +#define MPU6050_INTERRUPT_I2C_MST_INT_BIT 3 +#define MPU6050_INTERRUPT_PLL_RDY_INT_BIT 2 +#define MPU6050_INTERRUPT_DMP_INT_BIT 1 +#define MPU6050_INTERRUPT_DATA_RDY_BIT 0 + +// TODO: figure out what these actually do +// UMPL source code is not very obivous +#define MPU6050_DMPINT_5_BIT 5 +#define MPU6050_DMPINT_4_BIT 4 +#define MPU6050_DMPINT_3_BIT 3 +#define MPU6050_DMPINT_2_BIT 2 +#define MPU6050_DMPINT_1_BIT 1 +#define MPU6050_DMPINT_0_BIT 0 + +#define MPU6050_MOTION_MOT_XNEG_BIT 7 +#define MPU6050_MOTION_MOT_XPOS_BIT 6 +#define MPU6050_MOTION_MOT_YNEG_BIT 5 +#define MPU6050_MOTION_MOT_YPOS_BIT 4 +#define MPU6050_MOTION_MOT_ZNEG_BIT 3 +#define MPU6050_MOTION_MOT_ZPOS_BIT 2 +#define MPU6050_MOTION_MOT_ZRMOT_BIT 0 + +#define MPU6050_DELAYCTRL_DELAY_ES_SHADOW_BIT 7 +#define MPU6050_DELAYCTRL_I2C_SLV4_DLY_EN_BIT 4 +#define MPU6050_DELAYCTRL_I2C_SLV3_DLY_EN_BIT 3 +#define MPU6050_DELAYCTRL_I2C_SLV2_DLY_EN_BIT 2 +#define MPU6050_DELAYCTRL_I2C_SLV1_DLY_EN_BIT 1 +#define MPU6050_DELAYCTRL_I2C_SLV0_DLY_EN_BIT 0 + +#define MPU6050_PATHRESET_GYRO_RESET_BIT 2 +#define MPU6050_PATHRESET_ACCEL_RESET_BIT 1 +#define MPU6050_PATHRESET_TEMP_RESET_BIT 0 + +#define MPU6050_DETECT_ACCEL_ON_DELAY_BIT 5 +#define MPU6050_DETECT_ACCEL_ON_DELAY_LENGTH 2 +#define MPU6050_DETECT_FF_COUNT_BIT 3 +#define MPU6050_DETECT_FF_COUNT_LENGTH 2 +#define MPU6050_DETECT_MOT_COUNT_BIT 1 +#define MPU6050_DETECT_MOT_COUNT_LENGTH 2 + +#define MPU6050_DETECT_DECREMENT_RESET 0x0 +#define MPU6050_DETECT_DECREMENT_1 0x1 +#define MPU6050_DETECT_DECREMENT_2 0x2 +#define MPU6050_DETECT_DECREMENT_4 0x3 + +#define MPU6050_USERCTRL_DMP_EN_BIT 7 +#define MPU6050_USERCTRL_FIFO_EN_BIT 6 +#define MPU6050_USERCTRL_I2C_MST_EN_BIT 5 +#define MPU6050_USERCTRL_I2C_IF_DIS_BIT 4 +#define MPU6050_USERCTRL_DMP_RESET_BIT 3 +#define MPU6050_USERCTRL_FIFO_RESET_BIT 2 +#define MPU6050_USERCTRL_I2C_MST_RESET_BIT 1 +#define MPU6050_USERCTRL_SIG_COND_RESET_BIT 0 + +#define MPU6050_PWR1_DEVICE_RESET_BIT 7 +#define MPU6050_PWR1_SLEEP_BIT 6 +#define MPU6050_PWR1_CYCLE_BIT 5 +#define MPU6050_PWR1_TEMP_DIS_BIT 3 +#define MPU6050_PWR1_CLKSEL_BIT 2 +#define MPU6050_PWR1_CLKSEL_LENGTH 3 + +#define MPU6050_CLOCK_INTERNAL 0x00 +#define MPU6050_CLOCK_PLL_XGYRO 0x01 +#define MPU6050_CLOCK_PLL_YGYRO 0x02 +#define MPU6050_CLOCK_PLL_ZGYRO 0x03 +#define MPU6050_CLOCK_PLL_EXT32K 0x04 +#define MPU6050_CLOCK_PLL_EXT19M 0x05 +#define MPU6050_CLOCK_KEEP_RESET 0x07 + +#define MPU6050_PWR2_LP_WAKE_CTRL_BIT 7 +#define MPU6050_PWR2_LP_WAKE_CTRL_LENGTH 2 +#define MPU6050_PWR2_STBY_XA_BIT 5 +#define MPU6050_PWR2_STBY_YA_BIT 4 +#define MPU6050_PWR2_STBY_ZA_BIT 3 +#define MPU6050_PWR2_STBY_XG_BIT 2 +#define MPU6050_PWR2_STBY_YG_BIT 1 +#define MPU6050_PWR2_STBY_ZG_BIT 0 + +#define MPU6050_WAKE_FREQ_1P25 0x0 +#define MPU6050_WAKE_FREQ_2P5 0x1 +#define MPU6050_WAKE_FREQ_5 0x2 +#define MPU6050_WAKE_FREQ_10 0x3 + +#define MPU6050_BANKSEL_PRFTCH_EN_BIT 6 +#define MPU6050_BANKSEL_CFG_USER_BANK_BIT 5 +#define MPU6050_BANKSEL_MEM_SEL_BIT 4 +#define MPU6050_BANKSEL_MEM_SEL_LENGTH 5 + +#define MPU6050_WHO_AM_I_BIT 6 +#define MPU6050_WHO_AM_I_LENGTH 6 + +#define MPU6050_DMP_MEMORY_BANKS 8 +#define MPU6050_DMP_MEMORY_BANK_SIZE 256 +#define MPU6050_DMP_MEMORY_CHUNK_SIZE 16 + +// note: DMP code memory blocks defined at end of header file + +class MPU6050 { + public: + MPU6050(); + MPU6050(uint8_t address); + + void initialize(); + bool testConnection(); + + // AUX_VDDIO register + uint8_t getAuxVDDIOLevel(); + void setAuxVDDIOLevel(uint8_t level); + + // SMPLRT_DIV register + uint8_t getRate(); + void setRate(uint8_t rate); + + // CONFIG register + uint8_t getExternalFrameSync(); + void setExternalFrameSync(uint8_t sync); + uint8_t getDLPFMode(); + void setDLPFMode(uint8_t bandwidth); + + // GYRO_CONFIG register + uint8_t getFullScaleGyroRange(); + void setFullScaleGyroRange(uint8_t range); + + // SELF_TEST registers + uint8_t getAccelXSelfTestFactoryTrim(); + uint8_t getAccelYSelfTestFactoryTrim(); + uint8_t getAccelZSelfTestFactoryTrim(); + + uint8_t getGyroXSelfTestFactoryTrim(); + uint8_t getGyroYSelfTestFactoryTrim(); + uint8_t getGyroZSelfTestFactoryTrim(); + + // ACCEL_CONFIG register + bool getAccelXSelfTest(); + void setAccelXSelfTest(bool enabled); + bool getAccelYSelfTest(); + void setAccelYSelfTest(bool enabled); + bool getAccelZSelfTest(); + void setAccelZSelfTest(bool enabled); + uint8_t getFullScaleAccelRange(); + void setFullScaleAccelRange(uint8_t range); + uint8_t getDHPFMode(); + void setDHPFMode(uint8_t mode); + + // FF_THR register + uint8_t getFreefallDetectionThreshold(); + void setFreefallDetectionThreshold(uint8_t threshold); + + // FF_DUR register + uint8_t getFreefallDetectionDuration(); + void setFreefallDetectionDuration(uint8_t duration); + + // MOT_THR register + uint8_t getMotionDetectionThreshold(); + void setMotionDetectionThreshold(uint8_t threshold); + + // MOT_DUR register + uint8_t getMotionDetectionDuration(); + void setMotionDetectionDuration(uint8_t duration); + + // ZRMOT_THR register + uint8_t getZeroMotionDetectionThreshold(); + void setZeroMotionDetectionThreshold(uint8_t threshold); + + // ZRMOT_DUR register + uint8_t getZeroMotionDetectionDuration(); + void setZeroMotionDetectionDuration(uint8_t duration); + + // FIFO_EN register + bool getTempFIFOEnabled(); + void setTempFIFOEnabled(bool enabled); + bool getXGyroFIFOEnabled(); + void setXGyroFIFOEnabled(bool enabled); + bool getYGyroFIFOEnabled(); + void setYGyroFIFOEnabled(bool enabled); + bool getZGyroFIFOEnabled(); + void setZGyroFIFOEnabled(bool enabled); + bool getAccelFIFOEnabled(); + void setAccelFIFOEnabled(bool enabled); + bool getSlave2FIFOEnabled(); + void setSlave2FIFOEnabled(bool enabled); + bool getSlave1FIFOEnabled(); + void setSlave1FIFOEnabled(bool enabled); + bool getSlave0FIFOEnabled(); + void setSlave0FIFOEnabled(bool enabled); + + // I2C_MST_CTRL register + bool getMultiMasterEnabled(); + void setMultiMasterEnabled(bool enabled); + bool getWaitForExternalSensorEnabled(); + void setWaitForExternalSensorEnabled(bool enabled); + bool getSlave3FIFOEnabled(); + void setSlave3FIFOEnabled(bool enabled); + bool getSlaveReadWriteTransitionEnabled(); + void setSlaveReadWriteTransitionEnabled(bool enabled); + uint8_t getMasterClockSpeed(); + void setMasterClockSpeed(uint8_t speed); + + // I2C_SLV* registers (Slave 0-3) + uint8_t getSlaveAddress(uint8_t num); + void setSlaveAddress(uint8_t num, uint8_t address); + uint8_t getSlaveRegister(uint8_t num); + void setSlaveRegister(uint8_t num, uint8_t reg); + bool getSlaveEnabled(uint8_t num); + void setSlaveEnabled(uint8_t num, bool enabled); + bool getSlaveWordByteSwap(uint8_t num); + void setSlaveWordByteSwap(uint8_t num, bool enabled); + bool getSlaveWriteMode(uint8_t num); + void setSlaveWriteMode(uint8_t num, bool mode); + bool getSlaveWordGroupOffset(uint8_t num); + void setSlaveWordGroupOffset(uint8_t num, bool enabled); + uint8_t getSlaveDataLength(uint8_t num); + void setSlaveDataLength(uint8_t num, uint8_t length); + + // I2C_SLV* registers (Slave 4) + uint8_t getSlave4Address(); + void setSlave4Address(uint8_t address); + uint8_t getSlave4Register(); + void setSlave4Register(uint8_t reg); + void setSlave4OutputByte(uint8_t data); + bool getSlave4Enabled(); + void setSlave4Enabled(bool enabled); + bool getSlave4InterruptEnabled(); + void setSlave4InterruptEnabled(bool enabled); + bool getSlave4WriteMode(); + void setSlave4WriteMode(bool mode); + uint8_t getSlave4MasterDelay(); + void setSlave4MasterDelay(uint8_t delay); + uint8_t getSlate4InputByte(); + + // I2C_MST_STATUS register + bool getPassthroughStatus(); + bool getSlave4IsDone(); + bool getLostArbitration(); + bool getSlave4Nack(); + bool getSlave3Nack(); + bool getSlave2Nack(); + bool getSlave1Nack(); + bool getSlave0Nack(); + + // INT_PIN_CFG register + bool getInterruptMode(); + void setInterruptMode(bool mode); + bool getInterruptDrive(); + void setInterruptDrive(bool drive); + bool getInterruptLatch(); + void setInterruptLatch(bool latch); + bool getInterruptLatchClear(); + void setInterruptLatchClear(bool clear); + bool getFSyncInterruptLevel(); + void setFSyncInterruptLevel(bool level); + bool getFSyncInterruptEnabled(); + void setFSyncInterruptEnabled(bool enabled); + bool getI2CBypassEnabled(); + void setI2CBypassEnabled(bool enabled); + bool getClockOutputEnabled(); + void setClockOutputEnabled(bool enabled); + + // INT_ENABLE register + uint8_t getIntEnabled(); + void setIntEnabled(uint8_t enabled); + bool getIntFreefallEnabled(); + void setIntFreefallEnabled(bool enabled); + bool getIntMotionEnabled(); + void setIntMotionEnabled(bool enabled); + bool getIntZeroMotionEnabled(); + void setIntZeroMotionEnabled(bool enabled); + bool getIntFIFOBufferOverflowEnabled(); + void setIntFIFOBufferOverflowEnabled(bool enabled); + bool getIntI2CMasterEnabled(); + void setIntI2CMasterEnabled(bool enabled); + bool getIntDataReadyEnabled(); + void setIntDataReadyEnabled(bool enabled); + + // INT_STATUS register + uint8_t getIntStatus(); + bool getIntFreefallStatus(); + bool getIntMotionStatus(); + bool getIntZeroMotionStatus(); + bool getIntFIFOBufferOverflowStatus(); + bool getIntI2CMasterStatus(); + bool getIntDataReadyStatus(); + + // ACCEL_*OUT_* registers + void getMotion9(int16_t* ax, int16_t* ay, int16_t* az, int16_t* gx, int16_t* gy, int16_t* gz, int16_t* mx, int16_t* my, int16_t* mz); + void getMotion6(int16_t* ax, int16_t* ay, int16_t* az, int16_t* gx, int16_t* gy, int16_t* gz); + void getAcceleration(int16_t* x, int16_t* y, int16_t* z); + int16_t getAccelerationX(); + int16_t getAccelerationY(); + int16_t getAccelerationZ(); + + // TEMP_OUT_* registers + int16_t getTemperature(); + + // GYRO_*OUT_* registers + void getRotation(int16_t* x, int16_t* y, int16_t* z); + int16_t getRotationX(); + int16_t getRotationY(); + int16_t getRotationZ(); + + // EXT_SENS_DATA_* registers + uint8_t getExternalSensorByte(int position); + uint16_t getExternalSensorWord(int position); + uint32_t getExternalSensorDWord(int position); + + // MOT_DETECT_STATUS register + uint8_t getMotionStatus(); + bool getXNegMotionDetected(); + bool getXPosMotionDetected(); + bool getYNegMotionDetected(); + bool getYPosMotionDetected(); + bool getZNegMotionDetected(); + bool getZPosMotionDetected(); + bool getZeroMotionDetected(); + + // I2C_SLV*_DO register + void setSlaveOutputByte(uint8_t num, uint8_t data); + + // I2C_MST_DELAY_CTRL register + bool getExternalShadowDelayEnabled(); + void setExternalShadowDelayEnabled(bool enabled); + bool getSlaveDelayEnabled(uint8_t num); + void setSlaveDelayEnabled(uint8_t num, bool enabled); + + // SIGNAL_PATH_RESET register + void resetGyroscopePath(); + void resetAccelerometerPath(); + void resetTemperaturePath(); + + // MOT_DETECT_CTRL register + uint8_t getAccelerometerPowerOnDelay(); + void setAccelerometerPowerOnDelay(uint8_t delay); + uint8_t getFreefallDetectionCounterDecrement(); + void setFreefallDetectionCounterDecrement(uint8_t decrement); + uint8_t getMotionDetectionCounterDecrement(); + void setMotionDetectionCounterDecrement(uint8_t decrement); + + // USER_CTRL register + bool getFIFOEnabled(); + void setFIFOEnabled(bool enabled); + bool getI2CMasterModeEnabled(); + void setI2CMasterModeEnabled(bool enabled); + void switchSPIEnabled(bool enabled); + void resetFIFO(); + void resetI2CMaster(); + void resetSensors(); + + // PWR_MGMT_1 register + void reset(); + bool getSleepEnabled(); + void setSleepEnabled(bool enabled); + bool getWakeCycleEnabled(); + void setWakeCycleEnabled(bool enabled); + bool getTempSensorEnabled(); + void setTempSensorEnabled(bool enabled); + uint8_t getClockSource(); + void setClockSource(uint8_t source); + + // PWR_MGMT_2 register + uint8_t getWakeFrequency(); + void setWakeFrequency(uint8_t frequency); + bool getStandbyXAccelEnabled(); + void setStandbyXAccelEnabled(bool enabled); + bool getStandbyYAccelEnabled(); + void setStandbyYAccelEnabled(bool enabled); + bool getStandbyZAccelEnabled(); + void setStandbyZAccelEnabled(bool enabled); + bool getStandbyXGyroEnabled(); + void setStandbyXGyroEnabled(bool enabled); + bool getStandbyYGyroEnabled(); + void setStandbyYGyroEnabled(bool enabled); + bool getStandbyZGyroEnabled(); + void setStandbyZGyroEnabled(bool enabled); + + // FIFO_COUNT_* registers + uint16_t getFIFOCount(); + + // FIFO_R_W register + uint8_t getFIFOByte(); + void setFIFOByte(uint8_t data); + void getFIFOBytes(uint8_t *data, uint8_t length); + + // WHO_AM_I register + uint8_t getDeviceID(); + void setDeviceID(uint8_t id); + + // ======== UNDOCUMENTED/DMP REGISTERS/METHODS ======== + + // XG_OFFS_TC register + uint8_t getOTPBankValid(); + void setOTPBankValid(bool enabled); + int8_t getXGyroOffsetTC(); + void setXGyroOffsetTC(int8_t offset); + + // YG_OFFS_TC register + int8_t getYGyroOffsetTC(); + void setYGyroOffsetTC(int8_t offset); + + // ZG_OFFS_TC register + int8_t getZGyroOffsetTC(); + void setZGyroOffsetTC(int8_t offset); + + // X_FINE_GAIN register + int8_t getXFineGain(); + void setXFineGain(int8_t gain); + + // Y_FINE_GAIN register + int8_t getYFineGain(); + void setYFineGain(int8_t gain); + + // Z_FINE_GAIN register + int8_t getZFineGain(); + void setZFineGain(int8_t gain); + + // XA_OFFS_* registers + int16_t getXAccelOffset(); + void setXAccelOffset(int16_t offset); + + // YA_OFFS_* register + int16_t getYAccelOffset(); + void setYAccelOffset(int16_t offset); + + // ZA_OFFS_* register + int16_t getZAccelOffset(); + void setZAccelOffset(int16_t offset); + + // XG_OFFS_USR* registers + int16_t getXGyroOffset(); + void setXGyroOffset(int16_t offset); + + // YG_OFFS_USR* register + int16_t getYGyroOffset(); + void setYGyroOffset(int16_t offset); + + // ZG_OFFS_USR* register + int16_t getZGyroOffset(); + void setZGyroOffset(int16_t offset); + + // INT_ENABLE register (DMP functions) + bool getIntPLLReadyEnabled(); + void setIntPLLReadyEnabled(bool enabled); + bool getIntDMPEnabled(); + void setIntDMPEnabled(bool enabled); + + // DMP_INT_STATUS + bool getDMPInt5Status(); + bool getDMPInt4Status(); + bool getDMPInt3Status(); + bool getDMPInt2Status(); + bool getDMPInt1Status(); + bool getDMPInt0Status(); + + // INT_STATUS register (DMP functions) + bool getIntPLLReadyStatus(); + bool getIntDMPStatus(); + + // USER_CTRL register (DMP functions) + bool getDMPEnabled(); + void setDMPEnabled(bool enabled); + void resetDMP(); + + // BANK_SEL register + void setMemoryBank(uint8_t bank, bool prefetchEnabled=false, bool userBank=false); + + // MEM_START_ADDR register + void setMemoryStartAddress(uint8_t address); + + // MEM_R_W register + uint8_t readMemoryByte(); + void writeMemoryByte(uint8_t data); + void readMemoryBlock(uint8_t *data, uint16_t dataSize, uint8_t bank=0, uint8_t address=0); + bool writeMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank=0, uint8_t address=0, bool verify=true, bool useProgMem=false); + bool writeProgMemoryBlock(const uint8_t *data, uint16_t dataSize, uint8_t bank=0, uint8_t address=0, bool verify=true); + + bool writeDMPConfigurationSet(const uint8_t *data, uint16_t dataSize, bool useProgMem=false); + bool writeProgDMPConfigurationSet(const uint8_t *data, uint16_t dataSize); + + // DMP_CFG_1 register + uint8_t getDMPConfig1(); + void setDMPConfig1(uint8_t config); + + // DMP_CFG_2 register + uint8_t getDMPConfig2(); + void setDMPConfig2(uint8_t config); + + // special methods for MotionApps 2.0 implementation + #ifdef MPU6050_INCLUDE_DMP_MOTIONAPPS20 + uint8_t *dmpPacketBuffer; + uint16_t dmpPacketSize; + + uint8_t dmpInitialize(); + bool dmpPacketAvailable(); + + uint8_t dmpSetFIFORate(uint8_t fifoRate); + uint8_t dmpGetFIFORate(); + uint8_t dmpGetSampleStepSizeMS(); + uint8_t dmpGetSampleFrequency(); + int32_t dmpDecodeTemperature(int8_t tempReg); + + // Register callbacks after a packet of FIFO data is processed + //uint8_t dmpRegisterFIFORateProcess(inv_obj_func func, int16_t priority); + //uint8_t dmpUnregisterFIFORateProcess(inv_obj_func func); + uint8_t dmpRunFIFORateProcesses(); + + // Setup FIFO for various output + uint8_t dmpSendQuaternion(uint_fast16_t accuracy); + uint8_t dmpSendGyro(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendAccel(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendLinearAccel(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendLinearAccelInWorld(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendControlData(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendSensorData(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendExternalSensorData(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendGravity(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendPacketNumber(uint_fast16_t accuracy); + uint8_t dmpSendQuantizedAccel(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendEIS(uint_fast16_t elements, uint_fast16_t accuracy); + + // Get Fixed Point data from FIFO + uint8_t dmpGetAccel(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetAccel(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetAccel(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetQuaternion(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetQuaternion(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetQuaternion(Quaternion *q, const uint8_t* packet=0); + uint8_t dmpGet6AxisQuaternion(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGet6AxisQuaternion(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGet6AxisQuaternion(Quaternion *q, const uint8_t* packet=0); + uint8_t dmpGetRelativeQuaternion(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetRelativeQuaternion(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetRelativeQuaternion(Quaternion *data, const uint8_t* packet=0); + uint8_t dmpGetGyro(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyro(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyro(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpSetLinearAccelFilterCoefficient(float coef); + uint8_t dmpGetLinearAccel(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetLinearAccel(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetLinearAccel(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetLinearAccel(VectorInt16 *v, VectorInt16 *vRaw, VectorFloat *gravity); + uint8_t dmpGetLinearAccelInWorld(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetLinearAccelInWorld(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetLinearAccelInWorld(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetLinearAccelInWorld(VectorInt16 *v, VectorInt16 *vReal, Quaternion *q); + uint8_t dmpGetGyroAndAccelSensor(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyroAndAccelSensor(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyroAndAccelSensor(VectorInt16 *g, VectorInt16 *a, const uint8_t* packet=0); + uint8_t dmpGetGyroSensor(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyroSensor(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyroSensor(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetControlData(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetTemperature(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGravity(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGravity(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetGravity(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetGravity(VectorFloat *v, Quaternion *q); + uint8_t dmpGetUnquantizedAccel(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetUnquantizedAccel(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetUnquantizedAccel(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetQuantizedAccel(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetQuantizedAccel(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetQuantizedAccel(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetExternalSensorData(int32_t *data, uint16_t size, const uint8_t* packet=0); + uint8_t dmpGetEIS(int32_t *data, const uint8_t* packet=0); + + uint8_t dmpGetEuler(float *data, Quaternion *q); + uint8_t dmpGetYawPitchRoll(float *data, Quaternion *q, VectorFloat *gravity); + + // Get Floating Point data from FIFO + uint8_t dmpGetAccelFloat(float *data, const uint8_t* packet=0); + uint8_t dmpGetQuaternionFloat(float *data, const uint8_t* packet=0); + + uint8_t dmpProcessFIFOPacket(const unsigned char *dmpData); + uint8_t dmpReadAndProcessFIFOPacket(uint8_t numPackets, uint8_t *processed=NULL); + + uint8_t dmpSetFIFOProcessedCallback(void (*func) (void)); + + uint8_t dmpInitFIFOParam(); + uint8_t dmpCloseFIFO(); + uint8_t dmpSetGyroDataSource(uint8_t source); + uint8_t dmpDecodeQuantizedAccel(); + uint32_t dmpGetGyroSumOfSquare(); + uint32_t dmpGetAccelSumOfSquare(); + void dmpOverrideQuaternion(long *q); + uint16_t dmpGetFIFOPacketSize(); + #endif + + // special methods for MotionApps 4.1 implementation + #ifdef MPU6050_INCLUDE_DMP_MOTIONAPPS41 + uint8_t *dmpPacketBuffer; + uint16_t dmpPacketSize; + + uint8_t dmpInitialize(); + bool dmpPacketAvailable(); + + uint8_t dmpSetFIFORate(uint8_t fifoRate); + uint8_t dmpGetFIFORate(); + uint8_t dmpGetSampleStepSizeMS(); + uint8_t dmpGetSampleFrequency(); + int32_t dmpDecodeTemperature(int8_t tempReg); + + // Register callbacks after a packet of FIFO data is processed + //uint8_t dmpRegisterFIFORateProcess(inv_obj_func func, int16_t priority); + //uint8_t dmpUnregisterFIFORateProcess(inv_obj_func func); + uint8_t dmpRunFIFORateProcesses(); + + // Setup FIFO for various output + uint8_t dmpSendQuaternion(uint_fast16_t accuracy); + uint8_t dmpSendGyro(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendAccel(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendLinearAccel(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendLinearAccelInWorld(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendControlData(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendSensorData(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendExternalSensorData(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendGravity(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendPacketNumber(uint_fast16_t accuracy); + uint8_t dmpSendQuantizedAccel(uint_fast16_t elements, uint_fast16_t accuracy); + uint8_t dmpSendEIS(uint_fast16_t elements, uint_fast16_t accuracy); + + // Get Fixed Point data from FIFO + uint8_t dmpGetAccel(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetAccel(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetAccel(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetQuaternion(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetQuaternion(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetQuaternion(Quaternion *q, const uint8_t* packet=0); + uint8_t dmpGet6AxisQuaternion(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGet6AxisQuaternion(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGet6AxisQuaternion(Quaternion *q, const uint8_t* packet=0); + uint8_t dmpGetRelativeQuaternion(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetRelativeQuaternion(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetRelativeQuaternion(Quaternion *data, const uint8_t* packet=0); + uint8_t dmpGetGyro(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyro(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyro(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetMag(int16_t *data, const uint8_t* packet=0); + uint8_t dmpSetLinearAccelFilterCoefficient(float coef); + uint8_t dmpGetLinearAccel(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetLinearAccel(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetLinearAccel(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetLinearAccel(VectorInt16 *v, VectorInt16 *vRaw, VectorFloat *gravity); + uint8_t dmpGetLinearAccelInWorld(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetLinearAccelInWorld(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetLinearAccelInWorld(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetLinearAccelInWorld(VectorInt16 *v, VectorInt16 *vReal, Quaternion *q); + uint8_t dmpGetGyroAndAccelSensor(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyroAndAccelSensor(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyroAndAccelSensor(VectorInt16 *g, VectorInt16 *a, const uint8_t* packet=0); + uint8_t dmpGetGyroSensor(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyroSensor(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetGyroSensor(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetControlData(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetTemperature(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGravity(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetGravity(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetGravity(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetGravity(VectorFloat *v, Quaternion *q); + uint8_t dmpGetUnquantizedAccel(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetUnquantizedAccel(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetUnquantizedAccel(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetQuantizedAccel(int32_t *data, const uint8_t* packet=0); + uint8_t dmpGetQuantizedAccel(int16_t *data, const uint8_t* packet=0); + uint8_t dmpGetQuantizedAccel(VectorInt16 *v, const uint8_t* packet=0); + uint8_t dmpGetExternalSensorData(int32_t *data, uint16_t size, const uint8_t* packet=0); + uint8_t dmpGetEIS(int32_t *data, const uint8_t* packet=0); + + uint8_t dmpGetEuler(float *data, Quaternion *q); + uint8_t dmpGetYawPitchRoll(float *data, Quaternion *q, VectorFloat *gravity); + + // Get Floating Point data from FIFO + uint8_t dmpGetAccelFloat(float *data, const uint8_t* packet=0); + uint8_t dmpGetQuaternionFloat(float *data, const uint8_t* packet=0); + + uint8_t dmpProcessFIFOPacket(const unsigned char *dmpData); + uint8_t dmpReadAndProcessFIFOPacket(uint8_t numPackets, uint8_t *processed=NULL); + + uint8_t dmpSetFIFOProcessedCallback(void (*func) (void)); + + uint8_t dmpInitFIFOParam(); + uint8_t dmpCloseFIFO(); + uint8_t dmpSetGyroDataSource(uint8_t source); + uint8_t dmpDecodeQuantizedAccel(); + uint32_t dmpGetGyroSumOfSquare(); + uint32_t dmpGetAccelSumOfSquare(); + void dmpOverrideQuaternion(long *q); + uint16_t dmpGetFIFOPacketSize(); + #endif + + private: + uint8_t devAddr; + uint8_t buffer[14]; +}; + +#endif /* _MPU6050_H_ */ diff --git a/libraries/MPU6050/MPU6050_6Axis_MotionApps20.h b/libraries/MPU6050/MPU6050_6Axis_MotionApps20.h new file mode 100644 index 0000000000000000000000000000000000000000..e3e3c0e8f0670d861d225226b88d48402c84754f --- /dev/null +++ b/libraries/MPU6050/MPU6050_6Axis_MotionApps20.h @@ -0,0 +1,747 @@ +// I2Cdev library collection - MPU6050 I2C device class, 6-axis MotionApps 2.0 implementation +// Based on InvenSense MPU-6050 register map document rev. 2.0, 5/19/2011 (RM-MPU-6000A-00) +// 5/20/2013 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// ... - ongoing debug release + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +#ifndef _MPU6050_6AXIS_MOTIONAPPS20_H_ +#define _MPU6050_6AXIS_MOTIONAPPS20_H_ + +#include "I2Cdev.h" +#include "helper_3dmath.h" + +// MotionApps 2.0 DMP implementation, built using the MPU-6050EVB evaluation board +#define MPU6050_INCLUDE_DMP_MOTIONAPPS20 + +#include "MPU6050.h" + +// Tom Carpenter's conditional PROGMEM code +// http://forum.arduino.cc/index.php?topic=129407.0 +#ifdef __AVR__ + #include <avr/pgmspace.h> +#else + // Teensy 3.0 library conditional PROGMEM code from Paul Stoffregen + #ifndef __PGMSPACE_H_ + #define __PGMSPACE_H_ 1 + #include <inttypes.h> + + #define PROGMEM + #define PGM_P const char * + #define PSTR(str) (str) + #define F(x) x + + typedef void prog_void; + typedef char prog_char; + typedef unsigned char prog_uchar; + typedef int8_t prog_int8_t; + typedef uint8_t prog_uint8_t; + typedef int16_t prog_int16_t; + typedef uint16_t prog_uint16_t; + typedef int32_t prog_int32_t; + typedef uint32_t prog_uint32_t; + + #define strcpy_P(dest, src) strcpy((dest), (src)) + #define strcat_P(dest, src) strcat((dest), (src)) + #define strcmp_P(a, b) strcmp((a), (b)) + + #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) + #define pgm_read_word(addr) (*(const unsigned short *)(addr)) + #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) + #define pgm_read_float(addr) (*(const float *)(addr)) + + #define pgm_read_byte_near(addr) pgm_read_byte(addr) + #define pgm_read_word_near(addr) pgm_read_word(addr) + #define pgm_read_dword_near(addr) pgm_read_dword(addr) + #define pgm_read_float_near(addr) pgm_read_float(addr) + #define pgm_read_byte_far(addr) pgm_read_byte(addr) + #define pgm_read_word_far(addr) pgm_read_word(addr) + #define pgm_read_dword_far(addr) pgm_read_dword(addr) + #define pgm_read_float_far(addr) pgm_read_float(addr) + #endif +#endif + +/* Source is from the InvenSense MotionApps v2 demo code. Original source is + * unavailable, unless you happen to be amazing as decompiling binary by + * hand (in which case, please contact me, and I'm totally serious). + * + * Also, I'd like to offer many, many thanks to Noah Zerkin for all of the + * DMP reverse-engineering he did to help make this bit of wizardry + * possible. + */ + +// NOTE! Enabling DEBUG adds about 3.3kB to the flash program size. +// Debug output is now working even on ATMega328P MCUs (e.g. Arduino Uno) +// after moving string constants to flash memory storage using the F() +// compiler macro (Arduino IDE 1.0+ required). + +//#define DEBUG +#ifdef DEBUG + #define DEBUG_PRINT(x) Serial.print(x) + #define DEBUG_PRINTF(x, y) Serial.print(x, y) + #define DEBUG_PRINTLN(x) Serial.println(x) + #define DEBUG_PRINTLNF(x, y) Serial.println(x, y) +#else + #define DEBUG_PRINT(x) + #define DEBUG_PRINTF(x, y) + #define DEBUG_PRINTLN(x) + #define DEBUG_PRINTLNF(x, y) +#endif + +#define MPU6050_DMP_CODE_SIZE 1929 // dmpMemory[] +#define MPU6050_DMP_CONFIG_SIZE 192 // dmpConfig[] +#define MPU6050_DMP_UPDATES_SIZE 47 // dmpUpdates[] + +/* ================================================================================================ * + | Default MotionApps v2.0 42-byte FIFO packet structure: | + | | + | [QUAT W][ ][QUAT X][ ][QUAT Y][ ][QUAT Z][ ][GYRO X][ ][GYRO Y][ ] | + | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | + | | + | [GYRO Z][ ][ACC X ][ ][ACC Y ][ ][ACC Z ][ ][ ] | + | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | + * ================================================================================================ */ + +// this block of memory gets written to the MPU on start-up, and it seems +// to be volatile memory, so it has to be done each time (it only takes ~1 +// second though) +const unsigned char dmpMemory[MPU6050_DMP_CODE_SIZE] PROGMEM = { + // bank 0, 256 bytes + 0xFB, 0x00, 0x00, 0x3E, 0x00, 0x0B, 0x00, 0x36, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x65, 0x00, 0x54, 0xFF, 0xEF, 0x00, 0x00, 0xFA, 0x80, 0x00, 0x0B, 0x12, 0x82, 0x00, 0x01, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x81, 0xFF, 0xFF, 0xFA, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xE8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x7F, 0xFF, 0xFF, 0xFE, 0x80, 0x01, + 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3E, 0x03, 0x30, 0x40, 0x00, 0x00, 0x00, 0x02, 0xCA, 0xE3, 0x09, 0x3E, 0x80, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x41, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x2A, 0x00, 0x00, 0x16, 0x55, 0x00, 0x00, 0x21, 0x82, + 0xFD, 0x87, 0x26, 0x50, 0xFD, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x05, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6F, 0x00, 0x02, 0x65, 0x32, 0x00, 0x00, 0x5E, 0xC0, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFB, 0x8C, 0x6F, 0x5D, 0xFD, 0x5D, 0x08, 0xD9, 0x00, 0x7C, 0x73, 0x3B, 0x00, 0x6C, 0x12, 0xCC, + 0x32, 0x00, 0x13, 0x9D, 0x32, 0x00, 0xD0, 0xD6, 0x32, 0x00, 0x08, 0x00, 0x40, 0x00, 0x01, 0xF4, + 0xFF, 0xE6, 0x80, 0x79, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xD6, 0x00, 0x00, 0x27, 0x10, + + // bank 1, 256 bytes + 0xFB, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFA, 0x36, 0xFF, 0xBC, 0x30, 0x8E, 0x00, 0x05, 0xFB, 0xF0, 0xFF, 0xD9, 0x5B, 0xC8, + 0xFF, 0xD0, 0x9A, 0xBE, 0x00, 0x00, 0x10, 0xA9, 0xFF, 0xF4, 0x1E, 0xB2, 0x00, 0xCE, 0xBB, 0xF7, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0C, + 0xFF, 0xC2, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xCF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0x68, 0xB6, 0x79, 0x35, 0x28, 0xBC, 0xC6, 0x7E, 0xD1, 0x6C, + 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x6A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x25, 0x4D, 0x00, 0x2F, 0x70, 0x6D, 0x00, 0x00, 0x05, 0xAE, 0x00, 0x0C, 0x02, 0xD0, + + // bank 2, 256 bytes + 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x54, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0xFF, 0xEF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + // bank 3, 256 bytes + 0xD8, 0xDC, 0xBA, 0xA2, 0xF1, 0xDE, 0xB2, 0xB8, 0xB4, 0xA8, 0x81, 0x91, 0xF7, 0x4A, 0x90, 0x7F, + 0x91, 0x6A, 0xF3, 0xF9, 0xDB, 0xA8, 0xF9, 0xB0, 0xBA, 0xA0, 0x80, 0xF2, 0xCE, 0x81, 0xF3, 0xC2, + 0xF1, 0xC1, 0xF2, 0xC3, 0xF3, 0xCC, 0xA2, 0xB2, 0x80, 0xF1, 0xC6, 0xD8, 0x80, 0xBA, 0xA7, 0xDF, + 0xDF, 0xDF, 0xF2, 0xA7, 0xC3, 0xCB, 0xC5, 0xB6, 0xF0, 0x87, 0xA2, 0x94, 0x24, 0x48, 0x70, 0x3C, + 0x95, 0x40, 0x68, 0x34, 0x58, 0x9B, 0x78, 0xA2, 0xF1, 0x83, 0x92, 0x2D, 0x55, 0x7D, 0xD8, 0xB1, + 0xB4, 0xB8, 0xA1, 0xD0, 0x91, 0x80, 0xF2, 0x70, 0xF3, 0x70, 0xF2, 0x7C, 0x80, 0xA8, 0xF1, 0x01, + 0xB0, 0x98, 0x87, 0xD9, 0x43, 0xD8, 0x86, 0xC9, 0x88, 0xBA, 0xA1, 0xF2, 0x0E, 0xB8, 0x97, 0x80, + 0xF1, 0xA9, 0xDF, 0xDF, 0xDF, 0xAA, 0xDF, 0xDF, 0xDF, 0xF2, 0xAA, 0xC5, 0xCD, 0xC7, 0xA9, 0x0C, + 0xC9, 0x2C, 0x97, 0x97, 0x97, 0x97, 0xF1, 0xA9, 0x89, 0x26, 0x46, 0x66, 0xB0, 0xB4, 0xBA, 0x80, + 0xAC, 0xDE, 0xF2, 0xCA, 0xF1, 0xB2, 0x8C, 0x02, 0xA9, 0xB6, 0x98, 0x00, 0x89, 0x0E, 0x16, 0x1E, + 0xB8, 0xA9, 0xB4, 0x99, 0x2C, 0x54, 0x7C, 0xB0, 0x8A, 0xA8, 0x96, 0x36, 0x56, 0x76, 0xF1, 0xB9, + 0xAF, 0xB4, 0xB0, 0x83, 0xC0, 0xB8, 0xA8, 0x97, 0x11, 0xB1, 0x8F, 0x98, 0xB9, 0xAF, 0xF0, 0x24, + 0x08, 0x44, 0x10, 0x64, 0x18, 0xF1, 0xA3, 0x29, 0x55, 0x7D, 0xAF, 0x83, 0xB5, 0x93, 0xAF, 0xF0, + 0x00, 0x28, 0x50, 0xF1, 0xA3, 0x86, 0x9F, 0x61, 0xA6, 0xDA, 0xDE, 0xDF, 0xD9, 0xFA, 0xA3, 0x86, + 0x96, 0xDB, 0x31, 0xA6, 0xD9, 0xF8, 0xDF, 0xBA, 0xA6, 0x8F, 0xC2, 0xC5, 0xC7, 0xB2, 0x8C, 0xC1, + 0xB8, 0xA2, 0xDF, 0xDF, 0xDF, 0xA3, 0xDF, 0xDF, 0xDF, 0xD8, 0xD8, 0xF1, 0xB8, 0xA8, 0xB2, 0x86, + + // bank 4, 256 bytes + 0xB4, 0x98, 0x0D, 0x35, 0x5D, 0xB8, 0xAA, 0x98, 0xB0, 0x87, 0x2D, 0x35, 0x3D, 0xB2, 0xB6, 0xBA, + 0xAF, 0x8C, 0x96, 0x19, 0x8F, 0x9F, 0xA7, 0x0E, 0x16, 0x1E, 0xB4, 0x9A, 0xB8, 0xAA, 0x87, 0x2C, + 0x54, 0x7C, 0xB9, 0xA3, 0xDE, 0xDF, 0xDF, 0xA3, 0xB1, 0x80, 0xF2, 0xC4, 0xCD, 0xC9, 0xF1, 0xB8, + 0xA9, 0xB4, 0x99, 0x83, 0x0D, 0x35, 0x5D, 0x89, 0xB9, 0xA3, 0x2D, 0x55, 0x7D, 0xB5, 0x93, 0xA3, + 0x0E, 0x16, 0x1E, 0xA9, 0x2C, 0x54, 0x7C, 0xB8, 0xB4, 0xB0, 0xF1, 0x97, 0x83, 0xA8, 0x11, 0x84, + 0xA5, 0x09, 0x98, 0xA3, 0x83, 0xF0, 0xDA, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xD8, 0xF1, 0xA5, + 0x29, 0x55, 0x7D, 0xA5, 0x85, 0x95, 0x02, 0x1A, 0x2E, 0x3A, 0x56, 0x5A, 0x40, 0x48, 0xF9, 0xF3, + 0xA3, 0xD9, 0xF8, 0xF0, 0x98, 0x83, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0x97, 0x82, 0xA8, 0xF1, + 0x11, 0xF0, 0x98, 0xA2, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xDA, 0xF3, 0xDE, 0xD8, 0x83, 0xA5, + 0x94, 0x01, 0xD9, 0xA3, 0x02, 0xF1, 0xA2, 0xC3, 0xC5, 0xC7, 0xD8, 0xF1, 0x84, 0x92, 0xA2, 0x4D, + 0xDA, 0x2A, 0xD8, 0x48, 0x69, 0xD9, 0x2A, 0xD8, 0x68, 0x55, 0xDA, 0x32, 0xD8, 0x50, 0x71, 0xD9, + 0x32, 0xD8, 0x70, 0x5D, 0xDA, 0x3A, 0xD8, 0x58, 0x79, 0xD9, 0x3A, 0xD8, 0x78, 0x93, 0xA3, 0x4D, + 0xDA, 0x2A, 0xD8, 0x48, 0x69, 0xD9, 0x2A, 0xD8, 0x68, 0x55, 0xDA, 0x32, 0xD8, 0x50, 0x71, 0xD9, + 0x32, 0xD8, 0x70, 0x5D, 0xDA, 0x3A, 0xD8, 0x58, 0x79, 0xD9, 0x3A, 0xD8, 0x78, 0xA8, 0x8A, 0x9A, + 0xF0, 0x28, 0x50, 0x78, 0x9E, 0xF3, 0x88, 0x18, 0xF1, 0x9F, 0x1D, 0x98, 0xA8, 0xD9, 0x08, 0xD8, + 0xC8, 0x9F, 0x12, 0x9E, 0xF3, 0x15, 0xA8, 0xDA, 0x12, 0x10, 0xD8, 0xF1, 0xAF, 0xC8, 0x97, 0x87, + + // bank 5, 256 bytes + 0x34, 0xB5, 0xB9, 0x94, 0xA4, 0x21, 0xF3, 0xD9, 0x22, 0xD8, 0xF2, 0x2D, 0xF3, 0xD9, 0x2A, 0xD8, + 0xF2, 0x35, 0xF3, 0xD9, 0x32, 0xD8, 0x81, 0xA4, 0x60, 0x60, 0x61, 0xD9, 0x61, 0xD8, 0x6C, 0x68, + 0x69, 0xD9, 0x69, 0xD8, 0x74, 0x70, 0x71, 0xD9, 0x71, 0xD8, 0xB1, 0xA3, 0x84, 0x19, 0x3D, 0x5D, + 0xA3, 0x83, 0x1A, 0x3E, 0x5E, 0x93, 0x10, 0x30, 0x81, 0x10, 0x11, 0xB8, 0xB0, 0xAF, 0x8F, 0x94, + 0xF2, 0xDA, 0x3E, 0xD8, 0xB4, 0x9A, 0xA8, 0x87, 0x29, 0xDA, 0xF8, 0xD8, 0x87, 0x9A, 0x35, 0xDA, + 0xF8, 0xD8, 0x87, 0x9A, 0x3D, 0xDA, 0xF8, 0xD8, 0xB1, 0xB9, 0xA4, 0x98, 0x85, 0x02, 0x2E, 0x56, + 0xA5, 0x81, 0x00, 0x0C, 0x14, 0xA3, 0x97, 0xB0, 0x8A, 0xF1, 0x2D, 0xD9, 0x28, 0xD8, 0x4D, 0xD9, + 0x48, 0xD8, 0x6D, 0xD9, 0x68, 0xD8, 0xB1, 0x84, 0x0D, 0xDA, 0x0E, 0xD8, 0xA3, 0x29, 0x83, 0xDA, + 0x2C, 0x0E, 0xD8, 0xA3, 0x84, 0x49, 0x83, 0xDA, 0x2C, 0x4C, 0x0E, 0xD8, 0xB8, 0xB0, 0xA8, 0x8A, + 0x9A, 0xF5, 0x20, 0xAA, 0xDA, 0xDF, 0xD8, 0xA8, 0x40, 0xAA, 0xD0, 0xDA, 0xDE, 0xD8, 0xA8, 0x60, + 0xAA, 0xDA, 0xD0, 0xDF, 0xD8, 0xF1, 0x97, 0x86, 0xA8, 0x31, 0x9B, 0x06, 0x99, 0x07, 0xAB, 0x97, + 0x28, 0x88, 0x9B, 0xF0, 0x0C, 0x20, 0x14, 0x40, 0xB8, 0xB0, 0xB4, 0xA8, 0x8C, 0x9C, 0xF0, 0x04, + 0x28, 0x51, 0x79, 0x1D, 0x30, 0x14, 0x38, 0xB2, 0x82, 0xAB, 0xD0, 0x98, 0x2C, 0x50, 0x50, 0x78, + 0x78, 0x9B, 0xF1, 0x1A, 0xB0, 0xF0, 0x8A, 0x9C, 0xA8, 0x29, 0x51, 0x79, 0x8B, 0x29, 0x51, 0x79, + 0x8A, 0x24, 0x70, 0x59, 0x8B, 0x20, 0x58, 0x71, 0x8A, 0x44, 0x69, 0x38, 0x8B, 0x39, 0x40, 0x68, + 0x8A, 0x64, 0x48, 0x31, 0x8B, 0x30, 0x49, 0x60, 0xA5, 0x88, 0x20, 0x09, 0x71, 0x58, 0x44, 0x68, + + // bank 6, 256 bytes + 0x11, 0x39, 0x64, 0x49, 0x30, 0x19, 0xF1, 0xAC, 0x00, 0x2C, 0x54, 0x7C, 0xF0, 0x8C, 0xA8, 0x04, + 0x28, 0x50, 0x78, 0xF1, 0x88, 0x97, 0x26, 0xA8, 0x59, 0x98, 0xAC, 0x8C, 0x02, 0x26, 0x46, 0x66, + 0xF0, 0x89, 0x9C, 0xA8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31, + 0xA9, 0x88, 0x09, 0x20, 0x59, 0x70, 0xAB, 0x11, 0x38, 0x40, 0x69, 0xA8, 0x19, 0x31, 0x48, 0x60, + 0x8C, 0xA8, 0x3C, 0x41, 0x5C, 0x20, 0x7C, 0x00, 0xF1, 0x87, 0x98, 0x19, 0x86, 0xA8, 0x6E, 0x76, + 0x7E, 0xA9, 0x99, 0x88, 0x2D, 0x55, 0x7D, 0x9E, 0xB9, 0xA3, 0x8A, 0x22, 0x8A, 0x6E, 0x8A, 0x56, + 0x8A, 0x5E, 0x9F, 0xB1, 0x83, 0x06, 0x26, 0x46, 0x66, 0x0E, 0x2E, 0x4E, 0x6E, 0x9D, 0xB8, 0xAD, + 0x00, 0x2C, 0x54, 0x7C, 0xF2, 0xB1, 0x8C, 0xB4, 0x99, 0xB9, 0xA3, 0x2D, 0x55, 0x7D, 0x81, 0x91, + 0xAC, 0x38, 0xAD, 0x3A, 0xB5, 0x83, 0x91, 0xAC, 0x2D, 0xD9, 0x28, 0xD8, 0x4D, 0xD9, 0x48, 0xD8, + 0x6D, 0xD9, 0x68, 0xD8, 0x8C, 0x9D, 0xAE, 0x29, 0xD9, 0x04, 0xAE, 0xD8, 0x51, 0xD9, 0x04, 0xAE, + 0xD8, 0x79, 0xD9, 0x04, 0xD8, 0x81, 0xF3, 0x9D, 0xAD, 0x00, 0x8D, 0xAE, 0x19, 0x81, 0xAD, 0xD9, + 0x01, 0xD8, 0xF2, 0xAE, 0xDA, 0x26, 0xD8, 0x8E, 0x91, 0x29, 0x83, 0xA7, 0xD9, 0xAD, 0xAD, 0xAD, + 0xAD, 0xF3, 0x2A, 0xD8, 0xD8, 0xF1, 0xB0, 0xAC, 0x89, 0x91, 0x3E, 0x5E, 0x76, 0xF3, 0xAC, 0x2E, + 0x2E, 0xF1, 0xB1, 0x8C, 0x5A, 0x9C, 0xAC, 0x2C, 0x28, 0x28, 0x28, 0x9C, 0xAC, 0x30, 0x18, 0xA8, + 0x98, 0x81, 0x28, 0x34, 0x3C, 0x97, 0x24, 0xA7, 0x28, 0x34, 0x3C, 0x9C, 0x24, 0xF2, 0xB0, 0x89, + 0xAC, 0x91, 0x2C, 0x4C, 0x6C, 0x8A, 0x9B, 0x2D, 0xD9, 0xD8, 0xD8, 0x51, 0xD9, 0xD8, 0xD8, 0x79, + + // bank 7, 138 bytes (remainder) + 0xD9, 0xD8, 0xD8, 0xF1, 0x9E, 0x88, 0xA3, 0x31, 0xDA, 0xD8, 0xD8, 0x91, 0x2D, 0xD9, 0x28, 0xD8, + 0x4D, 0xD9, 0x48, 0xD8, 0x6D, 0xD9, 0x68, 0xD8, 0xB1, 0x83, 0x93, 0x35, 0x3D, 0x80, 0x25, 0xDA, + 0xD8, 0xD8, 0x85, 0x69, 0xDA, 0xD8, 0xD8, 0xB4, 0x93, 0x81, 0xA3, 0x28, 0x34, 0x3C, 0xF3, 0xAB, + 0x8B, 0xF8, 0xA3, 0x91, 0xB6, 0x09, 0xB4, 0xD9, 0xAB, 0xDE, 0xFA, 0xB0, 0x87, 0x9C, 0xB9, 0xA3, + 0xDD, 0xF1, 0xA3, 0xA3, 0xA3, 0xA3, 0x95, 0xF1, 0xA3, 0xA3, 0xA3, 0x9D, 0xF1, 0xA3, 0xA3, 0xA3, + 0xA3, 0xF2, 0xA3, 0xB4, 0x90, 0x80, 0xF2, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, + 0xA3, 0xB2, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xB0, 0x87, 0xB5, 0x99, 0xF1, 0xA3, 0xA3, 0xA3, + 0x98, 0xF1, 0xA3, 0xA3, 0xA3, 0xA3, 0x97, 0xA3, 0xA3, 0xA3, 0xA3, 0xF3, 0x9B, 0xA3, 0xA3, 0xDC, + 0xB9, 0xA7, 0xF1, 0x26, 0x26, 0x26, 0xD8, 0xD8, 0xFF +}; + +// thanks to Noah Zerkin for piecing this stuff together! +const unsigned char dmpConfig[MPU6050_DMP_CONFIG_SIZE] PROGMEM = { +// BANK OFFSET LENGTH [DATA] + 0x03, 0x7B, 0x03, 0x4C, 0xCD, 0x6C, // FCFG_1 inv_set_gyro_calibration + 0x03, 0xAB, 0x03, 0x36, 0x56, 0x76, // FCFG_3 inv_set_gyro_calibration + 0x00, 0x68, 0x04, 0x02, 0xCB, 0x47, 0xA2, // D_0_104 inv_set_gyro_calibration + 0x02, 0x18, 0x04, 0x00, 0x05, 0x8B, 0xC1, // D_0_24 inv_set_gyro_calibration + 0x01, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, // D_1_152 inv_set_accel_calibration + 0x03, 0x7F, 0x06, 0x0C, 0xC9, 0x2C, 0x97, 0x97, 0x97, // FCFG_2 inv_set_accel_calibration + 0x03, 0x89, 0x03, 0x26, 0x46, 0x66, // FCFG_7 inv_set_accel_calibration + 0x00, 0x6C, 0x02, 0x20, 0x00, // D_0_108 inv_set_accel_calibration + 0x02, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_00 inv_set_compass_calibration + 0x02, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_01 + 0x02, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_02 + 0x02, 0x4C, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_10 + 0x02, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_11 + 0x02, 0x54, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_12 + 0x02, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_20 + 0x02, 0x5C, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_21 + 0x02, 0xBC, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_22 + 0x01, 0xEC, 0x04, 0x00, 0x00, 0x40, 0x00, // D_1_236 inv_apply_endian_accel + 0x03, 0x7F, 0x06, 0x0C, 0xC9, 0x2C, 0x97, 0x97, 0x97, // FCFG_2 inv_set_mpu_sensors + 0x04, 0x02, 0x03, 0x0D, 0x35, 0x5D, // CFG_MOTION_BIAS inv_turn_on_bias_from_no_motion + 0x04, 0x09, 0x04, 0x87, 0x2D, 0x35, 0x3D, // FCFG_5 inv_set_bias_update + 0x00, 0xA3, 0x01, 0x00, // D_0_163 inv_set_dead_zone + // SPECIAL 0x01 = enable interrupts + 0x00, 0x00, 0x00, 0x01, // SET INT_ENABLE at i=22, SPECIAL INSTRUCTION + 0x07, 0x86, 0x01, 0xFE, // CFG_6 inv_set_fifo_interupt + 0x07, 0x41, 0x05, 0xF1, 0x20, 0x28, 0x30, 0x38, // CFG_8 inv_send_quaternion + 0x07, 0x7E, 0x01, 0x30, // CFG_16 inv_set_footer + 0x07, 0x46, 0x01, 0x9A, // CFG_GYRO_SOURCE inv_send_gyro + 0x07, 0x47, 0x04, 0xF1, 0x28, 0x30, 0x38, // CFG_9 inv_send_gyro -> inv_construct3_fifo + 0x07, 0x6C, 0x04, 0xF1, 0x28, 0x30, 0x38, // CFG_12 inv_send_accel -> inv_construct3_fifo + 0x02, 0x16, 0x02, 0x00, 0x01 // D_0_22 inv_set_fifo_rate + + // This very last 0x01 WAS a 0x09, which drops the FIFO rate down to 20 Hz. 0x07 is 25 Hz, + // 0x01 is 100Hz. Going faster than 100Hz (0x00=200Hz) tends to result in very noisy data. + // DMP output frequency is calculated easily using this equation: (200Hz / (1 + value)) + + // It is important to make sure the host processor can keep up with reading and processing + // the FIFO output at the desired rate. Handling FIFO overflow cleanly is also a good idea. +}; + +const unsigned char dmpUpdates[MPU6050_DMP_UPDATES_SIZE] PROGMEM = { + 0x01, 0xB2, 0x02, 0xFF, 0xFF, + 0x01, 0x90, 0x04, 0x09, 0x23, 0xA1, 0x35, + 0x01, 0x6A, 0x02, 0x06, 0x00, + 0x01, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x62, 0x02, 0x00, 0x00, + 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, 0x00 +}; + +uint8_t MPU6050::dmpInitialize() { + // reset device + DEBUG_PRINTLN(F("\n\nResetting MPU6050...")); + reset(); + delay(30); // wait after reset + + // enable sleep mode and wake cycle + /*Serial.println(F("Enabling sleep mode...")); + setSleepEnabled(true); + Serial.println(F("Enabling wake cycle...")); + setWakeCycleEnabled(true);*/ + + // disable sleep mode + DEBUG_PRINTLN(F("Disabling sleep mode...")); + setSleepEnabled(false); + + // get MPU hardware revision + DEBUG_PRINTLN(F("Selecting user bank 16...")); + setMemoryBank(0x10, true, true); + DEBUG_PRINTLN(F("Selecting memory byte 6...")); + setMemoryStartAddress(0x06); + DEBUG_PRINTLN(F("Checking hardware revision...")); + DEBUG_PRINT(F("Revision @ user[16][6] = ")); + DEBUG_PRINTLNF(readMemoryByte(), HEX); + DEBUG_PRINTLN(F("Resetting memory bank selection to 0...")); + setMemoryBank(0, false, false); + + // check OTP bank valid + DEBUG_PRINTLN(F("Reading OTP bank valid flag...")); + DEBUG_PRINT(F("OTP bank is ")); + DEBUG_PRINTLN(getOTPBankValid() ? F("valid!") : F("invalid!")); + + // get X/Y/Z gyro offsets + DEBUG_PRINTLN(F("Reading gyro offset TC values...")); + int8_t xgOffsetTC = getXGyroOffsetTC(); + int8_t ygOffsetTC = getYGyroOffsetTC(); + int8_t zgOffsetTC = getZGyroOffsetTC(); + DEBUG_PRINT(F("X gyro offset = ")); + DEBUG_PRINTLN(xgOffsetTC); + DEBUG_PRINT(F("Y gyro offset = ")); + DEBUG_PRINTLN(ygOffsetTC); + DEBUG_PRINT(F("Z gyro offset = ")); + DEBUG_PRINTLN(zgOffsetTC); + + // setup weird slave stuff (?) + DEBUG_PRINTLN(F("Setting slave 0 address to 0x7F...")); + setSlaveAddress(0, 0x7F); + DEBUG_PRINTLN(F("Disabling I2C Master mode...")); + setI2CMasterModeEnabled(false); + DEBUG_PRINTLN(F("Setting slave 0 address to 0x68 (self)...")); + setSlaveAddress(0, 0x68); + DEBUG_PRINTLN(F("Resetting I2C Master control...")); + resetI2CMaster(); + delay(20); + + // load DMP code into memory banks + DEBUG_PRINT(F("Writing DMP code to MPU memory banks (")); + DEBUG_PRINT(MPU6050_DMP_CODE_SIZE); + DEBUG_PRINTLN(F(" bytes)")); + if (writeProgMemoryBlock(dmpMemory, MPU6050_DMP_CODE_SIZE)) { + DEBUG_PRINTLN(F("Success! DMP code written and verified.")); + + // write DMP configuration + DEBUG_PRINT(F("Writing DMP configuration to MPU memory banks (")); + DEBUG_PRINT(MPU6050_DMP_CONFIG_SIZE); + DEBUG_PRINTLN(F(" bytes in config def)")); + if (writeProgDMPConfigurationSet(dmpConfig, MPU6050_DMP_CONFIG_SIZE)) { + DEBUG_PRINTLN(F("Success! DMP configuration written and verified.")); + + DEBUG_PRINTLN(F("Setting clock source to Z Gyro...")); + setClockSource(MPU6050_CLOCK_PLL_ZGYRO); + + DEBUG_PRINTLN(F("Setting DMP and FIFO_OFLOW interrupts enabled...")); + setIntEnabled(0x12); + + DEBUG_PRINTLN(F("Setting sample rate to 200Hz...")); + setRate(4); // 1khz / (1 + 4) = 200 Hz + + DEBUG_PRINTLN(F("Setting external frame sync to TEMP_OUT_L[0]...")); + setExternalFrameSync(MPU6050_EXT_SYNC_TEMP_OUT_L); + + DEBUG_PRINTLN(F("Setting DLPF bandwidth to 42Hz...")); + setDLPFMode(MPU6050_DLPF_BW_42); + + DEBUG_PRINTLN(F("Setting gyro sensitivity to +/- 2000 deg/sec...")); + setFullScaleGyroRange(MPU6050_GYRO_FS_2000); + + DEBUG_PRINTLN(F("Setting DMP programm start address")); + //write start address MSB into register + setDMPConfig1(0x03); + //write start address LSB into register + setDMPConfig2(0x00); + + DEBUG_PRINTLN(F("Clearing OTP Bank flag...")); + setOTPBankValid(false); + + DEBUG_PRINTLN(F("Setting X/Y/Z gyro offset TCs to previous values...")); + setXGyroOffsetTC(xgOffsetTC); + setYGyroOffsetTC(ygOffsetTC); + setZGyroOffsetTC(zgOffsetTC); + + //DEBUG_PRINTLN(F("Setting X/Y/Z gyro user offsets to zero...")); + //setXGyroOffset(0); + //setYGyroOffset(0); + //setZGyroOffset(0); + + DEBUG_PRINTLN(F("Writing final memory update 1/7 (function unknown)...")); + uint8_t dmpUpdate[16], j; + uint16_t pos = 0; + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Writing final memory update 2/7 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Resetting FIFO...")); + resetFIFO(); + + DEBUG_PRINTLN(F("Reading FIFO count...")); + uint16_t fifoCount = getFIFOCount(); + uint8_t fifoBuffer[128]; + + DEBUG_PRINT(F("Current FIFO count=")); + DEBUG_PRINTLN(fifoCount); + getFIFOBytes(fifoBuffer, fifoCount); + + DEBUG_PRINTLN(F("Setting motion detection threshold to 2...")); + setMotionDetectionThreshold(2); + + DEBUG_PRINTLN(F("Setting zero-motion detection threshold to 156...")); + setZeroMotionDetectionThreshold(156); + + DEBUG_PRINTLN(F("Setting motion detection duration to 80...")); + setMotionDetectionDuration(80); + + DEBUG_PRINTLN(F("Setting zero-motion detection duration to 0...")); + setZeroMotionDetectionDuration(0); + + DEBUG_PRINTLN(F("Resetting FIFO...")); + resetFIFO(); + + DEBUG_PRINTLN(F("Enabling FIFO...")); + setFIFOEnabled(true); + + DEBUG_PRINTLN(F("Enabling DMP...")); + setDMPEnabled(true); + + DEBUG_PRINTLN(F("Resetting DMP...")); + resetDMP(); + + DEBUG_PRINTLN(F("Writing final memory update 3/7 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Writing final memory update 4/7 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Writing final memory update 5/7 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Waiting for FIFO count > 2...")); + while ((fifoCount = getFIFOCount()) < 3); + + DEBUG_PRINT(F("Current FIFO count=")); + DEBUG_PRINTLN(fifoCount); + DEBUG_PRINTLN(F("Reading FIFO data...")); + getFIFOBytes(fifoBuffer, fifoCount); + + DEBUG_PRINTLN(F("Reading interrupt status...")); + + DEBUG_PRINT(F("Current interrupt status=")); + DEBUG_PRINTLNF(getIntStatus(), HEX); + + DEBUG_PRINTLN(F("Reading final memory update 6/7 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + readMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Waiting for FIFO count > 2...")); + while ((fifoCount = getFIFOCount()) < 3); + + DEBUG_PRINT(F("Current FIFO count=")); + DEBUG_PRINTLN(fifoCount); + + DEBUG_PRINTLN(F("Reading FIFO data...")); + getFIFOBytes(fifoBuffer, fifoCount); + + DEBUG_PRINTLN(F("Reading interrupt status...")); + + DEBUG_PRINT(F("Current interrupt status=")); + DEBUG_PRINTLNF(getIntStatus(), HEX); + + DEBUG_PRINTLN(F("Writing final memory update 7/7 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("DMP is good to go! Finally.")); + + DEBUG_PRINTLN(F("Disabling DMP (you turn it on later)...")); + setDMPEnabled(false); + + DEBUG_PRINTLN(F("Setting up internal 42-byte (default) DMP packet buffer...")); + dmpPacketSize = 42; + /*if ((dmpPacketBuffer = (uint8_t *)malloc(42)) == 0) { + return 3; // TODO: proper error code for no memory + }*/ + + DEBUG_PRINTLN(F("Resetting FIFO and clearing INT status one last time...")); + resetFIFO(); + getIntStatus(); + } else { + DEBUG_PRINTLN(F("ERROR! DMP configuration verification failed.")); + return 2; // configuration block loading failed + } + } else { + DEBUG_PRINTLN(F("ERROR! DMP code verification failed.")); + return 1; // main binary block loading failed + } + return 0; // success +} + +bool MPU6050::dmpPacketAvailable() { + return getFIFOCount() >= dmpGetFIFOPacketSize(); +} + +// uint8_t MPU6050::dmpSetFIFORate(uint8_t fifoRate); +// uint8_t MPU6050::dmpGetFIFORate(); +// uint8_t MPU6050::dmpGetSampleStepSizeMS(); +// uint8_t MPU6050::dmpGetSampleFrequency(); +// int32_t MPU6050::dmpDecodeTemperature(int8_t tempReg); + +//uint8_t MPU6050::dmpRegisterFIFORateProcess(inv_obj_func func, int16_t priority); +//uint8_t MPU6050::dmpUnregisterFIFORateProcess(inv_obj_func func); +//uint8_t MPU6050::dmpRunFIFORateProcesses(); + +// uint8_t MPU6050::dmpSendQuaternion(uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendGyro(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendAccel(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendLinearAccel(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendLinearAccelInWorld(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendControlData(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendSensorData(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendExternalSensorData(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendGravity(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendPacketNumber(uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendQuantizedAccel(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendEIS(uint_fast16_t elements, uint_fast16_t accuracy); + +uint8_t MPU6050::dmpGetAccel(int32_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (((uint32_t)packet[28] << 24) | ((uint32_t)packet[29] << 16) | ((uint32_t)packet[30] << 8) | packet[31]); + data[1] = (((uint32_t)packet[32] << 24) | ((uint32_t)packet[33] << 16) | ((uint32_t)packet[34] << 8) | packet[35]); + data[2] = (((uint32_t)packet[36] << 24) | ((uint32_t)packet[37] << 16) | ((uint32_t)packet[38] << 8) | packet[39]); + return 0; +} +uint8_t MPU6050::dmpGetAccel(int16_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (packet[28] << 8) | packet[29]; + data[1] = (packet[32] << 8) | packet[33]; + data[2] = (packet[36] << 8) | packet[37]; + return 0; +} +uint8_t MPU6050::dmpGetAccel(VectorInt16 *v, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + v -> x = (packet[28] << 8) | packet[29]; + v -> y = (packet[32] << 8) | packet[33]; + v -> z = (packet[36] << 8) | packet[37]; + return 0; +} +uint8_t MPU6050::dmpGetQuaternion(int32_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (((uint32_t)packet[0] << 24) | ((uint32_t)packet[1] << 16) | ((uint32_t)packet[2] << 8) | packet[3]); + data[1] = (((uint32_t)packet[4] << 24) | ((uint32_t)packet[5] << 16) | ((uint32_t)packet[6] << 8) | packet[7]); + data[2] = (((uint32_t)packet[8] << 24) | ((uint32_t)packet[9] << 16) | ((uint32_t)packet[10] << 8) | packet[11]); + data[3] = (((uint32_t)packet[12] << 24) | ((uint32_t)packet[13] << 16) | ((uint32_t)packet[14] << 8) | packet[15]); + return 0; +} +uint8_t MPU6050::dmpGetQuaternion(int16_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = ((packet[0] << 8) | packet[1]); + data[1] = ((packet[4] << 8) | packet[5]); + data[2] = ((packet[8] << 8) | packet[9]); + data[3] = ((packet[12] << 8) | packet[13]); + return 0; +} +uint8_t MPU6050::dmpGetQuaternion(Quaternion *q, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + int16_t qI[4]; + uint8_t status = dmpGetQuaternion(qI, packet); + if (status == 0) { + q -> w = (float)qI[0] / 16384.0f; + q -> x = (float)qI[1] / 16384.0f; + q -> y = (float)qI[2] / 16384.0f; + q -> z = (float)qI[3] / 16384.0f; + return 0; + } + return status; // int16 return value, indicates error if this line is reached +} +// uint8_t MPU6050::dmpGet6AxisQuaternion(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetRelativeQuaternion(long *data, const uint8_t* packet); +uint8_t MPU6050::dmpGetGyro(int32_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (((uint32_t)packet[16] << 24) | ((uint32_t)packet[17] << 16) | ((uint32_t)packet[18] << 8) | packet[19]); + data[1] = (((uint32_t)packet[20] << 24) | ((uint32_t)packet[21] << 16) | ((uint32_t)packet[22] << 8) | packet[23]); + data[2] = (((uint32_t)packet[24] << 24) | ((uint32_t)packet[25] << 16) | ((uint32_t)packet[26] << 8) | packet[27]); + return 0; +} +uint8_t MPU6050::dmpGetGyro(int16_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (packet[16] << 8) | packet[17]; + data[1] = (packet[20] << 8) | packet[21]; + data[2] = (packet[24] << 8) | packet[25]; + return 0; +} +uint8_t MPU6050::dmpGetGyro(VectorInt16 *v, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + v -> x = (packet[16] << 8) | packet[17]; + v -> y = (packet[20] << 8) | packet[21]; + v -> z = (packet[24] << 8) | packet[25]; + return 0; +} +// uint8_t MPU6050::dmpSetLinearAccelFilterCoefficient(float coef); +// uint8_t MPU6050::dmpGetLinearAccel(long *data, const uint8_t* packet); +uint8_t MPU6050::dmpGetLinearAccel(VectorInt16 *v, VectorInt16 *vRaw, VectorFloat *gravity) { + // get rid of the gravity component (+1g = +8192 in standard DMP FIFO packet, sensitivity is 2g) + v -> x = vRaw -> x - gravity -> x*8192; + v -> y = vRaw -> y - gravity -> y*8192; + v -> z = vRaw -> z - gravity -> z*8192; + return 0; +} +// uint8_t MPU6050::dmpGetLinearAccelInWorld(long *data, const uint8_t* packet); +uint8_t MPU6050::dmpGetLinearAccelInWorld(VectorInt16 *v, VectorInt16 *vReal, Quaternion *q) { + // rotate measured 3D acceleration vector into original state + // frame of reference based on orientation quaternion + memcpy(v, vReal, sizeof(VectorInt16)); + v -> rotate(q); + return 0; +} +// uint8_t MPU6050::dmpGetGyroAndAccelSensor(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetGyroSensor(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetControlData(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetTemperature(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetGravity(long *data, const uint8_t* packet); +uint8_t MPU6050::dmpGetGravity(VectorFloat *v, Quaternion *q) { + v -> x = 2 * (q -> x*q -> z - q -> w*q -> y); + v -> y = 2 * (q -> w*q -> x + q -> y*q -> z); + v -> z = q -> w*q -> w - q -> x*q -> x - q -> y*q -> y + q -> z*q -> z; + return 0; +} +// uint8_t MPU6050::dmpGetUnquantizedAccel(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetQuantizedAccel(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetExternalSensorData(long *data, int size, const uint8_t* packet); +// uint8_t MPU6050::dmpGetEIS(long *data, const uint8_t* packet); + +uint8_t MPU6050::dmpGetEuler(float *data, Quaternion *q) { + data[0] = atan2(2*q -> x*q -> y - 2*q -> w*q -> z, 2*q -> w*q -> w + 2*q -> x*q -> x - 1); // psi + data[1] = -asin(2*q -> x*q -> z + 2*q -> w*q -> y); // theta + data[2] = atan2(2*q -> y*q -> z - 2*q -> w*q -> x, 2*q -> w*q -> w + 2*q -> z*q -> z - 1); // phi + return 0; +} +uint8_t MPU6050::dmpGetYawPitchRoll(float *data, Quaternion *q, VectorFloat *gravity) { + // yaw: (about Z axis) + data[0] = atan2(2*q -> x*q -> y - 2*q -> w*q -> z, 2*q -> w*q -> w + 2*q -> x*q -> x - 1); + // pitch: (nose up/down, about Y axis) + data[1] = atan(gravity -> x / sqrt(gravity -> y*gravity -> y + gravity -> z*gravity -> z)); + // roll: (tilt left/right, about X axis) + data[2] = atan(gravity -> y / sqrt(gravity -> x*gravity -> x + gravity -> z*gravity -> z)); + return 0; +} + +// uint8_t MPU6050::dmpGetAccelFloat(float *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetQuaternionFloat(float *data, const uint8_t* packet); + +uint8_t MPU6050::dmpProcessFIFOPacket(const unsigned char *dmpData) { + /*for (uint8_t k = 0; k < dmpPacketSize; k++) { + if (dmpData[k] < 0x10) Serial.print("0"); + Serial.print(dmpData[k], HEX); + Serial.print(" "); + } + Serial.print("\n");*/ + //Serial.println((uint16_t)dmpPacketBuffer); + return 0; +} +uint8_t MPU6050::dmpReadAndProcessFIFOPacket(uint8_t numPackets, uint8_t *processed) { + uint8_t status; + uint8_t buf[dmpPacketSize]; + for (uint8_t i = 0; i < numPackets; i++) { + // read packet from FIFO + getFIFOBytes(buf, dmpPacketSize); + + // process packet + if ((status = dmpProcessFIFOPacket(buf)) > 0) return status; + + // increment external process count variable, if supplied + if (processed != 0) (*processed)++; + } + return 0; +} + +// uint8_t MPU6050::dmpSetFIFOProcessedCallback(void (*func) (void)); + +// uint8_t MPU6050::dmpInitFIFOParam(); +// uint8_t MPU6050::dmpCloseFIFO(); +// uint8_t MPU6050::dmpSetGyroDataSource(uint_fast8_t source); +// uint8_t MPU6050::dmpDecodeQuantizedAccel(); +// uint32_t MPU6050::dmpGetGyroSumOfSquare(); +// uint32_t MPU6050::dmpGetAccelSumOfSquare(); +// void MPU6050::dmpOverrideQuaternion(long *q); +uint16_t MPU6050::dmpGetFIFOPacketSize() { + return dmpPacketSize; +} + +#endif /* _MPU6050_6AXIS_MOTIONAPPS20_H_ */ diff --git a/libraries/MPU6050/MPU6050_9Axis_MotionApps41.h b/libraries/MPU6050/MPU6050_9Axis_MotionApps41.h new file mode 100644 index 0000000000000000000000000000000000000000..016d0b0df8e1c755f98823d640482437a7d7cb14 --- /dev/null +++ b/libraries/MPU6050/MPU6050_9Axis_MotionApps41.h @@ -0,0 +1,852 @@ +// I2Cdev library collection - MPU6050 I2C device class, 9-axis MotionApps 4.1 implementation +// Based on InvenSense MPU-6050 register map document rev. 2.0, 5/19/2011 (RM-MPU-6000A-00) +// 6/18/2012 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// ... - ongoing debug release + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +#ifndef _MPU6050_9AXIS_MOTIONAPPS41_H_ +#define _MPU6050_9AXIS_MOTIONAPPS41_H_ + +#include "I2Cdev.h" +#include "helper_3dmath.h" + +// MotionApps 4.1 DMP implementation, built using the MPU-9150 "MotionFit" board +#define MPU6050_INCLUDE_DMP_MOTIONAPPS41 + +#include "MPU6050.h" + +// Tom Carpenter's conditional PROGMEM code +// http://forum.arduino.cc/index.php?topic=129407.0 +#ifdef __AVR__ + #include <avr/pgmspace.h> +#else + // Teensy 3.0 library conditional PROGMEM code from Paul Stoffregen + #ifndef __PGMSPACE_H_ + #define __PGMSPACE_H_ 1 + #include <inttypes.h> + + #define PROGMEM + #define PGM_P const char * + #define PSTR(str) (str) + #define F(x) x + + typedef void prog_void; + typedef char prog_char; + //typedef unsigned char prog_uchar; + typedef int8_t prog_int8_t; + typedef uint8_t prog_uint8_t; + typedef int16_t prog_int16_t; + typedef uint16_t prog_uint16_t; + typedef int32_t prog_int32_t; + typedef uint32_t prog_uint32_t; + + #define strcpy_P(dest, src) strcpy((dest), (src)) + #define strcat_P(dest, src) strcat((dest), (src)) + #define strcmp_P(a, b) strcmp((a), (b)) + + #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) + #define pgm_read_word(addr) (*(const unsigned short *)(addr)) + #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) + #define pgm_read_float(addr) (*(const float *)(addr)) + + #define pgm_read_byte_near(addr) pgm_read_byte(addr) + #define pgm_read_word_near(addr) pgm_read_word(addr) + #define pgm_read_dword_near(addr) pgm_read_dword(addr) + #define pgm_read_float_near(addr) pgm_read_float(addr) + #define pgm_read_byte_far(addr) pgm_read_byte(addr) + #define pgm_read_word_far(addr) pgm_read_word(addr) + #define pgm_read_dword_far(addr) pgm_read_dword(addr) + #define pgm_read_float_far(addr) pgm_read_float(addr) + #endif +#endif + +// NOTE! Enabling DEBUG adds about 3.3kB to the flash program size. +// Debug output is now working even on ATMega328P MCUs (e.g. Arduino Uno) +// after moving string constants to flash memory storage using the F() +// compiler macro (Arduino IDE 1.0+ required). + +//#define DEBUG +#ifdef DEBUG + #define DEBUG_PRINT(x) Serial.print(x) + #define DEBUG_PRINTF(x, y) Serial.print(x, y) + #define DEBUG_PRINTLN(x) Serial.println(x) + #define DEBUG_PRINTLNF(x, y) Serial.println(x, y) +#else + #define DEBUG_PRINT(x) + #define DEBUG_PRINTF(x, y) + #define DEBUG_PRINTLN(x) + #define DEBUG_PRINTLNF(x, y) +#endif + +#define MPU6050_DMP_CODE_SIZE 1962 // dmpMemory[] +#define MPU6050_DMP_CONFIG_SIZE 232 // dmpConfig[] +#define MPU6050_DMP_UPDATES_SIZE 140 // dmpUpdates[] + +/* ================================================================================================ * + | Default MotionApps v4.1 48-byte FIFO packet structure: | + | | + | [QUAT W][ ][QUAT X][ ][QUAT Y][ ][QUAT Z][ ][GYRO X][ ][GYRO Y][ ] | + | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | + | | + | [GYRO Z][ ][MAG X ][MAG Y ][MAG Z ][ACC X ][ ][ACC Y ][ ][ACC Z ][ ][ ] | + | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | + * ================================================================================================ */ + +// this block of memory gets written to the MPU on start-up, and it seems +// to be volatile memory, so it has to be done each time (it only takes ~1 +// second though) +const unsigned char dmpMemory[MPU6050_DMP_CODE_SIZE] PROGMEM = { + // bank 0, 256 bytes + 0xFB, 0x00, 0x00, 0x3E, 0x00, 0x0B, 0x00, 0x36, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x65, 0x00, 0x54, 0xFF, 0xEF, 0x00, 0x00, 0xFA, 0x80, 0x00, 0x0B, 0x12, 0x82, 0x00, 0x01, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x00, 0x00, 0xFF, 0xFF, 0x45, 0x81, 0xFF, 0xFF, 0xFA, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xE8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x7F, 0xFF, 0xFF, 0xFE, 0x80, 0x01, + 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3E, 0x03, 0x30, 0x40, 0x00, 0x00, 0x00, 0x02, 0xCA, 0xE3, 0x09, 0x3E, 0x80, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x41, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x2A, 0x00, 0x00, 0x16, 0x55, 0x00, 0x00, 0x21, 0x82, + 0xFD, 0x87, 0x26, 0x50, 0xFD, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x05, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6F, 0x00, 0x02, 0x65, 0x32, 0x00, 0x00, 0x5E, 0xC0, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFB, 0x8C, 0x6F, 0x5D, 0xFD, 0x5D, 0x08, 0xD9, 0x00, 0x7C, 0x73, 0x3B, 0x00, 0x6C, 0x12, 0xCC, + 0x32, 0x00, 0x13, 0x9D, 0x32, 0x00, 0xD0, 0xD6, 0x32, 0x00, 0x08, 0x00, 0x40, 0x00, 0x01, 0xF4, + 0xFF, 0xE6, 0x80, 0x79, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xD6, 0x00, 0x00, 0x27, 0x10, + + // bank 1, 256 bytes + 0xFB, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFA, 0x36, 0xFF, 0xBC, 0x30, 0x8E, 0x00, 0x05, 0xFB, 0xF0, 0xFF, 0xD9, 0x5B, 0xC8, + 0xFF, 0xD0, 0x9A, 0xBE, 0x00, 0x00, 0x10, 0xA9, 0xFF, 0xF4, 0x1E, 0xB2, 0x00, 0xCE, 0xBB, 0xF7, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0C, + 0xFF, 0xC2, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xCF, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x3F, 0x68, 0xB6, 0x79, 0x35, 0x28, 0xBC, 0xC6, 0x7E, 0xD1, 0x6C, + 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x6A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x25, 0x4D, 0x00, 0x2F, 0x70, 0x6D, 0x00, 0x00, 0x05, 0xAE, 0x00, 0x0C, 0x02, 0xD0, + + // bank 2, 256 bytes + 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x54, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0xFF, 0xEF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x78, 0xA2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + + // bank 3, 256 bytes + 0xD8, 0xDC, 0xF4, 0xD8, 0xB9, 0xAB, 0xF3, 0xF8, 0xFA, 0xF1, 0xBA, 0xA2, 0xDE, 0xB2, 0xB8, 0xB4, + 0xA8, 0x81, 0x98, 0xF7, 0x4A, 0x90, 0x7F, 0x91, 0x6A, 0xF3, 0xF9, 0xDB, 0xA8, 0xF9, 0xB0, 0xBA, + 0xA0, 0x80, 0xF2, 0xCE, 0x81, 0xF3, 0xC2, 0xF1, 0xC1, 0xF2, 0xC3, 0xF3, 0xCC, 0xA2, 0xB2, 0x80, + 0xF1, 0xC6, 0xD8, 0x80, 0xBA, 0xA7, 0xDF, 0xDF, 0xDF, 0xF2, 0xA7, 0xC3, 0xCB, 0xC5, 0xB6, 0xF0, + 0x87, 0xA2, 0x94, 0x24, 0x48, 0x70, 0x3C, 0x95, 0x40, 0x68, 0x34, 0x58, 0x9B, 0x78, 0xA2, 0xF1, + 0x83, 0x92, 0x2D, 0x55, 0x7D, 0xD8, 0xB1, 0xB4, 0xB8, 0xA1, 0xD0, 0x91, 0x80, 0xF2, 0x70, 0xF3, + 0x70, 0xF2, 0x7C, 0x80, 0xA8, 0xF1, 0x01, 0xB0, 0x98, 0x87, 0xD9, 0x43, 0xD8, 0x86, 0xC9, 0x88, + 0xBA, 0xA1, 0xF2, 0x0E, 0xB8, 0x97, 0x80, 0xF1, 0xA9, 0xDF, 0xDF, 0xDF, 0xAA, 0xDF, 0xDF, 0xDF, + 0xF2, 0xAA, 0xC5, 0xCD, 0xC7, 0xA9, 0x0C, 0xC9, 0x2C, 0x97, 0x97, 0x97, 0x97, 0xF1, 0xA9, 0x89, + 0x26, 0x46, 0x66, 0xB0, 0xB4, 0xBA, 0x80, 0xAC, 0xDE, 0xF2, 0xCA, 0xF1, 0xB2, 0x8C, 0x02, 0xA9, + 0xB6, 0x98, 0x00, 0x89, 0x0E, 0x16, 0x1E, 0xB8, 0xA9, 0xB4, 0x99, 0x2C, 0x54, 0x7C, 0xB0, 0x8A, + 0xA8, 0x96, 0x36, 0x56, 0x76, 0xF1, 0xB9, 0xAF, 0xB4, 0xB0, 0x83, 0xC0, 0xB8, 0xA8, 0x97, 0x11, + 0xB1, 0x8F, 0x98, 0xB9, 0xAF, 0xF0, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xF1, 0xA3, 0x29, 0x55, + 0x7D, 0xAF, 0x83, 0xB5, 0x93, 0xF0, 0x00, 0x28, 0x50, 0xF5, 0xBA, 0xAD, 0x8F, 0x9F, 0x28, 0x54, + 0x7C, 0xB9, 0xF1, 0xA3, 0x86, 0x9F, 0x61, 0xA6, 0xDA, 0xDE, 0xDF, 0xDB, 0xB2, 0xB6, 0x8E, 0x9D, + 0xAE, 0xF5, 0x60, 0x68, 0x70, 0xB1, 0xB5, 0xF1, 0xDA, 0xA6, 0xDF, 0xD9, 0xA6, 0xFA, 0xA3, 0x86, + + // bank 4, 256 bytes + 0x96, 0xDB, 0x31, 0xA6, 0xD9, 0xF8, 0xDF, 0xBA, 0xA6, 0x8F, 0xC2, 0xC5, 0xC7, 0xB2, 0x8C, 0xC1, + 0xB8, 0xA2, 0xDF, 0xDF, 0xDF, 0xA3, 0xDF, 0xDF, 0xDF, 0xD8, 0xD8, 0xF1, 0xB8, 0xA8, 0xB2, 0x86, + 0xB4, 0x98, 0x0D, 0x35, 0x5D, 0xB8, 0xAA, 0x98, 0xB0, 0x87, 0x2D, 0x35, 0x3D, 0xB2, 0xB6, 0xBA, + 0xAF, 0x8C, 0x96, 0x19, 0x8F, 0x9F, 0xA7, 0x0E, 0x16, 0x1E, 0xB4, 0x9A, 0xB8, 0xAA, 0x87, 0x2C, + 0x54, 0x7C, 0xB9, 0xA3, 0xDE, 0xDF, 0xDF, 0xA3, 0xB1, 0x80, 0xF2, 0xC4, 0xCD, 0xC9, 0xF1, 0xB8, + 0xA9, 0xB4, 0x99, 0x83, 0x0D, 0x35, 0x5D, 0x89, 0xB9, 0xA3, 0x2D, 0x55, 0x7D, 0xB5, 0x93, 0xA3, + 0x0E, 0x16, 0x1E, 0xA9, 0x2C, 0x54, 0x7C, 0xB8, 0xB4, 0xB0, 0xF1, 0x97, 0x83, 0xA8, 0x11, 0x84, + 0xA5, 0x09, 0x98, 0xA3, 0x83, 0xF0, 0xDA, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xD8, 0xF1, 0xA5, + 0x29, 0x55, 0x7D, 0xA5, 0x85, 0x95, 0x02, 0x1A, 0x2E, 0x3A, 0x56, 0x5A, 0x40, 0x48, 0xF9, 0xF3, + 0xA3, 0xD9, 0xF8, 0xF0, 0x98, 0x83, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0x97, 0x82, 0xA8, 0xF1, + 0x11, 0xF0, 0x98, 0xA2, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xDA, 0xF3, 0xDE, 0xD8, 0x83, 0xA5, + 0x94, 0x01, 0xD9, 0xA3, 0x02, 0xF1, 0xA2, 0xC3, 0xC5, 0xC7, 0xD8, 0xF1, 0x84, 0x92, 0xA2, 0x4D, + 0xDA, 0x2A, 0xD8, 0x48, 0x69, 0xD9, 0x2A, 0xD8, 0x68, 0x55, 0xDA, 0x32, 0xD8, 0x50, 0x71, 0xD9, + 0x32, 0xD8, 0x70, 0x5D, 0xDA, 0x3A, 0xD8, 0x58, 0x79, 0xD9, 0x3A, 0xD8, 0x78, 0x93, 0xA3, 0x4D, + 0xDA, 0x2A, 0xD8, 0x48, 0x69, 0xD9, 0x2A, 0xD8, 0x68, 0x55, 0xDA, 0x32, 0xD8, 0x50, 0x71, 0xD9, + 0x32, 0xD8, 0x70, 0x5D, 0xDA, 0x3A, 0xD8, 0x58, 0x79, 0xD9, 0x3A, 0xD8, 0x78, 0xA8, 0x8A, 0x9A, + + // bank 5, 256 bytes + 0xF0, 0x28, 0x50, 0x78, 0x9E, 0xF3, 0x88, 0x18, 0xF1, 0x9F, 0x1D, 0x98, 0xA8, 0xD9, 0x08, 0xD8, + 0xC8, 0x9F, 0x12, 0x9E, 0xF3, 0x15, 0xA8, 0xDA, 0x12, 0x10, 0xD8, 0xF1, 0xAF, 0xC8, 0x97, 0x87, + 0x34, 0xB5, 0xB9, 0x94, 0xA4, 0x21, 0xF3, 0xD9, 0x22, 0xD8, 0xF2, 0x2D, 0xF3, 0xD9, 0x2A, 0xD8, + 0xF2, 0x35, 0xF3, 0xD9, 0x32, 0xD8, 0x81, 0xA4, 0x60, 0x60, 0x61, 0xD9, 0x61, 0xD8, 0x6C, 0x68, + 0x69, 0xD9, 0x69, 0xD8, 0x74, 0x70, 0x71, 0xD9, 0x71, 0xD8, 0xB1, 0xA3, 0x84, 0x19, 0x3D, 0x5D, + 0xA3, 0x83, 0x1A, 0x3E, 0x5E, 0x93, 0x10, 0x30, 0x81, 0x10, 0x11, 0xB8, 0xB0, 0xAF, 0x8F, 0x94, + 0xF2, 0xDA, 0x3E, 0xD8, 0xB4, 0x9A, 0xA8, 0x87, 0x29, 0xDA, 0xF8, 0xD8, 0x87, 0x9A, 0x35, 0xDA, + 0xF8, 0xD8, 0x87, 0x9A, 0x3D, 0xDA, 0xF8, 0xD8, 0xB1, 0xB9, 0xA4, 0x98, 0x85, 0x02, 0x2E, 0x56, + 0xA5, 0x81, 0x00, 0x0C, 0x14, 0xA3, 0x97, 0xB0, 0x8A, 0xF1, 0x2D, 0xD9, 0x28, 0xD8, 0x4D, 0xD9, + 0x48, 0xD8, 0x6D, 0xD9, 0x68, 0xD8, 0xB1, 0x84, 0x0D, 0xDA, 0x0E, 0xD8, 0xA3, 0x29, 0x83, 0xDA, + 0x2C, 0x0E, 0xD8, 0xA3, 0x84, 0x49, 0x83, 0xDA, 0x2C, 0x4C, 0x0E, 0xD8, 0xB8, 0xB0, 0x97, 0x86, + 0xA8, 0x31, 0x9B, 0x06, 0x99, 0x07, 0xAB, 0x97, 0x28, 0x88, 0x9B, 0xF0, 0x0C, 0x20, 0x14, 0x40, + 0xB9, 0xA3, 0x8A, 0xC3, 0xC5, 0xC7, 0x9A, 0xA3, 0x28, 0x50, 0x78, 0xF1, 0xB5, 0x93, 0x01, 0xD9, + 0xDF, 0xDF, 0xDF, 0xD8, 0xB8, 0xB4, 0xA8, 0x8C, 0x9C, 0xF0, 0x04, 0x28, 0x51, 0x79, 0x1D, 0x30, + 0x14, 0x38, 0xB2, 0x82, 0xAB, 0xD0, 0x98, 0x2C, 0x50, 0x50, 0x78, 0x78, 0x9B, 0xF1, 0x1A, 0xB0, + 0xF0, 0xB1, 0x83, 0x9C, 0xA8, 0x29, 0x51, 0x79, 0xB0, 0x8B, 0x29, 0x51, 0x79, 0xB1, 0x83, 0x24, + + // bank 6, 256 bytes + 0x70, 0x59, 0xB0, 0x8B, 0x20, 0x58, 0x71, 0xB1, 0x83, 0x44, 0x69, 0x38, 0xB0, 0x8B, 0x39, 0x40, + 0x68, 0xB1, 0x83, 0x64, 0x48, 0x31, 0xB0, 0x8B, 0x30, 0x49, 0x60, 0xA5, 0x88, 0x20, 0x09, 0x71, + 0x58, 0x44, 0x68, 0x11, 0x39, 0x64, 0x49, 0x30, 0x19, 0xF1, 0xAC, 0x00, 0x2C, 0x54, 0x7C, 0xF0, + 0x8C, 0xA8, 0x04, 0x28, 0x50, 0x78, 0xF1, 0x88, 0x97, 0x26, 0xA8, 0x59, 0x98, 0xAC, 0x8C, 0x02, + 0x26, 0x46, 0x66, 0xF0, 0x89, 0x9C, 0xA8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, + 0x64, 0x48, 0x31, 0xA9, 0x88, 0x09, 0x20, 0x59, 0x70, 0xAB, 0x11, 0x38, 0x40, 0x69, 0xA8, 0x19, + 0x31, 0x48, 0x60, 0x8C, 0xA8, 0x3C, 0x41, 0x5C, 0x20, 0x7C, 0x00, 0xF1, 0x87, 0x98, 0x19, 0x86, + 0xA8, 0x6E, 0x76, 0x7E, 0xA9, 0x99, 0x88, 0x2D, 0x55, 0x7D, 0x9E, 0xB9, 0xA3, 0x8A, 0x22, 0x8A, + 0x6E, 0x8A, 0x56, 0x8A, 0x5E, 0x9F, 0xB1, 0x83, 0x06, 0x26, 0x46, 0x66, 0x0E, 0x2E, 0x4E, 0x6E, + 0x9D, 0xB8, 0xAD, 0x00, 0x2C, 0x54, 0x7C, 0xF2, 0xB1, 0x8C, 0xB4, 0x99, 0xB9, 0xA3, 0x2D, 0x55, + 0x7D, 0x81, 0x91, 0xAC, 0x38, 0xAD, 0x3A, 0xB5, 0x83, 0x91, 0xAC, 0x2D, 0xD9, 0x28, 0xD8, 0x4D, + 0xD9, 0x48, 0xD8, 0x6D, 0xD9, 0x68, 0xD8, 0x8C, 0x9D, 0xAE, 0x29, 0xD9, 0x04, 0xAE, 0xD8, 0x51, + 0xD9, 0x04, 0xAE, 0xD8, 0x79, 0xD9, 0x04, 0xD8, 0x81, 0xF3, 0x9D, 0xAD, 0x00, 0x8D, 0xAE, 0x19, + 0x81, 0xAD, 0xD9, 0x01, 0xD8, 0xF2, 0xAE, 0xDA, 0x26, 0xD8, 0x8E, 0x91, 0x29, 0x83, 0xA7, 0xD9, + 0xAD, 0xAD, 0xAD, 0xAD, 0xF3, 0x2A, 0xD8, 0xD8, 0xF1, 0xB0, 0xAC, 0x89, 0x91, 0x3E, 0x5E, 0x76, + 0xF3, 0xAC, 0x2E, 0x2E, 0xF1, 0xB1, 0x8C, 0x5A, 0x9C, 0xAC, 0x2C, 0x28, 0x28, 0x28, 0x9C, 0xAC, + + // bank 7, 170 bytes (remainder) + 0x30, 0x18, 0xA8, 0x98, 0x81, 0x28, 0x34, 0x3C, 0x97, 0x24, 0xA7, 0x28, 0x34, 0x3C, 0x9C, 0x24, + 0xF2, 0xB0, 0x89, 0xAC, 0x91, 0x2C, 0x4C, 0x6C, 0x8A, 0x9B, 0x2D, 0xD9, 0xD8, 0xD8, 0x51, 0xD9, + 0xD8, 0xD8, 0x79, 0xD9, 0xD8, 0xD8, 0xF1, 0x9E, 0x88, 0xA3, 0x31, 0xDA, 0xD8, 0xD8, 0x91, 0x2D, + 0xD9, 0x28, 0xD8, 0x4D, 0xD9, 0x48, 0xD8, 0x6D, 0xD9, 0x68, 0xD8, 0xB1, 0x83, 0x93, 0x35, 0x3D, + 0x80, 0x25, 0xDA, 0xD8, 0xD8, 0x85, 0x69, 0xDA, 0xD8, 0xD8, 0xB4, 0x93, 0x81, 0xA3, 0x28, 0x34, + 0x3C, 0xF3, 0xAB, 0x8B, 0xA3, 0x91, 0xB6, 0x09, 0xB4, 0xD9, 0xAB, 0xDE, 0xB0, 0x87, 0x9C, 0xB9, + 0xA3, 0xDD, 0xF1, 0xA3, 0xA3, 0xA3, 0xA3, 0x95, 0xF1, 0xA3, 0xA3, 0xA3, 0x9D, 0xF1, 0xA3, 0xA3, + 0xA3, 0xA3, 0xF2, 0xA3, 0xB4, 0x90, 0x80, 0xF2, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, + 0xA3, 0xA3, 0xB2, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xB0, 0x87, 0xB5, 0x99, 0xF1, 0xA3, 0xA3, + 0xA3, 0x98, 0xF1, 0xA3, 0xA3, 0xA3, 0xA3, 0x97, 0xA3, 0xA3, 0xA3, 0xA3, 0xF3, 0x9B, 0xA3, 0xA3, + 0xDC, 0xB9, 0xA7, 0xF1, 0x26, 0x26, 0x26, 0xD8, 0xD8, 0xFF +}; + +const unsigned char dmpConfig[MPU6050_DMP_CONFIG_SIZE] PROGMEM = { +// BANK OFFSET LENGTH [DATA] + 0x02, 0xEC, 0x04, 0x00, 0x47, 0x7D, 0x1A, // ? + 0x03, 0x82, 0x03, 0x4C, 0xCD, 0x6C, // FCFG_1 inv_set_gyro_calibration + 0x03, 0xB2, 0x03, 0x36, 0x56, 0x76, // FCFG_3 inv_set_gyro_calibration + 0x00, 0x68, 0x04, 0x02, 0xCA, 0xE3, 0x09, // D_0_104 inv_set_gyro_calibration + 0x01, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, // D_1_152 inv_set_accel_calibration + 0x03, 0x86, 0x03, 0x0C, 0xC9, 0x2C, // FCFG_2 inv_set_accel_calibration + 0x03, 0x90, 0x03, 0x26, 0x46, 0x66, // (continued)...FCFG_2 inv_set_accel_calibration + 0x00, 0x6C, 0x02, 0x40, 0x00, // D_0_108 inv_set_accel_calibration + + 0x02, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_00 inv_set_compass_calibration + 0x02, 0x44, 0x04, 0x40, 0x00, 0x00, 0x00, // CPASS_MTX_01 + 0x02, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_02 + 0x02, 0x4C, 0x04, 0x40, 0x00, 0x00, 0x00, // CPASS_MTX_10 + 0x02, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_11 + 0x02, 0x54, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_12 + 0x02, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_20 + 0x02, 0x5C, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_21 + 0x02, 0xBC, 0x04, 0xC0, 0x00, 0x00, 0x00, // CPASS_MTX_22 + + 0x01, 0xEC, 0x04, 0x00, 0x00, 0x40, 0x00, // D_1_236 inv_apply_endian_accel + 0x03, 0x86, 0x06, 0x0C, 0xC9, 0x2C, 0x97, 0x97, 0x97, // FCFG_2 inv_set_mpu_sensors + 0x04, 0x22, 0x03, 0x0D, 0x35, 0x5D, // CFG_MOTION_BIAS inv_turn_on_bias_from_no_motion + 0x00, 0xA3, 0x01, 0x00, // ? + 0x04, 0x29, 0x04, 0x87, 0x2D, 0x35, 0x3D, // FCFG_5 inv_set_bias_update + 0x07, 0x62, 0x05, 0xF1, 0x20, 0x28, 0x30, 0x38, // CFG_8 inv_send_quaternion + 0x07, 0x9F, 0x01, 0x30, // CFG_16 inv_set_footer + 0x07, 0x67, 0x01, 0x9A, // CFG_GYRO_SOURCE inv_send_gyro + 0x07, 0x68, 0x04, 0xF1, 0x28, 0x30, 0x38, // CFG_9 inv_send_gyro -> inv_construct3_fifo + 0x07, 0x62, 0x05, 0xF1, 0x20, 0x28, 0x30, 0x38, // ? + 0x02, 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, // ? + 0x07, 0x83, 0x06, 0xC2, 0xCA, 0xC4, 0xA3, 0xA3, 0xA3, // ? + // SPECIAL 0x01 = enable interrupts + 0x00, 0x00, 0x00, 0x01, // SET INT_ENABLE, SPECIAL INSTRUCTION + 0x07, 0xA7, 0x01, 0xFE, // ? + 0x07, 0x62, 0x05, 0xF1, 0x20, 0x28, 0x30, 0x38, // ? + 0x07, 0x67, 0x01, 0x9A, // ? + 0x07, 0x68, 0x04, 0xF1, 0x28, 0x30, 0x38, // CFG_12 inv_send_accel -> inv_construct3_fifo + 0x07, 0x8D, 0x04, 0xF1, 0x28, 0x30, 0x38, // ??? CFG_12 inv_send_mag -> inv_construct3_fifo + 0x02, 0x16, 0x02, 0x00, 0x03 // D_0_22 inv_set_fifo_rate + + // This very last 0x01 WAS a 0x09, which drops the FIFO rate down to 20 Hz. 0x07 is 25 Hz, + // 0x01 is 100Hz. Going faster than 100Hz (0x00=200Hz) tends to result in very noisy data. + // DMP output frequency is calculated easily using this equation: (200Hz / (1 + value)) + + // It is important to make sure the host processor can keep up with reading and processing + // the FIFO output at the desired rate. Handling FIFO overflow cleanly is also a good idea. +}; + +const unsigned char dmpUpdates[MPU6050_DMP_UPDATES_SIZE] PROGMEM = { + 0x01, 0xB2, 0x02, 0xFF, 0xF5, + 0x01, 0x90, 0x04, 0x0A, 0x0D, 0x97, 0xC0, + 0x00, 0xA3, 0x01, 0x00, + 0x04, 0x29, 0x04, 0x87, 0x2D, 0x35, 0x3D, + 0x01, 0x6A, 0x02, 0x06, 0x00, + 0x01, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, 0x00, + 0x02, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x08, 0x02, 0x01, 0x20, + 0x01, 0x0A, 0x02, 0x00, 0x4E, + 0x01, 0x02, 0x02, 0xFE, 0xB3, + 0x02, 0x6C, 0x04, 0x00, 0x00, 0x00, 0x00, // READ + 0x02, 0x6C, 0x04, 0xFA, 0xFE, 0x00, 0x00, + 0x02, 0x60, 0x0C, 0xFF, 0xFF, 0xCB, 0x4D, 0x00, 0x01, 0x08, 0xC1, 0xFF, 0xFF, 0xBC, 0x2C, + 0x02, 0xF4, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xF8, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xFC, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x04, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, 0x00 +}; + +uint8_t MPU6050::dmpInitialize() { + // reset device + DEBUG_PRINTLN(F("\n\nResetting MPU6050...")); + reset(); + delay(30); // wait after reset + + // disable sleep mode + DEBUG_PRINTLN(F("Disabling sleep mode...")); + setSleepEnabled(false); + + // get MPU product ID + DEBUG_PRINTLN(F("Getting product ID...")); + //uint8_t productID = 0; //getProductID(); + DEBUG_PRINT(F("Product ID = ")); + DEBUG_PRINT(productID); + + // get MPU hardware revision + DEBUG_PRINTLN(F("Selecting user bank 16...")); + setMemoryBank(0x10, true, true); + DEBUG_PRINTLN(F("Selecting memory byte 6...")); + setMemoryStartAddress(0x06); + DEBUG_PRINTLN(F("Checking hardware revision...")); + uint8_t hwRevision = readMemoryByte(); + DEBUG_PRINT(F("Revision @ user[16][6] = ")); + DEBUG_PRINTLNF(hwRevision, HEX); + DEBUG_PRINTLN(F("Resetting memory bank selection to 0...")); + setMemoryBank(0, false, false); + + // check OTP bank valid + DEBUG_PRINTLN(F("Reading OTP bank valid flag...")); + uint8_t otpValid = getOTPBankValid(); + DEBUG_PRINT(F("OTP bank is ")); + DEBUG_PRINTLN(otpValid ? F("valid!") : F("invalid!")); + + // get X/Y/Z gyro offsets + DEBUG_PRINTLN(F("Reading gyro offset values...")); + int8_t xgOffset = getXGyroOffset(); + int8_t ygOffset = getYGyroOffset(); + int8_t zgOffset = getZGyroOffset(); + DEBUG_PRINT(F("X gyro offset = ")); + DEBUG_PRINTLN(xgOffset); + DEBUG_PRINT(F("Y gyro offset = ")); + DEBUG_PRINTLN(ygOffset); + DEBUG_PRINT(F("Z gyro offset = ")); + DEBUG_PRINTLN(zgOffset); + + I2Cdev::readByte(devAddr, MPU6050_RA_USER_CTRL, buffer); // ? + + DEBUG_PRINTLN(F("Enabling interrupt latch, clear on any read, AUX bypass enabled")); + I2Cdev::writeByte(devAddr, MPU6050_RA_INT_PIN_CFG, 0x32); + + // enable MPU AUX I2C bypass mode + //DEBUG_PRINTLN(F("Enabling AUX I2C bypass mode...")); + //setI2CBypassEnabled(true); + + DEBUG_PRINTLN(F("Setting magnetometer mode to power-down...")); + //mag -> setMode(0); + I2Cdev::writeByte(0x0E, 0x0A, 0x00); + + DEBUG_PRINTLN(F("Setting magnetometer mode to fuse access...")); + //mag -> setMode(0x0F); + I2Cdev::writeByte(0x0E, 0x0A, 0x0F); + + DEBUG_PRINTLN(F("Reading mag magnetometer factory calibration...")); + int8_t asax, asay, asaz; + //mag -> getAdjustment(&asax, &asay, &asaz); + I2Cdev::readBytes(0x0E, 0x10, 3, buffer); + asax = (int8_t)buffer[0]; + asay = (int8_t)buffer[1]; + asaz = (int8_t)buffer[2]; + DEBUG_PRINT(F("Adjustment X/Y/Z = ")); + DEBUG_PRINT(asax); + DEBUG_PRINT(F(" / ")); + DEBUG_PRINT(asay); + DEBUG_PRINT(F(" / ")); + DEBUG_PRINTLN(asaz); + + DEBUG_PRINTLN(F("Setting magnetometer mode to power-down...")); + //mag -> setMode(0); + I2Cdev::writeByte(0x0E, 0x0A, 0x00); + + // load DMP code into memory banks + DEBUG_PRINT(F("Writing DMP code to MPU memory banks (")); + DEBUG_PRINT(MPU6050_DMP_CODE_SIZE); + DEBUG_PRINTLN(F(" bytes)")); + if (writeProgMemoryBlock(dmpMemory, MPU6050_DMP_CODE_SIZE)) { + DEBUG_PRINTLN(F("Success! DMP code written and verified.")); + + DEBUG_PRINTLN(F("Configuring DMP and related settings...")); + + // write DMP configuration + DEBUG_PRINT(F("Writing DMP configuration to MPU memory banks (")); + DEBUG_PRINT(MPU6050_DMP_CONFIG_SIZE); + DEBUG_PRINTLN(F(" bytes in config def)")); + if (writeProgDMPConfigurationSet(dmpConfig, MPU6050_DMP_CONFIG_SIZE)) { + DEBUG_PRINTLN(F("Success! DMP configuration written and verified.")); + + DEBUG_PRINTLN(F("Setting DMP and FIFO_OFLOW interrupts enabled...")); + setIntEnabled(0x12); + + DEBUG_PRINTLN(F("Setting sample rate to 200Hz...")); + setRate(4); // 1khz / (1 + 4) = 200 Hz + + DEBUG_PRINTLN(F("Setting clock source to Z Gyro...")); + setClockSource(MPU6050_CLOCK_PLL_ZGYRO); + + DEBUG_PRINTLN(F("Setting DLPF bandwidth to 42Hz...")); + setDLPFMode(MPU6050_DLPF_BW_42); + + DEBUG_PRINTLN(F("Setting external frame sync to TEMP_OUT_L[0]...")); + setExternalFrameSync(MPU6050_EXT_SYNC_TEMP_OUT_L); + + DEBUG_PRINTLN(F("Setting gyro sensitivity to +/- 2000 deg/sec...")); + setFullScaleGyroRange(MPU6050_GYRO_FS_2000); + + DEBUG_PRINTLN(F("Setting DMP configuration bytes (function unknown)...")); + setDMPConfig1(0x03); + setDMPConfig2(0x00); + + DEBUG_PRINTLN(F("Clearing OTP Bank flag...")); + setOTPBankValid(false); + + DEBUG_PRINTLN(F("Setting X/Y/Z gyro offsets to previous values...")); + setXGyroOffsetTC(xgOffset); + setYGyroOffsetTC(ygOffset); + setZGyroOffsetTC(zgOffset); + + //DEBUG_PRINTLN(F("Setting X/Y/Z gyro user offsets to zero...")); + //setXGyroOffset(0); + //setYGyroOffset(0); + //setZGyroOffset(0); + + DEBUG_PRINTLN(F("Writing final memory update 1/19 (function unknown)...")); + uint8_t dmpUpdate[16], j; + uint16_t pos = 0; + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Writing final memory update 2/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Resetting FIFO...")); + resetFIFO(); + + DEBUG_PRINTLN(F("Reading FIFO count...")); + uint8_t fifoCount = getFIFOCount(); + + DEBUG_PRINT(F("Current FIFO count=")); + DEBUG_PRINTLN(fifoCount); + uint8_t fifoBuffer[128]; + //getFIFOBytes(fifoBuffer, fifoCount); + + DEBUG_PRINTLN(F("Writing final memory update 3/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Writing final memory update 4/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Disabling all standby flags...")); + I2Cdev::writeByte(0x68, MPU6050_RA_PWR_MGMT_2, 0x00); + + DEBUG_PRINTLN(F("Setting accelerometer sensitivity to +/- 2g...")); + I2Cdev::writeByte(0x68, MPU6050_RA_ACCEL_CONFIG, 0x00); + + DEBUG_PRINTLN(F("Setting motion detection threshold to 2...")); + setMotionDetectionThreshold(2); + + DEBUG_PRINTLN(F("Setting zero-motion detection threshold to 156...")); + setZeroMotionDetectionThreshold(156); + + DEBUG_PRINTLN(F("Setting motion detection duration to 80...")); + setMotionDetectionDuration(80); + + DEBUG_PRINTLN(F("Setting zero-motion detection duration to 0...")); + setZeroMotionDetectionDuration(0); + + DEBUG_PRINTLN(F("Setting AK8975 to single measurement mode...")); + //mag -> setMode(1); + I2Cdev::writeByte(0x0E, 0x0A, 0x01); + + // setup AK8975 (0x0E) as Slave 0 in read mode + DEBUG_PRINTLN(F("Setting up AK8975 read slave 0...")); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_SLV0_ADDR, 0x8E); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_SLV0_REG, 0x01); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_SLV0_CTRL, 0xDA); + + // setup AK8975 (0x0E) as Slave 2 in write mode + DEBUG_PRINTLN(F("Setting up AK8975 write slave 2...")); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_SLV2_ADDR, 0x0E); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_SLV2_REG, 0x0A); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_SLV2_CTRL, 0x81); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_SLV2_DO, 0x01); + + // setup I2C timing/delay control + DEBUG_PRINTLN(F("Setting up slave access delay...")); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_SLV4_CTRL, 0x18); + I2Cdev::writeByte(0x68, MPU6050_RA_I2C_MST_DELAY_CTRL, 0x05); + + // enable interrupts + DEBUG_PRINTLN(F("Enabling default interrupt behavior/no bypass...")); + I2Cdev::writeByte(0x68, MPU6050_RA_INT_PIN_CFG, 0x00); + + // enable I2C master mode and reset DMP/FIFO + DEBUG_PRINTLN(F("Enabling I2C master mode...")); + I2Cdev::writeByte(0x68, MPU6050_RA_USER_CTRL, 0x20); + DEBUG_PRINTLN(F("Resetting FIFO...")); + I2Cdev::writeByte(0x68, MPU6050_RA_USER_CTRL, 0x24); + DEBUG_PRINTLN(F("Rewriting I2C master mode enabled because...I don't know")); + I2Cdev::writeByte(0x68, MPU6050_RA_USER_CTRL, 0x20); + DEBUG_PRINTLN(F("Enabling and resetting DMP/FIFO...")); + I2Cdev::writeByte(0x68, MPU6050_RA_USER_CTRL, 0xE8); + + DEBUG_PRINTLN(F("Writing final memory update 5/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 6/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 7/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 8/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 9/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 10/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 11/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Reading final memory update 12/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + readMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + #ifdef DEBUG + DEBUG_PRINT(F("Read bytes: ")); + for (j = 0; j < 4; j++) { + DEBUG_PRINTF(dmpUpdate[3 + j], HEX); + DEBUG_PRINT(" "); + } + DEBUG_PRINTLN(""); + #endif + + DEBUG_PRINTLN(F("Writing final memory update 13/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 14/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 15/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 16/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + DEBUG_PRINTLN(F("Writing final memory update 17/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Waiting for FIRO count >= 46...")); + while ((fifoCount = getFIFOCount()) < 46); + DEBUG_PRINTLN(F("Reading FIFO...")); + getFIFOBytes(fifoBuffer, min(fifoCount, 128)); // safeguard only 128 bytes + DEBUG_PRINTLN(F("Reading interrupt status...")); + getIntStatus(); + + DEBUG_PRINTLN(F("Writing final memory update 18/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Waiting for FIRO count >= 48...")); + while ((fifoCount = getFIFOCount()) < 48); + DEBUG_PRINTLN(F("Reading FIFO...")); + getFIFOBytes(fifoBuffer, min(fifoCount, 128)); // safeguard only 128 bytes + DEBUG_PRINTLN(F("Reading interrupt status...")); + getIntStatus(); + DEBUG_PRINTLN(F("Waiting for FIRO count >= 48...")); + while ((fifoCount = getFIFOCount()) < 48); + DEBUG_PRINTLN(F("Reading FIFO...")); + getFIFOBytes(fifoBuffer, min(fifoCount, 128)); // safeguard only 128 bytes + DEBUG_PRINTLN(F("Reading interrupt status...")); + getIntStatus(); + + DEBUG_PRINTLN(F("Writing final memory update 19/19 (function unknown)...")); + for (j = 0; j < 4 || j < dmpUpdate[2] + 3; j++, pos++) dmpUpdate[j] = pgm_read_byte(&dmpUpdates[pos]); + writeMemoryBlock(dmpUpdate + 3, dmpUpdate[2], dmpUpdate[0], dmpUpdate[1]); + + DEBUG_PRINTLN(F("Disabling DMP (you turn it on later)...")); + setDMPEnabled(false); + + DEBUG_PRINTLN(F("Setting up internal 48-byte (default) DMP packet buffer...")); + dmpPacketSize = 48; + /*if ((dmpPacketBuffer = (uint8_t *)malloc(42)) == 0) { + return 3; // TODO: proper error code for no memory + }*/ + + DEBUG_PRINTLN(F("Resetting FIFO and clearing INT status one last time...")); + resetFIFO(); + getIntStatus(); + } else { + DEBUG_PRINTLN(F("ERROR! DMP configuration verification failed.")); + return 2; // configuration block loading failed + } + } else { + DEBUG_PRINTLN(F("ERROR! DMP code verification failed.")); + return 1; // main binary block loading failed + } + return 0; // success +} + +bool MPU6050::dmpPacketAvailable() { + return getFIFOCount() >= dmpGetFIFOPacketSize(); +} + +// uint8_t MPU6050::dmpSetFIFORate(uint8_t fifoRate); +// uint8_t MPU6050::dmpGetFIFORate(); +// uint8_t MPU6050::dmpGetSampleStepSizeMS(); +// uint8_t MPU6050::dmpGetSampleFrequency(); +// int32_t MPU6050::dmpDecodeTemperature(int8_t tempReg); + +//uint8_t MPU6050::dmpRegisterFIFORateProcess(inv_obj_func func, int16_t priority); +//uint8_t MPU6050::dmpUnregisterFIFORateProcess(inv_obj_func func); +//uint8_t MPU6050::dmpRunFIFORateProcesses(); + +// uint8_t MPU6050::dmpSendQuaternion(uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendGyro(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendAccel(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendLinearAccel(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendLinearAccelInWorld(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendControlData(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendSensorData(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendExternalSensorData(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendGravity(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendPacketNumber(uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendQuantizedAccel(uint_fast16_t elements, uint_fast16_t accuracy); +// uint8_t MPU6050::dmpSendEIS(uint_fast16_t elements, uint_fast16_t accuracy); + +uint8_t MPU6050::dmpGetAccel(int32_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (((uint32_t)packet[34] << 24) | ((uint32_t)packet[35] << 16) | ((uint32_t)packet[36] << 8) | packet[37]); + data[1] = (((uint32_t)packet[38] << 24) | ((uint32_t)packet[39] << 16) | ((uint32_t)packet[40] << 8) | packet[41]); + data[2] = (((uint32_t)packet[42] << 24) | ((uint32_t)packet[43] << 16) | ((uint32_t)packet[44] << 8) | packet[45]); + return 0; +} +uint8_t MPU6050::dmpGetAccel(int16_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (packet[34] << 8) | packet[35]; + data[1] = (packet[38] << 8) | packet[39]; + data[2] = (packet[42] << 8) | packet[43]; + return 0; +} +uint8_t MPU6050::dmpGetAccel(VectorInt16 *v, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + v -> x = (packet[34] << 8) | packet[35]; + v -> y = (packet[38] << 8) | packet[39]; + v -> z = (packet[42] << 8) | packet[43]; + return 0; +} +uint8_t MPU6050::dmpGetQuaternion(int32_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (((uint32_t)packet[0] << 24) | ((uint32_t)packet[1] << 16) | ((uint32_t)packet[2] << 8) | packet[3]); + data[1] = (((uint32_t)packet[4] << 24) | ((uint32_t)packet[5] << 16) | ((uint32_t)packet[6] << 8) | packet[7]); + data[2] = (((uint32_t)packet[8] << 24) | ((uint32_t)packet[9] << 16) | ((uint32_t)packet[10] << 8) | packet[11]); + data[3] = (((uint32_t)packet[12] << 24) | ((uint32_t)packet[13] << 16) | ((uint32_t)packet[14] << 8) | packet[15]); + return 0; +} +uint8_t MPU6050::dmpGetQuaternion(int16_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = ((packet[0] << 8) | packet[1]); + data[1] = ((packet[4] << 8) | packet[5]); + data[2] = ((packet[8] << 8) | packet[9]); + data[3] = ((packet[12] << 8) | packet[13]); + return 0; +} +uint8_t MPU6050::dmpGetQuaternion(Quaternion *q, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + int16_t qI[4]; + uint8_t status = dmpGetQuaternion(qI, packet); + if (status == 0) { + q -> w = (float)qI[0] / 16384.0f; + q -> x = (float)qI[1] / 16384.0f; + q -> y = (float)qI[2] / 16384.0f; + q -> z = (float)qI[3] / 16384.0f; + return 0; + } + return status; // int16 return value, indicates error if this line is reached +} +// uint8_t MPU6050::dmpGet6AxisQuaternion(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetRelativeQuaternion(long *data, const uint8_t* packet); +uint8_t MPU6050::dmpGetGyro(int32_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (((uint32_t)packet[16] << 24) | ((uint32_t)packet[17] << 16) | ((uint32_t)packet[18] << 8) | packet[19]); + data[1] = (((uint32_t)packet[20] << 24) | ((uint32_t)packet[21] << 16) | ((uint32_t)packet[22] << 8) | packet[23]); + data[2] = (((uint32_t)packet[24] << 24) | ((uint32_t)packet[25] << 16) | ((uint32_t)packet[26] << 8) | packet[27]); + return 0; +} +uint8_t MPU6050::dmpGetGyro(int16_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (packet[16] << 8) | packet[17]; + data[1] = (packet[20] << 8) | packet[21]; + data[2] = (packet[24] << 8) | packet[25]; + return 0; +} +uint8_t MPU6050::dmpGetMag(int16_t *data, const uint8_t* packet) { + // TODO: accommodate different arrangements of sent data (ONLY default supported now) + if (packet == 0) packet = dmpPacketBuffer; + data[0] = (packet[28] << 8) | packet[29]; + data[1] = (packet[30] << 8) | packet[31]; + data[2] = (packet[32] << 8) | packet[33]; + return 0; +} +// uint8_t MPU6050::dmpSetLinearAccelFilterCoefficient(float coef); +// uint8_t MPU6050::dmpGetLinearAccel(long *data, const uint8_t* packet); +uint8_t MPU6050::dmpGetLinearAccel(VectorInt16 *v, VectorInt16 *vRaw, VectorFloat *gravity) { + // get rid of the gravity component (+1g = +4096 in standard DMP FIFO packet) + v -> x = vRaw -> x - gravity -> x*4096; + v -> y = vRaw -> y - gravity -> y*4096; + v -> z = vRaw -> z - gravity -> z*4096; + return 0; +} +// uint8_t MPU6050::dmpGetLinearAccelInWorld(long *data, const uint8_t* packet); +uint8_t MPU6050::dmpGetLinearAccelInWorld(VectorInt16 *v, VectorInt16 *vReal, Quaternion *q) { + // rotate measured 3D acceleration vector into original state + // frame of reference based on orientation quaternion + memcpy(v, vReal, sizeof(VectorInt16)); + v -> rotate(q); + return 0; +} +// uint8_t MPU6050::dmpGetGyroAndAccelSensor(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetGyroSensor(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetControlData(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetTemperature(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetGravity(long *data, const uint8_t* packet); +uint8_t MPU6050::dmpGetGravity(VectorFloat *v, Quaternion *q) { + v -> x = 2 * (q -> x*q -> z - q -> w*q -> y); + v -> y = 2 * (q -> w*q -> x + q -> y*q -> z); + v -> z = q -> w*q -> w - q -> x*q -> x - q -> y*q -> y + q -> z*q -> z; + return 0; +} +// uint8_t MPU6050::dmpGetUnquantizedAccel(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetQuantizedAccel(long *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetExternalSensorData(long *data, int size, const uint8_t* packet); +// uint8_t MPU6050::dmpGetEIS(long *data, const uint8_t* packet); + +uint8_t MPU6050::dmpGetEuler(float *data, Quaternion *q) { + data[0] = atan2(2*q -> x*q -> y - 2*q -> w*q -> z, 2*q -> w*q -> w + 2*q -> x*q -> x - 1); // psi + data[1] = -asin(2*q -> x*q -> z + 2*q -> w*q -> y); // theta + data[2] = atan2(2*q -> y*q -> z - 2*q -> w*q -> x, 2*q -> w*q -> w + 2*q -> z*q -> z - 1); // phi + return 0; +} +uint8_t MPU6050::dmpGetYawPitchRoll(float *data, Quaternion *q, VectorFloat *gravity) { + // yaw: (about Z axis) + data[0] = atan2(2*q -> x*q -> y - 2*q -> w*q -> z, 2*q -> w*q -> w + 2*q -> x*q -> x - 1); + // pitch: (nose up/down, about Y axis) + data[1] = atan(gravity -> x / sqrt(gravity -> y*gravity -> y + gravity -> z*gravity -> z)); + // roll: (tilt left/right, about X axis) + data[2] = atan(gravity -> y / sqrt(gravity -> x*gravity -> x + gravity -> z*gravity -> z)); + return 0; +} + +// uint8_t MPU6050::dmpGetAccelFloat(float *data, const uint8_t* packet); +// uint8_t MPU6050::dmpGetQuaternionFloat(float *data, const uint8_t* packet); + +uint8_t MPU6050::dmpProcessFIFOPacket(const unsigned char *dmpData) { + /*for (uint8_t k = 0; k < dmpPacketSize; k++) { + if (dmpData[k] < 0x10) Serial.print("0"); + Serial.print(dmpData[k], HEX); + Serial.print(" "); + } + Serial.print("\n");*/ + //Serial.println((uint16_t)dmpPacketBuffer); + return 0; +} +uint8_t MPU6050::dmpReadAndProcessFIFOPacket(uint8_t numPackets, uint8_t *processed) { + uint8_t status; + uint8_t buf[dmpPacketSize]; + for (uint8_t i = 0; i < numPackets; i++) { + // read packet from FIFO + getFIFOBytes(buf, dmpPacketSize); + + // process packet + if ((status = dmpProcessFIFOPacket(buf)) > 0) return status; + + // increment external process count variable, if supplied + if (processed != 0) *processed++; + } + return 0; +} + +// uint8_t MPU6050::dmpSetFIFOProcessedCallback(void (*func) (void)); + +// uint8_t MPU6050::dmpInitFIFOParam(); +// uint8_t MPU6050::dmpCloseFIFO(); +// uint8_t MPU6050::dmpSetGyroDataSource(uint_fast8_t source); +// uint8_t MPU6050::dmpDecodeQuantizedAccel(); +// uint32_t MPU6050::dmpGetGyroSumOfSquare(); +// uint32_t MPU6050::dmpGetAccelSumOfSquare(); +// void MPU6050::dmpOverrideQuaternion(long *q); +uint16_t MPU6050::dmpGetFIFOPacketSize() { + return dmpPacketSize; +} + +#endif /* _MPU6050_9AXIS_MOTIONAPPS41_H_ */ diff --git a/libraries/MPU6050/examples/IMU_Zero/IMU_Zero.ino b/libraries/MPU6050/examples/IMU_Zero/IMU_Zero.ino new file mode 100644 index 0000000000000000000000000000000000000000..b6aad4199290f11fd77057e37d2f688ab473d752 --- /dev/null +++ b/libraries/MPU6050/examples/IMU_Zero/IMU_Zero.ino @@ -0,0 +1,318 @@ +// MPU6050 offset-finder, based on Jeff Rowberg's MPU6050_RAW +// 2016-10-19 by Robert R. Fenichel (bob@fenichel.net) + +// I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class +// 10/7/2011 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// 2016-11-25 - added delays to reduce sampling rate to ~200 Hz +// added temporizing printing during long computations +// 2016-10-25 - requires inequality (Low < Target, High > Target) during expansion +// dynamic speed change when closing in +// 2016-10-22 - cosmetic changes +// 2016-10-19 - initial release of IMU_Zero +// 2013-05-08 - added multiple output formats +// - added seamless Fastwire support +// 2011-10-07 - initial release of MPU6050_RAW + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2011 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + If an MPU6050 + * is an ideal member of its tribe, + * is properly warmed up, + * is at rest in a neutral position, + * is in a location where the pull of gravity is exactly 1g, and + * has been loaded with the best possible offsets, +then it will report 0 for all accelerations and displacements, except for +Z acceleration, for which it will report 16384 (that is, 2^14). Your device +probably won't do quite this well, but good offsets will all get the baseline +outputs close to these target values. + + Put the MPU6050 on a flat and horizontal surface, and leave it operating for +5-10 minutes so its temperature gets stabilized. + + Run this program. A "----- done -----" line will indicate that it has done its best. +With the current accuracy-related constants (NFast = 1000, NSlow = 10000), it will take +a few minutes to get there. + + Along the way, it will generate a dozen or so lines of output, showing that for each +of the 6 desired offsets, it is + * first, trying to find two estimates, one too low and one too high, and + * then, closing in until the bracket can't be made smaller. + + The line just above the "done" line will look something like + [567,567] --> [-1,2] [-2223,-2223] --> [0,1] [1131,1132] --> [16374,16404] [155,156] --> [-1,1] [-25,-24] --> [0,3] [5,6] --> [0,4] +As will have been shown in interspersed header lines, the six groups making up this +line describe the optimum offsets for the X acceleration, Y acceleration, Z acceleration, +X gyro, Y gyro, and Z gyro, respectively. In the sample shown just above, the trial showed +that +567 was the best offset for the X acceleration, -2223 was best for Y acceleration, +and so on. + + The need for the delay between readings (usDelay) was brought to my attention by Nikolaus Doppelhammer. +=============================================== +*/ + +// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files +// for both classes must be in the include path of your project +#include "I2Cdev.h" +#include "MPU6050.h" + +// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation +// is used in I2Cdev.h +#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + #include "Wire.h" +#endif + +// class default I2C address is 0x68 +// specific I2C addresses may be passed as a parameter here +// AD0 low = 0x68 (default for InvenSense evaluation board) +// AD0 high = 0x69 +MPU6050 accelgyro; +//MPU6050 accelgyro(0x69); // <-- use for AD0 high + + +const char LBRACKET = '['; +const char RBRACKET = ']'; +const char COMMA = ','; +const char BLANK = ' '; +const char PERIOD = '.'; + +const int iAx = 0; +const int iAy = 1; +const int iAz = 2; +const int iGx = 3; +const int iGy = 4; +const int iGz = 5; + +const int usDelay = 3150; // empirical, to hold sampling to 200 Hz +const int NFast = 1000; // the bigger, the better (but slower) +const int NSlow = 10000; // .. +const int LinesBetweenHeaders = 5; + int LowValue[6]; + int HighValue[6]; + int Smoothed[6]; + int LowOffset[6]; + int HighOffset[6]; + int Target[6]; + int LinesOut; + int N; + +void ForceHeader() + { LinesOut = 99; } + +void GetSmoothed() + { int16_t RawValue[6]; + int i; + long Sums[6]; + for (i = iAx; i <= iGz; i++) + { Sums[i] = 0; } +// unsigned long Start = micros(); + + for (i = 1; i <= N; i++) + { // get sums + accelgyro.getMotion6(&RawValue[iAx], &RawValue[iAy], &RawValue[iAz], + &RawValue[iGx], &RawValue[iGy], &RawValue[iGz]); + if ((i % 500) == 0) + Serial.print(PERIOD); + delayMicroseconds(usDelay); + for (int j = iAx; j <= iGz; j++) + Sums[j] = Sums[j] + RawValue[j]; + } // get sums +// unsigned long usForN = micros() - Start; +// Serial.print(" reading at "); +// Serial.print(1000000/((usForN+N/2)/N)); +// Serial.println(" Hz"); + for (i = iAx; i <= iGz; i++) + { Smoothed[i] = (Sums[i] + N/2) / N ; } + } // GetSmoothed + +void Initialize() + { + // join I2C bus (I2Cdev library doesn't do this automatically) + #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + Wire.begin(); + #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE + Fastwire::setup(400, true); + #endif + + Serial.begin(9600); + + // initialize device + Serial.println("Initializing I2C devices..."); + accelgyro.initialize(); + + // verify connection + Serial.println("Testing device connections..."); + Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed"); + } // Initialize + +void SetOffsets(int TheOffsets[6]) + { accelgyro.setXAccelOffset(TheOffsets [iAx]); + accelgyro.setYAccelOffset(TheOffsets [iAy]); + accelgyro.setZAccelOffset(TheOffsets [iAz]); + accelgyro.setXGyroOffset (TheOffsets [iGx]); + accelgyro.setYGyroOffset (TheOffsets [iGy]); + accelgyro.setZGyroOffset (TheOffsets [iGz]); + } // SetOffsets + +void ShowProgress() + { if (LinesOut >= LinesBetweenHeaders) + { // show header + Serial.println("\tXAccel\t\t\tYAccel\t\t\t\tZAccel\t\t\tXGyro\t\t\tYGyro\t\t\tZGyro"); + LinesOut = 0; + } // show header + Serial.print(BLANK); + for (int i = iAx; i <= iGz; i++) + { Serial.print(LBRACKET); + Serial.print(LowOffset[i]), + Serial.print(COMMA); + Serial.print(HighOffset[i]); + Serial.print("] --> ["); + Serial.print(LowValue[i]); + Serial.print(COMMA); + Serial.print(HighValue[i]); + if (i == iGz) + { Serial.println(RBRACKET); } + else + { Serial.print("]\t"); } + } + LinesOut++; + } // ShowProgress + +void PullBracketsIn() + { boolean AllBracketsNarrow; + boolean StillWorking; + int NewOffset[6]; + + Serial.println("\nclosing in:"); + AllBracketsNarrow = false; + ForceHeader(); + StillWorking = true; + while (StillWorking) + { StillWorking = false; + if (AllBracketsNarrow && (N == NFast)) + { SetAveraging(NSlow); } + else + { AllBracketsNarrow = true; }// tentative + for (int i = iAx; i <= iGz; i++) + { if (HighOffset[i] <= (LowOffset[i]+1)) + { NewOffset[i] = LowOffset[i]; } + else + { // binary search + StillWorking = true; + NewOffset[i] = (LowOffset[i] + HighOffset[i]) / 2; + if (HighOffset[i] > (LowOffset[i] + 10)) + { AllBracketsNarrow = false; } + } // binary search + } + SetOffsets(NewOffset); + GetSmoothed(); + for (int i = iAx; i <= iGz; i++) + { // closing in + if (Smoothed[i] > Target[i]) + { // use lower half + HighOffset[i] = NewOffset[i]; + HighValue[i] = Smoothed[i]; + } // use lower half + else + { // use upper half + LowOffset[i] = NewOffset[i]; + LowValue[i] = Smoothed[i]; + } // use upper half + } // closing in + ShowProgress(); + } // still working + + } // PullBracketsIn + +void PullBracketsOut() + { boolean Done = false; + int NextLowOffset[6]; + int NextHighOffset[6]; + + Serial.println("expanding:"); + ForceHeader(); + + while (!Done) + { Done = true; + SetOffsets(LowOffset); + GetSmoothed(); + for (int i = iAx; i <= iGz; i++) + { // got low values + LowValue[i] = Smoothed[i]; + if (LowValue[i] >= Target[i]) + { Done = false; + NextLowOffset[i] = LowOffset[i] - 1000; + } + else + { NextLowOffset[i] = LowOffset[i]; } + } // got low values + + SetOffsets(HighOffset); + GetSmoothed(); + for (int i = iAx; i <= iGz; i++) + { // got high values + HighValue[i] = Smoothed[i]; + if (HighValue[i] <= Target[i]) + { Done = false; + NextHighOffset[i] = HighOffset[i] + 1000; + } + else + { NextHighOffset[i] = HighOffset[i]; } + } // got high values + ShowProgress(); + for (int i = iAx; i <= iGz; i++) + { LowOffset[i] = NextLowOffset[i]; // had to wait until ShowProgress done + HighOffset[i] = NextHighOffset[i]; // .. + } + } // keep going + } // PullBracketsOut + +void SetAveraging(int NewN) + { N = NewN; + Serial.print("averaging "); + Serial.print(N); + Serial.println(" readings each time"); + } // SetAveraging + +void setup() + { Initialize(); + for (int i = iAx; i <= iGz; i++) + { // set targets and initial guesses + Target[i] = 0; // must fix for ZAccel + HighOffset[i] = 0; + LowOffset[i] = 0; + } // set targets and initial guesses + Target[iAz] = 16384; + SetAveraging(NFast); + + PullBracketsOut(); + PullBracketsIn(); + + Serial.println("-------------- done --------------"); + } // setup + +void loop() + { + } // loop diff --git a/libraries/MPU6050/examples/MPU6050_DMP6/MPU6050_DMP6.ino b/libraries/MPU6050/examples/MPU6050_DMP6/MPU6050_DMP6.ino new file mode 100644 index 0000000000000000000000000000000000000000..02a4e0d85a8cc5176195752e4baac938928ac618 --- /dev/null +++ b/libraries/MPU6050/examples/MPU6050_DMP6/MPU6050_DMP6.ino @@ -0,0 +1,374 @@ +// I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class using DMP (MotionApps v2.0) +// 6/21/2012 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// 2013-05-08 - added seamless Fastwire support +// - added note about gyro calibration +// 2012-06-21 - added note about Arduino 1.0.1 + Leonardo compatibility error +// 2012-06-20 - improved FIFO overflow handling and simplified read process +// 2012-06-19 - completely rearranged DMP initialization code and simplification +// 2012-06-13 - pull gyro and accel data from FIFO packet instead of reading directly +// 2012-06-09 - fix broken FIFO read sequence and change interrupt detection to RISING +// 2012-06-05 - add gravity-compensated initial reference frame acceleration output +// - add 3D math helper file to DMP6 example sketch +// - add Euler output and Yaw/Pitch/Roll output formats +// 2012-06-04 - remove accel offset clearing for better results (thanks Sungon Lee) +// 2012-06-01 - fixed gyro sensitivity to be 2000 deg/sec instead of 250 +// 2012-05-30 - basic DMP initialization working + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files +// for both classes must be in the include path of your project +#include "I2Cdev.h" + +#include "MPU6050_6Axis_MotionApps20.h" +//#include "MPU6050.h" // not necessary if using MotionApps include file + +// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation +// is used in I2Cdev.h +#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + #include "Wire.h" +#endif + +// class default I2C address is 0x68 +// specific I2C addresses may be passed as a parameter here +// AD0 low = 0x68 (default for SparkFun breakout and InvenSense evaluation board) +// AD0 high = 0x69 +MPU6050 mpu; +//MPU6050 mpu(0x69); // <-- use for AD0 high + +/* ========================================================================= + NOTE: In addition to connection 3.3v, GND, SDA, and SCL, this sketch + depends on the MPU-6050's INT pin being connected to the Arduino's + external interrupt #0 pin. On the Arduino Uno and Mega 2560, this is + digital I/O pin 2. + * ========================================================================= */ + +/* ========================================================================= + NOTE: Arduino v1.0.1 with the Leonardo board generates a compile error + when using Serial.write(buf, len). The Teapot output uses this method. + The solution requires a modification to the Arduino USBAPI.h file, which + is fortunately simple, but annoying. This will be fixed in the next IDE + release. For more info, see these links: + + http://arduino.cc/forum/index.php/topic,109987.0.html + http://code.google.com/p/arduino/issues/detail?id=958 + * ========================================================================= */ + + + +// uncomment "OUTPUT_READABLE_QUATERNION" if you want to see the actual +// quaternion components in a [w, x, y, z] format (not best for parsing +// on a remote host such as Processing or something though) +//#define OUTPUT_READABLE_QUATERNION + +// uncomment "OUTPUT_READABLE_EULER" if you want to see Euler angles +// (in degrees) calculated from the quaternions coming from the FIFO. +// Note that Euler angles suffer from gimbal lock (for more info, see +// http://en.wikipedia.org/wiki/Gimbal_lock) +//#define OUTPUT_READABLE_EULER + +// uncomment "OUTPUT_READABLE_YAWPITCHROLL" if you want to see the yaw/ +// pitch/roll angles (in degrees) calculated from the quaternions coming +// from the FIFO. Note this also requires gravity vector calculations. +// Also note that yaw/pitch/roll angles suffer from gimbal lock (for +// more info, see: http://en.wikipedia.org/wiki/Gimbal_lock) +#define OUTPUT_READABLE_YAWPITCHROLL + +// uncomment "OUTPUT_READABLE_REALACCEL" if you want to see acceleration +// components with gravity removed. This acceleration reference frame is +// not compensated for orientation, so +X is always +X according to the +// sensor, just without the effects of gravity. If you want acceleration +// compensated for orientation, us OUTPUT_READABLE_WORLDACCEL instead. +//#define OUTPUT_READABLE_REALACCEL + +// uncomment "OUTPUT_READABLE_WORLDACCEL" if you want to see acceleration +// components with gravity removed and adjusted for the world frame of +// reference (yaw is relative to initial orientation, since no magnetometer +// is present in this case). Could be quite handy in some cases. +//#define OUTPUT_READABLE_WORLDACCEL + +// uncomment "OUTPUT_TEAPOT" if you want output that matches the +// format used for the InvenSense teapot demo +//#define OUTPUT_TEAPOT + + + +#define INTERRUPT_PIN 2 // use pin 2 on Arduino Uno & most boards +#define LED_PIN 13 // (Arduino is 13, Teensy is 11, Teensy++ is 6) +bool blinkState = false; + +// MPU control/status vars +bool dmpReady = false; // set true if DMP init was successful +uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU +uint8_t devStatus; // return status after each device operation (0 = success, !0 = error) +uint16_t packetSize; // expected DMP packet size (default is 42 bytes) +uint16_t fifoCount; // count of all bytes currently in FIFO +uint8_t fifoBuffer[64]; // FIFO storage buffer + +// orientation/motion vars +Quaternion q; // [w, x, y, z] quaternion container +VectorInt16 aa; // [x, y, z] accel sensor measurements +VectorInt16 aaReal; // [x, y, z] gravity-free accel sensor measurements +VectorInt16 aaWorld; // [x, y, z] world-frame accel sensor measurements +VectorFloat gravity; // [x, y, z] gravity vector +float euler[3]; // [psi, theta, phi] Euler angle container +float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector + +// packet structure for InvenSense teapot demo +uint8_t teapotPacket[14] = { '$', 0x02, 0,0, 0,0, 0,0, 0,0, 0x00, 0x00, '\r', '\n' }; + + + +// ================================================================ +// === INTERRUPT DETECTION ROUTINE === +// ================================================================ + +volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone high +void dmpDataReady() { + mpuInterrupt = true; +} + + + +// ================================================================ +// === INITIAL SETUP === +// ================================================================ + +void setup() { + // join I2C bus (I2Cdev library doesn't do this automatically) + #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + Wire.begin(); + Wire.setClock(400000); // 400kHz I2C clock. Comment this line if having compilation difficulties + #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE + Fastwire::setup(400, true); + #endif + + // initialize serial communication + // (115200 chosen because it is required for Teapot Demo output, but it's + // really up to you depending on your project) + Serial.begin(115200); + while (!Serial); // wait for Leonardo enumeration, others continue immediately + + // NOTE: 8MHz or slower host processors, like the Teensy @ 3.3V or Arduino + // Pro Mini running at 3.3V, cannot handle this baud rate reliably due to + // the baud timing being too misaligned with processor ticks. You must use + // 38400 or slower in these cases, or use some kind of external separate + // crystal solution for the UART timer. + + // initialize device + Serial.println(F("Initializing I2C devices...")); + mpu.initialize(); + pinMode(INTERRUPT_PIN, INPUT); + + // verify connection + Serial.println(F("Testing device connections...")); + Serial.println(mpu.testConnection() ? F("MPU6050 connection successful") : F("MPU6050 connection failed")); + + // wait for ready + Serial.println(F("\nSend any character to begin DMP programming and demo: ")); + while (Serial.available() && Serial.read()); // empty buffer + while (!Serial.available()); // wait for data + while (Serial.available() && Serial.read()); // empty buffer again + + // load and configure the DMP + Serial.println(F("Initializing DMP...")); + devStatus = mpu.dmpInitialize(); + + // supply your own gyro offsets here, scaled for min sensitivity + mpu.setXGyroOffset(220); + mpu.setYGyroOffset(76); + mpu.setZGyroOffset(-85); + mpu.setZAccelOffset(1788); // 1688 factory default for my test chip + + // make sure it worked (returns 0 if so) + if (devStatus == 0) { + // turn on the DMP, now that it's ready + Serial.println(F("Enabling DMP...")); + mpu.setDMPEnabled(true); + + // enable Arduino interrupt detection + Serial.println(F("Enabling interrupt detection (Arduino external interrupt 0)...")); + attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING); + mpuIntStatus = mpu.getIntStatus(); + + // set our DMP Ready flag so the main loop() function knows it's okay to use it + Serial.println(F("DMP ready! Waiting for first interrupt...")); + dmpReady = true; + + // get expected DMP packet size for later comparison + packetSize = mpu.dmpGetFIFOPacketSize(); + } else { + // ERROR! + // 1 = initial memory load failed + // 2 = DMP configuration updates failed + // (if it's going to break, usually the code will be 1) + Serial.print(F("DMP Initialization failed (code ")); + Serial.print(devStatus); + Serial.println(F(")")); + } + + // configure LED for output + pinMode(LED_PIN, OUTPUT); +} + + + +// ================================================================ +// === MAIN PROGRAM LOOP === +// ================================================================ + +void loop() { + // if programming failed, don't try to do anything + if (!dmpReady) return; + + // wait for MPU interrupt or extra packet(s) available + while (!mpuInterrupt && fifoCount < packetSize) { + // other program behavior stuff here + // . + // . + // . + // if you are really paranoid you can frequently test in between other + // stuff to see if mpuInterrupt is true, and if so, "break;" from the + // while() loop to immediately process the MPU data + // . + // . + // . + } + + // reset interrupt flag and get INT_STATUS byte + mpuInterrupt = false; + mpuIntStatus = mpu.getIntStatus(); + + // get current FIFO count + fifoCount = mpu.getFIFOCount(); + + // check for overflow (this should never happen unless our code is too inefficient) + if ((mpuIntStatus & 0x10) || fifoCount == 1024) { + // reset so we can continue cleanly + mpu.resetFIFO(); + Serial.println(F("FIFO overflow!")); + + // otherwise, check for DMP data ready interrupt (this should happen frequently) + } else if (mpuIntStatus & 0x02) { + // wait for correct available data length, should be a VERY short wait + while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount(); + + // read a packet from FIFO + mpu.getFIFOBytes(fifoBuffer, packetSize); + + // track FIFO count here in case there is > 1 packet available + // (this lets us immediately read more without waiting for an interrupt) + fifoCount -= packetSize; + + #ifdef OUTPUT_READABLE_QUATERNION + // display quaternion values in easy matrix form: w x y z + mpu.dmpGetQuaternion(&q, fifoBuffer); + Serial.print("quat\t"); + Serial.print(q.w); + Serial.print("\t"); + Serial.print(q.x); + Serial.print("\t"); + Serial.print(q.y); + Serial.print("\t"); + Serial.println(q.z); + #endif + + #ifdef OUTPUT_READABLE_EULER + // display Euler angles in degrees + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetEuler(euler, &q); + Serial.print("euler\t"); + Serial.print(euler[0] * 180/M_PI); + Serial.print("\t"); + Serial.print(euler[1] * 180/M_PI); + Serial.print("\t"); + Serial.println(euler[2] * 180/M_PI); + #endif + + #ifdef OUTPUT_READABLE_YAWPITCHROLL + // display Euler angles in degrees + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); + Serial.print("ypr\t"); + Serial.print(ypr[0] * 180/M_PI); + Serial.print("\t"); + Serial.print(ypr[1] * 180/M_PI); + Serial.print("\t"); + Serial.println(ypr[2] * 180/M_PI); + #endif + + #ifdef OUTPUT_READABLE_REALACCEL + // display real acceleration, adjusted to remove gravity + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetAccel(&aa, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity); + Serial.print("areal\t"); + Serial.print(aaReal.x); + Serial.print("\t"); + Serial.print(aaReal.y); + Serial.print("\t"); + Serial.println(aaReal.z); + #endif + + #ifdef OUTPUT_READABLE_WORLDACCEL + // display initial world-frame acceleration, adjusted to remove gravity + // and rotated based on known orientation from quaternion + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetAccel(&aa, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity); + mpu.dmpGetLinearAccelInWorld(&aaWorld, &aaReal, &q); + Serial.print("aworld\t"); + Serial.print(aaWorld.x); + Serial.print("\t"); + Serial.print(aaWorld.y); + Serial.print("\t"); + Serial.println(aaWorld.z); + #endif + + #ifdef OUTPUT_TEAPOT + // display quaternion values in InvenSense Teapot demo format: + teapotPacket[2] = fifoBuffer[0]; + teapotPacket[3] = fifoBuffer[1]; + teapotPacket[4] = fifoBuffer[4]; + teapotPacket[5] = fifoBuffer[5]; + teapotPacket[6] = fifoBuffer[8]; + teapotPacket[7] = fifoBuffer[9]; + teapotPacket[8] = fifoBuffer[12]; + teapotPacket[9] = fifoBuffer[13]; + Serial.write(teapotPacket, 14); + teapotPacket[11]++; // packetCount, loops at 0xFF on purpose + #endif + + // blink LED to indicate activity + blinkState = !blinkState; + digitalWrite(LED_PIN, blinkState); + } +} diff --git a/libraries/MPU6050/examples/MPU6050_DMP6/Processing/MPUTeapot/MPUTeapot.pde b/libraries/MPU6050/examples/MPU6050_DMP6/Processing/MPUTeapot/MPUTeapot.pde new file mode 100644 index 0000000000000000000000000000000000000000..130fc4dc3c2e8650d7aff14dba7e56d4b8d355bc --- /dev/null +++ b/libraries/MPU6050/examples/MPU6050_DMP6/Processing/MPUTeapot/MPUTeapot.pde @@ -0,0 +1,242 @@ +// I2C device class (I2Cdev) demonstration Processing sketch for MPU6050 DMP output +// 6/20/2012 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// 2012-06-20 - initial release + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +import processing.serial.*; +import processing.opengl.*; +import toxi.geom.*; +import toxi.processing.*; + +// NOTE: requires ToxicLibs to be installed in order to run properly. +// 1. Download from http://toxiclibs.org/downloads +// 2. Extract into [userdir]/Processing/libraries +// (location may be different on Mac/Linux) +// 3. Run and bask in awesomeness + +ToxiclibsSupport gfx; + +Serial port; // The serial port +char[] teapotPacket = new char[14]; // InvenSense Teapot packet +int serialCount = 0; // current packet byte position +int synced = 0; +int interval = 0; + +float[] q = new float[4]; +Quaternion quat = new Quaternion(1, 0, 0, 0); + +float[] gravity = new float[3]; +float[] euler = new float[3]; +float[] ypr = new float[3]; + +void setup() { + // 300px square viewport using OpenGL rendering + size(300, 300, OPENGL); + gfx = new ToxiclibsSupport(this); + + // setup lights and antialiasing + lights(); + smooth(); + + // display serial port list for debugging/clarity + println(Serial.list()); + + // get the first available port (use EITHER this OR the specific port code below) + String portName = Serial.list()[0]; + + // get a specific serial port (use EITHER this OR the first-available code above) + //String portName = "COM4"; + + // open the serial port + port = new Serial(this, portName, 115200); + + // send single character to trigger DMP init/start + // (expected by MPU6050_DMP6 example Arduino sketch) + port.write('r'); +} + +void draw() { + if (millis() - interval > 1000) { + // resend single character to trigger DMP init/start + // in case the MPU is halted/reset while applet is running + port.write('r'); + interval = millis(); + } + + // black background + background(0); + + // translate everything to the middle of the viewport + pushMatrix(); + translate(width / 2, height / 2); + + // 3-step rotation from yaw/pitch/roll angles (gimbal lock!) + // ...and other weirdness I haven't figured out yet + //rotateY(-ypr[0]); + //rotateZ(-ypr[1]); + //rotateX(-ypr[2]); + + // toxiclibs direct angle/axis rotation from quaternion (NO gimbal lock!) + // (axis order [1, 3, 2] and inversion [-1, +1, +1] is a consequence of + // different coordinate system orientation assumptions between Processing + // and InvenSense DMP) + float[] axis = quat.toAxisAngle(); + rotate(axis[0], -axis[1], axis[3], axis[2]); + + // draw main body in red + fill(255, 0, 0, 200); + box(10, 10, 200); + + // draw front-facing tip in blue + fill(0, 0, 255, 200); + pushMatrix(); + translate(0, 0, -120); + rotateX(PI/2); + drawCylinder(0, 20, 20, 8); + popMatrix(); + + // draw wings and tail fin in green + fill(0, 255, 0, 200); + beginShape(TRIANGLES); + vertex(-100, 2, 30); vertex(0, 2, -80); vertex(100, 2, 30); // wing top layer + vertex(-100, -2, 30); vertex(0, -2, -80); vertex(100, -2, 30); // wing bottom layer + vertex(-2, 0, 98); vertex(-2, -30, 98); vertex(-2, 0, 70); // tail left layer + vertex( 2, 0, 98); vertex( 2, -30, 98); vertex( 2, 0, 70); // tail right layer + endShape(); + beginShape(QUADS); + vertex(-100, 2, 30); vertex(-100, -2, 30); vertex( 0, -2, -80); vertex( 0, 2, -80); + vertex( 100, 2, 30); vertex( 100, -2, 30); vertex( 0, -2, -80); vertex( 0, 2, -80); + vertex(-100, 2, 30); vertex(-100, -2, 30); vertex(100, -2, 30); vertex(100, 2, 30); + vertex(-2, 0, 98); vertex(2, 0, 98); vertex(2, -30, 98); vertex(-2, -30, 98); + vertex(-2, 0, 98); vertex(2, 0, 98); vertex(2, 0, 70); vertex(-2, 0, 70); + vertex(-2, -30, 98); vertex(2, -30, 98); vertex(2, 0, 70); vertex(-2, 0, 70); + endShape(); + + popMatrix(); +} + +void serialEvent(Serial port) { + interval = millis(); + while (port.available() > 0) { + int ch = port.read(); + + if (synced == 0 && ch != '$') return; // initial synchronization - also used to resync/realign if needed + synced = 1; + print ((char)ch); + + if ((serialCount == 1 && ch != 2) + || (serialCount == 12 && ch != '\r') + || (serialCount == 13 && ch != '\n')) { + serialCount = 0; + synced = 0; + return; + } + + if (serialCount > 0 || ch == '$') { + teapotPacket[serialCount++] = (char)ch; + if (serialCount == 14) { + serialCount = 0; // restart packet byte position + + // get quaternion from data packet + q[0] = ((teapotPacket[2] << 8) | teapotPacket[3]) / 16384.0f; + q[1] = ((teapotPacket[4] << 8) | teapotPacket[5]) / 16384.0f; + q[2] = ((teapotPacket[6] << 8) | teapotPacket[7]) / 16384.0f; + q[3] = ((teapotPacket[8] << 8) | teapotPacket[9]) / 16384.0f; + for (int i = 0; i < 4; i++) if (q[i] >= 2) q[i] = -4 + q[i]; + + // set our toxilibs quaternion to new data + quat.set(q[0], q[1], q[2], q[3]); + + /* + // below calculations unnecessary for orientation only using toxilibs + + // calculate gravity vector + gravity[0] = 2 * (q[1]*q[3] - q[0]*q[2]); + gravity[1] = 2 * (q[0]*q[1] + q[2]*q[3]); + gravity[2] = q[0]*q[0] - q[1]*q[1] - q[2]*q[2] + q[3]*q[3]; + + // calculate Euler angles + euler[0] = atan2(2*q[1]*q[2] - 2*q[0]*q[3], 2*q[0]*q[0] + 2*q[1]*q[1] - 1); + euler[1] = -asin(2*q[1]*q[3] + 2*q[0]*q[2]); + euler[2] = atan2(2*q[2]*q[3] - 2*q[0]*q[1], 2*q[0]*q[0] + 2*q[3]*q[3] - 1); + + // calculate yaw/pitch/roll angles + ypr[0] = atan2(2*q[1]*q[2] - 2*q[0]*q[3], 2*q[0]*q[0] + 2*q[1]*q[1] - 1); + ypr[1] = atan(gravity[0] / sqrt(gravity[1]*gravity[1] + gravity[2]*gravity[2])); + ypr[2] = atan(gravity[1] / sqrt(gravity[0]*gravity[0] + gravity[2]*gravity[2])); + + // output various components for debugging + //println("q:\t" + round(q[0]*100.0f)/100.0f + "\t" + round(q[1]*100.0f)/100.0f + "\t" + round(q[2]*100.0f)/100.0f + "\t" + round(q[3]*100.0f)/100.0f); + //println("euler:\t" + euler[0]*180.0f/PI + "\t" + euler[1]*180.0f/PI + "\t" + euler[2]*180.0f/PI); + //println("ypr:\t" + ypr[0]*180.0f/PI + "\t" + ypr[1]*180.0f/PI + "\t" + ypr[2]*180.0f/PI); + */ + } + } + } +} + +void drawCylinder(float topRadius, float bottomRadius, float tall, int sides) { + float angle = 0; + float angleIncrement = TWO_PI / sides; + beginShape(QUAD_STRIP); + for (int i = 0; i < sides + 1; ++i) { + vertex(topRadius*cos(angle), 0, topRadius*sin(angle)); + vertex(bottomRadius*cos(angle), tall, bottomRadius*sin(angle)); + angle += angleIncrement; + } + endShape(); + + // If it is not a cone, draw the circular top cap + if (topRadius != 0) { + angle = 0; + beginShape(TRIANGLE_FAN); + + // Center point + vertex(0, 0, 0); + for (int i = 0; i < sides + 1; i++) { + vertex(topRadius * cos(angle), 0, topRadius * sin(angle)); + angle += angleIncrement; + } + endShape(); + } + + // If it is not a cone, draw the circular bottom cap + if (bottomRadius != 0) { + angle = 0; + beginShape(TRIANGLE_FAN); + + // Center point + vertex(0, tall, 0); + for (int i = 0; i < sides + 1; i++) { + vertex(bottomRadius * cos(angle), tall, bottomRadius * sin(angle)); + angle += angleIncrement; + } + endShape(); + } +} diff --git a/libraries/MPU6050/examples/MPU6050_DMP6_ESPWiFi/MPU6050_DMP6_ESPWiFi.ino b/libraries/MPU6050/examples/MPU6050_DMP6_ESPWiFi/MPU6050_DMP6_ESPWiFi.ino new file mode 100644 index 0000000000000000000000000000000000000000..588cf914cfa77f3ab313a84e7c5001fe37813bea --- /dev/null +++ b/libraries/MPU6050/examples/MPU6050_DMP6_ESPWiFi/MPU6050_DMP6_ESPWiFi.ino @@ -0,0 +1,370 @@ +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +/* This driver reads quaternion data from the MPU6060 and sends + Open Sound Control messages. + + GY-521 NodeMCU + MPU6050 devkit 1.0 + board Lolin Description + ======= ========== ==================================================== + VCC VU (5V USB) Not available on all boards so use 3.3V if needed. + GND G Ground + SCL D1 (GPIO05) I2C clock + SDA D2 (GPIO04) I2C data + XDA not connected + XCL not connected + AD0 not connected + INT D8 (GPIO15) Interrupt pin + +*/ + +#if defined(ESP8266) +#include <ESP8266WiFi.h> +#else +#include <WiFi.h> +#endif +#include <DNSServer.h> +#include <WiFiClient.h> +#include <WiFiUdp.h> +#include <OSCMessage.h> +#include <WiFiManager.h> //https://github.com/tzapu/WiFiManager + +// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files +// for both classes must be in the include path of your project +#include "I2Cdev.h" + +#include "MPU6050_6Axis_MotionApps20.h" +//#include "MPU6050.h" // not necessary if using MotionApps include file + +// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation +// is used in I2Cdev.h +#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + #include "Wire.h" +#endif + +// class default I2C address is 0x68 +// specific I2C addresses may be passed as a parameter here +// AD0 low = 0x68 (default for SparkFun breakout and InvenSense evaluation board) +// AD0 high = 0x69 +MPU6050 mpu; +//MPU6050 mpu(0x69); // <-- use for AD0 high + +/* ========================================================================= + NOTE: In addition to connection 5/3.3v, GND, SDA, and SCL, this sketch + depends on the MPU-6050's INT pin being connected to the ESP8266 GPIO15 + pin. + * ========================================================================= */ + +// MPU control/status vars +bool dmpReady = false; // set true if DMP init was successful +uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU +uint8_t devStatus; // return status after each device operation (0 = success, !0 = error) +uint16_t packetSize; // expected DMP packet size (default is 42 bytes) +uint16_t fifoCount; // count of all bytes currently in FIFO +uint8_t fifoBuffer[64]; // FIFO storage buffer + +// orientation/motion vars +Quaternion q; // [w, x, y, z] quaternion container +VectorInt16 aa; // [x, y, z] accel sensor measurements +VectorInt16 aaReal; // [x, y, z] gravity-free accel sensor measurements +VectorInt16 aaWorld; // [x, y, z] world-frame accel sensor measurements +VectorFloat gravity; // [x, y, z] gravity vector +#ifdef OUTPUT_READABLE_EULER +float euler[3]; // [psi, theta, phi] Euler angle container +#endif +#ifdef OUTPUT_READABLE_YAWPITCHROLL +float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector +#endif + +// uncomment "OUTPUT_READABLE_QUATERNION" if you want to see the actual +// quaternion components in a [w, x, y, z] format (not best for parsing +// on a remote host such as Processing or something though) +//#define OUTPUT_READABLE_QUATERNION + +// uncomment "OUTPUT_READABLE_EULER" if you want to see Euler angles +// (in degrees) calculated from the quaternions coming from the FIFO. +// Note that Euler angles suffer from gimbal lock (for more info, see +// http://en.wikipedia.org/wiki/Gimbal_lock) +//#define OUTPUT_READABLE_EULER + +// uncomment "OUTPUT_READABLE_YAWPITCHROLL" if you want to see the yaw/ +// pitch/roll angles (in degrees) calculated from the quaternions coming +// from the FIFO. Note this also requires gravity vector calculations. +// Also note that yaw/pitch/roll angles suffer from gimbal lock (for +// more info, see: http://en.wikipedia.org/wiki/Gimbal_lock) +//#define OUTPUT_READABLE_YAWPITCHROLL + +// uncomment "OUTPUT_READABLE_REALACCEL" if you want to see acceleration +// components with gravity removed. This acceleration reference frame is +// not compensated for orientation, so +X is always +X according to the +// sensor, just without the effects of gravity. If you want acceleration +// compensated for orientation, us OUTPUT_READABLE_WORLDACCEL instead. +//#define OUTPUT_READABLE_REALACCEL + +// uncomment "OUTPUT_READABLE_WORLDACCEL" if you want to see acceleration +// components with gravity removed and adjusted for the world frame of +// reference (yaw is relative to initial orientation, since no magnetometer +// is present in this case). Could be quite handy in some cases. +//#define OUTPUT_READABLE_WORLDACCEL + +// uncomment "OUTPUT_TEAPOT_OSC" if you want output that matches the +// format used for the InvenSense teapot demo +#define OUTPUT_TEAPOT_OSC + +#define INTERRUPT_PIN 15 // use pin 15 on ESP8266 + +const char DEVICE_NAME[] = "mpu6050"; + +WiFiUDP Udp; // A UDP instance to let us send and receive packets over UDP +const IPAddress outIp(192, 168, 1, 11); // remote IP to receive OSC +const unsigned int outPort = 9999; // remote port to receive OSC + +// ================================================================ +// === INTERRUPT DETECTION ROUTINE === +// ================================================================ + +volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone high +void dmpDataReady() { + mpuInterrupt = true; +} + +void mpu_setup() +{ + // join I2C bus (I2Cdev library doesn't do this automatically) +#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + Wire.begin(); + Wire.setClock(400000); // 400kHz I2C clock. Comment this line if having compilation difficulties +#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE + Fastwire::setup(400, true); +#endif + + // initialize device + Serial.println(F("Initializing I2C devices...")); + mpu.initialize(); + pinMode(INTERRUPT_PIN, INPUT); + + // verify connection + Serial.println(F("Testing device connections...")); + Serial.println(mpu.testConnection() ? F("MPU6050 connection successful") : F("MPU6050 connection failed")); + + // load and configure the DMP + Serial.println(F("Initializing DMP...")); + devStatus = mpu.dmpInitialize(); + + // supply your own gyro offsets here, scaled for min sensitivity + mpu.setXGyroOffset(220); + mpu.setYGyroOffset(76); + mpu.setZGyroOffset(-85); + mpu.setZAccelOffset(1788); // 1688 factory default for my test chip + + // make sure it worked (returns 0 if so) + if (devStatus == 0) { + // turn on the DMP, now that it's ready + Serial.println(F("Enabling DMP...")); + mpu.setDMPEnabled(true); + + // enable Arduino interrupt detection + Serial.println(F("Enabling interrupt detection (Arduino external interrupt 0)...")); + attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING); + mpuIntStatus = mpu.getIntStatus(); + + // set our DMP Ready flag so the main loop() function knows it's okay to use it + Serial.println(F("DMP ready! Waiting for first interrupt...")); + dmpReady = true; + + // get expected DMP packet size for later comparison + packetSize = mpu.dmpGetFIFOPacketSize(); + } else { + // ERROR! + // 1 = initial memory load failed + // 2 = DMP configuration updates failed + // (if it's going to break, usually the code will be 1) + Serial.print(F("DMP Initialization failed (code ")); + Serial.print(devStatus); + Serial.println(F(")")); + } +} + +void setup(void) +{ + Serial.begin(115200); + Serial.println(F("\nOrientation Sensor OSC output")); Serial.println(); + + //WiFiManager + //Local intialization. Once its business is done, there is no need to keep it around + WiFiManager wifiManager; + //reset saved settings + //wifiManager.resetSettings(); + + //fetches ssid and pass from eeprom and tries to connect + //if it does not connect it starts an access point with the specified name + //and goes into a blocking loop awaiting configuration + wifiManager.autoConnect(DEVICE_NAME); + + Serial.print(F("WiFi connected! IP address: ")); + Serial.println(WiFi.localIP()); + + mpu_setup(); +} + +void mpu_loop() +{ + // if programming failed, don't try to do anything + if (!dmpReady) return; + + // wait for MPU interrupt or extra packet(s) available + if (!mpuInterrupt && fifoCount < packetSize) return; + + // reset interrupt flag and get INT_STATUS byte + mpuInterrupt = false; + mpuIntStatus = mpu.getIntStatus(); + + // get current FIFO count + fifoCount = mpu.getFIFOCount(); + + // check for overflow (this should never happen unless our code is too inefficient) + if ((mpuIntStatus & 0x10) || fifoCount == 1024) { + // reset so we can continue cleanly + mpu.resetFIFO(); + Serial.println(F("FIFO overflow!")); + + // otherwise, check for DMP data ready interrupt (this should happen frequently) + } else if (mpuIntStatus & 0x02) { + // wait for correct available data length, should be a VERY short wait + while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount(); + + // read a packet from FIFO + mpu.getFIFOBytes(fifoBuffer, packetSize); + + // track FIFO count here in case there is > 1 packet available + // (this lets us immediately read more without waiting for an interrupt) + fifoCount -= packetSize; + +#ifdef OUTPUT_READABLE_QUATERNION + // display quaternion values in easy matrix form: w x y z + mpu.dmpGetQuaternion(&q, fifoBuffer); + Serial.print("quat\t"); + Serial.print(q.w); + Serial.print("\t"); + Serial.print(q.x); + Serial.print("\t"); + Serial.print(q.y); + Serial.print("\t"); + Serial.println(q.z); +#endif + +#ifdef OUTPUT_TEAPOT_OSC +#ifndef OUTPUT_READABLE_QUATERNION + // display quaternion values in easy matrix form: w x y z + mpu.dmpGetQuaternion(&q, fifoBuffer); +#endif + // Send OSC message + OSCMessage msg("/imuquat"); + msg.add((float)q.w); + msg.add((float)q.x); + msg.add((float)q.y); + msg.add((float)q.z); + + Udp.beginPacket(outIp, outPort); + msg.send(Udp); + Udp.endPacket(); + + msg.empty(); +#endif + +#ifdef OUTPUT_READABLE_EULER + // display Euler angles in degrees + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetEuler(euler, &q); + Serial.print("euler\t"); + Serial.print(euler[0] * 180/M_PI); + Serial.print("\t"); + Serial.print(euler[1] * 180/M_PI); + Serial.print("\t"); + Serial.println(euler[2] * 180/M_PI); +#endif + +#ifdef OUTPUT_READABLE_YAWPITCHROLL + // display Euler angles in degrees + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); + Serial.print("ypr\t"); + Serial.print(ypr[0] * 180/M_PI); + Serial.print("\t"); + Serial.print(ypr[1] * 180/M_PI); + Serial.print("\t"); + Serial.println(ypr[2] * 180/M_PI); +#endif + +#ifdef OUTPUT_READABLE_REALACCEL + // display real acceleration, adjusted to remove gravity + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetAccel(&aa, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity); + Serial.print("areal\t"); + Serial.print(aaReal.x); + Serial.print("\t"); + Serial.print(aaReal.y); + Serial.print("\t"); + Serial.println(aaReal.z); +#endif + +#ifdef OUTPUT_READABLE_WORLDACCEL + // display initial world-frame acceleration, adjusted to remove gravity + // and rotated based on known orientation from quaternion + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetAccel(&aa, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity); + mpu.dmpGetLinearAccelInWorld(&aaWorld, &aaReal, &q); + Serial.print("aworld\t"); + Serial.print(aaWorld.x); + Serial.print("\t"); + Serial.print(aaWorld.y); + Serial.print("\t"); + Serial.println(aaWorld.z); +#endif + } +} + +/**************************************************************************/ +/* + Arduino loop function, called once 'setup' is complete (your own code + should go here) +*/ +/**************************************************************************/ +void loop(void) +{ + if (WiFi.status() != WL_CONNECTED) { + Serial.println(); + Serial.println("*** Disconnected from AP so rebooting ***"); + Serial.println(); + ESP.reset(); + } + + mpu_loop(); +} diff --git a/libraries/MPU6050/examples/MPU6050_DMP6_ESPWiFi/Processing/MPUOSCTeapot/MPUOSCTeapot.pde b/libraries/MPU6050/examples/MPU6050_DMP6_ESPWiFi/Processing/MPUOSCTeapot/MPUOSCTeapot.pde new file mode 100644 index 0000000000000000000000000000000000000000..dfe651898b3d5798d9c3662ccabe709110f2a251 --- /dev/null +++ b/libraries/MPU6050/examples/MPU6050_DMP6_ESPWiFi/Processing/MPUOSCTeapot/MPUOSCTeapot.pde @@ -0,0 +1,188 @@ +// I2C device class (I2Cdev) demonstration Processing sketch for MPU6050 DMP output +// 6/20/2012 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// 2012-06-20 - initial release + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +/** + * MPUOSCTeapot Processing demo for MPU6050 DMP modified for OSC + * https://gitub.com/jrowberg/i2cdevlib + * The original demo uses serial port I/O which has been replaced with + * OSC UDP messages in this sketch. + * + * The MPU6050 is connected to an ESP8266 with battery so it is completely + * wire free. + * + * Tested on Processing 3.3.5 running on Ubuntu Linux 14.04 + * + * Dependencies installed using Library Manager + * + * Open Sound Control library + * oscP5 website at http://www.sojamo.de/oscP5 + * ToxicLibs + * quaternion functions http://toxiclibs.org/ + * + */ + +// Install oscP5 using the IDE library manager. +// From the IDE menu bar, Sketch | Import Library | Add library. +// In the search box type "osc". +import oscP5.*; +import netP5.*; +// Install ToxicLibs using the IDE library manager +// From the IDE menu bar, Sketch | Import Library | Add library. +// In the search box type "toxic". +import toxi.geom.*; +import toxi.processing.*; + +ToxiclibsSupport gfx; + +Quaternion quat = new Quaternion(1, 0, 0, 0); + +OscP5 oscP5; + +void setup() { + // 300px square viewport using OpenGL rendering + size(300, 300, P3D); + gfx = new ToxiclibsSupport(this); + + // setup lights and antialiasing + lights(); + smooth(); + + /* start oscP5, listening for incoming messages at port 9999 */ + oscP5 = new OscP5(this, 9999); + + oscP5.plug(this, "imu", "/imuquat"); +} + +/* incoming osc message are forwarded to the oscEvent method. */ +void oscEvent(OscMessage theOscMessage) { + /* print the address pattern and the typetag of the received OscMessage */ + //print("### received an osc message."); + //print(" addrpattern: "+theOscMessage.addrPattern()); + //println(" typetag: "+theOscMessage.typetag()); +} + +public void imu(float quant_w, float quant_x, float quant_y, float quant_z) { + //println(quant_w, quant_x, quant_y, quant_z); + quat.set(quant_w, quant_x, quant_y, quant_z); +} + +void draw() { + // black background + background(0); + + // translate everything to the middle of the viewport + pushMatrix(); + translate(width / 2, height / 2); + + // 3-step rotation from yaw/pitch/roll angles (gimbal lock!) + // ...and other weirdness I haven't figured out yet + //rotateY(-ypr[0]); + //rotateZ(-ypr[1]); + //rotateX(-ypr[2]); + + // toxiclibs direct angle/axis rotation from quaternion (NO gimbal lock!) + // (axis order [1, 3, 2] and inversion [-1, +1, +1] is a consequence of + // different coordinate system orientation assumptions between Processing + // and InvenSense DMP) + float[] axis = quat.toAxisAngle(); + rotate(axis[0], -axis[1], axis[3], axis[2]); + + // draw main body in red + fill(255, 0, 0, 200); + box(10, 10, 200); + + // draw front-facing tip in blue + fill(0, 0, 255, 200); + pushMatrix(); + translate(0, 0, -120); + rotateX(PI/2); + drawCylinder(0, 20, 20, 8); + popMatrix(); + + // draw wings and tail fin in green + fill(0, 255, 0, 200); + beginShape(TRIANGLES); + vertex(-100, 2, 30); vertex(0, 2, -80); vertex(100, 2, 30); // wing top layer + vertex(-100, -2, 30); vertex(0, -2, -80); vertex(100, -2, 30); // wing bottom layer + vertex(-2, 0, 98); vertex(-2, -30, 98); vertex(-2, 0, 70); // tail left layer + vertex( 2, 0, 98); vertex( 2, -30, 98); vertex( 2, 0, 70); // tail right layer + endShape(); + beginShape(QUADS); + vertex(-100, 2, 30); vertex(-100, -2, 30); vertex( 0, -2, -80); vertex( 0, 2, -80); + vertex( 100, 2, 30); vertex( 100, -2, 30); vertex( 0, -2, -80); vertex( 0, 2, -80); + vertex(-100, 2, 30); vertex(-100, -2, 30); vertex(100, -2, 30); vertex(100, 2, 30); + vertex(-2, 0, 98); vertex(2, 0, 98); vertex(2, -30, 98); vertex(-2, -30, 98); + vertex(-2, 0, 98); vertex(2, 0, 98); vertex(2, 0, 70); vertex(-2, 0, 70); + vertex(-2, -30, 98); vertex(2, -30, 98); vertex(2, 0, 70); vertex(-2, 0, 70); + endShape(); + + popMatrix(); +} + +void drawCylinder(float topRadius, float bottomRadius, float tall, int sides) { + float angle = 0; + float angleIncrement = TWO_PI / sides; + beginShape(QUAD_STRIP); + for (int i = 0; i < sides + 1; ++i) { + vertex(topRadius*cos(angle), 0, topRadius*sin(angle)); + vertex(bottomRadius*cos(angle), tall, bottomRadius*sin(angle)); + angle += angleIncrement; + } + endShape(); + + // If it is not a cone, draw the circular top cap + if (topRadius != 0) { + angle = 0; + beginShape(TRIANGLE_FAN); + + // Center point + vertex(0, 0, 0); + for (int i = 0; i < sides + 1; i++) { + vertex(topRadius * cos(angle), 0, topRadius * sin(angle)); + angle += angleIncrement; + } + endShape(); + } + + // If it is not a cone, draw the circular bottom cap + if (bottomRadius != 0) { + angle = 0; + beginShape(TRIANGLE_FAN); + + // Center point + vertex(0, tall, 0); + for (int i = 0; i < sides + 1; i++) { + vertex(bottomRadius * cos(angle), tall, bottomRadius * sin(angle)); + angle += angleIncrement; + } + endShape(); + } +} diff --git a/libraries/MPU6050/examples/MPU6050_DMP6_Ethernet/MPU6050_DMP6_Ethernet.ino b/libraries/MPU6050/examples/MPU6050_DMP6_Ethernet/MPU6050_DMP6_Ethernet.ino new file mode 100644 index 0000000000000000000000000000000000000000..1c1620ae7ee490507f25718f72f6aa8fb0dcad5a --- /dev/null +++ b/libraries/MPU6050/examples/MPU6050_DMP6_Ethernet/MPU6050_DMP6_Ethernet.ino @@ -0,0 +1,537 @@ +// I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class using DMP (MotionApps v2.0) over Ethernet +// 2/27/2016 by hellphoenix +// Based on I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class using DMP (MotionApps v2.0) (6/21/2012 by Jeff Rowberg <jeff@rowberg.net>) +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// 2016-02-28 - Cleaned up code to be in line with other example codes + // - Added Ethernet outputs for Quaternion, Euler, RealAccel, WorldAccel +// 2016-02-27 - Initial working code compiled +// Bugs: +// - There is still a hangup after some time, though it only occurs when you are reading data from the website. +// If you only read the data from the serial port, there are no hangups. +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ +#include <Ethernet.h> +// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files +// for both classes must be in the include path of your project +#include "I2Cdev.h" + +#include "MPU6050_6Axis_MotionApps20.h" +//#include "MPU6050.h" // not necessary if using MotionApps include file + +// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation +// is used in I2Cdev.h +#include "Wire.h" +#include "avr/wdt.h"// Watchdog library + +// class default I2C address is 0x68 +// specific I2C addresses may be passed as a parameter here +// AD0 low = 0x68 (default for SparkFun breakout and InvenSense evaluation board) +// AD0 high = 0x69 +MPU6050 mpu; +//MPU6050 mpu(0x69); // <-- use for AD0 high + +// MAC address from Ethernet shield sticker under board +byte mac[] = { + 0x90, 0xA2, 0xDA, 0x10, 0x26, 0x82 +}; +// assign an IP address for the controller: +IPAddress ip(192,168,1,50); +// the router's gateway address: +byte gateway[] = { 192, 168, 1, 1 }; +// the subnet: +byte subnet[] = { 255, 255, 0, 0 }; + +// Initialize the Ethernet server library +// with the IP address and port you want to use +// (port 80 is default for HTTP): +EthernetServer server(80); + +String HTTP_req; // stores the HTTP request + +/* ========================================================================= + NOTE: In addition to connection 3.3v, GND, SDA, and SCL, this sketch + depends on the MPU-6050's INT pin being connected to the Arduino's + external interrupt #0 pin. On the Arduino Uno and Mega 2560, this is + digital I/O pin 2. + * ========================================================================= */ + +/* ========================================================================= + NOTE: Arduino v1.0.1 with the Leonardo board generates a compile error + when using Serial.write(buf, len). The Teapot output uses this method. + The solution requires a modification to the Arduino USBAPI.h file, which + is fortunately simple, but annoying. This will be fixed in the next IDE + release. For more info, see these links: + + http://arduino.cc/forum/index.php/topic,109987.0.html + http://code.google.com/p/arduino/issues/detail?id=958 + * ========================================================================= */ + + +// uncomment "OUTPUT_READABLE_QUATERNION" if you want to see the actual +// quaternion components in a [w, x, y, z] format (not best for parsing +// on a remote host such as Processing or something though) +//#define OUTPUT_READABLE_QUATERNION + +// uncomment "OUTPUT_READABLE_EULER" if you want to see Euler angles +// (in degrees) calculated from the quaternions coming from the FIFO. +// Note that Euler angles suffer from gimbal lock (for more info, see +// http://en.wikipedia.org/wiki/Gimbal_lock) +//#define OUTPUT_READABLE_EULER + +// uncomment "OUTPUT_READABLE_YAWPITCHROLL" if you want to see the yaw/ +// pitch/roll angles (in degrees) calculated from the quaternions coming +// from the FIFO. Note this also requires gravity vector calculations. +// Also note that yaw/pitch/roll angles suffer from gimbal lock (for +// more info, see: http://en.wikipedia.org/wiki/Gimbal_lock) +#define OUTPUT_READABLE_YAWPITCHROLL + +// uncomment "OUTPUT_READABLE_REALACCEL" if you want to see acceleration +// components with gravity removed. This acceleration reference frame is +// not compensated for orientation, so +X is always +X according to the +// sensor, just without the effects of gravity. If you want acceleration +// compensated for orientation, us OUTPUT_READABLE_WORLDACCEL instead. +//#define OUTPUT_READABLE_REALACCEL + +// uncomment "OUTPUT_READABLE_WORLDACCEL" if you want to see acceleration +// components with gravity removed and adjusted for the world frame of +// reference (yaw is relative to initial orientation, since no magnetometer +// is present in this case). Could be quite handy in some cases. +//#define OUTPUT_READABLE_WORLDACCEL + +// uncomment "OUTPUT_TEAPOT" if you want output that matches the +// format used for the InvenSense teapot demo +//#define OUTPUT_TEAPOT + +#define INTERRUPT_PIN 2 // use pin 2 on Arduino Uno & most boards +#define LED_PIN 13 // (Arduino is 13, Teensy is 11, Teensy++ is 6) +bool blinkState = false; + +// MPU control/status vars +bool dmpReady = false; // set true if DMP init was successful +uint8_t mpuIntStatus; // holds actual interrupt status byte from MPU +uint8_t devStatus; // return status after each device operation (0 = success, !0 = error) +uint16_t packetSize; // expected DMP packet size (default is 42 bytes) +uint16_t fifoCount; // count of all bytes currently in FIFO +uint8_t fifoBuffer[64]; // FIFO storage buffer + +// orientation/motion vars +Quaternion q; // [w, x, y, z] quaternion container +VectorInt16 aa; // [x, y, z] accel sensor measurements +VectorInt16 aaReal; // [x, y, z] gravity-free accel sensor measurements +VectorInt16 aaWorld; // [x, y, z] world-frame accel sensor measurements +VectorFloat gravity; // [x, y, z] gravity vector +float euler[3]; // [psi, theta, phi] Euler angle container +float ypr[3]; // [yaw, pitch, roll] yaw/pitch/roll container and gravity vector + +// packet structure for InvenSense teapot demo +uint8_t teapotPacket[14] = { '$', 0x02, 0,0, 0,0, 0,0, 0,0, 0x00, 0x00, '\r', '\n' }; + + + +// ================================================================ +// === INTERRUPT DETECTION ROUTINE === +// ================================================================ + +volatile bool mpuInterrupt = false; // indicates whether MPU interrupt pin has gone high +void dmpDataReady() { + mpuInterrupt = true; +} +// ================================================================ +// === INITIAL SETUP === +// ================================================================ + +void setup() { + wdt_enable(WDTO_1S); //Watchdog enable. + //WDTO_1S sets the watchdog timer to 1 second. The time set here is approximate. + // You can find more time settings at http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html . + + // join I2C bus (I2Cdev library doesn't do this automatically) + #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + Wire.begin(); + Wire.setClock(400000); // 400kHz I2C clock (200kHz if CPU is 8MHz). Comment this line if having compilation difficulties + #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE + Fastwire::setup(400, true); + #endif + + // initialize serial communication + // (115200 chosen because it is required for Teapot Demo output, but it's + // really up to you depending on your project) + Serial.begin(115200); + // NOTE: 8MHz or slower host processors, like the Teensy @ 3.3V or Arduino + // Pro Mini running at 3.3V, cannot handle this baud rate reliably due to + // the baud timing being too misaligned with processor ticks. You must use + // 38400 or slower in these cases, or use some kind of external separate + // crystal solution for the UART timer. + + Ethernet.begin(mac, ip, gateway, subnet); + server.begin(); + Serial.print("server is at "); + Serial.println(Ethernet.localIP()); + while (!Serial); // wait for Leonardo enumeration, others continue immediately + + // initialize device + Serial.println(F("Initializing I2C devices...")); + mpu.initialize(); + pinMode(INTERRUPT_PIN, INPUT); + + // verify connection + Serial.println(F("Testing device connections...")); + Serial.println(mpu.testConnection() ? F("MPU6050 connection successful") : F("MPU6050 connection failed")); + + // load and configure the DMP + Serial.println(F("Initializing DMP...")); + devStatus = mpu.dmpInitialize(); + + // supply your own gyro offsets here, scaled for min sensitivity + mpu.setXGyroOffset(220); + mpu.setYGyroOffset(76); + mpu.setZGyroOffset(-85); + mpu.setZAccelOffset(1788); // 1688 factory default for my test chip + + // make sure it worked (returns 0 if so) + if (devStatus == 0) { + // turn on the DMP, now that it's ready + Serial.println(F("Enabling DMP...")); + mpu.setDMPEnabled(true); + + // enable Arduino interrupt detection + Serial.println(F("Enabling interrupt detection (Arduino external interrupt 0)...")); + attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), dmpDataReady, RISING); + mpuIntStatus = mpu.getIntStatus(); + + // set our DMP Ready flag so the main loop() function knows it's okay to use it + Serial.println(F("DMP ready! Waiting for first interrupt...")); + dmpReady = true; + + // get expected DMP packet size for later comparison + packetSize = mpu.dmpGetFIFOPacketSize(); + } else { + // ERROR! + // 1 = initial memory load failed + // 2 = DMP configuration updates failed + // (if it's going to break, usually the code will be 1) + Serial.print(F("DMP Initialization failed (code ")); + Serial.print(devStatus); + Serial.println(F(")")); + return; + } + + // configure LED for output + pinMode(LED_PIN, OUTPUT); +} + + + +// ================================================================ +// === MAIN PROGRAM LOOP === +// ================================================================ + +void loop() { + // if programming failed, don't try to do anything + if (!dmpReady) return; + wdt_reset();//Resets the watchdog timer. If the timer is not reset, and the timer expires, a watchdog-initiated device reset will occur. + // wait for MPU interrupt or extra packet(s) available + while (!mpuInterrupt && fifoCount < packetSize) { + // other program behavior stuff here + // . + // . + // if you are really paranoid you can frequently test in between other + // stuff to see if mpuInterrupt is true, and if so, "break;" from the + // while() loop to immediately process the MPU data + // . + // . + // . + } + + // reset interrupt flag and get INT_STATUS byte + mpuInterrupt = false; + mpuIntStatus = mpu.getIntStatus(); + + // get current FIFO count + fifoCount = mpu.getFIFOCount(); + + // check for overflow (this should never happen unless our code is too inefficient) + if ((mpuIntStatus & 0x10) || fifoCount == 1024) { + // reset so we can continue cleanly + mpu.resetFIFO(); + Serial.println(F("FIFO overflow!")); + + // otherwise, check for DMP data ready interrupt (this should happen frequently) + } else if (mpuIntStatus & 0x02) { + // wait for correct available data length, should be a VERY short wait + while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount(); + + // read a packet from FIFO, then clear the buffer + mpu.getFIFOBytes(fifoBuffer, packetSize); + //mpu.resetFIFO(); + + // track FIFO count here in case there is > 1 packet available + // (this lets us immediately read more without waiting for an interrupt) + fifoCount -= packetSize; + + #ifdef OUTPUT_READABLE_QUATERNION + // display quaternion values in easy matrix form: w x y z + mpu.dmpGetQuaternion(&q, fifoBuffer); + Serial.print("quat\t"); + Serial.print(q.w); + Serial.print("\t"); + Serial.print(q.x); + Serial.print("\t"); + Serial.print(q.y); + Serial.print("\t"); + Serial.println(q.z); + #endif + #ifdef OUTPUT_READABLE_EULER + // display Euler angles in degrees + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetEuler(euler, &q); + Serial.print("euler\t"); + Serial.print(euler[0] * 180/M_PI); + Serial.print("\t"); + Serial.print(euler[1] * 180/M_PI); + Serial.print("\t"); + Serial.println(euler[2] * 180/M_PI); + #endif + #ifdef OUTPUT_READABLE_YAWPITCHROLL + // display Euler angles in degrees + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetYawPitchRoll(ypr, &q, &gravity); + Serial.print("ypr\t"); + Serial.print(ypr[0] * 180/M_PI); + Serial.print("\t"); + Serial.print(ypr[1] * 180/M_PI); + Serial.print("\t"); + Serial.println(ypr[2] * 180/M_PI); + #endif + #ifdef OUTPUT_READABLE_REALACCEL + // display real acceleration, adjusted to remove gravity + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetAccel(&aa, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity); + Serial.print("areal\t"); + Serial.print(aaReal.x); + Serial.print("\t"); + Serial.print(aaReal.y); + Serial.print("\t"); + Serial.println(aaReal.z); + #endif + #ifdef OUTPUT_READABLE_WORLDACCEL + // display initial world-frame acceleration, adjusted to remove gravity + // and rotated based on known orientation from quaternion + mpu.dmpGetQuaternion(&q, fifoBuffer); + mpu.dmpGetAccel(&aa, fifoBuffer); + mpu.dmpGetGravity(&gravity, &q); + mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity); + mpu.dmpGetLinearAccelInWorld(&aaWorld, &aaReal, &q); + Serial.print("aworld\t"); + Serial.print(aaWorld.x); + Serial.print("\t"); + Serial.print(aaWorld.y); + Serial.print("\t"); + Serial.println(aaWorld.z); + #endif + #ifdef OUTPUT_TEAPOT + // display quaternion values in InvenSense Teapot demo format: + teapotPacket[2] = fifoBuffer[0]; + teapotPacket[3] = fifoBuffer[1]; + teapotPacket[4] = fifoBuffer[4]; + teapotPacket[5] = fifoBuffer[5]; + teapotPacket[6] = fifoBuffer[8]; + teapotPacket[7] = fifoBuffer[9]; + teapotPacket[8] = fifoBuffer[12]; + teapotPacket[9] = fifoBuffer[13]; + Serial.write(teapotPacket, 14); + teapotPacket[11]++; // packetCount, loops at 0xFF on purpose + #endif + serversend(); + // blink LED to indicate activity + blinkState = !blinkState; + digitalWrite(LED_PIN, blinkState); + } +} + +void serversend(){ + + EthernetClient client = server.available(); // try to get client + + if (client) { // got client? + //boolean currentLineIsBlank = true; + while (client.connected()) { + if (client.available()) { // client data available to read + char c = client.read(); // read 1 byte (character) from client + HTTP_req += c; // save the HTTP request 1 char at a time + // last line of client request is blank and ends with \n + // respond to client only after last line received + if (c == '\n') { + // send a standard http response header + client.println("HTTP/1.1 200 OK"); + client.println("Content-Type: text/html"); + //client.println("Connection: keep-alive"); + client.println(); + // AJAX request for switch state + if (HTTP_req.indexOf("ajax_switch") > -1) { + // read switch state and analog input + GetAjaxData(client); + } + else { // HTTP request for web page + // send web page - contains JavaScript with AJAX calls + client.println("<!DOCTYPE html>"); + client.println("<html>"); + client.println("<head>"); + client.println("<title>Arduino Web Page</title>"); + client.println("<script>"); + client.println("function GetAjaxData() {"); + client.println( + "nocache = \"&nocache=\" + Math.random() * 1000000;"); + client.println("var request = new XMLHttpRequest();"); + client.println("request.onreadystatechange = function() {"); + client.println("if (this.readyState == 4) {"); + client.println("if (this.status == 200) {"); + client.println("if (this.responseText != null) {"); + client.println("document.getElementById(\"sw_an_data\")\ +.innerHTML = this.responseText;"); + client.println("}}}}"); + client.println( + "request.open(\"GET\", \"ajax_switch\" + nocache, true);"); + client.println("request.send(null);"); + client.println("setTimeout('GetAjaxData()', 10);"); + client.println("}"); + client.println("</script>"); + client.println("</head>"); + client.println("<body onload=\"GetAjaxData()\">"); + client.println("<h1>MPU6050 Output</h1>"); + client.println("<div id=\"sw_an_data\">"); + client.println("</div>"); + client.println("</body>"); + client.println("</html>"); + } + // display received HTTP request on serial port + Serial.print(HTTP_req); + HTTP_req = ""; // finished with request, empty string + client.stop(); // close the connection + break; + } + } + } + } +} + +void GetAjaxData(EthernetClient cl) +{ + #ifdef OUTPUT_READABLE_QUATERNION + // display quaternion values in easy matrix form: w x y z + cl.print("Quaternion Values:\t"); + cl.print("<p>w:"); + cl.print(q.w); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>x:"); + cl.print(q.x); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>y:"); + cl.print(q.y); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>z:"); + cl.print(q.z); + cl.print("\t"); + cl.println("</p>"); + #endif + #ifdef OUTPUT_READABLE_EULER + // display Euler angles in degrees + cl.print("Euler Angles:\t"); + cl.print("<p>Yaw:"); + cl.print(euler[0] * 180/M_PI); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>Pitch:"); + cl.print(euler[2] * 180/M_PI); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>Roll:"); + cl.print(euler[1] * 180/M_PI); + cl.print("\t"); + cl.println("</p>"); + #endif + #ifdef OUTPUT_READABLE_YAWPITCHROLL + // display Yaw/Pitch/Roll values in degrees + cl.print("Yaw, Pitch, and Roll:\t"); + cl.print("<p>Yaw:"); + cl.print(ypr[0] * 180/M_PI); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>Pitch:"); + cl.print(ypr[2] * 180/M_PI); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>Roll:"); + cl.print(ypr[1] * 180/M_PI); + cl.print("\t"); + cl.println("</p>"); + #endif + #ifdef OUTPUT_READABLE_REALACCEL + // display real acceleration, adjusted to remove gravity + cl.print("Real Accel:\t"); + cl.print("<p>Yaw:"); + cl.print(aaReal.x); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>Pitch:"); + cl.print(aaReal.z); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>Roll:"); + cl.print(aaReal.y); + cl.print("\t"); + cl.println("</p>"); + #endif + #ifdef OUTPUT_READABLE_WORLDACCEL + // display initial world-frame acceleration, adjusted to remove gravity + // and rotated based on known orientation from quaternion + cl.print("World Accel:\t"); + cl.print("<p>Yaw:"); + cl.print(aaWorld.x); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>Pitch:"); + cl.print(aaWorld.z); + cl.print("\t"); + cl.println("</p>"); + cl.print("<p>Roll:"); + cl.print(aaWorld.y); + cl.print("\t"); + cl.println("</p>"); + #endif + #ifdef OUTPUT_TEAPOT + cl.print("<p>teapotpacket:"); + cl.write(teapotPacket, 14); + cl.print("\t"); + cl.println("</p>"); + #endif +} diff --git a/libraries/MPU6050/examples/MPU6050_raw/MPU6050_raw.ino b/libraries/MPU6050/examples/MPU6050_raw/MPU6050_raw.ino new file mode 100644 index 0000000000000000000000000000000000000000..9d5be00d56625a109fb14ce25090c30188451a00 --- /dev/null +++ b/libraries/MPU6050/examples/MPU6050_raw/MPU6050_raw.ino @@ -0,0 +1,151 @@ +// I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class +// 10/7/2011 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// 2013-05-08 - added multiple output formats +// - added seamless Fastwire support +// 2011-10-07 - initial release + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2011 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files +// for both classes must be in the include path of your project +#include "I2Cdev.h" +#include "MPU6050.h" + +// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation +// is used in I2Cdev.h +#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + #include "Wire.h" +#endif + +// class default I2C address is 0x68 +// specific I2C addresses may be passed as a parameter here +// AD0 low = 0x68 (default for InvenSense evaluation board) +// AD0 high = 0x69 +MPU6050 accelgyro; +//MPU6050 accelgyro(0x69); // <-- use for AD0 high + +int16_t ax, ay, az; +int16_t gx, gy, gz; + + + +// uncomment "OUTPUT_READABLE_ACCELGYRO" if you want to see a tab-separated +// list of the accel X/Y/Z and then gyro X/Y/Z values in decimal. Easy to read, +// not so easy to parse, and slow(er) over UART. +#define OUTPUT_READABLE_ACCELGYRO + +// uncomment "OUTPUT_BINARY_ACCELGYRO" to send all 6 axes of data as 16-bit +// binary, one right after the other. This is very fast (as fast as possible +// without compression or data loss), and easy to parse, but impossible to read +// for a human. +//#define OUTPUT_BINARY_ACCELGYRO + + +#define LED_PIN 13 +bool blinkState = false; + +void setup() { + // join I2C bus (I2Cdev library doesn't do this automatically) + #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE + Wire.begin(); + #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE + Fastwire::setup(400, true); + #endif + + // initialize serial communication + // (38400 chosen because it works as well at 8MHz as it does at 16MHz, but + // it's really up to you depending on your project) + Serial.begin(38400); + + // initialize device + Serial.println("Initializing I2C devices..."); + accelgyro.initialize(); + + // verify connection + Serial.println("Testing device connections..."); + Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed"); + + // use the code below to change accel/gyro offset values + /* + Serial.println("Updating internal sensor offsets..."); + // -76 -2359 1688 0 0 0 + Serial.print(accelgyro.getXAccelOffset()); Serial.print("\t"); // -76 + Serial.print(accelgyro.getYAccelOffset()); Serial.print("\t"); // -2359 + Serial.print(accelgyro.getZAccelOffset()); Serial.print("\t"); // 1688 + Serial.print(accelgyro.getXGyroOffset()); Serial.print("\t"); // 0 + Serial.print(accelgyro.getYGyroOffset()); Serial.print("\t"); // 0 + Serial.print(accelgyro.getZGyroOffset()); Serial.print("\t"); // 0 + Serial.print("\n"); + accelgyro.setXGyroOffset(220); + accelgyro.setYGyroOffset(76); + accelgyro.setZGyroOffset(-85); + Serial.print(accelgyro.getXAccelOffset()); Serial.print("\t"); // -76 + Serial.print(accelgyro.getYAccelOffset()); Serial.print("\t"); // -2359 + Serial.print(accelgyro.getZAccelOffset()); Serial.print("\t"); // 1688 + Serial.print(accelgyro.getXGyroOffset()); Serial.print("\t"); // 0 + Serial.print(accelgyro.getYGyroOffset()); Serial.print("\t"); // 0 + Serial.print(accelgyro.getZGyroOffset()); Serial.print("\t"); // 0 + Serial.print("\n"); + */ + + // configure Arduino LED pin for output + pinMode(LED_PIN, OUTPUT); +} + +void loop() { + // read raw accel/gyro measurements from device + accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); + + // these methods (and a few others) are also available + //accelgyro.getAcceleration(&ax, &ay, &az); + //accelgyro.getRotation(&gx, &gy, &gz); + + #ifdef OUTPUT_READABLE_ACCELGYRO + // display tab-separated accel/gyro x/y/z values + Serial.print("a/g:\t"); + Serial.print(ax); Serial.print("\t"); + Serial.print(ay); Serial.print("\t"); + Serial.print(az); Serial.print("\t"); + Serial.print(gx); Serial.print("\t"); + Serial.print(gy); Serial.print("\t"); + Serial.println(gz); + #endif + + #ifdef OUTPUT_BINARY_ACCELGYRO + Serial.write((uint8_t)(ax >> 8)); Serial.write((uint8_t)(ax & 0xFF)); + Serial.write((uint8_t)(ay >> 8)); Serial.write((uint8_t)(ay & 0xFF)); + Serial.write((uint8_t)(az >> 8)); Serial.write((uint8_t)(az & 0xFF)); + Serial.write((uint8_t)(gx >> 8)); Serial.write((uint8_t)(gx & 0xFF)); + Serial.write((uint8_t)(gy >> 8)); Serial.write((uint8_t)(gy & 0xFF)); + Serial.write((uint8_t)(gz >> 8)); Serial.write((uint8_t)(gz & 0xFF)); + #endif + + // blink LED to indicate activity + blinkState = !blinkState; + digitalWrite(LED_PIN, blinkState); +} diff --git a/libraries/MPU6050/helper_3dmath.h b/libraries/MPU6050/helper_3dmath.h new file mode 100644 index 0000000000000000000000000000000000000000..9ed260ec6d07397779c508cf470df17e5a8efeba --- /dev/null +++ b/libraries/MPU6050/helper_3dmath.h @@ -0,0 +1,216 @@ +// I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class, 3D math helper +// 6/5/2012 by Jeff Rowberg <jeff@rowberg.net> +// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib +// +// Changelog: +// 2012-06-05 - add 3D math helper file to DMP6 example sketch + +/* ============================================ +I2Cdev device library code is placed under the MIT license +Copyright (c) 2012 Jeff Rowberg + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +=============================================== +*/ + +#ifndef _HELPER_3DMATH_H_ +#define _HELPER_3DMATH_H_ + +class Quaternion { + public: + float w; + float x; + float y; + float z; + + Quaternion() { + w = 1.0f; + x = 0.0f; + y = 0.0f; + z = 0.0f; + } + + Quaternion(float nw, float nx, float ny, float nz) { + w = nw; + x = nx; + y = ny; + z = nz; + } + + Quaternion getProduct(Quaternion q) { + // Quaternion multiplication is defined by: + // (Q1 * Q2).w = (w1w2 - x1x2 - y1y2 - z1z2) + // (Q1 * Q2).x = (w1x2 + x1w2 + y1z2 - z1y2) + // (Q1 * Q2).y = (w1y2 - x1z2 + y1w2 + z1x2) + // (Q1 * Q2).z = (w1z2 + x1y2 - y1x2 + z1w2 + return Quaternion( + w*q.w - x*q.x - y*q.y - z*q.z, // new w + w*q.x + x*q.w + y*q.z - z*q.y, // new x + w*q.y - x*q.z + y*q.w + z*q.x, // new y + w*q.z + x*q.y - y*q.x + z*q.w); // new z + } + + Quaternion getConjugate() { + return Quaternion(w, -x, -y, -z); + } + + float getMagnitude() { + return sqrt(w*w + x*x + y*y + z*z); + } + + void normalize() { + float m = getMagnitude(); + w /= m; + x /= m; + y /= m; + z /= m; + } + + Quaternion getNormalized() { + Quaternion r(w, x, y, z); + r.normalize(); + return r; + } +}; + +class VectorInt16 { + public: + int16_t x; + int16_t y; + int16_t z; + + VectorInt16() { + x = 0; + y = 0; + z = 0; + } + + VectorInt16(int16_t nx, int16_t ny, int16_t nz) { + x = nx; + y = ny; + z = nz; + } + + float getMagnitude() { + return sqrt(x*x + y*y + z*z); + } + + void normalize() { + float m = getMagnitude(); + x /= m; + y /= m; + z /= m; + } + + VectorInt16 getNormalized() { + VectorInt16 r(x, y, z); + r.normalize(); + return r; + } + + void rotate(Quaternion *q) { + // http://www.cprogramming.com/tutorial/3d/quaternions.html + // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/transforms/index.htm + // http://content.gpwiki.org/index.php/OpenGL:Tutorials:Using_Quaternions_to_represent_rotation + // ^ or: http://webcache.googleusercontent.com/search?q=cache:xgJAp3bDNhQJ:content.gpwiki.org/index.php/OpenGL:Tutorials:Using_Quaternions_to_represent_rotation&hl=en&gl=us&strip=1 + + // P_out = q * P_in * conj(q) + // - P_out is the output vector + // - q is the orientation quaternion + // - P_in is the input vector (a*aReal) + // - conj(q) is the conjugate of the orientation quaternion (q=[w,x,y,z], q*=[w,-x,-y,-z]) + Quaternion p(0, x, y, z); + + // quaternion multiplication: q * p, stored back in p + p = q -> getProduct(p); + + // quaternion multiplication: p * conj(q), stored back in p + p = p.getProduct(q -> getConjugate()); + + // p quaternion is now [0, x', y', z'] + x = p.x; + y = p.y; + z = p.z; + } + + VectorInt16 getRotated(Quaternion *q) { + VectorInt16 r(x, y, z); + r.rotate(q); + return r; + } +}; + +class VectorFloat { + public: + float x; + float y; + float z; + + VectorFloat() { + x = 0; + y = 0; + z = 0; + } + + VectorFloat(float nx, float ny, float nz) { + x = nx; + y = ny; + z = nz; + } + + float getMagnitude() { + return sqrt(x*x + y*y + z*z); + } + + void normalize() { + float m = getMagnitude(); + x /= m; + y /= m; + z /= m; + } + + VectorFloat getNormalized() { + VectorFloat r(x, y, z); + r.normalize(); + return r; + } + + void rotate(Quaternion *q) { + Quaternion p(0, x, y, z); + + // quaternion multiplication: q * p, stored back in p + p = q -> getProduct(p); + + // quaternion multiplication: p * conj(q), stored back in p + p = p.getProduct(q -> getConjugate()); + + // p quaternion is now [0, x', y', z'] + x = p.x; + y = p.y; + z = p.z; + } + + VectorFloat getRotated(Quaternion *q) { + VectorFloat r(x, y, z); + r.rotate(q); + return r; + } +}; + +#endif /* _HELPER_3DMATH_H_ */ \ No newline at end of file diff --git a/libraries/MPU6050/library.json b/libraries/MPU6050/library.json new file mode 100644 index 0000000000000000000000000000000000000000..174b4529f1e6c3f7af84d92204455eed73f87186 --- /dev/null +++ b/libraries/MPU6050/library.json @@ -0,0 +1,18 @@ +{ + "name": "I2Cdevlib-MPU6050", + "keywords": "gyroscope, accelerometer, sensor, i2cdevlib, i2c", + "description": "The MPU6050 combines a 3-axis gyroscope and a 3-axis accelerometer on the same silicon die together with an onboard Digital Motion Processor(DMP) which processes complex 6-axis MotionFusion algorithms", + "include": "Arduino/MPU6050", + "repository": + { + "type": "git", + "url": "https://github.com/jrowberg/i2cdevlib.git" + }, + "dependencies": + { + "name": "I2Cdevlib-Core", + "frameworks": "arduino" + }, + "frameworks": "arduino", + "platforms": "atmelavr" +}