综合平台编程器项目的远程存储
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

26 line
1.0 KiB

  1. #pragma once
  2. #include "register_repository.h"
  3. // 根据当前运行模式把寄存器访问转发给虚拟仓库或 PLC 缓存仓库
  4. class ActiveRegisterRepository final : public RegisterRepository
  5. {
  6. public:
  7. explicit ActiveRegisterRepository(RegisterRepository &initial_repository);
  8. // 切换活动仓库;运行模式服务负责保证切换时机和生命周期
  9. void use(RegisterRepository &repository);
  10. BitReadResult readBit(const RegisterAddress &address) const override;
  11. RegisterWriteResult writeBit(const RegisterAddress &address, bool value) override;
  12. WordReadResult readWord(const RegisterAddress &address) const override;
  13. RegisterWriteResult writeWord(
  14. const RegisterAddress &address, std::int16_t value) override;
  15. WordPairReadResult readWordPair(const RegisterAddress &address) const override;
  16. RegisterWriteResult writeWordPair(
  17. const RegisterAddress &address,
  18. const std::array<std::int16_t, 2> &values) override;
  19. private:
  20. RegisterRepository *repository_ = nullptr;
  21. };