summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-12-03 09:25:51 +0100
committerDaniel Friesel <derf@finalrewind.org>2018-12-03 09:25:51 +0100
commitff2c23e32fc4fdf8427b712a056a9c05f44c76af (patch)
tree59705d57129bc379a7f476c6f23736aa8bdc6ddf
parent463eea4804253970199bd9b705768b8dde83deb7 (diff)
esp8266: add counter driver
-rw-r--r--include/arch/esp8266/driver/stdout.h2
-rw-r--r--src/arch/esp8266/Makefile.inc6
-rw-r--r--src/arch/esp8266/driver/stdout.cc16
3 files changed, 21 insertions, 3 deletions
diff --git a/include/arch/esp8266/driver/stdout.h b/include/arch/esp8266/driver/stdout.h
index 95135ad..8d366d8 100644
--- a/include/arch/esp8266/driver/stdout.h
+++ b/include/arch/esp8266/driver/stdout.h
@@ -27,6 +27,8 @@ class StandardOutput {
StandardOutput & operator<<(long number);
StandardOutput & operator<<(unsigned long long number);
StandardOutput & operator<<(long long number);
+ StandardOutput & operator<<(float number);
+ StandardOutput & operator<<(double number);
StandardOutput & operator<<(void *pointer);
StandardOutput & operator<<(const char *text);
StandardOutput & operator<<(StandardOutput & (*fun) (StandardOutput &));
diff --git a/src/arch/esp8266/Makefile.inc b/src/arch/esp8266/Makefile.inc
index 1df3e5a..18547a6 100644
--- a/src/arch/esp8266/Makefile.inc
+++ b/src/arch/esp8266/Makefile.inc
@@ -33,6 +33,10 @@ ifneq ($(findstring stdin,${arch_drivers}), )
CXX_TARGETS += src/arch/esp8266/driver/stdin.cc
endif
+ifneq ($(findstring counter,${arch_drivers}), )
+ CXX_TARGETS += src/arch/esp8266/driver/counter.cc
+endif
+
.cc.o:
${QUIET}${CXX} ${INCLUDES} ${COMMON_FLAGS} ${CXXFLAGS} -c -o $@ ${@:.o=.cc}
${QUIET}${OBJCOPY} --rename-section .text=.irom0.text --rename-section .literal=.irom0.literal $@
@@ -47,7 +51,7 @@ build/system.ar: ${OBJECTS}
build/system.elf: build/system.ar
${CC} -L${SDK_BASE}/lib -T${SDK_BASE}/lib/eagle.app.v6-derf.ld ${LDFLAGS} \
-Wl,--start-group -lc -lgcc -lhal -lpp -lphy -lnet80211 -llwip -lwpa \
- -lmain $< -Wl,--end-group -o $@
+ -lmain -flto $< -Wl,--end-group -o $@
build/0x00000.bin: build/system.elf
${ESPTOOL} --chip esp8266 elf2image -o build/ $<
diff --git a/src/arch/esp8266/driver/stdout.cc b/src/arch/esp8266/driver/stdout.cc
index d8e07a8..c4f0abc 100644
--- a/src/arch/esp8266/driver/stdout.cc
+++ b/src/arch/esp8266/driver/stdout.cc
@@ -67,7 +67,19 @@ StandardOutput & StandardOutput::operator<<(long number)
return *this;
}
-StandardOutput & StandardOutput::operator<<(unsigned long long number)
+StandardOutput & StandardOutput::operator<<(float number)
+{
+ printf_float(number);
+ return *this;
+}
+
+StandardOutput & StandardOutput::operator<<(double number)
+{
+ printf_float(number);
+ return *this;
+}
+
+ICACHE_FLASH_ATTR StandardOutput & StandardOutput::operator<<(unsigned long long number)
{
switch (base) {
case 2:
@@ -164,7 +176,7 @@ void StandardOutput::printf_uint8(uint8_t num)
put(format_hex_nibble(num % 16));
}
-void StandardOutput::printf_float(float num)
+ICACHE_FLASH_ATTR void StandardOutput::printf_float(float num)
{
if (num < 0) {
put('-');