/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
File: OCTVC1_MODULE.h
Copyright (c) 2018 Octasic Inc. All rights reserved.
Description: 
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see .
Release: OCTSDR Software Development Kit OCTSDR_GSM-02.11.00-B1927 (2018/04/27)
$Revision: $
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
#ifndef __OCTVC1_MODULE_H__
#define __OCTVC1_MODULE_H__
/*****************************  INCLUDE FILES  *******************************/
#include "../octdev_types.h"
#include "octvc1_base.h"
#include "octvc1_handle.h"
/************************  COMMON DEFINITIONS  *******************************/
/*-------------------------------------------------------------------------------------
 	Resource
-------------------------------------------------------------------------------------*/
#define cOCTVC1_RESOURCE_DESCRIPTION_MAX_LENGTH				15		
/*-------------------------------------------------------------------------------------
	tOCTVC1_RESOURCE
 		System memory
 Members:
	szDescription
 		Resource description
	ulModuleId
 		Module Id.
	ulLocalMemorySize
 		Local Memory size in bytes.
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_INT8	szDescription[(cOCTVC1_RESOURCE_DESCRIPTION_MAX_LENGTH+1)];/* NOSWAPMAC */
	tOCT_UINT32	ulModuleId;
	tOCT_UINT32	ulLocalMemorySize;
} tOCTVC1_RESOURCE;
/*-------------------------------------------------------------------------------------
 	Last process identifiers
-------------------------------------------------------------------------------------*/
#define cOCTVC1_PROCESS_LAST_OADF_PROCESS_TYPE_ENUM_ID		5		
/*-------------------------------------------------------------------------------------
 	Module Data Header Definition
-------------------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------------------
	tOCTVC1_MODULE_ID_ENUM :
-------------------------------------------------------------------------------------*/
#define tOCTVC1_MODULE_ID_ENUM								tOCT_UINT32
#define cOCTVC1_MODULE_ID_ENUM_GENERIC						0x00	
#define cOCTVC1_MODULE_ID_ENUM_MAIN							0x01	
#define cOCTVC1_MODULE_ID_ENUM_PKT_API						0x02	
#define cOCTVC1_MODULE_ID_ENUM_CTRL							0x03	
#define cOCTVC1_MODULE_ID_ENUM_RESERVED						0x04	
#define cOCTVC1_MODULE_ID_ENUM_JOB							0x05	
#define cOCTVC1_MODULE_ID_ENUM_HW							0x06	
#define cOCTVC1_MODULE_ID_ENUM_IRSC							0x07	
/*-------------------------------------------------------------------------------------
 	Application modules definitions.
-------------------------------------------------------------------------------------*/
#define cOCTVC1_MODULE_ID_ENUM_OBM							0x08	
#define cOCTVC1_MODULE_ID_ENUM_APP_TEST						0x09	
#define cOCTVC1_MODULE_ID_ENUM_SDR							0x0A	
#define cOCTVC1_MODULE_ID_ENUM_GSM							0x0B	
#define cOCTVC1_MODULE_ID_ENUM_LTE							0x0C	
#define cOCTVC1_MODULE_ID_ENUM_3G_NODEB						0x0D	
#define cOCTVC1_MODULE_ID_ENUM_RUS							0x0E	
#define cOCTVC1_MODULE_ID_ENUM_LIB_TOOLKIT					0x0F	
#define cOCTVC1_MODULE_ID_ENUM_UE3G							0x10	
#define cOCTVC1_MODULE_ID_ENUM_TOOLBOX						0x11	
#define cOCTVC1_MODULE_ID_ENUM_LTE_UE						0x12	
#define cOCTVC1_MODULE_ID_ENUM_GSM_UE						0x13	
#define cOCTVC1_MODULE_ID_ENUM_CDMA2K						0x14	
#define cOCTVC1_MODULE_ID_BIT_OFFSET						24		
#define cOCTVC1_MODULE_ID_BIT_MASK							0xFF	
/*-------------------------------------------------------------------------------------
 	Module Application ID
-------------------------------------------------------------------------------------*/
                
/*----------------------------------------------------------------------------
	tOCTVC1_MODULE_APPLICATION_ID
	
	[cOCTVC1_MODULE_ID|Value]
	[31:16] : reserved
	[15:8] : API Module ID tOCTVC1_MODULE_ID_ENUM: 
	[7:0]  : Index 
----------------------------------------------------------------------------*/
typedef tOCT_UINT32	tOCTVC1_MODULE_APPLICATION_ID;
                
              
#define cOCTVC1_MODULE_APPLICATION_ID_MODULE_BIT_OFFSET		8		
#define cOCTVC1_MODULE_APPLICATION_ID_MODULE_BIT_MASK		0x000000FF	
#define cOCTVC1_MODULE_APPLICATION_ID_INDEX_BIT_OFFSET		0		
#define cOCTVC1_MODULE_APPLICATION_ID_INDEX_BIT_MASK		0x000000FF	
/*-------------------------------------------------------------------------------------
 	Main Application Module Id
-------------------------------------------------------------------------------------*/
#define cOCTVC1_MODULE_APPLICATION_ID_MAIN_SYSTEM			((0x00)|(cOCTVC1_MODULE_ID_ENUM_MAIN< cOCTVC1_MODULE_ID_ENUM_.
 		bits[23:16] = Reserved
 		bits[15:0] = DataId -> Module specific data exchange.
	ulModuleDataSize
 		Size of Module Data structure.
	hLogicalObj
 		Associated object.
	ulTimestamp
-------------------------------------------------------------------------------------*/
typedef struct
{
	tOCT_UINT32				ulModuleDataId;
	tOCT_UINT32				ulModuleDataSize;
	tOCTVC1_HANDLE_OBJECT	hLogicalObj;
	tOCT_UINT32				ulTimestamp;
} tOCTVC1_MODULE_DATA;
#endif /* __OCTVC1_MODULE_H__ */