summaryrefslogtreecommitdiffstats
path: root/Src/MacAddr.h
blob: 0ff98582020fe5eecd286b0c2841f8ae016e3ff5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/*
 * Video On Demand Samples
 *
 * Copyright (C) 2015 Microchip Technology Germany II GmbH & Co. KG
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * You may also obtain this software under a propriety license from Microchip.
 * Please contact Microchip for further information.
 *
 */

/*----------------------------------------------------------*/
/*! \file
 *  \brief  This file contains the CMacAddr class.
 */
/*----------------------------------------------------------*/
#ifndef _MACADDR_H_
#define _MACADDR_H_

#include <stdint.h>

/*----------------------------------------------------------*/
/*! \brief Class to deal with MAC addresses.
 */
/*----------------------------------------------------------*/
class CMacAddr
{
private:
    uint8_t m_Mac[6];
    char stringRep[32];

public:
    /*----------------------------------------------------------*/
    /*! \brief Default constructor of CMacAddr.
     */
    /*----------------------------------------------------------*/
    CMacAddr();



    /*----------------------------------------------------------*/
    /*! \brief Default destructor of CMacAddr.
     */
    /*----------------------------------------------------------*/
    ~CMacAddr();


    /*----------------------------------------------------------*/
    /*! \brief Constructor of CMacAddr, which uses the given bytes to initialize this class.
     *  \param pAddress - 6 Byte array containing the MAC address.
     */
    /*----------------------------------------------------------*/
    CMacAddr( const uint8_t *pAddress );

    /*----------------------------------------------------------*/
    /*! \brief Constructor of CMacAddr, which uses the given bytes to initialize this class.
     *  \param b0 - The 1st byte of the MAC address.
     *  \param b1 - The 2nd byte of the MAC address.
     *  \param b2 - The 3rd byte of the MAC address.
     *  \param b3 - The 4th byte of the MAC address.
     *  \param b4 - The 5th byte of the MAC address.
     *  \param b5 - The 6th byte of the MAC address.
     */
    /*----------------------------------------------------------*/
    CMacAddr( uint8_t b0, uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5 );



    /*----------------------------------------------------------*/
    /*! \brief Constructor of CMacAddr, which uses the given parameters to create a system wide unique MAC address.
     *  \param deviceIndex - The index of the physical device instance of the server device.
     *  \param nodeAddress - The MOST node address (e.g. 0x101).
     */
    /*----------------------------------------------------------*/
    CMacAddr( uint8_t deviceInstance, uint16_t nodeAddress );



    /*----------------------------------------------------------*/
    /*! \brief Copy-Constructor of CMacAddr, which creates a new instance out of the given object (deep copy).
     *  \param copySouce - The object, to copy.
     */
    /*----------------------------------------------------------*/
    CMacAddr( CMacAddr *copySouce );



    /*----------------------------------------------------------*/
    /*! \brief Gets a zero terminated string representation of this MAC address. The delimiter is '-'.
     *  \return A string representation of this MAC address.
     */
    /*----------------------------------------------------------*/
    const char *ToString();


    /*----------------------------------------------------------*/
    /*! \brief Gets a Byte array with the length of 6 containing the MAC address
     *  \return MAC address byte array.
     */
    /*----------------------------------------------------------*/
    const uint8_t *GetBytes();


    /*----------------------------------------------------------*/
    /*! \brief Copy the MAC address value from a given byte array.
     *  \param pAddress - 6 Byte array containing the MAC address.
     */
    /*----------------------------------------------------------*/
    void CopyValuesFromByteArray( const uint8_t *pAddress );




    /*----------------------------------------------------------*/
    /*! \brief Copy the MAC address value from a given string.
     *  \param pAddress - String containing the MAC address.
     */
    /*----------------------------------------------------------*/
    void CopyValuesFromString( const char *pAddress );


    /*----------------------------------------------------------*/
    /*! \brief Access the MAC address byte wise.
     *  \param nByte - offset of the byte array of the MAC address. Must be between 0 - 5.
     *  \return The byte value of the MAC address on the given byte offset.
     */
    /*----------------------------------------------------------*/
    uint8_t operator[]( int nByte );



    /*----------------------------------------------------------*/
    /*! \brief Compares the given CMacAddr instance with this one.
     *  \param rhs - The source CMacAddr instance, which then will be compared.
     *  \return true, if the value of the MAC address is equal. false, the value of the MAC address is different.
     */
    /*----------------------------------------------------------*/
    bool operator==( CMacAddr const &rhs );
};

#endif