Пример #1
0
/* Number of users comparison. */
static int
ucmp(const void *a1, const void *a2)
{
	if (ISDOWN(HS(a1)))
		if (ISDOWN(HS(a2)))
			return (tcmp(a1, a2));
		else
			return (rflg);
	else if (ISDOWN(HS(a2)))
		return (-rflg);
	else
		return (rflg * (HS(a2)->hs_nusers - HS(a1)->hs_nusers));
}
Пример #2
0
/* Load average comparison. */
static int
lcmp(const void *a1, const void *a2)
{
	if (ISDOWN(HS(a1)))
		if (ISDOWN(HS(a2)))
			return (tcmp(a1, a2));
		else
			return (rflg);
	else if (ISDOWN(HS(a2)))
		return (-rflg);
	else
		return (rflg *
		   (HS(a2)->hs_wd.wd_loadav[0] - HS(a1)->hs_wd.wd_loadav[0]));
}
Пример #3
0
/* Uptime comparison. */
static int
tcmp(const void *a1, const void *a2)
{
	return (rflg * (
		(ISDOWN(HS(a2)) ? HS(a2)->hs_wd.wd_recvtime - now
		    : HS(a2)->hs_wd.wd_sendtime - HS(a2)->hs_wd.wd_boottime)
		-
		(ISDOWN(HS(a1)) ? HS(a1)->hs_wd.wd_recvtime - now
		    : HS(a1)->hs_wd.wd_sendtime - HS(a1)->hs_wd.wd_boottime)
	));
}
Пример #4
0
  /** Execute the algorithm.
   */
  void CalculateUMatrix::exec()
  {
    double a=this->getProperty("a");
    double b=this->getProperty("b");
    double c=this->getProperty("c");
    double alpha=this->getProperty("alpha");
    double beta=this->getProperty("beta");
    double gamma=this->getProperty("gamma");
    OrientedLattice o(a,b,c,alpha,beta,gamma);
    Matrix<double> B=o.getB();

    double H,K,L;

    PeaksWorkspace_sptr ws;
    ws = boost::dynamic_pointer_cast<PeaksWorkspace>(AnalysisDataService::Instance().retrieve(this->getProperty("PeaksWorkspace")) );
    if (!ws) throw std::runtime_error("Problems reading the peaks workspace");

    Matrix<double> Hi(4,4),Si(4,4),HS(4,4),zero(4,4);
    for (int i=0;i<ws->getNumberPeaks();i++)
    {
      Peak p=ws->getPeaks()[i];
      H=p.getH();
      K=p.getK();
      L=p.getL();
      if(H*H+K*K+L*L>0)
      {
        V3D Qhkl=B*V3D(H,K,L);
        Hi[0][0]=0.;        Hi[0][1]=-Qhkl.X(); Hi[0][2]=-Qhkl.Y(); Hi[0][3]=-Qhkl.Z();
        Hi[1][0]=Qhkl.X();  Hi[1][1]=0.;        Hi[1][2]=Qhkl.Z();  Hi[1][3]=-Qhkl.Y();
        Hi[2][0]=Qhkl.Y();  Hi[2][1]=-Qhkl.Z(); Hi[2][2]=0.;        Hi[2][3]=Qhkl.X();
        Hi[3][0]=Qhkl.Z();  Hi[3][1]=Qhkl.Y();  Hi[3][2]=-Qhkl.X(); Hi[3][3]=0.;

        V3D Qgon=p.getQSampleFrame();
        Si[0][0]=0.;        Si[0][1]=-Qgon.X(); Si[0][2]=-Qgon.Y(); Si[0][3]=-Qgon.Z();
        Si[1][0]=Qgon.X();  Si[1][1]=0.;        Si[1][2]=-Qgon.Z(); Si[1][3]=Qgon.Y();
        Si[2][0]=Qgon.Y();  Si[2][1]=Qgon.Z();  Si[2][2]=0.;        Si[2][3]=-Qgon.X();
        Si[3][0]=Qgon.Z();  Si[3][1]=-Qgon.Y(); Si[3][2]=Qgon.X(); Si[3][3]=0.;

        HS+=(Hi*Si);
      }
    }
    //check if HS is 0
    if (HS==zero) throw std::invalid_argument("The peaks workspace is not indexed or something really bad happened");

    Matrix<double> Eval;
    Matrix<double> Diag;
    HS.Diagonalise(Eval,Diag);
    Eval.sortEigen(Diag);
    Mantid::Kernel::Quat qR(Eval[0][0],Eval[1][0],Eval[2][0],Eval[3][0]);//the first column corresponds to the highest eigenvalue
    DblMatrix U(qR.getRotation());
    o.setU(U);

    ws->mutableSample().setOrientedLattice(new OrientedLattice(o));

  }
