/* * WeinbusBufferOutputRegister.cpp * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "WEINBUS/WeinbusBufferOutputRegister.h" namespace WEINBUS { //CONSTRUCTOR WeinbusBufferOutputRegister::WeinbusBufferOutputRegister(): WeinbusBufferRegister(), m_registers(), m_aux_register(), m_iterator(0) // { m_size = WEINBUS_OUTPUT_REGISTERS_SIZE; }//CONSTRUCTOR void WeinbusBufferOutputRegister::add(uint16_t offset, uint16_t *param) { if(m_counter < m_size) { m_addr = m_start_addr + offset; m_end_addr = m_addr > m_end_addr ? m_addr : m_end_addr; m_registers[m_counter].add(m_addr, (uint16_t*)param); m_counter++; m_quantity = m_counter; } // }// // void WeinbusBufferOutputRegister::add(uint16_t offset, int16_t *param) { if(m_counter < m_size) { m_addr = m_start_addr + offset; m_end_addr = m_addr > m_end_addr ? m_addr : m_end_addr; m_registers[m_counter].add(m_addr, (int16_t*)param); m_counter++; m_quantity = m_counter; } // }// // void WeinbusBufferOutputRegister::add(uint16_t offset, uint32_t *param) { if(m_counter < m_size) { m_addr = m_start_addr + offset; m_end_addr = m_addr > m_end_addr ? m_addr : m_end_addr; m_registers[m_counter].add(m_addr, (uint32_t*)param); m_counter++; m_quantity = m_counter; } // }// // void WeinbusBufferOutputRegister::add(uint16_t offset, int32_t *param) { if(m_counter < m_size) { m_addr = m_start_addr + offset; m_end_addr = m_addr > m_end_addr ? m_addr : m_end_addr; m_registers[m_counter].add(m_addr, (int32_t*)param); m_counter++; m_quantity = m_counter; } // }// // void WeinbusBufferOutputRegister::add(uint16_t offset, float *param) { if(m_counter < m_size) { m_addr = m_start_addr + offset; m_end_addr = m_addr > m_end_addr ? m_addr : m_end_addr; m_registers[m_counter].add(m_addr, (float*)param); m_counter++; m_quantity = m_counter; } // }// // WEINBUS::WeinbusTableRegister WeinbusBufferOutputRegister::get_register_address(uint16_t address) { for(m_iterator = 0; m_iterator < m_quantity; m_iterator++) { if(m_registers[m_iterator].get_address() == address) { m_aux_register = m_registers[m_iterator]; break; }//if // }//for // return m_aux_register; // }// // WEINBUS::WeinbusTableRegister WeinbusBufferOutputRegister::get_register_cursor(uint16_t cursor) { return m_registers[cursor]; // }// // void WeinbusBufferOutputRegister::read(uint16_t address, uint16_t &data) { for(m_iterator = 0; m_iterator < m_quantity; m_iterator++) { if(m_registers[m_iterator].get_address() == address) { m_aux_register = m_registers[m_iterator]; break; }//if // }//for // m_aux_register.read((uint16_t&)data); // }// // void WeinbusBufferOutputRegister::read(uint16_t address, int16_t &data) { for(m_iterator = 0; m_iterator < m_quantity; m_iterator++) { if(m_registers[m_iterator].get_address() == address) { m_aux_register = m_registers[m_iterator]; break; }//if // }//for // m_aux_register.read((int16_t&)data); // }// // void WeinbusBufferOutputRegister::read(uint16_t address, uint32_t &data) { for(m_iterator = 0; m_iterator < m_quantity; m_iterator++) { if(m_registers[m_iterator].get_address() == address) { m_aux_register = m_registers[m_iterator]; break; }//if // }//for // m_aux_register.read((uint32_t&)data); // }// // void WeinbusBufferOutputRegister::read(uint16_t address, int32_t &data) { for(m_iterator = 0; m_iterator < m_quantity; m_iterator++) { if(m_registers[m_iterator].get_address() == address) { m_aux_register = m_registers[m_iterator]; break; }//if // }//for // m_aux_register.read((int32_t&)data); // }// // void WeinbusBufferOutputRegister::read(uint16_t address, float &data) { for(m_iterator = 0; m_iterator < m_quantity; m_iterator++) { if(m_registers[m_iterator].get_address() == address) { m_aux_register = m_registers[m_iterator]; break; }//if // }//for // m_aux_register.read((float&)data); // }// // uint16_t WeinbusBufferOutputRegister::get_cursor(uint16_t address) { for(m_iterator = 0; m_iterator < m_quantity; m_iterator++) { if(m_registers[m_iterator].get_address() == address) { break; }//if // }//for // return m_iterator; // }// // void WeinbusBufferOutputRegister::read_cursor(uint16_t cursor, uint16_t &data) { m_registers[cursor].read((uint16_t&)data); // }// // void WeinbusBufferOutputRegister::read_cursor(uint16_t cursor, int16_t &data) { m_registers[cursor].read((int16_t&)data); // }// // void WeinbusBufferOutputRegister::read_cursor(uint16_t cursor, uint32_t &data) { m_registers[cursor].read((uint32_t&)data); // }// // void WeinbusBufferOutputRegister::read_cursor(uint16_t cursor, int32_t &data) { m_registers[cursor].read((int32_t&)data); // }// // void WeinbusBufferOutputRegister::read_cursor(uint16_t cursor, float &data) { m_registers[cursor].read((float&)data); // }// // } /* namespace WEINBUS */