Esempio n. 1
0
/**
  Open Lens Control task

  Open Lens Control task.
  The parameter is not using now, just for compliance

  Return value is listed below:
  E_SYS: Task is already opened
  E_OK: No error

  @param LENSCTRL_APPOBJ pLensCtrlObj: Lens Control application object
  @return ER
*/
ER LensCtrl_Open(PLENSCTRL_APPOBJ pLensCtrlObj)
{
    if (bLensCtrlOpened == TRUE)
    {
        return E_SYS;
    }

    memcpy(&gLensCtrlObj, pLensCtrlObj, sizeof(LENSCTRL_APPOBJ));

    clr_flg(FLG_ID_LENS, FLGLENS_ZOOMFWD |
                         FLGLENS_ZOOMREV |
                         FLGLENS_ZOOMBRK |
                         FLGLENS_ZOOMOFF |
                         FLGLENS_ZOOMCHANGE |
                         FLGLENS_FOCUSFWD   |
                         FLGLENS_FOCUSREV   |
                         FLGLENS_APERTUREMOVE |
                         FLGLENS_SHUTTERMOVE  |
                         FLGLENS_POWEROFF     |
                         FLGLENS_IDLE);

    bLensCtrlOpened = TRUE;

    sta_tsk(LENSCTRLTSK_ID);

    return E_OK;
}
Esempio n. 2
0
/*---------------------------------------------------------------------------*/
static void MMCSDXferSetup(mmcsdCtrlInfo *ctrl, unsigned char rwFlag, void *ptr,
                             unsigned int blkSize, unsigned int nBlks)
{
#if defined(DEBUG)
//  UARTprintf("%s(ctrl=%p,rwFlag=%d,ptr=%p,blkSize=%d,nBlks=%d)\r\n", __FUNCTION__,
//             ctrl, rwFlag, ptr, blkSize, nBlks);
	syslog(LOG_ERROR, "%s(ctrl=%p,rwFlag=%d,ptr=%p,blkSize=%d,", __FUNCTION__, ctrl, rwFlag, ptr, blkSize);
	syslog(LOG_ERROR, "    nBlks=%d)", nBlks);
#endif

#if defined(DEBUG) && 0
	syslog(LOG_ERROR, "%s(): clr_flg(MMCSD_ISR_FLGPTN_XFERCOMP | MMCSD_ISR_FLGPTN_DATATIMEOUT | MMCSD_ISR_FLGPTN_DATACRCERR | MMCSD_ISR_FLGPTN_DMACOMP)", __FUNCTION__);
#endif
	ER ercd = clr_flg(MMCSD_ISR_FLG, ~(MMCSD_ISR_FLGPTN_XFERCOMP | MMCSD_ISR_FLGPTN_DATATIMEOUT | MMCSD_ISR_FLGPTN_DATACRCERR | MMCSD_ISR_FLGPTN_DMACOMP));
	assert(ercd == E_OK);
//  dmaIsRunning = 1;
//  xferCompFlag = 0;
//  dataTimeout  = 0;
//  dataCRCError = 0;

  if (rwFlag == 1)
  {
    MMCSDRxDmaConfig(ptr, blkSize, nBlks);
  }
  else
  {
    MMCSDTxDmaConfig(ptr, blkSize, nBlks);
  }

  ctrl->dmaEnable = 1;

  MMCSDBlkLenSet(ctrl->memBase, blkSize);
}
Esempio n. 3
0
static int __ui_clr_flg(struct pt_regs *regs)
{
	ID flgid = __xn_reg_arg1(regs);
	UINT clrptn = __xn_reg_arg2(regs);

	return clr_flg(flgid, clrptn);
}
Esempio n. 4
0
static UINT32 WifiCmd_DispatchCmd(UINT32 cmd,WIFICMD_PAR_TYPE parType,UINT32 par,UINT32 *UserCB)
{
    int i = 0;
    UINT32 ret=0;

    if(g_receiver)
    {
        while(g_pCmdTab[i].cmd != 0)
        {
            if(cmd == g_pCmdTab[i].cmd)
            {
                //UINT32 t1,t2;
                //t1 = Perf_GetCurrent()/1000;
                DBG_IND("cmd:%d evt:%x par:%d CB:%x wait:%x\r\n",g_pCmdTab[i].cmd,g_pCmdTab[i].event,par,g_pCmdTab[i].usrCB,g_pCmdTab[i].Waitflag);
                if(g_pCmdTab[i].Waitflag)
                {
                    clr_flg(FLG_ID_WIFICMD, g_pCmdTab[i].Waitflag);
                    g_result = 0;
                }
                if(gEventHandle && g_pCmdTab[i].event)
                {
                    if(parType==WIFICMD_PAR_NUM)
                    {
                        gEventHandle(g_pCmdTab[i].event,1,par);
                    }
                    else if(parType==WIFICMD_PAR_STR)
                    {
                        char  *parStr;//post event,data in stack would release
                        parStr = WifiCmd_LockString();
                        memset(parStr,'\0',WIFI_PAR_STR_LEN);
                        sscanf((char *)par,"%s",parStr);
                        gEventHandle(g_pCmdTab[i].event,1,parStr);
                    }
                    else
                    {
                        gEventHandle(g_pCmdTab[i].event,0);
                    }
                }
                if(g_pCmdTab[i].Waitflag)
                    ret = WifiCmd_WaitFinish(g_pCmdTab[i].Waitflag);
                if(g_pCmdTab[i].usrCB)
                    *UserCB = (UINT32)g_pCmdTab[i].usrCB;
                //t2 = Perf_GetCurrent()/1000;
                //DBG_ERR("time %d ms\r\n",t2-t1);
                DBG_IND("ret %d\r\n",ret);
                return ret;
            }
            i++;
        }
    }
    else
    {
        DBG_ERR("should WifiCmd_ReceiveCmd enable\r\n");
    }
    return WIFI_CMD_NOT_FOUND;

}
Esempio n. 5
0
ER
tcp_wait_rwbuf (T_TCP_CEP *cep, TMO tmout)
{
	ER	error;
	FLGPTN	flag;

	if (cep->rwbuf_count == 0) {
		/* 受信ウィンドバッファにデータがなければ、入力があるまで待つ。*/
		while (cep->rwbuf_count == 0) {
			if ((error = twai_flg(cep->rcv_flgid, TCP_CEP_EVT_RWBUF_READY, TWF_ORW, &flag, tmout)) != E_OK) {
				return error;
				}
			syscall(clr_flg(cep->rcv_flgid, (FLGPTN)(~TCP_CEP_EVT_RWBUF_READY)));

			/*
			 *  受信できるか、fsm_state を見る。受信できない状態で、
			 *  受信ウィンドバッファに文字がない場合は終了する。
			 */
			if (!TCP_FSM_CAN_RECV_MORE(cep->fsm_state) &&
			    cep->rwbuf_count == 0 && cep->reassq == NULL) {

				/*
				 *  通信端点をロックして、
				 *  受信ウィンドバッファキューのネットワークバッファを解放する。
				 */
#ifdef TCP_CFG_RWBUF_CSAVE
#endif
				syscall(wai_sem(cep->semid_lock));
				TCP_FREE_RWBUFQ(cep);
				syscall(sig_sem(cep->semid_lock));

				return cep->error;
				}
			}
		}
	else
		syscall(clr_flg(cep->rcv_flgid, (FLGPTN)(~TCP_CEP_EVT_RWBUF_READY)));

	return E_OK;
	}
Esempio n. 6
0
main()
{
	init_params();
	set_int("SCALE", "7");
	set_flg("VERBOSE");
	set_str("DISTRIBUTIONS", "'some file name'");
	print_params();
	set_int("s" , "8");
	clr_flg("VERBOSE");
	printf("DIST is %s\n", get_str("DISTRIBUTIONS"));
	print_params();
	usage(NULL, NULL);
}
Esempio n. 7
0
//ethan_20110801_add
ER Cal_SaveAWBGS(void)
{
    ER ercode = 0;
    FLGPTN  uiFlag = 0;
    HNVT_FILE *pFile;
    Cal_ClearOSD(_OSD_INDEX_TRANSPART);

    if(AAA_Adjust.AWB_Status == _AWB_Status)
    {
        AAA_Adjust.AWBGS_Status = _AWB_Status;
        AAA_Adjust.AWBGS.Rgain = AAA_Adjust.AWB.Rgain;
        AAA_Adjust.AWBGS.Bgain = AAA_Adjust.AWB.Bgain;
        sprintf(CalStringBuffer,"AWB GS: Rgain:%d Bgain:%d",AAA_Adjust.AWBGS.Rgain,AAA_Adjust.AWBGS.Bgain);
        Cal_ShowStringWithColor(CalStringBuffer,20, 100, 4);
        ercode =  E_OK;
    }
    else
        ercode =  E_SYS;
    sprintf(CalStringBuffer,"Press SHUTTER to return");
    Cal_ShowStringWithColor(CalStringBuffer,20, 120, 4);

    if(ercode == E_OK)
    {
        FilesysWaitCmdFinish(FST_TIME_INFINITE);
        pFile = fs_fopen("A:\\AWBGS.txt","w");
        if(pFile == NULL)
        {
            sprintf(CalStringBuffer, "create  AWBGS.txt fail");
            Cal_ShowStringWithColor(CalStringBuffer,20, 40, 4);
            TimerDelayMs(2000);
        }
        else
        {
            sprintf(CalStringBuffer, "%d %d",AAA_Adjust.AWBGS.Rgain,AAA_Adjust.AWBGS.Bgain);
            fs_fwrite(CalStringBuffer, 1, 7, pFile);
            fs_fclose(pFile);
            g_CalStringRect.uiLeft    = 20;
            g_CalStringRect.uiTop     = 200;
            g_CalStringRect.uiWidth   = 300;
            g_CalStringRect.uiHeight  = 30;
            sprintf(CalStringBuffer, "AWBGS.txt OK");
            Cal_ShowStringWithColor(CalStringBuffer,20, 40, 4);
            TimerDelayMs(2000);
        }

        Cal_WriteCalData(PSTORE_SEC_SENSOR);
    }
    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);
    return ercode;
}
Esempio n. 8
0
//ethan_20110801_add
ER Cal_ShowCalRst(void)
{
    ER ercode = 0;
    FLGPTN  uiFlag = 0;
    ercode = Cal_ReadCalData();
    if(ercode!=E_OK)
    {
        debug_err(("^R %s: read ps error\r\n",__func__));
        return E_SYS;;
    }
    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    if((AAA_Adjust.DP_Status.Prv_White == _Prv_W_Status) && \
        (AAA_Adjust.DP_Status.Prv_Black== _Prv_B_Status))
    {
        sprintf(CalStringBuffer,"DP Pixel num: Prv:%d",(UINT)AAA_Adjust.DPC_Num[DPC_PRV]);
        Cal_ShowStringWithColor(CalStringBuffer,20, 20, 4);
    }

    if((AAA_Adjust.DP_Status.Cap_White == _Cap_W_Status) && \
        (AAA_Adjust.DP_Status.Cap_Black == _Cap_B_Status))
    {
        sprintf(CalStringBuffer,"DP Pixel num: Cap:%d",(UINT)AAA_Adjust.DPC_Num[DPC_CAP]);
        Cal_ShowStringWithColor(CalStringBuffer,20, 40, 4);
    }

    if(AAA_Adjust.ECS_Status == _ECS_Status)
        sprintf(CalStringBuffer,"ECS Rst: OK");
    else
        sprintf(CalStringBuffer,"ECS Rst: NG");
    Cal_ShowStringWithColor(CalStringBuffer,20, 60, 4);

    if(AAA_Adjust.AWB_Status == _AWB_Status)
        sprintf(CalStringBuffer,"AWB: Rgain:%d Bgain:%d",AAA_Adjust.AWB.Rgain,AAA_Adjust.AWB.Bgain);
    else
        sprintf(CalStringBuffer,"AWB: NG");
    Cal_ShowStringWithColor(CalStringBuffer,20, 80, 4);

    if(AAA_Adjust.AWBGS_Status == _AWB_Status)
        sprintf(CalStringBuffer,"AWB GS: Rgain:%d Bgain:%d",AAA_Adjust.AWBGS.Rgain,AAA_Adjust.AWBGS.Bgain);
    else
        sprintf(CalStringBuffer,"AWBGS: NG");
    Cal_ShowStringWithColor(CalStringBuffer,20, 100, 4);

    sprintf(CalStringBuffer,"Press SHUTTER to return");
    Cal_ShowStringWithColor(CalStringBuffer,20, 120, 4);

    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);
    return E_OK;
}
Esempio n. 9
0
/*
** Initialize the MMCSD controller structure for use
*/
static void MMCSDControllerSetup(void)
{
#if DEBUG_PRINT
  UARTprintf("%s()\r\n", __FUNCTION__);
#endif
  ctrlInfo.memBase        = MMCSD_INST_BASE;
  ctrlInfo.ctrlInit       = MMCSDLibControllerInit;
  ctrlInfo.xferSetup      = MMCSDXferSetup;
  ctrlInfo.cmdStatusGet   = MMCSDCmdStatusGet;
  ctrlInfo.xferStatusGet  = MMCSDXferStatusGet;
  ctrlInfo.cardPresent    = MMCSDLibCardPresent;
  ctrlInfo.cmdSend        = MMCSDLibCmdSend;
  ctrlInfo.busWidthConfig = MMCSDLibBusWidthConfig;
  ctrlInfo.busFreqConfig  = MMCSDLibBusFreqConfig;
  ctrlInfo.intrMask       = (MMCSD_INTR_CMDCOMP | MMCSD_INTR_CMDTIMEOUT |
                             MMCSD_INTR_DATATIMEOUT | MMCSD_INTR_TRNFCOMP |
                             MMCSD_INTR_DATACRCERR);
  ctrlInfo.intrMask = 0xFFFFFFFF; // Enable all interrupts for debug -- ertl-liyixiao
  ctrlInfo.intrEnable     = MMCSDLibIntrEnable;
  ctrlInfo.busWidth       = (SD_BUS_WIDTH_1BIT | SD_BUS_WIDTH_4BIT);
  ctrlInfo.highspeed      = 1;
  ctrlInfo.ocr            = (SD_OCR_VDD_3P0_3P1 | SD_OCR_VDD_3P1_3P2);
  ctrlInfo.card           = &sdCard;
  ctrlInfo.ipClk          = MMCSD_IN_FREQ;
  ctrlInfo.opClk          = MMCSD_INIT_FREQ;
  ctrlInfo.cdPinNum       = MMCSD_CARD_DETECT_PINNUM;
  sdCard.ctrl             = &ctrlInfo;

//  dmaIsRunning = 0;
//  xferCompFlag = 0;
//  dataTimeout = 0;
//  dataCRCError = 0;
//  cmdCompFlag = 0;
//  cmdTimeout = 0;
  ER ercd = clr_flg(MMCSD_ISR_FLG, 0x0);
  assert(ercd == E_OK);
  ercd = set_flg(MMCSD_ISR_FLG, MMCSD_ISR_FLGPTN_DMACOMP);
  assert(ercd == E_OK);
#if defined(DEBUG) && 0
  syslog(LOG_ERROR, "%s(): set_flg(MMCSD_ISR_FLGPTN_DMACOMP)", __FUNCTION__);
#endif
}
Esempio n. 10
0
/**
 * EV3RT console button task
 */
