|
- #include <assert.h>
- #include <stdint.h>
- #include <string.h>
-
- #include "main.h"
- #include "modbus.h"
- #include "modbus_backup.h"
-
- #define TEST_SLAVE_ADDRESS (1U)
-
- TEST_RTC_TYPEDEF TestRtc;
-
- static uint16_t TestHoldingRegisters[MODBUS_DATA_POINT_COUNT];
- static uint8_t TestCoilStorage[MODBUS_COIL_STORAGE_SIZE];
- static uint16_t TestExtendedRegister;
-
- static void TestInitSlave(MODBUS_SLAVE *slave)
- {
- assert(slave != NULL);
- assert(ModbusSlaveInit(slave, TEST_SLAVE_ADDRESS, TestHoldingRegisters,
- TestCoilStorage) == MODBUS_STATUS_OK);
- assert(ModbusConfigureExtendedHoldingRegister(slave,
- &TestExtendedRegister)
- == MODBUS_STATUS_OK);
- }
-
- static void TestRestoreOnlyExtendedRegister(void)
- {
- MODBUS_SLAVE slave;
- uint8_t coilValue;
-
- (void)memset(&TestRtc, 0, sizeof(TestRtc));
- (void)memset(TestHoldingRegisters, 0, sizeof(TestHoldingRegisters));
- (void)memset(TestCoilStorage, 0, sizeof(TestCoilStorage));
- TestExtendedRegister = 0U;
- TestInitSlave(&slave);
-
- assert(ModbusSetHoldingRegister(&slave, 0U, 0x1111U)
- == MODBUS_STATUS_OK);
- assert(ModbusSetHoldingRegister(&slave, 31U, 0x2222U)
- == MODBUS_STATUS_OK);
- assert(ModbusSetCoil(&slave, 0U, 1U) == MODBUS_STATUS_OK);
- assert(ModbusSetCoil(&slave, 15U, 1U) == MODBUS_STATUS_OK);
- TestExtendedRegister = 0xBEEFU;
- assert(ModbusBackupSave(&slave) == MODBUS_STATUS_OK);
-
- assert(ModbusSetHoldingRegister(&slave, 0U, 0xAAAAU)
- == MODBUS_STATUS_OK);
- assert(ModbusSetHoldingRegister(&slave, 31U, 0x5555U)
- == MODBUS_STATUS_OK);
- assert(ModbusSetCoil(&slave, 0U, 0U) == MODBUS_STATUS_OK);
- assert(ModbusSetCoil(&slave, 15U, 0U) == MODBUS_STATUS_OK);
- TestExtendedRegister = 0U;
-
- assert(ModbusBackupRestore(&slave) == MODBUS_STATUS_OK);
- assert(TestHoldingRegisters[0U] == 0xAAAAU);
- assert(TestHoldingRegisters[31U] == 0x5555U);
- assert(ModbusGetCoil(&slave, 0U, &coilValue) == MODBUS_STATUS_OK);
- assert(coilValue == 0U);
- assert(ModbusGetCoil(&slave, 15U, &coilValue) == MODBUS_STATUS_OK);
- assert(coilValue == 0U);
- assert(TestExtendedRegister == 0xBEEFU);
- }
-
- int main(void)
- {
- TestRestoreOnlyExtendedRegister();
-
- return 0;
- }
|