This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software: TI-RTOS
Hi,
I am integrating Modbus slave stack with TI NDK. While configuring target layer in Linux environment, we have to do code as shown below to initialize channel.
void * TMWDEFS_GLOBAL liniotarg_initChannel(
const void *pUserConfig,
TMWTARG_CONFIG *pTmwConfig)
{
LINIO_CONFIG *pIOConfig = (LINIO_CONFIG *) pUserConfig;
LINIO_CHANNEL *pLinIoChannel;
if (!LinIoContext.bStarted)
{
#if LINIOTARG_SUPPORT_TCP
_LinuxSemCreate(&LinIoContext.tcpSemaphore);
LinIoContext.pTcpChannels = TMWDEFS_NULL;
LinIoContext.pTcpListeners = TMWDEFS_NULL;
LinIoContext.bSocketThreadRunning = TMWDEFS_FALSE;
LinIoContext.bConnectThreadRunning = TMWDEFS_FALSE;
LinIoContext.socketThreadHandle = 0;
LinIoContext.connectThreadHandle = 0;
#endif
#if LINIOTARG_SUPPORT_232
LinIoContext.pSerialChannels = TMWDEFS_NULL;
_LinuxSemCreate(&LinIoContext.serialSemaphore);
#endif
LinIoContext.bStarted = TMWDEFS_TRUE;
}
pLinIoChannel = (LINIO_CHANNEL *) malloc(sizeof(LINIO_CHANNEL));
if ( pLinIoChannel == NULL )
return TMWDEFS_NULL;
pLinIoChannel->type = pIOConfig->type;
switch (pIOConfig->type)
{
#if LINIOTARG_SUPPORT_232
case LINIO_TYPE_232:
pLinIoChannel->pChannelInfo = (void *) lin232_initChannel(pIOConfig, pTmwConfig);
break;
#endif
#if LINIOTARG_SUPPORT_TCP
case LINIO_TYPE_TCP:
pLinIoChannel->pChannelInfo = (void *) linTCP_initChannel(pIOConfig, pTmwConfig);
break;
#endif
default:
return TMWDEFS_NULL;
}
return(pLinIoChannel);
}
/* function: linTCP_initChannel */
void * TMWDEFS_GLOBAL linTCP_initChannel(
const void *pUserConfig,
TMWTARG_CONFIG *pTmwConfig)
{
LINIO_CONFIG *pIOConfig = (LINIO_CONFIG *) pUserConfig;
TCP_IO_CHANNEL *pTcpChannel;
pTcpChannel = (TCP_IO_CHANNEL *) malloc(sizeof(TCP_IO_CHANNEL));
if (pTcpChannel == NULL)
return TMWDEFS_NULL;
memset(pTcpChannel, 0, sizeof(TCP_IO_CHANNEL));
pTcpChannel->bChannelFree = TMWDEFS_FALSE;
pTcpChannel->dataSocket = INVALID_SOCKET; // Check whether valid socket is required
pTcpChannel->udpSocket = INVALID_SOCKET;
pTcpChannel->ipPort = pIOConfig->linTCP.ipPort;
pTcpChannel->mode = pIOConfig->linTCP.mode;
// pTcpChannel->role = pIOConfig->linTCP.role;
strcpy(pTcpChannel->ipAddress, pIOConfig->linTCP.ipAddress);
strcpy(pTcpChannel->chnlName, pIOConfig->linTCP.chnlName);
// pTcpChannel->validateUDPAddress = pIOConfig->linTCP.validateUDPAddress;
// pTcpChannel->validUDPAddress = 0;
// strcpy(pTcpChannel->udpBroadcastAddress, pIOConfig->linTCP.udpBroadcastAddress);
// pTcpChannel->destUDPPort = pIOConfig->linTCP.destUDPPort;
// pTcpChannel->initUnsolUDPPort = pIOConfig->linTCP.initUnsolUDPPort;
// pTcpChannel->localUDPPort = pIOConfig->linTCP.localUDPPort;
pTcpChannel->ipConnectTimeout = pIOConfig->linTCP.ipConnectTimeout;
pTcpChannel->disconnectOnNewSyn = pIOConfig->linTCP.disconnectOnNewSyn;
// pTcpChannel->dualEndPointIpPort = pIOConfig->linTCP.dualEndPointIpPort;
pTcpChannel->pChannelCallback = pTmwConfig->pChannelCallback;
pTcpChannel->pChannelCallbackParam = pTmwConfig->pCallbackParam;
pTcpChannel->pChannelReadyCallback = pTmwConfig->pChannelReadyCallback;
pTcpChannel->pChannelReadyCbkParam = pTmwConfig->pChannelReadyCbkParam;
TMW_TP_TakeSem(LinIoContext.tcpSemaphore);
pTcpChannel->pNext = LinIoContext.pTcpChannels;
LinIoContext.pTcpChannels = pTcpChannel;
TMW_TP_ReleaseSem(LinIoContext.tcpSemaphore);
return pTcpChannel;
}
I have to implement this in TI RTOS environment. Please guide me for this.