/* * WeinbusBufferInputRegister.cpp * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "WEINBUS/WeinbusBufferInputRegister.h" namespace WEINBUS { //CONSTRUCTOR WeinbusBufferInputRegister::WeinbusBufferInputRegister(): WeinbusBufferRegister(), m_registers(), m_aux_register(), m_iterator(0) // { m_size = WEINBUS_INPUT_REGISTERS_SIZE; }//CONSTRUCTRO // void WeinbusBufferInputRegister::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 WeinbusBufferInputRegister::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 WeinbusBufferInputRegister::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 WeinbusBufferInputRegister::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 WeinbusBufferInputRegister::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 WeinbusBufferInputRegister::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 WeinbusBufferInputRegister::get_register_cursor(uint16_t cursor) { return m_registers[cursor]; // }// // void WeinbusBufferInputRegister::write(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.write((uint16_t)data); // }// // void WeinbusBufferInputRegister::write(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.write((int16_t)data); // }// // void WeinbusBufferInputRegister::write(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.write((uint32_t)data); // }// // void WeinbusBufferInputRegister::write(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.write((int32_t)data); // }// // void WeinbusBufferInputRegister::write(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.write((float)data); // }// // uint16_t WeinbusBufferInputRegister::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 WeinbusBufferInputRegister::write_cursor(uint16_t cursor, uint16_t data) { m_registers[cursor].write((uint16_t)data); // }// // void WeinbusBufferInputRegister::write_cursor(uint16_t cursor, int16_t data) { m_registers[cursor].write((int16_t)data); // }// // void WeinbusBufferInputRegister::write_cursor(uint16_t cursor, uint32_t data) { m_registers[cursor].write((uint32_t)data); // }// // void WeinbusBufferInputRegister::write_cursor(uint16_t cursor, int32_t data) { m_registers[cursor].write((int32_t)data); // }// // void WeinbusBufferInputRegister::write_cursor(uint16_t cursor, float data) { m_registers[cursor].write((float)data); // }// // } /* namespace WEINBUS */