📄 ixhssacccodelet.c
字号:
/* sleep for 200ms */ ixOsalSleep (200); } /* for (i ... */ /*****************/ /* STOP SERVICES */ /*****************/ if (TRUE == packetisedFlag) { if ((IX_HSSACC_CODELET_HSS_PORT_0_ONLY == portMode) || (IX_HSSACC_CODELET_DUAL_PORTS == portMode)) { /* stop the Packetised Service for all clients */ for (hdlcPortId = 0; hdlcPortId < IX_HSSACC_HDLC_PORT_MAX; hdlcPortId++) { ixHssAccCodeletPacketisedServiceStop (IX_HSSACC_HSS_PORT_0, hdlcPortId); } } if ((IX_HSSACC_CODELET_HSS_PORT_1_ONLY == portMode) || (IX_HSSACC_CODELET_DUAL_PORTS == portMode)) { /* stop the Packetised Service for all clients */ for (hdlcPortId = 0; hdlcPortId < IX_HSSACC_HDLC_PORT_MAX; hdlcPortId++) { ixHssAccCodeletPacketisedServiceStop (IX_HSSACC_HSS_PORT_1, hdlcPortId); } } } if (TRUE == channelisedFlag) { if ((IX_HSSACC_CODELET_HSS_PORT_0_ONLY == portMode) || (IX_HSSACC_CODELET_DUAL_PORTS == portMode)) { /* stop the Channelised Service for the single client */ ixHssAccCodeletChannelisedServiceStop (IX_HSSACC_HSS_PORT_0); } if ((IX_HSSACC_CODELET_HSS_PORT_1_ONLY == portMode) || (IX_HSSACC_CODELET_DUAL_PORTS == portMode)) { /* stop the Channelised Service for the single client */ ixHssAccCodeletChannelisedServiceStop (IX_HSSACC_HSS_PORT_1); } } if ((IX_HSSACC_CODELET_HSS_PORT_0_ONLY == portMode) || (IX_HSSACC_CODELET_DUAL_PORTS == portMode)) { ixHssAccCodeletShow(IX_HSSACC_HSS_PORT_0); } if ((IX_HSSACC_CODELET_HSS_PORT_1_ONLY == portMode) || (IX_HSSACC_CODELET_DUAL_PORTS == portMode)) { ixHssAccCodeletShow(IX_HSSACC_HSS_PORT_1); } return IX_SUCCESS;}/* * Function definition: ixHssAccCodeletServiceStart */voidixHssAccCodeletServiceStart (IxHssAccCodeletPortMode portMode){ /* Display the settings of the codelet */ printf ("HSS Acc Codelet tries to start with following settings : \n"); if (IX_HSSACC_CODELET_DUAL_PORTS == portMode) { printf ("\t>HSS Port 0 and HSS Port 1.\n"); } else { printf ("\t>HSS Port %d Only.\n", (portMode==IX_HSSACC_CODELET_HSS_PORT_0_ONLY ? 0: 1)); } printf("\t>Packetised Service. [%s]\n", (TRUE == packetisedFlag ? "On" : "Off")); printf("\t>Channelised Service.[%s]\n", (TRUE == channelisedFlag ? "On" : "Off")); printf ("HSS Acc Codelet is being started and executed. \n"); printf ("Codelet will run for %u ms\n\n", IX_HSSACC_CODELET_DURATION_IN_MS); ixHssAccCodeletServiceMain(portMode);}/* * Function definition: ixHssAccCodeletInit */IX_STATUSixHssAccCodeletInit (void){ IxQMgrDispatcherFuncPtr dispatcherFunc ; printf ("Setting the debug level & redirecting output\n"); /* set the debug level */#ifdef __vxworks logInit (ioTaskStdGet (0,1), 1); logFdSet (ioTaskStdGet (0,1));#endif ixOsalLogLevelSet (IX_OSAL_LOG_LVL_ERROR); /* IX_OSAL_LOG_LVL_ALL, IX_OSAL_LOG_LVL_MESSAGE, ... */#ifdef __vxworks /* When the ixe drivers are running, the codelets * cannot run. */ if (endFindByName ("ixe", 0) != NULL) { printf("FAIL : Driver ixe0 detected\n"); return IX_FAIL; } if (endFindByName ("ixe", 1) != NULL) { printf("FAIL : Driver ixe1 detected\n"); return IX_FAIL; }#endif /* Check for the Silicon type */ if (IX_FEATURE_CTRL_DEVICE_TYPE_IXP46X == ixFeatureCtrlDeviceRead ()) { if (ixFeatureCtrlComponentCheck(IX_FEATURECTRL_NPEA)== IX_FEATURE_CTRL_COMPONENT_DISABLED) { printf("Exiting: IxHssAccCodeletInit() NPE A component Does not exist \n"); return IX_FAIL; } } /*Initialize and Start NPE-A */ printf ("Initializing and starting NPE-A ..."); if (IX_SUCCESS != ixNpeDlNpeInitAndStart (IX_HSSACC_CODELET_NPEA_IMAGE_ID)) { printf ("Error initialising and starting NPE A!\n"); return (IX_FAIL); } printf (" successful.\n"); /* initialise the IxNpeMh component */ printf ("Initializing NpeMh Component ..."); if (IX_SUCCESS != ixNpeMhInitialize (IX_NPEMH_NPEINTERRUPTS_YES)) { printf ("ixNpeMhInitialize failed\n"); return (IX_FAIL); } printf (" successful.\n"); /* initialise the QMgr component */ printf ("Initializing QMgr Component ..."); if (IX_SUCCESS != ixQMgrInit()) { printf ("ixQMgrInit failed\n"); return (IX_FAIL); } printf (" successful.\n"); printf ("Bind Queue Dispatcher to interrupt vector ..."); ixQMgrDispatcherLoopGet(&dispatcherFunc); /* Hook the QM QUELOW dispatcher to interrupt */ if (IX_SUCCESS != ixOsalIrqBind(IX_OSAL_IXP400_QM1_IRQ_LVL, /* vector */ (IxOsalVoidFnVoidPtr)dispatcherFunc, /* routine */ (void *) IX_QMGR_QUELOW_GROUP)) /* parameter */ { printf ("ixOsalIrqBind failed to bind to QM1 interrupt\n"); return (IX_FAIL); } printf (" successful.\n"); /* initialise the HssAcc component */ printf("Intializing HssAcc Component ..."); if (IX_SUCCESS != ixHssAccInit()) { printf ("ixHssAccInit failed\n"); return IX_FAIL; } printf (" successful.\n"); return IX_SUCCESS;}#ifdef __winceint readNumber(void){ char line[256]; gets(line); return atoi(line);}int wmain(int argc, WCHAR **argv){ int hssAccCodeletOperationType; int hssAccCodeletPortMode; int hssAccCodeletVerifyMode; int hssAccCodeletNrRead; BOOL hssAccCodeletWrongNumber = TRUE; printf("\n"); printf("******************** HSS Acc Codelet *************************\n"); while(hssAccCodeletWrongNumber) { printf(" Choose type of service you want to execute:\n"); printf(" 1. Packetised service only\n"); printf(" 2. Channelised service only\n"); printf(" 3. Packetised and channelised service\n"); printf("100. Exit hssAcc Codelet\n"); printf("\n"); printf("Enter number: "); hssAccCodeletNrRead = readNumber(); switch(hssAccCodeletNrRead) { case 1: hssAccCodeletOperationType = IX_HSSACC_CODELET_PKT_SERV_ONLY; hssAccCodeletWrongNumber = FALSE; break; case 2: hssAccCodeletOperationType = IX_HSSACC_CODELET_CHAN_SERV_ONLY; hssAccCodeletWrongNumber = FALSE; break; case 3: hssAccCodeletOperationType = IX_HSSACC_CODELET_PKT_CHAN_SERV; hssAccCodeletWrongNumber = FALSE; break; case 100: return IX_SUCCESS; break; default: printf("Wrong number chosen: %d!\n", hssAccCodeletNrRead); break; } } hssAccCodeletWrongNumber = TRUE; while(hssAccCodeletWrongNumber) { printf(" Choose which port(s) you want to execute:\n"); printf(" 1. HSS Port 0 Only\n"); printf(" 2. HSS Port 1 Only\n"); printf(" 3. Both HSS Port 0 & 1\n"); printf("100. Exit hssAcc Codelet\n"); printf("\n"); printf("Enter number: "); hssAccCodeletNrRead = readNumber(); switch(hssAccCodeletNrRead) { case 1: hssAccCodeletPortMode = IX_HSSACC_CODELET_HSS_PORT_0_ONLY; hssAccCodeletWrongNumber = FALSE; break; case 2: hssAccCodeletPortMode = IX_HSSACC_CODELET_HSS_PORT_1_ONLY; hssAccCodeletWrongNumber = FALSE; break; case 3: hssAccCodeletPortMode = IX_HSSACC_CODELET_DUAL_PORTS; hssAccCodeletWrongNumber = FALSE; break; case 100: return IX_SUCCESS; break; default: printf("Wrong number chosen: %d!\n", hssAccCodeletNrRead); break; } } hssAccCodeletWrongNumber = TRUE; while(hssAccCodeletWrongNumber) { printf(" Choose if codelet should or shouldn't verify traffic:\n"); printf(" 1. Codelet verifies traffic received\n"); printf(" 2. Codelet does not verify traffic received\n"); printf("100. Exit hssAcc Codelet\n"); printf("\n"); printf("Enter number: "); hssAccCodeletNrRead = readNumber(); switch(hssAccCodeletNrRead) { case 1: hssAccCodeletVerifyMode = IX_HSSACC_CODELET_VERIFY_ON; hssAccCodeletWrongNumber = FALSE; break; case 2: hssAccCodeletVerifyMode = IX_HSSACC_CODELET_VERIFY_OFF; hssAccCodeletWrongNumber = FALSE; break; case 100: return IX_SUCCESS; break; default: printf("Wrong number chosen: %d!\n", hssAccCodeletNrRead); break; } } hssAccCodeletWrongNumber = TRUE; ixHssAccCodeletMain(hssAccCodeletOperationType, hssAccCodeletPortMode, hssAccCodeletVerifyMode); hssAccCodeletNrRead = readNumber(); return IX_SUCCESS;}#endif /* ifdef __wince */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -