/** \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]); }
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); }
/*==================[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]); }