Esempio n. 1
0
void main(void)
{
	unsigned char difficulty = 0;
	unsigned char input = 0;
	P1_4 = 1;

	/* init hardware */
	fb_init();
	keyboard_init();
	EA = 1;	 // enable global interrupts

	/* show our startdisplay */
	display_start(difficulty);
	
	while(1) {
		input = readBuf();
		/* change difficulty which results in changing speed */
		if(input == SHIFT_KEY) {
			difficulty++;
			if(difficulty > 2) {
				difficulty = 0;
			}
			display_start(difficulty);
		}
		/* start game with space */
		if(input == SPACE_KEY) {
			clearDisplay();
			start_game(15000 - difficulty*5000);
			display_start(difficulty);
		}
	}	
}
Esempio n. 2
0
/* 
 * Read and "Consume" the messages in Buffer. 
 */
DWORD
PALAPI 
consumer( LPVOID lpParam )
{
    int n = 0;
    char c;   

    consumerSleep();

    while (n < PRODUCTION_TOTAL) 
    {
    
	down(hSemaphoreF);
	down(hSemaphoreM);

	if (readBuf((BufferStructure*)lpParam, &c)) 
	{
	    Trace("\tConsumer consumes %c.\n", c);
	    fflush(stdout);
	    consumerItems[n++] = c;
	}
    
	up(hSemaphoreM);
	up(hSemaphoreE);

	consumerSleep();
    }
    return 0;
}
Esempio n. 3
0
	/* Reads data from file.  Returns 0 on success.  Contents of the file
		must adhere to the same format readBuf() expects. */
	int readFile(const char *path)
	{
		File file(path);
		const char *bytes = (const char *)file.getBytes();
		if(bytes)
		{
			readBuf(bytes);
			return 0;
		}
		return 1;
	}
Esempio n. 4
0
	void readData(char *dest, int len)
	{
		int result = 0;
		if(file)
		{
			result = file->read((unsigned char*)dest,len);
		}
		else
			result = readBuf(ops, dest, 1, len);

		if (result < len)
			CCAssert(false,"dump format error");
	}
Esempio n. 5
0
void SerialReadBuf(){
	int n;
	for(n = 0; n < 100; n++){

		char** buf = readBuf();
		if(*buf!='\n'){
			printf("%s",*buf);
		}
		else{
			continue;
		}
		//free(buf);
		//free(*buf);
		freeBuf(buf);
	}
}
Esempio n. 6
0
	char readByte()
	{
		char byte;

		int result = 0;
		if(file)
		{
			result = file->read((unsigned char*)&byte,1);
		}
		else
			result = readBuf(ops, &byte, 1, 1);

		if (result < 1)
			CCAssert(false,"dump format error");

		return byte;
	}
