PACKED void * diag_userDataBackUp_handler(PACKED void *req_pkt_ptr,uint16 pkt_len)
{
	udbp_req_type		*req_ptr = (udbp_req_type *) req_pkt_ptr;
	udbp_rsp_type	  	*rsp_ptr = NULL;

	const rsp_len = sizeof( udbp_rsp_type ); 
	
	rsp_ptr = (udbp_rsp_type *) diagpkt_alloc (DIAG_USET_DATA_BACKUP, rsp_len);

    if(rsp_ptr)
	{
		switch(req_ptr->header.sub_cmd)
  		{
  			case SRD_INIT_OPERATION :
				diag_SRD_Init(req_ptr,rsp_ptr);							
				break;
				
			case USERDATA_BACKUP_REQUEST :
				diag_userDataBackUp_entrySet(req_ptr,rsp_ptr);
				break;

			case GET_DOWNLOAD_INFO :
				break;

			case EXTRA_NV_OPERATION :
#ifdef LG_FW_SRD_EXTRA_NV				
				diag_extraNv_entrySet(req_ptr,rsp_ptr);
#endif
				break;
				
			case PRL_OPERATION :
#ifdef LG_FW_SRD_PRL				
				diag_PRL_entrySet(req_ptr,rsp_ptr);
#endif
				break;
				
			default :
  				rsp_ptr = (void *) diagpkt_err_rsp (DIAG_BAD_PARM_F, req_ptr, pkt_len);
				break;
		
		}
	}
	/* Execption*/	
	if (rsp_ptr == NULL){
		return NULL;
	}
	if (!diagcomm_status()){
		diagpkt_free(rsp_ptr);
		return NULL;
	}

	return rsp_ptr;
}
Example #2
0
/*===========================================================================
FUNCTION REX_DIAG_COREDUMP_HANDLER

DESCRIPTION
   Forces a core dump
============================================================================*/
PACKED void * rex_diag_coredump_handler(
   PACKED void *in_req_ptr,
   word         pkt_len
)
{
   DIAG_SUBSYS_REX_COREDUMP_F_req_type *req_ptr;
   DIAG_SUBSYS_REX_COREDUMP_F_rsp_type *rsp_ptr;

   req_ptr = (DIAG_SUBSYS_REX_COREDUMP_F_req_type *) in_req_ptr;

   /* Verify that the length passed in and the action specified are
   ** valid.
   */
   if ( pkt_len != sizeof(DIAG_SUBSYS_REX_COREDUMP_F_req_type) )
   {
       return diagpkt_err_rsp(
                 DIAG_BAD_LEN_F,
                 req_ptr,
                 sizeof(DIAG_SUBSYS_REX_COREDUMP_F_req_type)
              );
   }

   rsp_ptr = (DIAG_SUBSYS_REX_COREDUMP_F_rsp_type *)
                          diagpkt_alloc(
                             diagpkt_get_cmd_code( req_ptr ),
                             sizeof(DIAG_SUBSYS_REX_COREDUMP_F_rsp_type)
                          );

   if ( rsp_ptr == NULL )
   {
      /* Allocation failed, and diagpkt_err_rsp will fail as well.
      ** So just return NULL.
      */
      return NULL;
   }

   (void)memcpy(
      (void*)rsp_ptr,
      (void*)req_ptr,
      sizeof(diagpkt_subsys_header_type)
   );

#ifdef FEATURE_REX_CORE_DUMP
   switch( req_ptr->action )
   {
      case 1:
         rex_jettison_core();
         break;

      case 2:
         rex_log_core_dump( __LINE__, __FILE__, "CORE_DUMP: %d %d %d", 1, 2, 3 );
         break;

      case 3:
         ERR_FATAL( "REX CORE DUMP TEST",0,0,0 );
         break;
   }
#endif

   return (void *) rsp_ptr;
} /* END rex_diag_coredump_handler */
Example #3
0
/*===========================================================================
FUNCTION REX_DIAG_CODECOVERAGE_HANDLER

DESCRIPTION
  This function handles the request to start or stop collection of code
  coverage information.
============================================================================*/
PACKED void * rex_diag_codecoverage_handler(
   PACKED void *req_ptr,
   word         pkt_len
)
{
   DIAG_SUBSYS_REX_CODECOVERAGE_F_req_type *codecoverage_req_ptr;
   DIAG_SUBSYS_REX_CODECOVERAGE_F_rsp_type *codecoverage_rsp_ptr;

   codecoverage_req_ptr = (DIAG_SUBSYS_REX_CODECOVERAGE_F_req_type *) req_ptr;

   /* Verify that the length passed in and the action specified are
   ** valid.
   */
   if ( pkt_len != sizeof(DIAG_SUBSYS_REX_CODECOVERAGE_F_req_type) )
   {
       return diagpkt_err_rsp(
                 DIAG_BAD_LEN_F,
                 codecoverage_req_ptr,
                 sizeof(DIAG_SUBSYS_REX_CODECOVERAGE_F_req_type)
              );
   }

   if( ( codecoverage_req_ptr->action != 1 ) &&
       ( codecoverage_req_ptr->action != 2 ) )
   {
       return diagpkt_err_rsp(
                 DIAG_BAD_PARM_F,
                 codecoverage_req_ptr,
                 sizeof(DIAG_SUBSYS_REX_CODECOVERAGE_F_req_type)
              );
   }

   codecoverage_rsp_ptr = (DIAG_SUBSYS_REX_CODECOVERAGE_F_rsp_type *)
                          diagpkt_alloc(
                             diagpkt_get_cmd_code( req_ptr ),
                             sizeof(DIAG_SUBSYS_REX_CODECOVERAGE_F_rsp_type)
                          );

   if ( codecoverage_rsp_ptr == NULL )
   {
      /* Allocation failed, and diagpkt_err_rsp will fail as well.
      ** So just return NULL.
      */
      return NULL;
   }

   switch( codecoverage_req_ptr->action )
   {
      case 1:
         rex_codecoverage_enable( );
         codecoverage_rsp_ptr->status = 1;
         break;

      case 2:
         rex_codecoverage_disable( );
         codecoverage_rsp_ptr->status = 1;
         break;

      default:
         /* This should never happen.
         */
         codecoverage_rsp_ptr->status = 0;
         break;
   }

  return (void *) codecoverage_rsp_ptr;

} /* END rex_diag_codecoverage_handler */
Example #4
0
/*===========================================================================

FUNCTION REX_DIAG_TASKPROFILE_HANDLER

DESCRIPTION
  This function handles the request to start or stop program counter
  profiling.

  action = 1 -> enable task profiling
  action = 2 -> disable task profiling

============================================================================*/
PACKED void * rex_diag_taskprofile_handler(
   PACKED void *req_ptr,
   uint16       pkt_len
)
{
   DIAG_SUBSYS_REX_TASKPROFILE_F_req_type *taskprofile_req_ptr;
   DIAG_SUBSYS_REX_TASKPROFILE_F_rsp_type *taskprofile_rsp_ptr;

   taskprofile_req_ptr = (DIAG_SUBSYS_REX_TASKPROFILE_F_req_type *) req_ptr;

   /* Verify that the length passed in and the action specified are
   ** valid.
   */
   /*
   if ( pkt_len != sizeof(DIAG_SUBSYS_REX_TASKPROFILE_F_req_type) )
   {
       return diagpkt_err_rsp(
                 DIAG_BAD_LEN_F,
                 taskprofile_req_ptr,
                 sizeof(DIAG_SUBSYS_REX_TASKPROFILE_F_req_type)
              );
   }
*/
   if( ( taskprofile_req_ptr->action == 0 ) ||
       ( taskprofile_req_ptr->action > 3 ) )
   {
       return diagpkt_err_rsp(
                 DIAG_BAD_PARM_F,
                 taskprofile_req_ptr,
                 sizeof(DIAG_SUBSYS_REX_TASKPROFILE_F_req_type)
              );
   }

   taskprofile_rsp_ptr = (DIAG_SUBSYS_REX_TASKPROFILE_F_rsp_type *)
                         diagpkt_alloc(
                            diagpkt_get_cmd_code( req_ptr ),
                            sizeof(DIAG_SUBSYS_REX_TASKPROFILE_F_rsp_type)
                         );

   if ( taskprofile_rsp_ptr == NULL )
   {
      /* Allocation failed, and diagpkt_err_rsp will fail as well.
      ** So just return NULL.
      */
      return NULL;
   }

   (void)memcpy(
      (void*)taskprofile_rsp_ptr,
      (void*)taskprofile_req_ptr,
      sizeof(diagpkt_subsys_header_type)
   );

   switch( taskprofile_req_ptr->action )
   {
#ifdef FEATURE_REX_PROFILE
      case 1:
         MSG_HIGH( "PROF - ENABLE",0,0,0 );

         rex_enable_task_profile(
            taskprofile_req_ptr->sys_period,
            taskprofile_req_ptr->task_period,
            taskprofile_req_ptr->tasks_per_period
         );
         taskprofile_rsp_ptr->status = 1;
         break;
#endif

#ifdef FEATURE_REX_PROFILE
      case 2:
         MSG_HIGH( "PROF - DISABLE",0,0,0 );
         rex_disable_task_profile();
         taskprofile_rsp_ptr->status = 1;
         break;
#endif

#ifdef FEATURE_REX_PROFILE
      case 3:
         rextp_log_per_task_profile();
         break;
#endif

      default:
         taskprofile_rsp_ptr->status = 0;
         break;
   }

  return (void *) taskprofile_rsp_ptr;

} /* rex_diag_taskprofile_handler */