void APP_Tasks ( void ) { /* Update the application state machine based * on the current state */ switch(appData.state) { case APP_STATE_INIT: /* Open the device layer */ appData.deviceHandle = USB_DEVICE_Open( USB_DEVICE_INDEX_0, DRV_IO_INTENT_READWRITE ); if(appData.deviceHandle != USB_DEVICE_HANDLE_INVALID) { appData.usartHandle = DRV_USART_Open(DRV_USART_INDEX_0, (DRV_IO_INTENT_EXCLUSIVE|DRV_IO_INTENT_READWRITE|DRV_IO_INTENT_NONBLOCKING)); /* Register a callback with device layer to get event notification (for end point 0) */ USB_DEVICE_EventHandlerSet(appData.deviceHandle, APP_USBDeviceEventHandler, 0); appData.state = APP_STATE_WAIT_FOR_CONFIGURATION; } else { /* The Device Layer is not ready to be opened. We should try * again later. */ } break; case APP_STATE_WAIT_FOR_CONFIGURATION: /* Check if the device was configured */ if(appData.isConfigured) { /* Schedule the first read from CDC function driver */ appData.state = APP_STATE_CHECK_CDC_READ; appData.isReadComplete = false; USB_DEVICE_CDC_Read (appData.cdcInstance, &(appData.readTransferHandle), appData.readBuffer, APP_READ_BUFFER_SIZE); } break; case APP_STATE_CHECK_CDC_READ: if(APP_StateReset()) { break; } /* If a read is complete, then schedule a read * else check if UART has received data */ if(appData.isReadComplete == true) { appData.isReadComplete = false; DRV_USART_Write(appData.usartHandle, appData.readBuffer, appData.readLength); USB_DEVICE_CDC_Read (appData.cdcInstance, &appData.readTransferHandle, appData.readBuffer, APP_READ_BUFFER_SIZE); for(ii=0; ii<appData.readLength; ii++) { if (appData.readBuffer[ii] == '\n' || appData.readBuffer[ii] == '\r'){ rx[pos] = 0; txFlag = 1; pos = 0; sscanf(rx,"%d",&qq); LATAbits.LATA4 = 1; if (qq>0){ if(qq>500000){ OC2RS = qq-600000; } if(qq<500000){ OC1RS = qq-400000; } } } else { rx[pos] = appData.readBuffer[ii]; pos++; } } } appData.state = APP_STATE_CHECK_UART_RECEIVE; break; case APP_STATE_CHECK_UART_RECEIVE: if(APP_StateReset()) { break; } /* Check if a character was received on the UART */ if (txFlag == 1) { qq = 7; char len = sprintf(tx,"qq = %d\r\n",qq); for (ii = 0;ii<len;ii++) { appData.uartReceivedData[ii]=tx[ii]; } USB_DEVICE_CDC_Write(0, &appData.writeTransferHandle, appData.uartReceivedData, len, USB_DEVICE_CDC_TRANSFER_FLAGS_DATA_COMPLETE); txFlag = 0; } appData.state = APP_STATE_CHECK_CDC_READ; break; case APP_STATE_ERROR: break; default: break; } }
void APP_Tasks ( void ) { /* Update the application state machine based * on the current state */ switch(appData.state) { case APP_STATE_INIT: /* Open the device layer */ appData.deviceHandle = USB_DEVICE_Open( USB_DEVICE_INDEX_0, DRV_IO_INTENT_READWRITE ); if(appData.deviceHandle != USB_DEVICE_HANDLE_INVALID) { appData.usartHandle = DRV_USART_Open(DRV_USART_INDEX_0, (DRV_IO_INTENT_EXCLUSIVE|DRV_IO_INTENT_READWRITE|DRV_IO_INTENT_NONBLOCKING)); /* Register a callback with device layer to get event notification (for end point 0) */ USB_DEVICE_EventHandlerSet(appData.deviceHandle, APP_USBDeviceEventHandler, 0); appData.state = APP_STATE_WAIT_FOR_CONFIGURATION; } else { /* The Device Layer is not ready to be opened. We should try * again later. */ } break; case APP_STATE_WAIT_FOR_CONFIGURATION: /* Check if the device was configured */ if(appData.isConfigured) { /* Schedule the first read from CDC function driver */ appData.state = APP_STATE_CHECK_CDC_READ; appData.isReadComplete = false; USB_DEVICE_CDC_Read (appData.cdcInstance, &(appData.readTransferHandle), appData.readBuffer, APP_READ_BUFFER_SIZE); } break; case APP_STATE_CHECK_CDC_READ: if(APP_StateReset()) { break; } /* If a read is complete, then schedule a read * else check if UART has received data */ if(appData.isReadComplete == true) { appData.isReadComplete = false; DRV_USART_Write(appData.usartHandle, appData.readBuffer, appData.readLength); USB_DEVICE_CDC_Read (appData.cdcInstance, &appData.readTransferHandle, appData.readBuffer, APP_READ_BUFFER_SIZE); } appData.state = APP_STATE_CHECK_UART_RECEIVE; break; case APP_STATE_CHECK_UART_RECEIVE: if(APP_StateReset()) { break; } /* Check if a character was received on the UART */ if(DRV_USART_Read(appData.usartHandle, appData.uartReceivedData, 1) > 0) { /* We have received data on the UART */ USB_DEVICE_CDC_Write(0, &appData.writeTransferHandle, appData.uartReceivedData, 1, USB_DEVICE_CDC_TRANSFER_FLAGS_DATA_COMPLETE); } appData.state = APP_STATE_CHECK_CDC_READ; break; case APP_STATE_ERROR: break; default: break; } }