Example #1
0
int main(int argc, char *argv[]) {
	int i,j,k,portFD;
	unsigned char data[1024];

	gettimeofday(&tStart,NULL);

	output(1,"HP iPAQ 214 BT chip GPIO twiddling util v1.1\n----------------------------------\n");

#ifndef NOIO
	gpioInit(1);
#else
	output(1,"TESTING MODE - NOT USING IO\n");
#endif
	
	if(argc > 1 && strcmp(argv[1],"on")==0){
		portFD=openPort();
		if(portFD == -1){ return 0; }

		output(1,"Shutting down chip first...\n");
#ifndef NOIO
		shutdownChip();
		tcflush(portFD, TCIOFLUSH); //flush buffers again
#endif
		output(1,"Waiting 2 secs.\n");
		sleep(2);

		output(1,"Bringing up chip...\n");
		bringUpChip();

		output(1,"Resetting chip...\n");
#ifndef NOIO
		sendReset(portFD);	
#endif

		output(1,"Turning LED on.\n");
#ifndef NOIO
		gpioSet(3,1);
#endif
	
		output(1,"closing port...");	fflush(stdout);
		close(portFD);
		output(1,"done\n");

	}else if(argc > 1 && strcmp(argv[1],"off")==0){
		output(1,"Shutting down chip...\n");
#ifndef NOIO
		shutdownChip();
		gpioSet(3,0);	//turn LED off
#endif
	
	}else
		printf("usage %s on/off\n",argv[0]);
	
	
#ifndef NOIO
	gpioCleanup();
#endif
	
	return 0;
}
Example #2
0
int main(void)
{
    gpioConfig(N_LED_ORANGE_PORT, N_LED_ORANGE_PIN, GPIO_OUTPUT | GPIO_LOW);
    gpioConfig(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN, GPIO_OUTPUT | GPIO_LOW);
    gpioConfig(N_LED_GREEN_PORT,  N_LED_GREEN_PIN,  GPIO_OUTPUT | GPIO_LOW);
    gpioConfig(N_LED_BLUE_PORT,   N_LED_BLUE_PIN,   GPIO_OUTPUT | GPIO_LOW);

    for (;;) {
        delay();
        gpioClear(N_LED_ORANGE_PORT, N_LED_ORANGE_PIN);
        delay();
        gpioClear(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN);
        delay();
        gpioClear(N_LED_GREEN_PORT, N_LED_GREEN_PIN);
        delay();
        gpioClear(N_LED_BLUE_PORT, N_LED_BLUE_PIN);

        delay();
        gpioSet(N_LED_ORANGE_PORT, N_LED_ORANGE_PIN);
        delay();
        gpioSet(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN);
        delay();
        gpioSet(N_LED_GREEN_PORT, N_LED_GREEN_PIN);
        delay();
        gpioSet(N_LED_BLUE_PORT, N_LED_BLUE_PIN);
    }

    return 0;
}
Example #3
0
void apIntClear(bool wakeup)
{
    if (wakeup)
        gpioSet(apIntWkup, 1);
#ifdef AP_INT_NONWAKEUP
    else
        gpioSet(apIntNonWkup, 1);
#endif
}
Example #4
0
static void flashLed(int port, int pin, int numBlinks)
{
    int k;

    for (k = 0; k < numBlinks; k++) {
        gpioClear(port, pin);
        delay();
        gpioSet(port, pin);
        delay();
    }
}
Example #5
0
static int stmSpiMasterStopSync(struct SpiDevice *dev)
{
    struct StmSpiDev *pdev = dev->pdata;

    if (pdev->nss) {
        gpioSet(pdev->nss, 1);
        gpioRelease(pdev->nss);
    }

    stmSpiDisable(dev, true);
    pdev->nss = NULL;
    return 0;
}
Example #6
0
void shutdownChip(){
	output(1,"Shutting down chip.\n");
	gpioSet(81,0);
	gpioSet(3,0);
	gpioSet(53,0);
	gpioSet(71,0);
	gpioSet(124,0);
	gpioSet(114,0);
}
Example #7
0
static void stmSpiDone(struct StmSpiDev *pdev, int err)
{
    struct StmSpi *regs = pdev->cfg->regs;
    struct StmSpiState *state = &pdev->state;

    if (pdev->board->sleepDev >= 0)
        platReleaseDevInSleepMode(pdev->board->sleepDev);

    while (regs->SR & SPI_SR_BSY)
        ;

    if (stmSpiIsMaster(pdev)) {
        if (state->nssChange && pdev->nss)
            gpioSet(pdev->nss, 1);
        spiMasterRxTxDone(pdev->base, err);
    } else {
        regs->CR2 = SPI_CR2_TXEIE;
        spiSlaveRxTxDone(pdev->base, err);
    }
}
Example #8
0
void bringUpChip(){
#ifndef NOIO
		
	output(1,"Bringing up GPIOs 53,71 and 124\n");
	gpioSet(53,1);
	gpioSet(71,1);
	gpioSet(124,1);
	
	usleep(5000); //at least 5ms sleep
	
	output(1,"Twiddeling GPIO 114\n");
	gpioSet(114,1);		//raise 114
	usleep(3000);		//wait 3ms	
	gpioSet(114,0);		//drop it again
	
	usleep(3000);		//wait 3ms

	output(1,"Bringing up GPIOs 81 and 114\n");	
	gpioSet(81,1);		//raise 81 and 114
	gpioSet(114,1);

	usleep(500000);		//wait 500ms
#endif
}
Example #9
0
static int stmSpiRxTx(struct SpiDevice *dev, void *rxBuf, const void *txBuf,
        size_t size, const struct SpiMode *mode)
{
    struct StmSpiDev *pdev = dev->pdata;
    struct StmSpi *regs = pdev->cfg->regs;
    struct StmSpiState *state = &pdev->state;
    bool rxMinc = true, txMinc = true;
    uint32_t cr2 = SPI_CR2_TXDMAEN;

    if (atomicXchgByte(&state->xferEnable, true) == true)
        return -EBUSY;

    if (stmSpiIsMaster(pdev) && pdev->nss)
        gpioSet(pdev->nss, 0);

    state->rxDone = false;
    state->txDone = false;
    state->nssChange = mode->nssChange;

    /* In master mode, if RX is ignored at any point, then turning it on
     * later may cause the SPI/DMA controllers to "receive" a stale byte
     * sitting in a FIFO somewhere (even when their respective registers say
     * their FIFOs are empty, and even if the SPI FIFO is explicitly cleared).
     * Work around this by DMAing bytes we don't care about into a throwaway
     * 1-word buffer.
     *
     * In slave mode, this specific WAR sometimes causes bigger problems
     * (the first byte TXed is sometimes dropped or corrupted).  Slave mode
     * has its own WARs below.
     */
    if (!rxBuf && stmSpiIsMaster(pdev)) {
        rxBuf = &state->rxWord;
        rxMinc = false;
    }

    if (rxBuf) {
        stmSpiStartDma(pdev, &pdev->board->dmaRx, rxBuf, mode->bitsPerWord,
                rxMinc, size, stmSpiRxDone, true);
        cr2 |= SPI_CR2_RXDMAEN;
    } else {
        state->rxDone = true;
    }

    if (!txBuf) {
        txBuf = &state->txWord;
        txMinc = false;
    }
    stmSpiStartDma(pdev, &pdev->board->dmaTx, txBuf, mode->bitsPerWord, txMinc,
            size, stmSpiTxDone, false);

    /* Ensure the TXE and RXNE bits are cleared; otherwise the DMA controller
     * may "receive" the byte sitting in the SPI controller's FIFO right now,
     * or drop/corrupt the first TX byte.  Timing is crucial here, so do it
     * right before enabling DMA.
     */
    if (!stmSpiIsMaster(pdev)) {
        regs->CR2 &= ~SPI_CR2_TXEIE;
        NVIC_ClearPendingIRQ(pdev->cfg->irq);

        if (regs->SR & SPI_SR_RXNE)
            (void)regs->DR;

        if (regs->SR & SPI_SR_TXE)
            regs->DR = mode->txWord;
    }

    if (pdev->board->sleepDev >= 0)
        platRequestDevInSleepMode(pdev->board->sleepDev, 12);

    regs->CR2 = cr2;
    regs->CR1 |= SPI_CR1_SPE;


    return 0;
}
Example #10
0
int main(int argc, char **argv){	
	int i,j;
	int gpio[128];
	int oldstate[128], state[128];
	int ngpios;
	struct timeval tv;
	fd_set read_fd;
	char *str = NULL;
	int lenStr = 0;

	ngpios = argc - 1;
	
	for(i=0;i<128;i++)
		gpio[i] = -1;

	for(i=0;i<ngpios;i++){
		j = atoi(argv[i+1]);
		gpio[i] = j;
		oldstate[i] = -1;
	}

	#ifndef NOIO
	gpioInit();
	#endif

	do{
		tv.tv_sec=0;
		tv.tv_usec=1000;
		FD_ZERO(&read_fd);
		FD_SET(0,&read_fd);
	
		if(select(1, &read_fd,NULL,NULL,&tv) == -1)
			return 0;
	
		if(FD_ISSET(0,&read_fd)){
			
			getline(&str, &lenStr, stdin);
			i=strlen(str);
			if(str[i-1] =='\n')
				str[i-1] = 0x00;

			if(str == NULL)	
				break;

			if(str[0] == 'q')
				break;

			else if(str[0] == 'o'){
				printf("GPIO #:");
				getline(&str, &lenStr, stdin);
				i=atoi(str);

				#ifndef NOIO
				if(i >=0 && i < 128)
					gpioSetDir(i, 1);
				#endif
				printf("%i --> output\n",i);
			}else if(str[0] == 'i'){
				printf("GPIO #:");
				getline(&str, &lenStr, stdin);
				i=atoi(str);
				
				#ifndef NOIO
				if(i >=0 && i < 128)
					gpioSetDir(i, 0);
				#endif
				printf("%i --> input\n",i);
			}else if( str[0] >= '0' && str[0] <='9'){ //toggle
				i = atoi(str);
				if(i >=0 && i < 128){
					#ifndef NOIO
					j = gpioGet(i);
					printf("%i: %i --> %i\n",i,j,!j);
					gpioSet(i, !j);
					#endif
				}
			}
		}

		
		for(i=0;i<ngpios;i++){
			#ifdef NOIO
			state[i] = 0;
			#else
			state[i] = gpioGet( gpio[i] );
			#endif

			if( state[i] != oldstate[i] )
				printf("%i: %i --> %i\n",gpio[i],oldstate[i],state[i]);
			oldstate[i] = state[i];
		}


	}while(1);
	
	#ifndef NOIO
	gpioCleanup();
	#endif

	if(str != NULL)
		free(str);

	return 0;
}
Example #11
0
/*******************************************************************************
 *
 * initFetPreDriver
 *
 * Reset and initialize the Freescale 33937A FET Pre-driver chip
 *
 *
 ******************************************************************************/