Пример #5
0
/*************************************************************************
	module		:[ミラーを待機位置へ移動]
	function	:[
		1.	スキャナモーターをFBS側に切替える
		2.	ミラーをホームセンサ上へ指定スピードで移動する
		3.	モーターの起動を行う
		4.	モーターの停止等の制御は割込みで行う
		5.	割込みからの移動の終了/エラーをイベントで待つ
	]
	return		:[
		MIRROR_MOVE_OK			0	正常終了
		MIRROR_MOVE_ERROR		1	エラーで終了
	]
	common		:[]
	condition	:[]
	comment		:[
		引数	加速指定(加速する:TRUE/一定速:FALSE)
	]
	machine		:[SH7043]
	language	:[MS-C(Ver.6.0)]
	keyword		:[SCN]
	date		:[1996/06/25]
	author		:[竹内茂樹]
*************************************************************************/
UBYTE	MirrorMoveToReady(
	UBYTE	is_speed_up)	/* モーター加速指定 */
{
	/**	状態を初期化 */
	SCN_MirrorMoveStatus = MIRROR_MOVE_OK;
	SCN_WatchEndSensorStatus = WATCH_ES_DISABLE;

	/** ミラーが既に待機位置(移動先)にあるなら、何もしない */
	if (SCN_MirrorCarriageStatus == MIRROR_READY) {
		return (SCN_MirrorMoveStatus);
	}

	/** スキャナモーターをFBS側に切替える */
	SCN_SetMotorDrive( SCN_FBS );

	/** ホームセンサ上にミラーキャリッジがなければ、ホームセンサへ移動する */
	if (!HS()) {
		SCN_MirrorCarriageStatus = MIRROR_MOVE_TO_HS;
		SCN_MirrorMotorPulseCount = 0;			/* ミラー用のパルスカウンタを0クリア */
		SCN_IsMirrorMoveEnd = FALSE;
		SCN_SetHS_ON_Int( SCN_ENABLE );			/* ホームセンサON割り込み許可 */
		SCN_SetHS_OFF_Int( SCN_DISABLE );		/* ホームセンサOFF割り込み禁止 */

		SCN_SetMotorClockwise( SCN_ENABLE );	/* モーター正転 */
		SCN_StartMirror( is_speed_up );			/* 加速/一定速 でミラー起動 */

		/**	ミラー移動の終了を待つ */
		CMN_DisableInterrupt();
		if (!SCN_IsMirrorMoveEnd) {
			wai_evt( EVT_MIRROR_MOVE_END );
		}
		CMN_EnableInterrupt();

		/** スキャナモータの回転方向を変えるために待つ */
		wai_tsk( SCN_MotorChangeInterval );

		if (SCN_MirrorReadyPosition == READY_POSITION_ADF) {
			return(MirrorMoveToADF());
		}
		else {
			return(SCN_MirrorMoveStatus);
		}
	}
	else {
		SCN_MirrorCarriageStatus = MIRROR_HS_ON;
		if (SCN_MirrorReadyPosition == READY_POSITION_ADF) {
			return(MirrorMoveToADF());
		}
		else {
			return(SCN_MirrorMoveStatus);
		}
	}
}
Пример #6
0
/*************************************************************************
	module		:[ミラーをFBS待機位置へ移動]
	function	:[
		1.	スキャナモーターをFBS側に切替える
		2.	FBS読取り待機位置(HS上)にミラーを高速で移動する
		3.	モーターの起動を行う
		4.	モーターの停止等の制御は割込みで行う
		5.	割込みからの移動の終了/エラーをイベントで待つ
	]
	return		:[
		MIRROR_MOVE_OK			0	正常終了
		MIRROR_MOVE_ERROR		1	エラーで終了
	]
	common		:[]
	condition	:[]
	comment		:[
		FBS読取り用のランプチェックを移動中に行うために
		ここでランプを点灯しピーク値検出回路を動作させる
		所定位置に来た時のモーター割り込み内でDIPPの
		光源異常レジスタを読み込む
	]
	machine		:[SH7043]
	language	:[MS-C(Ver.6.0)]
	keyword		:[SCN]
	date		:[1996/06/25]
	author		:[竹内茂樹]
*************************************************************************/
UBYTE	MirrorMoveToFBS( void )
{
	/**	状態を初期化 */
	SCN_MirrorMoveStatus = MIRROR_MOVE_OK;

	SCN_WatchEndSensorStatus = WATCH_ES_ON;

	/* ミラーが既にFBS読み取り待機位置(移動先)にあるなら、何もしない */
	/* 静電気などで途中で止まった時のためにホームセンサを直接見る  1997/08/21 s.takeuchi */
	if ((SCN_MirrorCarriageStatus == MIRROR_HS_ON)
	 && HS()) {		/* 1997/08/21 s.takeuchi */
		SYS_IsMirrorScanReady = TRUE;
		return (SCN_MirrorMoveStatus);
	}

	SYS_IsMirrorScanReady = FALSE;

	/** スキャナモーターをFBS側に切替える */
	SCN_SetMotorDrive( SCN_FBS );

	SCN_MirrorCarriageStatus = MIRROR_MOVE_TO_HS;
	SCN_MirrorMotorPulseCount = 0;			/* ミラー用のパルスカウンタを0クリア */
	SCN_IsMirrorMoveEnd = FALSE;
	SCN_SetHS_ON_Int( SCN_ENABLE );			/* ホームセンサON割り込み許可 */
	SCN_SetHS_OFF_Int( SCN_DISABLE );		/* ホームセンサOFF割り込み禁止 */
	SCN_SetMotorClockwise( SCN_ENABLE );	/* モーター正転 */

	/* 大分のFBS ASSY検査でHS側でミラーがぶつかるため低速に変更
	** T.Nose 1998/02/20
	*/
	SCN_StartMirror( FALSE );

	/**	ミラー移動の終了を待つ */
	CMN_DisableInterrupt();
	if (!SCN_IsMirrorMoveEnd) {
		wai_evt( EVT_MIRROR_MOVE_END );
	}
	CMN_EnableInterrupt();

	/** スキャナモータの回転方向を変えるために待つ */
	wai_tsk( SCN_MotorChangeInterval );

	return (SCN_MirrorMoveStatus);
}
Пример #7
0
			libmaus2::util::Histogram::unique_ptr_type getRunLengthHistogram(uint64_t const numthreads) const
			{
				uint64_t const nb = getNumBlocks();

				libmaus2::util::HistogramSet HS(numthreads,256);

				#if defined(_OPENMP)
				#pragma omp parallel for num_threads(numthreads)
				#endif
				for ( int64_t b = 0; b < static_cast<int64_t>(nb); ++b )
					#if defined(_OPENMP)
					getBlockRunLengthHistogram(b,HS[omp_get_thread_num()]);
					#else
					getBlockRunLengthHistogram(b,HS[0]);
					#endif

				libmaus2::util::Histogram::unique_ptr_type tptr(HS.merge());

				return UNIQUE_PTR_MOVE(tptr);
			}
