Go to the documentation of this file.00001 #ifndef CANON_DRIVER_H
00002 #define CANON_DRIVER_H
00003
00004 #include <vector>
00005 #include <Socket.h>
00006 #include "Datagram.h"
00007
00008 class CanonDriver
00009 {
00010 public :
00011 const static unsigned int CONTROL_PORT = 65311;
00012 const static unsigned int VIDEO_PORT = 65310;
00013 protected :
00014 Socket * ctrlsock;
00015 Socket * videosock;
00016 char * host;
00017
00018 std::vector<Datagram> init_seq;
00019 std::vector<Datagram> init_reply;
00020 std::vector<Datagram> keepalive_seq;
00021 std::vector<Datagram> keepalive_reply;
00022
00023 double cpan,ctilt,czoom;
00024
00025 public :
00026 CanonDriver(const char * initseq_filename,
00027 const char * hostname);
00028 ~CanonDriver();
00029
00030 bool connect();
00031 bool disconnect();
00032 bool keepalive();
00033 bool requestCurrentPos();
00034 void getCurrentPos(double * pan, double * tilt, double * zoom);
00035
00036 bool waitcompletion();
00037 bool moveto(double pan, double tilt, double zoom);
00038 bool panto(double pan);
00039 bool tiltto(double to);
00040 bool zoomto(double zoom);
00041
00042 bool center();
00043 typedef enum {
00044 Right=1,
00045 Left=2,
00046 Up=4,
00047 UpRight=5,
00048 UpLeft=6,
00049 Down=8,
00050 DownRight=9,
00051 DownLeft=10
00052 } Direction;
00053 bool movetoward(Direction dir);
00054 bool stop();
00055
00056 bool getframe();
00057 };
00058
00059 #endif // CANON_DRIVER_H