Dependents:   SimpleLCDClock readCard2Twitter_http AnalogClock_StepperMotor_NTP ServoCamV1

Committer:
donatien
Date:
Mon May 24 10:24:38 2010 +0000
Revision:
0:a2dd0ba6cd2d
Child:
1:7043cc0db03c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:a2dd0ba6cd2d 1 #ifndef SMTP_CLIENT_H
donatien 0:a2dd0ba6cd2d 2 #define SMTP_CLIENT_H
donatien 0:a2dd0ba6cd2d 3
donatien 0:a2dd0ba6cd2d 4 class EmailMessage;
donatien 0:a2dd0ba6cd2d 5
donatien 0:a2dd0ba6cd2d 6 #include "if/net/net.h"
donatien 0:a2dd0ba6cd2d 7 #include "api/TcpSocket.h"
donatien 0:a2dd0ba6cd2d 8 #include "../emailMessage.h"
donatien 0:a2dd0ba6cd2d 9
donatien 0:a2dd0ba6cd2d 10 #include "mbed.h"
donatien 0:a2dd0ba6cd2d 11
donatien 0:a2dd0ba6cd2d 12 #define SMTP_REQUEST_TIMEOUT 5000
donatien 0:a2dd0ba6cd2d 13
donatien 0:a2dd0ba6cd2d 14 enum SmtpResult
donatien 0:a2dd0ba6cd2d 15 {
donatien 0:a2dd0ba6cd2d 16 SMTP_OK,
donatien 0:a2dd0ba6cd2d 17 SMTP_PRTCL, //Protocol error
donatien 0:a2dd0ba6cd2d 18 SMTP_TIMEOUT, //Connection timeout
donatien 0:a2dd0ba6cd2d 19 SMTP_DISC //Disconnected
donatien 0:a2dd0ba6cd2d 20 };
donatien 0:a2dd0ba6cd2d 21
donatien 0:a2dd0ba6cd2d 22 class SmtpClient /*: public NetService*/
donatien 0:a2dd0ba6cd2d 23 {
donatien 0:a2dd0ba6cd2d 24 public:
donatien 0:a2dd0ba6cd2d 25 SmtpClient();
donatien 0:a2dd0ba6cd2d 26 virtual ~SmtpClient();
donatien 0:a2dd0ba6cd2d 27
donatien 0:a2dd0ba6cd2d 28 void setHost(const Host& host);
donatien 0:a2dd0ba6cd2d 29 void send(EmailMessage* pMessage);
donatien 0:a2dd0ba6cd2d 30
donatien 0:a2dd0ba6cd2d 31 class CDummy;
donatien 0:a2dd0ba6cd2d 32 template<class T>
donatien 0:a2dd0ba6cd2d 33 //Linker bug : Must be defined here :(
donatien 0:a2dd0ba6cd2d 34 void setOnResult( T* pItem, void (T::*pMethod)(SmtpResult) )
donatien 0:a2dd0ba6cd2d 35 {
donatien 0:a2dd0ba6cd2d 36 m_pCbItem = (CDummy*) pItem;
donatien 0:a2dd0ba6cd2d 37 m_pCbMeth = (void (CDummy::*)(SmtpResult)) pMethod;
donatien 0:a2dd0ba6cd2d 38 }
donatien 0:a2dd0ba6cd2d 39
donatien 0:a2dd0ba6cd2d 40 void init(); //Create and setup socket if needed
donatien 0:a2dd0ba6cd2d 41 void close();
donatien 0:a2dd0ba6cd2d 42
donatien 0:a2dd0ba6cd2d 43 private:
donatien 0:a2dd0ba6cd2d 44 int rc(char* buf); //Return code
donatien 0:a2dd0ba6cd2d 45 void process(bool moreData); //Main state-machine
donatien 0:a2dd0ba6cd2d 46
donatien 0:a2dd0ba6cd2d 47 void setTimeout(int ms);
donatien 0:a2dd0ba6cd2d 48 void resetTimeout();
donatien 0:a2dd0ba6cd2d 49
donatien 0:a2dd0ba6cd2d 50 void onTimeout(); //Connection has timed out
donatien 0:a2dd0ba6cd2d 51 void onTcpSocketEvent(TcpSocketEvent e);
donatien 0:a2dd0ba6cd2d 52 void onResult(SmtpResult r); //Called when exchange completed or on failure
donatien 0:a2dd0ba6cd2d 53
donatien 0:a2dd0ba6cd2d 54 EmailMessage* m_pMessage;
donatien 0:a2dd0ba6cd2d 55
donatien 0:a2dd0ba6cd2d 56 TcpSocket* m_pTcpSocket;
donatien 0:a2dd0ba6cd2d 57
donatien 0:a2dd0ba6cd2d 58 enum SmtpStep
donatien 0:a2dd0ba6cd2d 59 {
donatien 0:a2dd0ba6cd2d 60 SMTP_HELLO,
donatien 0:a2dd0ba6cd2d 61 SMTP_FROM,
donatien 0:a2dd0ba6cd2d 62 SMTP_TO,
donatien 0:a2dd0ba6cd2d 63 SMTP_DATA,
donatien 0:a2dd0ba6cd2d 64 SMTP_BODY,
donatien 0:a2dd0ba6cd2d 65 SMTP_BODYMORE,
donatien 0:a2dd0ba6cd2d 66 SMTP_EOF,
donatien 0:a2dd0ba6cd2d 67 SMTP_BYE
donatien 0:a2dd0ba6cd2d 68 };
donatien 0:a2dd0ba6cd2d 69
donatien 0:a2dd0ba6cd2d 70 SmtpStep m_nextState;
donatien 0:a2dd0ba6cd2d 71
donatien 0:a2dd0ba6cd2d 72 CDummy* m_pCbItem;
donatien 0:a2dd0ba6cd2d 73 void (CDummy::*m_pCbMeth)(SmtpResult);
donatien 0:a2dd0ba6cd2d 74
donatien 0:a2dd0ba6cd2d 75 Timeout m_watchdog;
donatien 0:a2dd0ba6cd2d 76 int m_timeout;
donatien 0:a2dd0ba6cd2d 77
donatien 0:a2dd0ba6cd2d 78 int m_posInMsg;
donatien 0:a2dd0ba6cd2d 79
donatien 0:a2dd0ba6cd2d 80 bool m_closed;
donatien 0:a2dd0ba6cd2d 81
donatien 0:a2dd0ba6cd2d 82 Host m_host;
donatien 0:a2dd0ba6cd2d 83
donatien 0:a2dd0ba6cd2d 84 };
donatien 0:a2dd0ba6cd2d 85
donatien 0:a2dd0ba6cd2d 86 #endif