Sat, 07 Nov 2015 13:23:07 +0100
Initial code from reprappro Marlin repository
0 | 1 | #ifndef _SLAVE_COMMSH |
2 | #define _SLAVE_COMMSH | |
3 | /* | |
4 | Functions to drive, and to return values from, a slave processor | |
5 | ||
6 | Adrian Bowyer 29 July 2012 | |
7 | */ | |
8 | ||
9 | #ifdef REPRAPPRO_MULTIMATERIALS | |
10 | ||
11 | extern float txyz[]; | |
12 | extern char slaveBuffer[]; | |
13 | extern long timeout; | |
14 | #define TIMEOUT 4 // ms | |
15 | ||
16 | float slaveDegHotend(uint8_t extruder); | |
17 | void slaveSetTargetHotend(const float &celsius, uint8_t extruder); | |
18 | float slaveDegTargetHotend(uint8_t extruder); | |
19 | bool slaveIsHeatingHotend(uint8_t extruder); | |
20 | bool slaveIsCoolingHotend(uint8_t extruder); | |
21 | void slaveRemoteStep(int8_t extruder, int8_t v); | |
22 | void slaveRemoteDir(int8_t extruder, bool forward); | |
23 | void talkToSlave(char s[]); | |
24 | char* listenToSlave(); | |
25 | void setup_slave(); | |
26 | ||
27 | ||
28 | FORCE_INLINE float slaveDegHotend(uint8_t extruder) { return txyz[extruder]; } | |
29 | FORCE_INLINE void slaveSetTargetHotend(const float &celsius, uint8_t extruder) {txyz[extruder] = celsius; } | |
30 | FORCE_INLINE float slaveDegTargetHotend(uint8_t extruder) { return txyz[extruder]; } | |
31 | FORCE_INLINE bool slaveIsHeatingHotend(uint8_t extruder) { return false; } | |
32 | FORCE_INLINE bool slaveIsCoolingHotend(uint8_t extruder) { return false; } | |
33 | ||
34 | ||
35 | FORCE_INLINE void slaveRemoteStep(int8_t extruder, int8_t v) | |
36 | { | |
37 | ||
38 | } | |
39 | ||
40 | FORCE_INLINE void toggleSlaveClock() | |
41 | { | |
42 | digitalWrite(SLAVE_CLOCK, !digitalRead(SLAVE_CLOCK)); | |
43 | } | |
44 | ||
45 | FORCE_INLINE void slaveRemoteDir(int8_t extruder, bool forward) | |
46 | { | |
47 | ||
48 | } | |
49 | ||
50 | FORCE_INLINE void talkToSlave(char s[]) { MYSERIAL1.println(s); } | |
51 | FORCE_INLINE char* listenToSlave() | |
52 | { | |
53 | int c = 0; | |
54 | timeout = millis(); | |
55 | int8_t i = 0; | |
56 | while(c != '\n' && (millis() - timeout < TIMEOUT)) | |
57 | { | |
58 | while(!MYSERIAL1.available() && (millis() - timeout < TIMEOUT)); | |
59 | c = MYSERIAL1.read(); | |
60 | //timeout = millis(); | |
61 | slaveBuffer[i] = (char)c; | |
62 | i++; | |
63 | } | |
64 | slaveBuffer[i] = 0; | |
65 | return slaveBuffer; | |
66 | } | |
67 | ||
68 | #endif | |
69 | ||
70 | #endif | |
71 |