Exemple #1
0
StreamSource::StreamSource(int nThread, int nFrames, int w, int h, uint32_t fmt, int fps) {
	nWorkThread = nThread;

	pic.width = w;
	pic.height = h;
	pic.fmt = fmt;

	video.fps = fps;
	video.tpf = 1000000 / fps;

	streamInit(nFrames);
	handlerList = HandlerList::createNew();
	threadPollInit();
}
Exemple #2
0
void fillStreamWithFile(Stream *stream, char *filename) {
    FILE *file = fopen(filename, "rb");
    if (file == NULL) {
        DEBUG(("UNABLE TO OPEN FILE\n"));
        return;
    }
    fseek(file, 0L, SEEK_END);
    u32 length = ftell(file);
    rewind(file);
    streamInit(stream, length);
    length = fread(stream->buffer, sizeof(u8), stream->length, file);
    fclose(file);
    if (length != stream->length) {
        DEBUG(("CANNOT READ FILE\n"));
    }
    DEBUG(("READ FILE %d BYTES\n", length));
}
STREAM *wavestreamInit(USHORT streamType, MCI_AUDIO_INIT __far *mciInitPtr, WAVESTREAM *wsPtr) {

 USHORT rc = 0;
 STREAM *tstreamPtr = malloc(sizeof(STREAM));   // this gets free'd in wavestreamDeinit()

 if (tstreamPtr) {

    MEMSET(tstreamPtr,0,sizeof(STREAM));

    rc = streamInit(streamType, tstreamPtr);
    if (rc == 0) {

       tstreamPtr->wsParentPtr = wsPtr;

       // update WAVESTREAM

       wsPtr->streamPtr = tstreamPtr;

       // WAVEAUDIO waPtr-> data already setup (incl. dma, audiobuffer)
       // but still need to set WAVESTREAM.waPtr -> wap (or war) structure (6-Feb-99)

       if (streamType == AUDIOHW_WAVE_PLAY) {
          wsPtr->waPtr = &wap;
       }
       else {
          wsPtr->waPtr = &war;
       }

       //WAVECONFIG. data already setup, some of it? like silence

       abReset(streamType & STREAM_RW_MODE, &wsPtr->waPtr->ab);
       wsPtr->waveConfig.sampleRate = (USHORT)mciInitPtr->lSRate;
       wsPtr->waveConfig.bitsPerSample = (UCHAR)mciInitPtr->lBitsPerSRate;
       wsPtr->waveConfig.channels = (UCHAR)mciInitPtr->sChannels;
       wsPtr->waveConfig.dataType = mciInitPtr->sMode;

       wsPtr->audioBufferSize = 0;  // 0=use default logical DMA size
       wsPtr->bytesProcessed = 0;
       wsPtr->timeBase = 0;

       mciInitPtr->sSlotNumber = -1;
       mciInitPtr->lResolution = 10;

       mciInitPtr->ulFlags = mciInitPtr->ulFlags | FIXED | LEFT_ALIGNED;

       // original had this if flags == 8...snafu (pas16 has 8 also)

       if (mciInitPtr->ulFlags == 16) {
          mciInitPtr->ulFlags = mciInitPtr->ulFlags | TWOS_COMPLEMENT;
       }
    }

    // since rc only possible if streamInit() failed, don't need to use streamDeinit()
    // but...streamInit() currently never fails...

    if (rc) {
       free(tstreamPtr);
       tstreamPtr = 0;
    }
 }

 return tstreamPtr;
}
Exemple #4
0
int main( void )
{   
    u32 i, ii, ulClock;
    u8 floatString[20];
    
    // First test the descriptor page ( last page in FLASH )
    // if configuration exists, use programmed ID, else query
    // Debug registers for ID. This is a workaround for silicon
    // issues in the F103 STM32s
    RCC->APB2ENR |= (RCC_IOPBEN|RCC_IOPCEN|RCC_IOPAEN);
    PYGMY_RCC_USART3_ENABLE;
    PYGMY_RCC_USART2_ENABLE;
    PYGMY_RCC_USART1_ENABLE; 
    PYGMY_RCC_GPIOA_ENABLE;
    PYGMY_RCC_GPIOB_ENABLE;

    //globalID = fpecMCUID( );
    globalID = 0;
    globalPLL = BIT16|BIT1;
    
    // First Init the Clocks
    if( globalID == 0x0416 ){
        // L152
        globalStrID = (u8*)STRID_L15X;  
	globalXTAL = 16000000;  
        globalFreq = 32000000;
        ulClock = globalFreq;
        FPEC->ACR = FPEC_ACR_PRFTBE | FPEC_ACR_LATENCY1;
    } else if( globalID == 0x0420 || globalID == 0x0428 ){
        // F100 
        globalStrID = (u8*)STRID_F100;
        globalXTAL = 12000000;
        globalFreq = 24000000;
        ulClock = globalFreq;
    } else{
        // F103
        globalStrID = (u8*)STRID_F103;
        globalXTAL = 8000000;
        globalFreq = 72000000; //72022900;
        ulClock = 36000000;
        globalPLL = RCC_PLL_X9|BIT16|BIT15|BIT14|BIT1;//BIT10|BIT1;
        FPEC->ACR = FPEC_ACR_PRFTBE | FPEC_ACR_LATENCY2;
    } // else
    
    PYGMY_RCC_HSI_ENABLE;
    PYGMY_RCC_HSE_ENABLE;
    while( !PYGMY_RCC_HSE_READY );
    RCC->CFGR2 = 0;
    RCC->CFGR = globalPLL;
    PYGMY_RCC_PLL_ENABLE;
    while( !PYGMY_RCC_PLL_READY );
    
    taskInit();
    streamInit();
    streamSetPut( COM1, putsUSART1 );
    streamSetPutc( COM1, putcUSART1 );
    streamSetGet( COM1, bootGetUSART1 );
    streamDisableDefaultGet( COM1 );
    streamSetSTDIO( COM1 );
    
    // Basic Port Init
    
    GPIOB->CRH &= ~( PIN10_CLEAR | PIN11_CLEAR );
    GPIOB->CRH |= ( PIN10_OUT50_ALTPUSHPULL | PIN11_IN_FLOAT );

    USART3->BRR = ( ( (ulClock >> 3 ) / BOOT_BAUDRATE ) << 4 ) + ( ( ( ulClock / BOOT_BAUDRATE ) ) & 0x0007 );
    USART3->CR3 = USART_ONEBITE;
    USART3->CR1 = ( USART_OVER8 | USART_UE | USART_RXNEIE | USART_TE | USART_RE  );
    
    GPIOA->CRH &= ~( PIN9_CLEAR | PIN10_CLEAR );
    GPIOA->CRH |= ( PIN9_OUT50_ALTPUSHPULL | PIN10_IN_FLOAT );

    USART1->BRR = ( ( (ulClock >> 3 ) / BOOT_BAUDRATE ) << 4 ) + ( ( ( ulClock / BOOT_BAUDRATE ) ) & 0x0007 );
    USART1->CR3 = USART_ONEBITE;
    USART1->CR1 = ( USART_OVER8 | USART_UE | USART_RXNEIE | USART_TE | USART_RE  );

    // End Basic Port Init

    // HSI Must be ON for Flash Program/Erase Operations
    // End Clock Init 
    // Configure Interrupts
    // Do not read from NVIC LOAD or VAL!!!
    // Reading from Write only registers causes unpredictable behavior!!!
    NVIC->ISER[ 1 ] = 0x00000001 << 7;
    NVIC->ISER[ 1 ] = 0x00000001 << 6;
    NVIC->ISER[ 1 ] = 0x00000001 << 5;
    SYSTICK->VAL = globalFreq / 1000;
    SYSTICK->LOAD = globalFreq / 1000; // Based on  ( 2X the System Clock ) / 1000
    SYSTICK->CTRL = 0x07;   // Enable system timer
    // End Configure Interrupts
    PYGMY_WATCHDOG_UNLOCK;
    PYGMY_WATCHDOG_PRESCALER( IWDT_PREDIV128 );
    PYGMY_WATCHDOG_TIMER( 0x0FFF );
    PYGMY_WATCHDOG_START;
    PYGMY_WATCHDOG_REFRESH;
    
    println( STDIO, "Pygmy Boot Lite V%s\rMCU ", version );
    println( STDIO, "%s\rPage Size %d\rFLASH %dKB\rRAM %dKB", globalStrID, fpecFlashSectorSize(), fpecFlashSize(), fpecRAMSize() );
    println( STDIO, "\rMCUID: 0x%08X", fpecMCUID() );
    
    xmodemInit( &XModem );
    
    while( 1 ){
        // Wait for commands
    }
}
Exemple #5
0
static uint8_t getByte(bool rs);
static void init0(void);
static void init1(void);
static void init2(void);
static void init3(void);
static void init4(void);
static void init5(void);
static void init6(void);
static void init7(void);

