Example #1
0
void usbToUartService()
{
    uint8 signals;

    // Data
    while(usbComRxAvailable() && uart1TxAvailable())
    {
        uart1TxSendByte(usbComRxReceiveByte());
    }

    while(uart1RxAvailable() && usbComTxAvailable())
    {
        usbComTxSendByte(uart1RxReceiveByte());
    }

    // Control lines controlled by computer.
    P1_0 = !(usbComRxControlSignals() & ACM_CONTROL_LINE_DTR);
    P1_1 = !(usbComRxControlSignals() & ACM_CONTROL_LINE_RTS);
    P1DIR |= (1<<0) | (1<<1);

    // Control lines controlled by device.

    signals = 0;
    if (!P1_2){ signals |= ACM_SERIAL_STATE_TX_CARRIER; } // TX Carrier = DSR
    if (!P1_3){ signals |= ACM_SERIAL_STATE_RX_CARRIER; } // RX Carrier = CD
    usbComTxControlSignals(signals);
}
void usbToRadioService()
{
    uint8 signals;

    // Data
    while(usbComRxAvailable() && radioComTxAvailable())
    {
        radioComTxSendByte(usbComRxReceiveByte());
    }

    while(radioComRxAvailable() && usbComTxAvailable())
    {
        usbComTxSendByte(radioComRxReceiveByte());
    }

    // Control Signals

    radioComTxControlSignals(usbComRxControlSignals() & 3);

    // Need to switch bits 0 and 1 so that DTR pairs up with DSR.
    signals = radioComRxControlSignals();
    usbComTxControlSignals( ((signals & 1) ? 2 : 0) | ((signals & 2) ? 1 : 0));
}
void usbToUartService()
{
    uint8 signals;

    // Data
    while(usbComRxAvailable() && !spi0MasterBusy())
    {
        spi0MasterSendByte(usbComRxReceiveByte());
    }

    while(!spi0MasterBusy() && usbComTxAvailable())
    {
        usbComTxSendByte(spi0MasterReceiveByte());
    }

    ioTxSignals(usbComRxControlSignals());

    // Need to switch bits 0 and 1 so that DTR pairs up with DSR.
    signals = ioRxSignals();
    usbComTxControlSignals( ((signals & 1) ? 2 : 0) | ((signals & 2) ? 1 : 0));

    // TODO: report framing, parity, and overrun errors to the USB host here
}
Example #4
0
void processByte(uint8 c)
{
    uint8 XDATA *tmt;

    switch(c) {
    // these cases handle encoder readings; a better
    // implementation would use sscanf in the processBytesUart0
    // function
	    case '0':
	    	usbComTxSendByte(c);
	    	break;
	    case '1':
	    	usbComTxSendByte(c);
	    	break;
	    case '2':
	    	usbComTxSendByte(c);
	    	break;
	    case '3':
	    	usbComTxSendByte(c);
	    	break;
	    case '4':
	    	usbComTxSendByte(c);
	    	break;
	    case '5':
	    	usbComTxSendByte(c);
	    	break;
	    case '6':
	    	usbComTxSendByte(c);
	    	break;
	    case '7':
	    	usbComTxSendByte(c);
	    	break;
	    case '8':
	    	usbComTxSendByte(c);
	    	break;
	    case '9':
	    	usbComTxSendByte(c);
	    	break;
	    case '\r':
	    	usbComTxSendByte(c);
	    	break;
		case '\n':
		 	usbComTxSendByte(c);
		 	break;

    // just in case we can't print anything to screen
    // this command allows for a visual that we are
    // at least getting serial commands
    case COMMAND_TOGGLE_YELLOW_LED:
        yellowLedOn ^= 1;
        break;

		
	case COMMAND_RESET_DSPIC:
    	tmt = radioLinkTxCurrentPacket();
    	if(tmt != NULL) {
        	tmt[0] = 1; // payload length
        	tmt[1] = COMMAND_RESET_DSPIC; // payload data
        	radioLinkTxSendPacket(0);
    	}
		break;
		
	case COMMAND_ENABLE_QEI:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
    		tmt[0] = 1; // payload length
    		tmt[1] = COMMAND_ENABLE_QEI; // payload data
    		radioLinkTxSendPacket(0);
		}
		break;
		
	case COMMAND_DISABLE_QEI:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_DISABLE_QEI; // payload data
			radioLinkTxSendPacket(0);
		}
		break;
		
	case COMMAND_READ_QEI:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_READ_QEI; // payload data
			radioLinkTxSendPacket(0);
		}
		break;
		
	case COMMAND_SEND_T:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_SEND_T; // payload data
			radioLinkTxSendPacket(0);
		}
		break;
		
	case COMMAND_RUN_MOTOR:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_RUN_MOTOR; // payload data
			radioLinkTxSendPacket(0);
		}
		break;
		
	case COMMAND_HALT_MOTOR:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_HALT_MOTOR; // payload data
			radioLinkTxSendPacket(0);
		}
		break;
		
	case COMMAND_RUN_FASTER:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_RUN_FASTER; // payload data
			radioLinkTxSendPacket(0);
		}
		break;
		
	case COMMAND_RUN_SLOWER:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_RUN_SLOWER; // payload data
			radioLinkTxSendPacket(0);
		}
		break;
			
		
	case COMMAND_INVERT_DIRECTION:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_INVERT_DIRECTION; // payload data
			radioLinkTxSendPacket(0);
			yellowLedOn ^= 1;
		}
		break;
		
	case COMMAND_READ_ADC:
		tmt = radioLinkTxCurrentPacket();
		if(tmt != NULL) {
			tmt[0] = 1; // payload length
			tmt[1] = COMMAND_READ_ADC; // payload data
			radioLinkTxSendPacket(0);
			yellowLedOn ^= 1;
		}
		break;
		
    }
}
Example #5
0
void putchar(char c)
{
	//if (usb_connected)
		usbComTxSendByte(c);
}