工具/软件:TI-RTOS
您好!
我 正在将 Modbus 从堆栈与 TI NDK 集成。 在 Linux 环境中配置目标层时、我们必须执行如下所示的代码才能初始化通道。
void * TMWDEFS_GLOBAL Liniotarg_initChannel (
const void *pUserConfig,
TMWTARG_CONFIG * pTmwConfig)
{
LINIO_CONFIG * pIOConfig =(LINIO_CONFIG *) pUserConfig;
LINIO_CHANNEL *pLinIoChannel;
如果(!LinIoContext.bStarted)
{
#if LINIOTADG_SUPPING_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 LINIOTADG_SUPPING_232
LinIoContext.pSerialChannels = TMWDEFS_NULL;
_LinuxSemCreate(&LinIoContext.serialSemaphore);
#endif
LinIoContext.bStarted = TMWDEFS_true;
}
pLinIoChannel =(LINIO_CHANNEL *) malloc (sizeof (LINIO_CHANNEL));
if (pLinIoChannel == NULL)
返回 TMWDEFS_NULL;
pLinIoChannel->type = pIOConfig->type;
switch (pIOConfig->type)
{
#if LINIOTADG_SUPPING_232
LINIO_TYPE_232案例:
pLinIoChannel->pChannelInfo =(void *) lin232_initChannel (pIOConfig、pTmwConfig);
中断;
#endif
#if LINIOTADG_SUPPING_TCP
LINIO_TYPE_TCP 案例:
pLinIoChannel->pChannelInfo =(void *) lintcp_initChannel (pIOConfig、pTmwConfig);
中断;
#endif
默认值:
返回 TMWDEFS_NULL;
}
return (pLinIoChannel);
}
/*函数: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 =空)
返回 TMWDEFS_NULL;
memset (pTcpChannel、0、sizeof (tcp_io_channel));
pTcpChannel->bChannelFree = TMWDEFS_false;
pTcpChannel->dataSocket = invalid_socket; //检查是否需要有效的套接字
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);
返回 pTcpChannel;
}
我必须在 TI RTOS 环境中实现这一点。 请为我提供 相关指导。