/*******************************************************************
*
*       _DemoButton
*/
static void _DemoButton(void) {
  BUTTON_Handle hButton;
  int Stat = 0;
  GUI_SetFont(&GUI_Font8x16);
  GUI_DispStringHCenterAt("Click on phone button...", 160,80);
  GUI_Delay(500);
  /* Create the button */
  hButton = BUTTON_Create(142, 100, 36, 40, GUI_ID_OK, WM_CF_SHOW);
  /* Modify the button attributes */
  BUTTON_SetBkColor (hButton, 1, GUI_RED);
  /* Loop until button is pressed */
  while (1) {
    BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_1, 2, 4);
    BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_1, 2, 4);
    if (!_Wait(50)) break;
    BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_0, 2, 4);
    BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_0, 2, 4);
    if (!_Wait(45)) break;
    BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_2, 2, 4);
    BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_2, 2, 4);
    if (!_Wait(50)) break;
    BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_0, 2, 4);
    BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_0, 2, 4);
    if (!_Wait(45)) break;
  }
  BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_1, 2, 4);
  BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_1, 2, 4);
  GUI_ClearRect(0, 80, 319, 120);
  GUI_DispStringHCenterAt("You have answered the telephone", 160, 145);
  GUI_Delay(2000);
  /* Delete button object */
  BUTTON_Delete(hButton);
  GUI_ClearRect(0, 50, 319, 239);
  GUI_Delay(400);
}
Esempio n. 2
0
void strsm_llnu_lu( unsigned int SPE_id, LS_ShaderInfo *info, Operation_t *myop, Functions_t *funcs )
{
	_DBGP_UINT( 1 );

	// Make room for python meta data
	PyArrayObject *A     = (PyArrayObject *)info->LS_shaderMemory;
	PyArrayObject *B     = (PyArrayObject *)info->LS_shaderMemory+sizeof( PyArrayObject );
	PyArrayObject *alpha = (PyArrayObject *)info->LS_shaderMemory+sizeof( PyArrayObject )*2;
	PyArrayObject *cb    = (PyArrayObject *)info->LS_shaderMemory+sizeof( PyArrayObject )*3;

	// Get meta data
	_GetPyArrayMetaData( myop->obj[0], A, 0 );
	_GetPyArrayMetaData( myop->obj[1], B, 0 );
	_GetPyArrayMetaData( myop->scalar[0], alpha, 0 );
	_GetPyArrayMetaData( myop->scalar[1], cb, 0 );
	_Wait(0); // WAIT!!!

	_DBGP_UINT( 2 );

	// Make room for data block arrays
	char **blocks_A     = (char**)( ( (unsigned int)( cb + sizeof( PyArrayObject )) + 127 ) &~ 127 );
	char **blocks_B     = (char**)( blocks_A     + _Pad16bytes( A->numberOfBlocks ) );
	char **blocks_alpha = (char**)( blocks_B     + _Pad16bytes( B->numberOfBlocks ) );
	char **blocks_cb    = (char**)( blocks_alpha + _Pad16bytes( alpha->numberOfBlocks ) );

	// Local vars
	unsigned int idx = 0, nextidx;
	unsigned int i, j, k, l, row, col;

//	unsigned int c = 0;
//
//	unsigned int Afourth  = A->blockSize / 4;
//	unsigned int xfourth  = x->blockSize / 4;
//	unsigned int AAfourth = A->blockSize*A->blockSize / 4;
//	unsigned int t = 0;

	// Uploadet scalars
	float alpha_f, beta_f;
	unsigned int CB;
	_GetScalar( alpha, blocks_alpha, &alpha_f, 1 );
	_GetScalar( cb, blocks_cb, &CB, 1 );

	_DBGP_UINT( 3 );

	vector float alphav = spu_splats(alpha_f);

	// Fetch pointers to first __ datablocks for vectors
	_GetBlockPointers( B, blocks_B, B->numberOfBlocks, _BTAG );
	_GetBlockPointers( A, blocks_A, A->numberOfBlocks, _BTAG );
	_Wait(_BTAG);

	vector float *BKJ, *BIJ, aik;
	float *AIK;

	unsigned int x;

	int ain, ain2;

	_DBGP_UINT( 4000 );
	_DBGP_UINT( CB );

	// Same A, get it once
	_GetBlock( blocks_A, info->LS_blockDataArea[1], CB*A->numberOfBlocksXDim+CB, A->blockSize*A->blockSize, idx );


	_Wait(idx);
	_DBGP_UINT( CB*B->numberOfBlocksXDim+1+CB+SPE_id );

	// Get first block of B
	_GetBlock( blocks_B, info->LS_blockDataArea[0], CB*B->numberOfBlocksXDim+1+CB+SPE_id, B->blockSize*B->blockSize, idx );

	_Wait(idx);
	_DBGP_UINT( 5000 );

	//funcs->printuint(CB + SPE_id + 1);
	//funcs->printuint(B->numberOfBlocksXDim-myop->num_SPES);

	// For each block column
	// BLOCK >
	for( col = CB + SPE_id + 1 ; col < B->numberOfBlocksXDim-myop->num_SPES ; col += myop->num_SPES )
	{
		_DBGP_UINT( 100000 + col );

		nextidx = idx ^ 1;

		//funcs->printuint(CB*A->numberOfBlocksXDim+col+myop->num_SPES);
		_GetBlock( blocks_B, info->LS_blockDataArea[nextidx*3], CB*B->numberOfBlocksXDim+col+myop->num_SPES, B->blockSize*B->blockSize, nextidx );

		_Wait( idx );

		for( l = 1 ; l < B->blockSize ; l++ )
		{
			_DBGP_UINT( 200000 + l );

			BKJ = (vector float*)( info->LS_blockDataArea[idx*3] + (l-1) % B->blockSize * B->blockSize * 4 );

			// BIJ[i] = BIJ[i] - BKJ[i] * aik;
			_compute( B->blockSize, l, l-1, BKJ, (float*)info->LS_blockDataArea[idx*3], (float*)info->LS_blockDataArea[1] );
			//_compute2( B->blockSize, l, l-1, BKJ, (float*)info->LS_blockDataArea[idx*3], (float*)info->LS_blockDataArea[1], funcs );
		}


		// Return the result to the PPE
		_PutAsync( (unsigned int)blocks_B[CB*A->numberOfBlocksXDim+col], B->blockSize * B->blockSize * 4, info->LS_blockDataArea[idx*3], idx );

		idx = nextidx;
	}

	_DBGP_UINT( 100000 + col );

	_Wait( idx );

	for( l = 1 ; l < B->blockSize ; l++ )
	{
		BKJ = (vector float*)( info->LS_blockDataArea[idx*3] + (l-1) % B->blockSize * B->blockSize * 4 );
		//_compute2( B->blockSize, l, l-1, BKJ, (float*)info->LS_blockDataArea[idx*3], (float*)info->LS_blockDataArea[1], funcs );
		_compute( B->blockSize, l, l-1, BKJ, (float*)info->LS_blockDataArea[idx*3], (float*)info->LS_blockDataArea[1] );
	}

	//funcs->printuint( 678 );
	//_PrintMatrix( B, info->LS_blockDataArea[idx*3], funcs );


	// Return the result to the PPE
	_PutAsync( (unsigned int)blocks_B[CB*A->numberOfBlocksXDim+col], B->blockSize * B->blockSize * 4, info->LS_blockDataArea[idx*3], idx );

}