Пример #8
0
	/** @brief RegisterElement
	  *
	  * @todo: document this function
	  */
	bool HashManager::RegisterElement(const std::string& Name) {
		if (!ElementExists(Name))
		{
			std::shared_ptr<HashedString> HS(new HashedString(Name.c_str()));

			if (HS->getHashValue() == 0)
			{
				Engine::out(Engine::ERROR) << "HashManager: Element '" << Name << "' gives 0 (zero) as Hash, which is reserved!" << std::endl;
				return false;
			}

			ElementsByString[Name] = HS;
			ElementsByHash[HS->getHashValue()] = HS;

			return true;
		}
		else
		{
			Engine::out(Engine::ERROR) << "HashManager: Element '" << Name << "' already exists" << std::endl;
			return false;
		}
	}
Пример #9
0
Файл: 09.c Проект: yabeenico/psp
/*main関数。*/
int main(void){
	int N;

	/*乱数のシードを設定。*/
	srand((unsigned int)time(NULL));
#if 1
	/*Nを増やして計測時間を調べる。*/
	for(N = 10000; N <= 1000000; N *= 10){
		measure(N);
	}
#else
	/*デバッグ*/
	N = 30;
	int *array = (int*)malloc(sizeof(int) * N);
	initRandom(array, N);

	HS(array, N);

	graph(array, N);

#endif
	return 0;
}
Пример #10
0
int search(unsigned char *x, int m, unsigned char *y, int n) {
	unsigned int B[DSIGMA];
	int i, j, k, count;
    unsigned int s,d;
    if(m<Q) return -1;
    
    BEGIN_PREPROCESSING
    unsigned int occ[DSIGMA] = {0};
    int st = 0, len = 0;
    unsigned short c, dch;
    for(i=0, j=0; i<m-Q+1; i++) {
        c = HS(x,i);
        if(occ[c]) {
            dch = HS(x,j);
            while(dch!=c) {
                occ[dch]=0;
                j++;
                dch = HS(x,j);
            } 
            occ[dch]=0;
            j++;
        }
        occ[c]=1;
        if(len < i-j+1 ) {
            len = i-j+1;
            st = j;
        }
    }
    
	unsigned int pos[DSIGMA];
	for(i=0; i<DSIGMA; i++) pos[i]=-1;
	for(i=0; i<len; i++) {
	    c = HS(x,st+i);
	    pos[c]=i;
	}
    END_PREPROCESSING
	
    BEGIN_SEARCHING
    count = 0;
	for(i=0; i<m; i++) y[n+i]=x[i];
	unsigned char *xst = x+st;
	int offset = len+st-1;
	j = len-1;
	while(j<n) {
	    c = HS(y,j);
	    while ((i=pos[c])<0) {
	        j+=len;
   	        c = HS(y,j);
	    }
	    k=1;
	    while(k<=i && xst[i-k]==y[j-k]) k++;
	    if(k>i) {
	    	if(k==len) {
	    		if(!memcmp(x,y+j-offset,m)) if(j-offset<=n-m) count++;
	    	}
	    	else j-=k;
	    }
	    j+=len;
	}
    END_SEARCHING
   	return count;
}
Пример #11
0
  /** Execute the algorithm.
   */
  void CalculateUMatrix::exec()
  {
    double a=this->getProperty("a");
    double b=this->getProperty("b");
    double c=this->getProperty("c");
    double alpha=this->getProperty("alpha");
    double beta=this->getProperty("beta");
    double gamma=this->getProperty("gamma");
    OrientedLattice o(a,b,c,alpha,beta,gamma);
    Matrix<double> B=o.getB();

    double H,K,L;

    PeaksWorkspace_sptr ws;
    ws = AnalysisDataService::Instance().retrieveWS<PeaksWorkspace>(this->getProperty("PeaksWorkspace") );
    if (!ws) throw std::runtime_error("Problems reading the peaks workspace");

    size_t nIndexedpeaks=0;
    bool found2nc=false;
    V3D old(0,0,0);
    Matrix<double> Hi(4,4),Si(4,4),HS(4,4),zero(4,4);
    for (int i=0;i<ws->getNumberPeaks();i++)
    {
      Peak p=ws->getPeaks()[i];
      H=p.getH();
      K=p.getK();
      L=p.getL();
      if(H*H+K*K+L*L>0)
      {
        nIndexedpeaks++;
        if (!found2nc)
        {
          if (nIndexedpeaks==1)
          {
            old=V3D(H,K,L);
          }
          else
          {
            if (!old.coLinear(V3D(0,0,0),V3D(H,K,L))) found2nc=true;
          }
        }
        V3D Qhkl=B*V3D(H,K,L);
        Hi[0][0]=0.;        Hi[0][1]=-Qhkl.X(); Hi[0][2]=-Qhkl.Y(); Hi[0][3]=-Qhkl.Z();
        Hi[1][0]=Qhkl.X();  Hi[1][1]=0.;        Hi[1][2]=Qhkl.Z();  Hi[1][3]=-Qhkl.Y();
        Hi[2][0]=Qhkl.Y();  Hi[2][1]=-Qhkl.Z(); Hi[2][2]=0.;        Hi[2][3]=Qhkl.X();
        Hi[3][0]=Qhkl.Z();  Hi[3][1]=Qhkl.Y();  Hi[3][2]=-Qhkl.X(); Hi[3][3]=0.;

        V3D Qgon=p.getQSampleFrame();
        Si[0][0]=0.;        Si[0][1]=-Qgon.X(); Si[0][2]=-Qgon.Y(); Si[0][3]=-Qgon.Z();
        Si[1][0]=Qgon.X();  Si[1][1]=0.;        Si[1][2]=-Qgon.Z(); Si[1][3]=Qgon.Y();
        Si[2][0]=Qgon.Y();  Si[2][1]=Qgon.Z();  Si[2][2]=0.;        Si[2][3]=-Qgon.X();
        Si[3][0]=Qgon.Z();  Si[3][1]=-Qgon.Y(); Si[3][2]=Qgon.X(); Si[3][3]=0.;

        HS+=(Hi*Si);
      }
    }
    //check if enough peaks are indexed or if HS is 0
    if ((nIndexedpeaks<2) || (found2nc==false)) throw std::invalid_argument("Less then two non-colinear peaks indexed");
    if (HS==zero) throw std::invalid_argument("Something really bad happened");

    Matrix<double> Eval;
    Matrix<double> Diag;
    HS.Diagonalise(Eval,Diag);
    Eval.sortEigen(Diag);
    Mantid::Kernel::Quat qR(Eval[0][0],Eval[1][0],Eval[2][0],Eval[3][0]);//the first column corresponds to the highest eigenvalue
    DblMatrix U(qR.getRotation());
    o.setU(U);

    ws->mutableSample().setOrientedLattice(new OrientedLattice(o));

  }
