Project

General

Profile

Revision 150

Fixed several bugs:
warn state no longer allows red button to kill tool while it is spinning
keypresses are flushed by the server before a request so we don't get the one-swipe-behind bug

Changes:
red light stays on on toolboxes while powered
added more blink-error codes to the cardbox

View differences:

trunk/cardbox/main.c
195 195
            PORTC &= ~LED_RED;
196 196
            break;
197 197
          
198
          case TT_GET_KEY:
198
	  case TT_GET_KEY: //this means the states are messed up
199 199
            PORTC &= (~LED_RED & ~LED_YELLOW & ~LED_GREEN);
200 200
            break;
201 201

  
202
          default:
202
	  case 0: //timeout
203
	    PORTC &= (~LED_RED & ~LED_YELLOW);
204
	    break;	    
205

  
206
	default: //bad packet
203 207
            PORTC &= (~LED_RED & ~LED_GREEN);
204 208
            break;
205 209
        }
trunk/toolbox/main.c
40 40
#define OFF     0x00
41 41

  
42 42
/***** change ADDR ****/
43
#define ADDR 14
43
#define ADDR 18
44 44
#define DELIM '^'
45 45
#define SERVER 1
46 46
#define TURNON 'O'
......
163 163
        
164 164
        switch (state) {
165 165
            case sd:
166
                toggle_led(LED_RED, OFF);
166
                toggle_led(LED_RED, ON);
167 167
                toggle_led(LED_YELLOW, OFF);
168 168
                toggle_led(LED_GREEN, OFF);
169 169
                toggle_relay(OFF);
......
308 308
		  toggle_led(LED_YELLOW, OFF);
309 309
		}
310 310

  
311
                if (read_button(BUT_RED)) {
311
                if (read_button(BUT_RED) && read_vac() == OFF) {
312 312
                    toggle_relay(OFF);
313 313
                    state = off;
314 314
                } else if (read_button(BUT_BLACK)) {
......
329 329
                toggle_led(LED_GREEN, OFF);
330 330
                toggle_led(LED_YELLOW, OFF);
331 331
                toggle_led(LED_RED, ON);
332
                _delay_ms(2000);
333
                toggle_led(LED_RED, OFF);
334 332
                state = sd;
335 333
                break;
336 334
            default: state = sd;
trunk/swipe/tooltron.py
50 50
#this table maps which keypad button to press for each tool. This
51 51
#list should probably be printed next to the swipe box
52 52
tools = {
53
   'Bandsaw':['2','8'],
54
   'DrillPress':['1','9'],
53
   'Bandsaw':[],
54
   'DrillPress':['3','8'],
55 55
   'Mill':['4'],
56
   'Lathe':['5'],
56
   'Lathe':[],
57 57
   #HACK: since the saw isn't used I use it for testing random boards
58
   'ChopMiterSaw':['3','7','0']
58
   'ChopMiterSaw':['1','2','5','6','7','9']
59 59
}
60 60

  
61 61
#this table maps keypad button numbers to tool IDs. The default is
......
264 264

  
265 265

  
266 266
            print "sending key request"
267
            keypad.flushInput()
267 268
            keypad.write(TT_GET_KEY)
268 269

  
269 270
            cursor.execute(qry + id.group(1))
......
333 334
                  break
334 335

  
335 336
            #if we have a vaid response
336
            if resp != "" and resp != TT_TIMEOUT:
337
            #sometimes the FTDI chip seems to give a zero as a string when power is reset
338
            if resp != "" and ord(resp) != 0 and resp != TT_TIMEOUT:
337 339

  
338 340
               toolName = reverseTool(resp)
339
               toolNameLong = toolName + " (k="+str(resp)+", t="+str(keypad2toolID(resp))+")"
340
               print "request:",resp,toolNameLong
341
               toolNameLong = toolName + " (k="+str(resp)+"("+str(ord(resp))+"), t="+str(keypad2toolID(resp))+")"
342
               print "request:",resp,"(",ord(resp),") ",toolNameLong
341 343

  
342 344
               if acl.count(resp) > 0:
343 345
                  keypad.write(TT_ACK)
......
364 366

  
365 367
               clear_id()
366 368

  
369
        elif resp == 0 or ord(resp) == 0: #if we get noise, send timeout to reset and sync states
370
           keypad.write(TT_TIMEOUT);
371
           print "ERROR: got strange byte, timing out"
372
           logMessage("ERROR: got 0 as a byte, sending timeout (cardbox power issue?)")
367 373
        else:
368 374
            break

Also available in: Unified diff