Exemple #1
0
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();
				}
Exemple #2
0
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]);
    }
}