void console_button_task(intptr_t unused) {
	ER ercd;
	FLGPTN flgptn;
	while((ercd = wai_flg(console_button_flag, (1 << TNUM_BRICK_BUTTON) - 1, TWF_ORW, &flgptn)) == E_OK) {
		for (int i = 0; i < TNUM_BRICK_BUTTON; ++i)
			if (flgptn & (1 << i)) {
				switch(i) {
				case BRICK_BUTTON_BACK:
					if (log_view_scroll_mode) { // Exit scroll mode
						log_view_refresh_ex(log_current_line);
						log_view_scroll_mode = false;
					} else { // Toggle
						ev3rt_console_set_visibility(!console_visible);
					}
					break;

				case BRICK_BUTTON_UP: // scroll up
					log_view_scroll(true);
					break;

				case BRICK_BUTTON_DOWN: // scroll down
					log_view_scroll(false);
					break;

				case BRICK_BUTTON_LEFT:
					console_menu_perform_action(CONSOLE_MENU_ACT_PREV);
					break;

				case BRICK_BUTTON_RIGHT:
					console_menu_perform_action(CONSOLE_MENU_ACT_NEXT);
					break;

				case BRICK_BUTTON_ENTER:
					console_menu_perform_action(CONSOLE_MENU_ACT_ENTER);
					clr_flg(console_button_flag, 0);
					break;
				}
			}
	}
	syslog(LOG_ERROR, "%s(): Fatal error, ercd: %d", __FUNCTION__, ercd);
}
INT32 UIMenuWndCalibration_Item_OnKeyEnter(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)
{
    static BOOL bIsFirst = TRUE;

    /* Must ignore the 1st S2 key evt, coz S2 key is also the Engineering Mode hotkey */
    if(bIsFirst)
    {
        bIsFirst = FALSE;
        return NVTEVT_CONSUME;
    }

    if(g_CalItem[g_CalData.SelItem].ItemFunction != NULL)
    {
        clr_flg(FLG_ID_KEY, 0xffffffff);
        g_CalItem[g_CalData.SelItem].ItemFunction();
    }
    Ux_FlushEvent();
    UxCtrl_SetShow(&UIMenuWndCalibrationCtrl, TRUE);
    Ux_Redraw();
    return NVTEVT_CONSUME;
}
Esempio n. 12
0
void WifiCmd_ReceiveCmd(UINT32 enable)
{
    DBG_IND("WifiCmd_ReceiveCmd %d\r\n",enable);

    if(enable)
    {
        if( (!g_pCmdTab)||(!gEventHandle) )
        {
            DBG_ERR("no Cmd Table or event handle\r\n");
            return;
        }
        clr_flg(FLG_ID_WIFICMD,0xFFFFFFFF);
        g_receiver = enable;
    }
    else
    {
        g_receiver = enable;
        //UI want to close,some app cmd might wait UI finish
        //can not wait flag by UI,therefore set flag for app cmd
        WifiCmd_Done(0xFFFFFFFF,WIFI_CMD_TERMINATE);
    }
}
Esempio n. 13
0
int main( void )
{
	char buf[1024] = {};
	if ( read(0, buf, 1024) == -1)
		ERR_EXIT("read");

	printf("buf=%s\n", buf);
	
	/*
	int flags = fcntl(0, F_GETFL, 0);
	if ( flags == -1)
		ERR_EXIT("fcntl");
	
	if ( fcntl(0, F_SETFL, O_NONBLOCK|flags) == -1)
		ERR_EXIT("fcntl");
	*/
	set_flg(0, O_NONBLOCK);
	clr_flg(0, O_NONBLOCK);
	
	if ( read(0, buf, 1024) == -1) // EAGAIN
		ERR_EXIT("read");
	
	return 0;
}
Esempio n. 14
0
UINT32 ECS_Adjust(void)
{
    CAL_ECS_PARAM ECSParam;
    UINT32 BufAddr;
    UINT32 ErrorCode = CAL_ERR_NULL;
    ER Error_check;
    UINT32 PrvMode = SENSOR_MODE_1280X960;
    CAL_AE_INFO AeSetting;
    UINT32 i;
    FLGPTN  uiFlag = 0;

    Error_check = get_blk((void *)&(BufAddr), POOL_ID_ECS);
    if(Error_check != E_OK)
    {
        ;
    }
    else
    {
        rel_blk(POOL_ID_ECS, (VP)BufAddr);
    }

    debug_err(("POOL_ID_ECS Addr=0x%x\r\n",BufAddr));
    //memset((void *)BufAddr, 0x10040100, POOL_SIZE_ECS);
    for(i=0;i<ECS_MAX;i++)
        *(UINT32 *)(BufAddr + i*4) = 0x10040100;

    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    Cal_ShowStringWithColor("Face Light and Press SHUTTER",20, 80, 3);

    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);
    Cal_ClearOSD(_OSD_INDEX_TRANSPART);

    AAA_Adjust.ECS_Status = 0;
    Cal_SetCalData(CAL_DATANUM_STATUS_ECS, (UINT*)&AAA_Adjust.ECS_Status);

    Cal_SetMode(IPL_MODE_OFF, 0);

    // Set IPP to preview
    Cal_SetMode(IPL_MODE_PREVIEW, PrvMode);

    // Lock 3A, FD and SD
    Cal_Lock3A(1);
    Photo_WaitPhotoIdle(TRUE, (PHOTO_1ST|PHOTO_2ND|PHOTO_3RD|PHOTO_AE|PHOTO_AWB));

    // AE setting
    AeSetting.uiTarget = 150;
    AeSetting.uiLum = 0;
    AeSetting.uiAEType = AE_FIX_TIME;
    AeSetting.uiCAType = CAL_CASOURCE_SUBOUT;
    AeSetting.uiExpT = 4167;
    AeSetting.uiISO = 100;
    AeSetting.uiAdjStep = 1;
    AeSetting.uiTimeout = 300;
    AeSetting.uiResult = 0;

    Cal_WaitAeStable(&AeSetting);
    //AWBParam.uiBayAddr = Buffer;
    ECSParam.uiCalibMode = SENSOR_MODE_FULL;
    ECSParam.uiOBofs = 0x28;
    ECSParam.uiMsht = 31500;
    ECSParam.uiCmpRatio= 100; // don't over than 100(%)
    ECSParam.bSaveRaw = FALSE;
    ECSParam.uiTableAddr= BufAddr;
    ECSParam.uiExpT = (AeSetting.uiExpT * 2); //Preview binning 2x
    ECSParam.uiISO = AeSetting.uiISO;

    Cal_ECSAdjust(&ECSParam);

    AAA_Adjust.ECS_Status = _ECS_Status;
    AAA_Adjust.ECS_Addr[ECS_FOV1] = ECSParam.uiTableAddr;

    Cal_SetCalData(CAL_DATANUM_STATUS_ECS, (UINT*)&AAA_Adjust.ECS_Status);
    Cal_SetCalData(CAL_DATANUM_ECS_Addr, (UINT*)&AAA_Adjust.ECS_Addr[ECS_FOV1]);
    // Set IPP to preview
    Cal_SetMode(IPL_MODE_PREVIEW, PrvMode);

    ErrorCode = CAL_ERR_OK;

    if(ErrorCode == CAL_ERR_OK)
    {
        Cal_WriteCalData(PSTORE_SEC_SENSOR);
        Cal_WriteCalData(PSTORE_SEC_ECS);
    }
    sprintf(CalStringBuffer,"ECS ErrorCode %d",(UINT)ErrorCode);
    Cal_ShowStringWithColor(CalStringBuffer,20, 120, 4);

    sprintf(CalStringBuffer,"Press SHUTTER to return");
    Cal_ShowStringWithColor(CalStringBuffer,20, 160, 4);

    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);

    return ErrorCode;
}
Esempio n. 15
0
UINT32 DP_Adjust(void)
{
    UINT8 ErrorCode;
    UINT32 BufAddr;
    ER Error_check;
    FLGPTN  uiFlag = 0;

    Cal_SetCalData(CAL_DATANUM_STATUS_PrvDP_W, 0);
    Cal_SetCalData(CAL_DATANUM_STATUS_PrvDP_B, 0);
    Cal_SetCalData(CAL_DATANUM_STATUS_CapDP_W, 0);
    Cal_SetCalData(CAL_DATANUM_STATUS_CapDP_B, 0);

    //get DP address & clear status
    Error_check = get_blk((void *)&(BufAddr), POOL_ID_DEFECT_PIXEL);
    if(Error_check != E_OK)
    {
        ;
    }
    else
    {
        rel_blk(POOL_ID_DEFECT_PIXEL, (VP)BufAddr);
    }

    memset((void *)BufAddr, 0x0, POOL_SIZE_DEFECT_PIXEL);
    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    Cal_ShowStringWithColor("Face Light and Press SHUTTER",20, 80, 3);

    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);

    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    Cal_ShowStringWithColor("Process...",20, 80, 3);

    AAA_Adjust.DPC_Addr[DPC_PRV] = BufAddr;
    AAA_Adjust.DPC_Addr[DPC_CAP] = BufAddr + (DP_Prv_MAX<<2);
    AAA_Adjust.DPC_Num[DPC_PRV] = 0;
    AAA_Adjust.DPC_Num[DPC_CAP] = 0;
    AAA_Adjust.DP_Status.Prv_White = AAA_Adjust.DP_Status.Prv_Black = 0;
    AAA_Adjust.DP_Status.Cap_White = AAA_Adjust.DP_Status.Cap_Black = 0;

    ErrorCode = DP_Adjust_White();
    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    sprintf(CalStringBuffer,"Prv Dark pixel %d",(UINT)AAA_Adjust.DPC_Num[DPC_PRV]);
    Cal_ShowStringWithColor(CalStringBuffer,20, 20, 4);
    sprintf(CalStringBuffer,"Cap Dark pixel %d",(UINT)AAA_Adjust.DPC_Num[DPC_CAP]);
    Cal_ShowStringWithColor(CalStringBuffer,20, 60, 4);
    TimerDelayMs(1500);

    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    Cal_ShowStringWithColor("Cover Lens and Press SHUTTER",20, 80, 3);

    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);
    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    Cal_ShowStringWithColor("Process...",20, 80, 3);

    ErrorCode = DP_Adjust_Dark();
    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    sprintf(CalStringBuffer,"Prv Total pixel %d",(UINT)AAA_Adjust.DPC_Num[DPC_PRV]);
    Cal_ShowStringWithColor(CalStringBuffer,20, 80, 4);
    sprintf(CalStringBuffer,"Cap Total pixel %d",(UINT)AAA_Adjust.DPC_Num[DPC_CAP]);
    Cal_ShowStringWithColor(CalStringBuffer,20, 100, 4);

    sprintf(CalStringBuffer,"DP ErrorCode %d",ErrorCode);
    Cal_ShowStringWithColor(CalStringBuffer,20, 120, 4);

    if(ErrorCode == CAL_ERR_OK)
    {
        Cal_WriteCalData(PSTORE_SEC_SENSOR);
        Cal_WriteCalData(PSTORE_SEC_DP);
        //Cal_ReadCalData();
    }

    sprintf(CalStringBuffer,"Press SHUTTER to return");
    Cal_ShowStringWithColor(CalStringBuffer,20, 160, 4);

    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);
    return ErrorCode;
}
Esempio n. 16
0
UINT32 AWB_Adjust(void)
{
    CAL_AWB_PARAM AWBParam;
    UINT32 ErrorCode = CAL_ERR_OK;
    UINT32 GS_ercode = E_OK;
    CAL_AE_INFO AeSetting;
    UINT32 PrvMode = SENSOR_MODE_1280X960;
    FLGPTN  uiFlag = 0;

    Cal_ClearOSD(_OSD_INDEX_TRANSPART);
    Cal_ShowStringWithColor("Face Light and Press SHUTTER",20, 80, 3);

    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);
    Cal_ClearOSD(_OSD_INDEX_TRANSPART);

    // Set IPP to OFF
    Cal_SetMode(IPL_MODE_OFF, 0);

    // Set IPP to preview
    Cal_SetMode(IPL_MODE_PREVIEW, PrvMode);

    // Lock 3A, FD and SD
    Cal_Lock3A(1);
    Photo_WaitPhotoIdle(TRUE, (PHOTO_1ST|PHOTO_2ND|PHOTO_3RD|PHOTO_AE|PHOTO_AWB));

    // AE setting
    AeSetting.uiTarget = 120;
    AeSetting.uiLum = 0;
    AeSetting.uiAEType = AE_FIX_GAIN;
    AeSetting.uiCAType = CAL_CASOURCE_SUBOUT;
    AeSetting.uiExpT = 30000;
    AeSetting.uiISO = 100;
    AeSetting.uiAdjStep = 500;
    AeSetting.uiTimeout = 300;
    AeSetting.uiResult = 0;

    Cal_WaitAeStable(&AeSetting);

    //AWBParam.uiBayAddr = Buffer;
    AWBParam.uiAWBType = CAL_AWBTYPE_PREVIEW;
    AWBParam.uiOBofs = 0x28;
    AWBParam.uiMsht = 31500;
    AWBParam.bSaveRaw = FALSE;
    AWBParam.uiExpT = (AeSetting.uiExpT * 2); //Preview binning 2x
    AWBParam.uiISO = AeSetting.uiISO;

    Cal_AWBAdjust(&AWBParam);

    // Set IPP to preview
    Cal_SetMode(IPL_MODE_PREVIEW, PrvMode);

    debug_err(("R = %d G = %d B = %d\r\n", AWBParam.uiRGB[1], AWBParam.uiRGB[2], AWBParam.uiRGB[3]));

    AAA_Adjust.AWB.Rgain = AWBParam.uiRGB[2]*256/AWBParam.uiRGB[1];
    AAA_Adjust.AWB.Bgain = AWBParam.uiRGB[2]*256/AWBParam.uiRGB[3];

    AAA_Adjust.AWB_Status = _AWB_Status;

    GS_ercode = CheckAwbGS();
    if(GS_ercode == E_OK)
    {
        sprintf(CalStringBuffer,"AWBGS: Rgain %d  Bgain%d",AAA_Adjust.AWBGS.Rgain,AAA_Adjust.AWBGS.Bgain);
        Cal_ShowStringWithColor(CalStringBuffer,20, 40, 4);
    }
    else
    {
        sprintf(CalStringBuffer,"No AWBGS");
        Cal_ShowStringWithColor(CalStringBuffer,20, 40, 4);
    }

    sprintf(CalStringBuffer,"AWB Rgain %d  Bgain %d",(UINT)AAA_Adjust.AWB.Rgain,(UINT)AAA_Adjust.AWB.Bgain);
    Cal_ShowStringWithColor(CalStringBuffer,20, 60, 4);

    sprintf(CalStringBuffer,"AWB Adjust ErrorCode %d",(UINT)ErrorCode);
    Cal_ShowStringWithColor(CalStringBuffer,20, 80, 4);

    if (ErrorCode == CAL_ERR_OK)
    {
        Cal_WriteCalData(PSTORE_SEC_SENSOR);
    }

    sprintf(CalStringBuffer,"Press SHUTTER to return");
    Cal_ShowStringWithColor(CalStringBuffer,20, 100, 4);

    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW | TWF_CLR);

    return ErrorCode;
}
Esempio n. 17
0
/**
  Lens control task

  Lens control task to handle interrupt event.

  @param void
  @return void
*/
void LensCtrlTsk(void)
{
    FLGPTN  uiFlag;

    while (1)
    {
        set_flg(FLG_ID_LENS, FLGLENS_IDLE);
        wai_flg(&uiFlag, FLG_ID_LENS,
                         FLGLENS_ZOOMFWD |
                         FLGLENS_ZOOMREV |
                         FLGLENS_ZOOMBRK |
                         FLGLENS_ZOOMOFF |
                         FLGLENS_ZOOMCHANGE |
                         FLGLENS_FOCUSFWD   |
                         FLGLENS_FOCUSREV   |
                         FLGLENS_APERTUREMOVE |
                         FLGLENS_SHUTTERMOVE  |
                         FLGLENS_POWEROFF
                       , TWF_ORW | TWF_CLR);
        clr_flg(FLG_ID_LENS, FLGLENS_IDLE);

        if(gLensCtrlObj.pMotor == NULL)
        {
            LENS_ERR(("LENS_E: %s pMotor is null\r\n", __func__));
            continue;
        }

        if(uiFlag & FLGLENS_ZOOMBRK)
        {
            gLensCtrlObj.pMotor->zoom_setState(MOTOR_ZOOM_BRAKE, 0);
        }

        if(uiFlag & FLGLENS_ZOOMFWD)
        {
            gLensCtrlObj.pMotor->zoom_setState(MOTOR_ZOOM_FWD, gLensCtrlParamObj.uiZoomStep);
        }

        if(uiFlag & FLGLENS_ZOOMREV)
        {
            gLensCtrlObj.pMotor->zoom_setState(MOTOR_ZOOM_BWD, gLensCtrlParamObj.uiZoomStep);
        }

        if(uiFlag & FLGLENS_ZOOMOFF)
        {
            gLensCtrlObj.pMotor->zoom_setState(MOTOR_ZOOM_OFF, 0);
        }

        if(uiFlag & FLGLENS_ZOOMCHANGE)
        {
            if(gLensCtrlObj.fpLensCB != NULL)
            {
                AlgMsgInfo    AlgMsg;

                AlgMsg.OzoomIndex = gLensCtrlObj.pLens->zoom_getNextSection();
                gLensCtrlObj.fpLensCB(ALGMSG_CHGOZOOMSTEP, &AlgMsg);
            }
        }

        if(uiFlag & FLGLENS_FOCUSFWD)
        {
            gLensCtrlObj.pMotor->focus_setState(MOTOR_FOCUS_FWD, gLensCtrlParamObj.uiFocusStep);
        }

        if(uiFlag & FLGLENS_FOCUSREV)
        {
            gLensCtrlObj.pMotor->focus_setState(MOTOR_FOCUS_BWD, gLensCtrlParamObj.uiFocusStep);
        }

        if(uiFlag & FLGLENS_APERTUREMOVE)
        {
            gLensCtrlObj.pMotor->aperture_setState(gLensCtrlParamObj.uiApertureState);
        }

        if(uiFlag & FLGLENS_SHUTTERMOVE)
        {
            gLensCtrlObj.pMotor->shutter_setState(gLensCtrlParamObj.uiShutterState);
        }

        if(uiFlag & FLGLENS_POWEROFF)
        {
            TimerDelayMs(LENS_MAX_WAIT_TIME);
            gLensCtrlObj.pMotor->changeMode(MOTOR_MODE_STANDBY);

            gLensCtrlObj.pMotor->power(MOTOR_POWER_OFF);
        }

    }
}
Esempio n. 18
0
UINT32 CalLens_FarFocusAdjust(void)
{
    UINT32  i;
    UINT16  StartIdx, EndIdx;
    //UINT32  ErrorCode=ERRORCODE_OK;
    UINT32  AF_Step;
    UINT32  maxVA=0;//, minVA=0;
    UINT    uiFlag=0;
    char    str1[32];
    BOOL    bFocusNG = FALSE;
    IPL_OBJ IplObj;

    ide_enable_video(IDE_VIDEOID_1);
    /************************************************************/
    debug_err(("\n\nPlease let camera facing ISO chart. Then press shutter key\r\n\n"));
    //Cal_ClearScreen();
    //Cal_ShowStringWithColor("1. Face ISO chart (far)", 0, 0, CAL_COLOR_MSG);
    //Cal_ShowStringWithColor("2. Press shutter key", 0, 30, CAL_COLOR_MSG);
    KeyScan_SetKeyMask(KEYSCAN_KEYMODE_RELEASE, 0x00);
    KeyScan_SetKeyMask(KEYSCAN_KEYMODE_CONTINUE, 0x00);
    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2 | FLGKEY_ACT_MASK);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW|TWF_CLR);
    //Cal_ClearScreen();
    /*************************************************************/

    Photo_LockAE(1);
    Photo_LockAWB(1);
    Photo_LockFD(1);
    Photo_LockSD(1);
    Photo_WaitPhotoIdle(TRUE, (PHOTO_1ST|PHOTO_2ND|PHOTO_3RD));
    sie_waitVD(1);
    KeyScan_Suspend();

    // Step1. Get zoom and focus BL.
    #if 1
    {
        ide_disable_video(IDE_VIDEOID_1);

        sprintf(str1, "Please wait...");
        //Cal_ShowStringWithColor(str1, 0, 0, CAL_COLOR_MSG);

        IplObj.uiCmd = IPL_CMD_CHG_MODE;
        IplObj.Mode = IPL_MODE_OFF;
        IPL_SetCmd(&IplObj);

        gCalLens_Info.uiLensZoomBL  = CalLens_ZoomBLAdjust();

        sprintf(str1, "zoomBL=%ld", gCalLens_Info.uiLensZoomBL);
        //Cal_ShowStringWithColor(str1, 0, 0, CAL_COLOR_MSG);

        Lens_Init(LENS_INIT_ZOOM_PART1);
        Lens_Init(LENS_INIT_ZOOM_PART2);

        IplObj.uiCmd = IPL_CMD_CHG_MODE;
        IplObj.Mode = IPL_MODE_PREVIEW;
        IPL_SetCmd(&IplObj);

        ide_enable_video(IDE_VIDEOID_1);
    }
    #endif

    for(i=0;i<Lens_Zoom_GetMaxSection();i++)
    {
        // Re-init lens
        {
            ide_disable_video(IDE_VIDEOID_1);

            IplObj.uiCmd = IPL_CMD_CHG_MODE;
            IplObj.Mode = IPL_MODE_OFF;
            IPL_SetCmd(&IplObj);

            Lens_Retract(0);
            TimerDelayMs(500);
            Lens_Init(LENS_INIT_ZOOM_PART1);
            Lens_Init(LENS_INIT_ZOOM_PART2);

            IplObj.uiCmd = IPL_CMD_CHG_MODE;
            IplObj.Mode = IPL_MODE_PREVIEW;
            IPL_SetCmd(&IplObj);

            ide_enable_video(IDE_VIDEOID_1);
        }

        Lens_Zoom_Goto(i+1);

        StartIdx = Lens_Focus_GetZoomTableValue(Lens_Zoom_GetSection(), 1);
        EndIdx   = Lens_Focus_GetZoomTableValue(Lens_Zoom_GetSection(), 0);
        Lens_Focus_Goto(EndIdx);

        Photo_LockAE(1);
        ////WaitAeConverge2(120);

        if(i==0)
            AF_Step=5;
        else
            AF_Step=6;

        UILens_AFPrepare(TRUE);
        ////gCalLens_Info.Far_Focus[i]=AF_SearchFullRange7(StartIdx,EndIdx,AF_Step,&maxVA,&minVA,3,TRUE,FALSE);
        Lens_OnOff(MOTOR_POWER_OFF, 0); // turn off motor power
        UILens_AFPrepare(FALSE);

        //Cal_ClearScreen();
        sprintf(str1, "S=%ld,Far=%ld,VA=%ld", i+1, gCalLens_Info.Far_Focus[i]-130, maxVA);
        //Cal_ShowStringWithColor(str1, 0, 10*(i/2), CAL_COLOR_MSG);

        if(maxVA < 2500 || gCalLens_Info.Far_Focus[i] > (845+130)) //#NT#2011/01/14#Chris Chung
        {
            debug_msg("bFocusNG: maxVA=%d, Far_Focus[%d]=%d\r\n", maxVA, gCalLens_Info.Far_Focus[i]);
            bFocusNG = TRUE;
        }
    }

    if(bFocusNG)
        gCalLens_Info.bFarAdjust = FALSE;
    else
        gCalLens_Info.bFarAdjust = TRUE;

    CalLens_WriteCalData();
    KeyScan_Resume();

    /************************************************************/
    //Cal_ClearScreen();
    //if(bFocusNG)
    //    Cal_ShowStringWithColor("1. Adjust NG (far)", 0, 0, CAL_COLOR_NG);
    //else
    //    Cal_ShowStringWithColor("1. Adjust done (far)", 0, 0, CAL_COLOR_OK);
    //Cal_ShowStringWithColor("2. Press left key to leave", 0, 30, CAL_COLOR_MSG);
    clr_flg(FLG_ID_KEY, FLGKEY_LEFT);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_LEFT, TWF_ORW|TWF_CLR);
    /*************************************************************/

    if(bFocusNG)
        return CALLENS_STA_FAIL;
    else
        return CALLENS_STA_OK;
}
Esempio n. 19
0
void UI_UpdateCfgFile(void)
{
#if 0
    UINT32      uiKeyAct, uiKeyCode;
    FLGPTN     uiFlag;
#endif
    char*       str;
    FST_FILE    pFile;
    UINT32      uiFileSize;
    UINT8       *BgBuf;
    char        *fileName;
    URECT       Rect = {0, 0, 320, 240};
    BOOL        Ret  =TRUE ;
    ER          erReturn;

    PSTORE_SECTION_HANDLE* pSecHdl; // to save the handle of PStore section

    fileName = "A:\\NTCONFIG.bin";

    FileSys_WaitFinish();
    pFile = FileSys_OpenFile(fileName, FST_OPEN_READ);

    if (pFile == NULL)
    {
        debug_err(("open file error\r\n"));
        Ret  =FALSE;
    }

    uiFileSize = FileSys_GetFileLen(fileName);  // for small page nand
    USE_MSG(("file size = %d\r\n",uiFileSize));

    //if file is null
    if (uiFileSize == 0)
    {
        USE_MSG(("file size is 0\r\n"));
        Ret  =FALSE;
    }

    if (uiFileSize > CFG_MAX_FILESIZE)
    {
        USE_MSG(("file size is bigger = %d\r\n",uiFileSize));
        Ret  =FALSE;
    }

    //get_blk((void *)&BgBuf,  POOL_ID_SICD);
    //rel_blk(POOL_ID_SICD, BgBuf);
    //SysGetSICDAddr((UINT32*)&BgBuf);
    BgBuf = (UINT8 *)OS_GetMempoolAddr(POOL_ID_APP);
    if (FileSys_ReadFile(pFile,BgBuf,&uiFileSize,FST_FLAG_NONE,NULL)!=FST_STA_OK)
    {
        USE_MSG(("file read failed\r\n"));
        Ret  =FALSE;
    }

    FileSys_CloseFile(pFile);

    *BgBuf = LO_BYTE(LO_WORD(uiFileSize));
    *(BgBuf+1) = HI_BYTE(LO_WORD(uiFileSize));
    *(BgBuf+2) = LO_BYTE(HI_WORD(uiFileSize));
    *(BgBuf+3) = HI_BYTE(HI_WORD(uiFileSize));

    //PStore_EnablePS();
    pSecHdl = PStore_OpenSection(PS_BG_CFG, PS_RDWR | PS_CREATE);

    if (pSecHdl == E_PS_SECHDLER)
    {
        debug_err(("Section open fail\r\n"));
        PStore_CloseSection(pSecHdl);
        //PStore_DisablePS();
        Ret  =FALSE;
    }

    erReturn = PStore_WriteSection(BgBuf, 0, SYSPARAM_SYSFLAG_LEN, pSecHdl);

    PStore_CloseSection(pSecHdl);

    if (erReturn != E_PS_OK)
    {
        debug_err(("PStore program error\r\n"));
        Ret  =FALSE;
    }


    Cal_FillRect(&Rect, _OSD_INDEX_BLACK);

    Rect.x   = 56;
    Rect.y   = 108;
    Rect.w   = 212;
    Rect.h   = 24;

    if (Ret  == FALSE)
    {
        str =  "Update Cfg file error";
        Cal_ShowStringByColor(str, &Rect, _OSD_INDEX_YELLOW, _OSD_INDEX_BLACK);
    }else
    {
        str = "Update Cfg file ok";
        Cal_ShowStringByColor(str, &Rect, _OSD_INDEX_YELLOW, _OSD_INDEX_BLACK);
    }

    Delay_DelayMs(1000);

    if (Ret)
    {
       System_PowerOff(SYS_POWEROFF_NORMAL);
    }

#if 0

    clr_flg(FLG_ID_CALIBRATION, 0xffffffff);
    while (1)
    {
        wai_flg(&uiFlag, FLG_ID_CALIBRATION, 0xffffffff, TWF_ORW | TWF_CLR);

        debug_msg("^GuiFlag:%x\r\n",uiFlag);
        if (uiFlag)
            break;
    }
#else
    Delay_DelayMs(1500);
#endif
}
Esempio n. 20
0
void GPSRecTsk(void)
{
    CHAR      cLen;
    USHORT    CheckSentenceType1, CheckSentenceType2;
    UINT32    CheckSentenceType3;
    CHAR      RecSentence[NMEA_SENTENCE_SIZE];
    CHAR      *pSentenceData;
    CHAR      *ptrGPSData;

    debug_msg("Enter GPS Receive task\r\n");
    ptrTmpGPSData = pGPSLogAddr;
    clr_flg(FLG_ID_GPS, GPS_FLAG_DATAVALID);

    while(1)
    {

        cLen = NMEA_SENTENCE_SIZE ;
        #if (RECEIVE_FROM_UART2)
        if (uart2_getString(RecSentence, &cLen) == E_PAR)
        #else
        if (uart_getString(RecSentence, &cLen) == E_PAR)
        #endif
            debug_err(("UART2: parameter error!\r\n"));


        //Each NMEA sentence begins with '$' (0x24)
        if (RecSentence[0] == 0x24)
        {
            pSentenceData = RecSentence;
            CheckSentenceType1 = *(USHORT *)(pSentenceData + 2);
            CheckSentenceType2 = *(USHORT *)(pSentenceData + 4);
            CheckSentenceType3 = ((UINT)CheckSentenceType2 << 16) | (UINT)CheckSentenceType1;

            switch(CheckSentenceType3)
            {
            case GSA_SENTENCE:
                //NMEASentence.GSA = RecSentence;
                //GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GSA);
                break;

            case RMC_SENTENCE:
                // verify address to avoid buffer overflow !!
                if (bzLogGPS == TRUE)
                {
                    // get g-sensor axis data
                    //gsensor_GetData(&GS_Data);
                    ptrTmpGPSData = (CHAR *)GPSRec_VerifyBufAddr((UINT32)ptrTmpGPSData);
                    //ptrTmpGPSData += sprintf(ptrTmpGPSData,"$G&%s;$S&\r\n",&RecSentence[1]);
                    ptrTmpGPSData += sprintf(ptrTmpGPSData,"$%s\r\n",&RecSentence[1]);					
			 //ptrTmpGPSData = pGPSLogAddr;
			 //sprintf(ptrTmpGPSData,"$G&%s;$S&\r\n",&RecSentence[1]);
                }
                NMEASentence.RMC = RecSentence;
                NMEA_debug(("%s\r\n",RecSentence));
				
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, RMC);
                break;

            case GGA_SENTENCE:
                //NMEASentence.GGA = RecSentence;
                //GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GGA);
                break;

            case GSV_SENTENCE:
                //NMEASentence.GSV = RecSentence;
                //GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GSV);
                break;

            case GLL_SENTENCE:
                //NMEASentence.GLL = RecSentence;
                //GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GLL);
                break;

            case VTG_SENTENCE:
                //NMEASentence.VTG = RecSentence;
                //GPSRec_NMEAParser(RecSentence, (UINT32)cLen, VTG);
                break;
            case ZDA_SENTENCE:
               GPS_debug(("#ZDA.... \r\n"));				
		   break;
            default:
                debug_err(("GPS: Can't identify this sentence 0x%X \r\n",CheckSentenceType3));
                break;
            }


        }




    }

}
Esempio n. 21
0
/* Returns 0 on error and 1 on success. */
static unsigned int MMCSDXferStatusGet(mmcsdCtrlInfo *ctrl)
{
  unsigned int          status  = 0; /* Assume fail?????? */
//  volatile unsigned int timeOut = 0xFFFF;
  volatile unsigned int timeOut = 1000;
#if DEBUG_PRINT
  volatile unsigned int timeOut2 = 30;
#endif

#if DEBUG_PRINT
//  UARTprintf("%s():dmaEnable=%d,dmaIsRunning=%d\r\n",
//             __FUNCTION__, ctrl->dmaEnable, dmaIsRunning);
	syslog(LOG_ERROR, "%s():dmaEnable=%d,dmaIsRunning=%d", __FUNCTION__, ctrl->dmaEnable, dmaIsRunning);
#endif

#if DEBUG_PRINT
  /* Wait for these flags what will be modified by the MMCSDIsr() */
  UARTprintf("0x%08x\r\n", intrStatus);
  while ((xferCompFlag == 0) && (dataTimeout == 0) && (dataCRCError==0))
  {
    UARTprintf("0x%08x\r\n", intrStatus);
    if(--timeOut2==0)
    {
      /* WARNING: This will clear the status register. No IRQs after this. */
      intrStatus = MMCSDIntrStatusGetAndClr(ctrl->memBase);
      UARTprintf("0x%08x ACTUAL, GIVE UP\r\n", intrStatus);
      break;
    }
    delay(1000);
  }

  intrStatus = MMCSDIntrStatusGetAndClr(ctrl->memBase);
  UARTprintf("intrStatus = 0x%08x\r\n", intrStatus);
  intrStatus = 0;
#else

  FLGPTN flgptn, waiptn;
  ER ercd;

  /* Wait for these flags what will be modified by the MMCSDIsr() */
  //while ((xferCompFlag == 0) && (dataTimeout == 0) && (dataCRCError==0));
#if defined(DEBUG) && 0
  syslog(LOG_ERROR, "%s(): wai_flg(MMCSD_ISR_FLGPTN_XFERCOMP | MMCSD_ISR_FLGPTN_DATATIMEOUT | MMCSD_ISR_FLGPTN_DATACRCERR)", __FUNCTION__);
#endif
  waiptn = MMCSD_ISR_FLGPTN_XFERCOMP | MMCSD_ISR_FLGPTN_DATATIMEOUT | MMCSD_ISR_FLGPTN_DATACRCERR;
  ercd = wai_flg(MMCSD_ISR_FLG, waiptn, TWF_ORW, &flgptn);
  assert(ercd == E_OK);
#if defined(DEBUG) && 0
  syslog(LOG_ERROR, "%s(): clr_flg(MMCSD_ISR_FLG, ~0x%x)", __FUNCTION__, waiptn & flgptn);
#endif
  ercd = clr_flg(MMCSD_ISR_FLG, ~(waiptn & flgptn));
  assert(ercd == E_OK);
#endif

  //if (xferCompFlag)
  if (flgptn & MMCSD_ISR_FLGPTN_XFERCOMP)
  {
    status = 1;
//    xferCompFlag = 0;
  }

  //if (dataTimeout)
  if (flgptn & MMCSD_ISR_FLGPTN_DATATIMEOUT)
  {
    status = 0;
//    dataTimeout = 0;
  }

  //if (dataCRCError)
  if (flgptn & MMCSD_ISR_FLGPTN_DATACRCERR)
  {
#if DEBUG_PRINT
    UARTprintf("%s():IGNORE CRC ERROR\r\n", __FUNCTION__);
#endif
    status = 1; /* Ignore!! */
//    dataCRCError = 0;
    assert(false);
  }

  /*TODO: How to stop DMA if timeout? Should I wait? */

  /* Wait for DMA ISR to complete. Flag modified by DMA ISR callback() */
#if defined(DEBUG) && 0
  syslog(LOG_ERROR, "%s(): wai_flg(MMCSD_ISR_FLGPTN_DMACOMP)", __FUNCTION__);
#endif
  waiptn = MMCSD_ISR_FLGPTN_DMACOMP;
  ercd = twai_flg(MMCSD_ISR_FLG, waiptn, TWF_ORW, &flgptn, timeOut);
  assert(ercd == E_OK);
  if (ercd != E_OK) { // For debug
	  syslog(LOG_ERROR, "Wait MMCSD_ISR_FLGPTN_DMACOMP failed.");
	  while(1) {
		  syslog(LOG_ERROR, "AINTC.SRSR1: 0x%08x", AINTC.SRSR1);
		  syslog(LOG_ERROR, "AINTC.SECR1: 0x%08x", AINTC.SECR1);
		  syslog(LOG_ERROR, "AINTC.ESR1: 0x%08x", AINTC.ESR1);
		  syslog(LOG_ERROR, "EDMA3_CC0.IPR: 0x%08x", EDMA3_CC0.IPR);
		  syslog(LOG_ERROR, "EDMA3_CC0.IER: 0x%08x", EDMA3_CC0.IER);
		  syslog(LOG_ERROR, "EDMA3_CC0.IEVAL: 0x%08x", EDMA3_CC0.IEVAL);
		  syslog(LOG_ERROR, "EDMA3_CC0.EEVAL: 0x%08x", EDMA3_CC0.EEVAL);
		  syslog(LOG_ERROR, "EDMA3_CC0.CCERR: 0x%08x", EDMA3_CC0.CCERR);
		  //syslog(LOG_ERROR, "EDMA3_TC0.ERRSTAT: 0x%08x", EDMA3_TC0.ERRSTAT);
		  //syslog(LOG_ERROR, "EDMA3_TC1.ERRSTAT: 0x%08x", EDMA3_TC1.ERRSTAT);
		  //syslog(LOG_ERROR, "EDMA3_TC2.ERRSTAT: 0x%08x", EDMA3_TC2.ERRSTAT);
		  syslog(LOG_ERROR, "MMCST0: 0x%08x", MMCSDIntrStatusGetAndClr(ctrlInfo.memBase));
		  syslog(LOG_ERROR, "MMCST1: 0x%08x", MMCSD0.MMCST1);
		  tslp_tsk(1000);
	  }
  }
#if defined(DEBUG) && 0
  syslog(LOG_ERROR, "%s(): clr_flg(MMCSD_ISR_FLG, ~0x%x)", __FUNCTION__, waiptn & flgptn);
#endif
  ercd = clr_flg(MMCSD_ISR_FLG, ~(waiptn & flgptn));
  assert(ercd == E_OK);
//  while(dmaIsRunning)
//  {
//    if(--timeOut == 0)
//    {
//    	assert(false); // TODO: DMA should never timeout! -- ertl-liyixiao
//      status = 0;
//      break;
//    }
//  }

  ctrl->dmaEnable = 0;

#if DEBUG_PRINT
//  UARTprintf("%s():status=%d\r\n", __FUNCTION__, status);
	syslog(LOG_ERROR, "%s():return with status=%d\r\n", __FUNCTION__, status);
#endif

  return(status);
}
Esempio n. 22
0
/*
 * Check command status
 * status = 0 on error and 1 on success.
 */
