Загрузка данных


     inline register_value_type read_register(Register offset) const
     {
          const volatile register_value_type*  va = reinterpret_cast<register_value_type*>(vaddr_.get());

          return *(va + offset / sizeof(*va));
     }

bool axi_iic_bus::wait_busy()
{
     register_value_type  status;

     std::chrono::milliseconds  elapsed_time;

     auto  start_time = std::chrono::steady_clock::now();

     do
     {
          auto  stop_time = std::chrono::steady_clock::now();

          elapsed_time = std::chrono::duration_cast<std::chrono::milliseconds>(stop_time - start_time);

          status  = read_register(Register::Status);
          status &= StatusBit::BusBusy;
     } while (!status && elapsed_time.count() < WAIT_BUSY_TIMEOUT);

     return status;
}