summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/camera/camera.cc
diff options
context:
space:
mode:
authorschodet2003-05-05 19:19:37 +0000
committerschodet2003-05-05 19:19:37 +0000
commit813f57da6ac8ee65fe32e944de62ec2a27574e83 (patch)
tree7d25e06d464aa2cbcf80b78fea4d64cc23e1b29c /2003/i/buzz/src/camera/camera.cc
parent356a80697a3268aae77681b055e5e835aa2d1a71 (diff)
Premiers tests.
Diffstat (limited to '2003/i/buzz/src/camera/camera.cc')
-rw-r--r--2003/i/buzz/src/camera/camera.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/2003/i/buzz/src/camera/camera.cc b/2003/i/buzz/src/camera/camera.cc
new file mode 100644
index 0000000..3982c7e
--- /dev/null
+++ b/2003/i/buzz/src/camera/camera.cc
@@ -0,0 +1,48 @@
+// camera.cc
+// buzz - Programme du robot Efrei Robotique I1-I2 2003
+// Copyright (C) 2003 Nicolas Schodet
+//
+#include "camera.h"
+#include "erreur/erreur.h"
+#include "kernel/pbus.h"
+
+#include <fcntl.h>
+#include <unistd.h>
+#include <iostream> // Debug.
+
+#define CAM_FILE "/dev/robotcam"
+
+// Constructeur.
+Camera::Camera ()
+{
+ // Ouvre le périphérique.
+ m_fd = open (CAM_FILE, O_RDONLY);
+ if (m_fd == -1)
+ throw ErreurFatale ("Impossible d'ouvrir le périphérique de la"
+ " camera.\n");
+ // Paramètre la taille de frame.
+ m_frameSize = m_w * m_h;
+ ioctl (m_fd, CAM_SETFRAMESIZE, m_frameSize);
+ // Lance le dma ?
+ unsigned int image;
+ ::read (m_fd, &image, 0);
+ char t;
+ cin >> t;
+}
+
+// Destructeur.
+Camera::~Camera ()
+{
+ // Ferme le périphérique de camera.
+ close (m_fd);
+}
+
+// Lit une image.
+void
+Camera::read (unsigned char *image) const
+{
+ int r;
+ // Lit les données sur la camera.
+ r = ::read (m_fd, image, m_frameSize);
+ cout << "camera read " << r << endl;
+}