static unsigned int MMCSDCmdStatusGet(mmcsdCtrlInfo *ctrl)
{
  unsigned int status = 0;
#if DEBUG_PRINT
  volatile unsigned int timeOut2 = 5;
#endif

#if DEBUG_PRINT
  UARTprintf("%s()\r\n", __FUNCTION__);
#endif

#if DEBUG_PRINT
  /* Wait for these flags what will be modified by the MMCSDIsr() */
  UARTprintf("0x%08x\r\n", intrStatus);
  while ((cmdCompFlag == 0) && (cmdTimeout == 0))
  {
    UARTprintf("0x%08x\r\n", intrStatus);
    if(--timeOut2==0)
    {
      /* WARNING: This will clear the status register. No IRQs after this. */
      intrStatus = MMCSDIntrStatusGetAndClr(ctrl->memBase);
      UARTprintf("0x%08x ACTUAL, GIVE UP\r\n", intrStatus);
      break;
    }
    delay(1000);
  }
  intrStatus = 0;
#else

  FLGPTN flgptn, waiptn;
  ER ercd;

  /* Wait for these flags what will be modified by the MMCSDIsr() */
//  while ((cmdCompFlag == 0) && (cmdTimeout == 0))
//    continue;
#if defined(DEBUG) && 0
  syslog(LOG_ERROR, "%s(): wai_flg(MMCSD_ISR_FLGPTN_CMDCOMP | MMCSD_ISR_FLGPTN_CMDTIMEOUT)", __FUNCTION__);
#endif
  waiptn = MMCSD_ISR_FLGPTN_CMDCOMP | MMCSD_ISR_FLGPTN_CMDTIMEOUT;
  ercd = wai_flg(MMCSD_ISR_FLG, waiptn, TWF_ORW, &flgptn);
  assert(ercd == E_OK);
#if defined(DEBUG) && 0
  syslog(LOG_ERROR, "%s(): clr_flg(MMCSD_ISR_FLG, ~0x%x)", __FUNCTION__, waiptn & flgptn);
#endif
  ercd = clr_flg(MMCSD_ISR_FLG, ~(waiptn & flgptn));
  assert(ercd == E_OK);
#endif
//  if (cmdCompFlag)
  if (flgptn & MMCSD_ISR_FLGPTN_CMDCOMP)
  {
    status = 1;
//    cmdCompFlag = 0;
  } else

//  if (cmdTimeout)
  if (flgptn & MMCSD_ISR_FLGPTN_CMDTIMEOUT)
  {
	  syslog(LOG_ERROR, "%s(): cmdTimeout!!", __FUNCTION__);
    status = 0;
//    cmdTimeout = 0;
  }

#if DEBUG_PRINT
  UARTprintf("%s():status=%d\r\n", __FUNCTION__, status);
#endif

  return(status);
}
Esempio n. 23
0
void
task1(intptr_t exinf)
{
	ER_UINT	ercd;
	T_RFLG	rflg;
	FLGPTN	flgptn;

	test_start(__FILE__);

	check_point(1);
	ercd = ref_flg(FLG1, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x00);

	ercd = ref_flg(FLG2, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x01);

	check_point(2);
	ercd = loc_cpu();
	check_ercd(ercd, E_OK);

	ercd = set_flg(FLG1, 0x01);
	check_ercd(ercd, E_CTX);

	ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
	check_ercd(ercd, E_CTX);

	ercd = unl_cpu();
	check_ercd(ercd, E_OK);

	ercd = dis_dsp();
	check_ercd(ercd, E_OK);

	ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
	check_ercd(ercd, E_CTX);

	ercd = ena_dsp();
	check_ercd(ercd, E_OK);

	ercd = chg_ipm(TMAX_INTPRI);
	check_ercd(ercd, E_OK);

	ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
	check_ercd(ercd, E_CTX);

	ercd = chg_ipm(TIPM_ENAALL);
	check_ercd(ercd, E_OK);

	ercd = set_flg(0, 0x01);
	check_ercd(ercd, E_ID);

	ercd = wai_flg(0, 0x01, TWF_ORW, &flgptn);
	check_ercd(ercd, E_ID);

	ercd = set_flg(TNUM_FLGID+1, 0x01);
	check_ercd(ercd, E_ID);

	ercd = wai_flg(TNUM_FLGID+1, 0x01, TWF_ORW, &flgptn);
	check_ercd(ercd, E_ID);

	ercd = wai_flg(FLG1, 0x00, TWF_ORW, &flgptn);
	check_ercd(ercd, E_PAR);

	ercd = wai_flg(FLG1, 0x01, 0U, &flgptn);
	check_ercd(ercd, E_PAR);

	ercd = wai_flg(FLG1, 0x01, (TWF_ORW|TWF_ANDW), &flgptn);
	check_ercd(ercd, E_PAR);

	ercd = set_flg(FLG1, 0x00);
	check_ercd(ercd, E_OK);

	ercd = ref_flg(FLG1, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x00);

	ercd = set_flg(FLG1, 0x01);
	check_ercd(ercd, E_OK);

	ercd = ref_flg(FLG1, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x01);

	ercd = set_flg(FLG1, 0x01);
	check_ercd(ercd, E_OK);

	ercd = ref_flg(FLG1, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x01);

	ercd = set_flg(FLG1, 0x02);
	check_ercd(ercd, E_OK);

	ercd = ref_flg(FLG1, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x03);

	ercd = clr_flg(FLG1, ~0x01);
	check_ercd(ercd, E_OK);

	ercd = set_flg(FLG1, 0x03);
	check_ercd(ercd, E_OK);

	ercd = ref_flg(FLG1, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x03);

	check_point(3);
	ercd = act_tsk(TASK2);
	check_ercd(ercd, E_OK);

	check_point(6);
	ercd = set_flg(FLG1, 0x04);
	check_ercd(ercd, E_OK);

	check_point(9);
	ercd = dis_dsp();
	check_ercd(ercd, E_OK);

	ercd = set_flg(FLG1, 0x08);
	check_ercd(ercd, E_OK);

	ercd = ref_flg(FLG1, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x0f);

	check_point(10);
	ercd = ena_dsp();
	check_ercd(ercd, E_OK);

	check_point(13);
	ercd = chg_ipm(TMAX_INTPRI);
	check_ercd(ercd, E_OK);

	ercd = set_flg(FLG2, 0x04);
	check_ercd(ercd, E_OK);

	ercd = ref_flg(FLG2, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x00);

	check_point(14);
	ercd = chg_ipm(TIPM_ENAALL);
	check_ercd(ercd, E_OK);

	check_point(17);
	ercd = sus_tsk(TASK2);
	check_ercd(ercd, E_OK);

	ercd = set_flg(FLG2, 0x04);
	check_ercd(ercd, E_OK);

	ercd = ref_flg(FLG2, &rflg);
	check_ercd(ercd, E_OK);

	check_assert(rflg.wtskid == TSK_NONE);

	check_assert(rflg.flgptn == 0x00);

	check_point(18);
	ercd = rsm_tsk(TASK2);
	check_ercd(ercd, E_OK);

	check_point(21);
	ercd = wai_flg(FLG2, 0x02, TWF_ORW, &flgptn);
	check_ercd(ercd, E_ILUSE);

	ercd = set_flg(FLG2, 0x02);
	check_ercd(ercd, E_OK);

	ercd = wai_flg(FLG2, 0x02, TWF_ORW, &flgptn);
	check_ercd(ercd, E_ILUSE);

	check_point(22);
	ercd = set_flg(FLG2, 0x01);
	check_ercd(ercd, E_OK);

	check_point(25);
	ercd = wai_flg(FLG3, 0x01, TWF_ORW, &flgptn);
	check_ercd(ercd, E_OK);

	check_point(31);
	ercd = wai_flg(FLG4, 0x01, TWF_ORW, &flgptn);
	check_ercd(ercd, E_OK);

	check_point(37);
	ercd = clr_flg(FLG3, 0);
	check_ercd(ercd, E_OK);

	ercd = sta_alm(ALM1, 2 * TEST_TIME_CP);
	check_ercd(ercd, E_OK);

	check_point(38);
	ercd = wai_flg(FLG3, 0x01, TWF_ORW, &flgptn);
	check_ercd(ercd, E_OK);

	check_point(42);
	ercd = set_flg(FLG3, 0x02);
	check_ercd(ercd, E_OK);

	check_point(43);
	ercd = slp_tsk();
	check_ercd(ercd, E_OK);

	check_point(0);
}
Esempio n. 24
0
void GPSRec_NMEAParser(CHAR *NMEA_str, UINT32 Len, NMEATYPE NMEAtype)
{
  UINT32 i;

    pPostPrt = PostPtr;
    PostPtrLen = Len;

    GPSRec_TransformData(NMEA_str, Len, pPostPrt, &PostPtrLen);
    switch(NMEAtype)
    {
    case GSA:
        sscanf(pPostPrt, "%s %c %d %d %d %d %d %d %d %d %d %d %d %d %d %lf %lf %lf %X\n", type, &SelMode, &FixMode, &SatUsed01, &SatUsed02, &SatUsed03, &SatUsed04, &SatUsed05, &SatUsed06, &SatUsed07, &SatUsed08, &SatUsed09, &SatUsed10, &SatUsed11, &SatUsed12, &PDOP, &HDOP, &VDOP, &CheckSum);
        #if (_GPS_CheckSum_Enable)
            GPSRec_CheckSum(NMEA_str, Len, CheckSum);
        #endif
        if (FixMode != No_Fix)
        {
            GSAInfo.SelMode = SelMode;
            GSAInfo.FixMode = FixMode;
            GSAInfo.SatUsed01 = SatUsed01;
            GSAInfo.SatUsed02 = SatUsed02;
            GSAInfo.SatUsed03 = SatUsed03;
            GSAInfo.SatUsed04 = SatUsed04;
            GSAInfo.SatUsed05 = SatUsed05;
            GSAInfo.SatUsed06 = SatUsed06;
            GSAInfo.SatUsed07 = SatUsed07;
            GSAInfo.SatUsed08 = SatUsed08;
            GSAInfo.SatUsed09 = SatUsed09;
            GSAInfo.SatUsed10 = SatUsed10;
            GSAInfo.SatUsed11 = SatUsed11;
            GSAInfo.SatUsed12 = SatUsed12;
            GSAInfo.PDOP = PDOP;
            GSAInfo.HDOP = HDOP;
            GSAInfo.VDOP = VDOP;
            GPS_debug(("#GSA SelMode = %c, FixMode = %d \r\n",GSAInfo.SelMode,GSAInfo.FixMode));
            GPS_debug(("#GSA SelMode = %c, FixMode = %d \r\n",GSAInfo.SelMode,GSAInfo.FixMode));
            GPS_debug(("#GSA SatUsed1 = %d, %d, %d, %d \r\n",GSAInfo.SatUsed01,GSAInfo.SatUsed02, GSAInfo.SatUsed03, GSAInfo.SatUsed04));
            GPS_debug(("#GSA SatUsed2 = %d, %d, %d, %d \r\n",GSAInfo.SatUsed05,GSAInfo.SatUsed06, GSAInfo.SatUsed07, GSAInfo.SatUsed08));
            GPS_debug(("#GSA SatUsed3 = %d, %d, %d, %d \r\n",GSAInfo.SatUsed09,GSAInfo.SatUsed10, GSAInfo.SatUsed11, GSAInfo.SatUsed12));
            GPS_debug(("#PDOP = %.1f, HDOP = %.1f, VDOP = %.1f CheckSum = %X\r\n",GSAInfo.PDOP,GSAInfo.HDOP, GSAInfo.VDOP,CheckSum));
        }
        if (Len)
        {
            for (i = 0; i < Len; i++)
                NMEA_debug(("%c",*NMEA_str++));
        }
        NMEA_debug(("\r\n"));

        //Check processed sentence
        /*
        if (PostPtrLen)
        {
            for (i = 0; i < PostPtrLen; i++)
                NMEA_debug(("%c",*pPostPrt++));
        }
        NMEA_debug(("\r\n"));
        */
        break;

    case RMC:
        sscanf(pPostPrt, "%s %lf %c %lf %c %lf %c %lf %lf %d %lf %c %X\n", type, &UTCTime, &Status, &Lat, &NSInd, &Lon, &EWInd, &Speed, &Angle, &Date, &MagVar, &MagVarInd, &CheckSum);
        #if (_GPS_CheckSum_Enable)
            GPSRec_CheckSum(NMEA_str, Len, CheckSum);
        #endif

            RMCInfo.Hour =      (UINT32)UTCTime / 10000;
            RMCInfo.Minute =    ((UINT32)UTCTime % 10000) / 100;
            RMCInfo.Second =    ((UINT32)UTCTime % 100);
            RMCInfo.Status =    Status;
            RMCInfo.Latitude =  Lat;
            RMCInfo.NSInd =     NSInd;
            RMCInfo.Longitude = Lon;
            RMCInfo.EWInd =     EWInd;
            RMCInfo.Speed =     Speed;
            RMCInfo.Angle =     Angle;
            RMCInfo.Day =       Date / 10000;
            RMCInfo.Month =     (Date % 10000) / 100;
            RMCInfo.Year =      (Date % 100);
        if (Status == 'A')   //Data valid
        {
            set_flg(FLG_ID_GPS, GPS_FLAG_DATAVALID);

            GPS_debug(("\x1b[34m"));   //Blue
            GPS_debug(("#RMC: Status = %c, Speed = %.1f, Angle = %.1f \r\n",RMCInfo.Status,RMCInfo.Speed,RMCInfo.Angle));
            GPS_debug(("#RMC: Date = %d\\%d\\%d CheckSum = %X\r\n",RMCInfo.Year,RMCInfo.Month,RMCInfo.Day,CheckSum));
            GPS_debug(("\x1b[30m"));   //Black
        }
        else if (Status == 'V')
        {
            clr_flg(FLG_ID_GPS, GPS_FLAG_DATAVALID);
        }
        NMEA_debug(("\x1b[34m"));   //Blue
        if (Len)
        {
            for (i = 0; i < Len; i++)
                NMEA_debug(("%c",*NMEA_str++));
        }
        NMEA_debug(("\r\n"));
        //Check processed sentence
        /*
        if (PostPtrLen)
        {
            for (i = 0; i < PostPtrLen; i++)
                NMEA_debug(("%c",*pPostPrt++));
        }
        NMEA_debug(("\r\n"));
        */
        NMEA_debug(("\x1b[30m"));   //Black

        break;

    case GGA:

        sscanf(pPostPrt, "%s %lf %lf %c %lf %c %d %d %lf %lf %c %lf %c %d %d %X\n", type, &UTCTime, &Lat, &NSInd, &Lon, &EWInd, &PosFixInd, &SatNumber, &HDOP, &Alt, &M1, &MSL, &M2, &Empty1, &Empty2, &CheckSum);
        #if (_GPS_CheckSum_Enable)
            GPSRec_CheckSum(NMEA_str, Len, CheckSum);
        #endif

        if (PosFixInd == 1)  //Data valid
        {
            GGAInfo.Hour = (UINT32)UTCTime / 10000;
            GGAInfo.Minute = ((UINT32)UTCTime % 10000) / 100;
            GGAInfo.Second = ((UINT32)UTCTime % 100);
            GGAInfo.Latitude = Lat;
            GGAInfo.NSInd = NSInd;
            GGAInfo.Longitude = Lon;
            GGAInfo.EWInd = EWInd;
            GGAInfo.PosFixInd = PosFixInd;
            GGAInfo.SatNumber = SatNumber;
            GGAInfo.HDOP = HDOP;
            GGAInfo.Altitude = Alt;
            GGAInfo.MSL = MSL;
            GPS_debug(("\x1b[31m"));   //Red
            GPS_debug(("#GGA: Time = %d:%d:%d CheckSum = %X\r\n", GGAInfo.Hour, GGAInfo.Minute, GGAInfo.Second,CheckSum));
            GPS_debug(("#GGA: Lat = %1f %c, Lon = %1f %c \r\n", GGAInfo.Latitude, NSInd, GGAInfo.Longitude, EWInd));
            GPS_debug(("#GGA: PosFixInd = %d, SatNum = %d, HDOP = %2.1f, Alt = %.1f, MSL = %.1f \r\n", GGAInfo.PosFixInd, GGAInfo.SatNumber, GGAInfo.HDOP, GGAInfo.Altitude, GGAInfo.MSL));
            GPS_debug(("\x1b[30m"));   //Black

        }

        NMEA_debug(("\x1b[31m"));   //Red
        if (Len)
        {
            for (i = 0; i < Len; i++)
                NMEA_debug(("%c",*NMEA_str++));
        }
        NMEA_debug(("\r\n"));

        //Check processed sentence
        /*
        if (PostPtrLen)
        {
            for (i = 0; i < PostPtrLen; i++)
                NMEA_debug(("%c",*pPostPrt++));
        }
        NMEA_debug(("\r\n"));
        */
        NMEA_debug(("\x1b[30m"));   //Black

        break;

    case GSV:
        sscanf(pPostPrt, "%s %d %d %d %s\n", type, &NumOfSen, &SenNum, &SatInView, RemainStr);
        if (NumOfSen == SenNum)
        {
            if ((SatInView % 4) == 1)
                sscanf(pPostPrt, "%s %d %d %d %d %d %d %d %X\n", type, &NumOfSen, &SenNum, &SatInView, &SatNum1, &Elev1, &Azi1, &SNR1, &CheckSum);
            else if ((SatInView % 4) == 2)
                sscanf(pPostPrt, "%s %d %d %d %d %d %d %d %d %d %d %d %X\n", type, &NumOfSen, &SenNum, &SatInView, &SatNum1, &Elev1, &Azi1, &SNR1, &SatNum2, &Elev2, &Azi2, &SNR2, &CheckSum);
            else if ((SatInView % 4) == 3)
                sscanf(pPostPrt, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %X\n", type, &NumOfSen, &SenNum, &SatInView, &SatNum1, &Elev1, &Azi1, &SNR1, &SatNum2, &Elev2, &Azi2, &SNR2, &SatNum3, &Elev3, &Azi3, &SNR3, &CheckSum);
            else
                sscanf(pPostPrt, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %X\n", type, &NumOfSen, &SenNum, &SatInView, &SatNum1, &Elev1, &Azi1, &SNR1, &SatNum2, &Elev2, &Azi2, &SNR2, &SatNum3, &Elev3, &Azi3, &SNR3, &SatNum4, &Elev4, &Azi4, &SNR4, &CheckSum);
        }
        else
            sscanf(pPostPrt, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %X\n", type, &NumOfSen, &SenNum, &SatInView, &SatNum1, &Elev1, &Azi1, &SNR1, &SatNum2, &Elev2, &Azi2, &SNR2, &SatNum3, &Elev3, &Azi3, &SNR3, &SatNum4, &Elev4, &Azi4, &SNR4, &CheckSum);

        #if (_GPS_CheckSum_Enable)
            GPSRec_CheckSum(NMEA_str, Len, CheckSum);
        #endif

        if (SenNum == 1)   //GSV1
        {
            GSVInfo.NumOfSen =     NumOfSen;
            GSVInfo.SatInView =    SatInView;
            GSVInfo.SAT01.SatNum = SatNum1;
            GSVInfo.SAT01.Elev =   Elev1;
            GSVInfo.SAT01.Azi =    Azi1;
            GSVInfo.SAT01.SNR =    SNR1;
            GSVInfo.SAT02.SatNum = SatNum2;
            GSVInfo.SAT02.Elev =   Elev2;
            GSVInfo.SAT02.Azi =    Azi2;
            GSVInfo.SAT02.SNR =    SNR2;
            GSVInfo.SAT03.SatNum = SatNum3;
            GSVInfo.SAT03.Elev =   Elev3;
            GSVInfo.SAT03.Azi =    Azi3;
            GSVInfo.SAT03.SNR =    SNR3;
            GSVInfo.SAT04.SatNum = SatNum4;
            GSVInfo.SAT04.Elev =   Elev4;
            GSVInfo.SAT04.Azi =    Azi4;
            GSVInfo.SAT04.SNR =    SNR4;
            GPS_debug(("\x1b[35m"));   //Violet
            GPS_debug(("#GSV%d SatInView = %d, CheckSum = %X\r\n",SenNum, SatInView, CheckSum));
            GPS_debug(("#GSV%d Sat1 = %d, %d, %d, %d, Sat2 = %d, %d, %d, %d\r\n",SenNum, SatNum1, Elev1, Azi1, SNR1, SatNum2, Elev2, Azi2, SNR2));
            GPS_debug(("#GSV%d Sat3 = %d, %d, %d, %d, Sat4 = %d, %d, %d, %d\r\n",SenNum, SatNum3, Elev3, Azi3, SNR3, SatNum4, Elev4, Azi4, SNR4));
            GPS_debug(("\x1b[30m"));      //Black

        }
        else if (SenNum == 2)   //GSV2
        {
            GSVInfo.NumOfSen =     NumOfSen;
            GSVInfo.SatInView =    SatInView;
            GSVInfo.SAT05.SatNum = SatNum1;
            GSVInfo.SAT05.Elev =   Elev1;
            GSVInfo.SAT05.Azi =    Azi1;
            GSVInfo.SAT05.SNR =    SNR1;
            GSVInfo.SAT06.SatNum = SatNum2;
            GSVInfo.SAT06.Elev =   Elev2;
            GSVInfo.SAT06.Azi =    Azi2;
            GSVInfo.SAT06.SNR =    SNR2;
            GSVInfo.SAT07.SatNum = SatNum3;
            GSVInfo.SAT07.Elev =   Elev3;
            GSVInfo.SAT07.Azi =    Azi3;
            GSVInfo.SAT07.SNR =    SNR3;
            GSVInfo.SAT08.SatNum = SatNum4;
            GSVInfo.SAT08.Elev =   Elev4;
            GSVInfo.SAT08.Azi =    Azi4;
            GSVInfo.SAT08.SNR =    SNR4;
            GPS_debug(("\x1b[35m"));   //Violet
            GPS_debug(("#GSV%d SatInView = %d, CheckSum = %X\r\n",SenNum, SatInView, CheckSum));
            GPS_debug(("#GSV%d Sat5 = %d, %d, %d, %d, Sat6 = %d, %d, %d, %d\r\n",SenNum, SatNum1, Elev1, Azi1, SNR1, SatNum2, Elev2, Azi2, SNR2));
            GPS_debug(("#GSV%d Sat7 = %d, %d, %d, %d, Sat8 = %d, %d, %d, %d\r\n",SenNum, SatNum3, Elev3, Azi3, SNR3, SatNum4, Elev4, Azi4, SNR4));
            GPS_debug(("\x1b[30m"));      //Black

        }
        else if (SenNum == 3)   //GSV3
        {
            GSVInfo.NumOfSen =     NumOfSen;
            GSVInfo.SatInView =    SatInView;
            GSVInfo.SAT09.SatNum = SatNum1;
            GSVInfo.SAT09.Elev =   Elev1;
            GSVInfo.SAT09.Azi =    Azi1;
            GSVInfo.SAT09.SNR =    SNR1;
            GSVInfo.SAT10.SatNum = SatNum2;
            GSVInfo.SAT10.Elev =   Elev2;
            GSVInfo.SAT10.Azi =    Azi2;
            GSVInfo.SAT10.SNR =    SNR2;
            GSVInfo.SAT11.SatNum = SatNum3;
            GSVInfo.SAT11.Elev =   Elev3;
            GSVInfo.SAT11.Azi =    Azi3;
            GSVInfo.SAT11.SNR =    SNR3;
            GSVInfo.SAT12.SatNum = SatNum4;
            GSVInfo.SAT12.Elev =   Elev4;
            GSVInfo.SAT12.Azi =    Azi4;
            GSVInfo.SAT12.SNR =    SNR4;
            GPS_debug(("\x1b[35m"));   //Violet
            GPS_debug(("#GSV%d SatInView = %d, CheckSum = %X\r\n",SenNum, SatInView, CheckSum));
            GPS_debug(("#GSV%d Sat9 = %d, %d, %d, %d,  Sat10 = %d, %d, %d, %d\r\n",SenNum, SatNum1, Elev1, Azi1, SNR1, SatNum2, Elev2, Azi2, SNR2));
            GPS_debug(("#GSV%d Sat11 = %d, %d, %d, %d, Sat12 = %d, %d, %d, %d\r\n",SenNum, SatNum3, Elev3, Azi3, SNR3, SatNum4, Elev4, Azi4, SNR4));
            GPS_debug(("\x1b[30m"));      //Black

        }
        else
            debug_err(("GPS: Invalid number of GSV"));


        NMEA_debug(("\x1b[35m"));   //Violet
        if (Len)
        {
            for (i = 0; i < Len; i++)
                NMEA_debug(("%c",*NMEA_str++));
        }
        NMEA_debug(("\r\n"));
        //Check processed sentence
        /*
        if (PostPtrLen)
        {
            for (i = 0; i < PostPtrLen; i++)
                NMEA_debug(("%c",*pPostPrt++));
        }
        NMEA_debug(("\r\n"));
        */
        NMEA_debug(("\x1b[30m"));      //Black
        break;
    //Do not support GLL and VTG yet
    case GLL:

        NMEA_debug(("\x1b[36m"));   //Blue
        if (Len)
        {
            for (i = 0; i < Len; i++)
                NMEA_debug(("%c",*NMEA_str++));
        }
        NMEA_debug(("\r\n"));
        NMEA_debug(("\x1b[30m"));   //Black


        break;

    case VTG:

        NMEA_debug(("\x1b[32m"));   //Green
        if (Len)
        {
            for (i = 0; i < Len; i++)
                NMEA_debug(("%c",*NMEA_str++));
        }
        NMEA_debug(("\r\n"));
        NMEA_debug(("\x1b[30m"));   //Black

        break;

    default:

        break;
    }





}
Esempio n. 25
0
UINT32 CalLens_NearFocusAdjust(void)
{
    UINT32  i;
    UINT16  StartIdx, EndIdx;
    //UINT32  ErrorCode=ERRORCODE_OK;
    UINT32  AF_Step;
    UINT32  maxVA=0;//, minVA=0;
    UINT    uiFlag=0;
    char    str1[32];
    BOOL    bFocusNG = FALSE;
    IPL_OBJ IplObj;

    if(!CalLens_IsFarAdjust())
    {
        //Cal_ShowStringWithColor("1. Adjust NG", 0, 0, CAL_COLOR_NG);
        //Cal_ShowStringWithColor("2. Please do AF Far first!", 0, 0, CAL_COLOR_NG);
        return 0;
    }

    ide_enable_video(IDE_VIDEOID_1);
    /************************************************************/
    debug_err(("\n\nPlease let camera facing ISO chart. Then press shutter key\r\n\n"));
    //Cal_ClearScreen();
    //Cal_ShowStringWithColor("1. Face ISO chart (near)", 0, 0, CAL_COLOR_MSG);
    //Cal_ShowStringWithColor("2. Press shutter key", 0, 30, CAL_COLOR_MSG);
    clr_flg(FLG_ID_KEY, FLGKEY_SHUTTER2);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_SHUTTER2, TWF_ORW|TWF_CLR);
    //Cal_ClearScreen();
    /*************************************************************/

    Photo_LockAE(1);
    Photo_LockAWB(1);
    Photo_LockFD(1);
    Photo_LockSD(1);
    Photo_WaitPhotoIdle(TRUE, (PHOTO_1ST|PHOTO_2ND|PHOTO_3RD));
    sie_waitVD(1);
    KeyScan_Suspend();

    for(i=0;i<Lens_Zoom_GetMaxSection();i++)
    {
        // Re-init lens
        {
            ide_disable_video(IDE_VIDEOID_1);

            IplObj.uiCmd = IPL_CMD_CHG_MODE;
            IplObj.Mode = IPL_MODE_OFF;
            IPL_SetCmd(&IplObj);

            Lens_Retract(0);
            TimerDelayMs(500);
            Lens_Init(LENS_INIT_ZOOM_PART1);
            Lens_Init(LENS_INIT_ZOOM_PART2);

            IplObj.uiCmd = IPL_CMD_CHG_MODE;
            IplObj.Mode = IPL_MODE_PREVIEW;
            IPL_SetCmd(&IplObj);

            ide_enable_video(IDE_VIDEOID_1);
        }

        Lens_Zoom_Goto(i+1);

        StartIdx = Lens_Focus_GetZoomTableValue(Lens_Zoom_GetSection(), 1);
        if(CalLens_IsFarAdjust())
            EndIdx = gCalLens_Info.Far_Focus[i] - 3;
        else
            EndIdx   = Lens_Focus_GetZoomTableValue(Lens_Zoom_GetSection(), 0);

        Lens_Focus_Goto(EndIdx);

        Photo_LockAE(1);
        ////WaitAeConverge2(120);

        if(i==0)
            AF_Step=5;
        else
            AF_Step=6;

        UILens_AFPrepare(TRUE);
        ////gCalLens_Info.Near_Focus[i]=AF_SearchFullRange7(StartIdx,EndIdx,AF_Step,&maxVA,&minVA,3,TRUE,FALSE);
        Lens_OnOff(MOTOR_POWER_OFF, 0); // turn off motor power
        UILens_AFPrepare(FALSE);

        //Cal_ClearScreen();
        sprintf(str1, "S=%ld,Near=%ld,VA=%ld", i+1, gCalLens_Info.Near_Focus[i]-130, maxVA);
        //Cal_ShowStringWithColor(str1, 0, 10*(i/2), CAL_COLOR_MSG);

        if(CalLens_IsFarAdjust())
        {
            if(gCalLens_Info.Far_Focus[i] < gCalLens_Info.Near_Focus[i])
                bFocusNG = TRUE;
        }

        if(maxVA < 2500)
        {
            bFocusNG = TRUE;
        }
    }

    if(bFocusNG)
        gCalLens_Info.bNearAdjust = FALSE;
    else
        gCalLens_Info.bNearAdjust = TRUE;

    CalLens_WriteCalData();
    KeyScan_Resume();

    /************************************************************/
    //Cal_ClearScreen();
    //if(bFocusNG)
    //    Cal_ShowStringWithColor("1. Adjust NG (near)", 0, 0, CAL_COLOR_NG);
    //else
    //    Cal_ShowStringWithColor("1. Adjust done (near)", 0, 0, CAL_COLOR_OK);
    //Cal_ShowStringWithColor("2. Press left key to leave", 0, 30, CAL_COLOR_MSG);
    clr_flg(FLG_ID_KEY, FLGKEY_LEFT);
    wai_flg(&uiFlag, FLG_ID_KEY, FLGKEY_LEFT, TWF_ORW|TWF_CLR);
    /*************************************************************/

    if(bFocusNG)
        return CALLENS_STA_FAIL;
    else
        return CALLENS_STA_OK;
}
Esempio n. 26
0
void task1( unsigned int arg )
{
    ER ercd;
    int tests = 0;

    CYG_TEST_INFO( "Task 1 running" );

    ercd = dis_dsp();
    CYG_TEST_CHECK( E_OK == ercd, "dis_dsp bad ercd" );
    ercd = sta_tsk( 2, 22222 );
    CYG_TEST_CHECK( E_OK == ercd, "sta_tsk bad ercd" );
    ercd = chg_pri( 2, 5 );
    CYG_TEST_CHECK( E_OK == ercd, "chg_pri bad ercd" );
    ercd = ena_dsp();
    CYG_TEST_CHECK( E_OK == ercd, "ena_dsp bad ercd" );
    ercd = dly_tsk( 10 );
    CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );

#ifdef CYGPKG_UITRON_SEMAS_CREATE_DELETE
    tests++;
#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
    ercd = del_sem( -6 );
    CYG_TEST_CHECK( E_ID == ercd, "del_sem bad ercd !E_ID" );
    ercd = del_sem( 99 );
    CYG_TEST_CHECK( E_ID == ercd, "del_sem bad ercd !E_ID" );
    ercd = cre_sem( -6, &t_csem );
    CYG_TEST_CHECK( E_ID == ercd, "cre_sem bad ercd !E_ID" );
    ercd = cre_sem( 99, &t_csem );
    CYG_TEST_CHECK( E_ID == ercd, "cre_sem bad ercd !E_ID" );
#endif // we can test bad param error returns
    // try a pre-existing object
    ercd = cre_sem( 3, &t_csem );
    CYG_TEST_CHECK( E_OBJ == ercd, "cre_sem bad ercd !E_OBJ" );
    // delete it so we can play
    ercd = del_sem( 3 );
    CYG_TEST_CHECK( E_OK == ercd, "del_sem bad ercd" );
    // check it is deleted
    ercd = sig_sem( 3 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "sig_sem bad ercd !E_NOEXS" );
    ercd = preq_sem( 3 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "preq_sem bad ercd !E_NOEXS" );
    ercd = twai_sem( 3, 10 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "twai_sem bad ercd !E_NOEXS" );
    ercd = wai_sem( 3 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "wai_sem bad ercd !E_NOEXS" );
    ercd = ref_sem( &t_rsem, 3 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "ref_sem bad ercd !E_NOEXS" );
#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
    // now try creating it (badly)
#ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR
    ercd = cre_sem( 3, NULL );
    CYG_TEST_CHECK( E_PAR == ercd, "cre_sem bad ercd !E_PAR" );
#endif
    ercd = cre_sem( 3, NADR );
    CYG_TEST_CHECK( E_PAR == ercd, "cre_sem bad ercd !E_PAR" );
    t_csem.sematr = 0xfff;
    ercd = cre_sem( 3, &t_csem );
    CYG_TEST_CHECK( E_RSATR == ercd, "cre_sem bad ercd !E_RSATR" );
    t_csem.sematr = 0;
#endif // we can test bad param error returns
    ercd = cre_sem( 3, &t_csem );
    CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );
    // and check we can use it
    ercd = sig_sem( 3 );
    CYG_TEST_CHECK( E_OK == ercd, "sig_sem bad ercd" );
    ercd = wai_sem( 3 );
    CYG_TEST_CHECK( E_OK == ercd, "wai_sem bad ercd" );
    ercd = preq_sem( 3 );
    CYG_TEST_CHECK( E_TMOUT == ercd, "preq_sem bad ercd !E_TMOUT" );
    ercd = twai_sem( 3, 2 );
    CYG_TEST_CHECK( E_TMOUT == ercd, "twai_sem bad ercd !E_TMOUT" );
    ercd = ref_sem( &t_rsem, 3 );
    CYG_TEST_CHECK( E_OK == ercd, "ref_sem bad ercd" );

    // now wait while task 2 deletes the wait objects
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = wai_sem( 1 );
    CYG_TEST_CHECK( E_DLT == ercd, "wai_sem bad ercd !E_DLT" );
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = twai_sem( 2, 20 );
    CYG_TEST_CHECK( E_DLT == ercd, "twai_sem bad ercd !E_DLT" );

    // check they are deleted
    ercd = sig_sem( 1 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "sig_sem bad ercd !E_NOEXS" );
    ercd = sig_sem( 2 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "sig_sem bad ercd !E_NOEXS" );
    // re-create and do it again
    ercd = cre_sem( 1, &t_csem );
    CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );
    ercd = cre_sem( 2, &t_csem );
    CYG_TEST_CHECK( E_OK == ercd, "cre_sem bad ercd" );

    // now wait while task 2 deletes the wait objects again
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = wai_sem( 1 );
    CYG_TEST_CHECK( E_DLT == ercd, "wai_sem bad ercd !E_DLT" );
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = twai_sem( 2, 20 );
    CYG_TEST_CHECK( E_DLT == ercd, "twai_sem bad ercd !E_DLT" );

    // check they are deleted
    ercd = sig_sem( 1 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "sig_sem bad ercd !E_NOEXS" );
    ercd = sig_sem( 2 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "sig_sem bad ercd !E_NOEXS" );

    CYG_TEST_PASS("create/delete semaphores");
