/** \brief test function Task
 **
 ** this function test transport Task
 **
 **/
void test_ciaaModbus_transportTask_01(void)
{
   int32_t hModbusTransp[10];
   uint32_t loopi;

   for (loopi = 0 ; loopi < CIAA_MODBUS_TOTAL_TRANSPORT_ASCII; loopi++)
   {
      ciaaModbus_asciiTaskCount[loopi] = 0;
   }

   hModbusTransp[0] = ciaaModbus_transportOpen(
            CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_ASCII,
            CIAAMODBUS_TRANSPORT_MODE_ASCII_MASTER);

   hModbusTransp[1] = ciaaModbus_transportOpen(
               CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_RTU,
               CIAAMODBUS_TRANSPORT_MODE_RTU_MASTER);

   hModbusTransp[2] = ciaaModbus_transportOpen(
               CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_TCP,
               CIAAMODBUS_TRANSPORT_MODE_TCP_MASTER);

   ciaaModbus_transportTask(hModbusTransp[0]);

   TEST_ASSERT_NOT_EQUAL(-1, hModbusTransp[0]);
   TEST_ASSERT_EQUAL(-1, hModbusTransp[1]);
   TEST_ASSERT_EQUAL(-1, hModbusTransp[2]);
   TEST_ASSERT_EQUAL(1, ciaaModbus_asciiTaskCount[0]);
}
Пример #2
0
extern void modbusComm_init(void)
{
   int32_t fdUartPC;

   /* open serial port connected to ioboard */
   fdUartPC = ciaaPOSIX_open("/dev/serial/uart/0", ciaaPOSIX_O_RDWR | ciaaPOSIX_O_NONBLOCK);

   /* Open Modbus Master */
   hModbusMaster = ciaaModbus_masterOpen();

   /* Open Transport Modbus Ascii (UART PC) */
   hModbusAsciiUartPC = ciaaModbus_transportOpen(
         fdUartPC,
         CIAAMODBUS_TRANSPORT_MODE_ASCII_MASTER);

   /* Open Gateway Modbus */
   hModbusGateway = ciaaModbus_gatewayOpen();

   /* Add Modbus Master to gateway */
   ciaaModbus_gatewayAddMaster(
         hModbusGateway,
         hModbusMaster);

   /* Add Modbus Transport to gateway */
   ciaaModbus_gatewayAddTransport(
         hModbusGateway,
         hModbusAsciiUartPC);
}
Пример #3
0
/*==================[external functions definition]==========================*/
extern void modbusSlave_init(void)
{
   int32_t fdSerialPort;

   fdSerialPort = ciaaPOSIX_open("/dev/serial/uart/0", O_RDWR | O_NONBLOCK);

   /* Open Modbus Slave */
   hModbusSlave = ciaaModbus_slaveOpen(
         &callbacksStruct,
         CIAA_BLINKING_MODBUS_ID);

   /* Open Transport Modbus Ascii */
   hModbusAscii = ciaaModbus_transportOpen(
         fdSerialPort,
         CIAAMODBUS_TRANSPORT_MODE_ASCII_SLAVE);

   /* Open Gateway Modbus */
   hModbusGateway = ciaaModbus_gatewayOpen();

   /* Add Modbus Slave to gateway */
   ciaaModbus_gatewayAddSlave(
         hModbusGateway,
         hModbusSlave);

   /* Add Modbus Transport to gateway */
   ciaaModbus_gatewayAddTransport(
         hModbusGateway,
         hModbusAscii);
}
/** \brief test function transportGetType
 **
 ** this function test transport get type
 **
 **/
void test_ciaaModbus_transportGetType_01(void)
{
   int32_t hModbusTransp[2];
   int8_t type[2];

   hModbusTransp[0] = ciaaModbus_transportOpen(
            CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_ASCII,
            CIAAMODBUS_TRANSPORT_MODE_ASCII_MASTER);

   hModbusTransp[1] = ciaaModbus_transportOpen(
               CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_ASCII,
               CIAAMODBUS_TRANSPORT_MODE_ASCII_SLAVE);

   type[0] = ciaaModbus_transportGetType(hModbusTransp[0]);

   type[1] = ciaaModbus_transportGetType(hModbusTransp[1]);

   TEST_ASSERT_EQUAL(CIAAMODBUS_TRANSPORT_TYPE_MASTER, type[0]);
   TEST_ASSERT_EQUAL(CIAAMODBUS_TRANSPORT_TYPE_SLAVE, type[1]);
}
/** \brief test function SendMsg
 **
 ** this function test send message
 **
 **/
