Data.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/anakod/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * Data.h
8  *
9  * @author: 11 December 2018 - mikee47 <mike@sillyhouse.net>
10  *
11  * Definitions for an SPI Request Packet containing data and settings for a transfer.
12  * A single transfer may use 1 or more transactions.
13  *
14  */
15 
16 #pragma once
17 
18 #include <stdint.h>
19 
20 namespace HSPI
21 {
33 struct Data {
34  union {
35  uint8_t data8;
37  uint32_t data32;
38  uint8_t data[4];
39  void* ptr;
40  const void* cptr;
41  uint8_t* ptr8;
42  };
45 
46  Data()
47  {
48  clear();
49  }
50 
54  void clear()
55  {
56  data32 = 0;
57  length = 0;
58  isPointer = 0;
59  }
60 
66  void set(const void* data, uint16_t count)
67  {
68  cptr = data;
69  length = count;
70  isPointer = 1;
71  }
72 
83  void set8(uint8_t data)
84  {
85  set32(data, 1);
86  }
87 
92  void set16(uint16_t data)
93  {
94  set32(data, 2);
95  }
96 
102  void set32(uint32_t data, uint8_t len = 4)
103  {
104  data32 = data;
105  length = len;
106  isPointer = 0;
107  }
108 
110 };
111 
112 } // namespace HSPI
void set8(uint8_t data)
Set to single 8-bit value.
Definition: Data.h:83
const void * cptr
Definition: Data.h:40
Definition: Common.h:24
Specifies a block incoming or outgoing data.
Definition: Data.h:33
uint8_t data[4]
Definition: Data.h:38
void set16(uint16_t data)
Set to single 16-bit value.
Definition: Data.h:92
void clear()
Reset to zero-length.
Definition: Data.h:54
void * ptr
Pointer to data.
Definition: Data.h:39
Data()
Definition: Data.h:46
uint16_t data16
Definition: Data.h:36
uint32_t data32
Definition: Data.h:37
uint8_t * ptr8
Definition: Data.h:41
void set32(uint32_t data, uint8_t len=4)
Set to 32-bit data.
Definition: Data.h:102
uint16_t isPointer
If set, data is referenced indirectly, otherwise it&#39;s stored directly.
Definition: Data.h:44
uint16_t length
Number of bytes of data.
Definition: Data.h:43
uint8_t data8
Definition: Data.h:35