#endif // CYGPKG_UITRON_SEMAS_CREATE_DELETE


#ifdef CYGPKG_UITRON_FLAGS_CREATE_DELETE
    tests++;
#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
    ercd = del_flg( -6 );
    CYG_TEST_CHECK( E_ID == ercd, "del_flg bad ercd !E_ID" );
    ercd = del_flg( 99 );
    CYG_TEST_CHECK( E_ID == ercd, "del_flg bad ercd !E_ID" );
    ercd = cre_flg( -6, &t_cflg );
    CYG_TEST_CHECK( E_ID == ercd, "cre_flg bad ercd !E_ID" );
    ercd = cre_flg( 99, &t_cflg );
    CYG_TEST_CHECK( E_ID == ercd, "cre_flg bad ercd !E_ID" );
#endif // we can test bad param error returns
    // try a pre-existing object
    ercd = cre_flg( 3, &t_cflg );
    CYG_TEST_CHECK( E_OBJ == ercd, "cre_flg bad ercd !E_OBJ" );
    // delete it so we can play
    ercd = del_flg( 3 );
    CYG_TEST_CHECK( E_OK == ercd, "del_flg bad ercd" );
    // check it is deleted
    ercd = set_flg( 3, 0x6789 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "set_flg bad ercd !E_NOEXS" );
    ercd = clr_flg( 3, 0x9876 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "clr_flg bad ercd !E_NOEXS" );
    ercd = pol_flg( &scratch, 3, 0xdddd, TWF_ANDW );
    CYG_TEST_CHECK( E_NOEXS == ercd, "pol_flg bad ercd !E_NOEXS" );
    ercd = twai_flg( &scratch, 3, 0x4444, TWF_ORW, 10 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "twai_flg bad ercd !E_NOEXS" );
    ercd = wai_flg( &scratch, 3, 0xbbbb, TWF_ANDW | TWF_CLR );
    CYG_TEST_CHECK( E_NOEXS == ercd, "wai_flg bad ercd !E_NOEXS" );
    ercd = ref_flg( &t_rflg, 3 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "ref_flg bad ercd !E_NOEXS" );
