FreeCalypso > hg > fc-tourmaline
view src/cs/riviera/rvm/rvm_i.h @ 287:3dee79757ae4
UI fw: load handheld audio mode on boot
We have now reached the point where use of audio mode config files
should be considered mandatory. In ACI usage we can tell users that
they need to perform an AT@AUL of some appropriate audio mode, but
in UI-enabled fw we really need to have the firmware load audio modes
on its own, so that correct audio config gets established when the
handset or development board runs on its own, without a connected host
computer.
Once have FC Venus with both main and headset audio channels and
headset plug insertion detection, our fw will need to automatically
load the handheld mode or the headset mode depending on the plug
insertion state. For now we load only the handheld mode, which has
been tuned for FC-HDS4 on FC Luna.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 13 Nov 2021 03:20:57 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/****************************************************************************/ /* */ /* Name rvm_i.h */ /* */ /* Function this file contains the definitions of internal data */ /* structures for the RVM */ /* */ /* */ /* Version 0.1 */ /* */ /* Date Modification */ /* ------------------------------------ */ /* 20/01/2000 Create */ /* */ /* Author David Lamy-Charrier (dlamy@tif.ti.com) */ /* */ /* (C) Copyright 2000 by Texas Instruments Incorporated, All Rights Reserved*/ /****************************************************************************/ #ifndef __RVM_I_H_ #define __RVM_I_H_ #ifndef _WINDOWS #include "config/rv.cfg" #include "config/debug.cfg" #endif #include "rvf/rvf_api.h" #include "rvm/rvm_api.h" #include "rvm/rvm_gen.h" //#include "rvf/rvf_pool_size.h" #include "rvm/rvm_pool_size.h" //#include "rv_general.h" //?? /* MSG MUST BE VERIFIED */ #define RVM_MSG_OFFSET BUILD_MESSAGE_OFFSET(RVM_USE_ID) #define RVM_START_T2_MSG (RVM_MSG_OFFSET | 0x001) #define RVM_RT_MOD_YIELD_T2_MSG (RVM_MSG_OFFSET | 0x002) #define RVM_STOP_MSG (RVM_MSG_OFFSET | 0x003) #define RVM_STOP_REQ_MSG (RVM_MSG_OFFSET | 0x004) #define RVM_YIELD_T2_PS_TM 10 #define RVM_YIELD_T2_PRI_MSG_CNT 10 #define T_RVM_TASK_ID T_RVF_G_ADDR_ID //UINT8 #define SYSTEM_TASK_MEM 204 #define MAX_GRPS MAX_HOSTING_TASKS #define MAX_COMPOSITES MAX_PARASITES /* definitions related to the RVM as a RVF task */ #define RVM_EXPECTED_EVENT RVF_TASK_MBOX_0_EVT_MASK #define RVM_MAILBOX RVF_TASK_MBOX_0 #if (defined BLUETOOTH) || (TEST==1) #define RVM_MAX_SWE_USING (5) /* max number of SW Entities using another one within a given appli */ #else #define RVM_MAX_SWE_USING (3) /* max number of SW Entities using another one within a given appli */ #endif #define RVM_INVALID_SWE_INDEX (0xff) extern T_RVF_MB_ID rvm_mem_bank; extern T_RVF_MB_ID rvm_sys_mem_bank; extern T_RVF_MB_ID rvm_timer_mem_bank; extern T_RVF_MB_ID rvm_tm_notify_mem_bank; extern T_RVF_MB_ID rvm_stack_mem_bank; /* parameters of mb in use */ typedef struct { T_RVF_MB_NAME mb_name; T_RVF_MB_PARAM mb_initial_param; }T_RVM_APPLI_MB_PARAMS; #define RVM_INVALID_GROUP_INDEX (0xFFFF) #define RVM_OWN_GROUP (0xFFFE) /* list of possible event in the RVM */ //#define RVM_START_APPLI (60000) //#define RVM_STOP_APPLI (60001) //#define RVM_ERROR (60002) typedef enum { SWE_NOT_STARTED = 0, SWE_RUNNING = 1, SWE_STOPPING = 2, SWE_KILLED = 3 }T_RVM_SWE_STATE; /* structure of message */ typedef struct { T_RV_HDR header; T_RV_RETURN_PATH rp; UINT8 swe_num; }T_RVM_MSG; /* Information about each known SWE This is static information and is built at RVM initialization */ typedef struct { T_RVM_NAME swe_name; T_RVM_USE_ID swe_use_id; T_RVM_GET_INFO_FUNC swe_get_info; /* pointer to its get_info function */ T_RVM_SWE_TYPE swe_type; /* type of the SWE */ T_RVF_G_ADDR_ID swe_addr_id; /* unique address id of the SWE */ UINT16 group_index; /* for type 2 SWE, index of the hosting group in the group array. */ UINT16 swe_stack_size; /* size of the task stack */ UINT8 swe_priority; /* priority of the SWE */ T_RVM_SWE_STATE swe_state; /* state of the SWE */ T_RVF_BUFFER* stack_ptr; /* pointer to the stack of the task */ UINT8 nb_using_appli; /* nb of application which uses this SWE */ UINT8 using_appli[RVM_MAX_SWE_USING]; /* pointer to each application which use this SWE */ T_RV_RETURN_PATH swe_return_path; T_RV_RETURN_PATH mmi_return_path; }T_RVM_KNOWN_SWE; typedef struct { T_RVM_SWE_STATE host_state; UINT8 task_id; UINT16 nb_hosted_swe; UINT16 stack_size; UINT8 task_priority; } T_RVM_GROUP_INFO; /* DEPRECATED! */ /* structure containing the SWE generic functions pointers */ typedef struct { T_RVM_RETURN (* set_info) ( T_RVF_ADDR_ID addr_id, T_RV_RETURN_PATH return_path[], T_RVF_MB_ID bk_id_table[], T_RVM_CB_FUNC call_back_error_ft); T_RVM_RETURN (* init) (void); T_RVM_RETURN (* start) (void); T_RVM_RETURN (* handle_message) (T_RV_HDR * msg); T_RVM_RETURN (* handle_timer) (T_RV_HDR * msg); T_RVM_RETURN (* core) (void); T_RVM_RETURN (* stop) (T_RV_HDR* hdr); T_RVM_RETURN (* stop1) (void); T_RVM_RETURN (* kill) (void); } T_RVM_SWE_FUNCTIONS; /* Information about each processing SWE This information is dynamic and lives during start or stop process only*/ typedef struct _t_rvm_processing_swe { UINT8 swe_id; // From known SWE array index T_RVM_SWE_TYPE swe_type; UINT16 stack_size; UINT8 priority; UINT8 nb_requested_mb; UINT8 nb_created_mb; T_RVM_APPLI_MB_PARAMS swe_mem_bank[RVM_MAX_NB_MEM_BK]; T_RVM_SWE_FUNCTIONS rvm_functions; T_RVF_MB_ID bk_id_table[RVM_MAX_NB_MEM_BK]; struct _t_rvm_processing_swe *next_swe; } T_RVM_PROCESSING_SWE; typedef struct { T_RV_HDR hdr; UINT8 grp[MAX_PARASITES]; // to do ..... constant! } T_RVM_START_T2_MSG; typedef struct { T_RV_HDR header; UINT8 swe_num; T_RV_RETURN_PATH rp; T_RVM_SWE_STATE status; } T_RVM_STOP_MSG; /*typedef struct { T_RV_HDR header; UINT8 swe_num; // T_RVF_G_ADDR_ID target; // UINT8 attempts; // T_RVM_SWE_STATE status; } T_RVM_STOP_REQ_MSG; */ typedef struct { T_RV_HDR hdr; UINT16 val; } T_RVM_RT_MOD_YIELD_T2_MSG; /* information about groups of type2 SWE */ #define T_GD_ID UINT8 typedef struct { T_RVM_SWE_STATE host_state; T_RVF_GD_ID group_directive; T_RVF_G_ADDR_ID host_task_addr; // UINT16 hosted_swe_addr[10]; UINT8 hosted_swe_db_index[MAX_PARASITES]; // to do ..... constant! UINT16 stack_size; UINT8 task_priority; } T_RVM_GROUP_DIRECTIVE; T_RV_RET rvm_t2_proxy(void); T_RV_RET rvm_t3_proxy(void); //typedef TASKPTR rvm_proxy; /* definitions related to the RVM as a RVF task */ #define RVM_TASK_ID (0) #define RVM_PRIORITY (220) /* To do ... should correspond to RVF definitions */ #define RVM_TASK 0 /* A-M-E-N-D-E-D ! */ #define ET2_HOST_TASK 1 #define ET3_TASK 3 #define ET4_TASK 4 #define ET2_VTASK 5 #define PRE_RV_INIT_TASK 10 #define RVM_ERROR_MSG_MAX_LENGTH (100) #define DEFAULT_TIME_SLICING 0 /* default is no time-slicing */ #define RVM_STACK_SIZE RVF_RVM_STACK_SIZE /*#define RVM_STACK_SIZE (1500) */ /* memory bank related definitions */ #define RVM_PRIM_MB "RVM_PRIM" #define RVM_PRIM_MB_SIZE RVF_RVM_MB1_SIZE //A-M-E-N-D-E-D #define RVM_SYS_MB "RVM_SYS" #define RVM_SYS_MB_SIZE RVF_RVM_MB3_SIZE #define RVM_TIMER_MB "RVM_TIMER" #define RVM_TIMER_MB_SIZE RVF_RVM_MB4_SIZE #define RVM_NOTIFY_MB "RVM_NOTIFY" #define RVM_NOTIFY_MB_SIZE RVF_RVM_MB5_SIZE #define RVM_TIMER_MB_WATERMARK (RVM_TIMER_MB_SIZE - 500) #define RVM_NOTIFY_MB_WATERMARK (RVM_NOTIFY_MB_SIZE - 500) #if (defined BLUETOOTH) || (TEST==1) || (TI_PROFILER == 1) || (TI_NUC_MONITOR == 1) #define RVM_PRIM_MB_WATERMARK (RVM_PRIM_MB_SIZE - 1000) #define RVM_SYS_MB_WATERMARK (RVM_SYS_MB_SIZE - 1000) #else #define RVM_PRIM_MB_WATERMARK (RVM_PRIM_MB_SIZE - 100) #define RVM_SYS_MB_WATERMARK (RVM_SYS_MB_SIZE - 100) #endif #define RVM_STACK_MB "RVM_STACKS" #define RVM_STACK_MB_SIZE (RVM_STACK_SIZE + RVF_RVM_MB2_SIZE) #define RVM_STACK_MB_WATERMARK RVM_STACK_MB_SIZE /***************************************/ /* RVM Internal functions declarations */ /***************************************/ /* function called from rvm_task.c in order to check if an application is startable or stoppable*/ /* functions declarations */ T_RVM_RETURN rvm_check_application (T_RVM_USE_ID swe_use_id, UINT8* num_swe, T_RVM_APPLI_ACTION appli_action); T_RVM_RETURN rvm_error ( T_RVM_NAME swe_name, T_RVM_RETURN error_cause, T_RVM_ERROR_TYPE error_type, T_RVM_STRING error_msg); void rvm_task (UINT32 param); void rvm_launch_appli( T_RVM_MSG * msg_Ptr); void rvm_stop_appli( T_RVM_STOP_MSG * msg_Ptr); void rvm_swe_has_stopped(T_RVM_STOP_MSG* p_msg); T_RVM_RETURN rvm_dup_stop_msg(T_RVM_STOP_MSG* i_msg, T_RVM_STOP_MSG* o_msg) ; void rvm_suspend_swe(UINT8 swe_index); T_RVM_RETURN rvm_kill_swe(UINT8 swe_index); UINT8 rvm_get_mb_level(UINT8 swe_index) ; void rvm_shut_down_appli( T_RVM_MSG * msg_Ptr); void rvm_shutdown_swe(UINT8 index) ; T_RVM_TASK_ID rvm_allocate_task_id(UINT8 isRealTask); T_RVM_RETURN rvm_delete_used_memory ( T_RVM_PROCESSING_SWE * appli); T_RVM_RETURN rvm_build_swe_list(T_RVM_PROCESSING_SWE ** list, UINT8 swe_num, UINT8 mode); T_RVM_RETURN rvm_check_memory_requirement( T_RVM_PROCESSING_SWE * appli); // deprected ! T_RVM_RETURN rvm_verify_memory_requirement( T_RVM_PROCESSING_SWE * appli,\ T_RVM_GROUP_DIRECTIVE* gd, UINT8 cnt); T_RVM_RETURN rvm_allocate_mb( T_RVM_PROCESSING_SWE * appli); T_RVM_RETURN rvm_initialize_swe( T_RVM_PROCESSING_SWE * appli, T_RVM_GROUP_DIRECTIVE* gd, UINT8 cnt); T_RVM_RETURN rvm_allocate_stack_buffer( UINT32 stack_size, T_RVF_BUFFER** stack_ptr ); T_RVM_RETURN rvm_delete_created_mb (T_RVM_PROCESSING_SWE * appli); T_RVM_RETURN rvm_clean_env( T_RVM_PROCESSING_SWE * appli); T_RVM_RETURN rvm_generic_swe_core(void); T_RVM_RETURN rvm_init_swe_db (void); T_RVM_RETURN rvm_snd_msg_to_upper (T_RVM_APPLI_ACTION action, T_RVM_RETURN result, UINT8 swe_num, T_RV_RETURN_PATH return_path); T_RVM_RETURN rvm_get_swe_index( UINT8 * index, T_RVM_USE_ID swe_use_id); T_RVM_RETURN rvm_start_group_req(T_RVF_G_ADDR_ID addrId, UINT8* addrGrp) ; /* ** Trace Macros */ #define RVM_TRACE_ERROR(string)\ rvf_send_trace (string,(sizeof(string)-1),NULL_PARAM,RV_TRACE_LEVEL_ERROR,RVM_USE_ID ) #define RVM_TRACE_ERROR_PARAM(string, param)\ rvf_send_trace (string,(sizeof(string)-1),(UINT32)param,RV_TRACE_LEVEL_ERROR,RVM_USE_ID ) #define RVM_TRACE_WARNING(string)\ rvf_send_trace (string,(sizeof(string)-1),NULL_PARAM,RV_TRACE_LEVEL_WARNING,RVM_USE_ID ) #define RVM_TRACE_WARNING_PARAM(string, param)\ rvf_send_trace (string,(sizeof(string)-1),(UINT32)param,RV_TRACE_LEVEL_WARNING,RVM_USE_ID ) #define RVM_TRACE_DEBUG_HIGH(string)\ rvf_send_trace (string,(sizeof(string)-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_HIGH,RVM_USE_ID ) #define RVM_TRACE_DEBUG_HIGH_PARAM(string, param)\ rvf_send_trace (string,(sizeof(string)-1),(UINT32)param,RV_TRACE_LEVEL_DEBUG_HIGH,RVM_USE_ID ) #define RVM_TRACE_DEBUG_LOW(string)\ rvf_send_trace (string,(sizeof(string)-1),NULL_PARAM,RV_TRACE_LEVEL_DEBUG_LOW,RVM_USE_ID ) #define RVM_TRACE_DEBUG_LOW_PARAM(string, param)\ rvf_send_trace (string,(sizeof(string)-1),(UINT32)param,RV_TRACE_LEVEL_DEBUG_LOW,RVM_USE_ID ) #endif /* __RVM_I_H_ */