/* * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * Neither the name of The Linux Foundation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "Pipe.h" #include "TestsUtils.h" ////////////////////////////////////////////////////////////////////////////////////////////////////////// //Do not change those default values due to the fact that some test may relay on those default values. //In case you need a change of the field do this in a derived class. //Dest MAC(6 bytes) Src MAC(6 Bytes) EtherType(2 Bytes) unsigned char Pipe::m_pUsbHeader[] = { 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xC1, 0xC2 }; unsigned char Pipe::m_pA2NDUNHeader[] = { 0xA1, 0xA2, 0xA3, 0xA4, 0xB1, 0xB2, 0xC1, 0xC2 }; //unsigned char Pipe::m_pA2DUNHeader[] = {}; //unsigned char Pipe::m_pQ6LANHeader[] = {}; ////////////////////////////////////////////////////////////////////////////////////////////////////////// Pipe::Pipe(enum ipa_client_type nClientType, IPATestConfiguration eConfiguration) : m_Fd(-1), m_nHeaderLengthRemove(0), m_nHeaderLengthAdd(0), m_pHeader(NULL), m_pInodePath(NULL), m_bInitialized(false) { m_nClientType = nClientType; m_eConfiguration = eConfiguration; } ////////////////////////////////////////////////////////////////////////////////////////////////////////// Pipe::~Pipe() { //Nothing to be done at this point... } ////////////////////////////////////////////////////////////////////////////////////////////////////////// bool Pipe::Init() { int tries_cnt = 10000; SetSpecificClientParameters(m_nClientType, m_eConfiguration); //By examining the Client type we will map the inode device name while (tries_cnt > 0) { // Sleep for 5 msec usleep(5000); m_Fd = open(m_pInodePath, O_RDWR); if (-1 != m_Fd) break; tries_cnt--; } LOG_MSG_DEBUG("open retries_cnt=%d\n", 10-tries_cnt); if (-1 == m_Fd) { LOG_MSG_ERROR("Failed to open %s", m_pInodePath); return false; } m_bInitialized = true; return true; } ////////////////////////////////////////////////////////////////////////////////////////////////////////// void Pipe::Destroy() { if (false == m_bInitialized) { LOG_MSG_ERROR("Pipe is being used without being initialized!"); return; } close(m_Fd); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// int Pipe::Send(unsigned char * pBuffer, size_t nBytesToSend) { if (false == m_bInitialized) { LOG_MSG_ERROR("Pipe is being used without being initialized!"); return 0; } size_t nBytesWritten = 0; nBytesWritten = write(m_Fd, pBuffer, nBytesToSend); return nBytesWritten; } ////////////////////////////////////////////////////////////////////////////////////////////////////////// int Pipe::AddHeaderAndSend(unsigned char * pIpPacket, size_t nIpPacketSize) { int retval; if (false == m_bInitialized) { LOG_MSG_ERROR("Pipe is being used without being initialized!"); return 0; } size_t nBytesToWrite = nIpPacketSize + m_nHeaderLengthAdd; //Allocate new buffer for the Header and IP packet: unsigned char *pLinkLayerAndIpPacket = new unsigned char[nBytesToWrite]; if (!pLinkLayerAndIpPacket) { LOG_MSG_ERROR("Memory allocation failure."); return 0; } //put the header first: memcpy(pLinkLayerAndIpPacket, m_pHeader, m_nHeaderLengthAdd); //Then add the IP packet: memcpy(pLinkLayerAndIpPacket + m_nHeaderLengthAdd, pIpPacket, nIpPacketSize); //Call the Send method which will send the new created buffer(which contains the IP packet with the Header): retval = Send(pLinkLayerAndIpPacket, nBytesToWrite); delete[] pLinkLayerAndIpPacket; return retval; } ////////////////////////////////////////////////////////////////////////////////////////////////////////// int Pipe::Receive(unsigned char *pBuffer, size_t nBytesToReceive) { if (false == m_bInitialized) { LOG_MSG_ERROR("Pipe is being used without being initialized!"); return 0; } size_t nBytesRead = 0; nBytesRead = read(m_Fd, (void*) pBuffer, nBytesToReceive); return nBytesRead; } ////////////////////////////////////////////////////////////////////////////////////////////////////////// int Pipe::ReceiveAndRemoveHeader(unsigned char *pIpPacket, size_t nIpPacketSize) { if (false == m_bInitialized) { LOG_MSG_ERROR("Pipe is being used without being initialized!"); return 0; } size_t nBytesToRead = nIpPacketSize + m_nHeaderLengthRemove; unsigned char *pPacket = new unsigned char[nBytesToRead]; if (!pPacket) { LOG_MSG_ERROR("Memory allocation failure."); return 0; } size_t nReceivedBytes = Receive(pPacket, nBytesToRead); if (nReceivedBytes != nBytesToRead) { LOG_MSG_ERROR("Pipe was asked to receive an IP packet " "of size %d, however only %d bytes were read " "while the header size is %d", nIpPacketSize, nReceivedBytes, m_nHeaderLengthRemove); delete[] pPacket; return nReceivedBytes - m_nHeaderLengthRemove; } memcpy(pIpPacket, pPacket + m_nHeaderLengthRemove, nIpPacketSize); delete[] pPacket; return (nReceivedBytes - m_nHeaderLengthRemove); } ////////////////////////////////////////////////////////////////////////////////////////////////////////// int Pipe::GetClientType() { if (false == m_bInitialized) { LOG_MSG_ERROR("Pipe is being used without being initialized!"); return 0; } return m_nClientType; } ////////////////////////////////////////////////////////////////////////////////////////////////////////// void Pipe::SetSpecificClientParameters( enum ipa_client_type nClientType, IPATestConfiguration eConfiguration) { switch (eConfiguration) { case IPA_TEST_CONFIFURATION_0: break; case IPA_TEST_CONFIFURATION_1: switch (nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_1_FROM_USB1_TO_IPA_DMA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD "); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_1_FROM_IPA_TO_USB1_DMA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_1 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIFURATION_2: switch (nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_2_FROM_USB_TO_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD"); break; case (IPA_CLIENT_TEST2_CONS): m_pInodePath = CONFIG_2_FROM_IPA_TO_A2_NDUN; m_nHeaderLengthAdd = sizeof(m_pA2NDUNHeader); m_nHeaderLengthRemove = sizeof(m_pA2NDUNHeader); m_pHeader = m_pA2NDUNHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_2 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIFURATION_3: switch (nClientType) { case IPA_CLIENT_TEST2_PROD: m_pInodePath = CONFIG_3_FROM_A2_NDUN_TO_IPA; m_nHeaderLengthAdd = sizeof(m_pA2NDUNHeader); m_nHeaderLengthRemove = sizeof(m_pA2NDUNHeader); m_pHeader = m_pA2NDUNHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD"); break; case IPA_CLIENT_TEST_CONS: m_pInodePath = CONFIG_3_FROM_IPA_TO_USB1; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; case IPA_CLIENT_TEST2_CONS: m_pInodePath = CONFIG_3_FROM_IPA_TO_A2_NDUN; m_nHeaderLengthAdd = sizeof(m_pA2NDUNHeader); m_nHeaderLengthRemove = sizeof(m_pA2NDUNHeader); m_pHeader = m_pA2NDUNHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS"); break; case IPA_CLIENT_TEST4_CONS: //TODO add when applicable m_pInodePath = CONFIG_3_FROM_IPA_TO_Q6_LAN; m_nHeaderLengthAdd = 0; m_nHeaderLengthRemove = 0; m_pHeader = 0; LOG_MSG_INFO("IPA_CLIENT_TEST4_CONS is not supported yet"); break; default: LOG_MSG_INFO("IPA_TEST_CONFIFURATION_3 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIFURATION_7: switch (nClientType) { case IPA_CLIENT_TEST_PROD: m_pInodePath = CONFIG_7_FROM_USB1_TO_IPA; m_nHeaderLengthAdd = 0; m_nHeaderLengthRemove = 0; m_pHeader = NULL; LOG_MSG_INFO( "Setting parameters for FROM_USB1_TO_IPA - no header addition/removal"); break; case IPA_CLIENT_MAX: m_pInodePath = CONFIG_7_FROM_IPA_TO_A5_EXCEPTION; m_nHeaderLengthAdd = 0; //No send m_nHeaderLengthRemove = 8; //A5Mux header size without retained source header m_pHeader = NULL; //No header to send LOG_MSG_INFO("Setting parameters for A5_Exception "); break; default: LOG_MSG_INFO("IPA_TEST_CONFIFURATION_7 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIGURATION_8: switch(nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_8_DEAGG_TO_IPA_NO_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD "); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_8_FROM_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; case (IPA_CLIENT_TEST3_PROD): m_pInodePath = CONFIG_8_NO_AGG_TO_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_PROD "); break; case (IPA_CLIENT_TEST3_CONS): m_pInodePath = CONFIG_8_FROM_IPA_NO_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS"); break; case (IPA_CLIENT_TEST2_PROD): m_pInodePath = CONFIG_8_DEAGG_TO_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD"); break; case (IPA_CLIENT_TEST2_CONS): m_pInodePath = CONFIG_8_DEAGG_FROM_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS"); break; case (IPA_CLIENT_TEST4_PROD): m_pInodePath = CONFIG_8_NO_AGG_TO_IPA_AGG_TIME; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_PROD"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_8 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIGURATION_9: switch(nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_9_DEAGG_TO_IPA_NO_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD "); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_9_FROM_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; case (IPA_CLIENT_TEST3_PROD): m_pInodePath = CONFIG_9_NO_AGG_TO_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_PROD "); break; case (IPA_CLIENT_TEST3_CONS): m_pInodePath = CONFIG_9_FROM_IPA_NO_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS"); break; case (IPA_CLIENT_TEST2_PROD): m_pInodePath = CONFIG_9_DEAGG_TO_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD"); break; case (IPA_CLIENT_TEST2_CONS): m_pInodePath = CONFIG_9_DEAGG_FROM_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS"); break; case (IPA_CLIENT_TEST4_PROD): m_pInodePath = CONFIG_9_NO_AGG_TO_IPA_AGG_TIME; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_PROD"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_9 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIGURATION_10: switch(nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_10_TO_IPA_AGG_ZERO_LIMITS; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD"); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_10_FROM_IPA_AGG_ZERO_LIMITS; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_10 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIGURATION_11: switch(nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_11_TO_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD"); break; case (IPA_CLIENT_TEST2_CONS): m_pInodePath = CONFIG_11_FROM_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS"); break; case (IPA_CLIENT_TEST2_PROD): m_pInodePath = CONFIG_11_TO_IPA_DEAGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD"); break; case (IPA_CLIENT_TEST3_CONS): m_pInodePath = CONFIG_11_FROM_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS"); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_11_FROM_IPA_AGG_TIME; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; case (IPA_CLIENT_TEST4_CONS): m_pInodePath = CONFIG_11_FROM_IPA_ZERO_LIMITS; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_CONS"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_11 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIGURATION_12: switch(nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_12_TO_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD"); break; case (IPA_CLIENT_TEST2_CONS): m_pInodePath = CONFIG_12_FROM_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS"); break; case (IPA_CLIENT_TEST2_PROD): m_pInodePath = CONFIG_12_TO_IPA_DEAGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD"); break; case (IPA_CLIENT_TEST3_CONS): m_pInodePath = CONFIG_12_FROM_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS"); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_12_FROM_IPA_AGG_TIME; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; case (IPA_CLIENT_TEST4_CONS): m_pInodePath = CONFIG_12_FROM_IPA_ZERO_LIMITS; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_CONS"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_12 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIGURATION_17: switch(nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_17_TO_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD "); break; case (IPA_CLIENT_TEST3_PROD): m_pInodePath = CONFIG_17_TO_IPA_NO_HDR; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_PROD "); break; case (IPA_CLIENT_TEST2_CONS): m_pInodePath = CONFIG_17_FROM_IPA_AGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_CONS"); break; case (IPA_CLIENT_TEST2_PROD): m_pInodePath = CONFIG_17_TO_IPA_DEAGG; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD "); break; case (IPA_CLIENT_TEST3_CONS): m_pInodePath = CONFIG_17_FROM_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST3_CONS"); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_17_FROM_IPA_AGG_TIME; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; case (IPA_CLIENT_TEST4_CONS): m_pInodePath = CONFIG_17_FROM_IPA_ZERO_LIMITS; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST4_CONS"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_17 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIGURATION_18: switch (nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_18_TO_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD "); break; case (IPA_CLIENT_TEST2_PROD): m_pInodePath = CONFIG_18_DUMMY_ENDPOINT; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST2_PROD "); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_18_FROM_IPA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_CONS"); break; default: LOG_MSG_ERROR( "IPA_TEST_CONFIFURATION_18 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; case IPA_TEST_CONFIGURATION_19: switch (nClientType) { case (IPA_CLIENT_TEST_PROD): m_pInodePath = CONFIG_19_FROM_USB_TO_IPA_DMA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for IPA_CLIENT_TEST_PROD "); break; case (IPA_CLIENT_TEST_CONS): m_pInodePath = CONFIG_19_FROM_IPA_TO_USB_DMA; m_nHeaderLengthAdd = sizeof(m_pUsbHeader); m_nHeaderLengthRemove = sizeof(m_pUsbHeader); m_pHeader = m_pUsbHeader; LOG_MSG_INFO("Setting parameters for TEST_CONS"); break; default: LOG_MSG_ERROR("IPA_TEST_CONFIFURATION_19 switch in default " "nClientType = %d is not supported ", nClientType); break; } break; default: LOG_MSG_ERROR("Pipe::SetSpecificClientParameters " "switch in default eConfiguration = %d ", eConfiguration); break; } }/* Pipe::SetSpecificClientParameters() */ ////////////////////////////////////////////////////////////////////////////////////////////////////////// int Pipe::GetHeaderLengthAdd() { if (false == m_bInitialized) { LOG_MSG_ERROR("Pipe is being used without being initialized!"); return 0; } return m_nHeaderLengthAdd; } ////////////////////////////////////////////////////////////////////////////////////////////////////////// int Pipe::GetHeaderLengthRemove() { if (false == m_bInitialized) { LOG_MSG_ERROR("Pipe is being used without being initialized!"); return 0; } return m_nHeaderLengthRemove; } //////////////////////////////////////////////////////////////////////////////////////////////////////////