diff --git a/pasdk/test_dsp/framework/audioStreamInpProc.h b/pasdk/test_dsp/framework/audioStreamInpProc.h
index c29c95f3a17e352f927918dc2a25874fb21e2795..1a6e373fd1d0713fba53a23a8eec861a09eaeab2 100644 (file)
#define _ASIP_H_
#include <xdc/std.h>
+#include <ti/sysbios/knl/Event.h>
#include <ti/sysbios/knl/Task.h>
+#include "aspMsg_master.h"
#include "audioStreamProc_params.h"
#include "audioStreamProc_patchs.h"
#include "audioStreamProc_config.h"
#include "audioStreamProc_master.h"
-
-// Global debug counter */
-extern Uint32 gTaskAsipCnt; // debug counter for ASP task
+#include "statusOp_common.h"
+#include "ioPhy.h"
+#include "ioBuff.h"
+#include "ioData.h"
struct PAF_ASIT_Params;
struct PAF_ASIT_Patchs;
Int (*autoProcessing) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int, ALG_Handle);
Int (*decodeProcessing) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int);
Int (*decodeCommand) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *);
- //Int (*encodeCommand) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *);
Int (*decodeInit) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int);
Int (*decodeInfo) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int, Int);
Int (*decodeInfo1) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int, Int);
Int (*decodeInfo2) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int, Int);
//Int (*decodeCont) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, ALG_Handle *, Int, Int);
Int (*decodeDecode) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int, Int, Int);
- //Int (*decodeStream) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int, Int);
- //Int (*decodeEncode) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int, Int);
Int (*decodeFinalTest) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int, Int);
Int (*decodeComplete) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, ALG_Handle *, Int, Int);
Int (*selectDevices) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *);
Int (*sourceDecode) (const struct PAF_ASIT_Params *, const struct PAF_ASIT_Patchs *, struct PAF_ASIT_Config *, Int);
- //Int (*startOutput) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *);
- //Int (*stopOutput) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *);
- //Int (*setCheckRateX) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int);
- //Int (*streamChainFunction) (const struct PAF_AST_Params *, const struct PAF_AST_Patchs *, struct PAF_AST_Config *, Int, Int, Int);
Int (*deviceAllocate) (SIO_Handle *, int, int, int, Ptr);
Int (*deviceSelect) (SIO_Handle *, int, int, Ptr);
Int (*computeFrameLength) (Int, Int, Int);
const PAF_ASP_outNumBufMap * const (*poutNumBufMap);
const PAF_MetadataBufStatus *pMetadataBufStatus;
const PAF_AudioFrameBufStatus *pAudioFrameBufStatus;
+ const PAF_AST_DecOpCircBufStatus * const *z_pDecOpCircBufStatus;
} PAF_ASIT_Params;
// Audio Stream Input Task (ASIT) patchs
//const PAF_ASP_LinkInit * const (*i_encLinkInit);
} PAF_ASIT_Patchs;
+enum {
+ ASIP_NO_ERR,
+ ASIP_ERR_AUTO_DETECION,
+ ASIP_ERR_NO_MATCHING_SOURCE,
+ ASIP_ERR_SWITCH_TO_PCM,
+ ASIP_ERR_D10_CFG,
+ ASIP_ERR_MCASP_CFG,
+ ASIP_ERR_INPUT_CFG,
+ ASIP_ERR_DECODE_INIT,
+ ASIP_ERR_DECODE_COMMAND,
+ ASIP_ERR_DECODE_INFO1,
+ ASIP_ERR_DECODE_INFO2,
+ ASIP_ERR_DECODE_DATA,
+ ASIP_ERR_DECODE_FINAL,
+ ASIP_ERR_DECODE_COMPLETE,
+ ASIP_ERR_DECODE_MSG,
+ ASIP_ERR_DECODE_QUIT,
+ ASIP_ERR_ABORT
+};
+
+
+enum {
+ ASIT_RESET,
+ ASIT_SOURCE_DETECTION,
+ ASIT_PCM_TRANSITION,
+ ASIT_DECODE_PROCESSING
+};
+
+enum {
+ ASIT_NO_ERR,
+ ASIT_ERR_IOBUFF_INIT,
+ ASIT_ERR_IODATA_INIT,
+ ASIT_ERR_IOPYH_INIT,
+ ASIT_ERR_INPDATA_PROC,
+ ASIT_ERR_INPBUF_UNDERFLOW,
+ ASIT_ERR_AUTO_DETECION,
+ ASIT_ERR_NO_MATCHING_SOURCE,
+ ASIT_ERR_SWITCH_TO_PCM,
+ ASIT_ERR_D10_CFG,
+ ASIT_ERR_MCASP_CFG,
+ ASIT_ERR_INPUT_CFG,
+ ASIT_ERR_DECODE_INIT,
+ ASIT_ERR_DECODE,
+ ASIT_ERR_DECODE_COMMAND,
+ ASIT_ERR_DECODE_INFO1,
+ ASIT_ERR_DECODE_INFO2,
+ ASIT_ERR_DECODE_DATA,
+ ASIT_ERR_DECODE_FINAL,
+ ASIT_ERR_DECODE_COMPLETE,
+ ASIT_ERR_DECODE_MSG,
+ ASIT_ERR_DECODE_QUIT,
+ ASIP_ERR_DECODE_ABORT,
+ ASIT_ERR_EVENTS,
+ ASIT_ERR_ABORT
+};
+
+enum {
+ DEC_NO_ERR,
+ DEC_ERR_SOURCE_NONE,
+ DEC_ERR_ASPERR_ABORT,
+ DEC_ERR_ASPERR_QUIT,
+ DEC_ERR_WRONG_MSG,
+ DEC_ERR_INFO_SNDMSG,
+ DEC_ERR_INFO_ACKMSG,
+ DEC_ERR_DECODE_SNDMSG,
+ DEC_ERR_DECODE_ACKMSG,
+ DEC_ERR_DECODE_FINAL,
+ DEC_ERR_COMPLETE_MSG
+};
+
+
+#define DEC_MSGMSK_INPDATA 0x1 // Input data message
+#define DEC_MSGMSK_RXACK 0x2 // Receive acknowledge message
+#define DEC_MSGMSK_INFOACK 0x4 // temp, will be removed
+#define DEC_MSGMSK_DECACK 0x8 // temp, will be removed
+
+
+// Input I/O structure
+typedef struct PAF_AST_InpIO {
+ ioPhyHandle_t hIoPhy; /* handle to I/O physical layer */
+ ioBuffHandle_t hIoBuff; /* handle to I/O buffer management */
+ ioDataHandle_t hIoData; /* handle to I/O data processing */
+ Ptr hMcaspChan; /* handle to McASP LLD channel */
+ const void *pRxParams; /* pointer to D10 Rx Params */
+
+ Int sourceSelect;
+ Int sourceProgram;
+
+ Int stride;
+ Int preSyncState;
+ Int numPrimeXfers;
+ Int mcaspXferErr;
+/*
+ void *mcaspRxBuf1;
+ void *mcaspRxBuf2;
+ uint32_t mcaspRxSize1;
+ uint32_t mcaspRxSize2;
+ Int mcaspRxtwoXfers;
+*/
+ // debugging counters
+ //uint32_t numXferStart;
+ //uint32_t numXferFinish;
+ //uint32_t numXferInterm;
+ uint32_t numInputOverrun;
+ uint32_t numUnderflow;
+ uint32_t numAsitRestart;
+ uint32_t numAsitDecodeQuit;
+ uint32_t numFrameReceived;
+ uint32_t numPcmFrameReceived;
+
+ size_t phyXferSize;
+ int_fast32_t pcmSwitchHangOver;
+ uint_least16_t asipState;
+ //uint_least16_t asipProcState;
+ bool buffReadComplete;
+ bool swapData;
+ bool firstTimeInit;
+} PAF_AST_IoInp;
+
+// Decoder structure
+typedef struct asipDecProc_s {
+ Int state;
+ Int frame;
+ Int block;
+
+ Int majorAuFound;
+ Int initDone;
+ Int decodeAckDelayed;
+} asipDecProc_t;
+
// Audio Stream Input Task (ASIT) configuration
typedef struct PAF_ASIT_Config {
- Task_Handle taskHandle; // ASIT handle
- ACP_Handle acp; // ASIT local ACP handle
- PAF_ASPM_Config *pAspmCfg; // ASIT/ASOT shared configuration
- PAF_AST_Config *pAstCfg; // ASIT/ASOT/ASDT shared configuration
+ Task_Handle taskHandle; // ASIT handle
+ ACP_Handle acp; // ASIT local ACP handle
+ AspMsgMaster_Handle hAspMsgMaster; // ASIT message master handle
+ PAF_ASPM_Config *pAspmCfg; // ASIT/ASOT shared configuration
+ PAF_AST_Config *pAstCfg; // ASIT/ASOT/ASDT shared configuration
+ PAF_AST_IoInp *pIoInp; // ASIT IO configuration
+ asipDecProc_t inpDec;
} PAF_ASIT_Config;
+// ASIT event IDs
+#define ASIT_EVTMSK_NONE 0x0
+#define ASIT_EVTMSK_INPDATA 0x1 // Input data (Rx McASP EDMA) event
+#define ASIT_EVTMSK_RXACK 0x2 // Receive acknowledge (IPC MessageQ) message event
+#define ASIT_EVTMSK_INFOACK 0x4 // temp, will be removed
+#define ASIT_EVTMSK_DECACK 0x8 // temp, will be removed
+
+// ASIT event handle
+extern Event_Handle gAsitEvtHandle;
+
+// ASIT Sync event handle
+extern SyncEvent_Handle gAsitSyncEvtHandle;
+
+// ASIT ASP messaging
+#define ASIT_ASP_MSG_HEAP_ID ( 0 ) // ASIT message master heap Id
+#define ASIT_ASP_MSG_MASTER_NUMSGS ( ASP_MSG_MASTER_DEF_NUMMSGS ) // ASIT message master number of messages
+
+// ASIT configuration
+extern PAF_ASIT_Config gPAF_ASIT_config;
+
+
// Purpose: Audio Stream Input Task Function for initialization of data pointers
// by allocation of memory.
Int
PAF_ASIT_Config *pAsitCfg
);
-// (***) FL: re-visit this, ASIT/ASOT currently consider common memory independently.
-// Should simultaneously consider all algs in ASIT/ASOT.
// Purpose: Audio Stream Input Task Function for allocation of common memory.
Int
PAF_ASIT_initPhaseCommon(
PAF_ASIT_Config *pAsitCfg
);
+// Purpose: Audio Stream Input Task Function for initialization of Output Init-Sync.
+Int
+PAF_ASIT_initPhaseOutIS(
+ const PAF_ASIT_Params *pP,
+ const PAF_ASIT_Patchs *pQ,
+ PAF_ASIT_Config *pAsdtCfg
+);
+
+
#if 0
// Purpose: Audio Stream Task Function for initialization or reinitiali-
// zation of the Audio Frame(s) by loading of data values of a
Int x
);
-// Purpose: Decoding Function for terminating output.
-Int
-PAF_AST_stopOutput(
- const PAF_ASIT_Params *pP,
- const PAF_ASIT_Patchs *pQ,
- PAF_ASIT_Config *pAsitCfg
-);
-
// Purpose: Common Function for processing algorithm chains.
Int
PAF_AST_streamChainFunction(
Int logArg
);
+// Purpose: writing 8-bit integer to shared memeory
+static inline
+sharedMemWriteInt8(
+ volatile XDAS_Int8 *address, /* address to write to */
+ Int8 value, /* value to write to the adddress */
+ Int gateIdx) /* GateMP Index, defined in statusOp_common.h */
+{
+#ifdef NON_CACHE_STATUS
+ statusOp_write((void *)address, (void *)&value, sizeof(Int8), gateIdx);
+#else
+ *address = value;
+#endif
+}
+
+// Purpose: read 8-bit integer from shared memeory
+static inline Int8 /* return the value read in the shared memory */
+sharedMemReadInt8(
+ volatile XDAS_Int8 *address, /* address to read from */
+ Int gateIdx) /* GateMP Index, defined in statusOp_common.h */
+{
+#ifdef NON_CACHE_STATUS
+ Int8 tempVar;
+ statusOp_read((void *)&tempVar, (void *)address, sizeof(Int8), gateIdx);
+
+ return tempVar;
+#else
+ return(*address);
+#endif
+}
+
+// Purpose: writing 32-bit integer to shared memeory
+static inline sharedMemWriteInt(volatile XDAS_Int32 *address, Int value, Int gateIdx)
+{
+#ifdef NON_CACHE_STATUS
+ statusOp_write((void *)address, (void *)&value, sizeof(Int), gateIdx);
+#else
+ *address = value;
+#endif
+}
+
+// Purpose: read 32-bit integer from shared memeory
+static inline Int sharedMemReadInt(volatile XDAS_Int32 *address, Int gateIdx)
+{
+#ifdef NON_CACHE_STATUS
+ Int tempVar;
+ statusOp_read((void *)&tempVar, (void *)address, sizeof(Int), gateIdx);
+
+ return tempVar;
+#else
+ return(*address);
+#endif
+}
+
+Int asitUpdateInputStatus(const void *pRxParams, PAF_InpBufStatus *pStatus,
+ PAF_InpBufConfig *pInpBuf);
+/*
+Int asipDecodeInit(
+ const PAF_ASIT_Params *pP,
+ PAF_ASIT_Config *pAsitCfg,
+ Int sourceSelect);
+*/
+/*Int asipDecodeProcessing(
+ const PAF_ASIT_Params *pP,
+ const PAF_ASIT_Patchs *pQ,
+ PAF_ASIT_Config *pAsitCfg,
+ Int sourceSelect);*/
+Int asitDecodeProcessing(const PAF_ASIT_Params *pP,
+ const PAF_ASIT_Patchs *pQ,
+ PAF_ASIT_Config *pAsitCfg,
+ UInt asitEvents);
+
+Int decDecodeInit(
+ const PAF_ASIT_Params *pP,
+ PAF_ASIT_Config *pAsitCfg,
+ Int sourceSelect);
+
+Int decDecodeFsm(
+ const PAF_ASIT_Params *pP,
+ const PAF_ASIT_Patchs *pQ,
+ PAF_ASIT_Config *pAsitCfg,
+ Int sourceSelect,
+ UInt decMsg);
+
+Int getFrameLengthSourceSel(
+ const PAF_ASIT_Params *pP,
+ Int8 sourceSelect);
+
+Int rxDecodePcm(PAF_AST_IoInp *pInp);
+
+Int rxDecodeBitStream(PAF_AST_IoInp *pInp);
+
+Int rxDecodePlayZero(PAF_AST_IoInp *pInp);
+
#endif /* _ASIP_H_ */