Commit Graph

121 Commits

Author SHA1 Message Date
Kwabena W. Agyeman
80cb701d3b Add missing cam functionality
Added the ability to turn AGC off. Kinda will need the ability to restore
AGC settings back to user specified ones in the future... but, this will
do for now.

Added the ability to turn AEC off. Objectively this function probably
won't be used. But, in low light situations it can help.

Added get_fb() to allow you to get the last image snapshot returned.

There was some old exposure function in the code that was getting
optimized out. So, I deleted the used methods that didn't have any code
in them and commented out the only method that did.
2016-04-27 21:53:06 -04:00
Kwabena W. Agyeman
367e5fdd3d Improved JPEG capabilities.
* Added the ability to control the quality on JPEG functions... However,
due to our JPEG implementation this doesn't seem to help. 90% JPEG
quality images and regular images should be about equal. But, you can
see heavy degredation with 90% still. E.g. text is unreabable. Not
exactly sure why this is happening but it can be fixed later.

* Changed the compress() function to compressed(). Also, it now
compresses using FB_Alloc to prevent realloc issues when compressing.

* Added new compress() function. This function compresses an image in
place and if that image is the frame bufffer then it will update the
frame buffer bpp value to reflect the image was compressed. Users can use
this function to basically finalize the frame buffer and then pass the FB
to functions that need to send image bytes. The benefit of using this
function is that it should allow higher quality JPEGs and let everything
run at a faster speed while connected to the IDE.

I made this function to speed up WiFi. However, I encountered a bug with
the winc.send() method. It appears to zero the bytes it sends. I didn't
debug further except to verify that the image data became zero after
calling send.
2016-04-23 16:37:21 -04:00
Kwabena W. Agyeman
2fa8227c7b Add AWB/HMirror/VFlip
Added setters for these camera settings. AWB is necessary for color
tracking to work correctly. AGC still runs, which causes lighting
shifts. It may need to be disabled too. Not sure... if I want to do that
or not however, because without it lightning won't get normalized to
remain at a certain level. So, turning AGC off may cause issues in other
ways.
2016-03-25 16:36:10 -04:00
iabdalkader
2f9a541cbc Abort DMA transfer after snapshot. 2016-03-11 04:17:18 +02:00
iabdalkader
3e6e84cbb4 Skip the first frame after changing size or format. 2016-03-06 18:38:25 +02:00
iabdalkader
87f9c92f1b Skip the first JPEG/RAW frame.
* Set BPP to zero in set_pixformat to skip compressing/sending the first frame.
2016-03-06 02:32:11 +02:00
iabdalkader
911f9827ea Enable DMA IRQ just before the snapshot. 2016-03-06 02:28:05 +02:00
iabdalkader
06b1cfca3b Use IRQ priorities defined in irqs.h 2016-03-05 18:25:51 +02:00
iabdalkader
963dd69ca0 Fix typo. 2016-02-28 08:06:32 +02:00
iabdalkader
afa1686940 USE OMV_XCLK_FREQUENCY from OMV board config file. 2016-02-28 04:30:37 +02:00
iabdalkader
43dc87d43e Fix HQVGA resolution. 2016-02-21 23:05:07 +02:00
iabdalkader
a4ea3e0e20 Add filter functions
* Filter functions bypass the default line processing in sensor.c, and pre-process lines.
* Processing is done on the fly, i.e. filters are called from after each line is received.
2016-02-20 03:58:40 +02:00
iabdalkader
da15b6a915 * Allow fb compression to be enabled/disabled.
* This allows reading RGB images on PC if needed.
2016-02-18 04:01:41 +02:00
iabdalkader
d3d7e5dc39 Use typdef's for sensor enum and structs. 2016-02-17 19:46:45 +02:00
iabdalkader
c809ec1b53 Add comment about cropping. 2016-02-17 18:49:51 +02:00
iabdalkader
f8bfbfabe9 Add sensor.get_id function to return PID. 2016-02-10 19:00:05 +02:00
iabdalkader
0a8a1fd58c Return error from extclk_config. 2016-02-09 02:44:26 +02:00
iabdalkader
d4b13d21ce Add support for special effects. 2016-02-09 02:08:07 +02:00
iabdalkader
dbd69a3a25 Remove framebuffer locking.
* Not needed anymore.
2016-02-09 01:11:25 +02:00
iabdalkader
ed69e4b15a Transfer raw frames line by line.
* Add HAL_DCMI_Start_DMA_MB to allow line by line transfers for
  raw frames using DMA double buffering feature.