#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
    // now try creating it (badly)
#ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR
    ercd = cre_flg( 3, NULL );
    CYG_TEST_CHECK( E_PAR == ercd, "cre_flg bad ercd !E_PAR" );
#endif
    ercd = cre_flg( 3, NADR );
    CYG_TEST_CHECK( E_PAR == ercd, "cre_flg bad ercd !E_PAR" );
    t_cflg.flgatr = 0xfff;
    ercd = cre_flg( 3, &t_cflg );
    CYG_TEST_CHECK( E_RSATR == ercd, "cre_flg bad ercd !E_RSATR" );
#endif // we can test bad param error returns
    // now create it well
    t_cflg.flgatr = 0;
    t_cflg.iflgptn = 0;
    ercd = cre_flg( 3, &t_cflg );
    CYG_TEST_CHECK( E_OK == ercd, "cre_flg bad ercd" );
    // and check we can use it
    ercd = clr_flg( 3, 0x7256 );
    CYG_TEST_CHECK( E_OK == ercd, "clr_flg bad ercd" );
    ercd = set_flg( 3, 0xff );
    CYG_TEST_CHECK( E_OK == ercd, "set_flg bad ercd" );
    ercd = wai_flg( &scratch, 3, 0xaa, TWF_ANDW | TWF_CLR );
    CYG_TEST_CHECK( E_OK == ercd, "wai_flg bad ercd" );
    ercd = pol_flg( &scratch, 3, 0xaa, TWF_ANDW | TWF_CLR );
    CYG_TEST_CHECK( E_TMOUT == ercd, "pol_flg bad ercd !E_TMOUT" );
    ercd = twai_flg( &scratch, 3, 0xaa, TWF_ANDW | TWF_CLR, 2 );
    CYG_TEST_CHECK( E_TMOUT == ercd, "twai_flg bad ercd !E_TMOUT" );
    ercd = ref_flg( &t_rflg, 3 );
    CYG_TEST_CHECK( E_OK == ercd, "ref_flg bad ercd" );
    CYG_TEST_CHECK( 0 == t_rflg.flgptn, "ref_flg bad ercd" );
    // now create it again with a preset pattern and check that we can
    // detect that pattern:
    ercd = del_flg( 3 );
    CYG_TEST_CHECK( E_OK == ercd, "del_flg bad ercd" );
    t_cflg.flgatr = 0;
    t_cflg.iflgptn = 0x1234;
    ercd = cre_flg( 3, &t_cflg );
    CYG_TEST_CHECK( E_OK == ercd, "cre_flg bad ercd" );
    // and check we can use it
    ercd = wai_flg( &scratch, 3, 0x1200, TWF_ANDW );
    CYG_TEST_CHECK( E_OK == ercd, "wai_flg bad ercd" );
    ercd = pol_flg( &scratch, 3, 0x0034, TWF_ANDW );
    CYG_TEST_CHECK( E_OK == ercd, "pol_flg bad ercd" );
    ercd = twai_flg( &scratch, 3, 0x1004, TWF_ANDW, 10 );
    CYG_TEST_CHECK( E_OK == ercd, "twai_flg bad ercd" );
    ercd = pol_flg( &scratch, 3, 0xffedcb, TWF_ORW );
    CYG_TEST_CHECK( E_TMOUT == ercd, "pol_flg bad ercd !E_TMOUT" );
    ercd = ref_flg( &t_rflg, 3 );
    CYG_TEST_CHECK( E_OK == ercd, "ref_flg bad ercd" );
    CYG_TEST_CHECK( 0x1234 == t_rflg.flgptn, "ref_flg bad ercd" );
    ercd = clr_flg( 3, 0 );
    ercd = ref_flg( &t_rflg, 3 );
    CYG_TEST_CHECK( E_OK == ercd, "ref_flg bad ercd" );
    CYG_TEST_CHECK( 0 == t_rflg.flgptn, "ref_flg bad ercd" );

    // now wait while task 2 deletes the wait objects
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = wai_flg( &scratch, 1, 0xaa, TWF_ANDW );
    CYG_TEST_CHECK( E_DLT == ercd, "wai_flg bad ercd !E_DLT" );
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = twai_flg( &scratch, 2, 0x55, TWF_ANDW, 20 );
    CYG_TEST_CHECK( E_DLT == ercd, "twai_flg bad ercd !E_DLT" );

    // check they are deleted
    ercd = set_flg( 1, 0x22 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "set_flg bad ercd !E_NOEXS" );
    ercd = clr_flg( 2, 0xdd );
    CYG_TEST_CHECK( E_NOEXS == ercd, "clr_flg bad ercd !E_NOEXS" );
    // re-create and do it again
    t_cflg.iflgptn = 0x5555;
    ercd = cre_flg( 1, &t_cflg );
    CYG_TEST_CHECK( E_OK == ercd, "cre_flg bad ercd" );
    t_cflg.iflgptn = 0;
    ercd = cre_flg( 2, &t_cflg );
    CYG_TEST_CHECK( E_OK == ercd, "cre_flg bad ercd" );

    // now wait while task 2 deletes the wait objects again
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = wai_flg( &scratch, 1, 0xaaaa, TWF_ORW | TWF_CLR );
    CYG_TEST_CHECK( E_DLT == ercd, "wai_flg bad ercd !E_DLT" );
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = twai_flg( &scratch, 2, 0xffff, TWF_ORW, 20 );
    CYG_TEST_CHECK( E_DLT == ercd, "twai_flg bad ercd !E_DLT" );

    // check they are deleted
    ercd = clr_flg( 1, 0xd00d );
    CYG_TEST_CHECK( E_NOEXS == ercd, "clr_flg bad ercd !E_NOEXS" );
    ercd = set_flg( 2, 0xfff00 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "set_flg bad ercd !E_NOEXS" );

    CYG_TEST_PASS("create/delete flags");