static int initFetPreDriver(int timer, int spiFd)
{
    int retVal = !ERROR;
    uint8_t cmd[8];
    spiWriteRead_t spiTxRx = {
        .out = cmd,
        .in  = cmd,
        .len = 1,
    };

    int i;

    printf("Initializing FET pre driver...\n");

                                       /* Put the chip into reset and disable */
    gpioClear(FET_DRIVER_RESET_PORT, FET_DRIVER_RESET_PIN);
    gpioClear(FET_DRIVER_ENABLE_PORT, FET_DRIVER_ENABLE_PIN);
    taskDelay(100);
              /* Take chip out of reset and wait for VDD and VLS to stabilize */
    gpioSet(FET_DRIVER_RESET_PORT, FET_DRIVER_RESET_PIN);
    taskDelay(50);


                                              /* Clear interrupt status flags */
    cmd[0] = CLINT0_CMD | 0xf;
    ioctl(spiFd, IO_IOCTL_SPI_WRITE_READ, (int) &spiTxRx);
    cmd[0] = CLINT1_CMD | 0xf;
    ioctl(spiFd, IO_IOCTL_SPI_WRITE_READ, (int) &spiTxRx);

                                            /* Subscribe to interrupt sources */
    cmd[0] = MASK0_CMD | MASK0_OVERTEMP_BIT | MASK0_OVER_CURRENT_BIT
                                            | MASK0_VLS_UNDER_VOLTAGE_BIT ;
    ioctl(spiFd, IO_IOCTL_SPI_WRITE_READ, (int) &spiTxRx);

    cmd[0] = MASK1_CMD | MASK1_FRAMING_ERROR_BIT
                       | MASK1_WRITE_ERROR_BIT | MASK1_RESET_EVENT_BIT;
    ioctl(spiFd, IO_IOCTL_SPI_WRITE_READ, (int) &spiTxRx);

#if 1
    /* Use zero deadtime at pre driver (ftm uses deadtime already) */
    cmd[0] = DEADTIME_CMD;
    printf("read %d \n", ioctl(spiFd, IO_IOCTL_SPI_WRITE_READ, (int) &spiTxRx));

    printf("deadtime returned  %x \n", cmd[0]);
#endif

                           /* Using default deadtime.  Otherwise set it here. */
#if 0
    /* TODO Test this */
    cmd[0] = DEADTIME_CMD | DEADTIME_CALIBRATE_BIT;
    write(spiFd, cmd, 1);
    taskDelay(10);
    read(spiFd, cmd, 1);
    ioctl(spiFd, IO_IOCTL_SPI_SET_OPTS, SPI_OPTS_MASTER | SPI_OPTS_PCS_CONT);
    taskDelay(PERIOD_16_TIMES_LONGER_THAN_DESIRED_DEADTIME);
    ioctl(spiFd, IO_IOCTL_SPI_SET_OPTS, SPI_OPTS_MASTER);
#endif

    /* Setup any special mode settings and lock mode */
    cmd[0] = MODE_CMD | MODE_FULLON_BIT | MODE_DESATURATION_FAULT_BIT;
    //cmd[0] = MODE_CMD | MODE_DESATURATION_FAULT_BIT;
    //| MODE_MODE_LOCK_BIT;
    ioctl(spiFd, IO_IOCTL_SPI_WRITE_READ, (int) &spiTxRx);


            /* Bring up the enable lines (they are tied together in this design)
             * and get ready for some f#cking smoke! :) */
    gpioSet(FET_DRIVER_ENABLE_PORT, FET_DRIVER_ENABLE_PIN);

    cmd[0] = NULL_CMD | 0;
    write(spiFd, cmd, 1);
    taskDelay(50);


    /* Check status for fun */
    for (i = 0; i < MAX_NULL_CMD_REG; i++) {
        cmd[0] = NULL_CMD | i;
        write(spiFd, cmd, 1);
        taskDelay(50);
        read(spiFd, cmd, 1);
//        if (i) {
            if (i==0) {
                cmd[0] &= ~STATUS_REG0_RESET_EVENT;
                if (cmd[0]) {
                    retVal = ERROR;
                }
            }

            printf("FET Pre Amp Status[%d] %x\n", i, cmd[0]);
//        }
    }
//    read(spiFd, cmd, 1);
//    printf("FET Pre Amp Status[%d] %x\n", i, cmd[0]);
    taskDelay(50);

    if (retVal != ERROR) {
        /* Turn on all low sides */
       ftmSetOutputMask(FTM_0, MASK_HIGH_SIDE, TRUE);
       taskDelay(50);

        /* Turn off all low sides */
       ftmSetOutputMask(FTM_0, MASK_ALL_OUTPUTS, TRUE);
       taskDelay(50);

        /* Turn on all high sides */
       ftmSetOutputMask(FTM_0, MASK_LOW_SIDE, TRUE);
       taskDelay(1000);
        /* Turn off all high sides */
       ftmSetOutputMask(FTM_0, MASK_ALL_OUTPUTS, TRUE);

       /* Good to go! */
        printf("FET predriver initialized. \n");

#if 0

        if (gpioRead(HALL_A_PORT, HALL_A_PIN)) {
            value |= HALL_A_BIT;
        }
        if (gpioRead(HALL_B_PORT, HALL_B_PIN)) {
            value |= HALL_B_BIT;
        }
        if (gpioRead(HALL_C_PORT, HALL_C_PIN)) {
            value |= HALL_C_BIT;
        }
        if (value > 0 && value <= MAX_HALL_PHASE) {
            int idx;
            commutator.ready = TRUE;
            commutator.hallPosition = value;
            idx = commutationStepFromHallPos[commutator.hallPosition];
            idx = 2;
//            ftmSetOutputMask(FTM_0, commutator.commutationMask[idx], FALSE);
//            ftmSetInvCtrl(FTM_0, commutator.bipolarCompliment[idx], TRUE);
        } else {
            /* Motor Position Fault! */
            printf("Motor Position Fault! %d \n", value);
            gpioClear(FET_DRIVER_ENABLE_PORT, FET_DRIVER_ENABLE_PIN);
            gpioClear(FET_DRIVER_RESET_PORT, FET_DRIVER_RESET_PIN);
            updateFlags |= UPDATE_HALT;
        }
#endif


    } else {
        printf("Fault on FET PreDriver! \n");
    //    gpioClear(FET_DRIVER_ENABLE_PORT, FET_DRIVER_ENABLE_PIN);
      //  gpioClear(FET_DRIVER_RESET_PORT, FET_DRIVER_RESET_PIN);
//        updateFlags |= UPDATE_HALT;
    }

    return retVal;
}

