Test for LinkSprite Y201 JPEG camera

Dependencies:   mbed MODSERIAL Y201 mbed-rtos

Files at this revision

API Documentation at this revision

Comitter:
ashleymills
Date:
Fri Jun 29 19:29:17 2012 +0000
Child:
1:60a7ddc83644
Commit message:
This camera test presently works.;

Changed in this revision

MODSERIAL.lib Show annotated file Show diff for this revision Revisions of this file
Y201.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
rtos.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MODSERIAL.lib	Fri Jun 29 19:29:17 2012 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/AjK/code/MODSERIAL/#c11ea36f17f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Y201.lib	Fri Jun 29 19:29:17 2012 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/ashleymills/code/Y201/#7d8a6087f2e5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Jun 29 19:29:17 2012 +0000
@@ -0,0 +1,111 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "Y201.h"
+
+const int Y201::resetSeq       [4] = {0x56,0x00,0x26,0x00};
+const int Y201::resetSeqAck    [4] = {0x76,0x00,0x26,0x00};
+const int Y201::takePicSeq     [5] = {0x56,0x00,0x36,0x01,0x00};
+const int Y201::takePicSeqAck  [5] = {0x76,0x00,0x36,0x00,0x00};
+const int Y201::set160x120     [9] = {0x56,0x00,0x31,0x05,0x04,0x01,0x00,0x19,0x22};
+const int Y201::set320x240     [9] = {0x56,0x00,0x31,0x05,0x04,0x01,0x00,0x19,0x11};
+const int Y201::set640x480     [9] = {0x56,0x00,0x31,0x05,0x04,0x01,0x00,0x19,0x00};
+const int Y201::setSizeAck     [5] = {0x76,0x00,0x31,0x00,0x00};
+const int Y201::readFileSize   [5] = {0x56,0x00,0x34,0x01,0x00};
+const int Y201::readFileSizeAck[7] = {0x76,0x00,0x34,0x00,0x04,0x00,0x00};
+const int Y201::readFileHead   [8] = {0x56,0x00,0x32,0x0C,0x00,0x0A,0x00,0x00};
+const int Y201::readFileAck    [5] = {0x76,0x00,0x32,0x00,0x00};
+
+DigitalOut led1(LED1);
+
+extern "C" void HardFault_Handler() {
+  error("Hard Fault!\n");
+}
+
+LocalFileSystem fs("fs");
+FILE *fp = fopen("picture.jpg","w");
+Serial pc(USBTX, USBRX);
+
+
+void test(void const*) {
+  pc.baud(115200);
+  pc.printf("RESET V^V^V^V^V^V^V^V^V^V^V RESET\r\n");
+  
+  // open camera
+  Y201 camera(p13,p14);
+  
+  // set image size
+  if(camera.setImageSize(Y201::e640x480)) {
+    printf("Set image size\r\n");
+  } else {
+    printf("Error setting image size!\r\n");
+  }
+  
+  // reset camera
+  if(camera.reset()) {
+    printf("Camera reset successfull\r\n");
+  } else {
+    printf("Error resetting camera\r\n");
+  }
+  
+  // take a picture  
+  if(camera.takePicture()) {
+    printf("Took picture!\r\n");
+  } else {
+    printf("Take picture failed!\r\n");
+  }
+  
+  // read file size
+  int fileSize = 0;
+  if(camera.readImageSize(&fileSize)) {
+    printf("Filesize: %d\r\n",fileSize);
+  } else {
+    printf("Error getting file size\r\n");
+  }
+  
+
+  // IMAGE UPLOAD
+   
+  int bytesRead = 0;
+  int chunkSize = 256;
+
+  uint8_t *readBuffer = (uint8_t*)malloc(chunkSize*sizeof(uint8_t));
+  while(bytesRead<fileSize) {  
+    // read the image
+    size_t w;
+    if(w=camera.readImage(bytesRead,chunkSize,readBuffer)) {
+        
+    } else {
+        printf("Error in file read\r\n");
+    }
+    bytesRead += chunkSize;
+    printf("%d..",bytesRead,w);
+    if(bytesRead<fileSize) {
+        //size_t w = fwrite(readBuffer,chunkSize,1,fp);
+    } else {
+        //size_t w = fwrite(readBuffer,(chunkSize-(bytesRead-fileSize)),1,fp);
+    }
+    
+    camera.trash();
+    
+  }
+  
+  printf("\r\n");
+  fclose(fp);
+  printf("loop exit\r\n");
+  printf("filesize: %d\r\n",fileSize);  
+}
+
+void tick() {
+  led1 = !led1;
+}
+
+int main() {
+  Ticker t;
+  t.attach(tick, 1);
+
+  Thread testTask(test, NULL, osPriorityNormal, 1024 * 4);
+  //Thread testTask(test);
+  while(1);
+
+  return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Jun 29 19:29:17 2012 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/976df7c37ad5
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rtos.lib	Fri Jun 29 19:29:17 2012 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/donatien/code/rtos/#bee70210126a