Пример #12
0
/*************************************************************************
	module		:[ミラーを輸送用の固定位置へ移動]
	function	:[
		1.	スキャナモーターをFBS側に切替える
		2.	ミラーを輸送用の固定位置に高速で移動する
		3.	モーターの起動を行う
		4.	モーターの停止等の制御は割込みで行う
		5.	割込みからの移動の終了/エラーをイベントで待つ
	]
	return		:[
		MIRROR_MOVE_OK			0	正常終了
		MIRROR_MOVE_ERROR		1	エラーで終了
	]
	common		:[]
	condition	:[]
	comment		:[]
	machine		:[SH7043]
	language	:[MS-C(Ver.6.0)]
	keyword		:[SCN]
	date		:[1996/12/10]
	author		:[竹内茂樹]
*************************************************************************/
UBYTE	MirrorMoveFromHS( UWORD step )
{
	/**	状態を初期化 */
	SCN_MirrorMoveStatus = MIRROR_MOVE_OK;
	SCN_WatchEndSensorStatus = WATCH_ES_DISABLE;
	SYS_IsMirrorScanReady = FALSE;

	/** スキャナモーターをFBS側に切替える (ミラーを動かすため) */
	SCN_SetMotorDrive( SCN_FBS );

	if (!HS()) {
		SCN_MirrorCarriageStatus = MIRROR_MOVE_TO_HS;	/* ミラーキャリッジを「HS上へ移動中」にする */
		SCN_MirrorMotorPulseCount = 0;		/* ミラー用のパルスカウンタを0クリア */
		SCN_IsMirrorMoveEnd = FALSE;
		SCN_SetHS_ON_Int( SCN_ENABLE );		/* ホームセンサON割り込み許可 */
		SCN_SetHS_OFF_Int( SCN_DISABLE );	/* ホームセンサOFF割り込み禁止 */
		SCN_SetMotorClockwise( SCN_ENABLE );	/* モーター正転 */

		/* 大分のFBS ASSY検査でHS側でミラーがぶつかるため低速に変更
		** T.Nose 1998/02/20
		*/
		SCN_StartMirror( FALSE );				/* 高速でミラー起動 */

		/**	ミラー移動の終了を待つ */
		CMN_DisableInterrupt();
		if (!SCN_IsMirrorMoveEnd) {
			wai_evt( EVT_MIRROR_MOVE_END );
		}
		CMN_EnableInterrupt();

		/** スキャナモータの回転方向を変えるために待つ */
		wai_tsk( SCN_MotorChangeInterval );
	}
	else {
		SCN_MirrorCarriageStatus = MIRROR_HS_ON;
	}

	/**	ホームセンサから待機位置へ移動する */
	if (SCN_MirrorMoveStatus == MIRROR_MOVE_OK) {
		/** ミラーキャリッジを「ホームセンサからN step移動中」にする */
		SCN_MirrorCarriageStatus = MIRROR_MOVE_TO_N_STEP;

		SCN_StepFromHS_Off = step;		/** ホームセンサOFFから停止位置のステップをセット */
		SCN_N_StepRemain = step;		/* 輸送モード停止位置がずれるため  1997/06/05 */

		SCN_MirrorMotorPulseCount = 0;			/* ミラー用のパルスカウンタを0クリア */
		SCN_IsMirrorMoveEnd = FALSE;
		SCN_SetHS_ON_Int( SCN_DISABLE );		/* ホームセンサON割り込み禁止 */
		SCN_SetHS_OFF_Int( SCN_ENABLE );		/* ホームセンサOFF割り込み許可 */

		SCN_SetMotorClockwise( SCN_DISABLE );	/* モーター逆転 */
		SCN_StartMirror( FALSE );				/* 一定速でミラー起動 */

		/**	ミラー移動の終了を待つ */
		CMN_DisableInterrupt();
		if (!SCN_IsMirrorMoveEnd) {
			wai_evt( EVT_MIRROR_MOVE_END );
		}
		CMN_EnableInterrupt();

		/** スキャナモータの回転方向を変えるために待つ */
		wai_tsk( SCN_MotorChangeInterval );
	}

	return (SCN_MirrorMoveStatus);
}
Пример #13
0
/*************************************************************************
	module		:[ミラー移動タスク]
	function	:[
		1.	ミラーキャリッジを指定された位置へ移動する
		2.	結果をMAN_Taskにsnd_msgする
		*.	エラーの場合のSubMessage1はエラーコード
	]
	return		:[]
	common		:[]
	condition	:[
		ミラーの動作はSCN_MirrorTaskControlで指定する
		待機位置へ/ADF読取り位置へ/FBS待機位置へ
		(scn_def.h参照)
	]
	comment		:[
		メインタスクから生成/削除する
		SubMessage1 (エラーの場合のみセット)
			MIRROR_MOVE_ERROR		1	エラーで終了
			MIRROR_MOVE_LAMP_ERROR	2	ランプ異常で終了
	]
	machine		:[SH7043]
	language	:[MS-C(Ver.6.0)]
	keyword		:[SCN]
	date		:[1996/06/25]
	author		:[竹内茂樹]
*************************************************************************/
void	SCN_MirrorMoveTask( void )
{
	MESSAGE_t			tx_message = {0};	/* 送信用メッセージ */
	MESSAGE_t			*rx_message;		/* 受信用メッセージのポインタ */
	UBYTE	result;				/* 関数の結果記憶用 */

	/** 指定された動作をする */
	switch (SCN_MirrorTaskControl) {
	case	MIRROR_TASK_INITIALIZE:		/* 電源On時の初期化 */
		SCN_DocumentStatus = SCN_DOC_NO_DOCUMENT;
		SCN_Init();
		result = MirrorMoveToReady( FALSE );	/* 加速なし(低速)で待機位置へ */
		break;
	case	MIRROR_TASK_TO_READY:		/* 読み取り後の初期化 */
	case	MIRROR_TASK_TO_FBS_READY:	/* FBS読取り待機位置への初期化 1997/08/11 T.Nose */
		SCN_DocumentStatus = SCN_DOC_NO_DOCUMENT;
		SCN_Init();
		LampOff();
		result = MirrorMoveToReady( TRUE );		/* 加速あり(高速)で待機位置へ */
		break;
	case	MIRROR_TASK_TO_ADF:			/* ADF読取り位置へ */
		result = MirrorMoveToADF();
		break;
	case	MIRROR_TASK_TO_FBS:			/* FBS待機位置(HS上)へ */
		/*
		**	D71サブASSY検査用(FBS)
		*/
		if (HS()) {
			SCN_MirrorCarriageStatus = MIRROR_HS_ON;
		}
		else {
			SCN_MirrorCarriageStatus = MIRROR_READY;
		}

		result = MirrorMoveToFBS();
		break;
	case	MIRROR_TASK_FCOT_READY:		/* FCOTコピー用待機位置(HS上)へ */
		result = MirrorMoveToFBS();
		break;
	case	MIRROR_TASK_TRANSPORT:		/* 輸送用の固定位置へ */
		result = MirrorMoveFromHS(1956);	/* HS 〜 127mm */
		break;
	case	MIRROR_TASK_CCD_ADJUST:		/* CCD調整位置へ */
		/*
		**	D71サブASSY検査用(FBS)
		*/
		SCN_DocumentStatus = SCN_DOC_NO_DOCUMENT;
		SCN_Init();
#if (PRO_ENERGY_SAVE == ENABLE)		/* 2001/11/30 T.Takagi */
		PC_24V_On();
#endif
		LampOn();
		result = MirrorMoveToADF();
/*		result = MirrorMoveFromHS(3457);	@* HS 〜 217 + 7.5mm 1998/02/20 大藪さん */
		result = MirrorMoveFromHS(3520);
		LampOff();
		wai_tsk( 0xFFFF );					/* 動作終了 */
		break;
	case	MIRROR_TASK_FBS_END_TO_ADF:	/* FBS読取り終了位置からADF読み取り位置へ */
		LampOff();
		result = MirrorMoveFBSEndToADF();
		break;
	case	MIRROR_TASK_TO_ADF_READY:	/* ADF読取り待機位置への初期化 */
		SCN_DocumentStatus = SCN_DOC_DS1_ON;
		SCN_Init();
		result = MirrorMoveToADF();
		break;
	}

	/* 動作結果をメインタスクに通知して、削除待ち
	** エラーの場合はSubMassage1に結果を入れる
	*/
	tx_message.Item = FROM_SCN_MIRROR_MOVE_TASK;
	if (result == MIRROR_MOVE_OK) {
		tx_message.Message = MSG_MIRROR_MOVE_OK;
	}
	else {
		tx_message.Message = MSG_MIRROR_MOVE_ERROR;
		tx_message.SubMessage1 = result;
	}
	snd_msg( mbxno.MAN_Task, &tx_message );
	rcv_msg( mbxno.SCN_MirrorMoveTask, &rx_message );
	wai_tsk( 0xFFFF );
}
Пример #14
0
/* Alphabetical comparison. */
static int
hscmp(const void *a1, const void *a2)
{
	return (rflg *
	    strcmp(HS(a1)->hs_wd.wd_hostname, HS(a2)->hs_wd.wd_hostname));
}
Пример #15
0
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
***********************************************************************/

