void tickTask(void) { upTick ^= 1; if(upTick) { redLEDOn(); if(leftOutCount > 0) { lClkOut = 0xFF; // blueLEDOn(); } if(rightOutCount > 0) { rClkOut = 0xFF; // greenLEDOn(); } } else { redLEDOff(); rClkOut = 0x00; greenLEDOff(); lClkOut = 0x00; blueLEDOff(); rDatOut = 0x00; lDatOut = 0x00; if(leftOutCount > 0) { leftOutCount--; uint8_t nextBit = (leftOutByte&(1<<leftOutCount))>>leftOutCount; lDatOut = 0xFF*nextBit; if(nextBit) greenLEDOn(); else greenLEDOff(); } if(leftOutCount == 0 && FIFOSize(left) > 0) { leftOutCount = 8; leftOutByte = FIFORead(left); } if(rightOutCount > 0) { rightOutCount--; uint8_t nextBit = (rightOutByte&(1<<rightOutCount))>>rightOutCount; rDatOut = 0xFF*nextBit; if(nextBit) blueLEDOn(); else blueLEDOff(); }
void _processSidNetCommand(void) { UINT8 responseBuffer[100]; int responseLength = 0,i; switch (SIDNetCmd.cmd) { case FLUSH: sidPlayerFlush(SIDNetCmd.sidPlayer); responseBuffer[responseLength++] = OK; break; case TRY_SET_SID_COUNT: responseBuffer[responseLength++] = OK; break; case MUTE: responseBuffer[responseLength++] = OK; break; case TRY_RESET: //resetFifo(playFifo); //playing = false; responseBuffer[responseLength++] = OK; break; case GET_VERSION: { responseBuffer[responseLength++] = VERSION; responseBuffer[responseLength++] = SID_NETWORK_PROTOCOL_VERSION; break; } case TRY_SET_SAMPLING: responseBuffer[responseLength++] = OK; break; case TRY_SET_CLOCKING: responseBuffer[responseLength++] = OK; break; case GET_CONFIG_COUNT: responseBuffer[responseLength++] = COUNT; responseBuffer[responseLength++] = 1; break; case GET_CONFIG_INFO: { responseBuffer[responseLength++] = INFO; responseBuffer[responseLength++] = 0; strcpy(&responseBuffer[0] + responseLength,SID_PI); responseLength += sizeof SID_PI; responseBuffer[responseLength++] = 0; break; } case SET_SID_POSITION: responseBuffer[responseLength++] = OK; break; case TRY_SET_SID_MODEL: responseBuffer[responseLength++] = OK; break; case TRY_WRITE: { if((FIFOCount(getSIDPlayerBuffer(SIDNetCmd.sidPlayer)) + SIDNetCmd.dataLength) > FIFOSize(getSIDPlayerBuffer(SIDNetCmd.sidPlayer))) { #ifdef DEBUG char buf[100]; sprintf(buf,"Player buffer full\r\n\0"); writeStringUART(buf,strlen(buf)); #endif responseBuffer[responseLength++] = BUSY; break; } for(i=0;i<SIDNetCmd.dataLength;i++) { if(writeFIFO(getSIDPlayerBuffer(SIDNetCmd.sidPlayer),SIDNetCmd.data[i]) < 0) { responseBuffer[responseLength++] = ERR; #ifdef DEBUG char buf[100]; sprintf(buf,"Cannot write to player buffer\r\n\0"); writeStringUART(buf,strlen(buf)); #endif break; } } responseBuffer[responseLength++] = OK; break; } default: responseBuffer[responseLength++] = OK; break; } for(i=0;i<responseLength;i++) { writeFIFO(SIDNetCmd.respFifo,responseBuffer[i]); } }