static Task task = {
    .setup = setup,
    .loop = loop,
};

static Stream _lcdout = streamInit(LCD_STREAM_SIZE);

Stream* lcdout = &_lcdout;

static LCDConfig lcdConfig;

Task* lcdTask(LCDConfig config) {
    lcdConfig = config;

    return &task;
}

static void setup(void) {
    pinDirection(lcdConfig.rw, Output);
    pinDirection(lcdConfig.rs, Output);
    pinDirection(lcdConfig.e, Output);
Exemple #6
0
#include "task1.h"

static void setup(void);
static void loop(void);

Task task1 = {
    .setup = setup,
    .loop = loop,
};

static uint32_t mDelay;
static uint16_t count;

static Stream _task1Stream = streamInit(5);
Stream* task1Stream = &_task1Stream;

static void setup(void) {
    mDelay = 0;
    count = 0;
    streamClear(task1Stream);
}

static void loop(void) {
    uint32_t ticks = getTicks();

    if(ticks >= mDelay) {
        print(stdout, "Task1 running (", count, ")\n");
        mDelay = ticks + MS_TO_TICKS(1000);
        count++;
    }
Exemple #7
0
u8 *broadwayCreateStream(u32 length) {
    streamInit(&broadwayStream, length);
    return broadwayStream.buffer;
}