#include <cstring>
#include "VOCRipper.h"

const char *VOCRipper::s_name = "Creative VOC Ripper v1.0";

const HeaderStruct VOCRipper::s_headers[] = {
	HS("Creative Voice File\x1a", 20)
	HS_END
};

#pragma pack(push, 1)

struct VOCHeader
{
	char ID[20]; // the ID
	unsigned short dataOffset;
	unsigned short ver;
	unsigned short ver2;
};

#pragma pack(pop)
Пример #16
0
#define LPC_USBx LPC_USB0
#define ENDPTCTRL(EPNum) *(volatile uint32_t *)((uint32_t)(&LPC_USBx->ENDPTCTRL0) + 4 * EPNum)
#define EP_OUT_IDX(EPNum) (EPNum * 2    )
#define EP_IN_IDX(EPNum) (EPNum * 2 + 1)
#define HS(en) (USBD_HS_ENABLE * en)

/* reserve RAM for endpoint buffers */
#if USBD_VENDOR_ENABLE
/* custom class: user defined buffer size */
#define EP_BUF_POOL_SIZE 0x1000
uint8_t __align(4096) EPBufPool[EP_BUF_POOL_SIZE]
#else
/* supported classes are used */
uint8_t __align(4096) EPBufPool[
    USBD_MAX_PACKET0                                                                                                     * 2 +
    USBD_HID_ENABLE     *  (HS(USBD_HID_HS_ENABLE)      ? USBD_HID_HS_WMAXPACKETSIZE     : USBD_HID_WMAXPACKETSIZE)      * 2 +
    USBD_MSC_ENABLE     *  (HS(USBD_MSC_HS_ENABLE)      ? USBD_MSC_HS_WMAXPACKETSIZE     : USBD_MSC_WMAXPACKETSIZE)      * 2 +
    USBD_ADC_ENABLE     *  (HS(USBD_ADC_HS_ENABLE)      ? USBD_ADC_HS_WMAXPACKETSIZE     : USBD_ADC_WMAXPACKETSIZE)          +
    USBD_CDC_ACM_ENABLE * ((HS(USBD_CDC_ACM_HS_ENABLE) ? USBD_CDC_ACM_HS_WMAXPACKETSIZE  : USBD_CDC_ACM_WMAXPACKETSIZE)      +
                           (HS(USBD_CDC_ACM_HS_ENABLE) ? USBD_CDC_ACM_HS_WMAXPACKETSIZE1 : USBD_CDC_ACM_WMAXPACKETSIZE1) * 2)];
