Edison - Kann, mutt, löppt!

Ich habe meinen Code nun für den DUE umgeschrieben und auf github veröffentlicht.
Allerdings habe ich noch kein 1.3 PCB und kann daher nicht weiter testen. Da der Shop die nächsten Wochen nichts versendet wird das auch wohl erstmal nicht möglich sein.

Könnte jemand mal testen, ob er den Code kompiliert bekommt?
Ich verwende ARDUINO 1.8.3.

https://github.com/kwrtz/Rolam
 
Ich verwende Arduino 1.8.1 - Dort bekomme ich einen Compilerfehler:

C:UsersalexDownloadsRolam-masterRolam-masterEdisonEdison.ino:22:23: fatal error: Streaming.h: No such file or directory
#include "Streaming.h"

Sollte ich auf 1.8.3 aktualisieren?

PS: Denkst Du man könnte den Perimeter-Code von Sunray (benutzt schnellen DMA-Transfer/kürzere PRN Codes für 2 Spulen: https://github.com/Ardumower/Sunray/tree/master/sunray) als Option integrieren? Dann könnten mehr Leute die Firmware mit dem PCB1.3 ohne zusätzliche Hardware ausprobieren...
 
Nein, nur #include Streaming.h löschen aus Edison.ino

Es wäre für mich noch interessant, ob meine Error Routinen auch float drucken. Man ließt ja immer wieder, das Arduino diese nicht mit kompiliert.
Bei mir funktioniert dies. Ich verwende aktuell Visual Micro mit Visual Studio was die Arduino Toolchain verwendet. Ich bin mir nicht sicher ob hier dann die Compiler Options anders gesetzt werden.

Ich habe aktuell das gesamte Projekt neu kompiliert und bekomme folgende Kompiler Warnings:
Die kommen wohl durch das vorhanden sein von i2c.h und i2c.cpp aus Sunray. Kannst du damit was anfangen?

Compiling debug version of 'Edison' for 'Arduino Due (Programming Port)'

Wire.cpp:25: In file included from
Wire.h: In constructor TwoWire::TwoWire(Twi*, void (*)(), void (*)())
Wire.h: 96:7: warning: 'TwoWire::twi' will be initialized after [-Wreorder]
Twi *twi
Wire.h: 72:10: warning: 'uint8_t TwoWire::rxBufferIndex' [-Wreorder]
uint8_t rxBufferIndex
Wire.cpp: 95:1: warning: when initialized here [-Wreorder]
TwoWire*: TwoWire(Twi *_twi, void(*_beginCb)(void), void(*_endCb)(void))

Wire.cpp:25: In file included from
Wire.h: 108:16: warning: 'TwoWire::status' will be initialized after [-Wreorder]
TwoWireStatus status
Wire.h: 90:30: warning: 'void (* TwoWire::eek:nBeginCallback)()' [-Wreorder]
void (*onBeginCallback)(void)
Wire.cpp: 95:1: warning: when initialized here [-Wreorder]
TwoWire*: TwoWire(Twi *_twi, void(*_beginCb)(void), void(*_endCb)(void))
Program size: 107.880 bytes (used 21% of a 524.288 byte maximum) (24,85 secs)
 
Ok, dann kompiliert es - Evtl. muss das "include " aus der i2c.cpp verschwinden? Sieht nach irgendwas mit der Reihenfolge der includes aus...
 
Habe mal bisschen geforscht. Scheinbar ist die Ursache, dass die Initialisierungsreihenfolge nicht der Deklarationsreihenfolge entspricht.
Wieder was dazugelernt B) Habe ich wohl intuitive immer richtig gemacht.
https://stackoverflow.com/questions/1564937/gcc-warning-will-be-initialized-after https://stackoverflow.com/questions/30364585/will-be-initialized-after-wreorder


Code:
Initialisierung Order in wire.cpp:

TwoWire::TwoWire(Twi *_twi, void(*_beginCb)(void), void(*_endCb)(void)) :
twi(_twi), 
rxBufferIndex(0), 
rxBufferLength(0), 
txAddress(0),
txBufferLength(0), 
srvBufferIndex(0), 
srvBufferLength(0), 
status(
	UNINITIALIZED), 
onBeginCallback(_beginCb), 
onEndCallback(_endCb), 
twiClock(TWI_CLOCK) {
}

Deklarations Order in  wire.h:
private:
	// RX Buffer
	uint8_t rxBuffer[BUFFER_LENGTH];
	uint8_t rxBufferIndex;
	uint8_t rxBufferLength;

	// TX Buffer
	uint8_t txAddress;
	uint8_t txBuffer[BUFFER_LENGTH];
	uint8_t txBufferLength;

	// Service buffer
	uint8_t srvBuffer[BUFFER_LENGTH];
	uint8_t srvBufferIndex;
	uint8_t srvBufferLength;

	// Callback user functions
	void (*onRequestCallback)(void);
	void (*onReceiveCallback)(int);

	// Called before initialization
	void (*onBeginCallback)(void);

	// Called after deinitialization
	void (*onEndCallback)(void);

	// TWI instance
	Twi *twi;
 
Oben