FreeCalypso > hg > fc-tourmaline
diff src/cs/drivers/drv_app/r2d/r2d_env.c @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children | 76f65c8bb151 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/drivers/drv_app/r2d/r2d_env.c Fri Oct 16 06:23:26 2020 +0000 @@ -0,0 +1,257 @@ +/** + + @file: r2d_env.c + + @author Christophe Favergeon + + @version 0.5 + + Purpose: Environment for the software entity + of Riviera 2D system (higher software layer) + +*/ + +/* + + Date Modification + ------------------------------------ + 06/02/2001 Create + 10/18/2001 Version 0.5 for first integration with Riviera database + + + (C) Copyright 2001 by Texas Instruments Incorporated, All Rights Reserved +*/ + + +#include "rv/general.h" + +#include "rvm/rvm_gen.h" +#include "rvm/rvm_ext_priorities.h" +#include "rvm/rvm_use_id_list.h" + + +#include "r2d/r2d.h" +#include "r2d/r2d_env.h" +#include "r2d/r2d_messages.h" +#include "r2d/uwire.h" + +#include <string.h> + + +extern void r2d_core(UINT32 param); + +/* global pointer to the error function */ +T_RVM_RETURN (*r2d_error_ft)(T_RVM_NAME swe_name, T_RVM_RETURN error_cause, \ + T_RVM_ERROR_TYPE error_type,T_RVM_STRING error_msg); + + + +/* global addr id */ +T_RVF_ADDR_ID r2d_addr_id; + + + +/* global memory bank ID */ +T_RVF_MB_ID r2d_mb_id; + +/* Global standard graphical context */ +T_R2D_GC_PTR r2d_g_lcd_gc=NULL; + +/* For communication with the task */ +T_R2D_EVT * p_msg; + +extern T_RVM_RETURN r2d_initializations(void); +extern T_RVM_RETURN r2d_cleanup(); +extern UINT32 r2d_get_memory_bank_size(); +/****************************************************************************** +* Function : xxx_get_info +* +* Description : This function is called by the RV manager to learn +* xxx requirements in terms of memory, SWEs... +* +* Parameters : T_RVM_INFO_SWE * swe_info: pointer to the structure to fill +* containing infos related to the xxx SWE. +* +* Return : T_RVM_RETURN +* +* History : 0.1 (20-August-2000) +* +* +******************************************************************************/ +T_RVM_RETURN r2d_get_info(T_RVM_INFO_SWE * infoSWE) +{ + + /* SWE info */ + + memcpy ( (UINT8 *) infoSWE->type_info.type4.swe_name, "R2D", 4); + infoSWE->swe_type = RVM_SWE_TYPE_4; + infoSWE->type_info.type4.stack_size=R2D_STACK_SIZE; + infoSWE->type_info.type4.priority=RVM_R2D_TASK_PRIORITY; + infoSWE->type_info.type4.swe_use_id=R2D_USE_ID; + + + + + /* memory bank info */ + infoSWE->type_info.type4.nb_mem_bank= 1; + + + + memcpy ((UINT8 *) infoSWE->type_info.type4.mem_bank[0].bank_name, "R2D_PRIM", 9); + infoSWE->type_info.type4.mem_bank[0].initial_params.size = r2d_get_memory_bank_size(); + infoSWE->type_info.type4.mem_bank[0].initial_params.watermark = r2d_get_memory_bank_size()-1000; + + + /* linked SWE info */ + /* this SWE does not require any SWE to run */ + infoSWE->type_info.type4.nb_linked_swe = 0; + + + /* generic functions */ + infoSWE->type_info.type4.set_info=r2d_set_info; + infoSWE->type_info.type4.init = r2d_init; + infoSWE->type_info.type4.stop = r2d_stop; + infoSWE->type_info.type4.kill = r2d_kill; + infoSWE->type_info.type4.core = r2d_start; + + + return RVM_OK; +} + + +/****************************************************************************** +* Function : xxx_set_info +* +* Description : This function is called by the RV manager to inform +* the xxx SWE about task_id, mb_id and error function. +* +* Parameters : - T_RVM_TASK_ID taskId[]: array of task_id. +* taskId[0] contains xxx task_id. +* - T_RVF_MB_ID mbId[]: array of memory bank ids. +* - callback function to call in case of unrecoverable error. +* +* Return : T_RVM_RETURN +* +* History : 0.1 (20-August-2000) +* +* +******************************************************************************/ +T_RVM_RETURN r2d_set_info ( T_RVF_ADDR_ID addr_id, + T_RV_RETURN return_path[], + T_RVF_MB_ID bk_id_table[], + T_RVM_CB_FUNC call_back_error_ft) + + +{ + + /* store the pointer to the error function */ + r2d_error_ft = call_back_error_ft ; + + r2d_addr_id=addr_id; + + + /* Store MB id */ + r2d_mb_id = bk_id_table[0]; + + /* return_path of linked SWE -> not used */ + + return RVM_OK; +} + + + + +/****************************************************************************** +* Function : xxx_start +* +* Description : This function is called by the RV manager to start the xxx +* SWE, it is the body of the task. +* +* Parameters : None +* +* Return : T_RVM_RETURN +* +* History : 0.1 (20-August-2000) +* +* +******************************************************************************/ +T_RVM_RETURN r2d_start(void) +{ + /* + ** Branch to main task core + */ + if (r2d_g_lcd_gc!=NULL) + { + r2d_erase(r2d_g_lcd_gc); + r2d_core(0); + return RV_OK; + } + else + return RV_MEMORY_ERR; +} + + + +/****************************************************************************** +* Function : xxx_stop +* +* Description : This function is called by the RV manager to stop the xxx SWE. +* +* Parameters : None +* +* Return : T_RVM_RETURN +* +* History : 0.1 (20-August-2000) +* +* +******************************************************************************/ +T_RVM_RETURN r2d_stop(void) +{ + /* + ** other SWEs have not been killed yet, xxx can send messages to other SWEs + */ + return RVM_OK; +} + +/****************************************************************************** +* Function : xxx_kill +* +* Description : This function is called by the RV manager to kill the xxx +* SWE, after the xxx_stop function has been called. +* +* Parameters : None +* +* Return : T_RVM_RETURN +* +* History : 0.1 (20-August-2000) +* +* +******************************************************************************/ +T_RVM_RETURN r2d_kill (void) +{ + r2d_cleanup(); + return RV_OK; +} + + + + +/****************************************************************************** +* Function : xxx_init +* +* Description : This function is called by the RV manager to initialize the +* xxx SWE before creating the task and calling xxx_start. +* +* Parameters : None +* +* Return : T_RVM_RETURN +* +* History : 0.1 (20-August-2000) +* +* +******************************************************************************/ +T_RVM_RETURN r2d_init(void) +{ +return(r2d_initializations()); +} +