Exemple #1
0
uint8 print_number2bytes(uint16 i){
	uint8 cnt = 7;
	
	uint8 j[] = {32,32,32,32,32,32,32,32};
	if (i==0) { j[cnt] = 0 + 48;}
	while (i>0){
		j[cnt] = (i%10) + 48;
		i = i/10;
		cnt -= 1;
	}
	
	uart0TxSendByte(j[2]);
	uart0TxSendByte(j[3]);
	uart0TxSendByte(j[4]);
	uart0TxSendByte(j[5]);
	uart0TxSendByte(j[6]);
	uart0TxSendByte(j[7]);
	
	return cnt;
}
Exemple #2
0
// Returns either CMDR_ALIVE_CNT or -1 depending on if a packet received or not
int8 CmdrReadMsgs(){
    int8 buttonval;
    
    while(uart1RxAvailable() > 0){
        if(index_cmdr == -1){         // looking for new packet
            if(uart1RxReceiveByte() == 0xff){ //read until packet start
                index_cmdr = 0;
                checksum_cmdr = 0;
                // forward byte to other wixel
                uart0TxSendByte(0xff);
            }
        }else if(index_cmdr == 0){
            // add next byte to vals
            vals[index_cmdr] = (unsigned char) uart1RxReceiveByte();
            // forward byte to other wixel
            uart0TxSendByte(vals[index_cmdr]);
            // look for first real byte (non 0xFF)
            if(vals[index_cmdr] != 0xff){
                checksum_cmdr += (uint8) vals[index_cmdr];
                index_cmdr++;  // will now save subsequent bytes
            }
        }else{ //for bytes after the 0th byte
            vals[index_cmdr] = (unsigned char) uart1RxReceiveByte(); 
            // forward byte to other wixel
            uart0TxSendByte(vals[index_cmdr]);
            //loops will sequentially read bytes and store them here

            checksum_cmdr += (uint8) vals[index_cmdr];
            index_cmdr++;
            
            // DEBUG: if all packets go through, shoudl see x2 through 
            //     x7 when Commander input is being received.
            // rprintf("x%u ",index_cmdr);
            
            if(index_cmdr == 7){ // packet complete
                // if(vals[0] == 0xff) {
                    // ax12LED(61,1);
                // }
                if(checksum_cmdr%256 != 255){
                    // packet error!
                    // rprintf("\npacket error!\n");
                    index_cmdr = -1;
                    return 0;
                }
                else{
                    buttonval = vals[4];
                    // short dowalking = TRUE;
                    
                    //rprintf("\t%d\t",(int)buttonval);
                    //Turn gait...
                    // if((buttonval&0x40) > 0){ //if(buttonval & BUT_LT){
                        // // if(PRINT_DEBUG_COMMANDER){rprintf("lft\t");}
                        // turnleft = zTRUE;
                        // turnright = zFALSE;
                        
                        // // dowalking = zFALSE;
                    // }
                    // else if((buttonval&0x80) > 0){ //if(buttonval & BUT_RT){
                        // // if(PRINT_DEBUG_COMMANDER){rprintf("rgt\t");}
                        // turnright = zTRUE;
                        // turnleft = zFALSE;
                        
                        // // dowalking = zFALSE;
                    // }
                    // else { // Do nothing
                        // turnright = zFALSE;
                        // turnleft = zFALSE;
                        // // turn = zFALSE;
                    // }
                    if((buttonval&BUT_L6) > 0){
                        gunbutton = zTRUE;
                        // if(PRINT_DEBUG_COMMANDER){rprintf("guns\t");}
                    }
                    else{gunbutton = zFALSE;}

                    // if((buttonval&BUT_R3) > 0){
                        // panicbutton = zTRUE;
                        // // if(PRINT_DEBUG_COMMANDER){rprintf("panic\t");}
                    // }
                    // else{panicbutton = zFALSE;}
                    
                    if((buttonval&BUT_L4) > 0){
                        laserbutton = zTRUE;
                        // if(PRINT_DEBUG_COMMANDER){rprintf("info\t");}
                    }
                    else{laserbutton = zFALSE;}
                    
                    // if((buttonval&BUT_R2) > 0){
                        // // if(PRINT_DEBUG_COMMANDER){rprintf("look\t");}
                    // }
                    // else{infobutton = zFALSE;}
                    
                    if((buttonval&BUT_R1) > 0){
                        solenoidbutton = zTRUE;
                        // if(PRINT_DEBUG_COMMANDER){rprintf("agit\t");}
                    }
                    else{solenoidbutton = zFALSE;}
                    
                        // vals - 128 gives look a vlaue in the range from -128 to 127?
                    // lookV = (signed char)( (int8)vals[0]-128 );
                    // lookH = (signed char)( (int8)vals[1]-128 );
                    // if( (int)vals[0] >= 128){
                        // tilt_pos = interpolateU( (int)vals[0],128,128+102,TILT_CENTER,servo52Max);
                    // }
                    // else {
                        // tilt_pos = interpolateU( (int)vals[0],128-102,128,servo52Min,TILT_CENTER);
                    // }
                    
                    //Default handling in original Commander.c - sets to range of -127 to 127 or so...
                    // walkV = (signed char)( (int8)vals[2]-128 );
                    // walkH = (signed char)( (int8)vals[3]-128 );
                    // }
                    // pan = (vals[0]<<8) + vals[1];
                    // tilt = (vals[2]<<8) + vals[3];
                    // buttons = vals[4];
                    // ext = vals[5];
                }
                index_cmdr = -1;
                
                ///Empty the packet buffer
                while (uart1RxAvailable() > 0) { uart1RxReceiveByte(); }
                
                return CMDR_ALIVE_CNT;
            }
        }
    }
    return -1;
}    // End of CmdrReadMsgs