#endif

void USBD_PrimeEp(uint32_t EPNum, uint32_t cnt);

/*
 *  Usb interrupt enable/disable
 *    Parameters:      ena: enable/disable
 *                       0: disable interrupt
 *                       1: enable interrupt
 */
Пример #17
0
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
***********************************************************************/

#include "GlobalDefs.h"
#include "PNGRipper.h"

#include <cctype>
#include <cstring>

const char *PNGRipper::s_name = "PNG Ripper v1.0";

const HeaderStruct PNGRipper::s_headers[] = {
	HS("\x89PNG\x0d\x0a\x1a\x0a", 8)
	HS_END
};

#pragma pack(push, 1)
struct ChunkHeader
{
	uint32 size;
	unsigned char id[4];
	uint32 crc;
};
#pragma pack(pop)

static bool validChunkName(unsigned char *n)
{
	return isalpha(n[0]) && isalpha(n[1]) && isalpha(n[2]) && isalpha(n[3]);
Пример #18
0
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
***********************************************************************/

#include <cstring>

#include "BMPRipper.h"

const char *BMPRipper::s_name = "BMP Ripper v1.0";

const HeaderStruct BMPRipper::s_headers[] = {
    HS("BM", 2)
    HS_END
};

bool BMPRipper::checkLocation(unsigned char *pos, const HeaderStruct * /*header*/, FoundStruct *found)
{
    BMPHeader *hdr = (BMPHeader *)pos;

    // the bfType has already been checked so we need only check the other fields

    found->criterium = CRIT_NONE;

    // check if the file goes beyond the end of our file
    if (pos + hdr->bfSize > m_start + m_length)
        return false;
Пример #19
0
static PetscErrorCode KSPAGMRESBuildSoln(KSP ksp,PetscInt it)
{
  KSP_AGMRES     *agmres = (KSP_AGMRES*)ksp->data;
  PetscErrorCode ierr;
  PetscInt       max_k = agmres->max_k;       /* Size of the non-augmented Krylov basis */
  PetscInt       i, j;
  PetscInt       r = agmres->r;           /* current number of augmented eigenvectors */
  PetscBLASInt   KspSize;
  PetscBLASInt   lC;
  PetscBLASInt   N;
  PetscBLASInt   ldH = N + 1;
  PetscBLASInt   lwork;
  PetscBLASInt   info, nrhs = 1;

  PetscFunctionBegin;
  ierr = PetscBLASIntCast(KSPSIZE,&KspSize);CHKERRQ(ierr);
  ierr = PetscBLASIntCast(4 * (KspSize+1),&lwork);CHKERRQ(ierr);
  ierr = PetscBLASIntCast(KspSize+1,&lC);CHKERRQ(ierr);
  ierr = PetscBLASIntCast(MAXKSPSIZE + 1,&N);CHKERRQ(ierr);
  ierr = PetscBLASIntCast(N + 1,&ldH);CHKERRQ(ierr);
  /* Save a copy of the Hessenberg matrix */
  for (j = 0; j < N-1; j++) {
    for (i = 0; i < N; i++) {
      *HS(i,j) = *H(i,j);
    }
  }
  /* QR factorize the Hessenberg matrix */
#if defined(PETSC_MISSING_LAPACK_GEQRF)
  SETERRQ(PetscObjectComm((PetscObject)ksp),PETSC_ERR_SUP,"GEQRF - Lapack routine is unavailable.");
#else
  PetscStackCallBLAS("LAPACKgeqrf",LAPACKgeqrf_(&lC, &KspSize, agmres->hh_origin, &ldH, agmres->tau, agmres->work, &lwork, &info));
  if (info) SETERRQ1(PetscObjectComm((PetscObject)ksp), PETSC_ERR_LIB,"Error in LAPACK routine XGEQRF INFO=%d", info);
#endif
  /* Update the right hand side of the least square problem */
  ierr = PetscMemzero(agmres->nrs, N*sizeof(PetscScalar));CHKERRQ(ierr);

  agmres->nrs[0] = ksp->rnorm;
#if defined(PETSC_MISSING_LAPACK_ORMQR)
  SETERRQ(PetscObjectComm((PetscObject)ksp),PETSC_ERR_SUP,"GEQRF - Lapack routine is unavailable.");
#else
  PetscStackCallBLAS("LAPACKormqr",LAPACKormqr_("L", "T", &lC, &nrhs, &KspSize, agmres->hh_origin, &ldH, agmres->tau, agmres->nrs, &N, agmres->work, &lwork, &info));
  if (info) SETERRQ1(PetscObjectComm((PetscObject)ksp), PETSC_ERR_LIB,"Error in LAPACK routine XORMQR INFO=%d",info);
#endif
  ksp->rnorm = PetscAbsScalar(agmres->nrs[KspSize]);
  /* solve the least-square problem */
#if defined(PETSC_MISSING_LAPACK_TRTRS)
  SETERRQ(PetscObjectComm((PetscObject)ksp),PETSC_ERR_SUP,"TRTRS - Lapack routine is unavailable.");
#else
  PetscStackCallBLAS("LAPACKtrtrs",LAPACKtrtrs_("U", "N", "N", &KspSize, &nrhs, agmres->hh_origin, &ldH, agmres->nrs, &N, &info));
  if (info) SETERRQ1(PetscObjectComm((PetscObject)ksp), PETSC_ERR_LIB,"Error in LAPACK routine XTRTRS INFO=%d",info);
#endif
  /* Accumulate the correction to the solution of the preconditioned problem in VEC_TMP */
  ierr = VecZeroEntries(VEC_TMP);CHKERRQ(ierr);
  ierr = VecMAXPY(VEC_TMP, max_k, agmres->nrs, &VEC_V(0));CHKERRQ(ierr);
  if (!agmres->DeflPrecond) { ierr = VecMAXPY(VEC_TMP, r, &agmres->nrs[max_k], agmres->U);CHKERRQ(ierr); }

  if ((ksp->pc_side == PC_RIGHT) && agmres->r && agmres->DeflPrecond) {
    ierr = KSPDGMRESApplyDeflation_DGMRES(ksp, VEC_TMP, VEC_TMP_MATOP);CHKERRQ(ierr);
    ierr = VecCopy(VEC_TMP_MATOP, VEC_TMP);CHKERRQ(ierr);
  }
  ierr = KSPUnwindPreconditioner(ksp, VEC_TMP, VEC_TMP_MATOP);CHKERRQ(ierr);
  /* add the solution to the previous one */
  ierr = VecAXPY(ksp->vec_sol, 1.0, VEC_TMP);CHKERRQ(ierr);
  PetscFunctionReturn(0);
}
Пример #20
0
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
***********************************************************************/

#include <cstring>

#include "GlobalDefs.h"
#include "ICORipper.h"

const char *ICORipper::s_name = "Windows ICO Ripper v1.0";

const HeaderStruct ICORipper::s_headers[] = {
	HS("\0\0\1\0", 4)
	HS_END
};

#pragma pack(push, 1)
struct GlobalHeader
{
	uint32 id; // \0\0\1\0
	uint16 count; // number of icons in this file
};

struct EntryHeader
{
	uint8 width;
	uint8 height;
	uint8 colors;