Dependents: MySQLClientExample MySQLClientExampleMA
Revision 5:91c24a06d12c, committed 2010-08-05
- Comitter:
- donatien
- Date:
- Thu Aug 05 15:16:36 2010 +0000
- Parent:
- 4:346513288864
- Commit message:
Changed in this revision
diff -r 346513288864 -r 91c24a06d12c LPC1768/MySQLClient.ar Binary file LPC1768/MySQLClient.ar has changed
diff -r 346513288864 -r 91c24a06d12c LPC1768/dbg/dbg.h --- a/LPC1768/dbg/dbg.h Mon Jul 19 16:22:25 2010 +0000 +++ b/LPC1768/dbg/dbg.h Thu Aug 05 15:16:36 2010 +0000 @@ -21,6 +21,10 @@ THE SOFTWARE. */ +/** \file +Debugging helpers header file +*/ + //#ifdef DBG_H //#define DBG_H @@ -28,6 +32,11 @@ #define __DEBUG #endif +/*! + \def __DEBUG + To define to enable debugging in one file +*/ + #ifdef __DEBUG #ifndef __DEBUGSTREAM @@ -47,8 +56,15 @@ #undef DBG #undef DBG_END #undef BREAK + +///Debug output (if enabled), same syntax as printf, with heading info #define DBG(...) do{ DebugStream::debug("[%s:%s@%d] ", __FILE__, __FUNCTION__, __LINE__); DebugStream::debug(__VA_ARGS__); } while(0); + +///Debug output (if enabled), same syntax as printf, no heading info +#define DBGL(...) do{ DebugStream::debug(__VA_ARGS__); } while(0); #define DBG_END DebugStream::release + +///Break point usin serial debug interface (if debug enbaled) #define BREAK() DebugStream::breakPoint(__FILE__, __LINE__) #endif
diff -r 346513288864 -r 91c24a06d12c LPC1768/services/mysql/MySQLClient.h --- a/LPC1768/services/mysql/MySQLClient.h Mon Jul 19 16:22:25 2010 +0000 +++ b/LPC1768/services/mysql/MySQLClient.h Thu Aug 05 15:16:36 2010 +0000 @@ -21,10 +21,15 @@ THE SOFTWARE. */ +/** \file +MySQL Client header file +*/ + #ifndef MYSQL_CLIENT_H #define MYSQL_CLIENT_H -#include "if/net/net.h" +#include "core/net.h" +#include "core/netservice.h" #include "api/TCPSocket.h" #include "api/DNSRequest.h" #include "mbed.h" @@ -37,28 +42,55 @@ typedef unsigned char byte; +///MySQL client results enum MySQLResult { - MYSQL_OK, - MYSQL_PROCESSING, - MYSQL_PRTCL, - MYSQL_SETUP, //Not properly configured - MYSQL_DNS, //Could not resolve name - MYSQL_AUTHFAILED, //Auth failure - MYSQL_READY, //Ready to send commands - MYSQL_SQL, //SQL Error - MYSQL_TIMEOUT, //Connection timeout - MYSQL_CONN //Connection error + MYSQL_OK, ///<Success + MYSQL_PROCESSING, ///<Processing + MYSQL_PRTCL, ///<Protocol error + MYSQL_SETUP, ///<Not properly configured + MYSQL_DNS, ///<Could not resolve name + MYSQL_AUTHFAILED, ///<Auth failure + MYSQL_READY, ///<Ready to send commands + MYSQL_SQL, ///<SQL Error + MYSQL_TIMEOUT, ///<Connection timeout + MYSQL_CONN ///<Connection error }; +///A MySQL Client +/** +This MySQL client implements a limited subset of the MySQL internal client/server protocol (including authentication), for server versions 4.1 and newer. +*/ class MySQLClient : protected NetService { public: + ///Instantiates the MySQL client MySQLClient(); virtual ~MySQLClient(); //High Level setup functions + + ///Opens a connection to a server + /** + Opens a connection to the server host using the provided username, password passowrd and selecting database + On completion of this call (and any further one), the callback set in parameter is fired with the result of that command in parameter + @param host : server + @param user : username + @param db : database to use + @param pMethod : callback to call on each request completion + */ MySQLResult open(Host& host, const string& user, const string& password, const string& db, void (*pMethod)(MySQLResult)); //Non blocking + + ///Opens a connection to a server + /** + Opens a connection to the server host using the provided username, password passowrd and selecting database + On completion of this call (and any further one), the callback set in parameter is fired with the result of that command in parameter + @param host : server + @param user : username + @param db : database to use + @param pItem : callback's class instance + @param pMethod : callback's method to call on each request completion + */ template<class T> MySQLResult open(Host& host, const string& user, const string& password, const string& db, T* pItem, void (T::*pMethod)(MySQLResult)) //Non blocking { @@ -67,8 +99,17 @@ return MYSQL_PROCESSING; } + + ///Executes an SQL command + /** + Executes an SQL request on the SQL server + This is a non-blocking function + On completion, the callback set in the open function is fired with the result of the command in parameter + @param sqlCommand SQL request to execute + */ MySQLResult sql(string& sqlCommand); + ///Closes the connection to the server MySQLResult exit(); void setOnResult( void (*pMethod)(MySQLResult) ); @@ -81,6 +122,10 @@ m_pCbMeth = (void (CDummy::*)(MySQLResult)) pMethod; } + ///Setups timeout + /** + @param ms : time of connection inactivity in ms after which the request should timeout + */ void setTimeout(int ms); virtual void poll(); //Called by NetServices
diff -r 346513288864 -r 91c24a06d12c LPC1768/services/mysql/sha1.h --- a/LPC1768/services/mysql/sha1.h Mon Jul 19 16:22:25 2010 +0000 +++ b/LPC1768/services/mysql/sha1.h Thu Aug 05 15:16:36 2010 +0000 @@ -1,4 +1,4 @@ -/** +/* * \file sha1.h * * Copyright (C) 2006-2010, Paul Bakker <polarssl_maintainer at polarssl.org> @@ -21,7 +21,7 @@ #ifndef POLARSSL_SHA1_H #define POLARSSL_SHA1_H -/** +/* * \brief SHA-1 context structure */ typedef struct @@ -39,14 +39,14 @@ extern "C" { #endif -/** +/* * \brief SHA-1 context setup * * \param ctx context to be initialized */ void sha1_starts( sha1_context *ctx ); -/** +/* * \brief SHA-1 process buffer * * \param ctx SHA-1 context @@ -55,7 +55,7 @@ */ void sha1_update( sha1_context *ctx, const unsigned char *input, int ilen ); -/** +/* * \brief SHA-1 final digest * * \param ctx SHA-1 context @@ -63,7 +63,7 @@ */ void sha1_finish( sha1_context *ctx, unsigned char output[20] ); -/** +/* * \brief Output = SHA-1( input buffer ) * * \param input buffer holding the data @@ -73,7 +73,7 @@ void sha1( const unsigned char *input, int ilen, unsigned char output[20] ); #if 0 //No need for that -/** +/* * \brief Output = SHA-1( file contents ) * * \param path input file name @@ -85,7 +85,7 @@ int sha1_file( const char *path, unsigned char output[20] ); #endif -/** +/* * \brief SHA-1 HMAC context setup * * \param ctx HMAC context to be initialized @@ -94,7 +94,7 @@ */ void sha1_hmac_starts( sha1_context *ctx, const unsigned char *key, int keylen ); -/** +/* * \brief SHA-1 HMAC process buffer * * \param ctx HMAC context @@ -103,7 +103,7 @@ */ void sha1_hmac_update( sha1_context *ctx, const unsigned char *input, int ilen ); -/** +/* * \brief SHA-1 HMAC final digest * * \param ctx HMAC context @@ -111,14 +111,14 @@ */ void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] ); -/** +/* * \brief SHA-1 HMAC context reset * * \param ctx HMAC context to be reset */ void sha1_hmac_reset( sha1_context *ctx ); -/** +/* * \brief Output = HMAC-SHA-1( hmac key, input buffer ) * * \param key HMAC secret key @@ -131,7 +131,7 @@ const unsigned char *input, int ilen, unsigned char output[20] ); -/** +/* * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed
diff -r 346513288864 -r 91c24a06d12c LPC2368/MySQLClient.ar Binary file LPC2368/MySQLClient.ar has changed
diff -r 346513288864 -r 91c24a06d12c LPC2368/dbg/dbg.h --- a/LPC2368/dbg/dbg.h Mon Jul 19 16:22:25 2010 +0000 +++ b/LPC2368/dbg/dbg.h Thu Aug 05 15:16:36 2010 +0000 @@ -21,6 +21,10 @@ THE SOFTWARE. */ +/** \file +Debugging helpers header file +*/ + //#ifdef DBG_H //#define DBG_H @@ -28,6 +32,11 @@ #define __DEBUG #endif +/*! + \def __DEBUG + To define to enable debugging in one file +*/ + #ifdef __DEBUG #ifndef __DEBUGSTREAM @@ -47,8 +56,15 @@ #undef DBG #undef DBG_END #undef BREAK + +///Debug output (if enabled), same syntax as printf, with heading info #define DBG(...) do{ DebugStream::debug("[%s:%s@%d] ", __FILE__, __FUNCTION__, __LINE__); DebugStream::debug(__VA_ARGS__); } while(0); + +///Debug output (if enabled), same syntax as printf, no heading info +#define DBGL(...) do{ DebugStream::debug(__VA_ARGS__); } while(0); #define DBG_END DebugStream::release + +///Break point usin serial debug interface (if debug enbaled) #define BREAK() DebugStream::breakPoint(__FILE__, __LINE__) #endif
diff -r 346513288864 -r 91c24a06d12c LPC2368/services/mysql/MySQLClient.h --- a/LPC2368/services/mysql/MySQLClient.h Mon Jul 19 16:22:25 2010 +0000 +++ b/LPC2368/services/mysql/MySQLClient.h Thu Aug 05 15:16:36 2010 +0000 @@ -21,10 +21,15 @@ THE SOFTWARE. */ +/** \file +MySQL Client header file +*/ + #ifndef MYSQL_CLIENT_H #define MYSQL_CLIENT_H -#include "if/net/net.h" +#include "core/net.h" +#include "core/netservice.h" #include "api/TCPSocket.h" #include "api/DNSRequest.h" #include "mbed.h" @@ -37,28 +42,55 @@ typedef unsigned char byte; +///MySQL client results enum MySQLResult { - MYSQL_OK, - MYSQL_PROCESSING, - MYSQL_PRTCL, - MYSQL_SETUP, //Not properly configured - MYSQL_DNS, //Could not resolve name - MYSQL_AUTHFAILED, //Auth failure - MYSQL_READY, //Ready to send commands - MYSQL_SQL, //SQL Error - MYSQL_TIMEOUT, //Connection timeout - MYSQL_CONN //Connection error + MYSQL_OK, ///<Success + MYSQL_PROCESSING, ///<Processing + MYSQL_PRTCL, ///<Protocol error + MYSQL_SETUP, ///<Not properly configured + MYSQL_DNS, ///<Could not resolve name + MYSQL_AUTHFAILED, ///<Auth failure + MYSQL_READY, ///<Ready to send commands + MYSQL_SQL, ///<SQL Error + MYSQL_TIMEOUT, ///<Connection timeout + MYSQL_CONN ///<Connection error }; +///A MySQL Client +/** +This MySQL client implements a limited subset of the MySQL internal client/server protocol (including authentication), for server versions 4.1 and newer. +*/ class MySQLClient : protected NetService { public: + ///Instantiates the MySQL client MySQLClient(); virtual ~MySQLClient(); //High Level setup functions + + ///Opens a connection to a server + /** + Opens a connection to the server host using the provided username, password passowrd and selecting database + On completion of this call (and any further one), the callback set in parameter is fired with the result of that command in parameter + @param host : server + @param user : username + @param db : database to use + @param pMethod : callback to call on each request completion + */ MySQLResult open(Host& host, const string& user, const string& password, const string& db, void (*pMethod)(MySQLResult)); //Non blocking + + ///Opens a connection to a server + /** + Opens a connection to the server host using the provided username, password passowrd and selecting database + On completion of this call (and any further one), the callback set in parameter is fired with the result of that command in parameter + @param host : server + @param user : username + @param db : database to use + @param pItem : callback's class instance + @param pMethod : callback's method to call on each request completion + */ template<class T> MySQLResult open(Host& host, const string& user, const string& password, const string& db, T* pItem, void (T::*pMethod)(MySQLResult)) //Non blocking { @@ -67,8 +99,17 @@ return MYSQL_PROCESSING; } + + ///Executes an SQL command + /** + Executes an SQL request on the SQL server + This is a non-blocking function + On completion, the callback set in the open function is fired with the result of the command in parameter + @param sqlCommand SQL request to execute + */ MySQLResult sql(string& sqlCommand); + ///Closes the connection to the server MySQLResult exit(); void setOnResult( void (*pMethod)(MySQLResult) ); @@ -81,6 +122,10 @@ m_pCbMeth = (void (CDummy::*)(MySQLResult)) pMethod; } + ///Setups timeout + /** + @param ms : time of connection inactivity in ms after which the request should timeout + */ void setTimeout(int ms); virtual void poll(); //Called by NetServices
diff -r 346513288864 -r 91c24a06d12c LPC2368/services/mysql/sha1.h --- a/LPC2368/services/mysql/sha1.h Mon Jul 19 16:22:25 2010 +0000 +++ b/LPC2368/services/mysql/sha1.h Thu Aug 05 15:16:36 2010 +0000 @@ -1,4 +1,4 @@ -/** +/* * \file sha1.h * * Copyright (C) 2006-2010, Paul Bakker <polarssl_maintainer at polarssl.org> @@ -21,7 +21,7 @@ #ifndef POLARSSL_SHA1_H #define POLARSSL_SHA1_H -/** +/* * \brief SHA-1 context structure */ typedef struct @@ -39,14 +39,14 @@ extern "C" { #endif -/** +/* * \brief SHA-1 context setup * * \param ctx context to be initialized */ void sha1_starts( sha1_context *ctx ); -/** +/* * \brief SHA-1 process buffer * * \param ctx SHA-1 context @@ -55,7 +55,7 @@ */ void sha1_update( sha1_context *ctx, const unsigned char *input, int ilen ); -/** +/* * \brief SHA-1 final digest * * \param ctx SHA-1 context @@ -63,7 +63,7 @@ */ void sha1_finish( sha1_context *ctx, unsigned char output[20] ); -/** +/* * \brief Output = SHA-1( input buffer ) * * \param input buffer holding the data @@ -73,7 +73,7 @@ void sha1( const unsigned char *input, int ilen, unsigned char output[20] ); #if 0 //No need for that -/** +/* * \brief Output = SHA-1( file contents ) * * \param path input file name @@ -85,7 +85,7 @@ int sha1_file( const char *path, unsigned char output[20] ); #endif -/** +/* * \brief SHA-1 HMAC context setup * * \param ctx HMAC context to be initialized @@ -94,7 +94,7 @@ */ void sha1_hmac_starts( sha1_context *ctx, const unsigned char *key, int keylen ); -/** +/* * \brief SHA-1 HMAC process buffer * * \param ctx HMAC context @@ -103,7 +103,7 @@ */ void sha1_hmac_update( sha1_context *ctx, const unsigned char *input, int ilen ); -/** +/* * \brief SHA-1 HMAC final digest * * \param ctx HMAC context @@ -111,14 +111,14 @@ */ void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] ); -/** +/* * \brief SHA-1 HMAC context reset * * \param ctx HMAC context to be reset */ void sha1_hmac_reset( sha1_context *ctx ); -/** +/* * \brief Output = HMAC-SHA-1( hmac key, input buffer ) * * \param key HMAC secret key @@ -131,7 +131,7 @@ const unsigned char *input, int ilen, unsigned char output[20] ); -/** +/* * \brief Checkup routine * * \return 0 if successful, or 1 if the test failed