#ifndef CONNECTIONH #define CONNECTIONH #include <string> #define NXT_BUFFER_SIZE 64 using namespace std; /** * Connection type enumeration @see Connection#get_type */ enum Connection_type { /** * Bluetooth connection */ BT = 0x00, /** * Network connection */ NXT_NETWORK = 0x01 }; /** * Network server mode enumeration * @see Server_settings_t * @see Nxt_network#Connect */ enum Server_mode{ /** * The server will close down when BT communication with the NXT is lost */ CLOSE_DOWN = 0, /** * The server will (try) reconnect to the NXT when BT communication is lost */ RECONNECT = 1 }; /** * Struct used to retriece server settings when a network connection is used * @see Nxt_network#Connect * @see Server_mode */ struct Server_settings_t{ /** * The mode of the server */ Server_mode mode; /** * The timeout of the client in milliseconds. If clients are * inactive for more than the timeout they will be thrown off. If timeout is zero timeout has been disabled */ unsigned int timeout; }; /** * typedef for Server_settings_t * @see Server_settings_t * @see Nxt_network#Connect */ typedef Server_settings_t Server_settings; /** * Abstract class for connections */ class Connection { public: virtual ~Connection(){}; /** * Send a byte string * (must be implemented in sub class) * @param *buffer [a pointer to a buffer that can hold the bytes to send] * @param num_bytes [the number of bytes to send] */ virtual void send(unsigned char *buffer,unsigned int num_bytes)=0; /** * Connect to the NXT using BT * (Dummy method does nothing - is implemented in sub class) * @param comport [specify the comport that is to used for the BT connection between the NXT and PC] */ virtual void connect(unsigned int comport){return;} /** * Connect to the NXT using a network connection * (Dummy method does nothing - is implemented in sub class) * @param port [specify the port that is to used for the network connection between the NXT and PC] * @param ip_add [specify the IP-address] * @param settings [used to retrive server settings] * @param password [set the password] * @see Server_settings_t */ virtual void connect(unsigned int port, string ip_add, Server_settings &settings, string password=""){return;} /** * Disconnect from the NXT * (must be implemented in sub class) */ virtual void disconnect()=0; /** * Receive a byte string * (must be implemented in sub class) * @param *buffer [a pointer to a buffer that can hold the received bytes] * @param length [the number of bytes to receive] */ virtual void receive(unsigned char *buffer, unsigned int length)=0; /** * Flush the input and output buffer * (must be implemented in sub class) */ virtual void flush()=0; /** * Get the connection type * (must be implemented in sub class) * @return the connection type */ virtual Connection_type get_type()=0; protected: }; #endif