#endif // CYGPKG_UITRON_FLAGS_CREATE_DELETE

#ifdef CYGPKG_UITRON_MBOXES_CREATE_DELETE
    tests++;
#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
    ercd = del_mbx( -6 );
    CYG_TEST_CHECK( E_ID == ercd, "del_mbx bad ercd !E_ID" );
    ercd = del_mbx( 99 );
    CYG_TEST_CHECK( E_ID == ercd, "del_mbx bad ercd !E_ID" );
    ercd = cre_mbx( -6, &t_cmbx );
    CYG_TEST_CHECK( E_ID == ercd, "cre_mbx bad ercd !E_ID" );
    ercd = cre_mbx( 99, &t_cmbx );
    CYG_TEST_CHECK( E_ID == ercd, "cre_mbx bad ercd !E_ID" );
#endif // we can test bad param error returns
    // try a pre-existing object
    ercd = cre_mbx( 3, &t_cmbx );
    CYG_TEST_CHECK( E_OBJ == ercd, "cre_mbx bad ercd !E_OBJ" );
    // delete it so we can play
    ercd = del_mbx( 3 );
    CYG_TEST_CHECK( E_OK == ercd, "del_mbx bad ercd" );
    // check it is deleted
    ercd = snd_msg( 3, t_msg );
    CYG_TEST_CHECK( E_NOEXS == ercd, "snd_msg bad ercd !E_NOEXS" );
    ercd = rcv_msg( &msg, 3 );       
    CYG_TEST_CHECK( E_NOEXS == ercd, "rcv_msg bad ercd !E_NOEXS" );
    ercd = trcv_msg( &msg, 3, 10 );   
    CYG_TEST_CHECK( E_NOEXS == ercd, "trcv_msg bad ercd !E_NOEXS" );
    ercd = prcv_msg( &msg, 3 );        
    CYG_TEST_CHECK( E_NOEXS == ercd, "prcv_msg bad ercd !E_NOEXS" );
    ercd = ref_mbx( &t_rmbx, 3 );
    CYG_TEST_CHECK( E_NOEXS == ercd, "ref_mbx bad ercd !E_NOEXS" );
