UDP comms to ROV
RovComms.h
- Committer:
- inky
- Date:
- 2012-01-13
- Revision:
- 0:4a75d653c18c
- Child:
- 1:f51739cada16
File content as of revision 0:4a75d653c18c:
/* ROV communication class */ #ifndef ROVCOMMS_H #define ROVCOMMS_H #include "EthernetNetIf.h" #include <TCPSocket.h> #include "mbed.h" #include "msg.h" #define STATIC_IP_ADDR #define MAX_BUFFER_SIZE 10 // max chars in the data stream #define ipGateway IpAddr(10,0,0,1) #define ipMask IpAddr(255,255,255,0) #define ipDns IpAddr(10,0,0,1) #define RX_TCP_LISTENING_PORT 0xdead // 57005 // last digit for the IP address, defining below 100 for below water // and above 100 for above water :) // The host/server is the ROV, so the handset can send info to the host #define ROV_ADDR 50 // ROV as host and below 100 for below water #define IPCAMERA_ADDR 60 #define SURFACE_PC_ADDR 102 #define HANDSET_ADDR 101 class RovComms { public: RovComms(int addr); void InitRx(int addr); void InitTx(int addr); void CloseSocket(TCPSocket *s, int *state); void CallbackFn( void (*function)(void) ) { _callback.attach(function); } void onTxTCPSocketEvent(TCPSocketEvent e); void onRxTCPSocketEvent(TCPSocketEvent e); void onConnectedTCPSocketEvent(TCPSocketEvent e); void Transmit(int pktType); char *Receive(void); void RovPropulsion(int speed, int turn, int vert); int RovSpeed() { return iRovSpeed;} int RovTurn() { return iRovTurn;} int RovVert() { return iRovVert;} void FrontLights(int state); int FrontLights() { return ( (iLight & AUX_FN_LIGHT1_ON)==AUX_FN_LIGHT1_ON?1:0); } void RearLights(int state); int RearLights() { return ( (iLight & AUX_FN_LIGHT2_ON)==AUX_FN_LIGHT2_ON?1:0); } void Camera(int cam); int Camera(); private: void Debug(const char *format, ...); void ClearBuffer(char *buf) {int i=MAX_BUFFER_SIZE;while (i>0) buf[i--]=0;} void ResetValues(); private: EthernetNetIf *eth; TCPSocket *RxSock; TCPSocket *TxSock; IpAddr rovAddr; Host server; enum NETWORK_STATE { INIT, OPEN, LISTEN, CONNECTED, ERROR, CLOSED }; int RxNetworkState; int TxNetworkState; char iRxData[MAX_BUFFER_SIZE]; char iTxData[MAX_BUFFER_SIZE]; int iState; FunctionPointer _callback; // used to call back into code when data arrives // ROV params int iRovSpeed; int iRovTurn; int iRovVert; int iLight; int iWaterSol; int iAirSol; int iCamera; int iPressure; int iCompass; int iAccelX; int iAccelY; int iAccelZ; }; // end class RovComms #endif // ROVCOMMS_H