* This means bigger grayscale resolution that would not otherwise
  fit into RAM.
* YUV to Grayscale conversion on the fly (as the frame being read).
* It's possible to perform differencing (and maybe JPEG) on the fly.
* Additionally, FPS for grayscale should be exactly like RGB
  (since there's no additional step after capturing the frame)
2016-02-08 16:53:11 +02:00
iabdalkader
bcb72ef7ff Use a single resolution table. 2016-02-08 16:11:57 +02:00
iabdalkader
4627f21623 Remove extra resolution from size table. 2016-02-07 02:39:32 +02:00
iabdalkader
07e0385bf0 Add HQVGA resolution. 2016-02-07 02:32:16 +02:00
iabdalkader
b8e442b60c Add openmv board config headers and remove hal_msp.h 2016-02-06 19:13:45 +02:00
iabdalkader
d76fa2b558 Remove the JPEG offset buffer.
* Set the address of the DMA transfer to addr + offset to allow JPEG
  Compression of the framebuffer without overwriting image pixels.
* This saves 1KBs of stack and conditionals in jpeg_put_bytes/char.
2016-02-06 17:13:53 +02:00
iabdalkader
fb429f175f Lower sleep time after sensor power cycle. 2016-02-06 15:31:26 +02:00
iabdalkader
14df7fc05f Add sensor_init0.
* This resets the framebuffer state.
2016-02-06 04:08:39 +02:00
iabdalkader
a231b17055 JPEG-compress the frame buffer to lower bandwidth. 2016-02-05 02:42:03 +02:00
iabdalkader
ab833d4302 Set all sensors XCLK to 12MHz 2016-02-05 02:41:03 +02:00
iabdalkader
ec1de1c2eb Replace sensor struct clock polarities with flags. 2016-02-05 02:38:07 +02:00
iabdalkader
23fe7b6363 Move framebuffer sync code before snapshot code.
* This forces the IDE to read the image before any drawing, which
  Fixes the double buffering issue.
2016-02-03 02:47:54 +02:00
iabdalkader
5203fd8434 Pass slave address to SCCB_Read/Write
* Add slave address to sensor struct.
* Pass slave address to every SCCB_Read/Write function.
* Pass a pointer to the sensor struct to sensor functions.
2016-01-28 14:09:12 +02:00
iabdalkader
6752aeacf3 Add support for OV7725 2016-01-28 12:42:17 +02:00
iabdalkader
b55a93069d Remove unused prototype. 2015-10-04 01:09:52 +02:00
iabdalkader
2bda1d13a3 Increase sensor_snapshot timeout 2015-10-04 00:26:46 +02:00
iabdalkader
5924de6ee3 Increase sensor_snapshot timeout. 2015-09-26 03:25:45 +02:00
iabdalkader
4f392e4639 Rename pincfg.h to stm32f4xx_hal_msp.h 2015-09-24 14:21:39 +02:00
iabdalkader
d11e8f7212 Inline systick_has_passed call in sensor_snapshot 2015-09-23 02:03:26 +02:00
iabdalkader
e3f41d674e Add sensor_snapshot timeout 2015-09-22 01:34:21 +02:00
iabdalkader
02ac02643e Increase QCIF res 2015-08-15 16:54:09 +02:00
iabdalkader
9af3b9eaba Return different error codes in sensor_init 2015-08-07 23:31:45 +02:00
iabdalkader
b99df66659 Wait for IDE to read the frame buffer
* Wait for the IDE to read the frame buffer after trying the lock.
2015-08-07 17:55:11 +02:00
iabdalkader
8c1ff900a8 Fix OPENMV1 build
* Fix board config files
* Fix linker script
* Fix sdcard CD
2015-08-01 10:56:37 +02:00
iabdalkader
86a141e51a Add set color bar function 2015-07-29 22:32:05 +02:00
iabdalkader
a94b324bb4 Call DCMI DMA abort in sensor reset function
* Call DMA abort in sensor reset function just in case there's a
DMA request in progress.
2015-07-12 07:58:41 +02:00
iabdalkader
4618aeb496 Enable DCMI interrupts 2015-07-12 07:57:34 +02:00
iabdalkader
16fdecf7f4 Remove hard sensor reset 2015-07-12 04:11:44 +02:00
iabdalkader
c76c75e7b0 Fixe jpeg mode assignment 2015-07-12 03:15:10 +02:00
iabdalkader
54bf1b4334 Add JPEG mode to dcmi_config
* This also disables DCMI interrupts the second time dcmi_config is called
2015-07-12 02:24:46 +02:00
iabdalkader
0ffb74df7a Lower pixel clock frequency to 54MHz
* Lower pixel clock frequency to be within the DCMI specs (max 54MHz)
2015-07-04 21:13:16 +02:00
iabdalkader
54ae5ff425 Add new resolution for LCD 2015-05-05 13:39:16 +03:00
iabdalkader
aed7c8678e Clear frame ready in sensor_init 2015-05-03 10:25:15 +03:00
iabdalkader
4d92e632fc Use MCO as sensor clock source for OMV2 2015-05-01 04:59:28 +03:00
iabdalkader
551a8be156 Increase delay for IDE 2014-11-02 15:53:02 +02:00
iabdalkader
899ec65507 Add delay if IDE tried to lock FB
* Fix #27
2014-10-31 13:57:17 +02:00
iabdalkader
e4003e3e96 Enable UXGA 2014-10-06 17:37:51 +02:00
iabdalkader
65cd8a133a Update license
* Switch to MIT
* Add license notice to source files
2014-09-20 05:09:52 +02:00
iabdalkader
d61526a974 Add atan2, log2 and log 2014-08-26 12:09:51 +02:00
iabdalkader
e21794b4cb Reset DMA stream before re-init 2014-08-23 10:47:01 +02:00
iabdalkader
9e0136dbc8 Add proper fb locking 2014-08-20 21:17:27 +02:00
iabdalkader
78ad46dd34 Add set_quality for JPEG mode 2014-07-09 04:31:39 +02:00
iabdalkader
52bf272e8e Move test for USBDBG before snapshot 2014-06-30 03:47:04 +02:00
iabdalkader
1c7f8d7bdf Move GPIO configuration to MSP 2014-06-27 22:21:59 +02:00
iabdalkader
185ab2877c ADD JPEG support
* ADD higher resolutions
* Set GPIO to low speed
* Use frame_ready to sync snapshots
2014-06-25 19:47:23 +02:00
iabdalkader
b5587adc65 Add sensor controls 2014-06-21 09:41:27 +02:00
iabdalkader
aaa51cfdf6 Fix DMA mode 2014-06-20 15:30:02 +02:00
iabdalkader
bd2783f2b1 Enable FIFO 2014-06-20 09:52:46 +02:00
iabdalkader
64b883ceaf Update sensor drivers
* Add set_contrast
* Fix set_brightness
2014-06-19 23:19:11 +02:00
iabdalkader
c1dab26fca Fix more sources to use HAL 2014-06-18 21:20:22 +02:00
iabdalkader
1e4b6fa8fd Update sources to new HAL 2014-06-18 17:28:46 +02:00
iabdalkader
4df970b418 Move files to OMV 2014-06-14 12:28:45 +02:00