#ifdef CYGSEM_UITRON_BAD_PARAMS_RETURN_ERRORS
    // now try creating it (badly)
#ifndef CYGSEM_UITRON_PARAMS_NULL_IS_GOOD_PTR
    ercd = cre_mbx( 3, NULL );
    CYG_TEST_CHECK( E_PAR == ercd, "cre_mbx bad ercd !E_PAR" );
#endif
    ercd = cre_mbx( 3, NADR );
    CYG_TEST_CHECK( E_PAR == ercd, "cre_mbx bad ercd !E_PAR" );
    t_cmbx.mbxatr = 0xfff;
    ercd = cre_mbx( 3, &t_cmbx );
    CYG_TEST_CHECK( E_RSATR == ercd, "cre_mbx bad ercd !E_RSATR" );
    t_cmbx.mbxatr = 0;
#endif // we can test bad param error returns
    ercd = cre_mbx( 3, &t_cmbx );
    CYG_TEST_CHECK( E_OK == ercd, "cre_mbx bad ercd" );
    // and check we can use it
    ercd = snd_msg( 3, t_msg );
    CYG_TEST_CHECK( E_OK == ercd, "snd_msg bad ercd" );
    ercd = rcv_msg( &msg, 3 );       
    CYG_TEST_CHECK( E_OK == ercd, "rcv_msg bad ercd" );
    ercd = trcv_msg( &msg, 3, 2 );   
    CYG_TEST_CHECK( E_TMOUT == ercd, "trcv_msg bad ercd !E_TMOUT" );
    ercd = prcv_msg( &msg, 3 );                            
    CYG_TEST_CHECK( E_TMOUT == ercd, "prcv_msg bad ercd !E_TMOUT" );
    ercd = ref_mbx( &t_rmbx, 3 );
    CYG_TEST_CHECK( E_OK == ercd, "ref_mbx bad ercd" );

    // now wait while task 2 deletes the wait objects
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = rcv_msg( &msg, 1 );
    CYG_TEST_CHECK( E_DLT == ercd, "wai_mbx bad ercd !E_DLT" );
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = trcv_msg( &msg, 2, 20 );
    CYG_TEST_CHECK( E_DLT == ercd, "twai_mbx bad ercd !E_DLT" );

    // check they are deleted
    ercd = snd_msg( 1, t_msg );
    CYG_TEST_CHECK( E_NOEXS == ercd, "snd_msg bad ercd !E_NOEXS" );
    ercd = snd_msg( 2, t_msg );       
    CYG_TEST_CHECK( E_NOEXS == ercd, "snd_msg bad ercd !E_NOEXS" );
    // re-create and do it again
    ercd = cre_mbx( 1, &t_cmbx );
    CYG_TEST_CHECK( E_OK == ercd, "cre_mbx bad ercd" );
    ercd = cre_mbx( 2, &t_cmbx );
    CYG_TEST_CHECK( E_OK == ercd, "cre_mbx bad ercd" );

    // now wait while task 2 deletes the wait objects again
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = rcv_msg( &msg, 1 );
    CYG_TEST_CHECK( E_DLT == ercd, "wai_mbx bad ercd !E_DLT" );
    ercd = wup_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "wup_tsk bad ercd" );
    ercd = trcv_msg( &msg, 2, 20 );
    CYG_TEST_CHECK( E_DLT == ercd, "twai_mbx bad ercd !E_DLT" );

    // check they are deleted
    ercd = snd_msg( 1, t_msg );
    CYG_TEST_CHECK( E_NOEXS == ercd, "snd_msg bad ercd !E_NOEXS" );
    ercd = snd_msg( 2, t_msg );       
    CYG_TEST_CHECK( E_NOEXS == ercd, "snd_msg bad ercd !E_NOEXS" );

    CYG_TEST_PASS("create/delete mboxes");
#endif // CYGPKG_UITRON_MBOXES_CREATE_DELETE

    ercd = ter_tsk( 2 );
    CYG_TEST_CHECK( E_OK == ercd, "ter_tsk bad ercd" );
    ercd = dly_tsk( 5 );
    CYG_TEST_CHECK( E_OK == ercd, "dly_tsk bad ercd" );

    // all done
    if ( 0 == tests ) {
        CYG_TEST_NA( "No objects have create/delete enabled" );
    }
    else {
        CYG_TEST_EXIT( "All done" );
    }
    ext_tsk();
}
Esempio n. 27
0
void GPSRecTsk(void)
{
    CHAR      cLen;
    UINT16    CheckSentenceType1, CheckSentenceType2;
    UINT32    CheckSentenceType3;
    CHAR      RecSentence[NMEA_SENTENCE_SIZE];
    CHAR      *pSentenceData;
    static UINT32 Step=0;

    kent_tsk();

    clr_flg(FLG_ID_GPS, GPS_FLAG_DATAVALID);
    clr_flg(FLG_ID_GPS, GPS_FLAG_SHUTDOWN);

    while(1)
    {
    	cLen = NMEA_SENTENCE_SIZE ;
#if(UART_DATA_TYPE==UART_CONNECT_MCU)
	    Step=0;
        uart2_getChar(RecSentence);
        //debug_msg("Uart2 get char :%x.\r\n",*RecSentence);

	  	if(*RecSentence == MCU_START1_BYTE)
	  	{
			Step=1;	
	  	}
		
	  	if(Step==1)
	  	{
         	uart2_getChar(RecSentence);	
        	//debug_msg("Uart2 get char-2- :%x.\r\n",*RecSentence);			  
		    if(*RecSentence == MCU_START2_BYTE)
		    {
			 	Step=2;	
		  	}			
	  	}
		
	  	if(Step==2)
	  	{
        	  uart2_getChar(RecSentence);	
			  debug_msg("GPSRecTsk---Uart2 get char- :%x.\r\n",*RecSentence);		
		  	  if(*RecSentence == MCU_COMMAND_UPDATE_ACK)
		      {
        	      debug_msg("Uart2 get char-3- :%x.\r\n",*RecSentence);			  		  
			      MCUInfo.IsUpdateMcuFW = TRUE;		  
			      Step=0;	
		      }	
		      else if(*RecSentence == MCU_COMMAND_POWEROF)
		      {
			      debug_msg("Uart2 get char-4- :%x.\r\n",*RecSentence);				  
		  	      if(!kchk_flg(FLG_ID_GPS, GPS_FLAG_SHUTDOWN))
		  	      {
			          set_flg(FLG_ID_GPS, GPS_FLAG_SHUTDOWN);
		  	      }
			      Step=0;
		      }
	   }
#else		
        #if (RECEIVE_FROM_UART2)
        if (uart2_getString(RecSentence, &cLen) == E_PAR)
        #else
        if (uart_getString(RecSentence, &cLen) == E_PAR)
        #endif
            debug_err(("UART2: parameter error!\r\n"));


        //debug_err(("%s\r\n",RecSentence));
        //Each NMEA sentence begins with '$' (0x24)
        if (RecSentence[0] == 0x24)
        {
            pSentenceData = RecSentence;
            CheckSentenceType1 = *(UINT16 *)(pSentenceData + 2);
            CheckSentenceType2 = *(UINT16 *)(pSentenceData + 4);
            CheckSentenceType3 = ((UINT)CheckSentenceType2 << 16) | (UINT)CheckSentenceType1;

            switch(CheckSentenceType3)
            {
            case GSA_SENTENCE:
                NMEASentence.GSA = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GSA);
                break;

            case RMC_SENTENCE:
                NMEASentence.RMC = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, RMC);
                break;

            case GGA_SENTENCE:
                NMEASentence.GGA = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GGA);
                break;

            case GSV_SENTENCE:
                NMEASentence.GSV = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GSV);
                break;

            case GLL_SENTENCE:
                NMEASentence.GLL = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GLL);
                break;

            case VTG_SENTENCE:
                NMEASentence.VTG = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, VTG);
                break;

            default:
                debug_err(("GPS: Can't identify this sentence 0x%X \r\n",CheckSentenceType3));
                break;
            }


        }
