FreeCalypso > hg > fc-magnetite
view src/aci2/mfw/mfw_cam.c @ 639:026c98f757a6
tpudrv12.h & targets/gtm900.h: our current support is for MGC2GSMT version only
As it turns out, there exist two different Huawei-made hw platforms both
bearing the marketing name GTM900-B: one is MG01GSMT, the other is MGC2GSMT.
The two are NOT fw-compatible: aside from flash chip differences which
should be handled by autodetection, the two hw platforms are already known
to have different RFFEs with different control signals, and there may be
other differences not yet known. Our current gtm900 build target is for
MGC2GSMT only; we do not yet have a specimen of MG01GSMT on hand, hence
no support for that version will be possible until and unless someone
provides one.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 30 Jan 2020 18:19:01 +0000 |
parents | 93999a60b835 |
children |
line wrap: on
line source
/* +--------------------------------------------------------------------+ | PROJECT: MMI-Framework (8417) $Workfile:: mfw_cam.c $| | $Author:: NDH $Revision:: 1 $| | CREATED: 21.05.04 $Modtime:: 21.05.04 14:58 $| | STATE : code | +--------------------------------------------------------------------+ MODULE : MFW_CAM PURPOSE : This module contains Camera Interface functions. HISTORY: Nov 29, 2005 REF: MMI-SPR-33833(OMAPS00055207)- x0035544 MMI making Riviera calls without using proper header files. So added appropriate header files. Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg Description: Locosto: MIgration to New LCD APIs Solution: Migrated to New APIs by replacing the old driver APIs with corresponding New LCD APIs Sep 13, 2005 REF: SPR 33992 xdeepadh Description: Image viewer cannot open file when saved in high quality Solution: The quality factor has been rearranged to support saving the images within 64KBlimit. Aug 22 2005, xpradipg - LOCOSTO-ENH-31154 Description: Application to test camera Solution: Implemented the camera application with following functionalities preview, snapshot and image saving. */ /* ** Include Files */ #define ENTITY_MFW /* includes */ #include <string.h> #include "typedefs.h" #include "vsi.h" #include "pei.h" #include "custom.h" #include "gsm.h" #include "message.h" /* included for aci_cmh.h .... */ #include "prim.h" /* included for aci_cmh.h .... */ #include "aci_cmh.h" /* included for mfw_sat.h, included for MmiDummy.h, included for MmiMenu.h */ #include "mfw_mfw.h" #include "mfw_win.h" #include "mfw_cam.h" //#include "img/img_api.h" //included for img_message.h //#include "img/img_message.h" #include "mks/mks_api.h" //#include "r2d/lcd_messages_ti.h" //#include "r2d/lcd_messages.h" #include "r2d/r2d.h" //#include "cama/cama_cfg.h" //#include "cama/cama_i.h" #include "cama/camil_api.h" #include "cama/camil_i.h" //#include "gil/gil_gpf.h" #include "ffs/ffs_api.h" #include "mfw_ffs.h" #if (BOARD == 71) #define ISAMPLE #endif //x0035544 29 Nov, 2005 MMI-SPR-55207 #ifndef NEPTUNE_BOARD //x0035544 Sudha - Guarded the below header file for Neptune. #include "rv/rv_general.h" #endif #include "dspl.h" /*Variable declarations*/ //Variable to track the different Camera states. UBYTE camera_state = CAMERA_STATE_IDLE; //Variable to store the quality factor. static UBYTE quality_factor = QUALITY_STANDARD; T_CAMA_VIEWFINDER_PARAMETERS viewfinder_parameters; //For Future Use, when viewfinder parameters can be configured. //File name for the jpeg image to be saved in FFS. extern char new_filename[CT_FILE_NAME_LENGTH]; //Flag to check whether viewfinder parameter configuration has changed. UBYTE configure_flag = FALSE; //Riviera Callback Functions for CAMIL API static void mfw_cam_save_image_cb(void *parameter); static void mfw_cam_get_viewfinder_param_cb(void *parameter); static void mfw_cam_set_viewfinder_param_cb(void *parameter); static void mfw_cam_set_viewfinder_mode_cb(void *parameter); static void mfw_cam_enable_viewfinder_mode_cb(void *parameter); static void mfw_cam_disable_viewfinder_mode_cb(void *parameter); //Local function prototypes void mfw_cam_set_viewfinder_param(T_CAMA_VIEWFINDER_PARAMETERS param); void mfw_cam_set_viewfinder_param_color(UBYTE blackandwhite); void mfw_cam_set_viewfinder_param_zoom(UBYTE zoom); extern void display_saved_image(BOOL); /* ** Public function Definitions */ /******************************************************************************* $Function: mfw_cam_init $Description: This function initialises the camil interface. $Returns: None $Arguments: None *******************************************************************************/ void mfw_cam_init(void) { T_FFS_DIR dir; T_FFS_RET ffsResult; TRACE_EVENT("mfw_cam_init()"); ffsResult = ffs_opendir(JPEG_CONTENT_DIR,&dir); if(EFFS_NOTFOUND == ffsResult) { //Directory does not exsists, create it and initialize the table and write it to FFS ffsResult = ffs_mkdir(JPEG_CONTENT_DIR); if(EFFS_OK == ffsResult) { TRACE_EVENT("Create Dir Passed"); } else TRACE_EVENT("Create Dir Failed"); } // Initialize CAMIL interface. if (camil_init() != RV_OK) { // @todo : use correct return code for error cases ! return ; } } /******************************************************************************* $Function: mfw_cam_get_viewfinder_param_cb $Description: Callback to get the viewfinder parameters. $Returns: None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_get_viewfinder_param_cb(void *parameter) { viewfinder_parameters = ((T_CAMA_MSG *)parameter)->body.viewfinder_parameters; } /******************************************************************************* $Function: mfw_cam_exit $Description: This function will tidy up any resources used by the Mfw Camera Module on Power Down $Returns: None $Arguments: None *******************************************************************************/ void mfw_cam_exit(void) { TRACE_EVENT("mfw_cam_exit()"); /* nothing to do here... RAM will be automatically cleaned, and the flash wasn't modified */ } /******************************************************************************* $Function: mfw_cam_enable_sensor_dummy_cb $Description: dummy callback functions used to disable the camera $Returns: None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_enable_sensor_dummy_cb(void *parameter) { TRACE_EVENT("mfw_cam_enable_sensor_dummy_cb()"); //Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg //replaced the flag with the function call, to migrate to the new Lcd APIs dspl_control(DSPL_ACCESS_ENABLE); } /******************************************************************************* $Function: mfw_cam_disable_sensor $Description:Disables the camera - Called by the MMI $Returns: Execution status $Arguments: None *******************************************************************************/ SHORT mfw_cam_disable_sensor(void) { TRACE_EVENT("mfw_cam_disable_sensor()"); camil_enable_camera(FALSE, mfw_cam_enable_sensor_dummy_cb); return 1; } /******************************************************************************* $Function: mfw_cam_enable_camera_cb $Description: Callback for Enabling camera. $Returns: None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_enable_camera_cb(void *parameter) { TRACE_EVENT("mfw_cam_enable_camera_cb()"); //Set the camera state to viewfinder. camera_state = CAMERA_STATE_VIEWFINDER; //Disable R2D refresh to stabilize lcd display of viewfinder //Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg //replaced the flag with the function call, to migrate to the new Lcd APIs dspl_control(DSPL_ACCESS_DISABLE); //Set the viewfinder parameters mfw_cam_set_viewfinder_param(viewfinder_parameters); } /******************************************************************************* $Function: mfw_cam_launch_viewfinder_dma $Description:launch camera in viewfinder mode $Returns:Execution status $Arguments: None *******************************************************************************/ SHORT mfw_cam_launch_viewfinder_dma(void) { TRACE_EVENT("mfw_cam_launch_viewfinder_dma()"); camil_enable_camera (TRUE, mfw_cam_enable_camera_cb); return 1; } /******************************************************************************* $Function: mfw_cam_take_snapshot_cb $Description: Callback for Camera take snapshot function. $Returns: None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_take_snapshot_cb(void *parameter) { TRACE_EVENT("mfw_cam_take_snapshot_cb()"); //Set the camera state to Snapshot camera_state = CAMERA_STATE_SNAPSHOT; } /******************************************************************************* $Function: mfw_cam_take_snapshot $Description:take a snapshot $Returns:Execution status $Arguments: None *******************************************************************************/ SHORT mfw_cam_take_snapshot(void) { TRACE_EVENT("mfw_cam_take_snapshot()"); //Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg //replaced the flag with the function call, to migrate to the new Lcd APIs dspl_control(DSPL_ACCESS_DISABLE); camil_take_snapshot(mfw_cam_take_snapshot_cb); return 1; } /******************************************************************************* $Function: mfw_camera_test_save_snapshot_cb $Description:save snapshot in phone memory $Returns:Execution status $Arguments: None *******************************************************************************/ SHORT mfw_cam_save_snapshot(void) { //Sep 13, 2005 REF: SPR 33992 xdeepadh //The fullpath will be included. char filename[CT_FULL_PATH_LENGTH]; TRACE_EVENT("mfw_cam_save_snapshot()"); sprintf(filename,"%s/%s%d.jpg",JPEG_CONTENT_DIR, new_filename,(int)FFS_flashData.camera_file_counter); TRACE_EVENT_P1("filename to be saved is %s",filename); if(camil_save_image((UINT16)mfw_cam_get_quality_factor(),filename,mfw_cam_save_image_cb) == RV_OK) { TRACE_EVENT("mfw_cam_save_snapshot() passed"); FFS_flashData.camera_file_counter++; flash_write(); return MFW_CAM_OK; } else { TRACE_EVENT("mfw_cam_save_snapshot() failed"); return MFW_CAM_FAILED; } } /******************************************************************************* $Function: mfw_cam_save_image_cb $Description: Callback for save image $Returns:None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_save_image_cb(void *parameter) { T_RV_RET status; TRACE_EVENT("mfw_cam_save_image_cb()"); camera_state = CAMERA_STATE_VIEWFINDER; //Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipgn //replaced the flag with the function call, to migrate to the new Lcd APIs dspl_control(DSPL_ACCESS_ENABLE); if( ((T_CAMA_MSG*)parameter)->status != RV_OK) { TRACE_EVENT("ERROR SAVING IMAGE"); display_saved_image(FALSE); } else { TRACE_EVENT("IMAGE SAVED"); display_saved_image(TRUE); } } /******************************************************************************* $Function: mfw_cam_set_quality_factor $Description: Set the quality factor .This will be used while saving the jpeg image in ffs. $Returns: None $Arguments: factor-quality factor to be used to save the image. *******************************************************************************/ void mfw_cam_set_quality_factor(UBYTE factor) { TRACE_EVENT("mfw_cam_set_quality_factor()"); quality_factor = factor; } /******************************************************************************* $Function: mfw_cam_get_quality_factor $Description: This function returns the quality factor. $Returns: The quality factor $Arguments: None *******************************************************************************/ UBYTE mfw_cam_get_quality_factor() { TRACE_EVENT("mfw_cam_get_quality_factor()"); return quality_factor; } /******************************************************************************* $Function: mfw_cam_set_color $Description: $Returns: $Arguments: *******************************************************************************/ void mfw_cam_set_color(UBYTE factor) { TRACE_EVENT("mfw_cam_set_color()"); } /******************************************************************************* $Function: mfw_cam_set_viewfinder_param_cb $Description: Callback for the Viewfinder set parameters. $Returns:None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_set_viewfinder_param_cb(void *parameter) { TRACE_EVENT("mfw_cam_set_viewfinder_param_cb()"); configure_flag = FALSE; /* start frame loop */ camil_set_viewfinder_mode(mfw_cam_set_viewfinder_mode_cb); } /******************************************************************************* $Function: mfw_cam_set_viewfinder_param_color_cb $Description: Callback for Viewfinder set Parameters $Returns: None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_set_viewfinder_param_color_cb(void *parameter) { TRACE_EVENT("mfw_cam_set_viewfinder_param_color_cb()"); } /******************************************************************************* $Function: mfw_cam_set_viewfinder_param $Description: This function sets the Viewfinder Parameters. The camera will be started in the viewfinder mode. $Returns: None $Arguments: param- Viewfinder Parameters *******************************************************************************/ void mfw_cam_set_viewfinder_param(T_CAMA_VIEWFINDER_PARAMETERS param) { TRACE_EVENT("mfw_cam_set_viewfinder_param()"); if(configure_flag) { camil_set_viewfinder_parameters(¶m, mfw_cam_set_viewfinder_param_cb); } else { TRACE_EVENT("mfw_cam_set_viewfinder_param- no param chnaged."); /* start frame loop */ camil_set_viewfinder_mode(mfw_cam_set_viewfinder_mode_cb); } } /******************************************************************************* $Function: mfw_cam_set_viewfinder_param_color $Description: Sets the Viewfinder Parameter. $Returns: None $Arguments: blackandwhite- Viewfinder parameter *******************************************************************************/ void mfw_cam_set_viewfinder_param_color(UBYTE blackandwhite) { TRACE_EVENT("mfw_cam_set_viewfinder_param_color()"); viewfinder_parameters.black_and_white = blackandwhite; //Configurations have changed. Set the configure_flag to TRUE. configure_flag = TRUE; //Set the Viewfinder parameters . //camil_set_viewfinder_parameters(&viewfinder_parameters, mfw_cam_set_viewfinder_param_color_cb); } /******************************************************************************* $Function: mfw_cam_set_viewfinder_param_zoom $Description: Sets the Viewfinder Parameter. $Returns: None $Arguments: zoom- Viewfinder parameter *******************************************************************************/ void mfw_cam_set_viewfinder_param_zoom(UBYTE zoom) { TRACE_EVENT("mfw_cam_set_viewfinder_param_zoom()"); viewfinder_parameters.zoom = zoom; //Configurations have chnaged. Set the configure_flag to TRUE. configure_flag = TRUE; //Set the Viewfinder parameters . //camil_set_viewfinder_parameters(&viewfinder_parameters, mfw_cam_set_viewfinder_param_color_cb); } /******************************************************************************* $Function: mfw_cam_set_viewfinder_mode_cb $Description: Callback for Setting Viewfinder. $Returns: None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_set_viewfinder_mode_cb(void *parameter) { TRACE_EVENT("mfw_cam_set_viewfinder_mode_cb()"); //added the refresh disable and state setting //Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg //replaced the flag with the function call, to migrate to the new Lcd APIs dspl_control(DSPL_ACCESS_DISABLE); camera_state = CAMERA_STATE_VIEWFINDER; } /******************************************************************************* $Function: mfw_cam_set_viewfinder_mode $Description: This function disables and reenables camera and sets the viewfinder mode. $Returns:None $Arguments: None *******************************************************************************/ #ifdef ISAMPLE void mfw_cam_set_viewfinder_mode(void) { TRACE_EVENT("mfw_cam_set_viewfinder_mode()"); camera_state = CAMERA_STATE_VIEWFINDER; camil_set_viewfinder_mode(mfw_cam_set_viewfinder_mode_cb); } #else //For ESAMPLE void mfw_cam_set_viewfinder_mode(void) { TRACE_EVENT("mfw_cam_set_viewfinder_mode()"); camil_enable_camera(FALSE, mfw_cam_disable_viewfinder_mode_cb); } #endif /******************************************************************************* $Function: mfw_cam_enable_viewfinder_mode_cb $Description: Callback for camil_enable_camera $Returns:None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_enable_viewfinder_mode_cb(void *parameter) { TRACE_EVENT("mfw_cam_enable_viewfinder_mode_cb()"); //Disable R2D refresh (to be sure) //Sept 15, 2005 REF: LOCOSTO-ENH-34257 - xpradipg //replaced the flag with the function call, to migrate to the new Lcd APIs dspl_control(DSPL_ACCESS_DISABLE); camil_set_viewfinder_mode(mfw_cam_set_viewfinder_mode_cb); } /******************************************************************************* $Function: mfw_cam_disable_viewfinder_mode_cb $Description: Callback for disabling camera $Returns:None $Arguments: Callback Parameter *******************************************************************************/ static void mfw_cam_disable_viewfinder_mode_cb(void *parameter) { TRACE_EVENT("mfw_cam_disable_viewfinder_mode_cb()"); camil_enable_camera(TRUE, mfw_cam_enable_viewfinder_mode_cb); }