static void setClock(void)
{
    /* -------- 100 MHz (external clock) -----------
     * Configure the Multipurpose Clock Generator output to use the external
     * clock locked with a PLL at the maximum frequency of 100MHZ
     *
     * For PLL, the dividers must be set first.
     *
     * System:  100 MHz
     * Bus:      50 MHz
     * Flexbus:  25 MHz
     * Flash:    25 MHz
     */
    clockSetDividers(DIVIDE_BY_1, DIVIDE_BY_2, DIVIDE_BY_4, DIVIDE_BY_4);
    clockConfigMcgOut(MCG_PLL_EXTERNAL_100MHZ);

    return;


}
Example #12
0
static svm_t resolveSVM(scaled_t output, scaled_t angle)
{
    svm_t svm;
    scaled_t relativeAngle[2];
    scaled_t duty[3]; /* [duty_1, duty_2, half duty_0] */


    angle %= 360 * UNITY;

    if (angle <= SVM_VECTOR_60) {
        gpioSet(N_LED_BLUE_PORT, N_LED_BLUE_PIN);
        gpioSet(N_LED_GREEN_PORT, N_LED_GREEN_PIN);
        gpioSet(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN);
        relativeAngle[1] = angle;
        relativeAngle[0] = SVM_60_DEGREES - relativeAngle[1];
        svm.sinLUTIdx = svmDuty(duty, relativeAngle, output);
        svm.pwmADuty = duty[0] + duty[1] + duty[2];
        svm.pwmBDuty =           duty[1] + duty[2];
        svm.pwmCDuty =                     duty[2];
    } else if (angle <= SVM_VECTOR_120) {
        gpioSet(N_LED_BLUE_PORT, N_LED_BLUE_PIN);
        gpioSet(N_LED_GREEN_PORT, N_LED_GREEN_PIN);
        gpioClear(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN);

        relativeAngle[1] = angle - SVM_VECTOR_60;
        relativeAngle[0] = SVM_60_DEGREES - relativeAngle[1];
        svm.sinLUTIdx = svmDuty(duty, relativeAngle, output);
        svm.pwmADuty = duty[0]           + duty[2];
        svm.pwmBDuty = duty[0] + duty[1] + duty[2];
        svm.pwmCDuty =                     duty[2];
    } else if (angle <= SVM_VECTOR_180) {
        gpioSet(N_LED_BLUE_PORT, N_LED_BLUE_PIN);
        gpioClear(N_LED_GREEN_PORT, N_LED_GREEN_PIN);
        gpioSet(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN);

        relativeAngle[1] = angle - SVM_VECTOR_120;
        relativeAngle[0] = SVM_60_DEGREES - relativeAngle[1];
        svm.sinLUTIdx = svmDuty(duty, relativeAngle, output);
        svm.pwmADuty =                     duty[2];
        svm.pwmBDuty = duty[0] + duty[1] + duty[2];
        svm.pwmCDuty =           duty[1] + duty[2];
    } else if (angle < SVM_VECTOR_240) {
        gpioSet(N_LED_BLUE_PORT, N_LED_BLUE_PIN);
        gpioClear(N_LED_GREEN_PORT, N_LED_GREEN_PIN);
        gpioClear(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN);

        relativeAngle[1] = angle - SVM_VECTOR_180;
        relativeAngle[0] = SVM_60_DEGREES - relativeAngle[1];
        svm.sinLUTIdx = svmDuty(duty, relativeAngle, output);
        svm.pwmADuty =                     duty[2];
        svm.pwmBDuty = duty[0]           + duty[2];
        svm.pwmCDuty = duty[0] + duty[1] + duty[2];
    } else if (angle < SVM_VECTOR_300) {
        gpioClear(N_LED_BLUE_PORT, N_LED_BLUE_PIN);
        gpioSet(N_LED_GREEN_PORT, N_LED_GREEN_PIN);
        gpioSet(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN);

        relativeAngle[1] = angle - SVM_VECTOR_240;
        relativeAngle[0] = SVM_60_DEGREES - relativeAngle[1];
        svm.sinLUTIdx = svmDuty(duty, relativeAngle, output);
        svm.pwmADuty =           duty[1] + duty[2];
        svm.pwmBDuty =                     duty[2];
        svm.pwmCDuty = duty[0] + duty[1] + duty[2];
    } else {
        gpioClear(N_LED_BLUE_PORT, N_LED_BLUE_PIN);
        gpioSet(N_LED_GREEN_PORT, N_LED_GREEN_PIN);
        gpioClear(N_LED_YELLOW_PORT, N_LED_YELLOW_PIN);

        relativeAngle[1] = angle - SVM_VECTOR_300;
        relativeAngle[0] = SVM_60_DEGREES - relativeAngle[1];
        svm.sinLUTIdx = svmDuty(duty, relativeAngle, output);
        svm.pwmADuty = duty[0] + duty[1] + duty[2];
        svm.pwmBDuty =                     duty[2];
        svm.pwmCDuty = duty[0]           + duty[2];
    }

    return svm;
}
Example #13
0
void  performCommandPLC()
{
	UINT8  ui8NameStrDL[15];
	
	UINT32  pos;
	UINT32  err = SUCCESS;
	UINT32  ui32dstDirPos;
	
	switch(ucHMI_addr)
	{
		case  PLC_TIME:
			stime.tm_sec = uiHMIWord[PLC_TIME+5];
			stime.tm_min = uiHMIWord[PLC_TIME+4];
			stime.tm_hour = uiHMIWord[PLC_TIME+3];
			stime.tm_mday = uiHMIWord[PLC_TIME+2];
			stime.tm_mon = uiHMIWord[PLC_TIME+1];
			stime.tm_year = uiHMIWord[PLC_TIME]-1900;
			timeSet(&stime);
			#if  C_LEVI_DEBUG
			    printf("time=%d/%d/%d %d:%d:%d  ",uiHMIWord[PLC_TIME],uiHMIWord[PLC_TIME+1],uiHMIWord[PLC_TIME+2],uiHMIWord[PLC_TIME+3],uiHMIWord[PLC_TIME+4],uiHMIWord[PLC_TIME+5]);
			#endif
			if((uiHMIWord[PLC_TIME]!=2000)||(uiHMIWord[PLC_TIME+1]!=01))
				ui8TimeFlag = 1;
			timeGet(&ptime);
			sio_psprintf(ui8NameStrDL, "%02d%02d%02dDC.CSV", (UINT32)(ptime->tm_year-100)%100, ptime->tm_mon,ptime->tm_mday);
			xdcfCurRootDirSet(ui8TermModule);
			//mp3_GetFileList();
			
			pos = myFindFile(ui8NameStrDL);
			myGetSingleDayDL(pos, &ui32SuccessNum);
			break;
		case  PLC_PARA_BUF:
			memcpy((UINT8 *)&curDevice, (UINT8 *)&uiHMIWord[PLC_PARA_BUF], C_PLC_PARA_NUM*sizeof(UINT16));
			#if  C_LEVI_DEBUG
			    printf("device=%d, class=%d  ",uiHMIWord[PLC_MODULE_NO],uiHMIWord[PLC_MODULE_NO+1]);
			#endif
			getModuleName(ui16CurModule, ui8TermModule);
			
			writePara();
			//readPara();
			break;
		case  PLC_MODULE_NO:
			#if  C_LEVI_DEBUG
			    printf("device=%d, class=%d  ",uiHMIWord[PLC_MODULE_NO],uiHMIWord[PLC_MODULE_NO+1]);
			#endif
			ui16CurModule = uiHMIWord[PLC_MODULE_NO];
			ui16CurClass = uiHMIWord[PLC_MODULE_NO+1];
			getModuleName(ui16CurModule, ui8TermModule);
			
			readPara();
			writePara();			
			readParadelaytime();			
			writeParadelaytime();
			break;			
	  case TESTSTEP0:
	  	test_step0=(~uiHMIWord[TESTSTEP0])&0xffff;
	  	test_step1=(~uiHMIWord[TESTSTEP1])&0xff;
	  	test_mode=(uiHMIWord[TestMode]&0x01);
	  	printf("test_step0=%d, test_step1=%d, test_mode=%d ",test_step0,test_step1,test_mode);
	  	break;
	  case delay_time:
	  	memcpy((UINT8 *)&delay,(UINT8 *)&uiHMIWord[delay_time],C_delay_NUM*sizeof(UINT16));
	  	//memcpy((UINT8 *)&uiHMIWord[delay_time], (UINT8 *)&delay, C_delay_NUM*sizeof(UINT16));
	  	getModuleName(ui16CurModule, ui8TermModule);
			writeParadelaytime();
			//readParadelaytime();
	  	break;
		case  PLC_BAKCMD:
			gpioConfig(GPIO_CARD_DET, 0);
			gpioSet(GPIO_CARD_DET, 1);
			if(gpioGet(GPIO_CARD_DET)==0)
			{
				err = xdcfActiveDevIdSet(DRIVE_SD);
				xdcfInit(imageDirNameStr, imageFileNameStr, 0);
				dirInit();
				if(err==SUCCESS)
				{
					xdcfChange2Root();
					vfsMkdir(ui8TermModule);
					xdcfCurRootDirSet(ui8TermModule);
					xdcfCurDirPosGet(&ui32dstDirPos);
					myXdcfDelFile();
					xdcfActiveDevIdSet(DRIVE_NAND);
					xdcfCurRootDirSet(ui8TermModule);
					xdcfChange2Root();
					vfsChdir(ui8TermModule);
					err |= myXdcfCopyDisk(ui32dstDirPos);
					if(uiHMIWord[PLC_BAKCMD])
					{
						myXdcfDelFile();
					}
					if(err==SUCCESS)
						uiHMIWord[PLC_BAKINFO] = 2;
					else
						uiHMIWord[PLC_BAKINFO] = 4;  // ¶ÁSD¿¨´íÎó
				}
				else
				{
					uiHMIWord[PLC_BAKINFO] = 4;  // ¶ÁSD¿¨´íÎó
				}
			}
			else
			{
				uiHMIWord[PLC_BAKINFO] = 3;  // ûÓÐSD¿¨
			}
			#if  C_FILE_DEBUG
			    printf("backup end  ");
			#endif
			break;
		default:
			break;
	}
}
Example #14
0
void pbEBookShow(UINT8 flag,  UINT32   ui32FileIdx  )
{	
	UINT8	i, j;
	UINT32	err	= SUCCESS;
	UINT32	pPBAddr, phyOsdDBAddr;
	UINT32	tempIdx = 1;
	UINT32	dispW, dispH;
	UINT32	pbThumbW, pbThumbH, pbThumbOffX, pbThumbOffY;
	
	
	pbThumbW =  120 ; // 160-40;
	pbThumbH =  84 ; //120-36;
	pbThumbOffX =150+20+2 ;
	pbThumbOffY = 44+14+14;

	//pImageBuf		= (UINT8*) (((UINT32 )ui8EBookBuf) |	0xac000000);
	//phyOsdDBAddr	= (((UINT32)pEBookBuf) & 0x00FFFFFF) >> 1;

	hwDateFontScalerSet(1);
	pbThumbBufferGet(&pPBAddr);
	hwDispPreviewSizeGet(&dispW, &dispH);
	hwPlayBufSizeSet(dispW,	dispH);
	
	hwPlayBufAddrSet(ui32gPB);

	if( flag == EBOOK_DRAW_PREVIEW )   
	{
		err	= xdcfFileTypeGet(ui32FileIdx, &ui32Filetype);
		
	}
	else if (flag == EBOOK_DRAW_BOOKTEXT)
	{
	
		pbDramImgPlay(MenupEBook[EBOOKREAD][0], MenupEBook[EBOOKREAD][1], ui32gPB, dispW, dispH);

		osdClearScreen(0);
		pbEBookTextGet(); 
		
		if ( (TVFlag == 1 ) && (PANEL_TYPE_1 != getCurPanel()) )
		{
            		gpioSet(GPIO_LCD_POWER, 1);
			hwWait(0,300);
			panelSelect(PANEL_TYPE_1);
			sPara.TvoutFlag=TVOutOff;
			TVFlag=0;
			hwDispPvSetRead(imgBuf);
//			ChgPvSetting = 1;
		}
	}
	else if ( flag == EBOOK_DRAW_BG )
	{
		pbMainBack();
		if (ui32FileCnt == 0)
		{
			#if 0   // tzw add 
			hwImgCopyDo((UINT32)pPBAddr, pbThumbW, pbThumbH, 0, 0, pbThumbW, pbThumbH,
			ui32gPB, dispW,	dispH,pbThumbOffX,pbThumbOffY, 0);
			#endif

		}
		else
		{
			
			pbImagePaste( MenupEBook[EBOOKPICT][0], MenupEBook[EBOOKPICT][1], MenupEBook[EBOOKPICT][2],  MenupEBook[EBOOKPICT][3] );
		}	
	}
	

}