Dependents:   SimpleLCDClock readCard2Twitter_http AnalogClock_StepperMotor_NTP ServoCamV1

Committer:
donatien
Date:
Mon May 24 10:23:42 2010 +0000
Revision:
0:3717b703f76d
Child:
1:e52ec2a24c6a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:3717b703f76d 1 #ifndef UDPSOCKET_H
donatien 0:3717b703f76d 2 #define UDPSOCKET_H
donatien 0:3717b703f76d 3
donatien 0:3717b703f76d 4 #include "if/net/net.h"
donatien 0:3717b703f76d 5 //Essentially it is a safe interface to NetUdpSocket
donatien 0:3717b703f76d 6
donatien 0:3717b703f76d 7 enum UdpSocketErr
donatien 0:3717b703f76d 8 {
donatien 0:3717b703f76d 9 __UDPSOCKET_MIN = -0xFFFF,
donatien 0:3717b703f76d 10 UDPSOCKET_SETUP, //NetUdpSocket not properly configured
donatien 0:3717b703f76d 11 UDPSOCKET_IF, //If has problems, does not exist or is not initialized
donatien 0:3717b703f76d 12 UDPSOCKET_MEM, //Not enough mem
donatien 0:3717b703f76d 13 UDPSOCKET_INUSE, //If/Port is in use
donatien 0:3717b703f76d 14 //...
donatien 0:3717b703f76d 15 UDPSOCKET_OK = 0
donatien 0:3717b703f76d 16 };
donatien 0:3717b703f76d 17
donatien 0:3717b703f76d 18 enum UdpSocketEvent //Only one lonely event here... but who knows, maybe some day there'll be another one!
donatien 0:3717b703f76d 19 {
donatien 0:3717b703f76d 20 UDPSOCKET_READABLE, //Data in buf
donatien 0:3717b703f76d 21 };
donatien 0:3717b703f76d 22
donatien 0:3717b703f76d 23
donatien 0:3717b703f76d 24 class UdpSocket
donatien 0:3717b703f76d 25 {
donatien 0:3717b703f76d 26 public:
donatien 0:3717b703f76d 27 UdpSocket();
donatien 0:3717b703f76d 28 ~UdpSocket(); //close()
donatien 0:3717b703f76d 29
donatien 0:3717b703f76d 30 UdpSocketErr bind(const Host& me);
donatien 0:3717b703f76d 31
donatien 0:3717b703f76d 32 int /*if < 0 : UdpSocketErr*/ sendto(const char* buf, int len, Host* pHost);
donatien 0:3717b703f76d 33 int /*if < 0 : UdpSocketErr*/ recvfrom(char* buf, int len, Host* pHost);
donatien 0:3717b703f76d 34
donatien 0:3717b703f76d 35 /* TODO NTH : printf / scanf helpers that call send/recv */
donatien 0:3717b703f76d 36
donatien 0:3717b703f76d 37 UdpSocketErr close();
donatien 0:3717b703f76d 38
donatien 0:3717b703f76d 39 class CDummy;
donatien 0:3717b703f76d 40 //Callbacks
donatien 0:3717b703f76d 41 void setOnEvent( void (*pMethod)(UdpSocketEvent) );
donatien 0:3717b703f76d 42 template<class T>
donatien 0:3717b703f76d 43 //Linker bug : Must be defined here :(
donatien 0:3717b703f76d 44 void setOnEvent( T* pItem, void (T::*pMethod)(UdpSocketEvent) )
donatien 0:3717b703f76d 45 {
donatien 0:3717b703f76d 46 m_pCbItem = (CDummy*) pItem;
donatien 0:3717b703f76d 47 m_pCbMeth = (void (CDummy::*)(UdpSocketEvent)) pMethod;
donatien 0:3717b703f76d 48 }
donatien 0:3717b703f76d 49
donatien 0:3717b703f76d 50 void resetOnEvent(); //Disable callback
donatien 0:3717b703f76d 51
donatien 0:3717b703f76d 52 protected:
donatien 0:3717b703f76d 53 void onNetUdpSocketEvent(NetUdpSocketEvent e);
donatien 0:3717b703f76d 54 UdpSocketErr checkInst();
donatien 0:3717b703f76d 55
donatien 0:3717b703f76d 56 private:
donatien 0:3717b703f76d 57 NetUdpSocket* m_pNetUdpSocket;
donatien 0:3717b703f76d 58
donatien 0:3717b703f76d 59 CDummy* m_pCbItem;
donatien 0:3717b703f76d 60 void (CDummy::*m_pCbMeth)(UdpSocketEvent);
donatien 0:3717b703f76d 61
donatien 0:3717b703f76d 62 void (*m_pCb)(UdpSocketEvent);
donatien 0:3717b703f76d 63
donatien 0:3717b703f76d 64 };
donatien 0:3717b703f76d 65
donatien 0:3717b703f76d 66 #endif