slave_comms.h

changeset 0
2c8ba1964db7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/slave_comms.h	Sat Nov 07 13:23:07 2015 +0100
@@ -0,0 +1,71 @@
+#ifndef _SLAVE_COMMSH
+#define _SLAVE_COMMSH
+/*
+   Functions to drive, and to return values from, a slave processor
+
+   Adrian Bowyer 29 July 2012
+*/
+
+#ifdef REPRAPPRO_MULTIMATERIALS
+
+extern float txyz[];
+extern char slaveBuffer[];
+extern long timeout;
+#define TIMEOUT 4 // ms
+
+float slaveDegHotend(uint8_t extruder);
+void slaveSetTargetHotend(const float &celsius, uint8_t extruder);
+float slaveDegTargetHotend(uint8_t extruder);
+bool slaveIsHeatingHotend(uint8_t extruder);
+bool slaveIsCoolingHotend(uint8_t extruder);
+void slaveRemoteStep(int8_t extruder, int8_t v);
+void slaveRemoteDir(int8_t extruder, bool forward);
+void talkToSlave(char s[]);
+char* listenToSlave();
+void setup_slave();
+
+
+FORCE_INLINE float slaveDegHotend(uint8_t extruder) { return txyz[extruder]; }
+FORCE_INLINE void slaveSetTargetHotend(const float &celsius, uint8_t extruder) {txyz[extruder] = celsius; }
+FORCE_INLINE float slaveDegTargetHotend(uint8_t extruder) { return txyz[extruder]; }
+FORCE_INLINE bool slaveIsHeatingHotend(uint8_t extruder) { return false; }
+FORCE_INLINE bool  slaveIsCoolingHotend(uint8_t extruder) { return false; }
+
+
+FORCE_INLINE void slaveRemoteStep(int8_t extruder, int8_t v)
+{
+
+}
+
+FORCE_INLINE void toggleSlaveClock()
+{
+	digitalWrite(SLAVE_CLOCK, !digitalRead(SLAVE_CLOCK));
+}
+
+FORCE_INLINE void slaveRemoteDir(int8_t extruder, bool forward)
+{
+
+}
+
+FORCE_INLINE void talkToSlave(char s[]) { MYSERIAL1.println(s); }
+FORCE_INLINE char* listenToSlave() 
+{
+	int c = 0;
+	timeout = millis();
+	int8_t i = 0;
+	while(c != '\n' && (millis() - timeout < TIMEOUT))
+	{
+		while(!MYSERIAL1.available() && (millis() - timeout < TIMEOUT));
+		c = MYSERIAL1.read();
+		//timeout = millis();
+		slaveBuffer[i] = (char)c;
+		i++;
+	}
+	slaveBuffer[i] = 0;
+	return slaveBuffer;
+}
+
+#endif
+
+#endif
+

mercurial