First Commit

This commit is contained in:
MindCreeper03
2025-02-27 19:31:50 +01:00
parent bcbb6aff9a
commit e490df1715
2470 changed files with 1479965 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
/*
Copyright (c) 2012, 2016 Oracle and/or its affiliates. All rights reserved.
This program 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; version 2 of the License.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
MySQL_Connection.cpp - Library for communicating with a MySQL Server over
Ethernet. (formerly mysql.cpp)
Change History:
Version 1.0.0a Created by Dr. Charles A. Bell, April 2012.
Version 1.0.0b Updated by Dr. Charles A. Bell, October 2013.
Version 1.0.1b Updated by Dr. Charles A. Bell, February 2014.
Version 1.0.2b Updated by Dr. Charles A. Bell, April 2014.
Version 1.0.3rc Updated by Dr. Charles A. Bell, March 2015.
Version 1.0.4ga Updated by Dr. Charles A. Bell, July 2015.
Version 1.1.0a Created by Dr. Charles A. Bell, January 2016.
Version 1.1.1a Created by Dr. Charles A. Bell, January 2016.
Version 1.1.2b Created by Dr. Charles A. Bell, November 2016.
Version 1.2.0 Created by Dr. Charles A. Bell, March 2020.
*/
#include <Arduino.h>
#include <MySQL_Connection.h>
#include <MySQL_Encrypt_Sha1.h>
#define MAX_CONNECT_ATTEMPTS 3
#define CONNECT_DELAY_MS 500
#define SUCCESS 1
const char CONNECTED[] PROGMEM = "Connected to server version ";
const char DISCONNECTED[] PROGMEM = "Disconnected.";
/*
connect - Connect to a MySQL server.
This method is used to connect to a MySQL server. It will attempt to
connect to the server as a client retrying up to MAX_CONNECT_ATTEMPTS.
This permits the possibility of longer than normal network lag times
for wireless networks. You can adjust MAX_CONNECT_ATTEMPTS to suit
your environment.
server[in] IP address of the server as IPAddress type
port[in] port number of the server
user[in] user name
password[in] (optional) user password
db[in] (optional) default database
Returns boolean - True = connection succeeded
*/
boolean MySQL_Connection::connect(IPAddress server, int port, char *user,
char *password, char *db)
{
int connected = 0;
int retries = MAX_CONNECT_ATTEMPTS;
// Retry up to MAX_CONNECT_ATTEMPTS times.
while (retries--)
{
Serial.println("...trying...");
connected = client->connect(server, port);
if (connected != SUCCESS) {
Serial.print("...got: ");
Serial.print(connected);
Serial.println(" retrying...");
delay(CONNECT_DELAY_MS);
} else {
break;
}
}
if (connected != SUCCESS)
return false;
read_packet();
parse_handshake_packet();
send_authentication_packet(user, password, db);
read_packet();
if (get_packet_type() != MYSQL_OK_PACKET) {
parse_error_packet();
return false;
}
show_error(CONNECTED);
Serial.println(server_version);
free(server_version); // don't need it anymore
return true;
}
/*
close - cancel the connection
This method closes the connection to the server and frees up any memory
used in the buffer.
*/
void MySQL_Connection::close()
{
if (connected())
{
client->flush();
client->stop();
show_error(DISCONNECTED, true);
}
}