intptr_t RenderThread::main() {
    RenderThreadInfo tInfo;

    //
    // initialize decoders
    //
    tInfo.m_glDec.initGL(gles1_dispatch_get_proc_func, NULL);
    tInfo.m_gl2Dec.initGL(gles2_dispatch_get_proc_func, NULL);
    initRenderControlContext(&tInfo.m_rcDec);

    ReadBuffer readBuf(m_stream, STREAM_BUFFER_SIZE);

    int stats_totalBytes = 0;
    long long stats_t0 = GetCurrentTimeMS();

    //
    // open dump file if RENDER_DUMP_DIR is defined
    //
    const char *dump_dir = getenv("RENDERER_DUMP_DIR");
    FILE *dumpFP = NULL;
    if (dump_dir) {
        size_t bsize = strlen(dump_dir) + 32;
        char *fname = new char[bsize];
        snprintf(fname,bsize,"%s/stream_%p", dump_dir, this);
        dumpFP = fopen(fname, "wb");
        if (!dumpFP) {
            fprintf(stderr,"Warning: stream dump failed to open file %s\n",fname);
        }
        delete [] fname;
    }

    while (1) {

        int stat = readBuf.getData();
        if (stat <= 0) {
            break;
        }

        //
        // log received bandwidth statistics
        //
        stats_totalBytes += readBuf.validData();
        long long dt = GetCurrentTimeMS() - stats_t0;
        if (dt > 1000) {
            //float dts = (float)dt / 1000.0f;
            //printf("Used Bandwidth %5.3f MB/s\n", ((float)stats_totalBytes / dts) / (1024.0f*1024.0f));
            stats_totalBytes = 0;
            stats_t0 = GetCurrentTimeMS();
        }

        //
        // dump stream to file if needed
        //
        if (dumpFP) {
            int skip = readBuf.validData() - stat;
            fwrite(readBuf.buf()+skip, 1, readBuf.validData()-skip, dumpFP);
            fflush(dumpFP);
        }

        bool progress;
        do {
            progress = false;

            m_lock->lock();
            //
            // try to process some of the command buffer using the GLESv1 decoder
            //
            size_t last = tInfo.m_glDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
            if (last > 0) {
                progress = true;
                readBuf.consume(last);
            }

            //
            // try to process some of the command buffer using the GLESv2 decoder
            //
            last = tInfo.m_gl2Dec.decode(readBuf.buf(), readBuf.validData(), m_stream);
            if (last > 0) {
                progress = true;
                readBuf.consume(last);
            }

            //
            // try to process some of the command buffer using the
            // renderControl decoder
            //
            last = tInfo.m_rcDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
            if (last > 0) {
                readBuf.consume(last);
                progress = true;
            }

            m_lock->unlock();

        } while( progress );

    }

    if (dumpFP) {
        fclose(dumpFP);
    }

    //
    // Release references to the current thread's context/surfaces if any
    //
    FrameBuffer::getFB()->bindContext(0, 0, 0);
    if (tInfo.currContext || tInfo.currDrawSurf || tInfo.currReadSurf) {
        fprintf(stderr, "ERROR: RenderThread exiting with current context/surfaces\n");
    }

    FrameBuffer::getFB()->drainWindowSurface();

    FrameBuffer::getFB()->drainRenderContext();

    return 0;
}
void *RenderingThread::thread()
{

    // initialize our decoders;
    m_glDec.initGL();

#ifdef PVR_WAR
    m_glTexParameteriv = m_glDec.set_glTexParameteriv(s_glTexParameteriv);
    m_glDrawTexfOES = m_glDec.set_glDrawTexfOES(s_glDrawTexfOES);
    m_glDrawTexsOES = m_glDec.set_glDrawTexsOES(s_glDrawTexsOES);
    m_glDrawTexiOES = m_glDec.set_glDrawTexiOES(s_glDrawTexiOES);
    m_glDrawTexxOES = m_glDec.set_glDrawTexxOES(s_glDrawTexxOES);
    m_glDrawTexfvOES = m_glDec.set_glDrawTexfvOES(s_glDrawTexfvOES);
    m_glDrawTexsvOES = m_glDec.set_glDrawTexsvOES(s_glDrawTexsvOES);
    m_glDrawTexivOES = m_glDec.set_glDrawTexivOES(s_glDrawTexivOES);
    m_glDrawTexxvOES = m_glDec.set_glDrawTexxvOES(s_glDrawTexxvOES);
    m_glActiveTexture = m_glDec.set_glActiveTexture(s_glActiveTexture);
    m_glBindTexture = m_glDec.set_glBindTexture(s_glBindTexture);
    m_glEnable = m_glDec.set_glEnable(s_glEnable);
    m_glDisable = m_glDec.set_glDisable(s_glDisable);
    m_glClientActiveTexture = m_glDec.set_glClientActiveTexture(s_glClientActiveTexture);
    m_glEnableClientState = m_glDec.set_glEnableClientState(s_glEnableClientState);
    m_glDisableClientState = m_glDec.set_glDisableClientState(s_glDisableClientState);
#endif

    m_gl2Dec.initGL();

    m_utDec.set_swapBuffers(s_swapBuffers);
    m_utDec.set_createContext(s_createContext);
    m_utDec.set_destroyContext(s_destroyContext);
    m_utDec.set_createSurface(s_createSurface);
    m_utDec.set_destroySurface(s_destroySurface);
    m_utDec.set_makeCurrentContext(s_makeCurrent);

    ReadBuffer readBuf(m_stream, DECODER_BUF_SIZE);

    int stats_totalBytes = 0;
    long long stats_t0 = GetCurrentTimeMS();

    while (1) {

        int stat = readBuf.getData();
        if (stat == 0) {
            fprintf(stderr, "client shutdown\n");
            break;
        } else if (stat < 0) {
            perror("getData");
            break;
        }

        //
        // log received bandwidth statistics
        //
        stats_totalBytes += readBuf.validData();
        long long dt = GetCurrentTimeMS() - stats_t0;
        if (dt > 1000) {
            float dts = (float)dt / 1000.0f;
            printf("Used Bandwidth %5.3f MB/s\n", ((float)stats_totalBytes / dts) / (1024.0f*1024.0f));
            stats_totalBytes = 0;
            stats_t0 = GetCurrentTimeMS();
        }

        bool progress = true;
        while (progress) {
            progress = false;
            // we need at least one header (8 bytes) in our buffer
            if (readBuf.validData() >= 8) {
                size_t last = m_glDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
                if (last > 0) {
                    progress = true;
                    readBuf.consume(last);
                }
            }

            if (readBuf.validData() >= 8) {
                size_t last = m_gl2Dec.decode(readBuf.buf(), readBuf.validData(), m_stream);
                if (last > 0) {
                    readBuf.consume(last);
                    progress = true;
                }
            }

            if (readBuf.validData() >= 8) {
                size_t last = m_utDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
                if (last > 0) {
                    readBuf.consume(last);
                    progress = true;
                }
            }
        }
    }
    // shutdown
    if (m_currentContext != NULL) {
        m_currentContext->unref();
    }

    return NULL;
}
void BufferedSocket::threadSendFile(InputStream* file) throw(Exception) {
	dcassert(sock);
	if(!sock)
		return;
	dcassert(file != NULL);
	size_t sockSize = (size_t)sock->getSocketOptInt(SO_SNDBUF);
	size_t bufSize = max(sockSize, (size_t)64*1024);

	vector<uint8_t> readBuf(bufSize);
	vector<uint8_t> writeBuf(bufSize);

	size_t readPos = 0;

	bool readDone = false;
	dcdebug("Starting threadSend\n");
	while(true) {
		if(!readDone && readBuf.size() > readPos) {
			// Fill read buffer
			size_t bytesRead = readBuf.size() - readPos;
			size_t actual = file->read(&readBuf[readPos], bytesRead);

			if(bytesRead > 0) {
				fire(BufferedSocketListener::BytesSent(), bytesRead, 0);
			}

			if(actual == 0) {
				readDone = true;
			} else {
				readPos += actual;
			}
		}

		if(readDone && readPos == 0) {
			fire(BufferedSocketListener::TransmitDone());
			return;
		}

		readBuf.swap(writeBuf);
		readBuf.resize(bufSize);
		writeBuf.resize(readPos);
		readPos = 0;

		size_t writePos = 0;

		while(writePos < writeBuf.size()) {
			if(disconnecting)
				return;
			size_t writeSize = min(sockSize / 2, writeBuf.size() - writePos);
			int written = sock->write(&writeBuf[writePos], writeSize);
			if(written > 0) {
				writePos += written;

				fire(BufferedSocketListener::BytesSent(), 0, written);
			} else if(written == -1) {
				if(!readDone && readPos < readBuf.size()) {
					// Read a little since we're blocking anyway...
					size_t bytesRead = min(readBuf.size() - readPos, readBuf.size() / 2);
					size_t actual = file->read(&readBuf[readPos], bytesRead);

					if(bytesRead > 0) {
						fire(BufferedSocketListener::BytesSent(), bytesRead, 0);
					}

					if(actual == 0) {
						readDone = true;
					} else {
						readPos += actual;
					}
				} else {
					while(!disconnecting) {
						int w = sock->wait(POLL_TIMEOUT, Socket::WAIT_WRITE | Socket::WAIT_READ);
						if(w & Socket::WAIT_READ) {
							threadRead();
						}
						if(w & Socket::WAIT_WRITE) {
							break;
						}
					}
				}
			}
		}
	}
}
Esempio n. 10
0
// called by hal ext IRQ handler
// (radio goes to stanby mode after tx/rx operations)
void radio_irq_handler (u1_t dio) {
    ostime_t now = os_getTime();
    if( (readReg(RegOpMode) & OPMODE_LORA) != 0) { // LORA modem
        u1_t flags = readReg(LORARegIrqFlags);
        if( flags & IRQ_LORA_TXDONE_MASK ) {
            // save exact tx time
            LMIC.txend = now - us2osticks(43); // TXDONE FIXUP
        } else if( flags & IRQ_LORA_RXDONE_MASK ) {
            // save exact rx time
            if(getBw(LMIC.rps) == BW125) {
                now -= LORA_RXDONE_FIXUP[getSf(LMIC.rps)];
            }
            LMIC.rxtime = now;
            // read the PDU and inform the MAC that we received something
            LMIC.dataLen = (readReg(LORARegModemConfig1) & SX1272_MC1_IMPLICIT_HEADER_MODE_ON) ?
                readReg(LORARegPayloadLength) : readReg(LORARegRxNbBytes);
            // set FIFO read address pointer
            writeReg(LORARegFifoAddrPtr, readReg(LORARegFifoRxCurrentAddr)); 
            // now read the FIFO
            readBuf(RegFifo, LMIC.frame, LMIC.dataLen);
            // read rx quality parameters
            LMIC.snr  = readReg(LORARegPktSnrValue); // SNR [dB] * 4
            LMIC.rssi = readReg(LORARegPktRssiValue) - 125 + 64; // RSSI [dBm] (-196...+63)
        } else if( flags & IRQ_LORA_RXTOUT_MASK ) {
            // indicate timeout
            LMIC.dataLen = 0;
        }
        // mask all radio IRQs
        writeReg(LORARegIrqFlagsMask, 0xFF);
        // clear radio IRQ flags
        writeReg(LORARegIrqFlags, 0xFF);
    } else { // FSK modem
        u1_t flags1 = readReg(FSKRegIrqFlags1);
        u1_t flags2 = readReg(FSKRegIrqFlags2);
        if( flags2 & IRQ_FSK2_PACKETSENT_MASK ) {
            // save exact tx time
            LMIC.txend = now;
        } else if( flags2 & IRQ_FSK2_PAYLOADREADY_MASK ) {
            // save exact rx time
            LMIC.rxtime = now;
            // read the PDU and inform the MAC that we received something
            LMIC.dataLen = readReg(FSKRegPayloadLength);
            // now read the FIFO
            readBuf(RegFifo, LMIC.frame, LMIC.dataLen);
            // read rx quality parameters
            LMIC.snr  = 0; // determine snr
            LMIC.rssi = 0; // determine rssi
        } else if( flags1 & IRQ_FSK1_TIMEOUT_MASK ) {
            // indicate timeout
            LMIC.dataLen = 0;
        } else {
            //while(1);
            // Do not infinite loop when interrupt triggers unexpectedly
            // Instead, call ASSERT, which calls hal_failed, so there is at least a
            // traceable error. (MK)
            ASSERT(0);
        }
    }
    // go from stanby to sleep
    opmode(OPMODE_SLEEP);
    // run os job (use preset func ptr)
    os_setCallback(&LMIC.osjob, LMIC.osjob.func);
}
Esempio n. 11
0
int RenderThread::Main()
{
    RenderThreadInfo * tInfo = getRenderThreadInfo();
    //
    // initialize decoders
    //
    tInfo->m_glDec.initGL( gl_dispatch_get_proc_func, NULL );
    tInfo->m_gl2Dec.initGL( gl2_dispatch_get_proc_func, NULL );
    initRenderControlContext( &m_rcDec );

    ReadBuffer readBuf(m_stream, STREAM_BUFFER_SIZE);

    int stats_totalBytes = 0;
    long long stats_t0 = GetCurrentTimeMS();

    //
    // open dump file if RENDER_DUMP_DIR is defined
    //
    const char *dump_dir = getenv("RENDERER_DUMP_DIR");
    FILE *dumpFP = NULL;
    if (dump_dir) {
        size_t bsize = strlen(dump_dir) + 32;
        char *fname = new char[bsize];
        snprintf(fname,bsize,"%s/stream_%p", dump_dir, this);
        dumpFP = fopen(fname, "wb");
        if (!dumpFP) {
            fprintf(stderr,"Warning: stream dump failed to open file %s\n",fname);
        }
        delete [] fname;
    }

    while (1) {

        int stat = readBuf.getData();
        if (stat <= 0) {
            break;
        }

        //
        // log received bandwidth statistics
        //
        stats_totalBytes += readBuf.validData();
        long long dt = GetCurrentTimeMS() - stats_t0;
        if (dt > 1000) {
            float dts = (float)dt / 1000.0f;
            //printf("Used Bandwidth %5.3f MB/s\n", ((float)stats_totalBytes / dts) / (1024.0f*1024.0f));
            stats_totalBytes = 0;
            stats_t0 = GetCurrentTimeMS();
        }

        //
        // dump stream to file if needed
        //
        if (dumpFP) {
            int skip = readBuf.validData() - stat;
            fwrite(readBuf.buf()+skip, 1, readBuf.validData()-skip, dumpFP);
            fflush(dumpFP);
        }

        bool progress;
        do {
            progress = false;

            //
            // try to process some of the command buffer using the GLESv1 decoder
            //
            size_t last = tInfo->m_glDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
            if (last > 0) {
                progress = true;
                readBuf.consume(last);
            }

            //
            // try to process some of the command buffer using the GLESv2 decoder
            //
            last = tInfo->m_gl2Dec.decode(readBuf.buf(), readBuf.validData(), m_stream);
            if (last > 0) {
                progress = true;
                readBuf.consume(last);
            }

            //
            // try to process some of the command buffer using the
            // renderControl decoder
            //
            last = m_rcDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
            if (last > 0) {
                readBuf.consume(last);
                progress = true;
            }

        } while( progress );

    }

    if (dumpFP) {
        fclose(dumpFP);
    }

    //
    // release the thread from any EGL context
    // if bound to context.
    //
    EGLDisplay eglDpy = s_egl.eglGetCurrentDisplay();
    if (eglDpy != EGL_NO_DISPLAY) {
        s_egl.eglMakeCurrent(eglDpy,
                             EGL_NO_SURFACE,
                             EGL_NO_SURFACE,
                             EGL_NO_CONTEXT);
    }

    //
    // flag that this thread has finished execution
    m_finished = true;

    return 0;
}
Esempio n. 12
0
/**
 * アニメーションを読み込む
 */
