812 lines
29 KiB
C
812 lines
29 KiB
C
#ifndef __PS_SYS_H__
|
|
#define __PS_SYS_H__
|
|
|
|
/******************************************************************************
|
|
******************************************************************************
|
|
Copyright: - 2017, All rights reserved by Eigencomm
|
|
File name: - pssys.h
|
|
Description: - PS system common include header files, and common MARCO
|
|
History: - 08/09/2020, Originated by Jason
|
|
******************************************************************************
|
|
******************************************************************************/
|
|
|
|
/******************************************************************************
|
|
* include OS header files
|
|
******************************************************************************/
|
|
#ifdef WIN32
|
|
#include "winsys.h"
|
|
#include "osautil.h"
|
|
#else
|
|
#include "osasys.h"
|
|
#include "ostask.h"
|
|
#include "cmsis_os2.h"
|
|
#include "debug_trace.h"
|
|
#include "sctdef.h"
|
|
#endif
|
|
#include "osanvm.h"
|
|
#include "psdebug.h"
|
|
#include "pstrace.h"
|
|
|
|
#ifdef WIN32
|
|
//#define EUTRAN_CAT_MODE
|
|
#endif
|
|
//#define EUTRAN_NB_MODE
|
|
|
|
#undef PS_ENABLE_LPP_LCS_FEATURE /* Cat1 disable LCS feature */
|
|
//#define PS_ENABLE_LPP_LCS_FEATURE
|
|
|
|
#undef PS_ENABLE_RANDOM_DL_MESSAGE_TEST /* Disable random downlink message test */
|
|
//#define PS_ENABLE_RANDOM_DL_MESSAGE_TEST
|
|
|
|
#define PS_ENABLE_UP_OPT_FEATURE /* TBD, now suggest always enable. Cat1 enable UP-opt feature */
|
|
|
|
|
|
#ifdef FEATURE_IMS_EMC_ENABLE
|
|
#define PS_ENABLE_EMC_BR_FEATURE /*if IMS_EMC Feature is enable,enable PS emergency attach/bearer feature */
|
|
#else
|
|
#undef PS_ENABLE_EMC_BR_FEATURE
|
|
#endif
|
|
|
|
|
|
#if (defined TYPE_EC718S) || (defined TYPE_EC716S)
|
|
#if defined GCF_FEATURE_MODE
|
|
#undef PS_ENABLE_UICC_USAT_FEATURE /* 718S basic(GCF), disable SIM STK feature */
|
|
#undef PS_ENABLE_CP_OPT_FEATURE /* 718S basic(GCF), disable Control Plane opt feature */
|
|
#undef PS_ENABLE_RATE_CTRL_FEATURE /* 718S basic(GCF), disable PLMN & APN Rate Control feature */
|
|
|
|
#define PS_ENABLE_TEST_LOOP_BACK_MODE_FEATURE /* 718S basic(GCF), enable TEST LOOP BACK MODE feature */
|
|
#define PS_ENABLE_SMS_FEATURE /* 718S basic(GCF), enable SMS feature */
|
|
#define PS_ENABLE_WIFISCAN_FEATURE /* 718S basic(GCF), enable WIFISCAN feature */
|
|
#define PS_ENABLE_RLC_UM_FEATURE /* 718S basic(GCF), enable RLC UM feature */
|
|
#define PS_ENABLE_MDT_FEATURE /* 718S basic(GCF), enable RlfReport/MDT/ConnEstFailReport feature, also need enable PS_ENABLE_MDT_ASN1_FEATURE. */
|
|
#define PS_ENABLE_CMAS_ETWS_FEATURE /* 718S basic(GCF), enable CMAS & ETWS feature */
|
|
#define PS_ENABLE_MODIFY_AND_DEDICATED_BR_FEATURE /* 718S basic(GCF), enable dedicated BR operation feature. */
|
|
#define PS_ENABLE_EDRX_FEATURE /* 718S basic(GCF), enable edrx feature */
|
|
#elif defined MID_FEATURE_MODE
|
|
#undef PS_ENABLE_CP_OPT_FEATURE /* 718S mid, disable Control Plane opt feature */
|
|
#undef PS_ENABLE_RATE_CTRL_FEATURE /* 718S mid, disable PLMN & APN Rate Control feature */
|
|
#undef PS_ENABLE_TEST_LOOP_BACK_MODE_FEATURE /* 718S mid, disable TEST LOOP BACK MODE feature */
|
|
|
|
#define PS_ENABLE_SMS_FEATURE /* 718S mid, enable SMS feature */
|
|
#define PS_ENABLE_WIFISCAN_FEATURE /* 718S mid, enable WIFISCAN feature */
|
|
#define PS_ENABLE_UICC_USAT_FEATURE /* 718S mid, enable SIM STK feature */
|
|
#define PS_ENABLE_RLC_UM_FEATURE /* 718S mid, enable RLC UM feature */
|
|
#define PS_ENABLE_MDT_FEATURE /* 718S mid, enable RlfReport/MDT/ConnEstFailReport feature, suggest synchronous disable PS_ENABLE_MDT_ASN1_FEATURE. */
|
|
|
|
#undef PS_ENABLE_CMAS_ETWS_FEATURE /* 718S mid, disable CMAS & ETWS feature */
|
|
#undef PS_ENABLE_MODIFY_AND_DEDICATED_BR_FEATURE /* 718S mid, disable dedicated BR operation feature. */
|
|
#undef PS_ENABLE_EDRX_FEATURE /* 718S mid, disable edrx feature */
|
|
#else
|
|
#undef PS_ENABLE_CP_OPT_FEATURE /* 718S mini, disable Control Plane opt feature */
|
|
#undef PS_ENABLE_RATE_CTRL_FEATURE /* 718S mini, disable PLMN & APN Rate Control feature */
|
|
#undef PS_ENABLE_TEST_LOOP_BACK_MODE_FEATURE /* 718S mini, disable TEST LOOP BACK MODE feature */
|
|
#undef PS_ENABLE_SMS_FEATURE /* 718S mini, disable SMS feature */
|
|
#undef PS_ENABLE_WIFISCAN_FEATURE /* 718S mini, disable WIFISCAN feature */
|
|
|
|
#define PS_ENABLE_UICC_USAT_FEATURE /* 718S mini, enable SIM STK feature */
|
|
#define PS_ENABLE_RLC_UM_FEATURE /* 718S mini, enable RLC UM feature */
|
|
#define PS_ENABLE_MDT_FEATURE /* 718S mini, enable RlfReport/MDT/ConnEstFailReport feature, suggest synchronous disable PS_ENABLE_MDT_ASN1_FEATURE. */
|
|
|
|
#undef PS_ENABLE_CMAS_ETWS_FEATURE /* 718S mini, disable CMAS & ETWS feature */
|
|
|
|
/* 1. Cat1 disable dedicated BR operation feature.(Contains +CGDSCONT/CGEQOS/CGTFT/CGACT)
|
|
* 1.1 dedicated BR
|
|
* 1.1.1: Cannot use +CGDSCONT to set dedicate BR, but getting operation is acceptable;
|
|
* 1.1.2: Cannot MO act or deact dedicate BR, but MT operation is acceptable;
|
|
* 1.1.3: UE will not encode and decode message related with dedicate BR,such as BearerResourceAllocReq.
|
|
* 1.2 Cannot Set and Delete Qos and TFT, but getting operation is acceptable.
|
|
* 2. Cat1 disable MO/MT modification BR operation feature.(Contains +CGCMOD)
|
|
* 2.1 MO/MT modification def/ded BR operation are NOT acceptable;
|
|
* 2.2 UE will not encode and decode message related with modification BR,such as BearerResourceModificationReq;
|
|
* 2.3 The modification Indicate function is disabled;
|
|
* 2.4 The modification function in abort precedure is disabled.
|
|
*/
|
|
#undef PS_ENABLE_MODIFY_AND_DEDICATED_BR_FEATURE /* 718S mini, disable dedicated BR operation feature. */
|
|
#undef PS_ENABLE_EDRX_FEATURE /* 718S mini, disable edrx feature */
|
|
#endif
|
|
|
|
#else
|
|
#define PS_ENABLE_TEST_LOOP_BACK_MODE_FEATURE /* Except 718S, enable TEST LOOP BACK MODE feature */
|
|
#define PS_ENABLE_SMS_FEATURE /* Except 718S, enable SMS feature */
|
|
#define PS_ENABLE_WIFISCAN_FEATURE /* Except 718S, enable WIFISCAN feature */
|
|
#define PS_ENABLE_UICC_USAT_FEATURE /* Except 718S, enable SIM STK feature */
|
|
#define PS_ENABLE_CP_OPT_FEATURE /* Except 718S, enable Control Plane opt feature */
|
|
#define PS_ENABLE_RATE_CTRL_FEATURE /* Except 718S, enable PLMN & APN Rate Control feature */
|
|
#define PS_ENABLE_RLC_UM_FEATURE /* Except 718S, enable RLC UM feature */
|
|
#define PS_ENABLE_MDT_FEATURE /* Except 718S, enable RlfReport/MDT/ConnEstFailReport feature, also need enable PS_ENABLE_MDT_ASN1_FEATURE. */
|
|
#define PS_ENABLE_CMAS_ETWS_FEATURE /* Except 718S, enable CMAS & ETWS feature */
|
|
#define PS_ENABLE_MODIFY_AND_DEDICATED_BR_FEATURE /* Except 718S, enable dedicated BR operation feature. */
|
|
#define PS_ENABLE_EDRX_FEATURE /* Except 718S, enable edrx feature */
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
* offset of body in a structure
|
|
*/
|
|
#ifndef OFFSETOF
|
|
#define OFFSETOF(type, body) ((UINT32)&(((type *)0)->body))
|
|
#endif
|
|
|
|
#ifndef GOS_GET_SIGNAL_FROM_BODY
|
|
#define GOS_GET_SIGNAL_FROM_BODY OSA_GET_SIGNAL_FROM_BODY
|
|
#endif
|
|
|
|
/*
|
|
* 4 bytes align
|
|
*/
|
|
#ifndef ALIGNED_4BYTE
|
|
#ifdef WIN32
|
|
#define ALIGNED_4BYTE
|
|
#else
|
|
#define ALIGNED_4BYTE __ALIGNED(4)
|
|
#endif
|
|
#endif
|
|
|
|
#if 0
|
|
#ifndef ALIGNED_128KB
|
|
#ifdef WIN32
|
|
#define ALIGNED_128KB
|
|
#else
|
|
#define ALIGNED_128KB CAT_UP_DATA //__ALIGNED(0x20000)
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
/**
|
|
* PS code priority, according to diff priority, could located in diff location: MSMB/PsRAM/Flash
|
|
* 1> PS_CODE_PRI_0 high pri, code in MSMB
|
|
* 2> PS_CODE_PRI_1 mid pri, EC718M in PsRAM, EC718x/EC716, code in MSMB
|
|
* 3> PS_CODE_PRI_2 low pri, EC718M in PsRAM, EC718x/EC716 normal verion, code in MSMB, EC716 more RAM version, code in Flash
|
|
* 4> PS_CODE_PRI_3 lowest pri, code in Flash, default priority
|
|
*/
|
|
#ifdef WIN32
|
|
#define PS_FM_RAMCODE
|
|
#define PS_PSRAM_P0_RAMCODE
|
|
#endif
|
|
|
|
#ifdef TYPE_EC718M
|
|
#define PS_CODE_PRI_0 PS_FM_RAMCODE
|
|
#define PS_CODE_PRI_1 PS_FPSRAM_P0_RAMCODE
|
|
#define PS_CODE_PRI_2 PS_FPSRAM_P0_RAMCODE
|
|
#define PS_CODE_PRI_3 //in flash, default
|
|
#else
|
|
#ifdef FEATURE_MORERAM_ENABLE
|
|
#define PS_CODE_PRI_0 PS_FM_RAMCODE
|
|
#define PS_CODE_PRI_1 PS_FM_RAMCODE
|
|
#define PS_CODE_PRI_2 //in flash
|
|
#define PS_CODE_PRI_3 //in flash, default
|
|
#else
|
|
#define PS_CODE_PRI_0 PS_FM_RAMCODE
|
|
#define PS_CODE_PRI_1 PS_FM_RAMCODE
|
|
#define PS_CODE_PRI_2 PS_FM_RAMCODE
|
|
#define PS_CODE_PRI_3 //in flash, default
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#if 0
|
|
/*
|
|
* Code in RAM
|
|
*/
|
|
#if (defined OPEN_CPU_MODE)
|
|
#define NETFAST_FM_RAMCODE
|
|
#else
|
|
#define NETFAST_FM_RAMCODE PS_FM_RAMCODE
|
|
#endif
|
|
|
|
/* Need MORE RAM, code better in flash */
|
|
#ifdef FEATURE_MORERAM_ENABLE
|
|
#define NETFAST_MAY_RAMCODE
|
|
#else
|
|
#define NETFAST_MAY_RAMCODE PS_FM_RAMCODE /* the code with high pri into RAM, if RAM size is allowed */
|
|
#endif
|
|
|
|
#ifndef PS_CODE_IN_RAM
|
|
#ifdef WIN32
|
|
#define PS_CODE_IN_RAM
|
|
#else
|
|
//#define PS_CODE_IN_RAM __attribute__((__section__(".ramCode2")))
|
|
#define PS_CODE_IN_RAM PS_FM_RAMCODE /* FM: Full image, MSMB */
|
|
#endif
|
|
#endif
|
|
|
|
/* Need MORE RAM, code better in flash */
|
|
#ifdef FEATURE_MORERAM_ENABLE
|
|
#define PS_CODE_MAY_IN_RAM
|
|
#else
|
|
#define PS_CODE_MAY_IN_RAM PS_FM_RAMCODE /* the code with high pri into RAM, if RAM size is allowed */
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifndef PS_SLP2_ZI
|
|
#ifdef WIN32
|
|
#define PS_SLP2_ZI
|
|
#else
|
|
#define PS_SLP2_ZI PS_FA_ZI /* DATA in ASMB, remain in sleep2, and zero inited */
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef PS_SLP2_DATA
|
|
#ifdef WIN32
|
|
#define PS_SLP2_DATA
|
|
#else
|
|
#define PS_SLP2_DATA PS_FA_DATA /* DATA in ASMB, remain in sleep2, not ZI, init value set from flash */
|
|
#endif
|
|
#endif
|
|
|
|
#ifndef PS_SLP2_NOINIT
|
|
#ifdef WIN32
|
|
#define PS_SLP2_NOINIT
|
|
#else
|
|
#define PS_SLP2_NOINIT PS_FA_NOINIT /* DATA in ASMB, remain in sleep2, ZI, but OS not init 0 when bootup */
|
|
#endif
|
|
#endif
|
|
|
|
/**
|
|
* PS DATA/BSS location
|
|
*/
|
|
/**
|
|
* PS DATA/ZI priority, according to diff priority, could located in diff location: MSMB/PsRAM/Flash
|
|
* 0> PS_DATA_PRI_00 highest pri, data in ASMB
|
|
* PS_ZI_PRI_00 highest pri, BSS data in ASMB
|
|
* 1> PS_DATA_PRI_0 high pri, data in MSMB
|
|
* PS_ZI_PRI_0 high pri, BSS data in MSMB
|
|
* 2> PS_DATA_PRI_1 EC718M in PsRAM 0, EC718x/EC716, data in MSMB
|
|
* PS_ZI_PRI_1 BSS data, EC718M in PsRAM 0, EC718x/EC716, data in MSMB
|
|
* 3> PS_PKG_DATA UL&DL massive and fast data, EC718M in PsRAM 1, EC718x/EC716, data in MSMB
|
|
*/
|
|
#ifndef WIN32
|
|
#ifdef TYPE_EC718M
|
|
#define PS_DATA_PRI_0 PS_FM_DATA
|
|
#define PS_ZI_PRI_0 PS_FM_ZI
|
|
#define PS_DATA_PRI_1 AP_PS_FPSRAM_P0_DATA
|
|
#define PS_ZI_PRI_1 AP_PS_FPSRAM_P0_BSS
|
|
#define PS_PKG_DATA AP_PS_FPSRAM_P1_DATA
|
|
#define PS_PKG_ZI AP_PS_FPSRAM_P1_BSS
|
|
#define PS_DATA_DEF PS_DATA_PRI_1
|
|
#define PS_ZI_DEF PS_ZI_PRI_1
|
|
#else
|
|
#define PS_DATA_PRI_0 PS_FM_DATA
|
|
#define PS_ZI_PRI_0 PS_FM_ZI
|
|
#define PS_DATA_PRI_1 PS_FM_DATA
|
|
#define PS_ZI_PRI_1 PS_FM_ZI
|
|
#define PS_PKG_DATA PS_FM_DATA
|
|
#define PS_PKG_ZI PS_FM_ZI
|
|
#define PS_DATA_DEF PS_FM_DATA
|
|
#define PS_ZI_DEF PS_FM_ZI
|
|
#endif
|
|
#else
|
|
#define PS_DATA_PRI_0
|
|
#define PS_ZI_PRI_0
|
|
#define PS_DATA_PRI_1
|
|
#define PS_ZI_PRI_1
|
|
#define PS_PKG_DATA
|
|
#define PS_PKG_ZI
|
|
#define PS_DATA_DEF
|
|
#define PS_ZI_DEF
|
|
#endif
|
|
|
|
|
|
/*
|
|
* 4 bytes aligned size
|
|
*/
|
|
#define FOUR_BYTE_ALIGN_SIZE(size) (((size)+3)&(0xFFFFFFFC))
|
|
|
|
#ifndef CAT_PSPHY_SHAREDATA
|
|
#ifdef WIN32
|
|
#define CAT_PSPHY_SHAREDATA
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifdef WIN32
|
|
#define PS_HW_REG_WRITE_32(_pHW, val)
|
|
#define PS_HW_REG_READ_32(_pHW, val)
|
|
#else
|
|
|
|
#if defined ( __CC_ARM )
|
|
|
|
#define PS_HW_REG_WRITE_32(_pHW, val) \
|
|
do { \
|
|
__asm \
|
|
{ \
|
|
STR val, [_pHW] \
|
|
} \
|
|
}while(FALSE)
|
|
|
|
#define PS_HW_REG_READ_32(_pHW, val) \
|
|
do { \
|
|
__asm \
|
|
{ \
|
|
LDR val, [_pHW] \
|
|
} \
|
|
}while(FALSE)
|
|
|
|
#elif defined ( __GNUC__ )
|
|
|
|
#define PS_HW_REG_WRITE_32(_pHW, val) __STREXW(val, _pHW)
|
|
|
|
#define PS_HW_REG_READ_32(_pHW, val) val = __LDREXW(_pHW)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
#define PS_COMMONLY_USED_RO
|
|
#define PS_COMMONLY_USED_TEXT
|
|
#else
|
|
#define PS_COMMONLY_USED_RO COMMONLY_USED_RO
|
|
#define PS_COMMONLY_USED_TEXT COMMONLY_USED_TEXT
|
|
#endif
|
|
|
|
/******************************************************************************
|
|
* InternalMsg
|
|
* internal message in a task, used to communicate between sub-modules in a task
|
|
* 16 bytes
|
|
*****************************************************************************/
|
|
typedef void (*MsgHandler)(UINT8 srcId, UINT8 argvUint8, UINT16 argvUint16, UINT32 argvUint32, void* argvPtr);
|
|
typedef struct InternalMsg_Tag
|
|
{
|
|
MsgHandler msgHandler;
|
|
|
|
UINT8 srcId; // msg from which sub-module
|
|
UINT8 argvUint8;
|
|
UINT16 argvUint16;
|
|
UINT32 argvUint32;
|
|
void *argvPtr;
|
|
}InternalMsg;
|
|
|
|
/******************************************************************************
|
|
* MsgQueue
|
|
* Message buffer queue, use to buffer internal message
|
|
*****************************************************************************/
|
|
typedef UnitQueue MsgQueue;
|
|
|
|
/******************************************************************************
|
|
* EMPTY SIGNAL
|
|
******************************************************************************/
|
|
typedef UINT32 GosEmptySignal;
|
|
|
|
/******************************************************************************
|
|
* SIG_WIN_SIMULATE_INTERNAL_MSG
|
|
******************************************************************************/
|
|
typedef struct WinSimulateInternalMsg_Tag
|
|
{
|
|
MsgHandler msgHandler;
|
|
|
|
UINT8 srcId; // msg from which sub-module
|
|
UINT8 argvUint8;
|
|
UINT16 argvUint16;
|
|
UINT32 argvUint32;
|
|
void *argvPtr;
|
|
}WinSimulateInternalMsg;
|
|
|
|
|
|
/******************************************************************************
|
|
******************************************************************************
|
|
* external some SYS/OS API
|
|
******************************************************************************
|
|
*****************************************************************************/
|
|
void GosLogSig(UINT16 dTaskId, SignalBuf *pSig);
|
|
void GosDumpSig(UINT16 dTaskId, SignalBuf *pSig);
|
|
|
|
//void GosCreateSignal(UINT16 sigId, UINT16 sigBodySize, SignalBuf **signal);
|
|
#define GosCreateSignal OsaCreateSignal
|
|
//void GosCreateZeroSignal(UINT16 sigId, UINT16 sigBodySize, SignalBuf **signal);
|
|
#define GosCreateZeroSignal OsaCreateZeroSignal
|
|
//void GosCreateIsrSignal(UINT16 sigId, UINT16 sigBodySize, SignalBuf **signal);
|
|
#define GosCreateIsrSignal OsaCreateIsrSignal
|
|
#define GosCreateZeroIsrSignal OsaCreateZeroIsrSignal
|
|
|
|
//void GosSendSignal(UINT16 taskId, SignalBuf **signal);
|
|
#define GosSendSignal OsaSendSignal
|
|
#define GosSendNoLogSignal OsaSendNoLogSignal
|
|
// dump the signal to RAM
|
|
#define GosSendDumpSignal OsaSendDumpSignal
|
|
#define GosSendNoDumpSignal OsaSendNoDumpSignal
|
|
//void OsaSendSignalToFront(UINT16 taskId, SignalBuf **signal)
|
|
#define GosSendSignalToFront OsaSendSignalToFront
|
|
#ifdef WIN32
|
|
#define GosSendCustSignal OsaSendDumpSignal
|
|
#define GosSendDumpInternalSignal OsaSendDumpSignal
|
|
#else
|
|
#define GosSendCustSignal OsaSendCustSignal
|
|
#define GosSendDumpInternalSignal OsaSendDumpInternalSignal
|
|
#endif
|
|
|
|
|
|
|
|
//void GosDestroySignal(SignalBuf **signal);
|
|
#define GosDestroySignal OsaDestroySignal
|
|
//void OsaDestroyFastSignal(SignalBuf **signal);
|
|
#define GosDestroyIsrSignal OsaDestroyIsrSignal
|
|
//void GosReceiveSignal(UINT16 taskId, SignalBuf **signal); // if no signal received, just blocked
|
|
#define GosReceiveSignal OsaReceiveSignal
|
|
|
|
|
|
/* Create PHY signal, called by ERRC/L2 */
|
|
void GosCreateSignalToPhy(UINT16 sigId, UINT16 sigBodySize, SignalBuf **signal);
|
|
|
|
/* Send the signal to PHY*/
|
|
void GosSendSignalToPhy(SignalBuf **signal);
|
|
|
|
/* Destory the signal to PHY, if ERRC/L2 not need to send the signal to PHY */
|
|
void GosDestroySignalToPhy(SignalBuf **signal);
|
|
|
|
/* Destory the signal send from PHY, called by ERRC/L2 */
|
|
void GosDestroySignalFromPhy(SignalBuf **signal);
|
|
|
|
/* Allocate the dynamic memory, which need to pass to PHY */
|
|
void* GosAllocMemoryToPhy(UINT16 size);
|
|
|
|
/* Free the memory, which comes from PHY */
|
|
void GosFreeMemoryFromPhy(void **ptr); //after free it, *ptr is set to PNULL
|
|
|
|
//void* GosAllocMemory(UINT16 size);
|
|
#define GosAllocMemory OsaAllocMemory
|
|
//void* GosAllocZeroMemory(UINT16 size);
|
|
#define GosAllocZeroMemory OsaAllocZeroMemory
|
|
//void* GosAllocMemoryNoAssert(UINT32 size);
|
|
#define GosAllocMemoryNoAssert OsaAllocMemoryNoAssert /* return PNULL, if no memory allcated */
|
|
//void* GosAllocZeroMemoryNoAssert(UINT32 size);
|
|
#define GosAllocZeroMemoryNoAssert OsaAllocZeroMemoryNoAssert /* return PNULL, if no memory allcated */
|
|
//void GosFreeMemory(void **ptr); //after free it, *ptr is set to PNULL
|
|
#define GosFreeMemory OsaFreeMemory
|
|
|
|
|
|
//UINT8 PsNvmCalcCrcValue(const UINT8 *dataBuf, UINT16 bufSize)
|
|
#define PsNvmCalcCrcValue OsaCalcCrcValue
|
|
|
|
#ifdef WIN32
|
|
#define GosRand rand
|
|
#else
|
|
#define GosRand OsaRand
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
#define PsAllocSlp2Mem GosAllocMemory
|
|
#define PsAllocZeroSlp2Mem GosAllocZeroMemory
|
|
#define PsFreeSlp2Mem GosFreeMemory
|
|
#else
|
|
/*
|
|
* Memory allocated in sleep2 ASMB memory
|
|
* !!! Note: memory may alloc fail. and return PNULL !!!
|
|
*/
|
|
void *PsSlp2MallocEC(UINT32 xWantedSize, unsigned int funcPtr);
|
|
void *PsSlp2MallocZero(UINT32 xWantedSize);
|
|
void PsSlp2FreeEC( void *pv );
|
|
|
|
#define PsAllocSlp2Mem(size) PsSlp2MallocEC((size), 0)
|
|
#define PsAllocZeroSlp2Mem(size) PsSlp2MallocZero((size))
|
|
#define PsFreeSlp2Mem(pPtr) \
|
|
do { \
|
|
GosCheck((pPtr) != PNULL && (*(pPtr)) != PNULL, (pPtr), (*(pPtr)), 0); \
|
|
PsSlp2FreeEC(*(pPtr)); \
|
|
(*(pPtr)) = PNULL; \
|
|
}while(FALSE);
|
|
|
|
#endif
|
|
|
|
/*
|
|
* NVM file APIs
|
|
*/
|
|
#ifdef WIN32
|
|
typedef FILE* GOSFILE;
|
|
//GOSFILE GosFopen(UINT8 nvId, UINT8 *fileName, UINT8 *mode);
|
|
#define GosFopen(nvId, fileName, mode) WinFopen((fileName), (mode))
|
|
#define GosFclose WinFclose
|
|
#define GosFread WinFread
|
|
#define GosFwrite WinFwrite
|
|
#define GosFremove WinFremove
|
|
#elif defined NVRAM_FILE_SYSTEM //old file system
|
|
//typedef NVFILE_HANDLER GOSFILE;
|
|
typedef void* GOSFILE;
|
|
//GOSFILE GosFopen(UINT8 nvId, UINT8 *fileName, UINT8 *mode);
|
|
#define GosFopen(nvId, fileName, mode) (GOSFILE)NVFopen((nvId), (mode))
|
|
//UINT32 GosFclose(GOSFILE fp);
|
|
#define GosFclose(fp) NVFclose((NVFILE_HANDLER)(fp))
|
|
//UINT32 GosFread(void *buf, UINT32 size, UINT32 count, GOSFILE fp);
|
|
#define GosFread(buf, size, count, fp) NVFread((buf), (size), (count), (NVFILE_HANDLER)(fp))
|
|
//UINT32 GosFwrite(void *buf, UINT32 size, UINT32 count, GOSFILE fp);
|
|
#define GosFwrite(buf, size, count, fp) NVFwrite((buf), (size), (count), (NVFILE_HANDLER)(fp))
|
|
//UINT32 GosFremove(UINT8 *fileName);
|
|
#define GosFremove(fileName) NVFremove(0)
|
|
#else
|
|
typedef OSAFILE GOSFILE;
|
|
//GOSFILE GosFopen(UINT8 nvId, UINT8 *fileName, UINT8 *mode);
|
|
#define GosFopen(nvId, fileName, mode) (GOSFILE)OsaFopen((const char *)(fileName), (const char *)(mode))
|
|
#define GosFclose OsaFclose
|
|
#define GosFread OsaFread
|
|
#define GosFwrite OsaFwrite
|
|
#define GosFremove OsaFremove
|
|
#endif
|
|
|
|
/*
|
|
* OSA NVM operation
|
|
*/
|
|
typedef OsaNvmRet PsNvmRet;
|
|
typedef OsaNvmBodyInfo PsNvmBodyInfo;
|
|
|
|
/*
|
|
* void OsaNvmFreeBody(OsaNvmBodyInfo *pNvmBodyInfo);
|
|
*/
|
|
#define PsNvmFreeBody OsaNvmFreeBody
|
|
|
|
|
|
/*
|
|
* GosGetSysTickCout
|
|
*/
|
|
#ifdef WIN32
|
|
#define GosGetSysTickCount() GetTickCount()
|
|
#else
|
|
#define GosGetSysTickCount() osKernelGetTickCount()
|
|
#endif
|
|
|
|
|
|
/******************************************************************************
|
|
******************************************************************************
|
|
externl functions
|
|
******************************************************************************
|
|
******************************************************************************/
|
|
typedef enum PsPrintModId_Tag
|
|
{
|
|
PS_MOD_START_ID = 0x10,
|
|
PS = PS_MOD_START_ID,
|
|
PS_UP = 0x11,
|
|
PS_CERRC,
|
|
PS_NAS,
|
|
PS_UICC,
|
|
PS_UICC_DRV,
|
|
PS_CCM,
|
|
PS_CAC,
|
|
|
|
PS_MOD_MAX_ID = 0x30
|
|
}PsPrintModId;
|
|
|
|
|
|
/******************************************************************************
|
|
* GosPrintf/GosPsPrintf
|
|
******************************************************************************/
|
|
#ifdef WIN32
|
|
#define GosTraceAddModule(_module_name, _trace_level)
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
#define GosPrintf OsaPrintf
|
|
#else
|
|
#define GosPrintf(level, fmt, ...)
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
#define GosPsPrintf OsaPsPrintf
|
|
#else
|
|
#define GosPsPrintf(mod, submod, level, fmt, ...)
|
|
#endif
|
|
|
|
#ifdef WIN32
|
|
#define GosHexDump(_module, _level, _dump_name, _data, _len) \
|
|
OsaHexDump((_dump_name), _data, _len)
|
|
#else
|
|
//void GosHexDump(_module, _level,_dump_name, _data, _len)
|
|
#define GosHexDump(_module, _level, _dump_name, _data, _len)
|
|
#endif
|
|
|
|
|
|
/******************************************************************************
|
|
* GosCheck/GosDebugBegin/GosDebugEnd
|
|
******************************************************************************/
|
|
#define GosCheck OsaCheck
|
|
#define GosDebugBegin OsaDebugBegin
|
|
#define GosDebugEnd OsaDebugEnd
|
|
|
|
|
|
/******************************************************************************
|
|
* Internal message queue function
|
|
******************************************************************************/
|
|
void GosLogInternalMsg(InternalMsg *msg, const CHAR *pHdr, UINT16 varSize);
|
|
|
|
//void GosMsgQueueInit(MsgQueue *msgQ);
|
|
#define GosMsgQueueInit(Q) UnitQueueInit((Q), sizeof(InternalMsg))
|
|
/*
|
|
* void GosMsgEnQueue(MsgQueue *msgQ, InternalMsg *msg, MsgHandler hdr, UINT16 varSize);
|
|
* MsgQueue *msgQ; // internal Msg queue
|
|
* InternalMsg *msg; // internal Msg;
|
|
* MsgHandler hdr; //which callback func;
|
|
* UINT16 varSize; //size of "argvPtr"
|
|
*/
|
|
//#define GosMsgEnQueue(Q, M, H, S) UnitEnQueue((Q), (M))
|
|
#define GosMsgEnQueue(Q, M, H, S) \
|
|
do { \
|
|
GosLogInternalMsg((M), #H, (S)); \
|
|
UnitEnQueue((Q), (M)); \
|
|
}while(FALSE)
|
|
|
|
|
|
//void GosMsgDeQueue(MsgQueue *msgQ, InternalMsg *msg);
|
|
#define GosMsgDeQueue(Q, M) UnitDeQueue((Q), (M))
|
|
//void GosMsgOnQueue(MsgQueue *msgQ);
|
|
#define GosMsgOnQueue(Q) UnitOnQueue((Q))
|
|
//void GosMsgFlushQueue(MsgQueue *msgQ);
|
|
#define GosMsgFlushQueue(Q) UnitFlushQueue((Q))
|
|
|
|
/******************************************************************************
|
|
* Gos Signal QUEUE function
|
|
******************************************************************************/
|
|
#define GosSigQueueInit OsaSigQueueInit
|
|
//void GosSigEnQueue(SignalQueue *que, SignalBuf **signal);
|
|
#define GosSigEnQueue OsaSigEnQueue
|
|
//void GosSigDeQueue(SignalQueue *que, SignalBuf **signal);
|
|
#define GosSigDeQueue OsaSigDeQueue
|
|
//BOOL GosSigOnQueue(SignalQueue *que);
|
|
#define GosSigOnQueue OsaSigOnQueue
|
|
//void GosSigFlushQueue(SignalQueue *que);
|
|
#define GosSigFlushQueue OsaSigFlushQueue
|
|
|
|
/******************************************************************************
|
|
* Gos Task Flags function
|
|
******************************************************************************/
|
|
//UINT32 GosTaskFlagsSet(UINT16 taskId, UINT32 flags);
|
|
#define GosTaskFlagsSet OsaTaskFlagsSet
|
|
//UINT32 GosTaskFlagsWait(UINT32 waitFlags);
|
|
#define GosTaskFlagsWait OsaTaskFlagsWait
|
|
//UINT32 OsaTaskFlagsClear(UINT32 clearFlags)
|
|
#define GosTaskFlagsClear OsaTaskFlagsClear
|
|
|
|
/******************************************************************************
|
|
* Gos signal timer function
|
|
* When timer expiry, timer task will create a signal (TIMER_EXPIRY) to SRC task
|
|
******************************************************************************/
|
|
typedef OsaTimerId GosTimerId;
|
|
|
|
#define GOS_TIMER_NOT_CREATE OSA_TIMER_NOT_CREATE
|
|
|
|
typedef OsaTimerExpiry GosTimerExpiry;
|
|
|
|
void GosPsHibTimerExpiryFunc(OsaHibTimerId hibTimerId);
|
|
|
|
//GosTimerId GosTimerNew(UINT16 taskId, UINT16 timerEnum, osTimerType_t type);
|
|
//osTimerId_t osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)
|
|
#ifdef WIN32
|
|
void OsaTimerExpiryFunc(void *argument);
|
|
#define OsaTimerNew(taskId, timerEnum, type) \
|
|
osTimerNew(OsaTimerExpiryFunc, type, taskId, timerEnum) /* used for LPP UT */
|
|
#define GosTimerNew(taskId, timerEnum, type) \
|
|
osTimerNew(OsaTimerExpiryFunc, type, taskId, timerEnum)
|
|
#else
|
|
#define GosTimerNew OsaTimerNew
|
|
#endif
|
|
#define GosTimerStart OsaTimerStart
|
|
#define GosTimerStop OsaTimerStop
|
|
#define GosTimerIsRunning OsaTimerIsRunning
|
|
//osStatus_t GosTimerDelete(GosTimerId *timer_id);
|
|
#define GosTimerDelete OsaTimerDelete
|
|
#define GosTimerGetRemainTicks OsaTimerGetRemainTicks
|
|
|
|
|
|
/******************************************************************************
|
|
******************************************************************************
|
|
* TIMER/SYS time ticks info, which need to still runing in HIBERNATE STATE
|
|
******************************************************************************
|
|
******************************************************************************/
|
|
typedef OsaHibMs GosHibMs;
|
|
|
|
#ifdef WIN32
|
|
typedef struct GosHibTimerExpiry_Tag
|
|
{
|
|
UINT8 hibTimerId;
|
|
UINT8 reserved0;
|
|
UINT16 reserved1;
|
|
}GosHibTimerExpiry;
|
|
#else
|
|
typedef OsaHibTimerExpiry GosHibTimerExpiry;
|
|
#endif
|
|
|
|
/*
|
|
* Get current HIB second count
|
|
*/
|
|
#ifdef WIN32
|
|
#define GosGetHibSecondCount() GetTickCount()
|
|
#else
|
|
extern uint32_t apmuGetHibSecondCount(void);
|
|
#define GosGetHibSecondCount() apmuGetHibSecondCount()
|
|
#endif
|
|
|
|
/*
|
|
* Get current HIB count in unit of 10 ms
|
|
* Max count: 0x0FFFFFFF (745 hours), when extended 0x0FFFFFFF, will set to 0
|
|
*/
|
|
#define GOS_HIB_10MS_COUNT_MAX 0x0FFFFFFF
|
|
#ifdef WIN32
|
|
#define GosGetHib10MsCount() GetTickCount()
|
|
#else
|
|
extern uint32_t hibTimerGet10MsCnt(void);
|
|
#define GosGetHib10MsCount() hibTimerGet10MsCnt()
|
|
#endif
|
|
|
|
|
|
/*
|
|
* MARCO:
|
|
* SECONDS_TO_HIB_TICKS(sec)
|
|
* MINUTES_TO_HIB_TICKS(min)
|
|
* MILLISECONDS_TO_HIB_TICKS(MS)
|
|
*/
|
|
|
|
/******************************************************************************
|
|
* GosHibTimerStart
|
|
* Description: Start HIB timer
|
|
* OsaHibTimerId timerId; //which HIB timer
|
|
* UINT32 periodMs; //timer period in millisecond
|
|
* output: void
|
|
* Comment:
|
|
* if "timerId" already start before, just print a warning, and restart it
|
|
******************************************************************************/
|
|
//void OsaHibTimerStart(OsaHibTimerId timerId, OsaHibMs nMs);
|
|
#define GosHibTimerStart(hibTid, periodMs) OsaHibTimerStart(hibTid, periodMs)
|
|
|
|
/******************************************************************************
|
|
* GosHibTimerIsRunning
|
|
* Description: whether the HIB timer is running
|
|
* input: OsaHibTimerId timerId
|
|
* output: BOOL
|
|
* Comment:
|
|
******************************************************************************/
|
|
//BOOL OsaHibTimerIsRunning(OsaHibTimerId timerId);
|
|
#define GosHibTimerIsRunning(hibTid) OsaHibTimerIsRunning(hibTid)
|
|
|
|
/******************************************************************************
|
|
* GosHibTimerStopAndDel
|
|
* Description: stop HIB and delete HIB timer
|
|
* input: OsaHibTimerId timerId
|
|
* output: void
|
|
* Comment:
|
|
******************************************************************************/
|
|
//void OsaHibTimerStopAndDel(OsaHibTimerId timerId);
|
|
//#define GosHibTimerStop(hibTid)
|
|
#define GosHibTimerStopAndDel(hibTid) OsaHibTimerStopAndDel(hibTid)
|
|
|
|
|
|
/******************************************************************************
|
|
* GosHibTimerGetRemainMs
|
|
* Description: Get HIB timer remaining time value in milli-seconds
|
|
* input: OsaHibTimerId hibTId
|
|
* output: UINT32
|
|
* Comment:
|
|
******************************************************************************/
|
|
//UINT32 OsaHibTimerGetRemainMs(OsaHibTimerId hibTId)
|
|
#define GosHibTimerGetRemainMs(hibTid) OsaHibTimerGetRemainMs(hibTid)
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
* GosFwdWinSimulateInternalMsgSig
|
|
* This API only use for integration testing in WIN PC
|
|
******************************************************************************/
|
|
void GosFwdWinSimulateInternalMsgSig(UINT8 srcId, UINT8 argvUint8, UINT16 argvUint16, UINT32 argvUint32, void* argvPtr);
|
|
|
|
/******************************************************************************
|
|
* PsLastDeepHib
|
|
* Description: Whether PS wake up from HIB. just means ASMB are all lost
|
|
* input:
|
|
* output: BOOL
|
|
* Comment: Now: apmuBWakeupFromHib() & apmuBWakeupFromSlp2() is not suitable called for PS
|
|
* as AP sleep mode maybe changed in MCU mode.
|
|
******************************************************************************/
|
|
BOOL PsLastDeepHib(void);
|
|
|
|
/******************************************************************************
|
|
* PsLastDeepSlp2
|
|
* Description: Whether PS wake up from sleep2. just means ASMB are still usefull
|
|
* input:
|
|
* output: BOOL
|
|
* Comment:
|
|
******************************************************************************/
|
|
BOOL PsLastDeepSlp2(void);
|
|
|
|
|
|
|
|
#endif
|
|
|