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.

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?

UserRevisionLine numberNew 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