UartWriteBuffer.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * Copyright (C) 2020 Embedded AMS B.V. - All Rights Reserved
  3. *
  4. * This file is part of Embedded Proto.
  5. *
  6. * Embedded Proto is open source software: you can redistribute it and/or
  7. * modify it under the terms of the GNU General Public License as published
  8. * by the Free Software Foundation, version 3 of the license.
  9. *
  10. * Embedded Proto is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with Embedded Proto. If not, see <https://www.gnu.org/licenses/>.
  17. *
  18. * For commercial and closed source application please visit:
  19. * <https://EmbeddedProto.com/license/>.
  20. *
  21. * Embedded AMS B.V.
  22. * Info:
  23. * info at EmbeddedProto dot com
  24. *
  25. * Postal adress:
  26. * Johan Huizingalaan 763a
  27. * 1066 VH, Amsterdam
  28. * the Netherlands
  29. */
  30. #include "UartWriteBuffer.h"
  31. #include <string.h>
  32. void UartWriteBuffer::clear()
  33. {
  34. write_index_ = 0;
  35. }
  36. uint32_t UartWriteBuffer::get_size() const
  37. {
  38. return write_index_;
  39. }
  40. uint32_t UartWriteBuffer::get_max_size() const
  41. {
  42. return MAX_SIZE;
  43. }
  44. uint32_t UartWriteBuffer::get_available_size() const
  45. {
  46. return MAX_SIZE - write_index_;
  47. }
  48. bool UartWriteBuffer::push(const uint8_t byte)
  49. {
  50. bool return_value = MAX_SIZE > write_index_;
  51. if(return_value)
  52. {
  53. data_[write_index_] = byte;
  54. ++write_index_;
  55. }
  56. return return_value;
  57. }
  58. bool UartWriteBuffer::push(const uint8_t* bytes, const uint32_t length)
  59. {
  60. bool return_value = MAX_SIZE > (write_index_ + length);
  61. if(return_value)
  62. {
  63. memcpy(data_ + write_index_, bytes, length);
  64. write_index_ += length;
  65. }
  66. return return_value;
  67. }
  68. uint8_t* UartWriteBuffer::get_data()
  69. {
  70. return data_;
  71. }