void test_ciaaModbus_transportSendMsg_01(void)
{
   int32_t hModbusTransp[10];
   uint32_t loopi;
   uint8_t id = 0x11;
   uint8_t *pPdu = (uint8_t*)0x22;
   uint32_t size = 0x33;

   for (loopi = 0 ; loopi < CIAA_MODBUS_TOTAL_TRANSPORT_ASCII; loopi++)
   {
      ciaaModbus_asciiSendMsgMockData[loopi].id = 0;
      ciaaModbus_asciiSendMsgMockData[loopi].pdu = NULL;
      ciaaModbus_asciiSendMsgMockData[loopi].size = 0;
      ciaaModbus_asciiSendMsgMockData[loopi].cmock_num_calls = 0;
   }

   hModbusTransp[0] = ciaaModbus_transportOpen(
            CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_ASCII,
            CIAAMODBUS_TRANSPORT_MODE_ASCII_MASTER);

   hModbusTransp[1] = ciaaModbus_transportOpen(
               CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_RTU,
               CIAAMODBUS_TRANSPORT_MODE_RTU_MASTER);

   hModbusTransp[2] = ciaaModbus_transportOpen(
               CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_TCP,
               CIAAMODBUS_TRANSPORT_MODE_TCP_MASTER);

   ciaaModbus_transportSendMsg(hModbusTransp[0], id, pPdu, size);

   TEST_ASSERT_NOT_EQUAL(-1, hModbusTransp[0]);
   TEST_ASSERT_EQUAL(id, ciaaModbus_asciiSendMsgMockData[0].id);
   TEST_ASSERT_EQUAL_PTR(pPdu, ciaaModbus_asciiSendMsgMockData[0].pdu);
   TEST_ASSERT_EQUAL(size, ciaaModbus_asciiSendMsgMockData[0].size);
   TEST_ASSERT_EQUAL(0, ciaaModbus_asciiSendMsgMockData[0].cmock_num_calls);
}
/** \brief test function GetRespTimeout
 **
 ** this function test transport get response timeout
 ** and set response timeout
 **
 **/
void test_ciaaModbus_transportGetRespTimeout_01(void)
{
   int32_t hModbusTransp;
   uint32_t timeout;

   hModbusTransp = ciaaModbus_transportOpen(
            CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_ASCII,
            CIAAMODBUS_TRANSPORT_MODE_ASCII_MASTER);

   ciaaModbus_transportSetRespTimeout(hModbusTransp, CIAA_MODBUS_TRASNPORT_DEFAULT_TIMEOUT);

   timeout = ciaaModbus_transportGetRespTimeout(hModbusTransp);

   TEST_ASSERT_NOT_EQUAL(-1, hModbusTransp);
   TEST_ASSERT_EQUAL(CIAA_MODBUS_TRASNPORT_DEFAULT_TIMEOUT, timeout);
}
/** \brief Test ciaaModbus_transportOpen
 **
 **/
void test_ciaaModbus_transportOpen_01(void)
{
   int32_t hModbusTransp[10];

   /* open transport in ASCII MASTER mode */
   hModbusTransp[0] = ciaaModbus_transportOpen(
         CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_ASCII,
         CIAAMODBUS_TRANSPORT_MODE_ASCII_MASTER);

   /* open transport in ASCII SLAVE mode */
   hModbusTransp[1] = ciaaModbus_transportOpen(
         CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_ASCII,
         CIAAMODBUS_TRANSPORT_MODE_ASCII_SLAVE);

   /* open transport in RTU MASTER mode */
   hModbusTransp[2] = ciaaModbus_transportOpen(
         CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_RTU,
         CIAAMODBUS_TRANSPORT_MODE_RTU_MASTER);

   /* open transport in RTU SLAVE mode */
   hModbusTransp[3] = ciaaModbus_transportOpen(
         CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_RTU,
         CIAAMODBUS_TRANSPORT_MODE_RTU_SLAVE);

   /* open transport in TCP MASTER mode */
   hModbusTransp[4] = ciaaModbus_transportOpen(
         CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_TCP,
         CIAAMODBUS_TRANSPORT_MODE_TCP_MASTER);

   /* open transport in TCP SLAVE mode */
   hModbusTransp[5] = ciaaModbus_transportOpen(
         CIAA_MODBUS_TRASNPORT_FIL_DES_MODBUS_TCP,
         CIAAMODBUS_TRANSPORT_MODE_TCP_SLAVE);

   /* open transport in invalid mode */
   hModbusTransp[6] = ciaaModbus_transportOpen(
         0,
         0xFF);

   TEST_ASSERT_EQUAL(0, hModbusTransp[0]);
   TEST_ASSERT_EQUAL(1, hModbusTransp[1]);
   TEST_ASSERT_EQUAL(-1, hModbusTransp[2]);
   TEST_ASSERT_EQUAL(-1, hModbusTransp[3]);
   TEST_ASSERT_EQUAL(-1, hModbusTransp[4]);
   TEST_ASSERT_EQUAL(-1, hModbusTransp[5]);
   TEST_ASSERT_EQUAL(-1, hModbusTransp[6]);
}