void loadAnimation(ANIME_SET* graphic,ARCHIVE* archive,const char* file_name){
	BUF* gfx_file = getFile(archive,file_name);
	//ヘッダを飛ばす。
	seekBuf(gfx_file,(long)strlen(ANIME_HEADER),SEEK_SET);
	//ファイル名取得
	int filename_size;
	readBuf(gfx_file,&filename_size,sizeof(filename_size));
	graphic->filename_size = filename_size;
	graphic->filename = malloc(filename_size+1);
	readBuf(gfx_file,graphic->filename,filename_size);
	graphic->filename[filename_size] = '\0';
	//スプライト取得
	SDL_RWops* frame_ops = getGraphixFile(archive,graphic->filename);
	getSpriteFromOPS(&graphic->sprite,frame_ops);
	frame_ops->close(frame_ops);					//メモリ開放は忘れずに
	//スプライトエリア用スプライト
	SPRITE* anime_sprite = &graphic->sprite;
	//モード、フラグ、アニメ数。
	readBuf(gfx_file,&graphic->mode,sizeof(graphic->mode));
	readBuf(gfx_file,&graphic->flag,sizeof(graphic->flag));
	readBuf(gfx_file,&graphic->anime_num,sizeof(graphic->anime_num));
	int anime_num = graphic->anime_num;
	graphic->anime = malloc( sizeof(ANIMATION*) * anime_num );
	int i=0;
	for(;i<anime_num;i++){
		//アニメ番号
		int num = 0;
		readBuf(gfx_file,&num,sizeof(num));
		if(anime_num < num) raiseError("invalid animation file:",file_name);
		//メモリ確保。
		graphic->anime[num] = malloc(sizeof(ANIMATION));
		ANIMATION* anime = graphic->anime[num];
		anime->num = num;
		//フレーム番号取得
		int frame_num;
		readBuf(gfx_file,&frame_num,sizeof(frame_num));
		anime->frame_num = frame_num;
		anime->frame = malloc(sizeof(ANIMATION_FRAME)*frame_num);
		int j;
		for(j=0;i<frame_num;j++){
			//フレームへのポインタの設定
			ANIMATION_FRAME* frame = &anime->frame[j];
			//持続時間
			readBuf(gfx_file,&frame->frame_time,sizeof(frame->frame_time));
			//スプライトの設定
			frame->sprite_area.sprite = anime_sprite;
			readBuf(gfx_file,&frame->sprite_area.x,sizeof(frame->sprite_area.x));
			readBuf(gfx_file,&frame->sprite_area.y,sizeof(frame->sprite_area.y));
			readBuf(gfx_file,&frame->sprite_area.width,sizeof(frame->sprite_area.width));
			readBuf(gfx_file,&frame->sprite_area.height,sizeof(frame->sprite_area.height));
		}
	}
	deleteBuf(gfx_file);
}
Esempio n. 13
0
void BufferedSocket::threadSendFile(InputStream* file) throw(Exception) {
	if(state != RUNNING)
		return;
	
	if(disconnecting)
		return;
	dcassert(file != NULL);
	size_t sockSize = (size_t)sock->getSocketOptInt(SO_SNDBUF);
	size_t bufSize = max(sockSize, (size_t)64*1024);

	ByteVector readBuf(bufSize);
	ByteVector writeBuf(bufSize);

	size_t readPos = 0;

	bool readDone = false;
	dcdebug("Starting threadSend\n");
	UploadManager *um = UploadManager::getInstance();
	size_t sendMaximum, start = 0, current= 0;
	bool throttling;
	while(true) {
		if(!readDone && readBuf.size() > readPos) {
			// Fill read buffer
			size_t bytesRead = readBuf.size() - readPos;
			size_t actual = file->read(&readBuf[readPos], bytesRead);

			if(bytesRead > 0) {
				fire(BufferedSocketListener::BytesSent(), bytesRead, 0);
			}

			if(actual == 0) {
				readDone = true;
			} else {
				readPos += actual;
			}
		}

		if(readDone && readPos == 0) {
			fire(BufferedSocketListener::TransmitDone());
			return;
		}

		readBuf.swap(writeBuf);
		readBuf.resize(bufSize);
		writeBuf.resize(readPos);
		readPos = 0;

		size_t writePos = 0;

		while(writePos < writeBuf.size()) {
			if(disconnecting)
				return;
				
			throttling = BOOLSETTING(THROTTLE_ENABLE);
			size_t writeSize;
    		if(throttling) {
    			start = TimerManager::getTick();
    			sendMaximum = um->throttleGetSlice();
    			if(sendMaximum < 0) {
    				throttling = false;
					writeSize = min(sockSize / 2, writeBuf.size() - writePos);
				} else {
					writeSize = min(min(sockSize / 2, writeBuf.size() - writePos), sendMaximum);
				}
			} else {
				writeSize = min(sockSize / 2, writeBuf.size() - writePos);
			}
			
			int written = sock->write(&writeBuf[writePos], writeSize);
			if(written > 0) {
				writePos += written;

				fire(BufferedSocketListener::BytesSent(), 0, written);

				if(throttling) {
					int32_t cycle_time = um->throttleCycleTime();
					current = TimerManager::getTick();
					int32_t sleep_time = cycle_time - (current - start);
					if (sleep_time > 0 && sleep_time <= cycle_time) {
						Thread::sleep(sleep_time);
					}
				}
			} else if(written == -1) {
				if(!readDone && readPos < readBuf.size()) {
					// Read a little since we're blocking anyway...
					size_t bytesRead = min(readBuf.size() - readPos, readBuf.size() / 2);
					size_t actual = file->read(&readBuf[readPos], bytesRead);

					if(bytesRead > 0) {
						fire(BufferedSocketListener::BytesSent(), bytesRead, 0);
					}

					if(actual == 0) {
						readDone = true;
					} else {
						readPos += actual;
					}
				} else {
					while(!disconnecting) {
						int w = sock->wait(POLL_TIMEOUT, Socket::WAIT_WRITE | Socket::WAIT_READ);
						if(w & Socket::WAIT_READ) {
							threadRead();
						}
						if(w & Socket::WAIT_WRITE) {
							break;
						}
					}
				}
			}
		}
	}
}
Esempio n. 14
0
static word readWordBE() {
	word w;
	readBuf(sizeof(w),(byte*)&w);
	return w;
}
Esempio n. 15
0
static word readWordLE() {
	word w;
	readBuf(1,(byte*)&w+1);
	readBuf(1,(byte*)(&w));
	return w;
}
Esempio n. 16
0
static byte readByte() {
	byte b;
	readBuf(sizeof(b),&b);
	return b;
}