#endif
    }

}
Esempio n. 28
0
void GPSRecTsk(void)
{
    CHAR      cLen;
    UINT16    CheckSentenceType1, CheckSentenceType2;
    UINT32    CheckSentenceType3;
    CHAR      RecSentence[NMEA_SENTENCE_SIZE];
    CHAR      *pSentenceData;

    kent_tsk();

    clr_flg(FLG_ID_GPS, GPS_FLAG_DATAVALID);

    while(1)
    {
        cLen = NMEA_SENTENCE_SIZE ;
        #if (RECEIVE_FROM_UART2)
        if (uart2_getString(RecSentence, &cLen) == E_PAR)
        #else
        if (uart_getString(RecSentence, &cLen) == E_PAR)
        #endif
            debug_err(("UART2: parameter error!\r\n"));


        //debug_err(("%s\r\n",RecSentence));
        //Each NMEA sentence begins with '$' (0x24)
        if (RecSentence[0] == 0x24)
        {
            pSentenceData = RecSentence;
            CheckSentenceType1 = *(UINT16 *)(pSentenceData + 2);
            CheckSentenceType2 = *(UINT16 *)(pSentenceData + 4);
            CheckSentenceType3 = ((UINT)CheckSentenceType2 << 16) | (UINT)CheckSentenceType1;

            switch(CheckSentenceType3)
            {
            case GSA_SENTENCE:
                NMEASentence.GSA = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GSA);
                break;

            case RMC_SENTENCE:
                NMEASentence.RMC = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, RMC);
                break;

            case GGA_SENTENCE:
                NMEASentence.GGA = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GGA);
                break;

            case GSV_SENTENCE:
                NMEASentence.GSV = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GSV);
                break;

            case GLL_SENTENCE:
                NMEASentence.GLL = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, GLL);
                break;

            case VTG_SENTENCE:
                NMEASentence.VTG = RecSentence;
                GPSRec_NMEAParser(RecSentence, (UINT32)cLen, VTG);
                break;

            default:
                debug_err(("GPS: Can't identify this sentence 0x%X \r\n",CheckSentenceType3));
                break;
            }


        }




    }

}
Esempio n. 29
0
/**
  BurnIn main loop

  BurnIn main loop
  [CalBurnIn internal API]

  @param UINT32 uiOperation: Which operation you want to run
    BURNIN_OP_BURNIN            (Burn In)
    BURNIN_OP_ZOOMAF            (ZoomAF Lasting)
    BURNIN_OP_FLASH             (Flash Lasting)
    BURNIN_OP_168H              (168H)
  @return void
*/
static void Cal_BurnIn(UINT32 uiOperation)
{
    UINT32      uiTimerID, uiFlag;
    UINT32      uiKeyFlagID, uiKeyEvent;
//    UINT32      uiOldPressConfig, uiOldReleaseConfig;
    UINT32      uiTotalIteration;
    UINT32      uiInterval;
    UINT32      uiEventCnt;
    PSIM_EVENT  pSimEvent, pStartEvent;
    UINT8       uiKeyStatus, uiRepeatCnt;

    if(i2c_getLockStatus())
        i2c_unlock();

    // Open timer
    if (TIMEROpen((UINT *)&uiTimerID, Cal_BurnInTimerISR) != E_OK)
    {
        /*
        set_scankey_press_config(uiOldPressConfig);
        set_scankey_release_config(uiOldReleaseConfig);
        */
        return;
    }

    switch (uiOperation)
    {
    case BURNIN_OP_BURNIN:
        //read cal status for check finish item
        ReadCalData();
        FilesysFormat(Primary_GetStorageObj(PRIMARY_STGTYPE_NAND), TRUE);
        FilesysWaitCmdFinish(FST_TIME_INFINITE);
        FilesysFormat(Primary_GetStorageObj(PRIMARY_STGTYPE_NAND), TRUE);

        //if(Cal_CheckStatus()!= 0)
        //    return ;
        uiTotalIteration    = 40; //2hour    //10 ;   // 10*3 min = 30 mins
        pStartEvent         = (PSIM_EVENT)&BurnInEvent;
        Primary_ChangeMode(PRIMARY_MODE_PHOTO);
        break;

    case BURNIN_OP_ZOOMAF:
        uiTotalIteration    = 1000;
        pStartEvent         = (PSIM_EVENT)&ZoomAFEvent;
        Primary_ChangeMode(PRIMARY_MODE_PHOTO);
        break;

    case BURNIN_OP_FLASH:
        FilesysWaitCmdFinish(FST_TIME_INFINITE);
        FilesysFormat(Primary_GetStorageObj(PRIMARY_STGTYPE_NAND), TRUE);
        uiTotalIteration    = 8;  //15 min * 8 = 2 hr
        pStartEvent         = (PSIM_EVENT)&FlashEvent;
        Primary_ChangeMode(PRIMARY_MODE_PHOTO);
        SysSetFlag(FL_FLASH, FLASH_ON);
        break;

    case BURNIN_OP_168H:
        //read cal status for check finish item
        ReadCalData();
        FilesysWaitCmdFinish(FST_TIME_INFINITE);
        FilesysFormat(Primary_GetStorageObj(PRIMARY_STGTYPE_NAND), TRUE);

        //if(Cal_CheckStatus()!= 0)
        //     return ;
        uiTotalIteration    = 0xFFFFFFFF;
        pStartEvent         = (PSIM_EVENT)&BurnInEvent;
        Primary_ChangeMode(PRIMARY_MODE_PHOTO);
        break;

    case BURNIN_OP_10MIN:
        //read cal status for check finish item
        ReadCalData();
        FilesysWaitCmdFinish(FST_TIME_INFINITE);
        FilesysFormat(Primary_GetStorageObj(PRIMARY_STGTYPE_NAND), TRUE);

        //if(Cal_CheckStatus()!= 0)
        //     return ;
        uiTotalIteration    = 10; // 3 min * 10 =30 mins
        pStartEvent         = (PSIM_EVENT)&BurnInEvent;
        Primary_ChangeMode(PRIMARY_MODE_PHOTO);
        break;

    }

    // Init variable
    uiTimeoutValue  = 0;

    // Enable timer and clear all flags
    clr_flg(FLG_ID_BURNIN, FLGBURNIN_ALL);
    TIMERSet(uiTimerID, TIMER_INTERVAL, _TIMER_CTRL_FREE_RUN | _TIMER_CTRL_INT_ENABLE, _TIMER_PLAY);

    for (uiIteration=1; uiIteration<=uiTotalIteration; uiIteration++)
    {
        debug_ind(("\n\r ***Loop = %ld,Event= %ld ***\r\n", uiIteration, uiEventCnt));
        pSimEvent   = pStartEvent;
        uiRepeatCnt = 0;
        uiInterval  = 0;
        uiEventCnt  = 0;

        if(uiOperation == BURNIN_OP_FLASH)
        {
            Ux_SendEvent(&UIPlayObjCtrl,NVTEVT_EXE_SLIDE,1,SLIDE_5SEC);
            ImageInfoTable = FlashImageInfoTable;
        }
        else
            ImageInfoTable = BurnInImageInfoTable;
        Delay_DelayMs(2000);
        Cal_SetImageInfor_Value(uiRepeatCnt);
        while (1)
        {
            wai_flg((UINT *)&uiFlag, FLG_ID_BURNIN, FLGBURNIN_TIMER, TWF_ORW | TWF_CLR);
            uiInterval += TIMER_INTERVAL;

            //avoid display msg too much
            if(uiInterval%2000 == 0)
                Cal_BurnInShowLoop(uiIteration, uiEventCnt,uiRepeatCnt);

            //accumlate time until to interval;the post event
            if (uiInterval >= pSimEvent->uiInterval)
            {
                uiInterval = 0;
                #if 0
                if((uiOperation == BURNIN_OP_BURNIN || uiOperation == BURNIN_OP_10MIN ) && (uiIteration == 4))   //about 10 min,run dark dp
                {
                    Cal_BurnInLog(uiIteration,uiEventCnt,999);
                    if(uiOperation == BURNIN_OP_10MIN)
                        Cal_DPinBurnIn(FALSE);  //not check dp status
                    else
                        Cal_DPinBurnIn(TRUE);   // check dp status
                    break;
                }
                #endif

                // End of event
                if (pSimEvent->uiKeyFlagID == SIM_END)
                {
                    break;
                }
                // Wait for specific flag, or change mode
                else if (pSimEvent->uiKeyFlagID == FLG_ID_BURNIN)
                {
                    if (pSimEvent->uiKeyEvent == FLGBURNIN_WAITING)
                    {
                        // Enable timeout
                        uiTimeoutValue  = pSimEvent->uiInterval;
                        uiTimerCnt      = 0;
                        clr_flg(FLG_ID_BURNIN, FLGBURNIN_TIMEOUT);

                        Cal_BurnInLog(uiIteration,uiEventCnt,uiRepeatCnt);
                        wai_flg((UINT *)&uiFlag, FLG_ID_BURNIN, pSimEvent->uiKeyEvent | FLGBURNIN_TIMEOUT, TWF_ORW | TWF_CLR);

                        if (uiFlag & FLGBURNIN_TIMEOUT)
                        {
                            debug_err(("Wait for specific flag timeout  %d\r\n",pSimEvent->uiInterval));
                        }

                        // Disable timeout
                        uiTimeoutValue = 0;

                        // Clear timer flag
                        clr_flg(FLG_ID_BURNIN, FLGBURNIN_TIMER);

                        uiRepeatCnt = 0;
                        pSimEvent++;
                        uiEventCnt++;
                        debug_ind(("\n\rFLGBURNIN_WAITING  ***Loop = %ld,Event= %ld ***\r\n", uiIteration, uiEventCnt));
                        continue;
                    }


                }
                else // FLG_ID_KEY
                {
                    //log current event
                    Cal_BurnInLog(uiIteration,uiEventCnt,uiRepeatCnt);

                    uiKeyFlagID = pSimEvent->uiKeyFlagID;
                    uiKeyEvent  = pSimEvent->uiKeyEvent;
                    uiKeyStatus = pSimEvent->uiKeyStatus;

                    // Set key event
                    if (uiKeyFlagID != NULL && uiKeyEvent != NULL)
                    {
                        //change key event to post message
                        if(uiKeyFlagID == FLG_ID_KEY)
                        {
                        /*
                            NVTMSG msg;

                            if(uiKeyStatus == KEY_STATUS_PRESS)
                                SET_COMMAND(&msg, NVTEVT_KEY_PRESS);
                            else
                                SET_COMMAND(&msg, NVTEVT_KEY_RELEASE);

                            debug_ind(("uiKeyEvent %x nvtcmd %x \r\n",uiKeyEvent ,Get_NVTCMD(uiKeyEvent)));
                            SET_KEY_EVENT(&msg,Get_NVTCMD(uiKeyEvent));
                            PostMessage(&msg);
                        */
                            if(uiKeyEvent & (Input_GetKeyMask(KEY_PRESS)))
                            {
                                debug_err(("Ux_PostEvent %d \r\n",uiKeyEvent));
                                Ux_PostEvent(Get_NVTCMD(uiKeyEvent), 1, Get_NVTCMD(uiKeyEvent));
                            }

                        }
                        else
                        {
                            set_flg(uiKeyFlagID, uiKeyEvent);
                        }
                    }
                }

                uiRepeatCnt++;


                // Move to next event
                if (uiRepeatCnt == pSimEvent->uiRepeatCnt)
                {
                    uiRepeatCnt = 0;
                    pSimEvent++;
                    uiEventCnt++;
                    debug_ind(("*****next event*Loop = %ld,Event= %ld ***************\r\n", uiIteration, uiEventCnt));
                }

                if ((pSimEvent == pStartEvent)&&((uiOperation==BURNIN_OP_10MIN)||(uiOperation==BURNIN_OP_BURNIN) || (uiOperation==BURNIN_OP_168H) || (uiOperation==BURNIN_OP_FLASH)) )
                {
                     Delay_DelayMs(2000);
                     //for set flash charg,so set capture index first
                     Cal_SetImageInfor_Value(uiRepeatCnt);

                }

            }

        }
    }

    TIMERClose(uiTimerID);

    //tmp write to AAA for read cal data
    AAA_Adjust.ISO_Status = _ISO_Status;
    WriteCalData();

    if(uiOperation == BURNIN_OP_FLASH)
        sprintf(LogStringBuf,"Flash O\r\n");
    else
        sprintf(LogStringBuf,"BurnIn O\r\n");
    Cal_ShowStringWithColor((INT8 *)LogStringBuf, 64,170, _OSD_INDEX_GREEN);

#if 0
    Menu_PowerOff(POWER_OFF);
#endif
    while(1)
        ;;


    /*
    set_scankey_press_config(uiOldPressConfig);
    set_scankey_release_config(uiOldReleaseConfig);
    */

    // Power off DSC after burn in done
    // Premier don't want to power off now (2005.10.16)
    /*
    if (uiOperation == BURNIN_OP_BURNIN)
    {
        PowerOffFlow(TRUE, FALSE);
    }
    */
}
Esempio n. 30
0
void PlaySoundTsk(void)
{
    FLGPTN              uiFlag;
    AUDIO_DEVICE_OBJ    AudioDevice;
    AUDIO_BUF_QUEUE     AudioBufQueue;
    //#NT#2010/01/20#JustinLee -begin
    //#Add wav header parsing before playing sound data
    WAV_FILEINFO        WAVFileInfo;
    //#NT#2010/01/20#JustinLee -end

    while (1)
    {
        wai_flg(&uiFlag, FLG_ID_SOUND, FLGSOUND_STOP | FLGSOUND_PLAY, TWF_ORW | TWF_CLR);

        if (uiFlag & FLGSOUND_STOP)
        {
            if (g_uiPlaySoundStatus == PLAYSOUND_STS_PLAYING)
            {
                aud_stop();
                aud_close();
                g_uiPlaySoundStatus = PLAYSOUND_STS_STOPPED;

                set_flg(FLG_ID_SOUND, FLGSOUND_STOPPED);
            }
        }

        if (uiFlag & FLGSOUND_PLAY)
        {
            //#NT#2009/06/24#Chris Chung -begin
            //#NT#avoid re-entry to audio driver.
            if(aud_isBusy())
                continue;
            //#NT#2009/06/24#Chris Chung -end

            g_uiPlaySoundStatus = PLAYSOUND_STS_PLAYING;
            clr_flg(FLG_ID_SOUND, FLGSOUND_STOPPED);

            // Open audio driver
            aud_getDeviceObject(&AudioDevice);
            AudioDevice.pEventHandler = PlaySound_AudioHdl;
            aud_open(&AudioDevice);

            switch (g_uiPlaySoundSound)
            {
            case PLAYSOUND_SOUND_STARTUP:
            case PLAYSOUND_SOUND_SHUTDOWN:
                // Parse header before playing
                if(PlaySound_ParseWAVHeader((UINT32)g_PowerOn_SoundKey.puiData, &WAVFileInfo) == TRUE)
                {
                    // Set sampling rate and channel based on parameter
                    aud_setSamplingRate(WAVFileInfo.AudioSamplingRate);
                    aud_setChannel(WAVFileInfo.AudioChannel);

                    // Set audio buffer queue addr and size
                    AudioBufQueue.uiAddress = ((UINT32)g_PowerOn_SoundKey.puiData) + (sizeof(WAV_PCMHEADER));
                    AudioBufQueue.uiSize    = WAVFileInfo.uiDataSize;
                }
                else
                {
                    // Set sampling rate and channel manually
                    aud_setSamplingRate(AUDIO_SR_32000);
                    aud_setChannel(AUDIO_CH_LEFT);

                    // Set audio buffer queue addr and size
                    AudioBufQueue.uiAddress = (UINT32)g_PowerOn_SoundKey.puiData;
                    AudioBufQueue.uiSize    = g_PowerOn_SoundKey.uiSize;
                }
                break;
            case PLAYSOUND_SOUND_KEY_SHUTTER2:
                // Parse header before playing
                if(PlaySound_ParseWAVHeader((UINT32)g_Shutter_SoundKey.puiData, &WAVFileInfo) == TRUE)
                {
                    // Set sampling rate and channel based on parameter
                    aud_setSamplingRate(WAVFileInfo.AudioSamplingRate);
                    aud_setChannel(WAVFileInfo.AudioChannel);

                    // Set audio buffer queue addr and size
                    AudioBufQueue.uiAddress = ((UINT32)g_Shutter_SoundKey.puiData) + (sizeof(WAV_PCMHEADER));
                    AudioBufQueue.uiSize    = WAVFileInfo.uiDataSize;
                }
                else
                {
                    // Set sampling rate and channel manually
                    aud_setSamplingRate(AUDIO_SR_32000);
                    aud_setChannel(AUDIO_CH_LEFT);

                    // Set audio buffer queue addr and size
                    AudioBufQueue.uiAddress = (UINT32)g_Shutter_SoundKey.puiData;
                    AudioBufQueue.uiSize    = g_Shutter_SoundKey.uiSize;
                }
                break;

            case PLAYSOUND_SOUND_KEY_OTHERS:
                // Parse header before playing
                if(PlaySound_ParseWAVHeader((UINT32)g_SoundKey.puiData, &WAVFileInfo) == TRUE)
                {
                    // Set sampling rate and channel based on parameter
                    aud_setSamplingRate(WAVFileInfo.AudioSamplingRate);
                    aud_setChannel(WAVFileInfo.AudioChannel);

                    // Set audio buffer queue addr and size
                    AudioBufQueue.uiAddress = ((UINT32)g_SoundKey.puiData) + (sizeof(WAV_PCMHEADER));
                    AudioBufQueue.uiSize    = WAVFileInfo.uiDataSize;
                }
                else
                {
                    // Set sampling rate and channel manually
                    aud_setSamplingRate(AUDIO_SR_32000);
                    aud_setChannel(AUDIO_CH_LEFT);

                    // Set audio buffer queue addr and size
                    AudioBufQueue.uiAddress = (UINT32)g_SoundKey.puiData;
                    AudioBufQueue.uiSize    = g_SoundKey.uiSize;
                }
                break;

            default:
                aud_close();
                continue;
            }

            // Set time code offset and first time code trigger value
            aud_setTimecodeOffset(0);
            aud_setTimecodeTrigger(AudioBufQueue.uiSize >> 1);

            // Reset audio buffer queue and add buffer to queue
            aud_resetBufferQueue();
            aud_addBufferToQueue(&AudioBufQueue);

            // Start to play
            aud_playback(FALSE, TRUE);
        }
    }
}