@@ -24,23 +24,55 @@ extern "C" {
24
24
#include " user_interface.h"
25
25
}
26
26
27
- #define kHz (1000L )
28
- #define MHz (1000L *kHz )
29
- #define GHz (1000L *MHz)
30
-
31
- #define kBit (1024L )
32
- #define MBit (1024L *kBit )
33
- #define GBit (1024L *MBit)
34
-
35
- #define kB (1024L )
36
- #define MB (1024L *kB )
37
- #define GB (1024L *MB)
38
-
39
27
// extern "C" void ets_wdt_init(uint32_t val);
40
28
extern " C" void ets_wdt_enable (void );
41
29
extern " C" void ets_wdt_disable (void );
42
30
extern " C" void wdt_feed (void );
43
31
32
+ /* *
33
+ * User-defined Literals
34
+ * usage:
35
+ *
36
+ * uint32_t = test = 10_MHz; // --> 10000000
37
+ */
38
+
39
+ unsigned long long operator " " _kHz(unsigned long long x) {
40
+ return x * 1000 ;
41
+ }
42
+
43
+ unsigned long long operator " " _MHz(unsigned long long x) {
44
+ return x * 1000 * 1000 ;
45
+ }
46
+
47
+ unsigned long long operator " " _GHz(unsigned long long x) {
48
+ return x * 1000 * 1000 * 1000 ;
49
+ }
50
+
51
+ unsigned long long operator " " _kBit(unsigned long long x) {
52
+ return x * 1024 ;
53
+ }
54
+
55
+ unsigned long long operator " " _MBit(unsigned long long x) {
56
+ return x * 1024 * 1024 ;
57
+ }
58
+
59
+ unsigned long long operator " " _GBit(unsigned long long x) {
60
+ return x * 1024 * 1024 * 1024 ;
61
+ }
62
+
63
+ unsigned long long operator " " _kB(unsigned long long x) {
64
+ return x * 1024 ;
65
+ }
66
+
67
+ unsigned long long operator " " _MB(unsigned long long x) {
68
+ return x * 1024 * 1024 ;
69
+ }
70
+
71
+ unsigned long long operator " " _GB(unsigned long long x) {
72
+ return x * 1024 * 1024 * 1024 ;
73
+ }
74
+
75
+
44
76
EspClass ESP;
45
77
46
78
EspClass::EspClass ()
@@ -134,15 +166,15 @@ uint32_t EspClass::getFlashChipSize(void)
134
166
if (spi_flash_read (0x0000 , &data, 4 ) == SPI_FLASH_RESULT_OK) {
135
167
switch ((bytes[3 ] & 0xf0 ) >> 4 ) {
136
168
case 0x0 : // 4 Mbit (512KB)
137
- return (512 * kB );
169
+ return (512_kB );
138
170
case 0x1 : // 2 MBit (256KB)
139
- return (256 * kB );
171
+ return (256_kB );
140
172
case 0x2 : // 8 MBit (1MB)
141
- return (1 * MB );
173
+ return (1_MB );
142
174
case 0x3 : // 16 MBit (2MB)
143
- return (2 * MB );
175
+ return (2_MB );
144
176
case 0x4 : // 32 MBit (4MB)
145
- return (4 * MB );
177
+ return (4_MB );
146
178
default : // fail?
147
179
return 0 ;
148
180
}
@@ -158,13 +190,13 @@ uint32_t EspClass::getFlashChipSpeed(void)
158
190
if (spi_flash_read (0x0000 , &data, 4 ) == SPI_FLASH_RESULT_OK) {
159
191
switch (bytes[3 ] & 0x0F ) {
160
192
case 0x0 : // 40 MHz
161
- return (40 * MHz );
193
+ return (40_MHz );
162
194
case 0x1 : // 26 MHz
163
- return (26 * MHz );
195
+ return (26_MHz );
164
196
case 0x2 : // 20 MHz
165
- return (20 * MHz );
197
+ return (20_MHz );
166
198
case 0xf : // 80 MHz
167
- return (80 * MHz );
199
+ return (80_MHz );
168
200
default : // fail?
169
201
return 0 ;
170
202
}
@@ -186,3 +218,32 @@ FlashMode_t EspClass::getFlashChipMode(void)
186
218
}
187
219
return mode;
188
220
}
221
+
222
+ /* *
223
+ * Infos from
224
+ * http://www.wlxmall.com/images/stock_item/att/A1010004.pdf
225
+ * http://www.gigadevice.com/product-series/5.html?locale=en_US
226
+ */
227
+ uint32_t EspClass::getFlashChipSizeByChipId (void ) {
228
+ uint32_t chipId = getFlashChipId ();
229
+ switch (chipId) {
230
+ case 0x1740C8 : // GD25Q64B
231
+ return (8_MB);
232
+ case 0x1640C8 : // GD25Q32B
233
+ return (4_MB);
234
+ case 0x1540C8 : // GD25Q16B
235
+ return (2_MB);
236
+ case 0x1440C8 : // GD25Q80
237
+ return (1_MB);
238
+ case 0x1340C8 : // GD25Q40
239
+ return (512_kB);
240
+ case 0x1240C8 : // GD25Q20
241
+ return (256_kB);
242
+ case 0x1140C8 : // GD25Q10
243
+ return (128_kB);
244
+ case 0x1040C8 : // GD25Q12
245
+ return (64_kB);
246
+ default :
247
+ return 0 ;
248
+ }
249
+ }
0 commit comments