25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 

71 satır
2.3 KiB

  1. #include <assert.h>
  2. #include <stdint.h>
  3. #include <string.h>
  4. #include "main.h"
  5. #include "modbus.h"
  6. #include "modbus_backup.h"
  7. #define TEST_SLAVE_ADDRESS (1U)
  8. TEST_RTC_TYPEDEF TestRtc;
  9. static uint16_t TestHoldingRegisters[MODBUS_DATA_POINT_COUNT];
  10. static uint8_t TestCoilStorage[MODBUS_COIL_STORAGE_SIZE];
  11. static uint16_t TestExtendedRegister;
  12. static void TestInitSlave(MODBUS_SLAVE *slave)
  13. {
  14. assert(slave != NULL);
  15. assert(ModbusSlaveInit(slave, TEST_SLAVE_ADDRESS, TestHoldingRegisters,
  16. TestCoilStorage) == MODBUS_STATUS_OK);
  17. assert(ModbusConfigureExtendedHoldingRegister(slave,
  18. &TestExtendedRegister)
  19. == MODBUS_STATUS_OK);
  20. }
  21. static void TestRestoreOnlyExtendedRegister(void)
  22. {
  23. MODBUS_SLAVE slave;
  24. uint8_t coilValue;
  25. (void)memset(&TestRtc, 0, sizeof(TestRtc));
  26. (void)memset(TestHoldingRegisters, 0, sizeof(TestHoldingRegisters));
  27. (void)memset(TestCoilStorage, 0, sizeof(TestCoilStorage));
  28. TestExtendedRegister = 0U;
  29. TestInitSlave(&slave);
  30. assert(ModbusSetHoldingRegister(&slave, 0U, 0x1111U)
  31. == MODBUS_STATUS_OK);
  32. assert(ModbusSetHoldingRegister(&slave, 31U, 0x2222U)
  33. == MODBUS_STATUS_OK);
  34. assert(ModbusSetCoil(&slave, 0U, 1U) == MODBUS_STATUS_OK);
  35. assert(ModbusSetCoil(&slave, 15U, 1U) == MODBUS_STATUS_OK);
  36. TestExtendedRegister = 0xBEEFU;
  37. assert(ModbusBackupSave(&slave) == MODBUS_STATUS_OK);
  38. assert(ModbusSetHoldingRegister(&slave, 0U, 0xAAAAU)
  39. == MODBUS_STATUS_OK);
  40. assert(ModbusSetHoldingRegister(&slave, 31U, 0x5555U)
  41. == MODBUS_STATUS_OK);
  42. assert(ModbusSetCoil(&slave, 0U, 0U) == MODBUS_STATUS_OK);
  43. assert(ModbusSetCoil(&slave, 15U, 0U) == MODBUS_STATUS_OK);
  44. TestExtendedRegister = 0U;
  45. assert(ModbusBackupRestore(&slave) == MODBUS_STATUS_OK);
  46. assert(TestHoldingRegisters[0U] == 0xAAAAU);
  47. assert(TestHoldingRegisters[31U] == 0x5555U);
  48. assert(ModbusGetCoil(&slave, 0U, &coilValue) == MODBUS_STATUS_OK);
  49. assert(coilValue == 0U);
  50. assert(ModbusGetCoil(&slave, 15U, &coilValue) == MODBUS_STATUS_OK);
  51. assert(coilValue == 0U);
  52. assert(TestExtendedRegister == 0xBEEFU);
  53. }
  54. int main(void)
  55. {
  56. TestRestoreOnlyExtendedRegister();
  57. return 0;
  58. }