Description.
Dependents: RoboPanorama 4180_Project ProjetMacIntel
Fork of Camera_LS_Y201 by
Diff: Camera_LS_Y201.cpp
- Revision:
- 1:43358d40f879
- Parent:
- 0:f71232252dcf
- Child:
- 2:e92ce527b8b0
--- a/Camera_LS_Y201.cpp Thu Nov 25 15:43:42 2010 +0000 +++ b/Camera_LS_Y201.cpp Wed Dec 01 23:10:56 2010 +0000 @@ -157,6 +157,11 @@ && (recv[2] == 0x36) && (recv[3] == 0x00) && (recv[4] == 0x00)) { + /* + * I think the camera need a time for operating. + * But there is no any comments on the documents. + */ + wait_ms(100); return NoError; } else { return UnexpectedReply; @@ -207,7 +212,7 @@ * @param func A pointer to a call back function. * @return Error code. */ -Camera_LS_Y201::ErrorCode Camera_LS_Y201::readJpegFileContent(void (*func)(uint8_t *buf, size_t siz)) { +Camera_LS_Y201::ErrorCode Camera_LS_Y201::readJpegFileContent(void (*func)(int done, int total, uint8_t *buf, size_t siz)) { uint8_t send[16] = { 0x56, 0x00, @@ -231,6 +236,17 @@ uint16_t k = sizeof(body); // Packet size. uint16_t x = 10; // Interval time. XX XX * 0.01m[sec] bool end = false; + + /* + * Get the data size. + */ + int siz_done = 0; + int siz_total = 0; + ErrorCode r = readJpegFileSize(&siz_total); + if (r != NoError) { + return r; + } + do { send[8] = (m >> 8) & 0xff; send[9] = (m >> 0) & 0xff; @@ -262,8 +278,12 @@ if (!recvBytes(body, sizeof(body), 2 * 1000 * 1000)) { return RecvError; } + siz_done += sizeof(body); if (func != NULL) { - func(body, sizeof(body)); + if (siz_done > siz_total) { + siz_done = siz_total; + } + func(siz_done, siz_total, body, sizeof(body)); } for (int i = 1; i < sizeof(body); i++) { if ((body[i - 1] == 0xFF) && (body[i - 0] == 0xD9)) { @@ -313,6 +333,11 @@ && (recv[2] == 0x36) && (recv[3] == 0x00) && (recv[4] == 0x00)) { + /* + * I think the camera need a time for operating. + * But there is no any comments on the documents. + */ + wait_ms(100); return NoError; } else { return UnexpectedReply;