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.

RTOS/TM4C1292NCPDT: Modbus Slave Stack Integration with TI NDK

Part Number: TM4C1292NCPDT

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.