char Console_APPIO_ReadC(int fd) { char readBuffer = '\0'; #if defined(__APPIO_DEBUG) DBSCANF ("%s", &readBuffer); #elif defined(PIC32_STARTER_KIT) DBGETS (pkt.data.buf,pkt.sz); #endif return readBuffer; }
// Adjust st7565 resistor ratio and "volume" void contrastSetup() { char s[256]; uint8_t tmp8; DBPUTS("Enter resistor ratio (0..7)..."); DBGETS(s, sizeof(s)); tmp8 = s[0] - '0'; // if(tmp8 < 8) { lcdCmd(cRESISTOR_RATIO | tmp8); DBPRINTF("Set to %d.\n", tmp8); } else { DBPUTS("Invalid range.\n"); } DBPUTS("Enter volume (0..63)..."); DBGETS(s, sizeof(s)); tmp8 = atoi(s); // if(tmp8 < 64) { lcdCmd(cVOLUME); lcdCmd(tmp8); DBPRINTF("Set to %d.\n", tmp8); } else { DBPUTS("Invalid range.\n"); } // Clear the do-user-input flag //DoUserUserInputSemaphore = 0; }
void Console_APPIO_Tasks (SYS_MODULE_OBJ object) { /* Update the application state machine based * on the current state */ struct QPacket pkt; size_t *sizeRead; switch(consAppIOData.state) { case CONSOLE_APPIO_STATE_INIT: /* Initialize APPIO */ DBINIT(); consAppIOData.state = CONSOLE_APPIO_STATE_READY; break; case CONSOLE_APPIO_STATE_START_READ: if (readQueue.numElem) { pkt = rdQueueElements[readQueue.tailPos]; DBGETS (pkt.data.buf, 128); if (*(char*)pkt.data.buf != '\0') { rdQueueElements[readQueue.tailPos].sz = strlen((char*)pkt.data.buf); consAppIOData.state = CONSOLE_APPIO_STATE_READ_COMPLETE; } } break; case CONSOLE_APPIO_STATE_READ_COMPLETE: sizeRead = &rdQueueElements[readQueue.tailPos].sz; popQueue(&readQueue); if (readQueue.numElem == 0) { if (consAppIOData.rdCallback != NULL) { consAppIOData.rdCallback(sizeRead); } consAppIOData.state = CONSOLE_APPIO_STATE_READY; } else { consAppIOData.state = CONSOLE_APPIO_STATE_START_READ; } break; case CONSOLE_APPIO_STATE_READY: if (writeQueue.numElem) { consAppIOData.state = CONSOLE_APPIO_STATE_START_WRITE; } else if (readQueue.numElem) { consAppIOData.state = CONSOLE_APPIO_STATE_START_READ; } break; case CONSOLE_APPIO_STATE_START_WRITE: if (writeQueue.numElem) { pkt = wrQueueElements[writeQueue.tailPos]; DBPRINTF("%s",(char*)pkt.data.buf); consAppIOData.writeCycleCount = 0; consAppIOData.state = CONSOLE_APPIO_STATE_WAIT_FOR_WRITE_COMPLETE; } break; case CONSOLE_APPIO_STATE_WAIT_FOR_WRITE_COMPLETE: pkt = wrQueueElements[writeQueue.tailPos]; /* Burn cycles to allow to printf to complete */ if(consAppIOData.writeCycleCount++ > pkt.sz * 400) { if (consAppIOData.wrCallback != NULL) { consAppIOData.wrCallback((void *)pkt.data.cbuf); } popQueue(&writeQueue); if (writeQueue.numElem == 0) { consAppIOData.state = CONSOLE_APPIO_STATE_READY; } else { consAppIOData.state = CONSOLE_APPIO_STATE_START_WRITE; } } break; case CONSOLE_APPIO_STATE_OPERATIONAL_ERROR: /* We arrive at this state if the APPIO driver reports an error on a read or write operation We will attempt to recover by flushing the local buffers */ Console_APPIO_Flush(); break; case CONSOLE_APPIO_STATE_CRITICAL_ERROR: break; default: break; } }