@@ -65,4 +65,77 @@ unittest(pins)
65
65
assertEqual (56 , analogRead (1 ));
66
66
}
67
67
68
+ #ifdef HAVE_HWSERIAL0
69
+
70
+ void smartLightswitchSerialHandler (int pin) {
71
+ if (Serial.available () > 0 ) {
72
+ int incomingByte = Serial.read ();
73
+ int val = incomingByte == ' 0' ? LOW : HIGH;
74
+ Serial.print (" Ack " );
75
+ digitalWrite (pin, val);
76
+ Serial.print (String (pin));
77
+ Serial.print (" " );
78
+ Serial.print ((char )incomingByte);
79
+ }
80
+ }
81
+
82
+ unittest (does_nothing_if_no_data)
83
+ {
84
+ GodmodeState* state = GODMODE ();
85
+ int myPin = 3 ;
86
+ state->serialPort [0 ].dataIn = " " ;
87
+ state->serialPort [0 ].dataOut = " " ;
88
+ state->digitalPin [myPin] = LOW;
89
+ smartLightswitchSerialHandler (myPin);
90
+ assertEqual (LOW, state->digitalPin [myPin]);
91
+ assertEqual (" " , state->serialPort [0 ].dataOut );
92
+ }
93
+
94
+ unittest (keeps_pin_low_and_acks)
95
+ {
96
+ GodmodeState* state = GODMODE ();
97
+ int myPin = 3 ;
98
+ state->serialPort [0 ].dataIn = " 0" ;
99
+ state->serialPort [0 ].dataOut = " " ;
100
+ state->digitalPin [myPin] = LOW;
101
+ smartLightswitchSerialHandler (myPin);
102
+ assertEqual (LOW, state->digitalPin [myPin]);
103
+ assertEqual (" " , state->serialPort [0 ].dataIn );
104
+ assertEqual (" Ack 3 0" , state->serialPort [0 ].dataOut );
105
+ }
106
+
107
+ unittest (flips_pin_high_and_acks)
108
+ {
109
+ GodmodeState* state = GODMODE ();
110
+ int myPin = 3 ;
111
+ state->serialPort [0 ].dataIn = " 1" ;
112
+ state->serialPort [0 ].dataOut = " " ;
113
+ state->digitalPin [myPin] = LOW;
114
+ smartLightswitchSerialHandler (myPin);
115
+ assertEqual (HIGH, state->digitalPin [myPin]);
116
+ assertEqual (" " , state->serialPort [0 ].dataIn );
117
+ assertEqual (" Ack 3 1" , state->serialPort [0 ].dataOut );
118
+ }
119
+
120
+ unittest (two_flips)
121
+ {
122
+ GodmodeState* state = GODMODE ();
123
+ int myPin = 3 ;
124
+ state->serialPort [0 ].dataIn = " 10junk" ;
125
+ state->serialPort [0 ].dataOut = " " ;
126
+ state->digitalPin [myPin] = LOW;
127
+ smartLightswitchSerialHandler (myPin);
128
+ assertEqual (HIGH, state->digitalPin [myPin]);
129
+ assertEqual (" 0junk" , state->serialPort [0 ].dataIn );
130
+ assertEqual (" Ack 3 1" , state->serialPort [0 ].dataOut );
131
+ state->serialPort [0 ].dataOut = " " ;
132
+ smartLightswitchSerialHandler (myPin);
133
+ assertEqual (LOW, state->digitalPin [myPin]);
134
+ assertEqual (" junk" , state->serialPort [0 ].dataIn );
135
+ assertEqual (" Ack 3 0" , state->serialPort [0 ].dataOut );
136
+ }
137
+ #endif
138
+
139
+
140
+
68
141
unittest_main ()
0 commit comments