1-Wire® library for mbed. Complete 1-Wire library that supports our silicon masters along with a bit-bang master on the MAX32600MBED platform with one common interface for mbed. Slave support has also been included and more slaves will be added as time permits.
Dependents: MAXREFDES131_Qt_Demo MAX32630FTHR_iButton_uSD_Logger MAX32630FTHR_DS18B20_uSD_Logger MAXREFDES130_131_Demo ... more
Superseded by MaximInterface.
array.hpp@49:36954b62f503, 2016-04-08 (annotated)
- Committer:
- IanBenzMaxim
- Date:
- Fri Apr 08 16:11:16 2016 -0500
- Revision:
- 49:36954b62f503
- Parent:
- 43:23017dcd2ec3
Added a Read Scratchpad operation for DS28E15/22/25. Added comments for various classes.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
IanBenzMaxim | 33:a4c015046956 | 1 | #ifndef _ARRAY_HPP |
IanBenzMaxim | 33:a4c015046956 | 2 | #define _ARRAY_HPP |
IanBenzMaxim | 33:a4c015046956 | 3 | |
IanBenzMaxim | 33:a4c015046956 | 4 | #include <cstdint> |
IanBenzMaxim | 33:a4c015046956 | 5 | #include <cstring> |
IanBenzMaxim | 33:a4c015046956 | 6 | |
IanBenzMaxim | 49:36954b62f503 | 7 | /// Generic array class similar to std::array. |
IanBenzMaxim | 33:a4c015046956 | 8 | template <typename T, std::size_t N> |
IanBenzMaxim | 33:a4c015046956 | 9 | class array |
IanBenzMaxim | 33:a4c015046956 | 10 | { |
IanBenzMaxim | 33:a4c015046956 | 11 | public: |
IanBenzMaxim | 49:36954b62f503 | 12 | /// Number of elements contained in the array. |
IanBenzMaxim | 33:a4c015046956 | 13 | static const std::size_t length = N; |
IanBenzMaxim | 49:36954b62f503 | 14 | |
IanBenzMaxim | 49:36954b62f503 | 15 | /// Built-in array representation. |
IanBenzMaxim | 33:a4c015046956 | 16 | typedef T Buffer[N]; |
IanBenzMaxim | 33:a4c015046956 | 17 | |
IanBenzMaxim | 33:a4c015046956 | 18 | private: |
IanBenzMaxim | 33:a4c015046956 | 19 | Buffer m_buffer; |
IanBenzMaxim | 33:a4c015046956 | 20 | |
IanBenzMaxim | 33:a4c015046956 | 21 | public: |
IanBenzMaxim | 33:a4c015046956 | 22 | const array<T, N> & operator=(const array<T, N> & rhs) |
IanBenzMaxim | 33:a4c015046956 | 23 | { |
IanBenzMaxim | 43:23017dcd2ec3 | 24 | if (this != &rhs) |
IanBenzMaxim | 43:23017dcd2ec3 | 25 | { |
IanBenzMaxim | 33:a4c015046956 | 26 | std::memcpy(this->m_buffer, rhs.m_buffer, N * sizeof(T)); |
IanBenzMaxim | 43:23017dcd2ec3 | 27 | } |
IanBenzMaxim | 43:23017dcd2ec3 | 28 | return rhs; |
IanBenzMaxim | 33:a4c015046956 | 29 | } |
IanBenzMaxim | 33:a4c015046956 | 30 | |
IanBenzMaxim | 33:a4c015046956 | 31 | bool operator==(const array<T, N> & rhs) const |
IanBenzMaxim | 33:a4c015046956 | 32 | { |
IanBenzMaxim | 33:a4c015046956 | 33 | return (std::memcmp(this->m_buffer, rhs.m_buffer, N * sizeof(T)) == 0); |
IanBenzMaxim | 33:a4c015046956 | 34 | } |
IanBenzMaxim | 33:a4c015046956 | 35 | |
IanBenzMaxim | 33:a4c015046956 | 36 | bool operator!=(const array<T, N> & rhs) const |
IanBenzMaxim | 33:a4c015046956 | 37 | { |
IanBenzMaxim | 33:a4c015046956 | 38 | return !operator==(rhs); |
IanBenzMaxim | 33:a4c015046956 | 39 | } |
IanBenzMaxim | 33:a4c015046956 | 40 | |
IanBenzMaxim | 49:36954b62f503 | 41 | /// Conversion to array reference. |
IanBenzMaxim | 33:a4c015046956 | 42 | operator Buffer &() |
IanBenzMaxim | 33:a4c015046956 | 43 | { |
IanBenzMaxim | 49:36954b62f503 | 44 | return m_buffer; |
IanBenzMaxim | 33:a4c015046956 | 45 | } |
IanBenzMaxim | 33:a4c015046956 | 46 | |
IanBenzMaxim | 49:36954b62f503 | 47 | /// Conversion to const array reference. |
IanBenzMaxim | 49:36954b62f503 | 48 | operator const Buffer &() const |
IanBenzMaxim | 33:a4c015046956 | 49 | { |
IanBenzMaxim | 49:36954b62f503 | 50 | return m_buffer; |
IanBenzMaxim | 33:a4c015046956 | 51 | } |
IanBenzMaxim | 33:a4c015046956 | 52 | |
IanBenzMaxim | 33:a4c015046956 | 53 | array<T, N>() { } |
IanBenzMaxim | 33:a4c015046956 | 54 | |
IanBenzMaxim | 33:a4c015046956 | 55 | array<T, N>(const array<T, N> & copy) |
IanBenzMaxim | 33:a4c015046956 | 56 | { |
IanBenzMaxim | 33:a4c015046956 | 57 | operator=(copy); |
IanBenzMaxim | 33:a4c015046956 | 58 | } |
IanBenzMaxim | 33:a4c015046956 | 59 | |
IanBenzMaxim | 33:a4c015046956 | 60 | array<T, N>(const Buffer & buffer) |
IanBenzMaxim | 33:a4c015046956 | 61 | { |
IanBenzMaxim | 33:a4c015046956 | 62 | std::memcpy(m_buffer, buffer, N * sizeof(T)); |
IanBenzMaxim | 33:a4c015046956 | 63 | } |
IanBenzMaxim | 33:a4c015046956 | 64 | }; |
IanBenzMaxim | 33:a4c015046956 | 65 | |
IanBenzMaxim | 49:36954b62f503 | 66 | #endif |