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:
Thu Mar 31 11:56:01 2016 -0500
Revision:
33:a4c015046956
Child:
43:23017dcd2ec3
Created a generic array wrapper class. Updated array types used in ISha256MacCoprocessor and DS28E15_22_25 for clarity.

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 33:a4c015046956 7 template <typename T, std::size_t N>
IanBenzMaxim 33:a4c015046956 8 class array
IanBenzMaxim 33:a4c015046956 9 {
IanBenzMaxim 33:a4c015046956 10 public:
IanBenzMaxim 33:a4c015046956 11 static const std::size_t length = N;
IanBenzMaxim 33:a4c015046956 12 typedef T Buffer[N];
IanBenzMaxim 33:a4c015046956 13
IanBenzMaxim 33:a4c015046956 14 private:
IanBenzMaxim 33:a4c015046956 15 Buffer m_buffer;
IanBenzMaxim 33:a4c015046956 16
IanBenzMaxim 33:a4c015046956 17 public:
IanBenzMaxim 33:a4c015046956 18 const array<T, N> & operator=(const array<T, N> & rhs)
IanBenzMaxim 33:a4c015046956 19 {
IanBenzMaxim 33:a4c015046956 20 std::memcpy(this->m_buffer, rhs.m_buffer, N * sizeof(T));
IanBenzMaxim 33:a4c015046956 21 return rhs;
IanBenzMaxim 33:a4c015046956 22 }
IanBenzMaxim 33:a4c015046956 23
IanBenzMaxim 33:a4c015046956 24 bool operator==(const array<T, N> & rhs) const
IanBenzMaxim 33:a4c015046956 25 {
IanBenzMaxim 33:a4c015046956 26 return (std::memcmp(this->m_buffer, rhs.m_buffer, N * sizeof(T)) == 0);
IanBenzMaxim 33:a4c015046956 27 }
IanBenzMaxim 33:a4c015046956 28
IanBenzMaxim 33:a4c015046956 29 bool operator!=(const array<T, N> & rhs) const
IanBenzMaxim 33:a4c015046956 30 {
IanBenzMaxim 33:a4c015046956 31 return !operator==(rhs);
IanBenzMaxim 33:a4c015046956 32 }
IanBenzMaxim 33:a4c015046956 33
IanBenzMaxim 33:a4c015046956 34 operator Buffer &()
IanBenzMaxim 33:a4c015046956 35 {
IanBenzMaxim 33:a4c015046956 36 return m_buffer; // Conversion to array reference
IanBenzMaxim 33:a4c015046956 37 }
IanBenzMaxim 33:a4c015046956 38
IanBenzMaxim 33:a4c015046956 39 operator const Buffer&() const
IanBenzMaxim 33:a4c015046956 40 {
IanBenzMaxim 33:a4c015046956 41 return m_buffer; // Conversion to const array reference
IanBenzMaxim 33:a4c015046956 42 }
IanBenzMaxim 33:a4c015046956 43
IanBenzMaxim 33:a4c015046956 44 array<T, N>() { }
IanBenzMaxim 33:a4c015046956 45
IanBenzMaxim 33:a4c015046956 46 array<T, N>(const array<T, N> & copy)
IanBenzMaxim 33:a4c015046956 47 {
IanBenzMaxim 33:a4c015046956 48 operator=(copy);
IanBenzMaxim 33:a4c015046956 49 }
IanBenzMaxim 33:a4c015046956 50
IanBenzMaxim 33:a4c015046956 51 array<T, N>(const Buffer & buffer)
IanBenzMaxim 33:a4c015046956 52 {
IanBenzMaxim 33:a4c015046956 53 std::memcpy(m_buffer, buffer, N * sizeof(T));
IanBenzMaxim 33:a4c015046956 54 }
IanBenzMaxim 33:a4c015046956 55 };
IanBenzMaxim 33:a4c015046956 56
IanBenzMaxim 33:a4c015046956 57 #endif