812 lines
29 KiB
C
Raw Normal View History

2025-04-10 17:31:33 +08:00
#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